/*
variabile contenente il messaggio di elimina richiamto all'eseguiAzione se l'azione
è uguale a ELIMINA
*/
var msgElimina = "Si è sicuri di voler procedere all'eliminazione?\nSe sì, tutti i dati contenuti nella pagina andranno perduti.";
/*
fine
*/

//funzione da inserire su tutti i campi input type="text" che sostituisce i doppi apici con apice singolo
function formatApix(formName,nameField,value){
	var strPassata=value;
	//alert(strPassata);
	var strFormattata="";
	var charControllato="";
	for(var i=0;i<strPassata.length;i++){
		charControllato=strPassata.charAt(i);
		//alert(charControllato);
		if(charControllato=='"'){
			//alert("ATTENZIONE DOPPI APICI!!!");
			strFormattata=strFormattata + "'";
		}else{
			strFormattata=strFormattata + charControllato;
		}
	}
	document.forms[formName].elements[nameField].value=strFormattata;
}

//funzione che cotruisce la data da inserire nel campo nascosto relativo
function makeDate(formName,id,idGG,idMM,idAA){
	//alert("entro");
	var anno = "0"; var mese = "0"; var giorno = "0"; 
	var bret = true;
	//ANNO
	if(document.forms[formName][idAA].value!=""){
		anno = document.forms[formName][idAA].value;
		if(anno.length!=4){
			errorMessage = "Il campo Anno deve essere un numero di 4 cifre";
			alert(errorMessage);
			document.forms[formName][idAA].focus();
			return false;
		}
		if(isNaN(anno)){
			errorMessage = "Il campo Anno deve essere un numero di 4 cifre";
			alert(errorMessage);
			document.forms[formName][idAA].focus();
			return false;
		}
	
		// Correzione millennium bug
		if (anno<100){
			if (anno<50){
				anno = 2000 + anno;
			}else{
				anno = 1900 + anno;
			}
		}
		
		//MESE
		//alert(document.forms[formName][idMM].options[document.forms[formName][idMM].selectedIndex].value!="0");
		if(document.forms[formName][idMM].options[document.forms[formName][idMM].selectedIndex].value!="0"){
			mese = document.forms[formName][idMM].options[document.forms[formName][idMM].selectedIndex].value;
			if (mese < 1 || mese > 12){
				errorMessage = "Mese errato";
				alert(errorMessage);
				document.forms[formName][idMM].focus();
				return false;
			}
			
			//GIORNO
			if(document.forms[formName][idGG].options[document.forms[formName][idGG].selectedIndex].value!="0"){
				giorno = document.forms[formName][idGG].options[document.forms[formName][idGG].selectedIndex].value;
				// Controllo giorno
				if (mese==4 || mese==6 || mese==9 || mese==11){
					nDays = 30;
				}else{
					nDays = 31;
				}

				// Controllo anno bisestile
				if (mese==2){
					if ((anno%4==0 && anno%100!=0) || anno%400==0){
						nDays = 29;
					}else{
						nDays = 28;
					}
				}

				if (giorno<1 || giorno>nDays){
					giorno = "0";
					errorMessage = "Giorno errato";
					alert(errorMessage);
					document.forms[formName][idGG].focus();
					return false;
				}
			
			}
		}
	}
	document.forms[formName].elements[id].value = (mese + "/" + giorno + "/"  +  anno).toString();
	return true;
}	

function validateField(objInput, sType){
	var dataValida;

	switch (sType){
		case 'date':
			if (objInput.value){
				dataValida = validaData(objInput.value);
				if (!dataValida){
					//objInput.style.backgroundColor = 'pink';
					//objInput.focus();
					return false;
				}else{
					objInput.value = dataValida;
					//objInput.style.backgroundColor = '';
					return true;
				}
			}else{
				//objInput.style.backgroundColor = '';
				return true;
			}
			break;

		case 'integer': 
			break;
						
		case 'string': 
			break;

		case 'time': 
			if (objInput.value){
				oraValida = validaOra(objInput.value);
				if (!oraValida){
					//objInput.style.backgroundColor = 'pink';
					//objInput.focus();
					return false;
				}else{
					objInput.value = oraValida;
					//objInput.style.backgroundColor = '';
					return true;
				}
			}else{
				return true;
			}
			break;

		case 'noCheck':
			break;
						
		default:

	}
}

