var icona_farmacia="<img src='/template/images/markers/icona_farmacia.gif' border='0' />&nbsp;";
var icona_cup="<img src='/template/images/markers/icona_cup.gif' border='0' />&nbsp;";
var icona_pronto_soccorso="<img src='/template/images/markers/icona_pronto_soccorso.gif' border='0' />&nbsp;";
var icona_medici="<img src='/template/images/markers/icona_medici.gif' border='0' />&nbsp;";
var icona_guardia_medica="<img src='/template/images/markers/icona_guardia_medica.gif' border='0' />&nbsp;";
var icona_altre_strutture="<img src='/template/images/markers/icona_altre_strutture.gif' border='0' />&nbsp;";
var icona_altri_sportelli="<img src='/template/images/markers/icona_altri_sportelli.gif' border='0' />&nbsp;";
var icona_strutture_erogazione="<img src='/template/images/markers/icona_altre_strutture.gif' border='0' />&nbsp;";

var msgNotFound = "<div class=\"alert\">Impossibile individuare l'indirizzo</div>";

var sportelliCUPArray = new Array();
var farmacieArray = new Array();
var farmacieDiTurnoArray = new Array();
var sportelliDistrettualiArray = new Array();
var sportelliSocialiArray = new Array();
var guardiaMedicaArray = new Array();
var prontoSoccorsoArray = new Array();
var mediciArray = new Array();
var mediciGeneraliArray = new Array();
var mediciPediatriArray = new Array();
var struttureErogazioneArray = new Array();

var arrayCB = new Array();

var enableZoom = true;

function isReturn(e){
 var characterCode;
 if(e && e.which){
 e = e;
 characterCode = e.which;
 }else{
 characterCode = e.keyCode;
 }

 if(characterCode == 13){
 return true;
 }else{
 return false;
 }
}

function $(name) {
    var ret=document.getElementById(name);
    return ret;
}

function lettera(l) {
	var el = $(l);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	} else {
		el.style.display = 'block';
	}
}

function togle(handle, id) {
	var el = $(id);
	if ( el.style.display != '' ) {
		nascondi(id);
		//handle.innerHTML='<img src="/template/images/freccia_open.png" border="0">';
		handle.parentNode.parentNode.parentNode.parentNode.parentNode.style.backgroundColor='';
	} else {
		mostra(id);
		//handle.innerHTML='<img src="/template/images/freccia_close.png" border="0">';
		handle.parentNode.parentNode.parentNode.parentNode.parentNode.style.backgroundColor='#F8F8F8';
	}
}

function mostra(id){
	var el = $(id);
	el.style.display = 'block';
}

function nascondi(id){
	var el = $(id);
	el.style.display = '';
}

