function checkOneCheck(checkingBox)
{
    var checkedCount = 0;
    
    for (i = 0; i < document.forms[0].length; i++)
    {
        var objCheckBoxe = document.forms[0].elements[i];
        if(objCheckBoxe && objCheckBoxe != checkingBox)
        {
            if (objCheckBoxe.checked)
            {
                checkedCount++;
            }
        }
    }
    if (checkedCount > 0)
    {
        //alert(checkedCount);
        return true;
    }
    else
    {
        alert("ATTENZIONE! Nessuna operazione selezionata tra quelle in elenco!\nEffettuare la selezione prima di procedere alla elaborazione della Pre-Fattura.");
        return false;
    }
}

function checkUncheckAll(checkingBox)
{
    for (i = 0; i < document.forms[0].length; i++)
    {
        var objCheckBoxe = document.forms[0].elements[i];
        if(objCheckBoxe && objCheckBoxe != checkingBox)
        {
            if (checkingBox.checked)
            {
                objCheckBoxe.checked = true;
            }
            else
            {
                objCheckBoxe.checked = false;
            }
        }
    }
}

//solo lettere
function lettersOnly(evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : 
        ((evt.which) ? evt.which : 0));
    if (charCode > 31 && (charCode < 65 || charCode > 90) && 
        (charCode < 97 || charCode > 122)) {
        //alert("Consentite solo lettere!");
        return false;
    }
    return true;
}

//controlla valmin e valmax
function checkMinMaxValues(curValMax, curValMin, curMsg, curEditValControl) {
    if (curEditValControl.value != '')
    {
	    if ((Math.min(curEditValControl.value.replace(',','.'), curValMin.replace(',','.')) == curEditValControl.value.replace(',','.')) && curEditValControl.value != curValMin)
	    {
		    alert('ATTENZIONE!\n\n' + curMsg + ' valore troppo basso.');
		    curEditValControl.value = '';
	        return false;
	    }
	    else if ((Math.max(curEditValControl.value.replace(',','.'), curValMax.replace(',','.')) == curEditValControl.value.replace(',','.')) && curEditValControl.value != curValMax)
	    {
		    alert('ATTENZIONE!\n\n' + curMsg + ' valore troppo alto.');
		    curEditValControl.value = '';
	        return false;
	    }
	    else
	    {
	        document.forms[0].ctl00$childContentPlaceHolder$Button2.click();
	        return true;
	    }
	}
	else
	{
	    document.forms[0].ctl00$childContentPlaceHolder$Button2.click();
        return true;
	}
}

//massima lunghezza TextBob MultiLine
function checkMaxLength(campo,maxLength)
{
    for (jj=0;jj<document.forms[0].length;jj++)
	{
		if (document.forms[0].elements[jj] == campo)
		{
			//campo = document.forms[0].elements[jj];
             if (parseInt(campo.value.length) > maxLength)
			    campo.value = campo.value.substring(0,maxLength);
		}
	}
}

//formatto gli importi
function onFormat (nomeCampo,decimali)
{
	var campo
	var x;
	x=0;
	var ii
	var jj
	var virgola
	var meno
	var punto = new Array( );
	var numero = new Array( );
	var lunghezza
	var calcolo = "";
	var z
	var resto
	var risultato
	var appString
	var virgole
	virgole = 0;
	meno = 0;

	for (jj=0;jj<document.forms[0].length;jj++)
	{
		if (document.forms[0].elements[jj].name == nomeCampo)
		{
			campo = document.forms[0].elements[jj];
		}
	}
	var valore = campo.value;
	for(z=0;z<valore.length;z++)
	{
		if (valore.charAt(z) == ",") virgole++;
	}
	for(z=0;z<valore.length;z++)
	{
		if (valore.charAt(z) == "-") meno++;
	}
	if (meno > 0)
	{
		valore = valore.split("-")[1];
	}
	if (virgole > 1) valore = valore.slice(0,valore.length) ;
	numero = valore.split(",");
	punto = numero[0].split(".");
	for (jj = 0; jj < punto.length; jj++)
	{
		calcolo = calcolo + punto[jj];
	}
	resto = calcolo.length/3;
	appString = resto.toString();
	lunghezza = appString.split(".");
	if ((calcolo.length - lunghezza[0]*3) == 0)
	{
		risultato = calcolo.slice(0,3);
		calcolo = calcolo.slice(3,calcolo.length);
		lunghezza[0] = lunghezza[0]-1;
	}
	else
	{
		risultato = calcolo.slice(0,(calcolo.length - lunghezza[0]*3));
		calcolo = calcolo.slice((calcolo.length - lunghezza[0]*3),calcolo.length);
	}
	for (jj=0;jj <lunghezza[0]; jj++)
	{
		risultato = risultato + "." + calcolo.slice(jj*3,(jj*3)+3);
	}
	if ((numero.length > 1) && !(decimali==0))
	{
		risultato = risultato + "," + numero[1].slice(0,decimali);
	}
	if (meno > 0)
	{
		risultato = "-" + risultato;
	}
	campo.value=risultato;
}

