
<!-- Original:  Richard Gorremans (RichardG@spiritwolfx.com) -->
<!-- Web Site:  http://www.spiritwolfx.com -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 



var vDateType = 3; 
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // 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 checkToDelete()
{
  var userLevel = document.all("userLevel").value;
  if(userLevel == -1)
  {
    alert("This card belongs to a different site and therefore cannot be deleted.");
    return false;
  }
  if(userLevel == 1 || userLevel == 3)
  {
    return confirm('Delete this card?');
  }
  else
  {
    alert("Insufficient user privileges to delete this card.");
    return false;
  }
}

function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) 
{
    if (document.all) 
    {
        vDateType = dateType;
        if(vDateValue=="N/A")
        {
            return true ;
        }
	    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 
        {
            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("Invalid Date\nPlease Re-Enter");
                        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("Invalid Date\nPlease Re-Enter");
                            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 == 3) // ddmmyyyy
                            {
                                var mMonth = vDateName.value.substr(2,2);
                                var mDay = vDateName.value.substr(0,2);
                                var mYear = vDateName.value.substr(0,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("Invalid Format Date\nPlease Re-Enter");
                                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("Invalid Date\nPlease Re-Enter");
                                vDateName.value = "";
                                vDateName.focus();
                                vDateName.select();
                                return false;
                            }
                        }   
                    }
                } // end if (isNav4)
                else 
                {
// Non isNav Check
                    if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) 
                    {
                        alert("Invalid Format Date \nPlease Re-Enter");
                        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 == 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("Invalid Date\nPlease Re-Enter");
                                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 == 3) // dd/mm/yyyy
                                vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
                        }
 
                        if (!dateValid(vDateValueCheck)) 
                        {
                            alert("Invalid Format Date\nPlease Re-Enter");
                            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;
                    }
                } // end else if (isNav4)


                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("Invalid Date\nPlease Re-Enter");
                        vDateName.focus();
                        vDateName.select();
                    }
                }
                return false;
            } // end if (strCheck.indexOf(whichCode) != -1)
            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;

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;
}


///Check time-------------------------------------------

function IsValidTime(timeStr) {
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.

var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var matchArray = timeStr.match(timePat);
if (matchArray == null) {
alert("Time is not in a valid format.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];

if (second=="") { second = null; }
if (ampm=="") { ampm = null }

if (hour < 0  || hour > 23) {
alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
return false;
}
if (hour <= 12 && ampm == null) {
if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
alert("You must specify AM or PM.");
return false;
   }
}
if  (hour > 12 && ampm != null) {
alert("You can't specify AM or PM for military time.");
return false;
}
if (minute<0 || minute > 59) {
alert ("Minute must be between 0 and 59.");
return false;
}
if (second != null && (second < 0 || second > 59)) {
alert ("Second must be between 0 and 59.");
return false;
}
return false;
}


//  End -->

