var Sep   = "/";
var day   = "";
var month = "";
var year  = "";
/**
	--------------------------------------------------------------------------
	Nome:			f_Set_Date
	Descrizione:	Funzione per l'impostazione della data per la formattazione ed i controlli
	Argomenti:		
					vDateName : oggetto 	
					ctr:		false =solo formattazione  della data
								true = formattazione e controllo logico della data
					vDataType	formato della data
													1 - mm/dd/yyyy
													2 - yyyy/mm/dd
													3 - dd/mm/yyyy
					
	Return: 		true = OK / false = data errata
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_CtrDate(vDateName,ctr,vDataType){
    f_Set_Date(vDateName,ctr,vDataType);
}
function f_Set_Date(vDateName,ctr,vDataType){
	if(window.event.keyCode != 46 && window.event.keyCode != 8 && window.event.keyCode != 9 ){
		var vDateValue =vDateName.value;
		vDateValue= f_Remove_alpha(vDateValue);
		if(ctr){
			if(isNaN(vDateValue)||isNaN(eval(vDateValue))||vDateValue<0){
				return (false);
			}
			if(vDateValue.length==6||vDateValue.length==8){
				vDateValue=f_Convert_Date(vDateValue,vDataType)			
				if(!f_Ctr_Date(vDateValue)){				
					return (false);
				}
			}
			else{			
				return (false);
			}
		}
		vDateName.value=f_Format_Date(vDateValue,ctr,vDataType);	
	}
	return true;
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Format_Date
	Descrizione:	Funzione per la formattazione della data
	Argomenti:		
					vDateValue: Stringa da formattare 
					ctr:		false =solo formattazione  della data
								true = formattazione e controllo logico della data
					vDataType:	formato della data
													1 - mm/dd/yyyy
													2 - yyyy/mm/dd
													3 - dd/mm/yyyy
					
	Return: 		stringa formattata nel formato richiesto
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Format_Date(vDateValue,ctr,vDataType){
	var len=vDateValue.length;
	if(vDataType==1){	
	//mm/dd/yyyy
		if(len==2){
			vDateValue = vDateValue+Sep;
		}
		if(len==3){
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,1);
			vDateValue = month + Sep + day;
		}
		if(len==4){
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,2);
			vDateValue = month + Sep + day + Sep;
		}
		if(len==5){
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,2);
			year       = vDateValue.substr(4,1);
			vDateValue = month + Sep + day + Sep + year;
		}
		if(len==6){
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,2);
			year       = vDateValue.substr(4,2);
			vDateValue = month + Sep + day + Sep + year;
		}
		if(len==7){
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,2);
			year       = vDateValue.substr(4,3);	
			vDateValue = month + Sep + day + Sep + year;
		}
		if(len >= 8){
			if(ctr){
				day        = vDateValue.substr(0,2);
				month      = vDateValue.substr(2,2);
				year 	   = vDateValue.substr(4,4);
			}
			else {
				month      = vDateValue.substr(0,2);
				day        = vDateValue.substr(2,2);
				year       = vDateValue.substr(4,4);
			}	
			vDateValue = month + Sep + day + Sep + year;
		}
	}
	if(vDataType==2){ 
	//yyyy/mm/dd		
		if(len ==4){
			year       = vDateValue.substr(0,4);			
			vDateValue = year + Sep;
		}
		if(len ==5){
			year       = vDateValue.substr(0,4);
			month      = vDateValue.substr(4,1);			
			vDateValue = year + Sep + month;
		}
		if(len ==6){
			year       = vDateValue.substr(0,4);	
			month      = vDateValue.substr(4,2);			
			vDateValue = year + Sep + month + Sep;
		}
		if(len ==7){
			year       = vDateValue.substr(0,4);	
			month      = vDateValue.substr(4,2);	
			day        = vDateValue.substr(6,1);
			vDateValue = year + Sep + month + Sep + day;
		}
		if(len >=8){
			if(ctr){
				day        = vDateValue.substr(0,2);
				month      = vDateValue.substr(2,2);
				year 	   = vDateValue.substr(4,4);
			}
			else {
				year       = vDateValue.substr(0,4);	
				month      = vDateValue.substr(4,2);	
				day        = vDateValue.substr(6,2);
			}
			vDateValue = year + Sep + month + Sep + day;			
		}
		
	}
	if(vDataType==3){	
	//dd-mm-yyyy
		if(len ==2)
			vDateValue = vDateValue+Sep;
		if(len ==3){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,1);
			vDateValue = day + Sep + month;
		}
		if(len ==4){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			vDateValue = day + Sep + month + Sep;
		}
		if(len ==5){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			year 	   = vDateValue.substr(4,1);
			vDateValue = day + Sep + month + Sep + year;
		}
		if(len ==6){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			year       = vDateValue.substr(4,2);		
			vDateValue = day + Sep + month + Sep + year;
		}
		if(len ==7){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			year 	   = vDateValue.substr(4,3);
			vDateValue = day + Sep + month + Sep + year;
		}
		if(len>=8){
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			year 	   = vDateValue.substr(4,4);
			vDateValue = day + Sep + month + Sep + year;
		}
	}
	return vDateValue;
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Format_Year
	Descrizione:	Funzione per la formattazione dell' anno
	Argomenti:		
					mYear : oggetto 	
					
					
	Return: 		l'anno formattato
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: Controlla l'anno, se le ultime due cifre sono maggiori di 30 anni
		 dalla data odierna imposta le prime due a 19 altrimenti a 20
	--------------------------------------------------------------------------
*/
function f_Format_Year(mYear) {
	if (mYear.length == 2 ) {
		var mToday     = new Date();
		var checkYear  = mToday.getFullYear() + 30; 
		var mCheckYear = '20' + mYear;
		if (mCheckYear >= checkYear)
			mYear = '19' + mYear;
		else
			mYear = '20' + mYear;
	}	
return mYear;	
}

