var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var whitespace = " \t\n\r";
var decimalPointDelimiter = "."
var phoneNumberDelimiters = "()- ";
var dateDelimiters = "/\- ";
var timeDelimiters = ":/\- ";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
var SSNDelimiters = "- ";
var validSSNChars = digits + SSNDelimiters;
var digitsInSocialSecurityNumber = 9;
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeter = "-"
var validZIPCodeChars = digits + ZIPCodeDelimiters;
var digitsInZIPCode1 = 5;
var digitsInZIPCode2 = 9;
var creditCardDelimiters = " ";

var mPrefix = "You did not enter a value into the ";
var mSuffix = " field. This is a required field. Please enter it now.";

var iStateCode = "This field must be a valid two character U.S. state abbreviation (like CA for California). Please reenter it now."
var iZIPCode = "This field must be a 5 or 9 digit U.S. ZIP Code (like 94043). Please reenter it now."
var iUSPhone = "This field must be a 10 digit U.S. phone number (like 415 555 1212). Please reenter it now."
var iWorldPhone = "This field must be a valid international phone number. Please reenter it now."
var iSSN = "This field must be a 9 digit U.S. social security number (like 123 45 6789). Please reenter it now."
var iEmail = "This field must be a valid email address (like foo@bar.com). Please reenter it now."
var iCreditCardPrefix = "This is not a valid "
var iCreditCardSuffix = " credit card number. (Click the link on this form to see a list of sample numbers.) Please reenter it now."
var iDay = "This field must be a day number between 1 and 31.  Please reenter it now."
var iMonth = "This field must be a month number between 1 and 12.  Please reenter it now."
var iYear = "This field must be a 2 or 4 digit year number.  Please reenter it now."
var iDatePrefix = "The Day, Month, and Year for "
var iDateSuffix = " do not form a valid date.  Please reenter them now."
var iNumber = "This is not a valid number. Please reenter it now."

var defaultEmptyOK = true;
///////////////////////////////////////////////////////
    function SubmitForm()
{	
 var f = document.forms[0]
	if(checkFields()){
		f.PostBack.value = 1;
		f.submit();
		}
}
function getText(object) {
    return escape(object.value)
}

function getOption(object) {
    return escape(object.options[object.selectedIndex].text);
}

function getRadio(object) {
    for (var i = 0; i < object.length; i++)
         if (object[i].checked)
             return object[i].value;

    return '';
}

function getCheckboxes() {
    var output = '';
    for (var i = 0; i < getCheckboxes.arguments.length; i++)
         output += getCheckbox(getCheckboxes[i]) + escape(' ');
    return output;
}

function getCheckbox(object) {
    if (object.checked)
        return escape(object.value);
    else
        return '';
}

//////////////////////////////////////////////////////
function GetRadioValue( radioObject ) { 
	var value = null;

	// Validate parameter value
	if (radioObject+"" == "undefined" || radioObject == null)
		return null;

	for (var i=0; i < radioObject.length; i++) { 
		if (radioObject[i].checked) { 
			value = radioObject[i].value;
			break;
		} 
	} // end for loop 
	
	return value;
}
///////////////////////////////////////////////////////
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}
//////////////////////////////////////////////////////
function chkNAN(char2chk)
{
   var validNum = "0123456789";  
   if (validNum.indexOf(char2chk) == "-1")
      return(confirm("You have entered a non-numeric character.\nDo you want to turn off non-numeric character checking?"));
}

function maskIt(fldVal, field)
{
   var tmpStr = "(";
   keyCount = fldVal.length;
   keyEntered =fldVal.substring(keyCount-1,keyCount);

   if (keyCount <= 1)   isNamedFone = false;
   if (!isNamedFone)    isNamedFone = chkNAN(keyEntered);
 
   keyCount++;
   switch (keyCount)
   {
      case 2: 
         tmpStr +=  field.value;
         field.value = tmpStr;
         break;
      case 5:
         field.value += ")" ;
         break;
      case 9:
         field.value += "-" ;
         break;
   }     
}


