var icon = [];
var customIcons = [];
var CatMarkers=[];
var errorBoxLoad=false;
var allmarkers=[];
var markerClusterer=[];
var mc=null;
var styles=[];
var oLatLng;
var url=window.location.protocol+'//'+window.location.host+'/';
var path2img=url+'i/';
var path2ajax=url+'ajax/';

 function CreateIcon(type, iurl){
         var icon = new GIcon();
     icon.image = path2img+iurl;
     icon.iconSize = new GSize(21, 19);
     icon.iconAnchor = new GPoint(6, 20);
     icon.infoWindowAnchor = new GPoint(5, 1);
     customIcons[type] = icon;
     styles[type]=[{
        url: path2img+iurl,
        height: 19,
        width: 21,
        opt_anchor: [2, 24],
        opt_textColor: '#FF0000'
      },
      {
        url: path2img+iurl,
        height: 19,
        width: 21,
        opt_anchor: [2, 24],
        opt_textColor: '#FF0000'
      },
      {
        url: path2img+iurl,
        height: 19,
        width: 21,
        opt_anchor: [2, 24]
      }];
 }

 function tplshow(dataMarker) {
         var logo='';
         if (dataMarker.logo==1){logo="<img src=\"http://www.tamboff.ru/uploads/content/"+dataMarker.logofile+"\" alt=\""+dataMarker.name+"\">";}
         var tmphtml="<table><tr><td valign=\"top\">"+logo+"</td><td><span class='company_title'><a href='http://www.tamboff.ru/organization/view/id/"+dataMarker.id+"' target='_blank'>" + dataMarker.name + "</a></span><br><span class='rubrics'>" + dataMarker.cats + "</span><br><span class='company_adr'>" + dataMarker.address+"</span><br></td></tr><tr><td colspan=\"2\" align=\"left\" style=\"padding-left:7px;\"><a class='b_comp' href='http://www.tamboff.ru/organization/view/id/"+dataMarker.id+"' target='_blank'>Полные сведения</a>&nbsp;&nbsp;&nbsp;<a class='b_error' href='javascript:void(0);' onclick='showErrBox("+dataMarker.id+"); return false;'>Сообщить об ошибке</a></td></tr></table>";
         return tmphtml;
 }



 function createMarker(dataMarker) {
   var newmarker = new GMarker(dataMarker.point, {icon: customIcons[dataMarker.type], title:dataMarker.name});
   var html = tplshow(dataMarker); //mouseover
   GEvent.addListener(newmarker, 'click', function() {
     newmarker.openInfoWindowHtml(html);
   });
   return newmarker;
 }




function GroupShowHide(id){
        $("#catalog_group_"+id+"_items").toggle(0, function() {
    $("#catalog_group_"+id).toggleClass("catalog_group_show catalog_group_hide");
  });
}


function showObjects(id) {
    if($("#type_"+id).attr("checked")) {
        if (!CatMarkers[id]) {
           CatMarkers[id] = [];
           GDownloadUrl(path2ajax+"get.php?a=2&id="+id, function(data) {
               map.clearOverlays();
               var xml = GXml.parse(data);
               var settings = xml.documentElement.getElementsByTagName("setting");
               for (var i = 0; i < settings.length; i++) {
                 CreateIcon(settings[i].getAttribute("name"), settings[i].getAttribute("url"));
               }

               var catTag = xml.documentElement.getElementsByTagName("category");
               var cat=catTag[0].getAttribute("root")+' - '+catTag[0].getAttribute("cat");

               var markerTag = xml.documentElement.getElementsByTagName("marker");
               for (var i = 0; i < markerTag.length; i++) {
                 var name = markerTag[i].getAttribute("name");
                 var address = markerTag[i].getAttribute("address");
                 var type = markerTag[i].getAttribute("type");
                 var orgId = markerTag[i].getAttribute("id");
                 var point = new GLatLng(parseFloat(markerTag[i].getAttribute("lat")),
                                         parseFloat(markerTag[i].getAttribute("lng")));
                 var marker = createMarker({id: orgId, point: point, name: name, address: address, type: type, cats: cat, logo: 0});
                 CatMarkers[id].push({id: orgId, marker: marker, point: point, name: name, address: address, type: type, cats: cat, logo: 0});
               }
               ShowMarkers(id);
            });
        }
        else {
           ShowMarkers(id);
        }
    }
    else {
       HideMarkers(id);
    }
}

function goMarker(catId, compId) {
    var cur=-1;
    for (var i=0; i<CatMarkers[catId].length; i++) {
       if (CatMarkers[catId][i].id==compId){cur=i;break;}
    }
    if (cur>0){
      map.setCenter(CatMarkers[catId][cur].point);
      CatMarkers[catId][cur].marker.openInfoWindowHtml(tplshow(CatMarkers[catId][cur]));
    }
    else {}
}