function getSportelliCUP(query){
	var ret=getSync('/index.php','p=elencoSportelliCUP_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getSportelliCUPID(pdp){
	var ret=getSync('/index.php','p=elencoSportelliCUP_AJAX&PDP='+pdp);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getProntoSoccorso(query){
	var ret=getSync('/index.php','p=elencoProntoSoccorso_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getProntoSoccorsoID(prso_id){
	var ret=getSync('/index.php','p=elencoProntoSoccorso_AJAX&PRSO_ID='+prso_id);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getSportelliDistrettuali(query){
	var ret=getSync('/index.php','p=elencoSportelliDistrettuali_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getSportelliDistrettualiID(spds_id){
	var ret=getSync('/index.php','p=elencoSportelliDistrettuali_AJAX&SPDS_ID='+spds_id);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getSportelliSocialiID(spsc_id){
	var ret=getSync('/index.php','p=elencoSportelliSociali_AJAX&SPSC_ID='+spsc_id);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getSportelliSociali(query){
	var ret=getSync('/index.php','p=elencoSportelliSociali_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getStruttureErogazioneID(ster_id){
	var ret=getSync('/index.php','p=elencoStruttureErogazione_AJAX&STER_ID='+ster_id);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getStruttureErogazione(query){
	var ret=getSync('/index.php','p=elencoStruttureErogazione_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getMedici(query){
	var ret=getSync('/index.php','p=elencoMedici_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getMediciAsync(query, tipo){
	var ret=getAsync('/index.php','p=elencoMedici_AJAX&query='+query+'&tipo='+tipo, myDeJsonMedici);
}

function getMediciAsyncID(progr_ambulatorio){
	var ret=getAsync('/index.php','p=elencoMedici_AJAX&AMME_ID='+progr_ambulatorio, myDeJsonMedici);
}

function getMediciAsyncNCP_ID(ncp_id, tipo){
	var ret=getAsync('/index.php','p=elencoMedici_AJAX&NCP_ID='+ncp_id+'&tipo='+tipo, myDeJsonMedici);
}

function myDeJsonMedici(ret) {
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	rispostaMedici(out);
}

function getFarmacieAsync(query){
	var ret=getAsync('/index.php','p=elencoFarmacie_AJAX&query='+query, myDeJsonFarmacie);
}

function getFarmacieDiTurnoAsync(query){
	var ret=getAsync('/index.php','p=elencoFarmacieDiTurno_AJAX', myDeJsonFarmacie);
}

function getFarmacieIDAsync(id){
	var ret=getAsync('/index.php','p=elencoFarmacie_AJAX&FARM_ID='+id, myDeJsonFarmacie);
}

function myDeJsonFarmacie(ret) {
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	rispostaFarmacie(out);
}

function getMediciID(progr_ambulatorio){
	var ret=getSync('/index.php','p=elencoMedici_AJAX&AMME_ID='+progr_ambulatorio);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getFarmacie(query){
	var ret=getSync('/index.php','p=elencoFarmacie_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}


function getFarmacieID(idfarmacia){
	var ret=getSync('/index.php','p=elencoFarmacie_AJAX&FARM_ID='+idfarmacia);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getGuardiaMedica(query){
	var ret=getSync('/index.php','p=elencoGuardiaMedica_AJAX&query='+query);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function getGuardiaMedicaID(gmed_id){
	var ret=getSync('/index.php','p=elencoGuardiaMedica_AJAX&GMED_ID='+gmed_id);
	var out = null;
	try {
		out = eval(ret);
	} catch(err) {alert('Errore di interpretazione risposta del server');}
	return out;
}

function startSportelliCUP(pdp) {
	if (pdp) {
		cercaSportelliCUPID(pdp, $('itinerario_a'));
	} else {
		cercaSportelliCUP($('cerca'), '', $('itinerario_a'), false, sportelliCUPArray);
		//map.setCenter(new GLatLng(lat,lon), 13);
	}
}

function startFarmacie(id) {
	if (id) {
		cercaFarmacieID(id, $('itinerario_a'));
	} else {
		cercaFarmacie($('cerca'), '', $('itinerario_a'), false, farmacieArray);
		//map.setCenter(new GLatLng(lat,lon), 13);
	}
}

function startSportelliDistrettuali(id) {
	if (id) {
		cercaSportelliDistrettualiID(id, $('itinerario_a'));
	} else {
		cercaSportelliDistrettuali($('cerca'), '', $('itinerario_a'), false, sportelliDistrettualiArray);
		//map.setCenter(new GLatLng(lat,lon), 11);
	}
}

function startSportelliSociali(id) {
	if (id) {
		cercaSportelliSocialiID(id, $('itinerario_a'));
	} else {
		cercaSportelliSociali($('cerca'), '', $('itinerario_a'), false, sportelliSocialiArray);
		//map.setCenter(new GLatLng(lat,lon), 9);
	}
}

function startStruttureErogazione(id) {
	if (id) {
		cercaStruttureErogazioneID(id, $('itinerario_a'));
	} else {
		cercaStruttureErogazione($('cerca'), '', $('itinerario_a'), false, struttureErogazioneArray);
		//map.setCenter(new GLatLng(lat,lon), 9);
	}
}

function startGuardiaMedica(id) {
	if (id) {
		cercaGuardiaMedicaID(id, $('itinerario_a'));
	} else {
		cercaGuardiaMedica($('cerca'), '', $('itinerario_a'), false, guardiaMedicaArray);
		//map.setCenter(new GLatLng(lat,lon), 11);
	}
}

function startMedici(id, ncp_id, tipo) {
	if (id) {
		cercaMediciID(id, $('itinerario_a'));
	} else if (ncp_id) {
		cercaMediciNCP_ID(ncp_id, $('itinerario_a'), tipo);
	} else {
		cercaMedici($('cerca'), '', $('itinerario_a'), false, mediciArray, tipo);
		//map.setCenter(new GLatLng(lat,lon), 13);
	}
}

function startProntoSoccorso(id) {
	if (id) {
		cercaProntoSoccorsoID(id, $('itinerario_a'));
	} else {
		cercaProntoSoccorso($('cerca'), '', $('itinerario_a'), false, prontoSoccorsoArray);
		//map.setCenter(new GLatLng(lat,lon), 11);
	}
}

function startTutto(sportelliCUP, farmacie, farmacieDiTurno, sportelliDistrettuali, sportelliSociali, guardiaMedica, prontoSoccorso, mediciGenerali, mediciPediatri, struttureErogazione, centerLat, centerLon, startZoom) {
	clearOverlays();
	if (sportelliCUP=='true') {
		$('sportelliCUP').checked='checked';
		cercaSportelliCUP(null, '', $('itinerario_a'), false, sportelliCUPArray);
	}
	if (farmacie=='true') {
		$('farmacie').checked='checked';
		cercaFarmacie(null, '', $('itinerario_a'), false, farmacieArray);
	}
	if (farmacieDiTurno=='true') {
		$('farmacieDiTurno').checked='checked';
		cercaFarmacieDiTurno(null, '', $('itinerario_a'), false, farmacieDiTurnoArray);
	}
	if (sportelliDistrettuali=='true') {
		$('sportelliDistrettuali').checked='checked';
		cercaSportelliDistrettuali(null, '', $('itinerario_a'), false, sportelliDistrettualiArray);
	}
	if (sportelliSociali=='true') {
		$('sportelliSociali').checked='checked';
		cercaSportelliSociali(null, '', $('itinerario_a'), false, sportelliSocialiArray);
	}
	if (guardiaMedica=='true') {
		$('guardiaMedica').checked='checked';
		cercaGuardiaMedica(null, '', $('itinerario_a'), false, guardiaMedicaArray);
	}
	if (prontoSoccorso=='true') {
		$('prontoSoccorso').checked='checked';
		cercaProntoSoccorso(null, '', $('itinerario_a'), false, prontoSoccorsoArray);
	}
	if (mediciGenerali=='true') {
		$('mediciGenerali').checked='checked';
		cercaMedici(null, '', $('itinerario_a'), false, mediciGeneraliArray, 'Medico di Medicina Generale');
	}
	if (mediciPediatri=='true') {
		$('mediciPediatri').checked='checked';
		cercaMedici(null, '', $('itinerario_a'), false, mediciPediatriArray, 'Pediatra di Libera Scelta');
	}
	if (struttureErogazione=='true') {
		$('struttureErogazione').checked='checked';
		cercaStruttureErogazione(null, '', $('itinerario_a'), false, struttureErogazioneArray);
	}
	if ((centerLat)&&(centerLon)&&(startZoom)) {
		lat = centerLat;
		lon = centerLon;
		try {
			zoom = parseInt(startZoom);
		} catch (err){
			zoom = 12;
		}
	} else {
		zoom = 12;
	}
	//alert('setto: '+zoom);
	map.setCenter(new GLatLng(lat,lon),zoom);
	//map.setZoom(zoom);
}

function cercaSportelliCUP(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getSportelliCUP(query);
	rispostaSportelliCUP(list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}

function cercaSportelliCUPID(pdp, toHTMLElement) {
	if (pdp) {
		clearOverlays();
		var list=getSportelliCUPID(pdp);
		rispostaSportelliCUP(list, null, toHTMLElement, null);
	}
}

function rispostaSportelliCUP(list) {
	var icona_cup_attesa;
	btn=arrayCB[0];
	toHTMLElement=arrayCB[1]; 
	overlayArray=arrayCB[2];
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(5);
			if (item.PNTP_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.PNTP_CAP='';
			}
			icona_cup_attesa = '';
			if (item.INDICEATTESA==0) {
				icona_cup_attesa='_green';
			}
			if (item.INDICEATTESA==1) {
				icona_cup_attesa='_orange';
			}
			if (item.INDICEATTESA==2) {
				icona_cup_attesa='_red';
			}
			pulisciNull(item);
			var rilevato='';
			if (item.DATARILEVAMENTO!='') {
				rilevato='<div class="rilevato">* rilevato il '+item.DATARILEVAMENTO+' alle '+item.ORARILEVAMENTO+'</div>';
			}
			if (item.PNTP_NUMERO_CIVICO) {item.PNTP_NUMERO_CIVICO=', '+item.PNTP_NUMERO_CIVICO;}
			newItem[0]=icona_cup+'<h4 class="cup">'+item.PNTP_DESCRIZIONE+'</h4>'+"<br />"+item.PNTP_INDIRIZZO+item.PNTP_NUMERO_CIVICO+brCAP+item.PNTP_CAP+" - "+item.PNTP_COMUNE+"<br /><div class='orariobaloon'>"+item.PNTP_ORARIO+"</div><div class='TDA_"+item.INDICEATTESA+"'>Utenti in coda:"+item.UTENTIINCODA+"<br />Tempo medio di attesa:"+item.TEMPOATTESA+"</div>"+rilevato;
			newItem[1]=item.PNTP_COORDX;
			newItem[2]=item.PNTP_COORDY;
			newItem[3]=togliVirgole(item.PNTP_INDIRIZZO+item.PNTP_NUMERO_CIVICO)+", "+item.PNTP_COMUNE+" "+item.PNTP_CAP;
			newItem[4]='/template/images/markers/icona_cup'+icona_cup_attesa+'.gif';
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_cup.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
}

function cercaFarmacie(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	arrayCB = [btn, toHTMLElement, overlayArray];
	mostra('loading');
	getFarmacieAsync(query);
}

function cercaFarmacieDiTurno(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	arrayCB = [btn, toHTMLElement, overlayArray];
	mostra('loading');
	getFarmacieDiTurnoAsync(query);
}

function cercaFarmacieID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		arrayCB = [null, toHTMLElement, null];
		mostra('loading');
		getFarmacieIDAsync(id);
	}
}

function rispostaFarmacie(list) {
	btn=arrayCB[0];
	toHTMLElement=arrayCB[1]; 
	overlayArray=arrayCB[2];
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.FARM_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.FARM_CAP='';
			}
			if (item.FTRN_DATA_INIZIO_TURNO) {
				var turno = "<b>La farmacia è di turno:<br />dal "+item.FTRN_DATA_INIZIO_TURNO+"<br />al "+item.FTRN_DATA_FINE_TURNO+"<br />con orario: "+item.ORAR_DESCRIZIONE+"<br /></b>";
			} else {
				var turno = "";				
			}
			pulisciNull(item);
			if (item.FARM_LUOGO_PRESSO) {item.FARM_LUOGO_PRESSO=item.FARM_LUOGO_PRESSO+'<br />';}			
			if (item.FARM_NUMERO_CIVICO) {item.FARM_NUMERO_CIVICO=', '+item.FARM_NUMERO_CIVICO;}
			if (item.FARM_HTTP_WWW) {item.FARM_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.FARM_HTTP_WWW+'">'+item.FARM_HTTP_WWW+'</a><br />';}
			if (item.FARM_ORARIO) {item.FARM_ORARIO = "<div class='orariobaloon'>"+item.FARM_ORARIO+'</div>';}
			if (item.FARM_ATTIVA_CUP=='ATTIVA') {attiva='La farmacia effettua servizio CUP<br />';} else {attiva='';}
			if (item.FARM_TELEFONO) {telfax = "Telefono: "+item.FARM_TELEFONO;} else {telfax='';}
			if ((item.FARM_TELEFONO)&&(item.FARM_FAX)) {telfax = telfax + ' - ';}
			if (item.FARM_FAX) {telfax = telfax + "Fax: "+item.FARM_FAX;}
			if ((item.FARM_TELEFONO)||(item.FARM_FAX)) {telfax = telfax + "<br />";}
			if (item.FARM_E_MAIL) {item.FARM_E_MAIL='<a href="mailto:'+item.FARM_E_MAIL+'">'+item.FARM_E_MAIL+'</a><br />';}
			newItem[0]=icona_farmacia+'<h4 class="farmacia">'+item.FARM_DESCRIZIONE+'</h4>'+"<br />"+
				item.FARM_INDIRIZZO+
				item.FARM_NUMERO_CIVICO+
				brCAP+item.FARM_CAP+" - "+
				item.FARM_COMUNE+"<br />" +
				item.FARM_LUOGO_PRESSO +
				telfax + 
				item.FARM_E_MAIL +
				item.FARM_HTTP_WWW +
				item.FARM_ORARIO +
				attiva +
				turno;
			newItem[1]=item.FARM_COORDX;
			newItem[2]=item.FARM_COORDY;
			newItem[3]=togliVirgole(item.FARM_INDIRIZZO+item.FARM_NUMERO_CIVICO)+", "+item.FARM_COMUNE+" "+item.FARM_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_farmacia.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	if (btn) {btn.disabled=false;}
	enableZoom=true;
	nascondi('loading');
}
	
function cercaProntoSoccorso(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getProntoSoccorso(query);
	rispostaProntoSoccorso(list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}

function cercaProntoSoccorsoID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		var list=getProntoSoccorsoID(id);
		rispostaProntoSoccorso(list, null, toHTMLElement, null);
	}
}

function rispostaProntoSoccorso(list, btn, toHTMLElement, overlayArray) {
	if( list.length>0 ) {
		var colori = new Array(4);
		colori[0]='Codice Bianco - ';
		colori[1]='Codice Verde - ';
		colori[2]='Codice Giallo - ';
		colori[3]='Codice Rosso - ';
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			pulisciNull(item);
			if (item.PRSO_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.PRSO_CAP='';
			}
			var TDA='';
			var rilevato='';
			if (!(item.PRSO_ORARIO)) {
				item.PRSO_ORARIO='';
			} else {
				item.PRSO_ORARIO="<div class='orariobaloon'>"+item.PRSO_ORARIO+'</div>';
			}
			if (item.CODICE_COLORE) {
				for( k=0;k<item.CODICE_COLORE.length;k++) {
					TDA=TDA+'<div class="PSCOL_'+item.CODICE_COLORE[k]+'">'+colori[item.CODICE_COLORE[k]]+'Tempo medio di attesa: '+item.TEMPOATTESA[k]+' min - Utenti in coda: '+item.UTENTIINCODA[k]+'</div>';
					if (item.DATARILEVAMENTO) {
						rilevato='<div class="rilevato">* rilevato il '+item.DATARILEVAMENTO[k]+' alle '+item.ORARILEVAMENTO[k]+'</div>';
					}
				}	
			}
			if (item.PRSO_HTTP_WWW) {item.PRSO_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.PRSO_HTTP_WWW+'">'+item.PRSO_HTTP_WWW+'</a><br />';}
			if (item.PRSO_TELEFONO) {telfax = "Telefono: "+item.PRSO_TELEFONO;} else {telfax='';}
			if ((item.PRSO_TELEFONO)&&(item.PRSO_FAX)) {telfax = telfax + ' - ';}
			if (item.PRSO_FAX) {telfax = telfax + "Fax: "+item.PRSO_FAX;}
			if ((item.PRSO_TELEFONO)||(item.PRSO_FAX)) {telfax = telfax + "<br />";}
			if (item.PRSO_E_MAIL) {item.PRSO_E_MAIL='<a href="mailto:'+item.PRSO_E_MAIL+'">'+item.PRSO_E_MAIL+'</a><br />';}
			if (item.PRSO_NUMERO_CIVICO) {item.PRSO_NUMERO_CIVICO=', '+item.PRSO_NUMERO_CIVICO;}
			newItem[0]=icona_pronto_soccorso+'<h4 class="prontosoccorso">'+item.PRSO_DESCRIZIONE+'</h4>'+"<br />"+
				item.PRSO_INDIRIZZO+
				item.PRSO_NUMERO_CIVICO+
				brCAP+item.PRSO_CAP+" - "+
				item.PRSO_COMUNE+"<br />"+
				telfax+
				item.PRSO_E_MAIL+
				item.PRSO_HTTP_WWW+
				item.PRSO_ORARIO+
				TDA+
				rilevato;
			newItem[1]=item.PRSO_COORDX;
			newItem[2]=item.PRSO_COORDY;
			newItem[3]=togliVirgole(item.PRSO_INDIRIZZO+item.PRSO_NUMERO_CIVICO)+", "+item.PRSO_COMUNE+" "+item.PRSO_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_pronto_soccorso.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	enableZoom=true;
}

function cercaGuardiaMedica(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getGuardiaMedica(query);
	rispostaGuardiaMedica (list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}
	
function cercaGuardiaMedicaID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		var list=getGuardiaMedicaID(id);
		rispostaGuardiaMedica (list, null, toHTMLElement, null);
	}
}

function rispostaGuardiaMedica (list, btn, toHTMLElement, overlayArray) {
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.GMED_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.GMED_CAP='';
			}
			pulisciNull(item);
			if (item.GMED_ORARIO) {item.GMED_ORARIO = "<div class='orariobaloon'>"+item.GMED_ORARIO+'</div>';}
			if (item.GMED_LUOGO_PRESSO) {item.GMED_LUOGO_PRESSO=item.GMED_LUOGO_PRESSO+'<br />';}
			if (item.GMED_NUMERO_CIVICO) {item.GMED_NUMERO_CIVICO=', '+item.GMED_NUMERO_CIVICO;}
			if (item.GMED_HTTP_WWW) {item.GMED_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.GMED_HTTP_WWW+'">'+item.GMED_HTTP_WWW+'</a><br />';}
			if (item.GMED_TELEFONO) {telfax = "Telefono: "+item.GMED_TELEFONO;} else {telfax='';}
			if ((item.GMED_TELEFONO)&&(item.GMED_FAX)) {telfax = telfax + ' - ';}
			if (item.GMED_FAX) {telfax = telfax + "Fax: "+item.GMED_FAX;}
			if ((item.GMED_TELEFONO)||(item.GMED_FAX)) {telfax = telfax + "<br />";}
			if (item.GMED_E_MAIL) {item.GMED_E_MAIL='<a href="mailto:'+item.GMED_E_MAIL+'">'+item.GMED_E_MAIL+'</a><br />';}			
			newItem[0]=icona_guardia_medica+'<h4 class="guardiamedica">'+item.GMED_DESCRIZIONE+'</h4>'+"<br />"+
				item.GMED_INDIRIZZO+
				item.GMED_NUMERO_CIVICO+
				brCAP+item.GMED_CAP+" - "+
				item.GMED_COMUNE+"<br />"+
				item.GMED_LUOGO_PRESSO +
				telfax + 
				item.GMED_E_MAIL +
				item.GMED_HTTP_WWW+
				item.GMED_ORARIO;
			newItem[1]=item.GMED_COORDX;
			newItem[2]=item.GMED_COORDY;
			newItem[3]=togliVirgole(item.GMED_INDIRIZZO+item.GMED_NUMERO_CIVICO)+", "+item.GMED_COMUNE+" "+item.GMED_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_guardia_medica.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	enableZoom=true;
}

function cercaSportelliDistrettuali(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getSportelliDistrettuali(query);
	rispostaSportelliDistrettuali(list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}
	
function cercaSportelliDistrettualiID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		var list=getSportelliDistrettualiID(id);
		rispostaSportelliDistrettuali(list, null, toHTMLElement, null);
	}
}

function rispostaSportelliDistrettuali(list, btn, toHTMLElement, overlayArray) {
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.SPDS_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.SPDS_CAP='';
			}
			pulisciNull(item);
			if (item.SPDS_ORARIO) {item.SPDS_ORARIO = "<div class='orariobaloon'>"+item.SPDS_ORARIO+'</div>';}
			if (item.SPDS_LUOGO_PRESSO) {item.SPDS_LUOGO_PRESSO=item.SPDS_LUOGO_PRESSO+'<br />';}
			if (item.SPDS_NUMERO_CIVICO) {item.SPDS_NUMERO_CIVICO=', '+item.SPDS_NUMERO_CIVICO;}
			if (item.SPDS_HTTP_WWW) {item.SPDS_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.SPDS_HTTP_WWW+'">'+item.SPDS_HTTP_WWW+'</a><br />';}
			if (item.SPDS_TELEFONO) {telfax = "Telefono: "+item.SPDS_TELEFONO;} else {telfax='';}
			if ((item.SPDS_TELEFONO)&&(item.SPDS_FAX)) {telfax = telfax + ' - ';}
			if (item.SPDS_FAX) {telfax = telfax + "Fax: "+item.SPDS_FAX;}
			if ((item.SPDS_TELEFONO)||(item.SPDS_FAX)) {telfax = telfax + "<br />";}
			if (item.SPDS_E_MAIL) {item.SPDS_E_MAIL='<a href="mailto:'+item.SPDS_E_MAIL+'">'+item.SPDS_E_MAIL+'</a><br />';}			
			newItem[0]=icona_altri_sportelli + '<br /><h4 class="sportellidistrettuali">'+item.SPDS_DESCRIZIONE+"</h4><br />"+
				item.SPDS_INDIRIZZO+
				item.SPDS_NUMERO_CIVICO+
				brCAP+item.SPDS_CAP+" - "+
				item.SPDS_COMUNE+"<br />"+
				item.SPDS_LUOGO_PRESSO +
				telfax + 
				item.SPDS_E_MAIL +
				item.SPDS_HTTP_WWW+
				item.SPDS_ORARIO;
			newItem[1]=item.SPDS_COORDX;
			newItem[2]=item.SPDS_COORDY;
			newItem[3]=togliVirgole(item.SPDS_INDIRIZZO+item.SPDS_NUMERO_CIVICO)+", "+item.SPDS_COMUNE+" "+item.SPDS_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_altri_sportelli.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	enableZoom=true;
}

function cercaSportelliSociali(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getSportelliSociali(query);
	rispostaSportelliSociali(list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}
	
function cercaSportelliSocialiID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		var list=getSportelliSocialiID(id);
		rispostaSportelliSociali(list, null, toHTMLElement, null);
	}
}

function rispostaSportelliSociali(list, btn, toHTMLElement, overlayArray) {
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.SPSC_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.SPSC_CAP='';
			}
			pulisciNull(item);
			if (item.SPSC_ORARIO) {item.SPSC_ORARIO = "<div class='orariobaloon'>"+item.SPSC_ORARIO+'</div>';}
			if (item.SPSC_LUOGO_PRESSO) {item.SPSC_LUOGO_PRESSO=item.SPSC_LUOGO_PRESSO+'<br />';}
			if (item.SPSC_NUMERO_CIVICO) {item.SPSC_NUMERO_CIVICO=', '+item.SPSC_NUMERO_CIVICO;}
			if (item.SPSC_HTTP_WWW) {item.SPSC_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.SPSC_HTTP_WWW+'">'+item.SPSC_HTTP_WWW+'</a><br />';}
			if (item.SPSC_TELEFONO) {telfax = "Telefono: "+item.SPSC_TELEFONO;} else {telfax='';}
			if ((item.SPSC_TELEFONO)&&(item.SPSC_FAX)) {telfax = telfax + ' - ';}
			if (item.SPSC_FAX) {telfax = telfax + "Fax: "+item.SPSC_FAX;}
			if ((item.SPSC_TELEFONO)||(item.SPSC_FAX)) {telfax = telfax + "<br />";}
			if (item.SPSC_E_MAIL) {item.SPSC_E_MAIL='<a href="mailto:'+item.SPSC_E_MAIL+'">'+item.SPSC_E_MAIL+'</a><br />';}			
			newItem[0]=icona_altri_sportelli + '<h4 class="sportellisociali">'+item.SPSC_DESCRIZIONE+"</h4><br />"+
				item.SPSC_INDIRIZZO+
				item.SPSC_NUMERO_CIVICO+
				brCAP+item.SPSC_CAP+" - "+
				item.SPSC_COMUNE+"<br />"+
				item.SPSC_LUOGO_PRESSO +
				telfax + 
				item.SPSC_E_MAIL +
				item.SPSC_HTTP_WWW+
				item.SPSC_ORARIO;
			newItem[1]=item.SPSC_COORDX;
			newItem[2]=item.SPSC_COORDY;
			newItem[3]=togliVirgole(item.SPSC_INDIRIZZO+item.SPSC_NUMERO_CIVICO)+", "+item.SPSC_COMUNE+" "+item.SPSC_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_altri_sportelli.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	enableZoom=true;
}

function cercaStruttureErogazione(btn, query, toHTMLElement, clear, overlayArray) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	var list=getStruttureErogazione(query);
	rispostaStruttureErogazione (list, btn, toHTMLElement, overlayArray);
	if (btn) {btn.disabled=false;}
}
	
function cercaStruttureErogazioneID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		var list=getStruttureErogazioneID(id);
		rispostaStruttureErogazione (list, null, toHTMLElement, null);
	}
}

function rispostaStruttureErogazione (list, btn, toHTMLElement, overlayArray) {
	if( list.length>0 ) {
		var i;
		listHTML = new Array(list.length); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.STER_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.STER_CAP='';
			}
			pulisciNull(item);			
			if (item.STER_LUOGO_PRESSO) {item.STER_LUOGO_PRESSO=item.STER_LUOGO_PRESSO+'<br />';}
			if (item.STER_NUMERO_CIVICO) {item.STER_NUMERO_CIVICO=', '+item.STER_NUMERO_CIVICO;}
			if (item.STER_HTTP_WWW) {item.STER_HTTP_WWW='<a  onkeypress="if (isReturn(event)) {window.open(this.href);return false;}" onclick="window.open(this.href);return false" href="http://'+item.STER_HTTP_WWW+'">'+item.STER_HTTP_WWW+'</a><br />';}
			if (item.STER_TELEFONO) {telfax = "Telefono: "+item.STER_TELEFONO;} else {telfax='';}
			if ((item.STER_TELEFONO)&&(item.STER_FAX)) {telfax = telfax + ' - ';}
			if (item.STER_FAX) {telfax = telfax + "Fax: "+item.STER_FAX;}
			if ((item.STER_TELEFONO)||(item.STER_FAX)) {telfax = telfax + "<br />";}
			if (item.STER_E_MAIL) {item.STER_E_MAIL='<a href="mailto:'+item.STER_E_MAIL+'">'+item.STER_E_MAIL+'</a><br />';}
			newItem[0]=icona_strutture_erogazione+'<h4 class="struttureerogazione">'+item.STER_DESCRIZIONE+"</h4><br />"+
				item.STER_INDIRIZZO+
				item.STER_NUMERO_CIVICO+
				brCAP+item.STER_CAP+" - "+
				item.STER_COMUNE+"<br />"+
				item.STER_LUOGO_PRESSO+
				telfax + 
				item.STER_E_MAIL +
				item.STER_HTTP_WWW;
			newItem[1]=item.STER_COORDX;
			newItem[2]=item.STER_COORDY;
			newItem[3]=togliVirgole(item.STER_INDIRIZZO+item.STER_NUMERO_CIVICO)+", "+item.STER_COMUNE+" "+item.STER_CAP;
			listHTML[i] = newItem;
		}
		traccia(listHTML, toHTMLElement, '/template/images/markers/icona_altre_strutture.gif', overlayArray) ;
		centra(listHTML);
	} else {
		alert('La ricerca non ha dato risultati');
	}
	enableZoom=true;
}

function cercaMedici(btn, query, toHTMLElement, clear, overlayArray, tipo) {
	if (btn) {btn.disabled=true;}
	if (clear) {clearOverlays();}
	arrayCB = [btn, toHTMLElement, overlayArray];
	mostra('loading');
	getMediciAsync(query, tipo);
}

function cercaMediciID(id, toHTMLElement) {
	if (id) {
		clearOverlays();
		arrayCB = [null, toHTMLElement, null];
		mostra('loading');
		getMediciAsyncID(id);
	}
}

function cercaMediciNCP_ID(ncp_id, toHTMLElement, tipo) {
	if (ncp_id) {
		clearOverlays();
		arrayCB = [null, toHTMLElement, null];
		mostra('loading');
		getMediciAsyncNCP_ID(ncp_id, tipo);
	}
}

function rispostaMedici(list) {
	btn=arrayCB[0];
	toHTMLElement=arrayCB[1]; 
	overlayArray=arrayCB[2];
	if( list.length>0 ) {
		var i;
		var k=0;
		listHTML = new Array(); 	
		for( i=0;i<list.length;i++) {
			var item = list[i];
			newItem = new Array(4);
			if (item.AMME_AMB_CAP) {
				brCAP='<br />';				
			} else {
				brCAP='';				
				item.AMME_AMB_CAP='';
			}
			if (!item.AMME_AMB_ORARIO) {
				item.AMME_AMB_ORARIO='';				
			}
			pulisciNull(item);
			if (item.NCP_ID) {ncp = '<a href="/index.php?p=dettagliNCP&amp;ID='+item.NCP_ID+'&amp;AMME_ID='+item.AMME_ID+'">'+item.NCP_DENOMINAZIONE+'</a><br />';} else {ncp='';}
			if (item.AMME_AMB_NUMERO_CIVICO) {item.AMME_AMB_NUMERO_CIVICO=', '+item.AMME_AMB_NUMERO_CIVICO;}
			newItem[0]=icona_medici+'<h4 class="medico">'+item.AMME_MED_COGNOME+" "+item.AMME_MED_NOME+'</h4>'+"<br />"+item.AMME_AMB_INDIRIZZO+item.AMME_AMB_NUMERO_CIVICO+brCAP+item.AMME_AMB_CAP+" - "+item.AMME_AMB_COMUNE+"<br />"+ncp+"<div class='orariobaloon'>"+item.AMME_AMB_ORARIO+'</div>';
			newItem[1]=item.AMME_AMB_COORDX;
			newItem[2]=item.AMME_AMB_COORDY;
			newItem[3]=togliVirgole(item.AMME_AMB_INDIRIZZO+item.AMME_AMB_NUMERO_CIVICO)+", "+item.AMME_AMB_COMUNE+" "+item.AMME_AMB_CAP;
			listHTML[i] = newItem;
//			if ((list.length==1) && (!((item.AMME_AMB_COORDX) && (item.AMME_AMB_COORDY)))) {
//				alert("Impossibile individuare la posizione di: " + item.AMME_MED_COGNOME+" "+item.AMME_MED_NOME + ' ' +newItem[3]);
//			}
		}
		if (listHTML.length>0) {
			
			traccia(listHTML, toHTMLElement, '/template/images/markers/icona_medici.gif', overlayArray) ;
			centra(listHTML);
		}
	} else {
		alert('La ricerca non ha dato risultati');
	}
	if (btn) {btn.disabled=false;}	
	enableZoom=true;
	nascondi('loading');
}	
	
function cercaVicino(btn, vicino_a, divIndicazioni) {
	clearOverlays();
	if (divIndicazioni) {divIndicazioni.innerHTML='';}
	var address=vicino_a+', BOLOGNA';
	if (address) {
		geocoder = new GClientGeocoder();
		geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					divIndicazioni.innerHTML=msgNotFound;
				} else {
					map.setCenter(point, 15);
					var marker = new GMarker(point);
					map.addOverlay(marker);
					marker.openInfoWindowHtml(vicino_a);
				}
			}
		);
	}	
}

