/* author: Cristian Metelli */
/* Last update: 05/11/2004 */


// Verifica indirizzo di posta elettronica

function isValidEmail(_value)
 {
  var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
  if( re.test(_value))
  {	
   return true;
  }
  else
  {
   return false;
  }
 }


// Verifica formato data (gg/MM/aaaa)

function isValidDate(_value)
 {
  var _RegExp = new RegExp("^(?:(?:31(/)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(/)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{4})$|^(?:29(/)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(/)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{4})$");
  if(_RegExp.test(_value))
  {
   return true;
  }  
  else
  {
   return false;
  }
 }


// Verifica formato ora (hh:mm:ss)

 function isValidTime(_value)
 {

  var _RegExp = new RegExp("^(([0]?[0-9]|1[0-9]|2[0-3])(:)([0-5][0-9])(:)([0-5][0-9]))$");

  if(_RegExp.test(_value))	
  {
   return true;
  }
  else
  {
   return false;
  }
}



// Verifica formato data e ora (gg/MM/aaaa hh:mm:ss)

 function isValidDateTime(_value)
 {  
   var _RegExp = new RegExp("^((0?[1-9]|1[0-9]|2[0-9]|3[0-1])(/)(0?[1-9]|1[0-2])(/)((1[6-9]|[2-9]\\d)?\\d{4})( )([0]?[0-9]|1[0-9]|2[0-3])(:)([0-5][0-9])(:)([0-5][0-9]))$");
  
  if(_RegExp.test(_value))	
  {
   var dateToCheck=_value.split(" ");
   return isValidDate(dateToCheck[0]);
  }
  else
  {
   return false;
  }
 
 }

 // Verifica se il dato è un intero compreso fra 0 e n
 
 function isPositiveNumber(_value)
 {
  var _RegExp = new RegExp("^(0|[1-9][0-9]*)$");
  if(_RegExp.test(_value))	
  {
   return true;
  }
  else
  {
   return false;
  }
 }
 
 // Verifica se il dato è un intero compreso fra -n e 0

 function isNegativeNumber(_value)
 {
  var _RegExp = new RegExp("^0|(-[1-9][0-9]*)$");
  if(_RegExp.test(_value))	
  {
   return true;
  }
  else
  {
   return false;
  }
 }


 
 // Verifica Nome, Cognome, Città
 
 function isName(_value,fname)
 {
  var _RegExp = new RegExp("([a-zA-Z\ ]{3,})");
  
  if(!_RegExp.test(_value)) 
  { 
   return false
  }   
  return true;
 }
 
 
 // Verifica Password
 
 function isPassword(_value,fname)
 {
  var _RegExp = new RegExp("([a-zA-Z0-9]{6,20})");
  if(!_RegExp.test(_value)) 
  { 
   return false
  }   

  var _RegExp = new RegExp("([0-9+])");
  if(!_RegExp.test(_value)) 
  { 
   return false
  }   
  return true;
 } 
 
 
 // Verifica Url
 
 function isURL(_value)
 {
  var _RegExp = new RegExp("HTTP:\/\/([a-zA-Z\.0-9]{2,})\.([a-zA-Z\.0-9]{2,})");
  if(!_RegExp.test(what)) 
  { 
   return false
  }   
  return true;
 }


 // Verifica Tel/Fax
 
 function isTelFax(_value,fname)
 {
	var RegExp=/\D/ 
	
	if(RegExp.test(_value))
		return false;

	if((_value.length > 7) && (_value.substring(0,2)=="39"))
		return true;

	return false;

 }
 
 
 
 // Verifica Partita IVA
 
 function isPIVA(_value)
 {
  if(what.length>0)
  {
   var _RegExp = new RegExp("[0-9]{11}");	
   if(!_RegExp.test(_value)) 
   { 
	return false
   }   
  }
  return true;
 }

 
 // Verifica CAP
 
 function isCAP(_value)
 {
  var _RegExp = new RegExp("^[0-9]{5}$");
	
  if(!_RegExp.test(_value)) 
  { 
   return false 
  }   
  return true;
 }

 
 // Verifica CF
 function isCF(_value)
 {
  var _RegExp = new RegExp("([a-zA-Z0-9]{16})"); 
  if(!_RegExp.test(_value)) 
  { 
   return false 
  }   
  return true;
 }

 
 // Verifica indirizzo
 function isAddress(_value)
 {
  var _RegExp = new RegExp("([a-zA-Z0-9\ ]{3,})");
  if(!_RegExp.test(_value)) 
  { 
   return false 
  }
  return true;
 }



 // Verifica Titolare carta di credito
 function isCCOwner(what)
 {
  var i=new RegExp("([a-zA-Z\. ])");

  if(!i.test(what)) { return false }
  return true;
 }

 
 // Verifica Numero carta di credito
 function isCCNumber(what)
 {
  var i=new RegExp("([0-9]{16,20})");
  if(!i.test(what)){return false}
  return true;
 }

 
 // Verifica scadenza carta di credito
 function isCCExpiration(what)
 {
  var i=new RegExp("([0-9]{1,2})/([0-9]{4})$");
  if(i.test(what))
  {
  datePart=what.split("/");
  mese=(datePart[0]>=1) && (datePart[0]<=12);
  anno=(datePart[1]>=1900) && (datePart[1]<=9999);

  if(!mese || !anno){return false}
  }  
  else {return false}
  return true;
 }
 

 // Verifica se il campo è vuoto o è un numero
 function isValidNumber(_value)
 {
  var re = /^([0-9]*)$/	   
  if( re.test(_value))
  {	
    return true;
  }
  else
  {
     return false;
  }
 }

// Funzione controllo correttezza inserimento euro senza messaggi alert
function isAValidCurrency(_value)
{
	var mCh= ".";
	var pos1=_value.indexOf(mCh);
	var s1 = _value.substr(0,pos1);
	var s2 = _value.substr(pos1+1);
	
	if (s1.length < 1 || s2.length != 2)
		return false;
	
	if (isValidNumber(s1) && isValidNumber(s2))
		return true;
	else
		return false;

} 