//funzioni per contatore textArea
function counter(id,idCounter,nChr,form){
	//alert("tony randine was here!");
	var nChrStrTextArea;
	nChrStrTextArea = (document.forms[form].elements[id].value).length; 
	isNaN(nChrStrTextArea)?nChrStrTextArea=0:nChrStrTextArea;
	var nCharDisponibili;
	nCharDisponibili = nChr - (nChrStrTextArea);
	if(nCharDisponibili<0){
		alert("Attenzione! Si è arrivati al limite consentito per l'inserimento del testo!");
		var strProvv = "";
		for(i=0;i<nChr;i++){
			strProvv += (document.forms[form].elements[id].value).charAt(i);
			nCharDisponibili = 0;
		}
		document.forms[form].elements[idCounter].value = nCharDisponibili;
		document.forms[form].elements[id].value = strProvv
		return false;
	}
	document.forms[form].elements[idCounter].value = nCharDisponibili;
}

function giveFocus(id,form){
	document.forms[form].elements[id].focus();
}
//fine script per contatore TextArea

//function acceptDigit()
//{	// Accetta solo i caratteri numerici
//	 if (this.contentType == 'integer')		// aggiungere i tipi di dato per cui si vuole effettuare questa restrizione
//		if ((event.keyCode <48) || (event.keyCode > 57)) event.returnValue = false;
//}


function validaData(sData){
	var dateArray = Array();
	dateArray = sData.split("/");

	if (dateArray.length!=3){
		errorMessage = "Formato data errato";
		alert(errorMessage);
		return false;
	}

	giorno = parseInt(dateArray[1]);
	mese = parseInt(dateArray[0]);
	anno = parseInt(dateArray[2]);

	if (isNaN(giorno) || isNaN(mese) || isNaN(anno)){
		errorMessage = "Formato data non corretto";
		alert(errorMessage);
		return false;
	}

	// Controllo anno

	// Correzione millennium bug
	if (anno<100){
		if (anno<50){
			anno = 2000 + anno;
		}else{
			anno = 1900 + anno;
		}
	}

	//Controllo mese
	if (mese < 1 || mese > 12){
		errorMessage = "Mese errato";
		alert(errorMessage);
		return false;
	}

	// Controllo giorno
	if (mese==4 || mese==6 || mese==9 || mese==11){
		nDays = 30;
	}else{
		nDays = 31;
	}

	// Controllo anno bisestile
	if (mese==2){
		if ((anno%4==0 && anno%100!=0) || anno%400==0){
			nDays = 29;
		}else{
			nDays = 28;
		}
	}

	if (giorno<1 || giorno>nDays){
		errorMessage = "Giorno errato";
		alert(errorMessage);
		return false;
	}

	// Se arrivo qui allora la data è valida
	return mese + "/" + giorno + "/" + anno;
}

function validaOra(sOra){
	var oraArray = Array();
	oraArray = sOra.split(":");
	errorMessage = "Formato ora errato.\nInserire l'ora come hh:mm";

	if (oraArray.length!=2){
		alert(errorMessage);
		return false;
	}

	ore = parseInt(oraArray[0]);
	minuti = parseInt(oraArray[1]);

	if (isNaN(ore) || isNaN(minuti)){
		alert(errorMessage);
		return false;
	}

	//Controllo ora
	if (ore < 0 || ore > 23){
		alert(errorMessage);
		return false;
	}

	//Controllo minuti
	if (minuti<0 || minuti>59){
		alert(errorMessage);
		return false;
	}

	if (ore < 10){
		ore = "0" + ore;
	}
	if (minuti < 10){
		minuti = "0" + minuti;
	}

	// Se arrivo qui allora la data è valida
	return ore + ":" + minuti;
}

function controlloCampoTxt(obj){
	if (comeTrim(obj.value)==""){
		return false;
	}else{
		return true;
	}
}

function controlloCampoCmb(obj){
	if (obj.value==0){
		return false;
	}else{
		return true;
	}
}