function makeArray(n)
{
   for (var i = 1; i <= n; i++)
		{
      this[i] = 0
	   } 
   return this
}



var daysInMonth = makeArray(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;   // must programmatically check this
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

var USStateCodeDelimiter = "|";
var USStateCodes = "AL|AK|AS|AZ|AR|CA|CO|CT|DE|DC|FM|FL|GA|GU|HI|ID|IL|IN|IA|KS|KY|LA|ME|MH|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|MP|OH|OK|OR|PW|PA|PR|RI|SC|SD|TN|TX|UT|VT|VI|VA|WA|WV|WI|WY|AE|AA|AE|AE|AP"


function isEmpty(s)
{
return ((s == null) || (s.length == 0))
}


function isWhitespace (s)

{   var i;

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}


function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}


function stripCharsNotInBag (s, bag)

{   var i;
    var returnString = "";

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}


function stripWhitespace (s)

{   return stripCharsInBag (s, whitespace)
}


function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}


function stripInitialWhitespace (s)

{   var i = 0;

    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    
    return s.substring (i, s.length);
}


function isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}


function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}


function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}


function isInteger (s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    return true;
}


function isSignedInteger (s)

{   if (isEmpty(s)) 
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;    
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}


function isPositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isPositiveInteger.arguments.length > 1)
        secondArg = isPositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) > 0) ) );
}


function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}


function isNegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNegativeInteger.arguments.length > 1)
        secondArg = isNegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) < 0) ) );
}


function isNonpositiveInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonpositiveInteger.arguments.length > 1)
        secondArg = isNonpositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) <= 0) ) );
}


function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }
    return true;
}


function isSignedFloat (s)

{   if (isEmpty(s)) 
       if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedFloat.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedFloat.arguments.length > 1)
            secondArg = isSignedFloat.arguments[1];

        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;    
        return (isFloat(s.substring(startPos, s.length), secondArg))
    }
}


function isAlphabetic (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);
  
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (!isLetter(c) && (c != '-'))
          return false;
    }
    return true;
}


function isAlphanumeric (s)

{   var i;

    if (isEmpty(s)) 
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}


function reformat (s)

{   var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < reformat.arguments.length; i++) {
       arg = reformat.arguments[i];
       if (i % 2 == 1) resultString += arg;
       else {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    }
    return resultString;
}


function isSSN (s)
{   if (isEmpty(s)) 
       if (isSSN.arguments.length == 1) return defaultEmptyOK;
       else return (isSSN.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInSocialSecurityNumber)
}


function isUSPhoneNumber (s)
{   if (isEmpty(s)) 
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}


function isInternationalPhoneNumber (s)
{   if (isEmpty(s)) 
       if (isInternationalPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isInternationalPhoneNumber.arguments[1] == true);
    return (isPositiveInteger(s))
}


function isZIPCode (s)
{  if (isEmpty(s)) 
       if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
       else return (isZIPCode.arguments[1] == true);
   return (isInteger(s) && 
            ((s.length == digitsInZIPCode1) ||
             (s.length == digitsInZIPCode2)))
}


function isStateCode(s)
{   if (isEmpty(s)) 
       if (isStateCode.arguments.length == 1) return defaultEmptyOK;
       else return (isStateCode.arguments[1] == true);
    return ( (USStateCodes.indexOf(s) != -1) &&
             (s.indexOf(USStateCodeDelimiter) == -1) )
}


function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    if (isWhitespace(s)) return false;
    
    var i = 1;
    var sLength = s.length;

    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function isYear (s)
{   if (isEmpty(s)) 
       if (isYear.arguments.length == 1) return defaultEmptyOK;
       else return (isYear.arguments[1] == true);
    if (!isNonnegativeInteger(s)) return false;
    return ((s.length == 2) || (s.length == 4));
}


