function ValidaCampo(Campo)
{
	//validazione generica di campo obbligatorio
	if (Campo == "")
	{
		return false;
	} 
	return true;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaNumero(Campo)
{
	//validazione numero intero
	if (Campo == "")
	{
		return false;
	} 
	if (!OnlyNumber(Campo,false))
	{
		return false;
	}
	return true;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaNumeroReale(Campo)
{
	//validazione numero intero
	if (Campo == "")
	{
		return false;
	} 
	if (!OnlyNumber(Campo,true))
	{
		return false;
	}
	return true;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaPivaCodFis(Campo)
{
	//validazione partita iva/CodFiscale
	if (Campo == "")
	{
		return false;
	} 
	if (Campo.length != 11 && Campo.length != 16)
	{
		return false;
	} 
	if (Campo.length == 11)
	{
		return ValidaPiva(Campo);
	}
	if (Campo.length == 16)
	{
		return ValidaCodFiscale(Campo);
	}
	return false;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaCodFiscale(cf)
{
    var validi, i, s, set1, set2, setpari, setdisp;
    if( cf == '' )  return false;
    cf = cf.toUpperCase();
    if( cf.length != 16 )
        return false;
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    for( i = 0; i < 16; i++ ){
        if( validi.indexOf( cf.charAt(i) ) == -1 )
            return false;
    }
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    s = 0;
    for( i = 1; i <= 13; i += 2 )
        s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    for( i = 0; i <= 14; i += 2 )
        s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
    if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
        return false;
    return true;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaPiva(pi)
{
    if( pi == '' )  return false;
    if( pi.length != 11 )
        return false;
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
        if( validi.indexOf( pi.charAt(i) ) == -1 )
            return false;
    }
    s = 0;
    for( i = 0; i <= 9; i += 2 )
        s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    for( i = 1; i <= 9; i += 2 ){
        c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
        if( c > 9 )  c = c - 9;
        s += c;
    }
    if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
        return false;
    return true;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaProvincia(Campo)
{	//validazione provincia
	if (Campo.length != 2)
	{
		return false;
	}
	return OnlyLetter(Campo);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaCap(Campo)
{	//validazione provincia
	if (Campo.length != 5)
	{
		return false;
	}
	return OnlyNumber(Campo,false);
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaEmail(campo)
{
	var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i
	return emailfilter.test(campo)
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

function ValidaData(campo,sep)
{
	var checkstr = "0123456789";
	var Datevalue = "";
	var DateTemp = "";
	var day;
	var month;
	var year;
	var leap = 0;
	var i;
	
	err = 0;
	DateValue = campo;
   if (sep.length != 1) 
   {
		return false; 
   }
   if (DateValue.length != 8 && DateValue.length != 10) 
   {
		return false; 
   }
   /* Cancello tutti i carattari eccetto 0..9 */
   for (i = 0; i < DateValue.length; i++) 
   {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) 
	  {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
	  else if (DateValue.substr(i,1)!=sep)
	  {
		return false;
	  }
   }
   DateValue = DateTemp;
   /* cambio la data in 8 cifre - string*/
   /* se l'anno è di 2 cifre / assumo 20xx */
   if (DateValue.length == 6) 
   {
	DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); 
   }
   if (DateValue.length != 8) 
   {
      return false;
   }
   /* anno errato se = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) 
   {
      return false;
   }
   /* valido mese*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) 
   {
      return false;
   }
   /* valido giorno*/
   day = DateValue.substr(0,2);
   if (day < 1) 
   {
     return false;
   }
   /* Valido anno bisestile*/
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) 
   {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) 
   {
      return false;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) 
   {
      return false;
   }
   /* Valido altri mesi */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) 
   {
      return false;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) 
   {
      return false;
   }
   /* se è inserido 00  */
   if ((day == 0) && (month == 0) && (year == 00)) 
   {
      return false;
   }
   return true;
 }
 
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////
//funzioni comuni
/////////////////////////////////////////////////////
function OnlyNumber(Campo,Virgola)
{
	//solo numeri
	var checkOK;
	var checkStr = Campo;
	var allValid = true;
	if (Virgola)
	{
		checkOK = "0123456789,";
	}
	else
	{
		checkOK = "0123456789";
	}
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		    break;
		if (j == checkOK.length)
		{
		  allValid = false;
		  break;
		}
	}
	return allValid;
}

function OnlyLetter(Campo)
{
	//solo lettere
	/*var checkOK = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzƒŠŒŽšœžŸªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ";
	var checkStr = Campo;
	var allValid = true;
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = checkStr.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		  if (ch == checkOK.charAt(j))
		    break;
		if (j == checkOK.length)
		{
		  allValid = false;
		  break;
		}
	}
	return allValid;*/
	var checkStr = Campo;
	var allValid = true;
	var re = new RegExp(/[\d\s]/);
	if (checkStr.match(re)) {
		allValid = false;
	}
	return allValid;
}

function FindChar(Campo,Carattere)
{
	//solo lettere
	var checkStr = Campo;
	var allValid = true;
	for (i = 0;  i < checkStr.length;  i++)
	{
		ch = Carattere.charAt(i);
		for (j = 0;  j < Carattere.length;  j++)
		  if (ch == Carattere.charAt(j))
		    break;
		if (j == Carattere.length)
		{
		  allValid = false;
		  break;
		}
	}
	return allValid;
}
