// <!-- 

function isEmpty(s){
    return ((s == null) || (s.length == 0))
}

function isWhitespace (s){
    var i;
    var whitespace = " \t\n\r";

    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 ForceEntry(objField, sFieldName){
	var strField
	if (objField){
	    strField = new String(objField.value);
	    if (isWhitespace(strField)) {
	        alert("You need to enter information for " + sFieldName + ".");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
//          objField.select();
	        return false;
		}
		else {
   			objField.style.backgroundColor = "#ffffff";
	    }
	}    
    return true;
}

function ForceInteger(objField, sFieldName, bRequired){
	var sField, i;
	if (objField){
	    sField = new String(objField.value);
//	    alert("sFieldName=" + sFieldName + " sField=" + sField);
	    if (isWhitespace(sField)){
			if (bRequired){
				alert("You need to enter information for " + sFieldName + ".");
				objField.focus();
				objField.style.backgroundColor = "#ffffcc";
				    return false;
				}
			}
        for (i = 0; i < sField.length; i++){
		if (sField.charAt(i) < '0' || sField.charAt(i) > '9') {
		    alert(sFieldName + " must be a valid number.");
		    objField.focus();
		    objField.style.backgroundColor = "#ffffcc";
	            return false;
    		}
	    	else {
   		    objField.style.backgroundColor = "#ffffff";
    		}
	    }
	}		
	return true;
}

function ForceReal(objField, sFieldName){
    var sField, i;
    if (objField){
        sField = new String(objField.value);
//        alert("sFieldName=" + sFieldName + " sField=" + sField);
	if (isWhitespace(sField)){
	    alert("You need to enter information for " + sFieldName + ".");
	    objField.focus();
	    objField.style.backgroundColor = "#ffffcc";
	    return false;
	}
	for (i = 0; i < sField.length; i++){
	    if ((sField.charAt(i) < '0' || sField.charAt(i) > '9') && (sField.charAt(i) != '.')) {
		alert(sFieldName + " must be a valid number. Radix (.) is allowed.");
		objField.focus();
		return false;
	    }
	}
    }	
    return true;
}

function ForceLength(objField, min, max, sFieldName){
	var s
	
	if (objField){
	    s = new String(objField.value);
	    if (s.length < min) {
	        alert("Length of field: " + sFieldName + " must be greater than " + min + " characters.");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
	        return false;
		}
		else if (s.length > max) {
	        alert("Length of field: " + sFieldName + " must be less than " + max + " characters.");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
	        return false;
		}
		else {
   			objField.style.backgroundColor = "#ffffff";
	    }
	}    
    return true;
}

// ForceSelect requires a selection from a drop down list 
function ForceSelect(objField, sFieldName){
	if (objField){
	    if (objField.selectedIndex < 0){
	        alert("You need to enter information for " + sFieldName + ".");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
	        return false;
		}
	    if (objField.options[objField.selectedIndex].value == "") {
	        alert("You need to enter information for " + sFieldName + ".");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
	        return false;
		}
		else {
   			objField.style.backgroundColor = "#ffffff";
	    }
	}
	return true;
}

function ForceRadio(objField, sFieldName){
	if (objField){
//		alert ("objField.length=" + objField.length);
		for (var i = 0; i < objField.length; i++){
//		    alert ("objField[" + i + "].checked=" + objField[i].checked);		
		    if (objField[i].checked == true) {
				return true;
			}
		}	
	}
        alert("You need to select value for " + sFieldName + ".");
	return false;
}

function ForceDate(objField, sFieldName){
	var sDate
	
	if (objField){
	    sDate = new String(objField.value);
	    if (isValidDate(sDate, sFieldName) == false) {
//	        alert("You need to enter information for " + sFieldName + ".");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
	        return false;
		}
		else {
   			objField.style.backgroundColor = "#ffffff";
	    }
	}    
    return true;
}

function ForceSSN(objField, sFieldName)
{
	var s, sPattern, aMatch;
	
	if (objField){
	    s = new String(objField.value);
	    sPattern = /^(\d{3})(\-)(\d{2})\2(\d{4})$/;
	    aMatch = s.match(sPattern);
	    if (aMatch == null) {
			alert(sFieldName + " is not in a valid format. Must be ###-##-####");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
			return false;
	    }
    }
	return true;
}

function ValidateDate(objField, sFieldName, bRequired){
	var sField;
	if (objField){
		sField = new String(objField.value);
		if (isEmpty(sField)){
			if (bRequired) {
				alert("You need to enter information for '" + sFieldName + "'.");
				objField.focus();
				objField.style.backgroundColor = "#ffffcc";
			    return false;
			}
			objField.style.backgroundColor = "#ffffff";
			return true;
		}
		if (isValidDate(sField, sFieldName) == false) {
		    objField.focus();
			objField.style.backgroundColor = "#ffffcc";
		    return false;
		}
		objField.style.backgroundColor = "#ffffff";
	}    
    return true;
}

function isValidDate(dateStr, sFieldName) {
// 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 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(sFieldName + " Date is not in a valid format. Must be mm/dd/yyyy.")
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
		alert(sFieldName + " Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) {
		alert(sFieldName + " Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert(sFieldName + " Month "+month+" doesn't have 31 days!")
		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(sFieldName + " February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	if (year < 1900) { // check if year is before 1900
		alert(sFieldName + " Year must be greater than 1900.");
		return false;
	}	
	return true;  // date is valid
}

function isValidPhone(objField, sFieldName, bRequired)
{
	var s, sPatern, aMatch;
	
	if (objField){
	    s = new String(objField.value);
	    if (isEmpty(s)){
			if (bRequired) {
				alert("You need to enter information for '" + sFieldName + "'.");
				objField.focus();
				objField.style.backgroundColor = "#ffffcc";
			    return false;
			}
			objField.style.backgroundColor = "#ffffff";
			return true;
		}
	    sPattern = /^(\d{3})(\-)(\d{3})\2(\d{4})$/;
	    aMatch = s.match(sPattern);
	    if (aMatch == null) {
			alert(sFieldName + " is not in a valid format for North American phone numbers. Must be ###-###-####.");
	        objField.focus();
			objField.style.backgroundColor = "#ffffcc";
			return false;
	    }
	   objField.style.backgroundColor = "#ffffff";
    }
	return true;
}
// -->
