/* 
 *
 *	File JS dai più svariati utilizzi :P
 *	http://www.myvalledaosta.it
 *
 *	Autore: Francesco Napoletano per Uni-fi S.r.l.
 *
 *
 */

// Funzione $(), non scomodiamo prototype :P
function $(objID)
{
	return document.getElementById(objID);
}

// Visualizza video proveniente da YouTube
function youtube(videoID,div,titolo)
{
	$(div).innerHTML = '<object width="425" height="353"><param name="movie" value="http://www.youtube.com/v/' + videoID + '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' + videoID + '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="353"></embed></object><br />' + titolo;	
}

// Banner
function flashBanner()
{
	var st  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="850" height="300" id="booom" align="middle">';
	st  += '<param name="allowScriptAccess" value="sameDomain" />';
	st  += '<param name="movie" value="http://www.myvalledaosta.it/bannerjungle.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="#ffffff" /><embed  src="http://www.myvalledaosta.it/bannerjungle.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="850" height="300" name="booom" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
	st  += '</object>';
	
	document.write(st);
}


// Modulo di registrazione
function registra(formOBJ) 
{
	// Validazione
	if (formOBJ.nickname.value == "")
	{
		// Nickname
		alert("Manca il tuo nickname!");
		formOBJ.nickname.focus();
		return false;
	}	
	
	if (formOBJ.pwd1.value == "")
	{
		// Password 1
		alert("Manca la password!");
		formOBJ.pwd1.focus();
		return false;
	}	
	
	if (formOBJ.pwd1.value.length < 6)
	{
		// Lunghezza password
		alert("La password deve essere di almeno 6 caratteri!");
		formOBJ.pwd1.focus();
		return false;
	}	
	
	if (formOBJ.pwd2.value == "")
	{
		// Password 2
		alert("Conferma la password!");
		formOBJ.pwd2.focus();
		return false;
	}	
	
	if (formOBJ.pwd2.value != formOBJ.pwd1.value)
	{
		// Le due password devono coincidere
		alert("Le password non coincidono!");
		formOBJ.pwd2.value = "";
		formOBJ.pwd2.focus();
		return false;
	}	
	
	if (formOBJ.email.value == "")
	{
		// Indirizzo email
		alert("Manca il tuo indirizzo email!");
		formOBJ.email.focus();
		return false;
	}	
	
	if (formOBJ.privacy[1].checked == true)
	{
		// Informativa privacy
		alert("E' necessario accettare l'informativa per la privacy per potersi iscrivere!");
		return false;
	}	


	// Ritorno valore vero se è tutto ok
	return true;
}


// Modulo di login
function login(formOBJ) 
{
	// Validazione
	if (formOBJ.nickname.value == "")
	{
		// Nickname
		alert("Manca il tuo nickname!");
		formOBJ.nickname.focus();
		return false;
	}	
	
	if (formOBJ.pwd1.value == "")
	{
		// Password 1
		alert("Manca la password!");
		formOBJ.pwd1.focus();
		return false;
	}	
	
	// Ritorno valore vero se è tutto ok
	return true;
}

// Effettua votazione
function vota(id,voto)
{
	var url = "http://www.myvalledaosta.it/php/actions/votazione.php?id=" + id + "&voto=" + voto;
	ajax_GET(url,"votazione");
}

function lost_password()
{
	var url = "http://www.myvalledaosta.it/php/actions/lost_pwd.php";
	ajax_GET(url,"modulo_login");
}

// Login form
function recupero_pwd(formOBJ) 
{
	// Validazione
	if (formOBJ.email.value == "")
	{
		// Nickname
		alert("Inserisci il tuo indirizzo email!");
		formOBJ.email.focus();
		return false;
	}	
	
	// Recupero dati form
	var param = formData(formOBJ);
	
	// Chiamata AJAX
	ajax_POST("http://www.myvalledaosta.it/php/actions/nuovapwd.php","modulo_login",param);
	
	// Ritorno valore falso
	return false;
}

