/*
	form_validation.js
	ultimo aggiornamento 12/03/09
*/

// classe per la label che cambia colore
var requestedClass = "req";
var requestClass   = "req2";


//////////////////////////////////////////////////////////////////////////////////////////
// Validate()										//
// valida i vari campi immessi nel form e marca in giallo quelli che mancano		//
//////////////////////////////////////////////////////////////////////////////////////////
function Validate() {

	var labels = document.getElementsByTagName("label");
	var validationOK = true;
	for(var i = 0; i < labels.length; i++) {
		var lab = labels[i];
		if (lab.className == "req2")
			lab.className = "req";
		if (lab.className == "req") {
			var inp = lab.getElementsByTagName("input");
			if (inp.length > 0 && inp[0].value == "") {	//input vuoto
				lab.className = "req2";
				validationOK = false;
			}
        		if(inp.length > 0 && inp[0].type == "checkbox" && inp[0].checked == false) {
				//checkbox non selezionata
				lab.className = "req2";
				validationOK = false;
			}
			var sel = lab.getElementsByTagName("select");	//select con indice zero
//			if(sel.length > 0 && sel[0].selectedIndex == 0) {
			if(sel.length > 0 && sel[0].value == "") {
				lab.className = "req2";
				validationOK = false;
			}
        	}
	}
	if (validationOK == false)
		alert("Compilare tutti i campi evidenziati in giallo");
	return validationOK;

} // Validate



//////////////////////////////////////////////////////////////////////////////////////////
// ValidationEmail()									//
// controllo correttezza indirizzo email						//
// la variabile 'pos' è la posizione del campo nel form					//
//////////////////////////////////////////////////////////////////////////////////////////
function ValidationEmail(myemail,pos) {

	var labels = document.getElementsByTagName("label");
	var lab = labels[pos];
	with (myemail) {
		apos = value.indexOf("@");
		dotpos = value.lastIndexOf(".");
		lastpos = value.length - 1;
		if (lab.className == "req2")
			lab.className = "req";
		if (apos < 1 || dotpos - apos < 2 || lastpos - dotpos > 4 || lastpos - dotpos < 2) {
			alert("Inserire un indirizzo email valido");
			lab.className = "req2";
			return false;
		}
		else
			return true;
	}

} // ValidationEmail



//////////////////////////////////////////////////////////////////////////////////////////
// ValidationLength()									//
// controllo che la stringa mystring abbia almeno min caratteri				//
//////////////////////////////////////////////////////////////////////////////////////////
function ValidationLength(mystring, min) {

	if (mystring.value.length < min) {
		alert("Ci sono " + mystring.value.length +
			" caratteri. E' necessario inserire almeno " + min + " caratteri");
		return false;
	}
	return true;

} // ValidationLength



//////////////////////////////////////////////////////////////////////////////////////////
// ValidationLengthMax()								//
// controllo che la stringa mystring abbia almeno min caratteri				//
//////////////////////////////////////////////////////////////////////////////////////////
function ValidationLengthMax(mystring, max) {

	if (mystring.value.length > max) {
		alert("Ci sono " + mystring.value.length +
			" caratteri. E' necessario inserire al massimo " + max + " caratteri");
		return false;
	}
	return true;

} // ValidationLengthMax



//////////////////////////////////////////////////////////////////////////////////////////
// FocusIt()										//
// mette a fuoco il campo con l'id passato nell'argomento				//
//////////////////////////////////////////////////////////////////////////////////////////
function FocusIt(id) {

	id.focus();

} // FocusIt



//////////////////////////////////////////////////////////////////////////////////////////
// DisableIt()										//
// disabilita il bottone submit sostituendo il valore con Attendere			//
//////////////////////////////////////////////////////////////////////////////////////////
function DisableIt(obj) {

	obj.disabled = true;
	obj.value = "Attendere...";
	var z = (obj.disabled) ? 'disabled' : 'enabled';

} // DisableIt