function cercaItinerario(btn, itinerario_da, itinerario_a, div, auto) {
	if (btn) {btn.disabled=true;}
	clearOverlays();
	myTravelMode=0;
	if (!auto) {
		try {myTravelMode=G_TRAVEL_MODE_WALKING;} catch (err){}
	} else {
		try {myTravelMode=G_TRAVEL_MODE_DRIVING;} catch (err){}
	}
	if ((itinerario_da)&&(itinerario_a)) {
		directions = new GDirections(map, div);
		GEvent.addListener(directions, "error", function() {
	handleErrors( div );
});
		directions.load("from: "+itinerario_da+', BOLOGNA'+" to: "+itinerario_a+', BOLOGNA',{travelMode:myTravelMode});
	}
	if (btn) {btn.disabled=false;}
}

function traccia(list, toHTMLElement, customIcon, overlayArray) {
	var i;
	for( i=0;i<list.length;i++) {
		var item=list[i];
		if ((item[1]) && (item[2])) {
			var x = item[1].replace(',','.');
			var y = item[2].replace(',','.');
			var point = new GLatLng( x , y );
			if (item.length>=5) {
				customIcon=item[4];
			}
			var marker = makeMarker(point, '<div class="baloon">'+item[0]+'</div>', toHTMLElement, item[3], customIcon, overlayArray);
			bounds.extend(new GLatLng(x, y));
			boundsMod = true;
		}
	}
}