/******************************************************************************************************************************/ 
/* ajax_POST(serverPage,objID,param) - Effettua richieste attraverso l'oggetto XMLHttpRequest inviando i dati con metodo POST */
/*                                   - Davide Cesana & Francesco Napoletano per arxmedia s.r.l. & Uni-Fi s.r.l.               */
/*                                                                                                                            */
/* PARAMETRI ACCETTATI:                                                                                                       */
/* serverPage : URL della pagina che elaborer la richiesta - ESEMPIO: 'azione.php'                                           */
/* objID      : ID dell'elemento che conterr i dati elaborati - ESEMPIO: 'div_container'                                      */
/* param      : Campi del form elaborati attraverso formData() - ESEMPIO: dati_form                                           */
/*                                                                                                                            */
/* TODO:                                                                                                                      */
/* 1. POST di files, da inserire flag per multipart/form-data                                                                 */
/******************************************************************************************************************************/
function ajax_POST(serverPage,objID,param)
{
	// Messaggio di caricamento stampato nell'oggetto di destinazione
	document.getElementById(objID).innerHTML = "Attendere...";
 
	// Dichiarazione oggetto xmlhttp
	var xmlhttp = false;
 
	if (window.XMLHttpRequest)
   	{
    	// Oggetto per Safari, Mozilla, Firefox, Opera
		xmlhttp = new XMLHttpRequest();
   	} 
	else if (window.ActiveXObject) 
  	{
		// Oggetto per Internet Explorer 5+
		xmlhttp = new ActiveXObject("Microsoft.XMLHttp");
	}
		
	// Se l'oggetto viene creato allora effettua connessione asincrona
	if(xmlhttp)
	{
		// Apertura connessione xmlhttp usando POST
		xmlhttp.open("POST", serverPage, true);
		
		// Impostazione degli header
	 	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  // Content-type
	 	xmlhttp.setRequestHeader("Content-length", param.length);                       // Lunghezza parametri
	 	xmlhttp.setRequestHeader("Connection", "close");                                // Chiusura connessione
        
		// Parametri vanno recuperati da apposita funzione JavaScript formData() da richiamare prima della chiamata di ajax_POST
		xmlhttp.send(param); 
	  
	 	// Funzione anonima in base al cambio di stato dell'oggetto xmlhttp
		xmlhttp.onreadystatechange = function()
		{
			//  Oggetto non inizializzato
			if (xmlhttp.readyState == 0) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto in fase di caricamento
			if (xmlhttp.readyState == 1) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto caricato
			if (xmlhttp.readyState == 2) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto in fase interattiva
			if (xmlhttp.readyState == 3) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			
			//  Richiesta completata e andata a buon fine
			if (xmlhttp.readyState == 4) 
			{
				// Dati ricevuti correttamente
				if (xmlhttp.status == 200)
				{
					// Stampa dei dati ricevuti
					document.getElementById(objID).innerHTML = xmlhttp.responseText;
					
					// Cancellazione oggetto
					delete xmlhttp;
					xmlhttp = null;
				}

				// Dati non ricevuti correttamente
				else
				{
					document.getElementById(objID).innerHTML = "I dati richiesti non sono disponibili";
					
					// Cancellazione oggetto 
					delete xmlhttp;
					xmlhttp = null;
				}
			}
		}
	}
	else
	{
		// Notifica di browser incompatibile con AJAX
		document.getElementById(objID).innerHTML = "Il tuo browser non supporta AJAX!";
	}
}