/*
controlla la partita IVA su base codice di controllo
*/
function ControllaPIVA(pi,label)
{
	if( pi == '' )  return false;
    if( pi.length != 11 )
    {
        alert("Lunghezza del campo " + label + " errata: deve essere esattamente di 11 caratteri.");
        return false;
    }
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
        if( validi.indexOf( pi.charAt(i) ) == -1 )
        {
            alert(label + " contiene un carattere non valido (" + pi.charAt(i) + ").\nInserire solo caratteri numerici.");
            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) )
    {
        alert("Valore del campo " + label + " non valido:\nil codice di controllo non corrisponde.\n");
        return false;
    }
    return true;
}

/*
trasforma il testo in UpperCase
*/
function corverToUpperCase(myctrl,string) {
	myctrl.value = string.toUpperCase();
	//return string.toUpperCase();
}

//validazione imput che richiedono solo Cod.Fisc nel formato XXXXXX99X99X999X
function OnlyCodiceFiscale (curStr, myEvent){

	var key = window.event ? myEvent.keyCode : myEvent.which;
	
	//alert(key);
	
	if (key == 8 || key == 0)
	{
	    return true;
	}
	else
	{
	    if (key > 47 && key < 123 && key != 58 && key != 59 && key != 60 && key != 61 && key != 62 && key != 63 && key != 64 && key != 91 && key != 92 && key != 93 && key != 94 && key != 95 && key != 96) {
		    //lettere
		    if (key > 64 && key < 123 && (curStr.length != 0 && curStr.length != 1 && curStr.length != 2 && curStr.length != 2 && curStr.length != 3 && curStr.length != 4 && curStr.length != 5 && curStr.length != 8 && curStr.length != 11 && curStr.length != 15)) {
			    return false;
		    }
		    if (key > 47 && key < 58 && (curStr.length != 6 && curStr.length != 7 && curStr.length != 9 && curStr.length != 10 && curStr.length != 12 && curStr.length != 13 && curStr.length != 14)) {
			    return false;
		    }
	    } else {
		    return false;
	    }
    }
}

//validazione imput che richiedono solo date nel formato gg/mm/aaaa
function OnlyDate (curStr, myEventKeyCode){
	if (myEventKeyCode < 47 || myEventKeyCode > 57) {
		return false;
	} else {
		if (myEventKeyCode == 47 && (curStr.length != 2 && curStr.length != 5)) {
			return false;
		}
		if (myEventKeyCode != 47 && (curStr.length == 2 || curStr.length == 5)) {
			return false;
		}
	}	
}

//validazione imput che richiedono solo numeri
//usato per P.IVA - CAP - Telefono - Fax
function OnlyNumbers (myEvent){

	var key = window.event ? myEvent.keyCode : myEvent.which;
	
	//alert(key);

	if (key == 8 || key == 0)
	{
	    return true;
	}
	else
	{
	    if (key < 48 || key > 57) {
		    return false;
	    }
    }
}
function isNumberKey(evt)
{
    var charCode = (evt.which) ? evt.which : event.keyCode
    if (charCode != 43 && charCode > 31 && (charCode < 48 || charCode > 57))
        return false;
    return true;
}
//validazione imput che richiedono importi con decimali
function OnlyNumbersWithDecimal (myEvent){

	var key = window.event ? myEvent.keyCode : myEvent.which;

	if (key == 8 || key == 0)
	{
	    return true;
	}
	else
	{
	     if ((key != 44 && key < 48) || key > 57) {
		    return false;
	    }
	}
}


