
     var map=null;
     var geocoder=null;
     var lastMarker=null;
     var mapSize="240x320";

     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.enableScrollWheelZoom();
         map.enableContinuousZoom();

         initMap(lat,lng,zml);

         map.addControl(new GLargeMapControl());
         map.addControl(new GMapTypeControl());
         // map.addControl(new GOverviewMapControl(new GSize(250,135)));
         map.addControl(new ExtMapTypeControl({showTraffic: true, showTrafficKey: true}));
         map.enableGoogleBar(); 

         var point = new GLatLng(lat, lng);
         lastMarker = new GMarker(point,{title:'click here for mobile map',draggable:true});
         GEvent.addListener(lastMarker, 'click', function(position) {
           location.href=getUrl(map,position);
         });
         map.addOverlay(lastMarker);

         GEvent.addListener(map,"moveend",function()
         {setCookie('gllat',map.getCenter().lat(),365);
          setCookie('glltd',map.getCenter().lng(),365);
          setCookie('glzml',map.getZoom(),365);
          if (lastMarker) map.removeOverlay(lastMarker);
          var point = new GLatLng(map.getCenter().lat(), map.getCenter().lng());
          lastMarker = new GMarker(point,{title:'click here for mobile map',draggable:true});
          GEvent.addListener(lastMarker, 'click', function(position) {
           location.href=getUrl(map, position);
           });
          map.addOverlay(lastMarker);
          });

         var publisher_id = "pub-9490590989861158"; 

         adsManagerOptions = {
         maxAdsOnMap : 2,
         style: 'adunit',
         channel: '' // This field is optional - replace with a channel number that you created for GooYAMLgle AdSense tracking
         };

         adsManager = new GAdsManager(map, publisher_id, adsManagerOptions);
         adsManager.enable();
        }
      }

     function initMap(_lat,_lng,_zml)
     {
      var lat,lng,zml;

      if (_lat) lat = _lat;
      else 
       lat = getCookie('gllat');

      if (google.loader) 
        if (google.loader.ClientLocation)
         if (lat.length==0) lat = google.loader.ClientLocation.latitude; 

      if (lat.length==0) lat = 55.68455275165637;

      if (_lng) lng = _lng;
      else 
       lng = getCookie('glltd');

      if (google.loader) 
        if (google.loader.ClientLocation)
         if (lng.length==0) lng = google.loader.ClientLocation.longitude; 

      if (lng.length==0) lng = 37.733917236328125;

      if (_zml) zml = _zml;
      else 
       zml = getCookie('glzml');

      if (zml.length==0) zml=4;

      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 getUrl(map, position)
   {
     var center = map.getCenter();
     var sUrl="http://maps.google.com/staticmap?"
              +"key=ABQIAAAAjrdopzovTnai_VxjvTM3UhSdEI0xgTo1Wp6CjIkAKCcpn1d12BSQlwIlRKq8SVxjVusureGYqIQ0Tg"
              +"&maptype="+getType(map)
              +"&sensor=false"
              +"&markers="+position.lat()+","+position.lng()
              +"&size="+mapSize
              +"&zoom="+map.getZoom();

      return sUrl;
   }

   function setSize(map)
   {
      var o = document.getElementById("sizebar");
      if (o.style.display=='none') 
      {
        o.style.display="block";  
        if (mapSize=="320x480") document.forms['mf'].r1[0].checked=true; 
        else
         if (mapSize=="240x320") document.forms['mf'].r1[1].checked=true;       
         else
          if (mapSize=="176x220") document.forms['mf'].r1[2].checked=true;       
          else
           if (mapSize=="128x128") document.forms['mf'].r1[3].checked=true;       
      }
      else    o.style.display="none";
   }

   function MailTo(map)
   {
     var sUrl = getUrl(map);   
   
     cjAjaxEngine("tinyurl.jsp?"+sUrl,handlerFunction,errorFunction,beforeAction,afterAction);
   }

   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 center = map.getCenter();
     var subjectLine='Take a look at this map from http://mmap.linkstore.ru'; 
     var bodyText='You can see this map at: '+sUrl+' ('+center.lat()+','+center.lng()+')';

     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='Mobile 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 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;
   }

  function getType(map)
  {
    var m = map.getCurrentMapType();

    if (m==G_NORMAL_MAP) return "roadmap";
    else
      if (m == G_SATELLITE_MAP) return "satellite";
      else
       if (m==G_HYBRID_MAP) return "hybrid";

    return "roadmap";
  }