function isIntegerInRange (s, a, b)
{   if (isEmpty(s)) 
       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
       else return (isIntegerInRange.arguments[1] == true);

    if (!isInteger(s, false)) return false;

	if (s != "09" && s != "08")
       var num = parseInt(s);
	else
	   var num = eval(s);
	   
    return ((num >= a) && (num <= b));
}


function isMonth (s)
{   if (isEmpty(s)) 
       if (isMonth.arguments.length == 1) return defaultEmptyOK;
       else return (isMonth.arguments[1] == true);
    return isIntegerInRange (s, 1, 12);
}


function isDay (s)
{   if (isEmpty(s)) 
       if (isDay.arguments.length == 1) return defaultEmptyOK;
       else return (isDay.arguments[1] == true);   
    return isIntegerInRange (s, 1, 31);
}


function daysInFebruary (year)
{   
    return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}


function isDate (year, month, day)
{
    if (! (isYear(year, false) && isMonth(month, false) && isDay(day, false))) return false;

    var intYear = parseInt(year);
    var intMonth = parseInt(month);
    var intDay = parseInt(day);

    if (intDay > daysInMonth[intMonth]) return false; 

    if ((intMonth == 2) && (intDay > daysInFebruary(intYear))) return false;

    return true;
}


function prompt (s)
{   window.status = s
}


function promptEntry (s,theField)
{   
   window.status = s;
   if (promptEntry.arguments.length == 2)
      theField.select();
}


function warnEmpty (theField, s)
{  
   alert(mPrefix + s + mSuffix)
   theField.select();
   theField.focus();
   return false;
}


function warnInvalid (theField, s)
{
   alert(s);
   theField.select();
   theField.focus();
   return false;
}


function checkFloat (theField, emptyOK)
{
    if (checkFloat.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isFloat(theField.value)) 
       return warnInvalid (theField, iNumber);
    else return true;
}



function checkInteger (theField, emptyOK)
{
    if (checkInteger.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isInteger(theField.value)) 
       return warnInvalid (theField, iNumber);
    else return true;
}



function checkString (theField, s, emptyOK)
{
    if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (isWhitespace(theField.value)) 
       return warnEmpty (theField, s);
    else return true;
}


function checkAlphabetic (theField, s, allUpper, emptyOK)
{
    if (checkAlphabetic.arguments.length == 3)
       {
       emptyOK = defaultEmptyOK;
       }
    if (emptyOK == true)
       {
       if (isEmpty(theField.value))
          {
          return true;
          }
       }
    else
       {
       if (isEmpty(theField.value))
          {
          return warnEmpty (theField,'');
          }
       }
    
    if (!isAlphabetic(theField.value)) 
       return warnInvalid (theField, s);
    else
    {
       if (allUpper)
          var newValue = theField.value.toUpperCase();    
       else          
          var newValue = theField.value.substr(0,1).toUpperCase() + theField.value.slice(1);    

       theField.value = newValue;
       return true;
    }
}


function checkAlphabeticString (theField, s, allUpper, emptyOK)
{
    if (checkAlphabeticString.arguments.length == 3)
       {
       emptyOK = defaultEmptyOK;
       }
    if (emptyOK == true)
       {
       if (isEmpty(theField.value))
          {
          return true;
          }
       }
    else
       {
       if (isEmpty(theField.value))
          {
          return warnEmpty (theField,'');
          }
       }

   for (i = 0; i < theField.value.length; i++)
      {
      var c = theField.value.charAt(i);
      if (isDigit(c))
         return warnInvalid (theField, s);
      }
   var newValue;
   if (allUpper)
      newValue = theField.value.toUpperCase();    
   else 
      {
      var prevSpace = false;
      for (i = 0; i < theField.value.length; i++)
         {   
         var c = theField.value.charAt(i);
         if (i == 0 && isLetter(c))
            newValue = c.toUpperCase();
         else
            {
            if (c == ' ')
               {
               newValue += c;
               prevSpace = true;
               }   
            else
               {
               if (prevSpace)
                  {
                  prevSpace = false;
                  newValue += c.toUpperCase();
                  }
               else
                  newValue += c;
               }
            }
         }
      }
   theField.value = newValue;
   return true;           
}


