 var map;
 var markers=new Array();
 var description=new Array();
 var encodedPolyline=new Array();
 var ldesc = new Array();
 var line;
 var txt;
function markerlist(txt){
        document.getElementById('markerlist').options[index]= new Option(txt)
        document.getElementById('markerlist').selectedIndex=index;
        index++;
 }
function highlight(id){
   markers[id].openInfoWindowHtml(description[id]);
 }
 function getlen(line, id) {
    var ln;
    var len = line.getLength();
    ln = (Math.round(len / 10) / 100) + "km";
    doc = document.getElementById(id);
    doc.value=ln;
  }
function check_data(){
   var out="";
   var obj=0;
   if (document.getElementById("labelname").value.length < 1) {
     out+="Вы забыли ввести название заметки !";
        }
    for (lndelta=0;lndelta<ln.length;lndelta++){
       var pl=ln[lndelta];
       if (!pl.isHidden()) {
            obj++;
       }
   }
    for (mrdelta=0;mrdelta<mr.length;mrdelta++) {
      if (!mr[mrdelta].isHidden()){
            obj++;
            }
     }
   if (obj < 1 ) {
   out+="\r\n Вы забыли нарисовать что-нибудь !";
   }
   
   if (document.getElementById('wpchck').checked && document.getElementById('wpname').value.length<1) {
        out+="\r\n Вы забыли указать название поста в блоге !";
   }
   
 return out;
}

