<SCRIPT LANGUAGE="JavaScript">
// 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;
// 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, controllo)
{
if (vDateValue.length == 10 && controllo == "si" )
{
var mYear = vDateName.value.substr(6,4);
}
vDateType = dateType;
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;
if (vDateValue.length > 8 && isNav4)
{
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZ/-";
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)
return false;
else
{
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,9 8,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("Data errata\nReimmettere il dato.");
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)
if (mYear.length == 2 && vYearType == 4)
{
var mToday = new Date();
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("Data errata\nReimmettere il dato.");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else
{
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;
}
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck))
{
alert("Data errata\nReimmettere il dato.");
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("Data errata\nReimmettere il dato.");
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("Data errata\nReimmettere il dato.");
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("Data errata\nReimmettere il dato.");
vDateName.value = "";
vDateName.focus();
return true;
}
}
var oggi = new Date();
var giorno = oggi.getDate();
var mese = oggi.getMonth() + 1;
var anno = oggi.getYear();
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
if (mYear > anno)
{
alert("Data superiore alla data odierna\nReimmettere il dato.");
vDateName.value = "";
vDateName.focus();
return true;
}
if (mYear == anno && mMonth > mese)
{
alert("Data superiore alla data odierna\nReimmettere il dato.");
vDateName.value = "";
vDateName.focus();
return true;
}
if (mYear == anno && mMonth == mese && mDay > giorno)
{
alert("Data superiore alla data odierna\nReimmettere il dato.");
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("Data errata\nReimmettere il dato.");
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("Data errata\nReimmettere il dato.");
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;
}
}
}
}