/*
 * Google MAP Jquery interface
 * By Oliver Astrologo
 * Under an Attribution, Share Alike License
 * Is built on top of the very light weight jquery library.
 */
var side_bar_html;var map;var bounds;var gmarkers=[];var htmls=[];var i=0;var xmlfile="/spotlocator-helper.php";var selmarker=false;jQuery.ajaxSetup({global:true,type:"GET",beforeSend:showRequest,success:showResponse,error:showError});function showRequest(XMLHttpRequest){jQuery(".loading_indicator").show();}
function showResponse(XMLHttpRequest,textStatus){}
function showError(XMLHttpRequest,textStatus,errorThrown){alert('Spiacenti ma al momento non è possibile visualizzare i risultati, riprova fra poco.')}
function createMarker(point,html,icontype){var marker=new GMarker(point,icons[icontype]);if(jQuery('#map_canvas_add').length==0){GEvent.addListener(marker,"click",function(){marker.openInfoWindowHtml('<div class="baloon">'+html+'</div>');});}
gmarkers[i]=marker;htmls[i]=html;side_bar_html+='<li>'+html+'<a href="#map_canvas" onClick="myclick('+i+');" class="map-show">Mostra sulla mappa.</a></li>';i++;return marker;}
function myclick(i){gmarkers[i].openInfoWindowHtml('<div class="baloon">'+htmls[i]+'</div>');}
var spotIcon=new GIcon();spotIcon.image="/images/marker_spot.png";spotIcon.iconSize=new GSize(22,22);spotIcon.iconAnchor=new GPoint(11,11);spotIcon.infoWindowAnchor=new GPoint(22,0);var shopIcon=new GIcon();shopIcon.image="/images/marker_shop.png";shopIcon.iconSize=new GSize(22,22);shopIcon.iconAnchor=new GPoint(11,11);shopIcon.infoWindowAnchor=new GPoint(22,0);var skparkIcon=new GIcon();skparkIcon.image="/images/marker_skpark.png";skparkIcon.iconSize=new GSize(22,22);skparkIcon.iconAnchor=new GPoint(11,11);skparkIcon.infoWindowAnchor=new GPoint(22,0);var addIcon=new GIcon();addIcon.image="/images/marker_add.png";addIcon.iconSize=new GSize(16,16);addIcon.iconAnchor=new GPoint(11,11);addIcon.infoWindowAnchor=new GPoint(22,0);var icons=[];icons[0]=spotIcon;icons[1]=shopIcon;icons[2]=skparkIcon;icons[3]=addIcon;function aggiornaMappa(key){jQuery("#statusag:visible").slideUp("fast");side_bar_html='';map.getInfoWindow().hide();map.clearOverlays();gmarkers=[];var bounds=new GLatLngBounds();jQuery.ajax({url:xmlfile,data:key,cache:false,dataType:"xml",success:function(xmlDoc){side_bar_html='<ul>';jQuery(".loading_indicator").hide();var markers=xmlDoc.documentElement.getElementsByTagName("marker");for(var i=0;i<markers.length;i++){var lat=parseFloat(markers[i].getAttribute("lat"));var lng=parseFloat(markers[i].getAttribute("lng"));var point=new GLatLng(lat,lng);var html=GXml.value(markers[i].getElementsByTagName("infowindow")[0]);var icontype=parseInt(markers[i].getAttribute("icontype"));var marker=createMarker(point,html,icontype);bounds.extend(point);map.addOverlay(marker);}
side_bar_html=side_bar_html+'</ul>';if(i==0){side_bar_html='<div class="warning"><p>Prova ad effettuare la ricerca utilizzando un criterio diverso.</p></div>';}
if(key){jQuery("#results").html(side_bar_html+"</ul>").slideDown("fast");jQuery("#results li:odd").addClass('alt');}
if(i>30){jQuery("#statusag").html('<p class="align-left">La ricerca ha prodotto troppi risultati, verranno visualizzati solo i primi 30.<br/>Prova a utilizzare un criterio di ricerca diverso.</p><span id="search-close">Chiudi ricerca.</span>');}else if(i==1){jQuery("#statusag").html('<p class="align-left"><strong>'+i+'</strong> Spot trovato</p><span id="search-close">Chiudi ricerca.</span>');}else if(i==0){jQuery("#statusag").html('<p>Nessuno spot trovato con questi criteri di ricerca, <a href="/spotlocator/add/">aggiungi uno spot in questa città.</a></p>');}else{jQuery("#statusag").html('<p class="align-left">'+i+' Spots trovati</p><span id="search-close">Chiudi ricerca.</span>');}
if(key){jQuery("#statusag").slideDown("slow");jQuery("#search-close").click(function(){jQuery("#results").slideUp("fast");});}
if(i==0){map.setCenter(new GLatLng(41.895465,12.482324),5);}else{map.setZoom(map.getBoundsZoomLevel(bounds)-1);map.panTo(bounds.getCenter());}}});}
function marker_clicked(marker,point){if(map.getZoom()>12){if(!selmarker){selmarker=new GMarker(point,{icon:icons[3],draggable:true});map.addOverlay(selmarker);}
selmarker.setPoint(point);selmarker.openInfoWindowHtml("Lo spot verrà aggiunto in questo punto<br/>puoi trascinare la bandierina e spostarla.");jQuery("#contactform-coors").val(point);GEvent.addListener(selmarker,"dragstart",function(){selmarker.closeInfoWindow();});GEvent.addListener(selmarker,"dragend",function(){selmarker.openInfoWindowHtml("Lo spot verrà aggiunto qui.");jQuery("#contactform-coors").val(selmarker.getPoint());});}else{alert("Per poter inserire uno spot è necessario zommare di più.");}}
jQuery(document).ready(function(){jQuery('#search-container > ul').tabs();if(jQuery('#map_canvas').length>0){if(GBrowserIsCompatible()){map=new GMap2(document.getElementById("map_canvas"));map.enableScrollWheelZoom();map.addControl(new GLargeMapControl());map.addControl(new GMapTypeControl());map.addControl(new GScaleControl());map.addControl(new GOverviewMapControl());map.enableDoubleClickZoom();map.setCenter(new GLatLng(41.895465,12.482324),5);aggiornaMappa();}else{alert("Sorry, the Google Maps API is not compatible with this browser");}};if(jQuery('#map_canvas_add').length>0){if(GBrowserIsCompatible()){map=new GMap2(document.getElementById("map_canvas_add"));map.enableScrollWheelZoom();map.addControl(new GSmallMapControl());map.addControl(new GMapTypeControl());map.addControl(new GScaleControl());map.enableDoubleClickZoom();var curCorValue=(jQuery("#contactform-coors").val()).split(',');var lang=parseFloat(curCorValue[0]);var long=parseFloat(curCorValue[1]);if(lang&&long){map.setCenter(new GLatLng(lang,long),13);marker_clicked(null,new GLatLng(lang,long));}else{map.setCenter(new GLatLng(41.895465,12.482324),5);}
GEvent.addListener(map,'click',marker_clicked);}else{alert("Sorry, the Google Maps API is not compatible with this browser");}}
jQuery(".loading_indicator").hide();jQuery("#statusag").hide();jQuery("#results li:odd").addClass('alt');jQuery(".spotlocator-form").submit(function(){var key=jQuery(this).serialize();aggiornaMappa(key);return false;});});