//funzione che illumina la stellina
function onStar(starN) {
	//se è già stato scelto un voto, e si vuole cambiarlo con uno più basso, spengo le stelline superiori
	if(document.forms[1].voto.value!="" && document.forms[1].voto.value > starN) {
		for(i=starN;i<=5;i++)
			document.getElementById('spstar'+i).style.backgroundPosition="0 0";	
	}
	//illumino tutte le stelline fino a quella scelta	
	for(i=1;i<=starN;i++)
		document.getElementById('spstar'+i).style.backgroundPosition="0 -30px";
}

//funzione che spegne le stelline
function offStar() {
		//se non ho mai votato, spengo senza problemi tutte le stelline
		if(document.forms[1].voto.value=="") {
			for(i=1;i<=5;i++)
				document.getElementById('spstar'+i).style.backgroundPosition="0 0";
		}
		//altrimenti accendo le stelline fino a quella selezionata e spengo le altre
		else {
			onStar(parseInt(document.forms[1].voto.value));
			for(i=parseInt(document.forms[1].voto.value)+1;i<=5;i++)
				document.getElementById('spstar'+i).style.backgroundPosition="0 0";	
		}
		//tolgo la cornicetta dall'immagine
		document.forms[1].blur();
}

//funzione che setta il voto
function setVote(starN) {
	//il campo hidden viene valorizzato con il voto
	document.forms[1].voto.value=starN;
	//se sono nella pagina di inserimento nuovo locale devo togliere l'eventuale mess di errore
	if(document.getElementById("errvoto"))
		document.getElementById("errvoto").innerHTML = "";
	onStar(starN);
}

//funzione che setta il voto
function setVoteAndGo(starN) {
	//il campo hidden viene valorizzato con il voto
	document.forms[1].voto.value=starN;
	document.forms[1].submit();
}

/********************************/
/*   FUNZIONI DI VALIDAZIONE    */
/*******************************/

function validate(form) {
	
	//nome del campo, richiesto/opzionale, formato
	var fields = new Array(["nome","required","alphaext"],
						   ["citta","required","alphabetic"],
						   ["sito","optional","url"],
						   ["mail","required","email"],
						   ["password","required","alphanumeric"],
						   ["rpassword","required","rpassword"],
						   ["tc","required","checkbox"],
						   ["indirizzo","optional","address"],
						   ["provincia","required","select"],
						   ["mailloc","optional","email"],
						   ["tel","optional","numeric"],
						   ["tipo","required","select"],
						   ["voto","required","voto"]);
	
	var valido = true;
	
	//ciclo tra tutti gli elementi del form
	for(var i=0;i<form.elements.length;i++){
		//ciclo tra tutti gli elementi dell'array di validazione
		for(var j=0;j<fields.length;j++){
			//controllo se il campo è vuoto, tralasciando il campo "voto" che ha una validazione particolare
			if(form.elements[i].name==fields[j][0] && fields[j][1]=="required" && form.elements[i].value==""){
				if(form.elements[i].name != "voto"){
					document.getElementById("err"+form.elements[i].name).innerHTML = "Campo obbligatorio!";
					form.elements[i].style.border = "1px solid #F00";
					form.elements[i].style.backgroundColor = "#EBEBEB";
					valido = false;
					break;
				}
				else {
					document.getElementById("errvoto").innerHTML = "Scegli un voto per questo locale.";
					valido = false;
					break;
				}
			}
			//se il campo non è vuoto...
			if(form.elements[i].name==fields[j][0] && form.elements[i].value!=""){
				//...controllo se è in formato corretto
				switch (fields[j][2]){
					case "alphabetic":{
						var charPos = form.elements[i].value.search("^a-zA-Z ");
						if(charPos>=0){
							document.getElementById("err"+form.elements[i].name).innerHTML = "Inserisci solo lettere.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "alphanumeric":{
						var charPos = form.elements[i].value.search("^a-zA-Z0-9 ");
						if(charPos>=0){
							document.getElementById("err"+form.elements[i].name).innerHTML = "Inserisci solo lettere e/o numeri.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "address":{
						var charPos = form.elements[i].value.search("^a-zA-Z0-9 .,-/'");
						if(charPos>=0){
							document.getElementById("tip"+form.elements[i].name).style.visibility = "hidden";
							document.getElementById("err"+form.elements[i].name).innerHTML = "Indirizzo non valido.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "alphaext":{
						var charPos = form.elements[i].value.search("^A-Za-z0-9 /&()'\"!?_,.:@+=-");
						if(charPos>=0){
							if(document.getElementById("tip"+form.elements[i].name))
								document.getElementById("tip"+form.elements[i].name).style.visibility = "hidden";
							document.getElementById("err"+form.elements[i].name).innerHTML = "Solo lettere, numeri e/o caratteri: /&()'\"!?_,.:@+=-";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "numeric":{
						var charPos = form.elements[i].value.search("[^0-9 ]");
						if(charPos>=0){
							document.getElementById("err"+form.elements[i].name).innerHTML = "Inserisci solo numeri.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "url":{
						var regexp = new RegExp("http\://([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(/\S*)?$");
						if(!regexp.test(form.elements[i].value)){
							document.getElementById("tip"+form.elements[i].name).style.visibility = "hidden";
							document.getElementById("err"+form.elements[i].name).innerHTML = "Indirizzo non valido.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "email":{
						regexp = new RegExp("^[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9]@[a-z0-9][a-z0-9_\.-]{0,}[a-z0-9][\.][a-z0-9]{2,4}$");
						if(!regexp.test(form.elements[i].value)){
							document.getElementById("err"+form.elements[i].name).innerHTML = "E-mail non valida.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "checkbox":{
						if(document.getElementById(fields[j][0]).checked == false) {
							document.getElementById("err"+form.elements[i].name).innerHTML = "Devi accettare condizioni d'uso e privacy policy per proseguire.";
							valido = false;
						}
					}break;
					case "select":{
						if(document.getElementById(fields[j][0]).selectedIndex == 0) {
							document.getElementById("err"+form.elements[i].name).innerHTML = "Seleziona un'opzione.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
					case "rpassword":{
						if(form.rpassword.value != form.password.value) {
							document.getElementById("errrpassword").innerHTML = "Ripeti correttamente la password.";
							form.elements[i].style.border = "1px solid #F00";
							form.elements[i].style.backgroundColor = "#EBEBEB";
							valido = false;
						}
					}break;
				}	
			}
		}
	}	
	
	return valido;
	
}

function resetField(field) {
	field.style.border = "1px solid #999";
	field.style.backgroundColor = "";
	document.getElementById("err"+field.name).innerHTML = "";
	if(document.getElementById("tip"+field.name))
		document.getElementById("tip"+field.name).style.visibility = "visible";
}

function resetCheck(check) {
	document.getElementById("err"+check.name).innerHTML = "";
}