function getAnno(strData, vDataType){
  var vDateValue = f_Remove_alpha(strData);
  vDateValue =f_Convert_Date(vDateValue,vDataType); 
  var len = vDateValue.length;
  var year = 0;
    if(len==6){
      year       = vDateValue.substr(4,2);
    }
    if(len==7){
      year       = vDateValue.substr(4,3);	
    }
    if(len >= 8){
      year 	   = vDateValue.substr(4,4);
    }
  return year;
}

/**
	--------------------------------------------------------------------------
	Nome:			f_Convert_Date
	Descrizione:	Funzione per la formattazione della stringa data per i controlli logici
	Argomenti:		
					vDateValue: Stringa da formattare 
					vDataType:	formato della Stringa 
													1 - mm/dd/yyyy
													2 - yyyy/mm/dd
													3 - dd/mm/yyyy
					
	Return: 		la data nel formato ddmmyyyy
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function f_Convert_Date(vDateValue,vDataType){
	var len=vDateValue.length;
	if(vDataType==1){	
			month      = vDateValue.substr(0,2);
			day        = vDateValue.substr(2,2);
		if(len==6)
			 year   = f_Format_Year(vDateValue.substr(4,2));
		else
			 year   = vDateValue.substr(4,4);		
	}
	if(vDataType==2){				
			year       = vDateValue.substr(0,4);	
			month      = vDateValue.substr(4,2);	
			day        = vDateValue.substr(6,2);
	}
	if(vDataType==3){	
			day        = vDateValue.substr(0,2);
			month      = vDateValue.substr(2,2);
			if(len==6)
				year   = f_Format_Year(vDateValue.substr(4,2));
			else
				year   = vDateValue.substr(4,4);	
	}
	vDateValue=day+month+year;	
	return vDateValue;
}

/*
	--------------------------------------------------------------------------
	Nome:			f_Reformat_Date
	Descrizione:	Funzione per la Foramttazione di una data precedentemente formattata
	Argomenti:		
					vDate: Data da riformattare
					
					vDataType:	formato della della data
													1 - mm/dd/yyyy
													2 - yyyy/mm/dd
													3 - dd/mm/yyyy
	Return: 	la stringa riformattata
				
								
	Autore:			Garnero P.
	Modifiche:		27/06/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/

function f_Return_Date(vDataType) {	
	var now  =  new Date();
	var mounth ,day,year;
	mounth =now.getMonth()+1
	if (mounth>0&&mounth<10)
	 		mounth = "0" + mounth;
	day = now.getDate();
	if(day>0&&day<10)
 		day = "0" +day;
	if(vDataType==0){			
		var vDate= now.toLocaleString();
	}
	if(vDataType==1){			
		vDate=mounth+"/"+day+"/"+now.getYear();
	}
	if(vDataType==2){
		vDate=now.getYear()+"/"+day+"/"+mounth;
	}
	if(vDataType==3){
		vDate=day+"/"+mounth+"/"+now.getYear();
	}
return vDate;
}

/**
	--------------------------------------------------------------------------
	Nome:			f_Set_Number
	Descrizione:	Funzione per la formattazione dei numeri
	Argomenti:		Argomenti:		
					vNumberName : nome del campo contenente i valori
					ctr : stato del controllo sui decimali
					vNumberType: Tipo di formattazzione numero
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: vNumberType:
                     1= Double 
                     2=Integer
                     3= Composito(es +10-15)
	--------------------------------------------------------------------------
*/
var sepdec=',';
function f_Set_Number(vNumberName,ctr,vNumberType){
        if (vNumberType==1)
            vNumberName.value=  FormatDouble(vNumberName.value,ctr);
        else if (vNumberType==2)
            vNumberName.value=  FormatInteger( vNumberName.value,ctr);
        else if (vNumberType==3)
            vNumberName.value=  FormatCompost( vNumberName.value,ctr);
		else if (vNumberType==4)
            vNumberName.value=  FormatRec( vNumberName.value,ctr);

}
/**
	--------------------------------------------------------------------------
	Nome:			FormatDouble
	Descrizione:	Funzione per la formattazione dei numeri con 2 decimali
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function FormatDouble(vNumbervalue,ctr){
    var vInter = "";
    var vDecim = "0000";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    	vTemp="";
    if(vTemp.indexOf(".")!=-1)
    	vTemp = vTemp.replace(".",",");
    if(vTemp.indexOf(sepdec)!=-1){
		if(ctr)
			vTemp=setArrotonda(vTemp);
        vInter=vTemp.substring(0,vTemp.indexOf(sepdec));
        vDecim=vTemp.substring(vTemp.indexOf(sepdec),vTemp.length);
        vTemp = f_Ctr_Inter(vInter)+ sepdec + f_Ctr_Decimal(vDecim,ctr);
    }else if(vTemp.indexOf(sepdec)==-1 && ctr){
        vTemp = f_Ctr_Inter(vTemp)+sepdec + f_Ctr_Decimal(vDecim,ctr);
    }else
        vTemp = f_Ctr_Inter(vTemp);
    vNumbervalue = vTemp;
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------
	Nome:			FormatInteger
	Descrizione:	Funzione per la formattazione dei numeri interi
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function FormatInteger(vNumbervalue,ctr){
    var vInter ="";
    var vDecim ="";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    	vTemp="";
    if(vTemp.indexOf(".")!=-1)
    	vTemp = vTemp.replace(".",",");
    if (vTemp.indexOf(sepdec)!=-1){
	    vInter=vTemp.substring(0,vTemp.indexOf(sepdec));
	    vDecim=vTemp.substring(vTemp.indexOf(sepdec),vTemp.length);
	    vTemp = f_Ctr_Inter(vInter)+f_Ctr_Decimal(vDecim);
    }else{
        vTemp = f_Ctr_Inter(vTemp);
    }
    vNumbervalue = vTemp;
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------
	Nome:			FormatCompost
	Descrizione:	Funzione per la formattazione dei numeri compositi
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function FormatCompost(vNumbervalue,ctr){
    var vInter ="";
    var vDecim ="";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    vTemp="";
    var len  = vTemp.length;
	var temp = "";	
	for(var i=0;i<len;i++){
		var num = vTemp.charAt(i);
		if(num<10)
			temp = temp + num;
        else if(num=="+")
            temp = temp + num;
        else if(num=="-")
            temp = temp + num;
		else if(num==",")
			temp = temp + num;
		else if(num==".")
			temp = temp + ",";
	} 
	vTemp = temp;
    vNumbervalue = vTemp;
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------
	Nome:			FormatCompost
	Descrizione:	Funzione per la formattazione dei numeri compositi
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function FormatRec(vNumbervalue,ctr){
    var vInter ="";
    var vDecim ="";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    vTemp="";
    var len  = vTemp.length;
	var temp = "";	
	for(var i=0;i<len;i++){
		var num = vTemp.charAt(i);
		if(num<10)
			temp = temp + num;
        else if(num=="+" && i<2)
            temp = temp + num;
        
	} 
	vTemp = temp;
    vNumbervalue = vTemp;
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Inter
	Descrizione:	Funzione per il controllo della parte degli interi
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function f_Ctr_Inter(vInter){
    if(vInter.length==0 || vInter==0)
        vInter = f_Ctr_Nan(vInter);		
    return vInter ;			
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Decimal
	Descrizione:	Funzione per il controllo della parte dei decimali
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function f_Ctr_Decimal(vDecimal,vCtr){
    nDec=3;
    vDecimal = f_Ctr_Nan(vDecimal);
    if(vCtr && vDecimal.length < nDec){	
    		vDecimal  = vDecimal+"00000";	
    	}		
    	vDecimal =  vDecimal.substr(0,nDec);	
    return vDecimal ;			
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Remove_MilSep
	Descrizione:	Funzione per la rimozione dei separatori di Migliaia
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function f_Remove_MilSep(Oggetto){
var vTemp =Oggetto.value.split(".");
Oggetto.value = vTemp.join("");
}
/**
	--------------------------------------------------------------------------
	Nome:			f_getNumber
	Descrizione:	Funzione per la rimozione dei separatori di Migliaia
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare
					ctr : stato del controllo sui decimali

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function f_getNumber(vNumbervalue,vNumberType){
	if(window.event.keyCode != 46 && window.event.keyCode != 8 && window.event.keyCode != 9 ){
	    if (vNumberType==1)
	            vNumbervalue=  getDouble(vNumbervalue);
	        else if (vNumberType==2)
	            vNumbervalue=  getInteger(vNumbervalue);
	        else if (vNumberType==3)
	            vNumbervalue=  f_Trim(vNumbervalue);
		return vNumbervalue; 
	}else
		return true;
}
/**
	--------------------------------------------------------------------------
	Nome:			getDouble
	Descrizione:	Funzione per la formattazione dei numeri con 2 decimali
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function getDouble(vNumbervalue){
    var vInter = "";
    var vDecim = "0000";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    vTemp="";
    if (vTemp.indexOf(sepdec)!=-1){
        vInter=vTemp.substring(0,vTemp.indexOf(sepdec));
        vDecim=vTemp.substring(vTemp.indexOf(sepdec),vTemp.length);
        vTemp = f_Ctr_Inter(vInter)+ sepdec + f_Ctr_Decimal(vDecim,true);
    }
    if(vTemp.indexOf(",")!=-1)
    	vTemp = vTemp.replace(",",".");
    else if (vTemp.indexOf(sepdec)==-1 ){
        vTemp = f_Ctr_Inter(vTemp)+"." + f_Ctr_Decimal(vDecim,true);
    }else
        vTemp = f_Ctr_Inter(vTemp);
    vNumbervalue = new Number(vTemp);
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------
	Nome:			getDouble
	Descrizione:	Funzione per la formattazione dei numeri con 2 decimali
	Argomenti:		Argomenti:		
					vNumbervalue : il valore da formattare

					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note:
	--------------------------------------------------------------------------
*/
function getInteger(vNumbervalue){
    var vInter = "";
    var vDecim = "00";
    var vTemp  = vNumbervalue;
    if (vTemp.length==0)
    vTemp="";
        vTemp = f_Ctr_Inter(vTemp);
    vNumbervalue = new Number(vTemp);
    return vNumbervalue;
}
/**
	--------------------------------------------------------------------------------------
	Nome:			setSconto
	Descrizione:	Funzione la gestione dello sconto
	Argomenti:	
					
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		24/07/01
	--------------------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------------------
*/
function setSconto(strSconto,strImporto){
    var newValue = "";
	var ris = 0;
	var i=0;
	var value =0;
	if(strImporto!=null && strImporto!="")
		ris = strImporto;    
    if(strSconto==null)
    strSconto="";
    if(strSconto!=""){
        var Matrix = new Array();
        Matrix=f_Split(strSconto,"+","-");
        while(i<Matrix.length){
		  value=getDouble(Matrix[i]);
          ris = ris*(1-(value/100));
          i++;
        }
    }
    newValue = ris;
    return newValue;
 }
 /**
	--------------------------------------------------------------------------------------
	Nome:			setArrotonda
	Descrizione:	Funzione la gestione dello sconto
	Argomenti:	
					
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		24/07/01
	--------------------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------------------
*/
function setArrotonda(strImporto){
	var vTemp=getDouble(strImporto);
	var Prova ="";
	vTemp =vTemp+0.0005;
	Prova=vTemp +"";
	 if(Prova.indexOf(".")!=-1)
    	vTemp = Prova.replace(".",",");
	return vTemp;
	
}
