//country selezionato
var currentcountry="";
//regione selezionata
var currentregione="";
//citta selezionata
var currentcity="";

var geocoder = "";
var map="";
var baloonContent = "";

function initialize() {	
		geocoder = new google.maps.Geocoder();		
		var latlng = new google.maps.LatLng(-34.397, 150.644);		
		var myOptions = {
		  zoom: 8,
		  center: latlng,
		  mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
		
		if (geocoder) {
		  geocoder.geocode( { 'address': 'Europa'}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
			  map.setCenter(results[0].geometry.location);			  
			} else {
			  alert("Geocode was not successful for the following reason: " + status);
			}
		  });
		}
		
}

//funzioni custom 
function ClearOptions(selectname){	
	selectname.length = 0;
}
//aggiunge option alla select
function AddOptionToSelect(selectname,optionnode){
	try
	  {selectname.add(optionnode,null);}
	catch(ex)
	  {selectname.add(optionnode);}		  
}

function SetCountry(thiscountry){
	currentcountry = thiscountry;
}
//posiziona la mappa sul country
function findCountry(countrytofind) {		
	if (geocoder) {
	  geocoder.geocode( { 'address': countrytofind}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
		  map.zoom = 6;
		  map.setCenter(results[0].geometry.location);			  
		}
	  });
	}
}
//posiziona la mappa sulla regione
function findRegione(regionetofind) {			
	if (geocoder) {
	  geocoder.geocode( { 'address': regionetofind}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
		  map.zoom = 8;
		  map.setCenter(results[0].geometry.location);			  
		}
	  });
	}	
}
//posiziona la mappa sulla citta
function findCitta(cittatofind) {
	if (geocoder) {
	  geocoder.geocode( { 'address': cittatofind}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
		  map.zoom = 12;
		  map.setCenter(results[0].geometry.location);			  
		}
	  });
	}
}

function SetRegione(thisregione){
	currentregione = thisregione;
}

//elenco regioni
function FilterRegioni(countryid){
	
	document.getElementById("partnerscount").innerHTML = "";
	
	var googleproxy = getGoogleProxy();
	var result = googleproxy.GetRegioni(countryid).DATA;
	var select_value = "";
	var select_content = "";
	
	var select_regioni = document.getElementById("regioni");			
	//pulisce la select regioni
	ClearOptions(select_regioni);
	
	var select_citta = document.getElementById("citta");			
	//pulisce la select citta
	ClearOptions(select_citta);
	
	//aggiunge un nodo vuoto
	var select_node = document.createElement("option");			
		select_node.text = "";
	AddOptionToSelect(select_regioni,select_node);
	
	for(x=0;x<result.length;x++){
		
		select_value = result[x][0];
		select_content = result[x][1];			
		select_node = document.createElement("option");		    
			select_node.value=select_value;			  
			select_node.text=select_content;			
		AddOptionToSelect(select_regioni,select_node);
		
	}
	
}

function SetCity(thiscity){
	currentcity = thiscity;
}

//elenco citta
function FilterCitta(regioneid){
	
	document.getElementById("partnerscount").innerHTML = "";
	
	var googleproxy = getGoogleProxy();
	var result = googleproxy.GetCitta(regioneid).DATA;
	var select_value = "";
	var select_content = "";
	
	var select_citta = document.getElementById("citta");
	//pulisce la select citta
	ClearOptions(select_citta);
	
	//aggiunge un nodo vuoto
	var select_node = document.createElement("option");			
		select_node.text = "";
	AddOptionToSelect(select_citta,select_node);
	
	for(x=0;x<result.length;x++){
		
		select_value = result[x][0];
		select_content = result[x][1];			
		select_node = document.createElement("option");		    
			select_node.value=select_value;			  
			select_node.text=select_content;			
		AddOptionToSelect(select_citta,select_node);
		
	}
	
}

//visualizza partners
function ShowPartners(){
	
	var reservareaproxy = getReservAreaProxy();
	var partnerslist = reservareaproxy.GetPartnersList(currentcountry,currentregione,currentcity);
	
	document.getElementById("partnerscount").innerHTML = "<strong>" + partnerslist.length + "</strong> Business Partners trovati";
	
	if (window.DOMParser){
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(partnerslist,"text/xml");
	}else{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(partnerslist);
	} 
	
	arr_profilenode = xmlDoc.getElementsByTagName("profilo");
	arr_ragsocnode = xmlDoc.getElementsByTagName("rag_soc");
	arr_nationnode = xmlDoc.getElementsByTagName("nazione");
	arr_regionnode = xmlDoc.getElementsByTagName("regione");
	arr_citynode = xmlDoc.getElementsByTagName("citta");			
	arr_capnode = xmlDoc.getElementsByTagName("cap");
	arr_addressnode = xmlDoc.getElementsByTagName("indirizzo");
	arr_gmapnode = xmlDoc.getElementsByTagName("map_address");
	arr_emailnode = xmlDoc.getElementsByTagName("email");
	arr_phonenode = xmlDoc.getElementsByTagName("telefono");
	arr_faxnode = xmlDoc.getElementsByTagName("fax");
	
	var profile = "";
	var ragsoc = "";
	var nation = "";
	var region = "";
	var city = "";			
	var cap = "";
	var address = "";
	var gmap = "";
	var email = "";
	var phone = "";
	var fax = "";
	
	for(y=0;y<arr_profilenode.length;y++){
			
			profile = arr_gmapnode[y].childNodes[0].nodeValue;
			ragsoc = arr_ragsocnode[y].childNodes[0].nodeValue;
			nation = arr_nationnode[y].childNodes[0].nodeValue;
			region = arr_regionnode[y].childNodes[0].nodeValue;
			city = arr_citynode[y].childNodes[0].nodeValue;			
			cap = arr_capnode[y].childNodes[0].nodeValue;
			address = arr_addressnode[y].childNodes[0].nodeValue;
			gmap = arr_gmapnode[y].childNodes[0].nodeValue;
			email = arr_emailnode[y].childNodes[0].nodeValue;
			phone = arr_phonenode[y].childNodes[0].nodeValue;
			fax = arr_faxnode[y].childNodes[0].nodeValue;
			
			if (geocoder) {
				    geocoder.geocode( { 'address': gmap}, function(results, status) {
					if (status == google.maps.GeocoderStatus.OK) {
					  map.zoom = 11;
					  map.setCenter(results[0].geometry.location);
					  var image = '/img/marker.png';
					  var marker = new google.maps.Marker({
						  map: map, 							 
						  position: results[0].geometry.location,
						  icon: image
					  });
					
					  //informazioni del baloon
					  baloonContent = "<span style='font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px'>";
					  baloonContent = baloonContent + ragsoc + "<br/>";
					  baloonContent = baloonContent + address + "<br/>";					  
					  baloonContent = baloonContent + cap + " ";
					  baloonContent = baloonContent + " " + city;
					  baloonContent = baloonContent + "</span>";
					  
					  //prepara le informazioni aggiuntive
					  var infocontent = "informazioni aggiuntive partner";
					  
					  var infowindow = new google.maps.InfoWindow({content: baloonContent}); 				  
					  google.maps.event.addListener(marker, 'click', function() {infowindow.open(map,marker);ShowPartnerInfo(infocontent);}); 
					  
					} else {
						alert("Geocode was not successful for the following reason: " + status);
					}
				  });
			}	
			
	}

}

//visualizza informazioni aggiuntive partners
function ShowPartnerInfo(content){
	
	document.getElementById("infoLocator").innerHTML = content;
	document.getElementById("infoLocator").style.display="block";
	
}