
/*
	==========================================================================
	Modulo:			FJs-VerData
	Descrizione:	Controlli logici dei campi 
	Data creazione:	04/06/2005
	Elenco funzioni:
					
					
	==========================================================================
	The Software, including this file, is subject to the End User License
	Agreement.
	Copyright (c) 2003 - 2008 PcSitter. All rights reserved 
	==========================================================================
*/
/**FUNZIONI CONTROLLI TESTO*/
var vSpace = " \t\n\r";
/*
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Field
	Descrizione:	
	Argomenti:	
					vFieldName:		nome dell'oggetto
					len:			lunghezza minima richiesta
					
	Return: 		ritorna un codice d'errore
					1= lunghezza 0
					2= lunghezza inferiore a quella richiesta
					0= Stringa corretta
	Autore:			Garnero P.
	Modifiche:		08/06/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Ctr_Field(vFieldName,len){	
	vString=vFieldName.value;
	var err=0;
	if(vString.length>0){
		vString=f_Trim(vString);
		if(vString.length<=0){	
			err=1;	
			return err;				
		}
		if (vString.length < len){	
			err=2;
			return err;	    	
		}	
		if (vString.length > len){	
			err=3;
			return err;	    	
		}	
	}else
	 	err=1;
	return err;
}
/**
	--------------------------------------------------------------------------------------
	Nome:			f_CtrMaxLenght
	Descrizione:	Funzione il controllo della P. Iva
	Argomenti:	
					
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		24/07/01
	--------------------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------------------
*/
function f_CtrMaxLenght(vFieldName,vMaxLenght,Ctr){	
	var ver    = false;  
	var vString= vFieldName.value;	
	var err    =  f_Ctr_Field(vFieldName,vMaxLenght);
	if(G_KeySel != 46 && G_KeySel != 8 ){
   if(err==3 ){
		alert("Caratteri superiori a "+vMaxLenght);
		vFieldName.value = vString.substr(0,vMaxLenght);
		ver=false;
	}else		
		ver=true;
	}else
		ver=true;
	return ver;
}
/**
	--------------------------------------------------------------------------------------
	Nome:			f_VerLink
	Oggetto:	Funzione per la gestione dell'eliminazione
	Argomenti:	
					
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		24/07/01
	--------------------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------------------
*/
function f_VerLink(vObject) {
	f_OpenNew('http://'+vObject.value,400,400);

}
/**Funzioni Controllo Numeri*/
/**
	--------------------------------------------------------------------------
	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_CtrNumber
	Descrizione:	Funzione per la gestione dei Campi Data
	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)
		es. maxlength="10" onblur='f_CtrNumber(this,true,3);'   onKeyUp="return f_CtrNumber(this,false,3);" onKeyDown="return f_CtrNumber(this,false,3);"
	--------------------------------------------------------------------------
*/
function f_CtrNumber(vNumberName,ctr,vNumberType){
	if(G_KeySel != 46 && G_KeySel != 8 ){
		f_Set_Number(vNumberName,ctr,vNumberType);		
	}else
	return true;
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Nan
	Descrizione:	Funzione per il confronto formale di una Stringa solo numerica
	Argomenti:	
					vString:		Stringa da controllare	
					Ctr:			Controllo per l'attivazione del focus in caso di dati non numerici				
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		04/06/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Ctr_Nan(vFieldValue,Ctr){	
	if(vFieldValue.length>0){		
		vFieldValue=f_Remove_alpha(vFieldValue);
	}	
	return vFieldValue;
}


/**FUNZIONI CONTROLLI DATE*/
/**
--------------------------------------------------------------------------
	Nome:			f_CtrDate
	Descrizione:	Funzione per la gestione dei Campi Data
	Argomenti:		
					vDateName : nome del campo contenente i valori
					ctr : stato del controllo sulla data
					vDataType: Tipo di formattazzione data
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: es.maxlength="10" onblur='f_CtrDate(this,true,3);'   onKeyUp="return f_CtrDate(this,false,3);" onKeyDown="return f_CtrDate(this,false,3);"
	--------------------------------------------------------------------------
*/
function f_CtrDate(vDateName,ctr,vDataType){
	if(G_KeySel != 46 || G_KeySel != 8 ){
		var ver= f_Set_Date(vDateName,ctr,vDataType)	
		if(ctr&&vDateName.value.length>0){
			if(!ver){		
				alert("Data errata");	
				vDateName.focus();
				vDateName.select();
				return (false);
			}
			return true;
	  	}
	 	return ver;
	}else 
		return true;
}
/**
--------------------------------------------------------------------------
	Nome:			f_CtrYear
	Descrizione:	Funzione per la gestione del campo anno
	Argomenti:		
					vYearName : nome del campo contenente i valori
					ctr : stato del controllo sulla data
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: es. maxlength="4" onblur='f_CtrYear(this,true,3);'   onKeyUp="f_CtrYear(this,false,3);" onKeyDown="f_CtrYear(this,false,3);"
	--------------------------------------------------------------------------
*/
function f_CtrYear(vYearName,ctr){
	if(G_KeySel != 46 || G_KeySel != 8 ){
	var vDateValue =vYearName.value;
	vYearName.value= f_Remove_alpha(vDateValue);
	}else
		return true;
	
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Date
	Descrizione:	Funzione per i controlli logici della data
	Argomenti:		
					Date: Stringa da controllare 
					
	Return: 		true = OK - false = data errata
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Ctr_Date(Date){	
	day   = Date.substr(0,2);
	month = Date.substr(2,2);
	year  = Date.substr(4,4);
	if(Date.length>8 && Date.length<13){
		ora    = Date.substr(8,2);
		minuti = Date.substr(10,2);
	}else{
		ora    = "";
		minuti = "";
	}
	if(month>12||month<1)
		return(false);		
	if ((month == 4 || month == 6 || month == 9 || month == 11) && (day > 30 || day < 1)) {
		return(false);
	}
	else if (month == 2) {
		if (f_Ctr_Year(year) == true){
			if (day > 29) 
				return(false);
		}
		else{
			if (day > 28)
				return(false);
   		}
	}
	else
		if(day > 31 || day < 1)
			return(false);
	if(ora !="" && minuti!=""){
		if (ora>24)
			return(false);
		if(minuti>60)
			return(false);
	}
// controllo per i giorni del mese di febbraio.
return true;
}
/**
	--------------------------------------------------------------------------
	Nome:			f_Ctr_Year
	Descrizione:	Funzione per i controllo logico dell' anno
	Argomenti:		
					Year: Stringa da controllare 
					
	Return: 		true = anno di 366 gg - false = anno di 365 gg
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Ctr_Year(Year){
	if (Year % 100 == 0){
		if (Year % 400 == 0){ 
			return true; 
		}
	}
	else{
		if ((Year % 4) == 0){
		 	return true; 
		}
	}
	return false;
}
/*
	--------------------------------------------------------------------------
	Nome:			f_Compare_Date
	Descrizione:	Funzione per il Confronto logico della Data 
	Argomenti:		
				
	Return: 	
					0  i valori sono uguali
					1  il primo valore è maggiore del secondo
					2  il secondo valore è maggiore del primo
				
				
								
	Autore:			Garnero P.
	Modifiche:		27/06/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Compare_Date(data1,data2,vDataType) {
	var max = 0;
	var temp1 =  data1.split(Sep);
	var temp2 = data2.split(Sep) ;
	data1=temp1.join("");
	data2=temp2.join("");
	data1=f_Convert_Date(data1,vDataType); 
	data2=f_Convert_Date(data2,vDataType);  
    var day1      = data1.substr(0,2);
    var mounth1   = data1.substr(2,2);
    var year1     = data1.substr(4,4);	
    var day2      = data2.substr(0,2);
    var mounth2   = data2.substr(2,2);
    var year2     = data2.substr(4,4);
      if (year1<year2)
      	max=2;
      else if(year1>year2)
      	max=1;
      else {
      	if(mounth1<mounth2)
        	max=2;
        else if(mounth1>mounth2)
        	max=1;
        else {
        	if(day1<day2)
          	max=2;
          else if(day1>day2)
          	max=1;
          else
            max=0;
        }
      }
    return max;
}