function postdata(){ ////  сохраняем нарисованное
   var linearr="";
   var markerarr="";
   var delim="";
   var errors=check_data();
   if (errors) {
    alert(errors);
    return;
   }
   //// включаем часики
  document.getElementById("clock").style.display='block';
    /// собираем инф. про объекты
    
       for (lndelta=0;lndelta<ln.length;lndelta++) { // линии
       var pl=ln[lndelta];
     if (!pl.isHidden()) {
       var k=pl.getVertexCount();
       var txt; //="="+pl.id+"="+"<br>";
       var points=new Array();
       var levels="";
        for (i=0;i<k;i++) {
           points[i]= { Latitude : pl.getVertex(i).lat(), Longitude : pl.getVertex(i).lng()};
           levels+="B";
     }
        coords=encodePolyline(points);
        levels=levels;
        color=pl.color;
        width=pl.weight;
        //text=encodeURIComponent(linetext[lndelta]);
        text=escape(linetext[lndelta]);
      linearr+=delim+coords+"line"+levels+"line"+color+"line"+width+"line"+text;
      delim='route';
       }
     }
    var delim="";
    for (mrdelta=0;mrdelta<mr.length;mrdelta++) {  /// маркеры
      if (!mr[mrdelta].isHidden()){
         mrpoint=mr[mrdelta].getPoint();
         mrtxt=escape(markertxt[mrdelta]);
         mrtype=markertype[mrdelta];
         markerarr+=delim+mrpoint+"marks"+mrtxt+"marks"+mrtype;
         delim='marker';
         }
     }
      /// общее инфо
      var label=escape(document.getElementById("labelname").value);
      var url="http://map.ck.ua/server.php";
      var mcenter=map.getBounds();
          mcenter=mcenter.getCenter();
      var mzoom=map.getZoom();
      var wptext=escape(document.getElementById("wptext").value);
      var wpname=escape(document.getElementById("wpname").value);
     var postdata="labelname="+label+"&lines="+linearr+"&markers="+markerarr+"&mcenter="+mcenter+"&mzoom="+mzoom+"&wptext="+wptext+"&wpname="+wpname;
      // отсылаем серверу
     GDownloadUrl(url, function(doc){
           //alert(unescape(postdata));
           //alert(unescape(doc));
           var xmlDoc = GXml.parse(doc);    /// парсим ответ, извлекая лабелайди и постайди
           var info = xmlDoc.documentElement.getElementsByTagName("info");
           var labelid=GXml.value(info[0].getElementsByTagName("labelid")[0]);
           var postid=parseInt(GXml.value(info[0].getElementsByTagName("postid")[0]));
           if (postid > 0) {
           var usern=document.getElementById("username").value;
           document.getElementById("postid").value='http://word.map.ck.ua/'+usern+'/?p='+postid;
           document.getElementById("postid").style.display='inline';
           document.getElementById("wplabel").style.display='inline';
           }
           document.getElementById("labelid").value='http://map.ck.ua/?mode=label&labelid='+labelid;
       //// часики нахрен
           document.getElementById("clock").style.display='none';
       ///  показываем ссылки
           document.getElementById("labeliddiv").style.display='block';
                }, postdata);
}

 function linefromserver(data){     ////////// ответ от сервера на запрос лабелайди
     // alert(data);
      //exit;
      map.clearOverlays;
           var xmlDoc = GXml.parse(data);
           var route = xmlDoc.documentElement.getElementsByTagName("route");
           var marker = xmlDoc.documentElement.getElementsByTagName("marker");
           var info = xmlDoc.documentElement.getElementsByTagName("info");
      // общее инфо
        var name=GXml.value(info[0].getElementsByTagName("name")[0]);
        var labeltime=GXml.value(info[0].getElementsByTagName("labeltime")[0]);
        var mzoom=parseInt(GXml.value(info[0].getElementsByTagName("mzoom")[0]));
        var userid=parseInt(GXml.value(info[0].getElementsByTagName("userid")[0]));
        var wppost=parseInt(GXml.value(info[0].getElementsByTagName("wppost")[0]));
        var lat = parseFloat(GXml.value(info[0].getElementsByTagName("lat")[0]));
        var lng = parseFloat(GXml.value(info[0].getElementsByTagName("lng")[0]));
        var point = new GLatLng(lat, lng);
            map.panTo(point);
            //map.setZoom(0);
            map.setZoom(mzoom);
            if (wppost == 0) {
               document.getElementById("wplink").value='отсутствует';
            } else {
                    document.getElementById("wplink").value='http://word.map.ck.ua/?p='+wppost;
                    }
            document.getElementById("labeltime").value=labeltime;
            document.getElementById("labelname").value=unescape(name);
            var url="server.php?infostring=getuserdisplayname+&infostringid="+userid;
            GDownloadUrl(url, function(data){  /// запрашиваем имя пользователя
                       var xmlDoc = GXml.parse(data);
                       var info = xmlDoc.documentElement.getElementsByTagName("info");
                       var name=GXml.value(info[0].getElementsByTagName("name")[0]);
                       document.getElementById("autor").value=name;
                        });

       // рисуем линии
      for (i=0;i<route.length;i++) {
             var epoints=GXml.value(route[i].getElementsByTagName("points")[0]);
             var elevels=GXml.value(route[i].getElementsByTagName("levels")[0]);
             var ecolor=GXml.value(route[i].getElementsByTagName("color")[0]);
             var ewidth=parseInt(GXml.value(route[i].getElementsByTagName("width")[0]));
         ldesc[i]=unescape(GXml.value(route[i].getElementsByTagName("description")[0]));
         encodedPolyline[i] = new GPolyline.fromEncoded({
                color: ecolor,
                weight: ewidth,
                points: epoints,
                levels: elevels,
                zoomFactor: 32,
                numLevels: 4
        });
        
       encodedPolyline[i].value=i;
       map.addOverlay(encodedPolyline[i]);
       GEvent.addListener(encodedPolyline[i], "click", function(latlng) {
                          if (ldesc[this.value].length>34) map.openInfoWindowHtml(latlng,ldesc[this.value]);
                          });
     }
       // рисуем маркеры
     for (i=0;i<marker.length;i++) {
            var type = String(GXml.value(marker[i].getElementsByTagName("type")[0]));
            var desc = unescape(GXml.value(marker[i].getElementsByTagName("description")[0]));
            var lat = parseFloat(GXml.value(marker[i].getElementsByTagName("lat")[0]));
            var lng = parseFloat(GXml.value(marker[i].getElementsByTagName("lng")[0]));
            var point = new GLatLng(lat, lng);
            var markerid = parseFloat(GXml.value(marker[i].getElementsByTagName("markerid")[0]));
            var markerid = markerid;
           // var marname = removetag(desc,'b');//desc.substring(15, 40);
             var marname = desc.substring(20, 60);
              for (k=0; k<marname.length;k++){
             if (marname.substring(k,k+1) == '<') {
                var endi=k;
                marname=marname.substring(0, endi);
                break;
                }
            }
            markerlist('ID:'+markerid+' :: '+marname);
            description[i]=desc;
            var dotIcon = new GIcon(G_DEFAULT_ICON);
            dotIcon=icon_tip(type,dotIcon);
            var markerOptions = { icon:dotIcon };
            markers[i]=new GMarker(point, markerOptions);
            markers[i].bindInfoWindowHtml(desc);
            map.addOverlay(markers[i]);
     }
}
  ///map init
 function label_init() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(49.441252, 32.062901), 13);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setMapType(G_SATELLITE_MAP);

        var labelid=document.getElementById("labelid").value;
        var url="server.php?labelid="+labelid;
        GDownloadUrl(url, function(doc){
           linefromserver(doc);
           });
       }
}