//validazione imput che richiedono importi con decimali (sono permessi numeri negativi)
function OnlyRealNumbersWithDecimal (myEvent){

	var key = window.event ? myEvent.keyCode : myEvent.which;

	if (key == 8 || key == 0)
	{
	    return true;
	}
	else
	{
	     if ( (!(key == 44 || key == 45)  && key < 48) || key > 57) {
		    return false;
	    }
	}
}

function Asc(String) {
	return String.charCodeAt(0);
}

function Chr(AsciiNum) {
	return String.fromCharCode(AsciiNum);
}

function checkMinus(myEvent,myControl, myValue){

	var key = window.event ? myEvent.keyCode : myEvent.which;
	
	
	if (!(key == 45 || key == 109 || key == 189))
	    return true;
	
	/*
	if (myValue.lenght <= 1)
	    return true;
	else {
	    //if ((key == 45) && (myValue.indexOf(Chr(key))<>0)) {
	    if ((key == 45 || key == 109 || key == 189)) {
	        alert(Chr(key));
	        alert(Asc(Chr(key)));
	        //myControl.value = myValue.Replace(Chr(key),"");
	    }
	}
	*/
}

//focus su elemento specificato della form specificata
function setFormFocus(myForm,myElement) {
	document.forms[myForm].elements[myElement].focus();
}

function setFocus()
{
    if (document.forms[0].action != 'scheda_noleggio.aspx')
    {
        for (i = 0; i < document.forms[0].length; i++)
        {
            var tempobj = document.forms[0].elements[i];
            //if (tempobj.type.toLowerCase() != "hidden" && tempobj.disabled != true && (tempobj.type.toLowerCase() == "text" || tempobj.type.toLowerCase() == "checkbox" || tempobj.type.toString().charAt(0) == "s"))
            if (tempobj.type.toLowerCase() != "hidden" && tempobj.disabled != true)
            {
                tempobj.focus();
                break;
            }
        }
    }
}

function showPrefat(curIdPrefat)
{
    OpenWinPopUpResizable('showPrefatBin.aspx?idPrefat='+curIdPrefat, 'showPrefatBin', 800, 600, 0, 0, 0);
}

function showDoc(curIdDocBin)
{
    OpenWinPopUpSimple('showDocBin.aspx?idDoc='+curIdDocBin, 'showDocBin', 800, 600, 0, 0, 0);
}

function showAllDoc()
{
    OpenWinPopUpSimple('showAllDocBin.aspx', 'showAllDocBin', 800, 600, 0, 0, 0);
}

function showReport(curJobId)
{
    OpenWinPopUpResizable('reports/showReports.aspx?jobID='+curJobId, 'showReport', 800, 600, 0, 0, 0);
}

function currencyFormat(fld, milSep, decSep, e)
{
    var strCheck = "-0123456789";
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;

    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) return true;  // Enter
    key = String.fromCharCode(whichCode);  // Get key value from key code

    //alert("key = " + key);

    if (key == "-")
    {
	    if (fld.value.indexOf(key) != -1)
	    {
		    return false;
	    }
    }

    if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
    len = fld.value.length;
    for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
    for(; i < len; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = '0'+ decSep + '0' + aux;
    if (len == 2) fld.value = '0'+ decSep + aux;
    if (len > 2) {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--) {
    if (j == 3) {
    aux2 += milSep;
    j = 0;
    }
    aux2 += aux.charAt(i);
    j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
    fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
    }
    return false;
}

//apre finestra di popup semplice
function OpenWinPopUpSimple(WinFile, WinName, WinWidth, WinHeight, WinLeft, WinTop, scrollbars) {

	window.open(WinFile, WinName, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scrollbars+",resizable=no,copyhistory=no,width="+WinWidth+",height="+WinHeight+",left="+WinLeft+",top="+WinTop);

}

//apre finestra di popup semplice
function OpenWinPopUpResizable(WinFile, WinName, WinWidth, WinHeight, WinLeft, WinTop, scrollbars) {

	window.open(WinFile, WinName, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+scrollbars+",resizable=yes,copyhistory=no,width="+WinWidth+",height="+WinHeight+",left="+WinLeft+",top="+WinTop);

}

