//numero decimale
function checkDecimal(th){
	if (th.value!=null && th.value!=""){
		//converto la virgola in punto
		th.value=th.value.replace(",",".");
		//controllo che sia un numero
		if (validateInput(th,['N'])){
			//arrotondo a due cire decimali
			th.value=Math.round(th.value*100) / 100
			//aggiungo gli zeri dopo la virgola se non ci sono
			var isP=th.value.indexOf(".");
			if (isP==-1){
				th.value=th.value + ".00"; 
			}else{
				if ((th.value.substring(isP+1,isP+3)).length==0)
					th.value=th.value + ".00";	
				if ((th.value.substring(isP+1,isP+3)).length==1)
					th.value=th.value + "0";
			}
			//converto il punto in virgola
			th.value=th.value.replace(".",","); 
		}
	}
}	

//data mese/anno (mm/yyyy)
function validateShortDate(ele) {
	if (ele.value!="") {
		if (ele.value.length<6) {
			alert("Attesa data (mm/aaaa)");
			ele.focus(); 
			}
		else {
			res=ele;
			res="01/"+ele.value;
			if (res.substr(5,1)!=("/")){
				reso=res.substr(0,5)
				reso+="/"
				reso+=res.substr(5,8)
				res=reso;
			}
			obj=res.replace(/[^\d]/g,"0");
			gg=obj.substr(0,2)
			mm=obj.substr(3,2);
			aa=obj.substr(6,4);
			strdata=gg+"/"+mm+"/"+aa;	
			data = new Date(aa,mm-1,gg);
			daa=data.getFullYear().toString();
			dmm=(data.getMonth()+1).toString();
			dmm=dmm.length==1?"0"+dmm:dmm
			dgg=data.getDate().toString();
			dgg=dgg.length==1?"0"+dgg:dgg
			dddata=dgg+"/"+dmm+"/"+daa
			if (dddata!=strdata){
				alert("Attesa data (mm/aaaa)");
				ele.value=dddata.substr(4,7); // Nel campo viene scritta la data generata
				ele.focus(); //viene ridato il focus per il reinserimento
				//document.modulo.data.value=""; // Il campo viene cancellato
			}
			ele.value=dddata.substr(3,7); // Nel campo viene scritta la data generata
		}
	}
}	

//by yuri per far tornare un booleano
function validateShortDateBol(ele) {
	if (ele.value!="") {
		if (ele.value.length<6) {
			alert("Attesa data (mm/aaaa)");
			ele.focus(); 
			return false;
			}
		else {
			res=ele;
			res="01/"+ele.value;
			if (res.substr(5,1)!=("/")){
				reso=res.substr(0,5)
				reso+="/"
				reso+=res.substr(5,8)
				res=reso;
			}
			obj=res.replace(/[^\d]/g,"0");
			gg=obj.substr(0,2)
			mm=obj.substr(3,2);
			aa=obj.substr(6,4);
			strdata=gg+"/"+mm+"/"+aa;	
			data = new Date(aa,mm-1,gg);
			daa=data.getFullYear().toString();
			dmm=(data.getMonth()+1).toString();
			dmm=dmm.length==1?"0"+dmm:dmm
			dgg=data.getDate().toString();
			dgg=dgg.length==1?"0"+dgg:dgg
			dddata=dgg+"/"+dmm+"/"+daa
			if (dddata!=strdata){
				alert("Attesa data (mm/aaaa)");
				ele.focus(); //viene ridato il focus per il reinserimento
				return false;
			}
			ele.value=dddata.substr(3,7); // Nel campo viene scritta la data generata
			return true;
		}
	}
	return true;
}	

function controlloRangeDate(opt,opt1){
	if(opt.value!="" && opt1.value!=""){
		var giornoDa = opt1.value.substr(0,2)
		var meseDa = opt1.value.substr(3,2)-1
		var annoDa = opt1.value.substr(6)
		var giornoA = opt.value.substr(0,2)
		var meseA = opt.value.substr(3,2)-1
		var annoA = opt.value.substr(6)
		if(annoDa<annoA){
			return false;
		}else if (meseDa<meseA && annoDa==annoA){
			return false;
		}else if (giornoDa<giornoA && meseDa==meseA && annoDa==annoA){
			return false;
		}
		return true;
	}
}

