

var errors = new Array();
var form_inputs = new Array();

function raise_error(element, message) {
	// clear any existing errors
	clear_error(element);

	//	element.style.backgroundColor = "#FF99CC";
	new_elem = document.createElement("div");
	new_elem.className="form_error";
	new_elem.innerHTML=message;
	element.parentNode.appendChild(new_elem);
	add_class(element, "input_error");
}


function clear_error(element) {
	// get rid of existing error messages, if any
	remove_class(element, "input_error");
	p = element.parentNode;
	kids = p.childNodes;
	for (i=0; i<kids.length; i++) {
		if (kids[i].className=="form_error") {
			p.removeChild(kids[i]);
		}
	}
}


function valid_ns(element) {
	if (element.value != "") {
		var obj_reg_exp = /^[0-9a-zA-Z]+[0-9A-Za-z-_]*(\.[0-9a-zA-Z][0-9A-Za-z-_]*)+[a-zA-Z]$/;
		if (obj_reg_exp.test(element.value)) {
			clear_error(element);
			return true;
		} else {
			raise_error(element, "Invalid Name Server");
			return false;
		}	
	} else {
		clear_errors(element);
		return true;
	}
}

function valid_ip(element) {
		var obj_reg_exp = /([0-9]{1,3}\.){3}[0-9]{1,3}$/;
		if (obj_reg_exp.test(element.value)) {
			clear_error(element);
			return true;
		} else {
			raise_error(element, "Invalid IP");
			return false;
		}
}

function valid_select(element) {
	var value = element.options[element.selectedIndex].value;
	if ((value==" ") || (!value)) {
		raise_error(element, "This field is required");
		return false;
	} else {
		clear_error(element);
		return true;
	}
}

function valid_text(element, length) {
	if (element.value.length < length) {
		if (length==1) {
			raise_error(element, "This field is required");	
			return false;
		} else {
			raise_error(element, "You must enter at least " + length + " characters");	
			return false;
		}
	} else {
		clear_error(element);
		return true;
	}
}


function valid_phone(element) {

	var obj_reg_exp = /^\d{3}\-\d{3}\-\d{4}$/;
	if (obj_reg_exp.test(element.value)) {
		clear_error(element);
		return true;
	} else {
		raise_error(element, "please use the form '999-999-9999'");
		return false;
	}
}


function validate_form() {
	var has_errors=false;
	for(q=0; q<form_inputs.length; q++) {
		if (!validate(form_inputs[q])) {
			has_errors=true;
		}
	}
	if (has_errors) {
		add_error("Your information could not be saved due to input errors.  Please see below for details.");
		display_errors();
	}
	return !has_errors;
}


function init_validation() {
	inputs = document.getElementsByTagName("input");
	form_inputs = inputs;
	for (i=0; i<inputs.length; i++) {
		if (inputs[i].addEventListener) {
			inputs[i].addEventListener("blur", foo, false);
			inputs[i].addEventListener("keyup", correct, false);
		} else if (inputs[i].attachEvent) {
			inputs[i].attachEvent("onblur", foo);
			inputs[i].attachEvent("keyup", correct);
		}
	}
	
	inputs = document.getElementsByTagName("select");
	form_inputs = inputs;
	for (i=0; i<inputs.length; i++) {
		if (inputs[i].addEventListener) {
			inputs[i].addEventListener("blur", foo, false);
		} else if (inputs[i].attachEvent) {
			inputs[i].attachEvent("onblur", foo);
		}
	}
}


function validate(element) {
	if (has_class(element, "valid_text")) {
		return valid_text(element, 1);
	}

	if (has_class(element, "valid_ns")) {
		return valid_ns(element);
	}

	if (has_class(element, "valid_select")) {
		return valid_select(element);
	}

	if (has_class(element, "valid_ip")) {
		return valid_ip(element);
	}

	return true;
}

function get_target(event) {
	
	if (event.target) {
		element = event.target;
	} 

	if (event.srcElement) {
		element = event.srcElement;
	}
	return element;
}

function correct(event) {
	element = get_target(event);
	if (has_class(element, "error")) {
		validate(element);
	}
}

function foo(event) {
	element = get_target(event);
	validate(element);
}