function comeTrim(sStringa){
	var sOriStringa;
	var sNewStringa;
	var bSwitch;

	//Trim a sinistra	
	sOriStringa = sStringa;
	sNewStringa = "";
	bSwitch = true;
	for (i = 0; i < sOriStringa.length; i++){
		if (sOriStringa.charCodeAt(i)!=32){
			bSwitch = false;
		}
		if ((sOriStringa.charCodeAt(i)==32) && bSwitch){
			sNewStringa = sNewStringa;
		}else{
			sNewStringa = sNewStringa + sOriStringa.charAt(i);
		}
	}
	
	//Inverte la stringa
	sOriStringa = sNewStringa;
	sNewStringa = "";
	bSwitch = true;
	for (i = sOriStringa.length; i > 0; i--){
		sNewStringa = sNewStringa + sOriStringa.charAt(i-1);
	}
	
	//Trim a sinistra della stringa invertita
	sOriStringa = sNewStringa;
	sNewStringa = "";
	bSwitch = true;
	for (i = 0; i < sOriStringa.length; i++){
		if (sOriStringa.charCodeAt(i)!=32){
			bSwitch = false;
		}
		if ((sOriStringa.charCodeAt(i)==32) && bSwitch){
			sNewStringa = sNewStringa;
		}else{
			sNewStringa = sNewStringa + sOriStringa.charAt(i);
		}
	}
	
	//Inverte ancora la stringa
	sOriStringa = sNewStringa;
	sNewStringa = "";
	bSwitch = true;
	for (i = sOriStringa.length; i > 0; i--){
		sNewStringa = sNewStringa + sOriStringa.charAt(i-1);
	}

	return sNewStringa;
}

/**************************************
	Controllo del Codice Fiscale
	Linguaggio: JavaScript
***************************************/

function ControllaCF(cf)
{
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return '';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
		return "La lunghezza del codice fiscale non è\n"
		+"corretta: il codice fiscale dovrebbe essere lungo\n"
		+"esattamente 16 caratteri.\n";
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return "Il codice fiscale contiene un carattere non valido `" +
				cf.charAt(i) +
				"'.\nI caratteri validi sono le lettere e le cifre.\n";
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return "Il codice fiscale non è corretto:\n"+
			"il codice di controllo non corrisponde.\n";
	return "";
}

/*****************************************
	Controllo della Partita I.V.A.
	Linguaggio: JavaScript
******************************************/

function ControllaPIVA(pi)
{
	if( pi == '' )  return '';
	if( pi.length != 11 )
		return "La lunghezza della partita IVA non è\n" +
			"corretta: la partita IVA dovrebbe essere lunga\n" +
			"esattamente 11 caratteri.\n";
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return "La partita IVA contiene un carattere non valido `" +
				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
		return "La partita IVA non è valida:\n" +
			"il codice di controllo non corrisponde.\n";
	return '';
}

//***************************************************************
//funzioni per la status bar 
//***************************************************************
function clearStatus() {
	window.status='';
	return true
}
function setStatus(str) {
	window.status=str;
	return true
}

//***************************************************************
//funzione di controllo sul campo email
function validateMail(formName,idField){
var strValue = document.forms[formName][idField].value;
var strLong = strValue.length;
var strNew  = "";
var numCarAct = "0"; //sensore che mi indica ache punto della stringa trovo "@". 
var numCarDot = "0"; //sensore che mi indica ache punto della stringa trovo l'ultimo ".". 
	var msg = "";
	if(strValue!=""){
		for(var i=0;i<strLong;i++){
			//alert(strValue.charAt(i));
			//conterollo sull'estensione...
			if(strValue.charAt(i)=="."){
				numCarDot = i+1;
			}
			//conterollo sull'@...
			if(strValue.charAt(i)=="@"){
				if(numCarAct!="0"){
					msg += "Il carattere \"@\" non può essere presente più volte nello stesso indirizzo e-mail!\n";
					numCarAct = i+1;
				}else{
					numCarAct = i+1;
				}
			}
		}
		
		if(numCarAct=="0"){
			msg += "Non è presente nessuna \"@\" all'interno dell'indirizzo e-mail!\n";
		}	
		
		if(numCarDot=="0"){
			msg += "Non è presente nessun \".\" all'interno dell'indirizzo e-mail!\n";
		}
		
		if((numCarAct>"0")&&(numCarDot>"0")){
			if(numCarAct>numCarDot){
				msg += "Il carattere \"@\" non può trovarsi dopo l'ultimo punto!\n";
			}
		
			if((numCarDot-strLong)>-2){
				msg += "All'ultimo punto devono seguire almeno due caratteri!\n";
			}
		}

		if(msg!=""){
			msg += "Indirizzo E-mail non corretto!";
			alert(msg);
			document.forms[formName][idField].focus();
			return false;
		}
		return true;		
	}else{
		return true;
	}
}
//***************************************************************
