//google.load("maps", "2", {"locale" : "it_IT"});
var geocoder = new GClientGeocoder();
var cdvmaps = {
	map : null,
	mgr : null,
	geocoder : null,
	markers : [],
	defaultZoom : 13,
	clickZoom : 14,
	googlekey : "ABQIAAAArbdZEXTSz30wEUTXRDC1whTwYz4-zXza2Vn3flhpYqd77qSLQhTQDfImVybf3KyXxUl72XF0qh16AQ",
	setStart : function () {
		var verona = new GLatLng(45.438153, 10.993023);
		return verona;
	},
	initMap : function  () {
		$("mapOverlay").setOpacity(0.7);
		
		var opts = {
				googleBarOptions: {
					showOnLoad : true,
					searchFormHint : "Cerca nella mappa"
				}
		};
		cdvmaps.map = new GMap2($("map"),opts);
		//cdvmaps.geocoder = new GClientGeocoder();
		cdvmaps.map.setCenter(cdvmaps.setStart(), 13);
		cdvmaps.map.addControl(new GSmallMapControl());
		//cdvmaps.map.enableGoogleBar();
		cdvmaps.mgr = new MarkerManager(cdvmaps.map);
		new Accordion($$('dl#locationGroups dt'), $$('dl#locationGroups dd'),{
			opacity : false,
			alwaysHide: true,
			onActive : function (el) {
				if (el.getProperty("id") != "help") {
					var id = el.getProperty("id").substr(6);
					cdvmaps.getMarkers(id);
				}
			}
		});
	/**
	* add custom search behaviour
	*/
		$("submitLocation").addEvent("click",function (e) {
													   var ev = new Event(e);
													   ev.preventDefault();
													   var AddrQuery =  $("locationAdrress").getValue()+" Verona Italy";
													   geocoder.getLocations(AddrQuery, cdvmaps.customMarker);
													   
		});
	},
	
	getMarkers : function (cid) {
		$("mapOverlay").setStyle("display","block");
		new Ajax("../script/mappe/mappe.ajax.php", {
			data: {
				action: "getmarkers",
				id: cid
			},
			onComplete: function(data){
				//console.log(data);
				cdvmaps.mgr.clearMarkers();
				cdvmaps.populateGroup(Json.evaluate(data));
				$("mapOverlay").setStyle("display","none");
			}
		}).request();
	},
	
	populateGroup : function (locations) {
		cdvmaps.markers = new Array();
		locations.each( function (loc) {
			var point = new GLatLng(loc.lat,loc.lng);
			var locMarker = new GMarker(point);
			locMarker.id = loc.id;
			cdvmaps.markers.push(locMarker);
			var ev = GEvent.addListener(locMarker,"click",function() {
				//console.log(this.id)
				cdvmaps.mapZoom (this);
			});
			
		});
		cdvmaps.mgr.addMarkers(cdvmaps.markers, cdvmaps.defaultZoom);
		cdvmaps.mgr.refresh();
	},
	
	mapZoom : function (m) {
				if (typeof m == "number") {
					var filter =  cdvmaps.markers.filter(function (el) {
						return el.id == m;
					});
					var m = filter[0];
				} else {
					var m = m;
				}
				$("mapOverlay").setStyle("display","block");
				new Ajax("../script/mappe/mappe.ajax.php",{
					data : {action : "getdetails", id : m.id},
					onComplete : function (data) {
						cdvmaps.map.setCenter(m.getPoint(), cdvmaps.defaultZoom);
						m.openInfoWindowHtml("<span style='font-size:11px'>"+data+"</span>");
						$("mapOverlay").setStyle("display","none");
					}
				}).request();
				
	},
	customMarker : function (response) {
		
      if (!response || response.Status.code != 200) {
        alert("Attenzione!\nIndirizzo non trovato.");
      } else {
        cdvmaps.mgr.clearMarkers();
		var place = response.Placemark[0];
        var point = new GLatLng(place.Point.coordinates[1],
                            place.Point.coordinates[0]);
		cdvmaps.map.setCenter(point, cdvmaps.defaultZoom);
        var marker = new GMarker(point);
        cdvmaps.map.addOverlay(marker);
        marker.openInfoWindowHtml("<span style='font-weight:bold'>Hai cercato:</span><br/>"+response.name);
      }
	  //console.log(locat);
	},
	zoomBack : function  () {
		cdvmaps.mgr.clearMarkers();
		cdvmaps.markers = new Array();
		cdvmaps.map.setCenter(cdvmaps.setStart(), cdvmaps.defaultZoom);
		cdvmaps.map.closeInfoWindow();
	}

}



window.addEvent("domready",cdvmaps.initMap);