var ajax_main_script = "ajax.php";
var picking_zones_streets__is_filled = false;		// dice se la lista di strade di una zona e' stata caricata durante questa sessione: function picking_zones_streets()


/*
	Effettua la chiamata AJAX utilizzando JQuery e JSON.
	Autore:	Cristian Zuddas
	Data:	2007-11-19
	
	Params:
		query_str			string			Parametri da passare allo script che gestisce le risposte AJAX
		is_admin			bool			TRUE significa che questa funzione e' stata richiamata dal CMS
		func_success		function		Funzione da richiamare in caso di successo; deve avere un parametro nel quale viene inserito il risultato JSON della richiesta. Esempio: function(oResponse) {...}
		func_error			function		Opzionale, funzione da richiamare in caso di errore. Se viene passato un valore il cui tipo non e' "function", ne viene presa una di default
		func_complete		function		Opzionale, funzione da richiamare una volta completata la richiesta, sia in caso di successo sia in caso di errore. Se viene passato un valore il cui tipo non e' "function", ne viene presa una di default
	
	Note:
		Deve essere definita una variabile "ajax_main_script" (string) che contiene il nome/URL
		dello script gestore delle risposte.
*/
function doAjax(query_str, is_admin, func_success, func_error, func_complete) {
	if (typeof func_success=='function') {
		var url = ajax_main_script;
		if (is_admin) {
			url = '../'+url;
		}
		
		if (typeof func_error!='function') {
			func_error = function() {
										alert("Si e' verificato un errore durante il caricamento dei dati. Si consiglia di riprovare in un secondo momento.");
									};
		}
		
		if (typeof func_complete!='function') {
			func_complete = function() {};
		}
		
		if (typeof query_str!='string')
			query_str = '';
		
		$.ajax({
			type: "POST",
			url: url,
			data: query_str,
			dataType: "json",
			success: func_success,
			error: func_error,
			complete: func_complete
		});
	}
	else {alert('doAjax error: success function is not defined.');}
}

function getE(id) {
	return document.getElementById(id);
}

mw=null;
function openWindowDimBars(FileName,w,h,barre) {
	myWindow=window.open(FileName,'','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars='+barre+',resizable=0,top=10,left=10,width='+w+',height='+h);
	return myWindow;
}

