var SM = function(){
  var map;
  var $this = this;
  var p = {};

  var control = {}

  var placemarkClick = function(a,b,c){
    var o = a._o;
    var text = '<div><b>' + o.name + '</b><br />';
    text += '<p>' + o.text + '</p></div>';
    a.setBalloonContent(text);
  }

  var ShowMarker = function(a) {
    for(var o in a) {
      if (p[a[o].id]) continue;
      var placemark = new YMaps.Placemark(new YMaps.GeoPoint(a[o].lng, a[o].lat));
      placemark.setIconContent(a[o].name);
      placemark._o = a[o];
      YMaps.Events.observe(placemark,placemark.Events.Click, placemarkClick);
      p[a[o].id] = placemark;
      map.addOverlay(placemark);
    }
  }

  return {
    load: function(id, array, lat, lng, zoom, params){
      if (!window.YMaps) return;
      if (!params) params = {};
      map = new YMaps.Map(document.getElementById(id));
      map.setCenter(new YMaps.GeoPoint(lng, lat), zoom);

      if (params.tc) {control.tc = new YMaps.TypeControl();map.addControl(control.tc);}
      if (params.tb) {control.tb = new YMaps.ToolBar();map.addControl(control.tb);}
      if (params.z)  {control.z = new YMaps.Zoom();map.addControl(control.z);}
      if (params.mm) {control.mm = new YMaps.MiniMap();map.addControl(control.mm);}
      if (params.sz) map.enableScrollZoom()

      map.addCopyright("ООО ИИЦ \"Бон Анца\"");

      ShowMarker(array);

    },

    unload: function(){
      if (!map) return;
      map.destructor();
    },
    getMap: function(){
      return map;
    }
    ,
    getControl: function(){
      return control;
    }
  }
}();