function controlloRangeDateMese(opt,opt1){
	if(opt.value!="" && opt1.value!=""){
		var giorno = "01"
		var meseDa = opt1.value.substr(0,2)-1
		var annoDa = opt1.value.substr(3)
		var meseA = opt.value.substr(0,2)-1
		var annoA = opt.value.substr(3)
		var dataDa = new Date(annoDa,meseDa,giorno)
		var dataA = new Date(annoA,meseA,giorno)
		if(dataDa.getTime()>dataA.getTime()){
			alert('La data di fine periodo non puņ essere anteriore alla data di inizio periodo');
			opt.value="";
			opt.focus();
		}
	}
}

//validazione campo ora
function validateH(input,opt) {
  var val = input.value;
  var dre = /^[0-9]?[0-9]\:[0-5]?[0-9]$/;
  if (val != null && val != "")
    if (!(dre.test(val)))
       return "Attesa ora";
}

function validateO(input,opt) {
  var val = input.value;
  var dre = /^[0-4]?[0-9]\:[0-5]?[0-9]$/;
  if (val != null && val != "")
    if (!(dre.test(val)))
       return "Attesa ora";
}
//**********************************************************************************************************************

function isInteger(input){
	var INTEGER = new String("0123456789")
	var VALORE= new String(input.value)
	var continua = new Boolean("true")
	for (var i=0; i<= VALORE.length -1; i++){
		continua = INTEGER.search(VALORE.substring(i,i+1)) != -1
		if (VALORE.substring(i,i+1) == "."){
			continua=false
		}
		if (!continua){
			break
		}
	}
	if (!continua){
		 return "Valore non ammesso";
	}else{
		 return ""
	} 
}

function isIntegerRangeMax(input, max){
	var INTEGER = new String("0123456789");
	var VALORE= new String(input.value);
	var MASSIMO = max;
	var continua = new Boolean("true")
	for (var i=0; i<= VALORE.length -1; i++){
		continua = INTEGER.search(VALORE.substring(i,i+1)) != -1
		if (VALORE.substring(i,i+1) == "."){
			continua=false;
		}
		if (!continua){
			break
		}
	}	
	if (continua && VALORE > max) return "Valore troppo alto";	
	if (!continua){
		 return "Valore non ammesso";
	}else{
		 return ""
	} 
}

function isIntegerRangeMin(input, min){
	var INTEGER = new String("0123456789");
	var VALORE= new String(input.value);
	var MINIMO = min;
	var continua = new Boolean("true")
	for (var i=0; i<= VALORE.length -1; i++){
		continua = INTEGER.search(VALORE.substring(i,i+1)) != -1
		if (VALORE.substring(i,i+1) == "."){
			continua=false;
		}
		if (!continua){
			break
		}
	}	
	if (continua && VALORE < min) return "Valore troppo basso";	
	if (!continua){
		 return "Valore non ammesso";
	}else{
		 return ""
	} 
}

function isIntegerAlert(input){
	var ret = isInteger(input)
	if(ret != ''){		
		alert(ret);	
		input.focus();
		input.value='';	
	}
}

function isIntegerRangeMaxAlert(input, max){
	var ret = isIntegerRangeMax(input, max)
	if(ret != ''){		
		alert(ret);	
		input.focus();
		input.value='';	
	}
}

function isIntegerRangeMinAlert(input, max){
	var ret = isIntegerRangeMin(input, max)
	if(ret != ''){		
		alert(ret);	
		input.focus();
		input.value='';	
	}
}

//*********************************************************************************************************