function centra(list, zoom) {
//	if (list.length==1) {
//		if (!(zoom)) zoom = 14;
//		//centro sul primo e zoom grande
//	}	
//	if (list.length>1) {
//		if (!(zoom)) zoom = 11;
//		//centro sul primo e zoom piccolo
//	}	
//	var x = list[0][1].replace(',','.');
//	var y = list[0][2].replace(',','.');
//	var point = new GLatLng( x , y );
//	map.setCenter(point, zoom);
	if ((boundsMod) && (enableZoom)) {
		if (zoom) {
			map.setZoom(zoom);
		} else {
			map.setZoom(map.getBoundsZoomLevel(bounds));
		}
		map.setCenter(bounds.getCenter());	
	}
}

function togliVirgole(str) {
	if (str) return str.replace(/,/g, "");
	return "";
}

function nascondiMarkers(markersArray) {
	for( i=0;i<markersArray.length;i++) {
		map.removeOverlay(markersArray[i]);
	}
}

function mostraMarkers(markersArray) {
	for( i=0;i<markersArray.length;i++) {
		map.addOverlay(markersArray[i]);
	}
}

function togleOverlay(markersArray, mostra, cercaFunction, tipo) {
	if (mostra) {
		if (markersArray.length<=0) {
			enableZoom=false;
			if (tipo) {
				cercaFunction(null, '', $('itinerario_a'), false, markersArray, tipo);
			} else {
				cercaFunction(null, '', $('itinerario_a'), false, markersArray);
			}
		} else {
		}
		mostraMarkers(markersArray);
	} else {
		nascondiMarkers(markersArray);
	}
}

function pulisciNull(item) {
	for (var campo in item) {if (item[campo] == null) {item[campo]=''}}
}


function handleErrors(div){
	   if (directions.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
		div.innerHTML=msgNotFound;
	   else if (directions.getStatus().code == G_GEO_SERVER_ERROR)
	     div.innerHTML="A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + directions.getStatus().code;
	   
	   else if (directions.getStatus().code == G_GEO_MISSING_QUERY)
	     div.innerHTML="The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + directions.getStatus().code;

	//   else if (directions.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + directions.getStatus().code);
	     
	   else if (directions.getStatus().code == G_GEO_BAD_KEY)
	     div.innerHTML="The given key is either invalid or does not match the domain for which it was given. \n Error code: " + directions.getStatus().code;

	   else if (directions.getStatus().code == G_GEO_BAD_REQUEST)
	     div.innerHTML="A directions request could not be successfully parsed.\n Error code: " + directions.getStatus().code;
	    
	   else div.innerHTML="An unknown error occurred.";
	   
	}

