window.onload = load;
window.onunload = GUnload;

var map = null;
var mgr = null;
var geocoder = null;
var r = null;
var objTab = {};

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2($("map"));
    geocoder = new GClientGeocoder();
    map.setCenter(new GLatLng(59.941256, 30.336685), 11);  
    map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
    map.enableScrollWheelZoom();
    map.enableContinuousZoom();
    mgr = new MarkerManager(map);    	     
  }
}

function createMarker(point,title,text,icon){
    if(icon!=null){
        var i = new GIcon();
        i.image = icon['image']['path'];
        i.shadow = icon['shadow']['path'];
        i.iconSize = new GSize(icon['image']['width'],icon['image']['height']);
        i.shadowSize = new GSize(icon['shadow']['width'],icon['shadow']['height']);
        i.iconAnchor = new GPoint(icon['image']['height'],new Number(icon['image']['width'])/2);      
    }
    else{
        i = null;   
    }
    marker = new GMarker(
        point,
        {title:title,icon:i}
    );        
    var inr = text;
    GEvent.addListener(
        marker,
        "click",
        function () {     	    	
        	map.openInfoWindow(point,inr);      
        }
    );
    return marker;	    		    
}

function setupPlaces(objects) {             
  mgr = new MarkerManager(map);              
  var o,p;
  var bounds = new GLatLngBounds();
  var r = false;
  for(var i=0; i<objects.length; i++){
    //if(o.point[0]!=0 && o.point[1]){
        o = objects[i];
        p = new GLatLng(o.point[0],o.point[1]);
        mgr.addMarker(createMarker(p,o.title,o.text,o.icon), 2);
        bounds.extend(p);
        objTab[o.id] = [p,o.zoom];
        r = true;
    //}
  }
  if(r){
    map.setZoom(map.getBoundsZoomLevel(bounds));
    map.setCenter(bounds.getCenter());  
  }
}

function goMap(o){   
   map.setCenter(objTab[o][0],16);
}

function searchMap(){
    if(document.getElementById('mapquery').value!=''){
        var xsa = new XS2AJAX();
        xsa.onready = function(){
            sih("searchMapResults",xsa.responseText);
            mgr.clearMarkers();        
            setupPlaces(xsa.responseJS.response);         
            sih("searchState",'');
        }
        sih("searchState",'Идет поиск...');
        xsa.send($("mapSearchFrm"),$("mapSearchFrm").getAttribute('action'));
    }
    else{
        alert('Не задана строка поиска.');   
    }
}                                       