// <![CDATA[
var arrayRegioni = null;
var arrayProvince = null;

window
		.addEvent(
			'domready',
			function() {
				var divMeteo = $('divMeteo');
				if (divMeteo != null) {
					divMeteo.getElement('a').addEvent('click', function() {
						window.open(divMeteo.getElement('a').href);
						return false;
					});
				}
				var bannerGoogle300x250 = $('bannerGoogle300x250');
				if (bannerGoogle300x250 != null) {
					bannerGoogle300x250.addEvent('click', function() {
						window.open(bannerGoogle300x250.href);
						return false;
					});
				}
				$('webmaster').getElement('a').addEvent('click', function() {
					window.open("http://www.codencode.it");
					return false;
				});
				$('formRicercaDiretta').addEvent('submit', function() {
					var regione = $('regione');
					var action = $('formRicercaDiretta').getProperty('action');
					var indice = action.indexOf('#');
					action = action.substring(0, indice);
					var url = action + "#ancoraPercorso";
					$('formRicercaDiretta').setProperty('action', url);
				});
				richiestaDati();
				var regione = $('regione');
				var provincia = $('provincia');
				var comune = $('comune');
				regione.addEvent('change', function() {
					var regioneSelezionata = regione.getSelected().getProperty(
						'value');
					// ***** svuoto gli elenchi delle province e delle regioni
					var optionsProvince = provincia.getElements('option');
					optionsProvince.each( function(unaProvincia, indice) {
						if (indice > 0) {
							provincia.removeChild(unaProvincia);
						}
					});
					var optionsComuni = comune.getElements('option');
					optionsComuni.each( function(unComune, indice) {
						if (indice > 0) {
							comune.removeChild(unComune);
						}
					});
					// **********************************************************
					// ***** creo gli array delle provicne e dei comuni *****
					var province = new Hash();
					var comuni = new Hash();
					var nomiProvince = new Array();
					if (regioneSelezionata == "NazioneItalia") {
						province = new Hash(arrayProvince);
					} else {
						province = new Hash(
							arrayRegioni[regioneSelezionata]['province']);
						comuni = new Hash(
							arrayRegioni[regioneSelezionata]['comuni']);

					}
					// ********************************************************
					// ***** aggioro l'elenco delle province *****
					province.each( function(unaProvincia) {
						var option = new Element('option', {
							'value' :unaProvincia['codProvincia']
						});
						var provinciaStringa = document
								.createTextNode(unaProvincia['nomeProvincia']
										+ " (" + unaProvincia['siglaProvincia']
										+ ") ");
						option.appendChild(provinciaStringa);
						option.inject(provincia);
					});
					// ********************************************
					// ***** aggioro l'elenco dei comuni *****
					comuni.each( function(unComune, codComune) {
						var option = new Element('option', {
							'value' :codComune
						});
						var comuneStringa = document.createTextNode(unComune);
						option.appendChild(comuneStringa);
						option.inject(comune);
					});
					// ***************************************
				});
				provincia
						.addEvent(
							'change',
							function() {
								var regioneSelezionata = regione.getSelected()
										.getProperty('value');
								var provinciaSelezionata = provincia
										.getSelected().getProperty('value');
								if (regioneSelezionata == "NazioneItalia") {
									arrayRegioni
											.each( function(unaRegione,
													codRegione) {
												var province = new Hash(
													unaRegione['province']);
												if (province[provinciaSelezionata] != null) {
													regioneSelezionata = codRegione;
												}
											});
									// ***** Aggiorno la regione selezionata
									regione
											.getElements("option")
											.each(
												function(unOption) {
													if (unOption
															.getProperty('value') == regioneSelezionata) {
														unOption.setProperty(
															'selected',
															"selected");
													} else {
														unOption
																.removeProperty('selected');
													}
												});
									// ******************************************
									// ***** svuoto l'elenco delle province
									var optionsProvince = provincia
											.getElements('option');
									optionsProvince
											.each( function(unaProvincia,
													indice) {
												if (indice > 0) {
													provincia
															.removeChild(unaProvincia);
												}
											});
									// l'istruzione che segue serve per far
									// funzionare correttamente IE 6 senza di
									// essa la provicnia non viene selezionata
									provincia.focus();
									// ********************************************
									// ***** Aggiorno l'elenco delle provincie
									province = new Hash(
										arrayRegioni[regioneSelezionata]['province']);
									province
											.each( function(unaProvincia) {
												var option = new Element(
													'option',
													{
														'value' :unaProvincia['codProvincia']
													});
												var provinciaStringa = document
														.createTextNode(unaProvincia['nomeProvincia']
																+ " ("
																+ unaProvincia['siglaProvincia']
																+ ") ");
												option
														.appendChild(provinciaStringa);
												if (unaProvincia['codProvincia'] == provinciaSelezionata) {
													option.setProperty(
														'selected', "selected");
												}
												option.inject(provincia);
											});
								}
								// ********************************************
								// ***** svuoto l'elenco dei comuni *****
								var optionsComuni = comune
										.getElements('option');
								optionsComuni.each( function(unComune, indice) {
									if (indice > 0) {
										comune.removeChild(unComune);
									}
								});
								// ****************************************
								// ***** Aggiorno l'elenco deli comuni *****
								if (regioneSelezionata != "NazioneItalia") {
									if (provinciaSelezionata != "tutte") {
										comuni = new Hash(
											arrayRegioni[regioneSelezionata]['province'][provinciaSelezionata]['comuni']);
									} else {
										comuni = new Hash(
											arrayRegioni[regioneSelezionata]['comuni']);
									}
									comuni.each( function(unComune, codComune) {
										var option = new Element('option', {
											'value' :codComune
										});
										var comuneStringa = document
												.createTextNode(unComune);
										option.appendChild(comuneStringa);
										option.inject(comune);
									});
								}
								// ******************************************
							});
				comune
						.addEvent(
							'change',
							function() {
								var comuneSelezionato = comune.getSelected()
										.getProperty('value');
								var provinciaSelezionata = provincia
										.getSelected().getProperty('value');
								var regioneSelezionata = regione.getSelected()
										.getProperty('value');
								if (provinciaSelezionata == "tutte") {
									provinciaSelezionata = String(comune
											.getSelected().getProperty('value'));
									provinciaSelezionata = provinciaSelezionata
											.substr(0, 3);
									provincia
											.getElements("option")
											.each(
												function(unOption) {
													if (unOption
															.getProperty('value') == provinciaSelezionata) {
														unOption.setProperty(
															'selected',
															"selected");
													} else {
														unOption
																.removeProperty('selected');
													}
												});
								}

								// ***** svuoto l'elenco dei comuni *****
								var optionsComuni = comune
										.getElements('option');
								optionsComuni.each( function(unComune, indice) {
									if (indice > 0) {
										comune.removeChild(unComune);
									}
								});
								// l'istruzione che segue serve per far
								// funzionare correttamente IE 6 senza di
								// essa il comune non viene selezionato
								comune.focus();
								// ****************************************
								// ***** Aggiorno l'elenco dei comuni *****
								var comuni = new Hash(
									arrayRegioni[regioneSelezionata]['province'][provinciaSelezionata]['comuni']);
								comuni.each( function(unComune, codComune) {
									var option = new Element('option', {
										'value' :codComune
									});
									var comuneStringa = document
											.createTextNode(unComune);
									option.appendChild(comuneStringa);
									if (codComune == comuneSelezionato) {
										option.setProperty('selected',
											"selected");
									}
									option.inject(comune);
								});
								// ********************************************
							});
			});

function richiestaDati() {
	var req = new Request.JSON( {
		url :"./script/ricercaAjax.php",
		onSuccess : function(rispostaScript) {
			if (rispostaScript == "ERRORE") {
				alert("Problema connessione database da Ajax.");
			}
			arrayRegioni = new Hash(rispostaScript['regioni']);
			arrayProvince = new Hash(rispostaScript['province']);
		}
	}).post( {

	});
}
// ]]>
