function CenterMap(pLat,pLng)
{
  var point = new GLatLng(pLat,pLng);
  
  map.setCenter(point,8);
// UpdateAllMarkers(pLat,pLng);
  //map.UpdateAllMarkers();
  //map.zoomout();
  //map.ZoomOut();
  //map.ZoomOut();
}



function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function LoadMap(CountryLat,CountryLng,CurrentLang,StartZoom,Options) {       
       if (GBrowserIsCompatible()) {

 var background = [];
 background["hotel"] = "images/hotel.png";
 background["city"] = "images/city_mark.png";
 background["landmark"] = "images/landmark.png";
 background["country"] = "images/landmark.png";
 
  background["airport"] = "images/airport.png";
 var overlay = [];
 overlay["0"] = "overlay2.png";
 overlay["1"] = "overlay3.png";
 overlay["2"] = "overlay4.png";
 overlay["3"] = "overlay4.png";
 overlay["4"] = "overlay4.png";
 overlay["5"] = "overlay4.png";

 
  function createMarkerXY(pLat,pLong,html,title,ba,ov) {
	      var point = new GLatLng(pLat,pLong);
var 
              Icon = new GIcon( )
              Icon.image = background[ba];
              Icon.iconAnchor = new GPoint(6, 20);
              Icon.infoWindowAnchor = new GPoint(5, 1);
              
              opts = { 
  "icon": Icon,
  "clickable": true,
  "labelText": "A",
  "labelOffset": new GSize(-6, -10),
  "title": title
};


          var marker = new GMarker(point,opts);
          GEvent.addListener(marker, "click", function() {
                                              switch(ba)
                                              {case 'hotel' :
                                                marker.openInfoWindowHtml(html);
                                                break;
                                               case 'city' :
                                                LinkCityCame = str_replace(' ','',title)+'.html';
                                                link  = 'city/'+html+'/'+LinkCityCame;
                                                window.open(link);
                                                break;          
                                               case 'country' :
                                                LinkCountryCame = str_replace(' ','',title)+'.html';
                                                link  = 'countries/'+html+'/'+LinkCountryCame;
                                                window.open(link);
                                                break;
                                              }
                                                            }//function
          );
         
          return marker;
 }
 
 
 function CreateHTMLText (jsonData,MarksType,Idx)
{
 var LinkHotelname,hlmltext;
switch (MarksType)
 {case 'hotel': 
    LinkHotelname = str_replace(' ','',jsonData.title+'.html');
    hlmltext = '<table height = "150" border="0"><tr><td><div width = "200"><div><b>'+jsonData.title+'</b></div><div><img src="http://www.booking.com/'+jsonData.b_image_url+'" alt="" width="80" align="left" style="padding:10px" /></a>'+jsonData.b_description+'</div></div><a href="hotels/'+Idx+'/'+LinkHotelname+'" ><font color = maroon size=2px>read more</font></a></td></tr></table>';
    break;
  case 'city' : 
    hlmltext = jsonData.CityNo; 
    break;
  case 'country' : 
    hlmltext = jsonData.CountryNo; 
    break;
 }   
    return hlmltext;
}

 function GetTitle (jsonData,MarksType)
{
 
switch (MarksType)
 {case 'hotel':
    return jsonData.title;
    break; 
  case 'city' : 
    return jsonData.CityName; 
    break;
  case 'country' : 
    return jsonData.CountryName; 
    break;
 }   
    return hlmltext;
}

function UpdateMarks(link,MarksType,ZoomLevel) {
 ProcessHotelMarks = function(doc) {
                     var jsonData = eval('(' + doc + ')');
                     MarkerLayer[MarksType].clearMarkers();   
                     $.each(jsonData, 
                                    function(i,item){
 MarkerLayer[MarksType].addMarker(createMarkerXY(jsonData[i].b_latitude,jsonData[i].b_longitude,CreateHTMLText(jsonData[i],MarksType,i),GetTitle(jsonData[i],MarksType),MarksType,jsonData[i].b_class),ZoomLevel);
 /*if (MarksType === 'city') {
 var point = new GLatLng(jsonData[i].b_latitude,jsonData[i].b_longitude);
 var label = new ELabel(point, jsonData[i].CityName+'<a href = "www.ok.net.ua">ddd</a>', "style1");
           map.addOverlay(label)
 } */          
          
                                                    }
                           );//each
                              }//UpdateHotelMarks
 GDownloadUrl(link,ProcessHotelMarks);
 
}//UpdateMarks                              
function UpdateBounds()
{
  var CurrentBounds = map.getBounds();sw = CurrentBounds.getSouthWest();nw = CurrentBounds.getNorthEast();
}
function UpdateHotelMarks()
{
  var source_link = 'proxy.php?link=http://www.booking.com/hotelsonmap.en.json?BBOX='+sw.lng()+','+sw.lat()+','+nw.lng()+','+nw.lat()+';limit=30';
  UpdateMarks(source_link,'hotel',6);
}
function UpdateCityMarks() 
{
  var source_link = 'include/ajax/GetRCity.php?MinLng='+sw.lng()+'&MinLat='+sw.lat()+'&MaxLng='+nw.lng()+'&MaxLat='+nw.lat()+'&RowLimit=20&ResultType=0';
  UpdateMarks(source_link,'city',3);
}

function UpdateCountryMarks() 
{
  var source_link = 'include/ajax/GetRCity.php?MinLng='+sw.lng()+'&MinLat='+sw.lat()+'&MaxLng='+nw.lng()+'&MaxLat='+nw.lat()+'&RowLimit=200&ResultType=1';
  UpdateMarks(source_link,'country',0);
}

                      
function UpdateAllMarkers()
{
  
  UpdateBounds();
  if (NeedCities) {UpdateCityMarks();}
  if (NeedHotel) {UpdateHotelMarks();}
  if (NeedCountry) {UpdateCountryMarks();}
}
  var map = new GMap2(document.getElementById("map"), {draggableCursor: 'crosshair'});
  
  CountryCenterPoint = new GLatLng(CountryLat,CountryLng);
  
  map.addMapType(G_PHYSICAL_MAP);
  map.addControl(new GLargeMapControl());
  map.addControl(new GScaleControl());
  map.addControl(new GMapTypeControl());
//  map.enableScrollWheelZoom();
  map.enableContinuousZoom();
  //var map.UpdateAllMarkers = UpdateAllMarkers();
  
  
   
   
  
  map.setCenter(CountryCenterPoint,StartZoom);
 
   
  
  var MarkerLayer = [];
  var mgrOptions = { borderPadding: 50, maxZoom: 15, trackMarkers: true };

  MarkerLayer['city'] = new MarkerManager(map,mgrOptions);  
  MarkerLayer['hotel'] = new MarkerManager(map,mgrOptions);  
  MarkerLayer['country'] = new MarkerManager(map,mgrOptions);  
  GEvent.addListener(map, 'dragend', function() {UpdateAllMarkers();});
  GEvent.addListener(map, 'zoomend', function() {UpdateAllMarkers();});
  //GEvent.addListener(map, 'moveend', function() {UpdateAllMarkers();});
  //GEvent.addListener(map, 'move', function() {UpdateAllMarkers();});
  
  
  //CountryCenterMarker = new GMarker(CountryCenterPoint);map.addOverlay(CountryCenterMarker);
  NeedCities = false;NeedHotel = false; NeedCountry = false;
  
  $.each(Options,
 function(i,item){               
                   switch(item)
                   {case 'city' : NeedCities = true; break
                   case 'hotel' : NeedHotel = true; break
                   case 'country' : NeedCountry = true; break;}
                   }              )
  UpdateAllMarkers();
    //var kml = new GGeoXml("http://127.0.0.1/doc.kml");
   //map.addOverlay(kml)
  
  
    
    //var map.prototype = new xxx();
    //map.prototype.xxx = UpdateAllMarkers;
    return map
    }//f (GBrowserIsCompatible()
}//load    