/**********************************************************************************************************************/ 
/* ajax_GET(serverPage,objID) - Effettua richieste attraverso l'oggetto XMLHttpRequest inviando i dati con metodo GET */
/*                            - Davide Cesana & Francesco Napoletano per arxmedia s.r.l. & Uni-Fi s.r.l.              */
/*                                                                                                                    */
/* PARAMETRI ACCETTATI:                                                                                               */
/* serverPage : URL della pagina che elaborer la richiesta - ESEMPIO: 'azione.php'                                   */
/* objID      : ID dell'elemento che conterr i dati elaborati - ESEMPIO: 'div_container'                              */
/**********************************************************************************************************************/
function ajax_GET(serverPage,objID)
{
	// Messaggio di caricamento stampato nell'oggetto di destinazione
	document.getElementById(objID).innerHTML = "Attendere...";
 
	// Dichiarazione oggetto xmlhttp
	var xmlhttp = false;
 
	if (window.XMLHttpRequest)
   	{
    	// Oggetto per Safari, Mozilla, Firefox, Opera
		xmlhttp = new XMLHttpRequest();
   	} 
	else if (window.ActiveXObject) 
  	{
		// Oggetto per Internet Explorer 5+
		xmlhttp = new ActiveXObject("Microsoft.XMLHttp");
	}
		
	// Se l'oggetto viene creato allora effettua connessione asincrona
	if(xmlhttp)
	{
		// Apertura connessione xmlhttp usando GET
		xmlhttp.open("GET", serverPage);
		
	 	// Funzione anonima in base al cambio di stato dell'oggetto xmlhttp
		xmlhttp.onreadystatechange = function()
		{
			//  Oggetto non inizializzato
			if (xmlhttp.readyState == 0) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto in fase di caricamento
			if (xmlhttp.readyState == 1) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto caricato
			if (xmlhttp.readyState == 2) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Oggetto in fase interattiva
			if (xmlhttp.readyState == 3) 
			{
				// Eventuali azioni da eseguire per l'oggetto xmlhttp in questo stato
			}
			
			//  Richiesta completata e andata a buon fine
			if (xmlhttp.readyState == 4) 
			{
				// Dati ricevuti correttamente
				if (xmlhttp.status == 200)
				{
					// Stampa dei dati ricevuti
					document.getElementById(objID).innerHTML = xmlhttp.responseText;

					// Cancellazione oggetto
					delete xmlhttp;
					xmlhttp = null;
				}

				// Dati non ricevuti correttamente
				else
				{
					document.getElementById(objID).innerHTML = "I dati richiesti non sono disponibili";
					
					// Cancellazione oggetto 
					delete xmlhttp;
					xmlhttp = null;
				}
			}
		}
	}
	else
	{
		// Notifica di browser incompatibile con AJAX
		document.getElementById(objID).innerHTML = "Il tuo browser non supporta AJAX!";
	}
	
	// Chiusura totale della connessione (senza questo la funzione va in loop)
	xmlhttp.send(null);
}

/********************************************************************************************************************/ 
/* formData(formOBJ) - Converte i dati inseriti nel modulo attraverso encodeURI in modo da poterli inviare via POST */
/*                   - Davide Cesana & Francesco Napoletano per arxmedia s.r.l. & Uni-Fi s.r.l.                     */
/*                                                                                                                  */
/* PARAMETRI ACCETTATI:                                                                                             */
/* formOBJ: Identificativo di oggetto form - ESEMPIO: document.modulo                                               */
/********************************************************************************************************************/
function formData(formOBJ) 
{ 
	// Stringa che verr ritornata
   	var str = "";			 
	var i = 0;
	
	// Ciclo che scandisce tutti gli elementi del modulo formOBJ
	for(i=0;i<formOBJ.elements.length;i++) 
	{ 
		// Operazioni diverse a seconda del tipo di campo del form
		switch(formOBJ.elements[i].type)
		{
			case "text":
			case "hidden":
			case "password":
			case "textarea":
				// Aggiunge il valore del campo formattato & encodato
				str += formOBJ.elements[i].name + "=" + encodeURI(formOBJ.elements[i].value) + "&";
			break;

			case "checkbox":
				if(formOBJ.elements[i].checked) 
					// Aggiunge il valore del campo formattato & encodato
					str += formOBJ.elements[i].name + "=" + encodeURI(formOBJ.elements[i].value) + "&";
			break;

			case "radio":
				if(formOBJ.elements[i].checked) 
					// Aggiunge il valore del campo formattato & encodato
					str += formOBJ.elements[i].name + "=" + encodeURI(formOBJ.elements[i].value) + "&";
			break;

			case "select-one":
				// Aggiunge il valore del campo formattato & encodato
				str += formOBJ.elements[i].name + "=" + formOBJ.elements[i].options[formOBJ.elements[i].selectedIndex].value + "&";
			break;
		} 
   	} 
	
	// Toglie ultimo carattare "&" dalla stringa e la ritorna
	str = str.substr(0,(str.length - 1)); 
	return str; 
}