var Map = {
  iPath: "/images/mapa/",
  init: function() {
    if(SZN.isSupported) {
      this.oid = Func.getParam("oid");
      var mapa = new SZN.MapEngine(SZN.gEl('mapa'));
      this.mapa = mapa;
      mapa.zoomSet(12);
      mapa.mouseSet(5);
      var zoomControl = new SZN.Visual.ZoomControl();
      mapa.addControls(zoomControl,10,10);
      mapa.apiHandler.addApiListener(this,'mapInited',this.initIcons());
    }
  },
  initIcons: function() {
    for (var i = 0; i < places.length; i++) {
      var item = places[i];
      if (item == null) continue;
      var cPoz, dPoz;
      var k = 1;
      var source = {source:'',data: []};
      for (var j = 0; j < item.length; j++) {
        var p = item[j];
        var o = p.obsah[0];
        var mPoz = this.mapa.wgsToPP(p.poz);
        var mId = i + "_" + j;
        if (i > 0) {
          var mIco = this.iPath + typy[i]['icon'];
          var m = new SZN.Visual.BaseMapIcon(mPoz.x,mPoz.y,15,15,0,0,mIco,null,o.title,mId);
          m.setZoom(11,20);
          source.data.push(m);
        } else {
          // var m = this.mapa.makeMark('location',o.title,k,mId);
          if (k == 1)
            dPoz = mPoz;
          else
            m.setZoom(11,20);
          // this.mapa.addMark(mPoz.x,mPoz.y,m);
          k++;
        }
        if (this.oid && this.oid == p.oid) {
          this.markClick(null,null,m);
          cPoz = mPoz;
        }
        if (m != null)
          m.setAction(this,this.markClick);
      }
      myLayer = new SZN.MapEngine.MapLayers.PoiLayer(("l_" + i),false,1,source,null);
      var l = this.mapa.addLayer(myLayer);
    }
    myC = cPoz == null ? dPoz :cPoz;
    this.mapa.setCenter(myC.x,myC.y);
    Func.setEventToElms(["layers","switches"],this);
  },
  markClick: function(e,elm,mark) {
    var id = mark.getId().split('_');
    var cardData = places[id[0]][id[1]];
    // var crd = new SZN.Visual.BaseCard(mark.pos.x,mark.pos.y,cardData,null,null,null);
    var crd = new MyCard(mark.pos.x,mark.pos.y,cardData,null,null,null);
    this.mapa.addCard(crd);
  }
}

var Buttons = {
  layers: function(e,elm) {
    elm.blur();
    elm.checked ? this.mapa.enableLayer(elm.id) : this.mapa.disableLayer(elm.id);
  },
  switches: function(e,elm) {
    elm.blur();
    var s = SZN.Dom;
    var c = "active";
    var layers = ["base","ophoto"];
    for (var i = 0; i < layers.length; i++) {
      var l = SZN.gEl(layers[i]);
      s.hasClass(l,c) ? s.removeClass(l,c) : s.addClass(l,c);
    }
    this.mapa.switchLayer(elm.id,layers);
  }
}

var Func = {
  getParam: function(p) {
    var name = p.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    return results != null ? results[1] : null;
  },
  setEventToElms: function(e,o) {
    var elm, elms;
    for (var i = 0; i < e.length; i++) {
      elm = e[i];
      elms = SZN.Dom.getElementsByClass(elm);
      for (var j = 0; j < elms.length; j++) {
        SZN.Events.addListener(elms[j], 'click', o, Buttons[elm]);
      }
    }
  }
}

var MyCard = SZN.ClassMaker.makeClass({
  NAME : 'MyCard',
  EXTEND : SZN.Visual.BaseCard,
  VERSION : '2.0',
  CLASS : 'class'
})

MyCard.prototype.BASE_CSS = "font-size: 0.8em;";

MyCard.prototype.$constructor = function(x,y,content,extension,width,height,poiId){
  this.BaseCard(x,y,content,extension,width,height,poiId);
}

this.Map = SZN.bind(this.Map,this.Map.init);
SZN.Events.onDomReady(window,this.Map);