function ShowList(id) {
        var divhtml="<span class='asitems' onclick='HideList("+id+");'>скрыть список предприятий</span>";
        for (var i=0; i<CatMarkers[id].length; i++) {
          divhtml+="<div id='tr_"+CatMarkers[id][i].id+"' class='compitem'><a href='javascript:goMarker("+id+", "+CatMarkers[id][i].id+")'>"+CatMarkers[id][i].name+"</a><br>"+CatMarkers[id][i].address+"</div>";
        }
        divhtml+="<span class='asitems' onclick='HideList("+id+");'>скрыть список предприятий</span>";
        $("#items_"+id).html(divhtml);
}

function HideList(id) {
        $("#items_"+id).html("<span class='asitems' onclick='ShowList("+id+");'>показать список предприятий</span>");
}


function ShowMarkers(id) {
        allmarkers=[];
        for (var i=0; i<CatMarkers[id].length; i++) {
            allmarkers.push(CatMarkers[id][i].marker);
        }
        markerClusterer[id]=new MarkerClusterer(map, allmarkers, {maxZoom: 15, gridSize: 40, styles: styles[id]});
        $("#items_"+id).html("<span class='asitems' onclick='ShowList("+id+");'>показать список предприятий</span>");
        $("#items_"+id).show();
}

function HideMarkers(id) {
        if (markerClusterer[id] != null) {
            markerClusterer[id].clearMarkers();
        }
        $("#items_"+id).hide();
}

function getLink(mode) {
   var LatLng=map.getCenter();
   var lat='';lat=LatLng.lat()+'';lat=lat.substring(0,8);
   var lng='';lng=LatLng.lng()+'';lng=lng.substring(0,8);
   $("#getlinkinput").val(url+"index.php?c="+lat+","+lng+"&z="+map.getZoom());
   if (mode==1){$("#getlink").show(); $("#getlinkinput").select(); }
   if (mode==0)$("#getlink").hide();

}


function showErrBox(id){
   if (!errorBoxLoad) {
      $("#errorBox").load(path2ajax+"fb.php?a=1", function(response, status, xhr) {
          if (status == "error") {
             var msg = "Sorry but there was an error: ";
             $("#msgerror").html(msg + xhr.status + " " + xhr.statusText);
          }
          else {$("#itemId").val(id);}
          $('#errorBox').modal({autoResize:true});
      });
   }
   else {$("#itemId").val(id);$('#errorBox').modal({autoResize:true});}
   return false;
}


function sendErrorMsg(form){
    var msg='';
    var sendEn=true;
    if (form.contactEmail.value=='') {msg+="Не заполнено поле E-mail.\n";sendEn=false;}
    else if (!validateEmail(form.contactEmail.value)) {msg+="Не верно введён E-mail.\n";sendEn=false;}
    //if (form.contactPersone.value=='') {msg+='<li>Не заполнено поле.</li>';sendEn=false;}
    if (form.reason.value=='') {msg+="Не заполнено поле Тип ошибки.\n";sendEn=false;}
    if (form.textValue.value=='') {msg+="Не заполнено поле Описание ошибки.\n";sendEn=false;}


    if (sendEn){
      $.ajax({
         url: path2ajax+'fb.php',
         data: {a:'2',id:form.itemId.value, email:form.contactEmail.value, persone:form.contactPersone.value, reason:form.reason.value, text:form.textValue.value},
         type: 'POST',
         dataType: 'text',
         success: function (result){
             var json=jQuery.parseJSON(result);
             if (json[0]==0) {             	$.modal.close();
                alert('Ваше сообщение об ошибке успешно отправлено.');
             }
             else {alert(json[1]);}
         }
      });
    }
    else {
      alert(msg);
    }
    return false;
}

function validateEmail(email) {
    var at = email.lastIndexOf("@");
    if (at < 1 || (at + 1) === email.length)
            return false;
    if (/(\.{2,})/.test(email))
            return false;
    var local = email.substring(0, at);
    var domain = email.substring(at + 1);
    if (local.length < 1 || local.length > 64 || domain.length < 4 || domain.length > 255)
            return false;
    if (/(^\.|\.$)/.test(local) || /(^\.|\.$)/.test(domain))
            return false;
    if (!/^"(.+)"$/.test(local)) {
            if (!/^[-a-zA-Z0-9!#$%*\/?|^{}`~&'+=_\.]*$/.test(local))
                    return false;
    }
    if (!/^[-a-zA-Z0-9\.]*$/.test(domain) || domain.indexOf(".") === -1)
            return false;
    return true;
}

function alertObj(obj) {
    var str = "";
    for(k in obj) {
        str += k+": "+ obj[k]+"\r\n";
    }
    return str;
    //alert(str);
}

function alertArray(arr){
    var i;
    var str = "";
    for (i=0;i<arr.length;i++)
      if (typeof arr[i]=="object") {str +=i+": (" +alertObj(arr[i])+") ; ";}
       else { str +=i+": " +arr[i]+" ; ";}
    return (str);
  }