//funzione aggiornata al 30 nov 2005 da Giuliani, per implementare la formattazione dell'orario anche
//nel caso in cui non sia stato messo il punto e il due punti
function validateFORMAT(input) { 
	var val = input.value;
  	if(val !=null && val!=""){ 
  		if (val.indexOf(":") > -1)
			val= val.substring(0,val.indexOf(":"))+"."+val.substring(val.indexOf(":") + 1);
  		if (val.indexOf(".") > -1){
			val= val.substring(0,val.indexOf("."))+":"+val.substring(val.indexOf(".") + 1);
   		} else {   			
   			//controllo aggiunto per gestire il caso non sia stata messa divisione per l'orario
   			//tenendo conto che i minuti possono essere 1 o 2 caratteri, mentre le ore non hanno
   			//un limite definito 
   			//primo caso, 1 o due caratteri, solo minuti, aggiunge 00 alle ore
   			if (val.length > 0 && val.length <= 2) val = "00:" + val;
   			//secondo caso 3 caratteri, aggiunge 0 alle ore
   			else if (val.length == 3) val = "0" + val.substring(0,1) + ":" + val.substring(1,3);
   			//casi maggiori di 3 si limita a formattare
   			else if  (val.length > 3) val = val.substring(0,(val.length-2)) + ":" + val.substring(val.length-2,val.length);
   			//alert (val);			
   		}	
  	} 
	var dre = /^[0-9]+\:[0-5]?[0-9]$/;
  	if (val != null && val != ""){
		if (!(dre.test(val))){
			return "Attesa ora";
		}
		else{
			var minuti = new String(getMM(val))
			var ore = new String(getHH(val))
			
			if (ore.length < 2){ore = '0' + ore}
			if (minuti.length < 2){minuti = '0' + minuti}
			input.value = ore + ':' + minuti; 			
			return ""
		} 
	}
}

function validateRANGEMAX(input,MAX) { 
  	if (validateFORMAT(input) !="Attesa ora"){
		var minuti = new Number(getMinuti(input.value))
		var minutiMAX = new Number(getMinuti(MAX))
		if (minuti > minutiMAX){
			return 'Il valore massimo e\' ' + MAX
		}else{
			return ""
		}
	}else{
		return "Attesa ora"
	}
}

function validateRANGEMAXalert(input,MAX) { 
	var ret = validateRANGEMAX(input,MAX)
	if (ret != ''){
		alert(ret);
		input.focus();
		input.value=''
	}
}
function validateRANGEMIN(input,MIN) { 
  	if (validateFORMAT(input) !="Attesa ora"){
		var minuti = new Number(getMinuti(input.value))
		var minutiMIN = new Number(getMinuti(MIN))
		if (minuti < minutiMIN){
			return 'Il valore minimo e\' ' + MIN
		}else{
			return ""
		}
	}else{
		return "Attesa ora"
	}

}
function validateRANGEMINalert(input,MIN) { 
	var ret = validateRANGEMIN(input,MIN)
	if (ret != ''){
		alert(ret);
		input.focus();
		input.value=''
	}
} 
function validateFORMATalert(input){
	var ret = validateFORMAT(input);
	if(ret != '' && ret != undefined ){
		alert(ret)
		input.value='';
		//alert('CIAO122')
		//document.getElementById('ACTION').setAttribute('value','');
		input.focus();		
		

		//alert(input.getAttribute('name')); 
	}
}
function getHH(value){
	return value.substring(0,value.indexOf(":"))
}
function getMM(value){
	return value.substring(value.indexOf(":") + 1)
}
function getMinuti(value){
	 return new Number(new Number(getHH(value)) * 60 + new Number(getMM(value)))
}
function getPercorsoHTML(percorso){
	return new String(percorso).substring(0,last(percorso,"/") -1)
}
function last(str,carattere){
	var pos = -1
	var i = str.length
	while (pos == -1 && i>=0){
		if (str.substring(i-1,i) == carattere){
			pos=i
		}
		i--	
	}
	return pos
}	
//*********************************************************************************************************
  
 function checkMail(th){
 	if (th.value!=null && th.value!=""){
		EmailAddr = th.value;
		Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
		if (Filtro.test(EmailAddr))
			return true;
		else{
		alert('inserire un indirizzo E-Mail valido')
		th.focus();
		return false;
		}
	}
}
  