     var map=null;
     var geocoder=null;
     var mrk=null;
     var lastMarker = null;

     function load(lat,lng,zml)
     {
       if(GBrowserIsCompatible())
        {
         var opts = {
           googleBarOptions : {
           style : 'new',
           adsOptions : {
            client : 'partner-pub-9490590989861158'
           }
          }
         }

         map=new GMap2(document.getElementById("map"), opts);
         geocoder=new GClientGeocoder();

         map.addMapType(G_SATELLITE_3D_MAP);

         map.enableScrollWheelZoom();
         map.enableContinuousZoom();

         initMap(lat,lng,zml);

         map.addControl(new GLargeMapControl());
         map.addControl(new GOverviewMapControl(new GSize(250,135)));
         map.addControl(new ExtMapTypeControl({showTraffic: true, showTrafficKey: true}));
                
         map.enableGoogleBar(); 

         if (mrk)
         {
          var point = new GLatLng(lat, lng);
          lastMarker = new GMarker(point);
          map.addOverlay(lastMarker);
          GEvent.addListener(lastMarker, "click", function() {
          var myHtml = "<b>Lat:</b> " + lat +" <br><b>Lng:</b> "+lng
                     + "<br/><b>Local:</b> "
                     + "<a title='Local news' target='_blank' href='http://tgazeta.linkstore.ru?lat="+lat+"&lng="+lng+"'>news</a>"
                     + " &nbsp; <a title='Local people' target='_blank' href='http://lt.linkstore.ru?lat="+lat+"&lng="+lng+"'>people</a>"
                     + " &nbsp; <a title='Local photo' target='_blank' href='http://twpic.linkstore.ru?lat="+lat+"&lng="+lng+"'>photo</a>"
                     + "<br/><b>Misc:</b> "
                     + " <a title='Local search' target='_blank' href='http://geo.linkstore.ru?lat="+lat+"&lng="+lng+"'>search</a>"
                     + " &nbsp; <a title='ask question' target='_blank' href='http://geotalk.linkstore.ru?lat="+lat+"&lng="+lng+"'>forum</a>"
                     + " &nbsp; <a title='buy&sell' target='_blank' href='http://kp.linkstore.ru?lat="+lat+"&lng="+lng+"'>buy&sell</a>";
            map.openInfoWindowHtml(point, myHtml);
          });

         }

         GEvent.addListener(map,"moveend",function()
         {
          var lat = map.getCenter().lat();
          var lng = map.getCenter().lng();
          setCookie('gllat',lat,365);
          setCookie('glltd',lng,365);
          setCookie('glzml',map.getZoom(),365);

          if (mrk)
          {
           if (lastMarker) map.removeOverlay(lastMarker);
           var point = new GLatLng(lat, lng);
           var t = "Lat:"+lat + " Lng:"+lng;
           lastMarker = new GMarker(point,{title:t});
           map.addOverlay(lastMarker);
           GEvent.addListener(lastMarker, "click", function() {
           var myHtml = "<b>Lat:</b> " + lat +" <br><b>Lng:</b> "+lng
                     + "<br/><b>Local:</b> "
                     + "<a title='Local news' target='_blank' href='http://tgazeta.linkstore.ru?lat="+lat+"&lng="+lng+"'>news</a>"
                     + " &nbsp; <a title='Local people' target='_blank' href='http://lt.linkstore.ru?lat="+lat+"&lng="+lng+"'>people</a>"
                     + " &nbsp; <a title='Local photo' target='_blank' href='http://twpic.linkstore.ru?lat="+lat+"&lng="+lng+"'>photo</a>"
                     + "<br/><b>Misc:</b> "
                     + " <a title='Local search' target='_blank' href='http://geo.linkstore.ru?lat="+lat+"&lng="+lng+"'>search</a>"
                     + " &nbsp; <a title='ask question' target='_blank' href='http://geotalk.linkstore.ru?lat="+lat+"&lng="+lng+"'>forum</a>"
                     + " &nbsp; <a title='buy&sell' target='_blank' href='http://kp.linkstore.ru?lat="+lat+"&lng="+lng+"'>buy&sell</a>";

            map.openInfoWindowHtml(point, myHtml);
          });

          }
         });
       
         GEvent.addListener(map, "click", clickFunction);

         map.addOverlay(new GLayer("com.panoramio.all"));
         map.addOverlay(new GLayer("org.wikipedia.ru"));

         var publisher_id = "pub-9490590989861158"; 

         var adPos = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(7, 70)); 

         adsManagerOptions = {
         maxAdsOnMap : 2,
         style: 'adunit',
         channel: '', 
         position: adPos
        };

      adsManager = new GAdsManager(map, publisher_id, adsManagerOptions);
      adsManager.enable();

        }       
      }

     function clickFunction(overlay, latlng) {
      if (latlng) 
      {
        geocoder.getLocations(latlng, function(addresses) {
          if(addresses.Status.code != 200) {
              alert("Google reverse geocoder failed to find an address for " + latlng.toUrlValue()+" Reason: "+addresses.Status.code);
          }
          else 
          { address = addresses.Placemark[0];
            var myHtml = address.address;
            map.openInfoWindow(latlng, myHtml); }
        });
      }
    }

     function SetMarker(map)
     {
        if (mrk) 
        {
          mrk = false;
          if (lastMarker)
          {
             map.removeOverlay(lastMarker);
             lastMarker = null;
          }
        }
        else
        {
          mrk = true; 
          var lat = map.getCenter().lat();
          var lng = map.getCenter().lng();
          var point = new GLatLng(lat, lng);
          var t = "Lat:"+lat + " Lng:"+lng;

          lastMarker = new GMarker(point,{title:t});
          map.addOverlay(lastMarker);
          GEvent.addListener(lastMarker, "click", function() {
          var myHtml = "<b>Lat:</b> " + lat +" <br><b>Lng:</b> "+lng
                     + "<br/><b>Local:</b> "
                     + "<a title='Local news' target='_blank' href='http://tgazeta.linkstore.ru?lat="+lat+"&lng="+lng+"'>news</a>"
                     + " &nbsp; <a title='Local people' target='_blank' href='http://lt.linkstore.ru?lat="+lat+"&lng="+lng+"'>people</a>"
                     + " &nbsp; <a title='Local photo' target='_blank' href='http://twpic.linkstore.ru?lat="+lat+"&lng="+lng+"'>photo</a>"
                     + "<br/><b>Misc:</b> "
                     + " <a title='Local search' target='_blank' href='http://geo.linkstore.ru?lat="+lat+"&lng="+lng+"'>search</a>"
                     + " &nbsp; <a title='ask question' target='_blank' href='http://geotalk.linkstore.ru?lat="+lat+"&lng="+lng+"'>forum</a>"
                     + " &nbsp; <a title='buy&sell' target='_blank' href='http://kp.linkstore.ru?lat="+lat+"&lng="+lng+"'>buy&sell</a>";
            map.openInfoWindowHtml(point, myHtml);
          });
        } 
         
     }

     function initMap(_lat,_lng,_zml)
     {
      var lat,lng,zml;

      if (_lat) lat = _lat;
      else 
       lat = getCookie('gllat');

      if (lat.length==0) lat = 55.68455275165637;

      if (_lng) lng = _lng;
      else 
       lng = getCookie('glltd');

      if (lng.length==0) lng = 37.733917236328125;

      if (_zml) zml = _zml;
      else 
       zml = getCookie('glzml');

      if (zml.length==0) zml=10;

      map.setCenter(new GLatLng(lat,lng),parseInt(zml));
     }

      function getExpirydate( nodays)
      {
        var UTCstring;
        Today = new Date();
        nomilli=Date.parse(Today);
        Today.setTime(nomilli+nodays*24*60*60*1000);
        UTCstring = Today.toUTCString();
        return UTCstring;
      }

      function getCookie(cookiename) 
      {
      var cookiestring=""+document.cookie;
       var index1=cookiestring.indexOf(cookiename);
       if (index1==-1 || cookiename=="") return ""; 
       var index2=cookiestring.indexOf(';',index1);
       if (index2==-1) index2=cookiestring.length; 
       return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
      }

     function setCookie(name,value,duration)
     {
      cookiestring=name+"="+escape(value)+";EXPIRES="+getExpirydate(duration);
      document.cookie=cookiestring;
     }

   function beforeAction()
   {
     document.body.style.cursor = 'wait';
   }

   function afterAction()
   {
     document.body.style.cursor = 'default';
   }

   function handlerFunction(txt, xmlDoc)
   {
     sendMail(txt);
   } 

   function handlerFunction1(txt, xmlDoc)
   {
     sendFacebook(txt);
   } 

   function handlerFunction2(txt, xmlDoc)
   {
     sendTwitter(txt);
   } 

   function errorFunction()
   {
     alert("Could not create URL for this map");
   }


   function sendMail(sUrl)
   {

     var subjectLine='Take a look at this map from http://msk.linkstore.ru'; 
     var bodyText='You can see this map at: '+sUrl;

     var message='mailto:?subject='+escape(subjectLine)+'&body='+escape(bodyText);
     var messageIE='mailto:?subject='+(subjectLine)+'&body='+escape(bodyText);     

     if(document.all) location.href=messageIE; 
     else  location.href=message; 
   }

   function sendTwitter(sUrl)
   { 
     var bodyText='look at this map: '+sUrl;

     var message='http://twitter.com/home?status='+escape(bodyText);

     location.href=message; 
   }

  function sendFacebook(sUrl)
  {
    var u=sUrl; t='Big map';
    window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
    return false;
  }

   function getUrl(map)
   {
    var center = map.getCenter();
    var sUrl="http://msk.linkstore.ru/index.jsp?"
                 +"lng="+center.lng()
                 +"&lat="+center.lat()
                 +"&zml="+map.getZoom();
    if (mrk) sUrl+="&mrk=1";

    return sUrl;
   }


   function MailTo(map)
   {    
     var sUrl=getUrl(map);

     cjAjaxEngine("tinyurl.jsp?"+sUrl,handlerFunction,errorFunction,beforeAction,afterAction);
   }

   function sendFace(map)
   {
     var sUrl=getUrl(map);

     cjAjaxEngine("tinyurl.jsp?"+sUrl,handlerFunction1,errorFunction,beforeAction,afterAction);
   }

   function sendTwit(map)
   {
     var sUrl=getUrl(map);

     cjAjaxEngine("tinyurl.jsp?"+sUrl,handlerFunction2,errorFunction,beforeAction,afterAction);
   }

   function AddressDialog(map)
   {
      var o = document.getElementById("addressbar");
      if (o.style.display=='none') 
      {
        o.style.display="block";
        document.getElementById("idaddress").focus();
      }
      else                         o.style.display="none";
   }

   function lookupAddress(map)
   {
     var s = document.getElementById("idaddress").value;
     if (s!='')
       geocoder.getLocations(s,findCallback);
   }

  function findCallback(response)
  {
   if (!response) alert("Sorry, unable to find this");
   else
     if (response.Status.code!=200) 
       alert("Sorry, unable to find this"); 
     else
     {
       var place = response.Placemark[0];
       var lat = place.Point.coordinates[1];
       var lng = place.Point.coordinates[0];
      
       moveMap(lat,lng,15); 
       AddressDialog(map); 
     } 
  }

    function moveMap(lat,lng,zoom,mt)
    {
       var z;
       if (zoom) z = eval(zoom);
       else      z = map.getZoom();

       var m;

       if (mt) m = getGoogleMapType(mt);
       else    m = map.getCurrentMapType();

       map.setCenter(new GLatLng(eval(lat),eval(lng)),z,m);
    }
    
   function getGoogleMapType(mapType)
   {
     if (mapType=='0') return G_NORMAL_MAP;
     else
      if (mapType=='1') return G_SATELLITE_MAP;
      else
       if (mapType=='2') return G_HYBRID_MAP;

     return G_NORMAL_MAP;
   }






