var emptyString = " field is blank. Please enter a "
var STATECODES = "AL/AK/AZ/AR/CA/CO/CT/DE/DC/FL/GA/HI/ID/IL/IN/IA/KS/LA/ME/MD/MA/MI/MN/MS/MO/MT/NV/NH/NJ/NM/NY/NC/ND/OH/OK/OR/PA/PR/RI/SC/TN/TX/UT/VT/VA/WA/WV/WI/WY"

function isValidDate(myField, s) {
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Also separates date into month, day, and year variables
var dateStr = myField
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

// To require a 4 digit year entry, use this line instead:
// var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

var matchArray = dateStr.match(datePat); // is the format ok?
if (matchArray == null) {
alert("Date is not in a valid format in '" + s + "'.")
return false;
}
month = matchArray[1]; // parse date into variables
day = matchArray[3];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
alert("Month must be between 1 and 12 in '" + s + "'.");
return false;
}
if (day < 1 || day > 31) {
alert("Day must be between 1 and 31 in '" + s + "'.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Month "+month+" doesn't have 31 days in '" + s + "'")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("February " + year + " doesn't have " + day + " days in '" + s + "'");
return false;
   }
}
return true;  // date is valid
}


function validMonth(myfield) {
	if (isDigits(myfield.value) && isInRange(myfield.value,0, 12))
		return true
	else {
		myfield.focus()
		alert("Invalid month. Please enter a month number between 1 and 12")
		return false
	}
}
function validDay(myfield) {
	if (isDigits(myfield.value) && isInRange(myfield.value,0, 31))
		return true
	else {
		myfield.focus()
		alert("Invalid date. Please enter a day number between 1 and 31")
		return false
	}
}
function validYear(myfield) {
	if (isDigits(myfield.value) && isInRange(myfield.value,1880, 2010))
		return true
	else {
		myfield.focus()
		alert("Invalid date. Please enter a 4 digit year number within the last hundred years or so")
		return false
	}
}


function isDigits(str) {
	var i
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if (mychar < "0" || mychar > "9")
			return false
	}
	return true
}

function stripNonDigits(str) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (isDigits(mychar)) 
			newstring += mychar
	}
	return newstring
}
function isInRange(str, num1, num2) {
	var i = parseInt(str)
	return((i >= num1) && (i <= num2))
}	

function isNumber(str) {
	numdecs = 0
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if ((mychar >= "0" && mychar <= "9") || mychar 
			== ".") {
			if (mychar == ".")
				numdecs++
		}
		else 
			return false
	}
	if (numdecs > 1)
		return false	
return true
}

function isStateCode (str) {
	var newstring = str.toUpperCase()
	if (STATECODES.indexOf(newstring) != -1 && str.indexOf("/") == -1)
		return true
	else 
		return false
}


function notNull(str) {
	if (str.length == 0 )
		return false
	else 
		return true
}

function notBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ")
			return true
	}
	return false
}

function isSize(str, size) {
	if (str.length == size) 
		return true
	else
		return false
}

function validateState(myfield) {
	if (notNull(myfield.value) && isSize(myfield.value, 2) && isStateCode(myfield.value))
		return true
	else {
		myfield.focus()
		alert("Invalid state code. Please enter 2-letter state postal abbreviation.")
		return false
	}
}

function validateZip(myfield) {
	if (notNull(myfield.value)) {
		newstring = stripNonDigits(myfield.value)
		if (isSize(newstring,5) || isSize(newstring, 9)) 
			return true
	}
	myfield.focus()
	alert("Invalid zip code. Please enter 5-digit or 9-digit zip code.")
	return false
}

function validatePhone(myfield) {
	if (notNull(myfield.value)) {
		newstring = stripNonDigits(myfield.value)
		if (isSize(newstring,10)) 
			return true
	}
	myfield.focus()
	alert("Invalid phone number. Please enter 3-digit area code followed by the 7-digit phone number.")
	return false
}

function validRadio(myfield, s) {
  for (i=0; i<myfield.length; i++) {
    if (myfield[i].checked) {
      return true;
    }
  }  
  alert("Please select one of the " + s + " values");
  return false;
}

function validDropdown(myfield, s) {
	if(myfield.selectedIndex==0) {
		myfield.focus()
		alert("Please select one of the " + s + " values")
		return false
	} else 
		return true
}
function validateString(myfield, s) {
	if (notNull(myfield.value) && notBlank(myfield.value)) 
		return true
	else {
		myfield.focus()
		alert("The " + s + emptyString + s)
		return false
	}
}

function validatePIN(myfield) {
	if (notNull(myfield.value) && notBlank(myfield.value) && isSize(myfield.value, 4))
		return true
	else {
		myfield.focus()
		alert("Invalid PIN number. Please enter a four digit number between 0 and 9999")
		return false
	}
}

function validateEmpNum(myfield) {
	if (isDigits(myfield.value) && isSize(myfield.value, 9)) 
		return true
	else {
		myfield.focus()
		alert("Invalid employee ID number. Please enter a 9-digit number.")
		return false
	}
}

function validateNewEmpNum(myfield) {
	if (isDigits(myfield.value) && isSize(myfield.value, 5)) 
		return true
	else {
		myfield.focus()
		alert("Invalid employee ID number. Please enter your 5-digit ID number.")
		return false
	}
}

function validateSSNum(myfield) {
	if (isDigits(myfield.value) && isSize(myfield.value, 9)) 
		return true
	else {
		myfield.focus()
		alert("Invalid Social Security number. Please enter a 9-digit number with no spaces or additional characters.")
		return false
	}
}

function validDate(myfield, s) {
	if (isValidDate(myfield.value, s))
		return true
	else {
		return false
	}
}

function validNumber(myfield,s) {
	if (isNumber(myfield.value) && notNull(myfield.value) && notBlank(myfield.value))
		return true
	else {
		myfield.focus()
		alert(s + " field must contain a number")
		return false
	}
}

function DateOrBlank(myfield,s){
    alert("check date 2")
	if (notNull(myfield.value) && notBlank(myfield.value) && isValidDate(myfield.value, s))	    
		return true
	else 
		return false	
}