/*
 * ModelShoot Map JS Library
 *
 * version 1.0
 * last update 2009.06.07
 * 
 * Copyright (C) 2009 Roberto Ostinelli
 * 
 */

var msmap={node:null,dataUri:"/api/map",markersUri:"/include/map/markers",imagesUri:"/include/map/images",map:null,baseIcon:null,previousXML:null,init:function(){var self=this;var latStart=42.2;var lonStart=12.2;var zoomLevel=6;this.node=document.getElementById("ms_map");if(GBrowserIsCompatible()){this.map=new GMap2(this.node,{mapTypes:[G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP]});this.map.addControl(new GLargeMapControl());this.map.addControl(new GMapTypeControl());this.map.setCenter(new GLatLng(latStart,lonStart),zoomLevel);this.baseIcon=new GIcon();this.baseIcon.shadow=this.markersUri+"/shadow50.png";this.baseIcon.iconSize=new GSize(20,34);this.baseIcon.shadowSize=new GSize(37,34);this.baseIcon.iconAnchor=new GPoint(9,34);this.baseIcon.infoWindowAnchor=new GPoint(9,2);this.baseIcon.infoShadowAnchor=new GPoint(18,25);var getMapData=function(){self.loadData()};GEvent.addListener(this.map,"moveend",getMapData);this.getMapData=getMapData;this.getMapData()}},getMapData:function(){},loadData:function(bounds,zoom_level){var self=this;var request=GXmlHttp.create();var url=this.dataUri;request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState==4){var lat=null;var lon=null;var type=null;var description=null;var url=null;var name=null;var pointData=null;var marker=null;var elements=null;var xmlText='';if(request.responseXML!==null){var xmlDoc=request.responseXML.documentElement;if(xmlDoc.textContent){xmlText=xmlDoc.textContent}else{xmlText=xmlDoc.text}if(xmlText==self.previousXML){return}self.previousXML=xmlText;self.map.clearOverlays();elements=xmlDoc.getElementsByTagName('entry');for(var el=0;el<elements.length;el++){pointData=[];pointData.lat=elements[el].getElementsByTagName('lat')[0].firstChild.nodeValue;pointData.lon=elements[el].getElementsByTagName('lon')[0].firstChild.nodeValue;pointData.type=elements[el].getElementsByTagName('type')[0].firstChild.nodeValue;pointData.description=elements[el].getElementsByTagName('description')[0].firstChild.nodeValue;pointData.url=elements[el].getElementsByTagName('url')[0].firstChild.nodeValue;pointData.name=elements[el].getElementsByTagName('name')[0].firstChild.nodeValue;pointData.image=elements[el].getElementsByTagName('image')[0].firstChild.nodeValue;pointData.id=elements[el].getElementsByTagName('id')[0].firstChild.nodeValue;pointData.proposed_by=elements[el].getElementsByTagName('proposed_by')[0].firstChild.nodeValue;point=new GPoint(parseFloat(pointData.lon),parseFloat(pointData.lat));marker=self.makeMarker(point,pointData);self.map.addOverlay(marker)}}}};request.send(null)},makeWindow:function(pointData){var locationType='';if(pointData.type==1){locationType='Hotel'}if(pointData.type==2){locationType='Villa'}if(pointData.type==3){locationType='Natura'}if(pointData.type==4){locationType='Cascina'}if(pointData.type==5){locationType='Luogo abbandonato'}if(pointData.type==6){locationType='Studio'}if(pointData.type==7){locationType='Altro'}var html="<div style=\"font-size: 12px; font-family: miriad, helvetica, arial; color: gray;\" class=\"bubble\">"+"<div class='mapbaloon'><div class='mapbaloon_title'>"+locationType+"</div>";html+="<b>Nome</b>: "+pointData['name']+"<br>";if(pointData.url.length>0){html+="<b>Sito</b>: <a href='"+pointData.url+"' target='_blank'>"+pointData.url+"</a><br>"}html+="<b>Segnalazione di</b>: <a href='/user/"+pointData.proposed_by+"'>"+pointData.proposed_by+"</a><br><br>";if(pointData.description.length>0){html+="<b>Descrizione</b>";if(pointData.image=='1'){html+="<img src='"+this.imagesUri+"/"+pointData.id+".jpg' align='right'>"}html+="<div class='mapbaloon_desc'>"+pointData.description+"</div>"}else{if(pointData.image=='1'){html+="<img src='"+this.imagesUri+"/"+pointData.id+".jpg' align='right'>"}}html+=addRemoveDiv(pointData.id,this.markersUri);return html},makeMarker:function(point,pointData){var self=this;var icon=new GIcon(this.baseIcon);if(pointData.type==1){icon.image=this.markersUri+"/hotel.png"}if(pointData.type==2){icon.image=this.markersUri+"/villa.png"}if(pointData.type==3){icon.image=this.markersUri+"/natura.png"}if(pointData.type==4){icon.image=this.markersUri+"/cascina.png"}if(pointData.type==5){icon.image=this.markersUri+"/abbandonato.png"}if(pointData.type==6){icon.image=this.markersUri+"/studio.png"}if(pointData.type==7){icon.image=this.markersUri+"/altro.png"}var marker=new GMarker(point,icon);GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml(self.makeWindow(pointData))});return marker}};var msmap_add={dataUri:"/api/map",markersUri:"/include/map/markers",imagesUri:"/include/map/images",map_add:null,geocoder:null,currentMarker:null,init:function(){var latStart=42.2;var lonStart=12.2;var zoomLevel=5;if(GBrowserIsCompatible()){this.map_add=new GMap2(document.getElementById("map_add"));this.map_add.addControl(new GLargeMapControl());this.map_add.addControl(new GMapTypeControl());this.map_add.setCenter(new GLatLng(latStart,lonStart),zoomLevel);this.geocoder=new GClientGeocoder();this.baseIcon=new GIcon();this.baseIcon.shadow=this.markersUri+"/shadow50.png";this.baseIcon.iconSize=new GSize(20,34);this.baseIcon.shadowSize=new GSize(37,34);this.baseIcon.iconAnchor=new GPoint(9,34);this.baseIcon.infoWindowAnchor=new GPoint(9,2);this.baseIcon.infoShadowAnchor=new GPoint(18,25);this.setCurrentStep(1);document.getElementById("map_add_address").focus()}},showAddress:function(address){self=this;if(this.geocoder){this.geocoder.getLatLng(address,function(point){if(!point){alert("Indirizzo '"+address+"' non trovato.")}else{alert("Un nuovo marker verrą creato all'indirizzo che hai specificato.\r\n\r\nPer cortesia, muovilo e posizionalo esattamente sopra la location.");self.setCurrentStep(2);self.map_add.setCenter(point,13);var icon=new GIcon(self.baseIcon);icon.image=self.markersUri+"/white.png";self.currentMarker=new GMarker(point,{icon:icon,draggable:true});GEvent.addListener(self.currentMarker,"dragstart",function(){self.setCurrentStep(2)});GEvent.addListener(self.currentMarker,"dragend",function(){self.setCurrentStep(3)});self.map_add.addOverlay(self.currentMarker)}})}},setCurrentStep:function(stepNum){for(var i=1;i<=3;i++){document.getElementById("map_add_step_"+i).className="map_add_step_normal"}document.getElementById("map_add_step_"+stepNum).className="map_add_step_current"},removeMarker:function(){if(this.currentMarker){this.map_add.removeOverlay(this.currentMarker);this.currentMarker=null}},resetAddress:function(){if(this.currentMarker){if(confirm("Sei sicuro di volere rimuovere il marker corrente e digitare un altro indirizzo?")){removeMarker();setCurrentStep(1)}}},getMarkerCoordinates:function(){if(this.currentMarker){var coords=[];coords.lat=this.currentMarker.getLatLng().lat();coords.lon=this.currentMarker.getLatLng().lng();return coords}}};