function checkAlphanumericString(theField, s, emptyOK)
{
    var i;
    if (checkAlphanumericString.arguments.length == 2)
       {
       emptyOK = defaultEmptyOK;
       }
    if (emptyOK == true)
       {
       if (isEmpty(theField.value))
          {
          return true;
          }
       }
    else
       {
       if (isEmpty(theField.value))
          {
          return warnEmpty (theField,s);
          }
       }
    for (i = 0; i < theField.value.length; i++)
    {   
        var c = theField.value.charAt(i);

        if (!(isLetter(c) || isDigit(c) || (c == ' ') || (c == '#') || (c == ',') || (c == '.')) )
            {
            return warnInvalid(theField,s);
            }
    }
    var newValue = '';
    var prevSpace = false;
    for (i = 0; i < theField.value.length; i++)
    {   
       var c = theField.value.charAt(i);
       if (i == 0 && isLetter(c))
          newValue = c.toUpperCase();
       else
          {
          if (isLetter(c))
             {
             if (prevSpace)
                {
                prevSpace = false;
                newValue += c.toUpperCase();
                }
             else
                newValue += c;
             }
          else
		     {
		     if (isDigit(c))
                {
                if (prevSpace)
                   prevSpace = false;
                newValue += c;
                }
             else
			    {
		        if (c == ' ')
				   {
                   newValue += c;
                   prevSpace = true;
                   }
		        else
		           {
			       if (prevSpace)
                      prevSpace = false;
                   newValue += c;
			       }
				}
		     }		
          }
    }
    theField.value = newValue;
    return true;
}


function checkStateCode (theField, emptyOK)
{   if (checkStateCode.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  theField.value = theField.value.toUpperCase();
       if (!isStateCode(theField.value, false)) 
          return warnInvalid (theField, iStateCode);
       else return true;
    }
}


function reformatZIPCode (ZIPString)
{   if (ZIPString.length == 5) return ZIPString;
    else return (reformat (ZIPString, "", 5, "-", 4));
}


function checkZIPCode(theField, emptyOK)
{
    if (checkZIPCode.arguments.length == 1)
       {
       emptyOK = defaultEmptyOK;
       }
    if (emptyOK == true)
       {
       if (isEmpty(theField.value))
          {
          return true;
          }
       }
    else
       {
       if (isEmpty(theField.value))
          {
          return warnEmpty (theField,'');
          }
       }
    var normalizedZIP = stripCharsInBag(theField.value, ZIPCodeDelimiters)
    if (!isZIPCode(normalizedZIP, false)) 
       return warnInvalid (theField, iZIPCode);
    else 
      {
      theField.value = reformatZIPCode(normalizedZIP)
      return true;
      }
}


function reformatDate (normalizedDate)
{
   return (reformat (normalizedDate, "", 2, "/", 2, "/", 4));
}


function reformatUSPhone (USPhone)
{
   // return (reformat (USPhone, "(", 3, ") ", 3, "-", 4)) 
   return (reformat (USPhone, "", 3, "-", 3, "-", 4));
}


function checkUSPhone (theField, emptyOK)
{   if (checkUSPhone.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
       if (normalizedPhone.length == 7) normalizedPhone = '000' + normalizedPhone;
       if (!isUSPhoneNumber(normalizedPhone, false)) 
          return warnInvalid (theField, iUSPhone);
       else 
       {
          theField.value = reformatUSPhone(normalizedPhone)
          return true;
       }
    }
}



function checkEmail (theField, emptyOK)
{   if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if (!isEmail(theField.value, false)) 
       return warnInvalid (theField, iEmail);
    else return true;
}


function reformatSSN (SSN)
{   return (reformat (SSN, "", 3, "-", 2, "-", 4))
}


