/*
	==========================================================================
	Modulo:			Control_Data.js
	Descrizione:	 Controlli formali/logici dei campi obligatori
	Data creazione:	04/06/2001
	Elenco funzioni:
					. f_Trim
					. f_Ctr_Field
					
	==========================================================================
	The Software, including this file, is subject to the End User License
	Agreement.
	Copyright (c) 2003 - 2008 PcSitter. All rights reserved 
	==========================================================================
*/
var vSpace = " \t\n\r";
/**
	--------------------------------------------------------------------------
	Nome:			f_Trim
	Descrizione:	Funzione per il confronto formale di una Stringa
	Argomenti:	
					vString:		Stringa da controllare
					
	Return: 		la Stringa verificata e ripulita dai caratteri non validi
	Autore:			Garnero P.
	Modifiche:		04/06/2001
	--------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------
*/
function f_Trim(vString){	
	var h;
	var j;
	var i ;
	var k=vString.length;
   for(i=0;i<k;i++){
   	vChar=vString.charAt(i);
	   	for(j=0;j<vSpace.length;j++){	
			if(vChar==vSpace.charAt(j)){
				j==vSpace.Length;				
				vChar="{";
			}
	   }
	   if(vChar!="{")
	 		k=i;
	}	
	vString =vString.substr(k,vString.length);
	k=vString.length-1;
   for(i=k;i>0;i--){	
   		vChar=vString.charAt(i);		
		for(j=0;j<vSpace.length;j++){	
			if(vChar==vSpace.charAt(j)){	
				j==vSpace.Length;				
				vChar="{";
			}
	   }
	   if(vChar!="{"){	
			k=i+1;
			i=0;
		}
	}
	vString =vString.substr(0,k);
	return vString;
}
/**
-------------------------------------------------------------------------
	Nome:			f_Split
	Descrizione:	rimuove dalla Stringa passata tutti i valori
					non compresi tra 1 e 9
	Argomenti:		
					vString: Stringa da formattare 
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: Utilizzata dai File JS Formatting_Currency - Formatting_Perc 
	--------------------------------------------------------------------------
*/
function f_Split(vString,strSep1,strSep2){
	var len  = vString.length;
	var Matrix = new Array();	
    i = vString.indexOf(strSep1);
    j = vString.indexOf(strSep2);
    x=0;
	 if(j!=-1&&j<i)
      i=j;
    if(i==-1&&j!=-1)
      i=j;
    if(j>i&&i!=-1)
      j=i;
    while (i!=-1){
      len             = vString.length;
      Matrix[x]       = f_Trim(vString.substring(0,i));
      vString         = vString.substring(i);
      i               = vString.indexOf(strSep1,i);
      j               = vString.indexOf(strSep2,j);
      if(j!=-1&&j<i)
        i=j;
      if(i==-1&&j!=-1)
        i=j;
      if(j>i&&i!=-1)
       j=i;
       x++;
    }
    if (i==-1&&j==-1)
       Matrix[x]=vString;
   return Matrix;
} 

/*
	--------------------------------------------------------------------------
	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=4
	}else
	 	err=1;
	return err;
}
/**
--------------------------------------------------------------------------
	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: 
	--------------------------------------------------------------------------
*/
//maxlength="10" onblur='f_Ctr(this,true,3);'   onKeyUp="return f_Ctr(this,false,3);" onKeyDown="return f_Ctr(this,false,3);"
function f_CtrDate(vDateName,ctr,vDataType){
	if(window.event.keyCode != 46 || window.event.keyCode != 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: 
	--------------------------------------------------------------------------
*/
//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(window.event.keyCode != 46 || window.event.keyCode != 8 ){
	var vDateValue =vYearName.value;
	vYearName.value= f_Remove_alpha(vDateValue);
	}else
		return true;
	
}
/**
--------------------------------------------------------------------------
	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)
	--------------------------------------------------------------------------
*/
//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(window.event.keyCode != 46 && window.event.keyCode != 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;
}
/**
--------------------------------------------------------------------------
	Nome:			f_Remove_alpha
	Descrizione:	rimuove dalla Stringa passata tutti i valori
					non compresi tra 1 e 9
	Argomenti:		
					vString: Stringa da formattare 
					
	Return: 		la Stringa corretta
	Autore:			Garnero P.
	Modifiche:		27/08/2001
	--------------------------------------------------------------------------
	Note: Utilizzata dai File JS Formatting_Currency - Formatting_Perc 
	--------------------------------------------------------------------------
*/
function f_Remove_alpha(vString){
	var len  = vString.length;
	var temp = "";	
	for(var i=0;i<len;i++){
		var num = vString.charAt(i);
		if(num<10)
			temp = temp + num;
	} 
	vString = temp;
	return vString;
}
/**
	--------------------------------------------------------------------------
	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(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);
// 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);
	alert(year1+"-"+year2);
      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;
}
/**
	--------------------------------------------------------------------------------------
	Nome:			f_VerEmail
	Descrizione:	Funzione il controllo dell'Email
	Argomenti:	
					
					
	Return: 		
	Autore:			Garnero P.
	Modifiche:		24/07/01
	--------------------------------------------------------------------------------------
	Note: 
	--------------------------------------------------------------------------------------
*/

function f_VerEmail(vFieldName){
	var EmailValue=vFieldName.value;
	if (EmailValue!=""){
	   var i=new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	   if(!i.test(EmailValue)) { 
	   	 alert("Email non valida");
		 vFieldName.focus();
	   } 
   }
   return true;
}