//start gestione date
// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.
var vDateType = 3; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 4; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // Set the error code to a default of zero
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
   }
}
else {
isIE4 = true;
}
function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
if(navigator.appName == "Netscape")
{
    if (e.type == 'blur')
    {
        var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;
        var errorMessage = 'Formato data inserita non valido!';
        if ((vDateName.value.match(RegExPattern)) && (vDateName.value!='')) {
            //alert('Data OK'); 
        } else {
            alert(errorMessage);
            vDateName.value = '';
            vDateName.focus();
        }
    }
}    
else
{
vDateType = dateType;
// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck 
// True  = Verify that the vDateValue is a valid date
// False = Format values being entered into vDateValue only
// vDateType
// 1 = mm/dd/yyyy
// 2 = yyyy/mm/dd
// 3 = dd/mm/yyyy
//Enter a tilde sign for the first number and you can check the variable information.
if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;
// Check to see if a seperator is already present.
// bypass the date if a seperator is present and the length greater than 8
if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
//Eliminate all the ASCII codes that are not valid
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
   }
}
if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
return false;
else {
//Create numeric string values for 0123456789/
//The codes provided include both keyboard and keypad values
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
//Turn a two digit year into a 4 digit year

if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {
// Reformat the date for validation and set date type to a 1
if (vDateValue.length >= 8  && dateCheck) {
if (vDateType == 1) // mmddyyyy
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2) // yyyymmdd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3) // ddmmyyyy
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
//Create a temporary variable for storing the DateType and change
//the DateType to a 1 for validation.
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
         }
      }
   }
}
else {
// Non isNav Check
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.value = "";
vDateName.focus();
return true;
}
// Reformat date to format that can be validated. mm/dd/yyyy
if (vDateValue.length >= 8 && dateCheck) {
// Additional date formats can be entered here and parsed out to
// a valid date format that the validation routine will recognize.
if (vDateType == 1) // mm/dd/yyyy
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) // yyyy/mm/dd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) // dd/mm/yyyy
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.value = "";
vDateName.focus();
return true;
   }
}
// Create temp. variable for storing the current vDateType
var vDateTypeTemp = vDateType;
// Change vDateType to a 1 for standard date format for validation
// Type will be changed back when validation is completed.
vDateType = 1;
// Store reformatted date to new variable for validation.
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {
//Turn a two digit year into a 4 digit year
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
// Store the new value back to the field.  This function will
// not work with date type of 2 since the year is entered first.
if (vDateTypeTemp == 1) // mm/dd/yyyy
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) // dd/mm/yyyy
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
} 
if (!dateValid(vDateValueCheck)) {
alert("ATTENZIONE!\nFormato data non corretto.");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (vDateType == 1) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
if (vDateType == 2) {
if (vDateValue.length == 4) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 7) {
vDateName.value = vDateValue+strSeperator;
   }
} 
if (vDateType == 3) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
return true;
   }
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {
// Un-comment the next line of code for debugging the dateValid() function error messages
//alert(err);  
alert("ATTENZIONE!\nFormato data non corretto.");
vDateName.focus();
vDateName.select();
   }
}
return false;
}
else {
// If the value is not in the string return the string minus the last
// key entered.
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
         }
      }
   }
}
}
function dateValid(objName) {
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
// var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
//strDate = datefield.value;
strDate = objName;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
}
//Adjustment for short years entered
if (strYear.length == 2) {
strYear = '20' + strYear;
}
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
   }
}
else {
if (intday > 28) {
err = 10;
return false;
      }
   }
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
//end gestione date

/*Begin validazione indirizzo E-mail
************************************
*/
function emailCheck(emailStr) {
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
var matchArray=emailStr.match(emailPat)

/*se stringa vuota non fa controlli
e-mail non obbligatoria */
if (emailStr==''){
return true
}

if (matchArray==null) {
	alert("Indirizzo e-mail non corretto \(\es.: @ e .\)\.")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    alert("Username non valido.")
    return false
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Indirizzo IP non corretto!")
		return false
	    }
    }
    return true
}

var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("Dominio di posta non valido.")
    return false
}

var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>4) {
   alert("Indirizzo e-mail non corretto: manca il dominio \(\es.: .com, .net, .org, ecc\)\.")
   return false
}

if (len<2) {
   var errStr="Indirizzo e-mail non corretto!"
   alert(errStr)
   return false
}

return true;
}
/*End validazione indirizzo E-mail
**********************************
*/