var testresults;
function checkemail(email_addr) {
	var filter=/^[\'+\\./0-9A-Z^_\`a-z{|}~\-]+@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9_\-]+){1,3}$/i;
	if (filter.test(email_addr)) {
		testresults = true;
	}
	else{
		testresults = false;
	}
	return(testresults);
}

/*
	Inserisce dinamicamente un filmato Flash.
	Per scavalcare il blocco di IE 6, che altrimenti ne richiede l'attivazione manuale.
*/
function print_flash_movie(nomefile, width, height, version) {
	var str;
	
	str = ('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + version + '" ID="ticker_news" WIDTH="' + width + '" HEIGHT="' + height + '">');
	str = str + ('<PARAM NAME=movie VALUE="' + nomefile + '">');
	str = str + ('<PARAM NAME=quality VALUE=high>');
	str = str + ('<embed src="' + nomefile + '" quality=high ');
	str = str + ('swLiveConnect="FALSE" WIDTH="' + width + '" HEIGHT="' + height + '" border="0" TYPE="application/x-shockwave-flash"');
	str = str + ('PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></embed></OBJECT>');
	
	document.write(str);
}

function isFunction(a) {
	return typeof a == 'function';
}

function isObject(a) {
	return (a && typeof a == 'object') || isFunction(a);
}

function isArray(a) {
	return isObject(a) && a.constructor == Array;
}

// controlla se una stringa rappresenta una password valida; solo alfanumerica e con un numero minimo e massimo di caratteri
function is_valid_password(str, min_chars, max_chars) {
	var filter=/^[a-z0-9]{1,}$/i;
	if (filter.test(str) && str.length>=min_chars) {
		if (max_chars>=min_chars) {
			if (str.length<=max_chars) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return true;
		}
	}
	else {
		return false;
	}
}

// controlla se una stringa rappresenta un numero intero
function is_numeric_str(str) {
	var filter=/^[0-9]{1,}$/i;
	if (filter.test(str)) {
		return true;
	}
	else {
		return false;
	}
}

function confirmLink(theLink, confirmMsg) {
	if (typeof(window.opera)!='undefined') {
		return true;
	}
	
	var is_confirmed = confirm(confirmMsg);
	return is_confirmed;
}

// DeVizia - news: visualizza la foto delle ultime 5 news della prima pagina di archivio
function last5news_img__mouseover(id) {
	if (isObject(getE('last5news_img_'+id))) {
		for (var i=3; i<=7; i++) {		// scorre le news dalla 3 alla 7 di questa pagina
			if (isObject(getE('last5news_img_'+i))) {
				if (i==id) {
					getE('last5news_img_'+i).className = '';
				}
				else {
					getE('last5news_img_'+i).className = 'hidden';
				}
			}
		}
	}
	else {		// se la foto non esiste le nasconde tutte
		for (var i=3; i<=7; i++) {		// scorre le news dalla 3 alla 7 di questa pagina
			if (isObject(getE('last5news_img_'+i))) {
				getE('last5news_img_'+i).className = 'hidden';
			}
		}
	}
}

// apre e chiude le FAQ
function explode_faq(id) {
	if (isObject(getE('faq_domanda'+id))) {
		if (getE('faq_risposta'+id).className=='risposta_hide') {
			getE('faq_risposta'+id).className = 'risposta';
			getE('faq_link'+id).innerHTML = 'contrai -';
		}
		else {
			getE('faq_risposta'+id).className = 'risposta_hide';
			getE('faq_link'+id).innerHTML = 'espandi +';
		}
	}
	
	return false;
}

// effettua una ricerca nella pagina delle zone di raccolta
function picking_zones_search(is_newsletter) {
	if (getE('zone_via').value!='' && getE('zone_via').value.length>0) {
		doAjax(
				'a_ajax=1&zone_via='+encodeURIComponent(getE('zone_via').value), false, 
				function(oResponse) {
					if (parseInt(oResponse)==1) {
						getE('box_risultati').innerHTML = '<div><p><br />Se vuoi sapere a quale zona di raccolta appartieni, digita il nome della tua strada di residenza nel campo qua sopra e premi il tasto <strong>cerca</strong>. Verranno visualizzate una o pi&ugrave; strade rispondenti al criterio di ricerca impostato, e per ognuna verr&agrave; indicata la zona corrispondente.</p></div>';
						getE('box_risultati').className = 'box_risultati';
					}
					else if (parseInt(oResponse)==2) {
						getE('box_risultati').innerHTML = '<div><p><br />La ricerca per la strada <strong>'+getE('zone_via').value+'</strong> non ha prodotto nessun risultato.</p><p>Si consiglia di riprovare impostando un criterio pi&ugrave; generico, ad esempio anzich&eacute; scrivere <strong>Via d\'Annunzio</strong> provare a scrivere <strong>Via Annunzio</strong> oppure <strong>Annunzio</strong>.</p></div>';
						getE('box_risultati').className = 'box_risultati';
					}
					else {
						var html = '';
						for (var i=0; i<oResponse.length; i++) {
							var this_link = '<a href="picking_zones.php?page_id='+oResponse[i].id+'">';		// link nella sezione "Zone di raccolta"
							if (is_newsletter) {		// link nella newsletter
								var this_link = '<a href="newsletter.php?nl_zona='+oResponse[i].id+'&amp;type=search&amp;zone_via='+encodeURIComponent(getE('zone_via').value)+'#search_results" onclick="return newsletter_click_street('+oResponse[i].id+');">';
							}
							
							html +=	'<div class="zone_item">'+
										'<div class="via">'+this_link+oResponse[i].strada+'</a></div>'+
										'<div class="zona_nome '+oResponse[i].className+'">'+oResponse[i].zona+'</div>'+
										'<div class="clear"></div>'+
									'</div>';
						}
						
						getE('box_risultati').innerHTML = html;
						getE('box_risultati').className = 'box_risultati';
					}
				}
		);
	}
	else {
		getE('box_risultati').innerHTML = '<div><p><br />Se vuoi sapere a quale zona di raccolta appartieni, digita il nome della tua strada di residenza nel campo qua sopra e premi il tasto <strong>cerca</strong>. Verranno visualizzate una o pi&ugrave; strade rispondenti al criterio di ricerca impostato, e per ognuna verr&agrave; indicata la zona corrispondente.</p></div>';
		getE('box_risultati').className = 'box_risultati';
	}
	
	return false;
}

// visualizza la lista di strade associate ad una particolare zona
function picking_zones_streets(id) {
	if (parseInt(id)>0 && getE('zona_elenco_vie').className=='hidden') {
		if (!picking_zones_streets__is_filled) {
			doAjax(
					'a_ajax=2&page_id='+id, false, 
					function(oResponse) {
						var html = '<ul>';
						for (var i=0; i<oResponse.length; i++) {
							html +=	'<li>'+oResponse[i]+'</li>';
						}
						
						getE('zona_elenco_vie').innerHTML = html+'</ul>';
						getE('zona_elenco_vie').className = 'zona_elenco_vie';
						getE('view_streets_link').innerHTML = 'Nascondi la lista delle strade';
						picking_zones_streets__is_filled = true;
					}
			);
		}
		else {
			getE('zona_elenco_vie').className = 'zona_elenco_vie';
			getE('view_streets_link').innerHTML = 'Nascondi la lista delle strade';
		}
	}
	else if (getE('zona_elenco_vie').className=='zona_elenco_vie') {
		getE('zona_elenco_vie').className = 'hidden';
		getE('view_streets_link').innerHTML = 'Mostra tutte le strade';
	}
	
	return false;
}

// google maps in pagina "Contatti"
function goog_maps_contacts() {
	if (GBrowserIsCompatible() && isObject(getE('mappa'))) {
		var map = new GMap2(getE('mappa'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		map.setCenter(new GLatLng(39.2580, 9.209), 14);		// centramento della mappa un po' piu' un alto rispetto al marker, per evitare sovraposizione dei tasti sull'InfoWindow
		var marker = new GMarker(new GLatLng(39.254589, 9.204907));			// posizione del marker (posizione dello stabilimento)
		
		GEvent.addListener(marker, "click",	function() {
												if (map.getZoom()<17) {
													map.setCenter(this.getLatLng(), map.getZoom()+1);
												}
											}
		);
		
		map.addOverlay(marker);
		marker.openInfoWindowHtml('<font face="Verdana"><strong>De Vizia Transfer S.p.A.<br />Sede di Quartu Sant\'Elena</strong><br /><br />Loc. Sa Serrixedda<br />Prolungamento Via Marconi, 768<br />09045 Quartu Sant\'Elena (CA)</font>', {'noCloseOnClick': true});
	}
}

// google maps in pagina "Ecocentri"
function goog_maps_ecocentres(lat, lng, html) {
	if (GBrowserIsCompatible() && isObject(getE('mappa'))) {
		var map = new GMap2(getE('mappa'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		
		map.setCenter(new GLatLng(parseFloat(lat)+0.015, parseFloat(lng)), 13);		// centramento della mappa un po' piu' un alto rispetto al marker, per evitare sovraposizione dei tasti sull'InfoWindow
		var marker = new GMarker(new GLatLng(parseFloat(lat), parseFloat(lng)));			// posizione del marker (posizione dello stabilimento)
		
		GEvent.addListener(marker, "click",	function() {
												if (map.getZoom()<17) {
													map.setCenter(this.getLatLng(), map.getZoom()+1);
												}
											}
		);
		
		map.addOverlay(marker);
		marker.openInfoWindowHtml(html, {'noCloseOnClick': true, "maxWidth": 250});
	}
}

// registrazione alla newsletter - impostazione automatica della zona di raccolta all'onClick sul nome della strada trovata col motore di ricerca
function newsletter_click_street(id) {
	if (parseInt(id)>0 && isObject(getE('nl_zona'))) {
		if (getE('nl_zona').options.length>0) {
			for (var i=0; i<getE('nl_zona').options.length; i++) {
				if (parseInt(getE('nl_zona').options[i].value)==parseInt(id)) {
					getE('nl_zona').options[i].selected = true;
					break;
				}
			}
		}
	}
	
	return false;
}

// registrazione alla newsletter - mostra o nasconde i campi di inserimenti di email e numero di cellulare in base alla tipologia scelta
function newsletter_type_click(type) {
	if (type=='email') {
		if (getE('nl_type_email').checked)	{getE('nl_email_field').className = 'formrow';}
		else								{getE('nl_email_field').className = 'hidden';}
	}
	else if (type=='sms') {
		if (getE('nl_type_sms').checked)	{getE('nl_sms_field').className = 'formrow';}
		else								{getE('nl_sms_field').className = 'hidden';}
	}
}


// registrazione alla newsletter - onSubmit del form
function newsletter_submit() {
	if (parseInt(getE('nl_zona').value)==0 || parseInt(getE('nl_act').value)==0 || !getE('nl_consenso').checked) {
		alert("Attenzione: e' necessario riempire tutti i campi obbligatori (segnati con l'asterisco) e prendere visione dell'informativa sulla privacy.");
		return false;
	}

	if (getE('nl_type_email').checked && !checkemail(getE('nl_email').value)) {
		alert("Attenzione: se desideri registrarti alla newsletter via e-mail e' necessario digitare in tuo indirizzo e-mail in forma corretta.");
		return false;
	}
	
	if (getE('nl_type_sms').checked && (parseInt(getE('nl_sms').value)<1 || getE('nl_sms').value.length<9)) {
		alert("Attenzione: se desideri registrarti alla newsletter via SMS e' necessario digitare il tuo numero di cellulare comprensivo di prefisso e senza altri caratteri.");
		return false;
	}
	
	if (!getE('nl_type_email').checked && !getE('nl_type_sms').checked) {
		alert("Attenzione: e' necessario selezionare almeno una delle newsletter alla quale registrarsi (tramite e-mail oppure tramite SMS).");
		return false;
	}
	
	return true;
}

// cancellazione dalla newsletter
function newsletter_canc() {
	if (!getE('nl_type_email').checked && !getE('nl_type_sms').checked) {
		alert("Attenzione: per cancellarti da una delle due newsletter (via e-mail o via SMS) spunta il relativo campo e digita l'indirizzo e-mail o il numero di cellulare da cancellare.");
		return false;
	}
	
	if (getE('nl_type_email').checked && !checkemail(getE('nl_email').value)) {
		alert("Attenzione: se desideri cancellare la tua sottoscrizione alla newsletter via e-mail digita il tuo indirizzo nell'apposito campo.");
		return false;
	}
	
	if (getE('nl_type_sms').checked && (parseInt(getE('nl_sms').value)<1 || getE('nl_sms').value.length<9)) {
		alert("Attenzione: se desideri cancellare la tua sottoscrizione alla newsletter via SMS digita il tuo numero di cellulare nell'apposito campo.");
		return false;
	}
	
	return true;
}