<!--

function GetXmlHttpObject(handler) { 
	var objXmlHttp = null;

	if (navigator.userAgent.indexOf("Opera") >= 0) {
		alert("This example doesn't work in Opera");
		return;
	} else
	if (navigator.userAgent.indexOf("MSIE") >= 0) { 
		var strName = "Msxml2.XMLHTTP";
		if (navigator.appVersion.indexOf("MSIE 5.5") >= 0) {
			strName = "Microsoft.XMLHTTP";
		} 
		try { 
			objXmlHttp = new ActiveXObject(strName);
			objXmlHttp.onreadystatechange = handler;
			return objXmlHttp;
		} catch(e) { 
			alert("Error. Scripting for ActiveX might be disabled");
			return;
		} 
	} else
	if (navigator.userAgent.indexOf("Mozilla")>=0) {
		objXmlHttp = new XMLHttpRequest();
		objXmlHttp.onload = handler;
		objXmlHttp.onerror = handler;
		return objXmlHttp;
	}
}

function getObject(id) {
	if (document.getElementById) { // DOM3 = IE5, NS6
		return document.getElementById(id);
	} else
	if (document.layers) { // Netscape 4
		return document.id;
	} else { // IE 4
		return document.all.id;
	}
}

String.prototype.trim = function() { 
	return this.replace(/^\s+¦\s+$/g,'');
} 

function showError(p_alertText, p_errDivName) {
	var v_errDivObj = getObject(p_errDivName);
	if (v_errDivObj != null) {
		v_errDivObj.innerHTML = p_alertText;
		v_errDivObj.className = 'errorDisplay';
	}
}

function hideError(p_errDivName) {
	var v_errDivObj = getObject(p_errDivName);
	if (v_errDivObj != null) {
		v_errDivObj.innerHTML = "";
		v_errDivObj.className = 'errorHide';
	}
}

function fieldFilled(p_fieldName, p_alertText, p_errDivName) {
	var v_fieldObj = getObject(p_fieldName);
	if (v_fieldObj == null) {
		showError("The field " + p_fieldName + " does not exist!", p_errDivName);
		return false;
	} else
	if (v_fieldObj.value == null || v_fieldObj.value.trim() == "") {
		showError(p_alertText, p_errDivName);
		return false;
	} else {
		hideError(p_errDivName);
		return true;
	}
}

var dtCh= "/";
var minYear= 1990;
var maxYear= 2020;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag) {   
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function validateDate(dtStr, errDivElementName){
	var errDiv = getObject(errDivElementName);
	var daysInMonth = DaysArray(12)
	var pos1 = dtStr.indexOf(dtCh)
	var pos2 = dtStr.indexOf(dtCh, pos1+1)
	var strMonth = dtStr.substring(0, pos1)
	var strDay = dtStr.substring(pos1+1, pos2)
	var strYear = dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0) == "0" && strDay.length > 1) strDay=strDay.substring(1)
	if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0) == "0" && strYr.length > 1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1 == -1 || pos2 == -1){
		showError('The date format should be : mm/dd/yyyy', errDivElementName);
		return false;
	}
	if (strMonth.length < 1 || month < 1 || month > 12){
		showError('Please enter a valid month', errDivElementName);
		return false;
	}
	if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]){
		errDiv.innerHTML = 'Please enter a valid day';
		errDiv.className = 'errorDisplay';
		return false;
	}
	if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear){
		showError('Please enter a valid 4 digit year', errDivElementName);
		return false;
	}
	if (dtStr.indexOf(dtCh,pos2+1)!= -1 || isInteger(stripCharsInBag(dtStr, dtCh)) == false){
		showError('Please enter a valid date', errDivElementName);
		return false;
	}

	hideError(errDivElementName);
	return true;
}

function validateEmail(emailAddressFieldName, alertText, errDivElementName) {
	var emailAddressField = getObject(emailAddressFieldName);
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i ;
	if (filter.test(emailAddressField.value)) {
		hideError(errDivElementName);
		return true;
	} else {
		showError(alertText, errDivElementName);
		return false;
	}
}

function stateSelected(stateFieldName, alertText, errDivElementName) {
	var stateField = getObject(stateFieldName);
	if (stateField.selectedIndex == -1 || stateField.selectedIndex == 0) {
		showError(alertText, errDivElementName);
		return false;
	} else {
		hideError(errDivElementName);
		return true;
	}
}

/**
 * Phone validation script. Courtesy of SmartWebby.com.
 */
// Declaring required variables
var digits = "0123456789";

// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";

// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Length of the phone number
var phoneNumberLength = 10;


function validatePhoneNumber(phoneElementName, errDivElementName){
	var phoneElement = getObject(phoneElementName);
	s = stripCharsInBag(phoneElement.value, validWorldPhoneChars);
	if (s.length != phoneNumberLength) {
		showError('A phone number must be 10 digits long!', errDivElementName);
		return false;
	}
	
	if (! isInteger(s)) {
		showError('A phone number cannot have characters other than (, ), +, -', errDivElementName);
		return false;
	}

	hideError(errDivElementName);
	return true;
}

var zipLength = 5;

function validateZip(zipElementName, errDivElementName){
	var zipElement = getObject(zipElementName);
	s = stripCharsInBag(zipElement.value, validWorldPhoneChars);
	if (s.length != zipLength) {
		showError('Zip Code must be 5 digits long!', errDivElementName);
		return false;
	}
	
	if (! isInteger(s)) {
		showError('Invalid Zip!', errDivElementName);
		return false;
	}

	hideError(errDivElementName);
	return true;
}

var zipExtLength = 4;

function validateZipExt(zipExtElementName, errDivElementName){
	var zipExtElement = getObject(zipExtElementName);
	s = stripCharsInBag(zipExtElement.value, validWorldPhoneChars);
	if (s.length != zipExtLength) {
		showError('Zip Extension must be 4 digits long!', errDivElementName);
		return false;
	}
	
	if (! isInteger(s)) {
		showError('Invalid Zip Extension!', errDivElementName);
		return false;
	}

	hideError(errDivElementName);
	return true;
}

//-->