function checkSSN (theField, emptyOK)
{   if (checkSSN.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else
    {  var normalizedSSN = stripCharsInBag(theField.value, SSNDelimiters)
       if (!isSSN(normalizedSSN, false)) 
          return warnInvalid (theField, iSSN);
       else 
       {
          theField.value = reformatSSN(normalizedSSN)
          return true;
       }
    }
}


function checkYear (theField, emptyOK)
{   if (checkYear.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isYear(theField.value, false)) 
       return warnInvalid (theField, iYear);
    else return true;
}


function checkMonth (theField, emptyOK)
{   if (checkMonth.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isMonth(theField.value, false)) 
       return warnInvalid (theField, iMonth);
    else return true;
}


function checkDay (theField, emptyOK)
{   if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isDay(theField.value, false)) 
       return warnInvalid (theField, iDay);
    else return true;
}


function checkDate (yearField, monthField, dayField, labelString, OKtoOmitDay)
{
    if (checkDate.arguments.length == 4) OKtoOmitDay = false;
    if (!isYear(yearField.value)) return warnInvalid (yearField, iYear);
    if (!isMonth(monthField.value)) return warnInvalid (monthField, iMonth);
    if ( (OKtoOmitDay == true) && isEmpty(dayField.value) ) return true;
    else if (!isDay(dayField.value)) 
       return warnInvalid (dayField, iDay);
    if (isDate (yearField.value, monthField.value, dayField.value))
       return true;      
    alert (iDatePrefix + labelString + iDateSuffix)
    return false
}


function checkCADate (theField, labelString, OKtoOmitDay)
{
    var normalizedDate = stripCharsInBag(theField.value, dateDelimiters);
    if (checkCADate.arguments.length == 2)
       OKtoOmitDay = false;

    if (normalizedDate.length == 4)
       {
       AdjustDate = '0' + normalizedDate.substring(0,1);
       AdjustDate += '0' + normalizedDate.substring(1,2);
       if (normalizedDate.substring(2,4) < 80)
          AdjustDate += '20' + normalizedDate.substring(2,4);
       else
          AdjustDate += '19' + normalizedDate.substring(2,4);
       normalizedDate = AdjustDate
       }
    if (normalizedDate.length == 5)
       {
       if ((normalizedDate.substring(0,2) < 13) && (normalizedDate.substring(2,3) > 0))
          {
          AdjustDate = normalizedDate.substring(0,2);
          AdjustDate += '0' + normalizedDate.substring(2,3);
          }       
       else
          {
          AdjustDate = '0' + normalizedDate.substring(0,1);
          AdjustDate += normalizedDate.substring(1,3);
          }
       if (normalizedDate.substring(3,5) < 80)
          AdjustDate += '20' + normalizedDate.substring(3,5);
       else
          AdjustDate += '19' + normalizedDate.substring(3,5);
       normalizedDate = AdjustDate
       }
    
    if (!isYear(normalizedDate.substring(4,8)))
       return warnInvalid (theField, iYear);

    if (!isMonth(normalizedDate.substring(0,2)))
       return warnInvalid (theField, iMonth);

    if ( (OKtoOmitDay == true) && isEmpty(normalizedDate.substring(2,4)) )
       return true;
    else if (!isDay(normalizedDate.substring(2,4))) 
       return warnInvalid (theField, iDay);

    if (isDate(normalizedDate.substring(4,8),normalizedDate.substring(0,2),normalizedDate.substring(2,4)))
       { 
          // this code will self destruct in the year 2050
          if (normalizedDate.substring(4,8).length == 2 && normalizedDate.substring(4,8) > 50)
             {
             var newDateValue = normalizedDate.substr(0,4) + "19" + normalizedDate.substring(4,8);
             theField.value = reformatDate(newDateValue);
             return true;
             }
          if (normalizedDate.substring(4,8).length == 2 && normalizedDate.substring(4,8) < 51)
             {
             var newDateValue = normalizedDate.substr(0,4) + "20" + normalizedDate.substring(4,8);
             theField.value = reformatDate(newDateValue);
             return true;
             }
          theField.value = reformatDate(normalizedDate);
          return true;
       }

    alert (iDatePrefix + labelString + iDateSuffix);
    return false;
}