//////////////////////////////////////////////////////////////////////////////////////////
// SubmitCancel()									//
// per la cancellazione di una foto							//
// la variabile mystep contiene lo step a cui vogliamo andare con il submit		//
//////////////////////////////////////////////////////////////////////////////////////////
function SubmitCancel(thisform,mystep,mytext) {

	if (confirm(mytext)) {
		thisform.step.value = mystep;
		thisform.mycancel.value = 1;
		DisableIt(thisform.mysubmit);
		thisform.submit();
		return true;
	}
	return false;

} // SubmitCancel



//////////////////////////////////////////////////////////////////////////////////////////
// SubmitReload()									//
// per fare il reload della pagina (ovvero tornare allo step attuale)			//
// la variabile mystep contiene lo step a cui vogliamo andare con il submit		//
//////////////////////////////////////////////////////////////////////////////////////////
function SubmitReload(thisform,mystep) {

	thisform.step.value = mystep;	// a che step voglio andare?
	thisform.myreload.value = 1;
	thisform.submit();
	return true;

} // SubmitReload



//////////////////////////////////////////////////////////////////////////////////////////
// SubmitUpload2()		DA DISMETTERE: c'è SUBMITUPLOAD generica		//
// per l'upload di una foto								//
// mystep contiene lo step a cui vogliamo andare con il submit				//
// myfilefoto è il file che si vuole mandare (selezionato tramite input type=file)	//
// valid_extension sono le estensioni delle foto accettate, nel formato .jpg .png	//
//////////////////////////////////////////////////////////////////////////////////////////
function SubmitUpload2(thisform,mystep,myfilefoto,valid_extension) {

	if (myfilefoto.value == null || myfilefoto.value == "") {
		alert("Prima di inviare la foto \xe8 necessario selezionarla");
		return false;
	}
	var myext = myfilefoto.value.substring(myfilefoto.value.lastIndexOf("."), myfilefoto.value.length)
	if (valid_extension.indexOf(myext.toLowerCase()) == -1) {
		alert("E' possibile inviare solo file con le seguenti estensioni: " + valid_extension);
		myfilefoto.focus();
		return false;
	}
	DisplayToggle("progress","foto");
	thisform.step.value = mystep;
	thisform.myupload.value = 1;
	DisableIt(thisform.mysubmit);
	thisform.submit();
	return true;

} // SubmitUpload2



//////////////////////////////////////////////////////////////////////////////////////////
// SubmitUpload()									//
// per l'upload di un file audio o foto							//
//(gli ID dei DIV che vuoi vedere/nascondere sono progress e myview			//
// mystep contiene lo step a cui vogliamo andare con il submit				//
// myfile è il file che si vuole mandare (selezionato tramite input type=file)		//
// myupload deve essere settata così <input type="hidden" name="myupload" value="0">	//
// valid_extension sono le estensioni del file accettate, nel formato .jpg .png		//
//////////////////////////////////////////////////////////////////////////////////////////
function SubmitUpload(thisform,mystep,myfile,valid_extension) {

	if (myfile.value == null || myfile.value == "") {
		alert("Prima di inviare il file \xe8 necessario selezionarlo");
		return false;
	}
	var myext = myfile.value.substring(myfile.value.lastIndexOf("."), myfile.value.length)
	if (valid_extension.indexOf(myext.toLowerCase()) == -1) {
		alert("E' possibile inviare solo file con le seguenti estensioni: " + valid_extension);
		myfile.focus();
		return false;
	}
	DisplayToggle("progress","myview");
	DisableIt(thisform.mysubmit);
	thisform.step.value = mystep;
	thisform.myupload.value = 1;
	thisform.submit();
	return true;

} // SubmitUpload



//////////////////////////////////////////////////////////////////////////////////////////
// PasswordMatch()									//
// controlla che la password e conferma password siano uguali				//
// e la password abbia almeno min caratteri						//
//////////////////////////////////////////////////////////////////////////////////////////
function PasswordMatch(codice,ccodice,min) {

	if (codice != ccodice) {
		alert("Password e conferma della password non coincidono");
		ccodice.className = requestClass;
		return false;
	}
	if (codice.length < min) {
		alert("La password deve avere minimo " + min + " caratteri");
		ccodice.className = requestClass;
		return false;
	}
	return true;

} // PasswordMatch
