IE = NS4 = NS6 = OT = false;
if (navigator.appName.match('Microsoft')) {
	IE = true;
} else if (document.layers) {
	NS4 = true;
} else if (navigator.appName.match('Netscape')) {
	NS6 = true;
} else {
	OT = true;
}

function validate(frm) {
	flag = true;
	totalmessage = "";
	for (i=0; i<frm.elements.length; i++) {
		temp = checkElement(frm,frm.elements[i]);
		if (temp != "") {
			totalmessage += temp + "\n";
		}
	}
	if (totalmessage == "") {
		return true;
	} else {
		alert(totalmessage);
		return false;
	}
}

function checkElement(frm,el) {
	if (IE) {
		if (el.valid) {
			valid = el.valid;
		} else {
			return "";
		}
	} else if (NS6) {
		if (el.attributes.getNamedItem("valid") != null) {
			valid = el.attributes.getNamedItem("valid").nodeValue;
		} else {
			return "";
		}
	} else {
		if (el.value != "") {
			return el.name + " must have a value.";
		} else {
			return "";
		}
	}
	
	rules = new Array();
	rules = valid.split(",");
	message = "";
	for (j=0; j<rules.length; j++) {
		if (rules[j] == "exists") {
			if ((el.value == "") || (el.value == null)) {
				message += "\nYou must fill out the " + el.name + " field.";
			}
		} else if (rules[j] == "email") {
			if (!(el.value.match(/^[\w\.]+@[\w-]+\.[\w]+$/))) {
				message += "\n" + el.name + " is not a valid e-mail address.";
			}
		} else if (rules[j] == "number") {
			if (!(el.value.match(/^\d+$/))) {
				message += "\nYou must enter a number for the " + el.name + " field.";
			}
		} else if (rules[j].charAt(0) == "=") {
			field = rules[j].substr(1);
			if (el.value != frm.elements[field].value) {
				message += "\nThe two fields " + el.name + " and " + frm.elements[field].name + " must be equal.";
			}
		} else if (rules[j].charAt(1) == "<") {
			type = rules[j].charAt(0);
			field = rules[j].substr(2);
			if (type == "n") {
				if ((el.value*1) >= (field*1)) {
					message += "\n" + el.name + " must be less than " + field + ".";
				}
			} else if (type == "s") {
				if (el.value.length >= field) {
					message += "\n" + el.name + " must have no greater than " + field + " characters.";
				}
			}
		} else if (rules[j].charAt(1) == ">") {
			type = rules[j].charAt(0);
			field = rules[j].substr(2);
			if (type == "n") {
				if (el.value <= field) {
					message += "\n" + el.name + " must be greater than " + field + ".";
				}
			} else if (type == "s") {
				if (el.value.length <= field) {
					message += "\n" + el.name + " must have no less than " + field + " characters.";
				}
			}
		} else if (rules[j].charAt(1) == "=") {
			type = rules[j].charAt(0);
			field = rules[j].substr(2);
			if (type == "n") {
				if (el.value != field) {
					message += "\n" + el.name + " must be exactly " + field + ".";
				}
			} else if (type == "s") {
				if (el.value.length != field) {
					message += "\n" + el.name + " must have exactly " + field + " characters.";
				}
			}
		} else {
			message += "Invalid Rule: " + rules[i] + "\nElement: " + el.name;
		}
	}
	return message;
}

function goNext(len,frm,next) {
	which = event.srcElement;
	key   = event.keyCode;
	if ((which.value.length >= len) && checkCode(key)) {
		document.getElementById(frm).elements[next].focus();
		return true;
	} else {
		return false;
	}
}
function goBack(frm,prev) {
	which = event.srcElement;
	key   = event.keyCode;
	if ((which.value.length <= 0) && checkCode(key)) {
		document.getElementById(frm).elements[prev].focus();
		return true;
	} else {
		return false;
	}
}

function checkCode(key) {
	flag = false;
	if ((key >= 48) && (key <= 57)) {
		flag = true;
	}
	if ((key >= 65) && (key <= 90)) {
		flag = true;
	}
	if ((key >= 96) && (key <=105)) {
		flag = true;
	}
	if (key == 8) {
		flag = true;
	}
	return flag;
}