// JavaScript Document

function FormValidator (formName) {
	this.formName = formName;
	this.requiredItems = new Array ();
	this.requiredRadios = new Array ();
	
	this.requireItem = requireItem;
	this.requireRadio = requireRadio;
	this.checkForm = checkForm;
	this.trimFormFields = trimFormFields;
}

function requireItem (fieldName, displayText) {
	var myItem = new requiredItem (fieldName, displayText);	
	this.requiredItems [this.requiredItems.length] = myItem;
}

function requireRadio (fieldName, displayText) {
	var myItem = new requiredRadio (fieldName, displayText);
	this.requiredRadios [this.requiredRadios.length] = myItem;
}

function checkForm () {
	this.trimFormFields ();
	var formValid = true;
	var myForm = document.forms [this.formName];
	var message = "The following fields are required:\n\n";
	var fieldFocus = true;
	var noCheck = true;
	
	for (var i = 0; i < this.requiredItems.length; i++) {
		myItem = this.requiredItems [i];
		myValue = myForm.elements [myItem.fieldName].value;
		if (myValue.length == 0) {
			formValid = false;
			message += myItem.displayText + "\n";
			
			if (fieldFocus) {
				myForm.elements [myItem.fieldName].focus();
				fieldFocus = false;
			}
		}
	}
	for (var i = 0; i < this.requiredRadios.length; i++) {
		myItem = this.requiredRadios [i];
		myValue = myForm.elements [myItem.fieldName];
		noCheck = true;
		for (var j=0; j < myValue.length; j++) {
         	if (myValue[j].checked) {
            	noCheck = false;
         	}
      	}
		if (noCheck) {
			formValid = false;
			message += myItem.displayText + "\n";
		}
	}
	if (! formValid) {
		alert (message);
	}
		
	return (formValid);
}

function requiredItem (fieldName, displayText) {
	this.fieldName = fieldName;
	this.displayText = displayText;
}
function requiredRadio (fieldName, displayText) {
	this.fieldName = fieldName;
	this.displayText = displayText;
}

function trim (str) {
	while (str.length > 0 && str.indexOf (" ") == 0) {
		str = str.substr (1);
	}
	while (str.length > 0 && str.indexOf (" ") == str.length - 1) {
		str = str.substr (0, str.length - 1);
	}

	return str;
}

function trimFormFields () {
	var myForm = document.forms [this.formName];
	
	for (var i = 0; i < myForm.elements.length; i++) {
		var myElement = myForm.elements [i];
		var myValue = myElement.value;
		myElement.value = trim (myValue);
	}
}

function macAddressValid (myField) {
	myValue = myField.value;
	myValueArray = myValue.split (":");
	myValue = myValueArray.join ("");
	myValueArray = myValue.split ("-");
	myValue = myValueArray.join ("");
	myValueArray = myValue.split (" ");
	myValue = myValueArray.join ("");
	
	var validCharacters = "0123456789abcdefABCDEF";
	
	if (myValue.length != 12) {
		alert ("Invalid length for the MAC Address.");
		return (false);
	}
	
	for (var i = 0; i < myValue.length; i++) {
		myChar = myValue.charAt (i);
		if (validCharacters.indexOf (myChar) < 0) {
			alert ("Invalid character in MAC Address.");
			return (false);
		}
	}
	
	myField.value = myValue;
	
	return (true);
}