function checkCATime (theField, labelString)
{
   var normalizedTime = stripCharsInBag(theField.value, timeDelimiters);

	if (normalizedTime.length == 3)
		{
		var Hour = '0' + normalizedTime.substring(0,1);
		var Min  = normalizedTime.substring(1,3);
		var Sec  = '00';
		}
	else
	if (normalizedTime.length == 4)
		{
		var Hour = normalizedTime.substring(0,2);
		var Min  = normalizedTime.substring(2,4);
		var Sec  = '00';
		}
	else
	if (normalizedTime.length == 5)
		{
		var Hour = '0' + normalizedTime.substring(0,1);
		var Min  = normalizedTime.substring(1,3);
		var Sec  = normalizedTime.substring(3,5);
		}
	else
	if (normalizedTime.length == 6)
		{
		var Hour = normalizedTime.substring(0,2);
		var Min  = normalizedTime.substring(2,4);
		var Sec  = normalizedTime.substring(4,6);
		}
	else
		{
      return warnInvalid (theField, 'Invalid Time');
		}

	if ((Hour < 0) || (Hour > 24) ||
		 (Min  < 0) || (Min  > 60) ||
		 (Sec  < 0) || (Sec  > 60))
      return warnInvalid (theField, 'Invalid Time');
		 
	theField.value = Hour + ':' + Min + ':' + Sec;
}

function checkDateOnSubmit (theField, labelString, OKtoOmitDay)
{
    var normalizedDate = stripCharsInBag(theField.value, dateDelimiters);
    if (checkAegisDate.arguments.length == 2)
       OKtoOmitDay = false;

    if (normalizedDate.length == 4)
       {
       AdjustDate = '0' + normalizedDate.substring(0,1);
       AdjustDate += '0' + normalizedDate.substring(1,2);
       if (normalizedDate.substring(2,4) < 80)
          AdjustDate += '20' + normalizedDate.substring(2,4);
       else
          AdjustDate += '19' + normalizedDate.substring(2,4);
       normalizedDate = AdjustDate
       }
    if (normalizedDate.length == 5)
       {
       if ((normalizedDate.substring(0,2) < 13) && (normalizedDate.substring(2,3) > 0))
          {
          AdjustDate = normalizedDate.substring(0,2);
          AdjustDate += '0' + normalizedDate.substring(2,3);
          }       
       else
          {
          AdjustDate = '0' + normalizedDate.substring(0,1);
          AdjustDate += normalizedDate.substring(1,3);
          }
       if (normalizedDate.substring(3,5) < 80)
          AdjustDate += '20' + normalizedDate.substring(3,5);
       else
          AdjustDate += '19' + normalizedDate.substring(3,5);
       normalizedDate = AdjustDate
       }
    
    if (!isYear(normalizedDate.substring(4,8)))
       return false;

    if (!isMonth(normalizedDate.substring(0,2)))
       return false;

    if ( (OKtoOmitDay == true) && isEmpty(normalizedDate.substring(2,4)) )
       return true;
    else if (!isDay(normalizedDate.substring(2,4))) 
       return false;

    if (isDate(normalizedDate.substring(4,8),normalizedDate.substring(0,2),normalizedDate.substring(2,4)))
       { 
          // this code will self destruct in the year 2050
          if (normalizedDate.substring(4,8).length == 2 && normalizedDate.substring(4,8) > 50)
             {
             var newDateValue = normalizedDate.substr(0,4) + "19" + normalizedDate.substring(4,8);
             theField.value = reformatDate(newDateValue);
             return true;
             }
          if (normalizedDate.substring(4,8).length == 2 && normalizedDate.substring(4,8) < 51)
             {
             var newDateValue = normalizedDate.substr(0,4) + "20" + normalizedDate.substring(4,8);
             theField.value = reformatDate(newDateValue);
             return true;
             }
          theField.value = reformatDate(normalizedDate);
          return true;
       }

    alert (iDatePrefix + labelString + iDateSuffix);
    return false;
}

