
function addNavRollovers() {
	
	var imgCache = new Array();
	var nav = document.getElementById('nav');
	var imgs = nav.getElementsByTagName('img');
	for (var i=0;i<imgs.length;i++)
	{
		imgCache[i] = new Image();
		imgCache[i].src = 'images/' + imgs[i].id + '_on.gif';
		imgs[i].onmouseover = rolloverOn;
		imgs[i].onmouseout = rolloverOff;
	}
	
}

function rolloverOn() {
	this.src = 'images/' + this.id + '_on.gif';
}


function rolloverOff() {
	this.src = 'images/' + this.id + '.gif';
}

function sameHeight(elem1, elem2) {
	
	if (elem1.offsetHeight > elem2.offsetHeight) {
		elem2.style.paddingBottom = (elem1.offsetHeight - elem2.offsetHeight + 30) + 'px';
	} else {
		elem1.style.paddingBottom = (elem2.offsetHeight - elem1.offsetHeight + 30) + 'px';
	}
	
}

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}

function clearInnerHTML(obj) {
	// so long as obj has children, remove them
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}

function validateForm() {
	
	var formInputs = new Array();
	var formTextAreas = new Array();
	var formErrors = new Array();
	var errorCount = 0;
	var regEx = "";
	var currentFeedbackElem = null;
	
	//first get all elements from the form and put them into arrays
	formInputs = this.getElementsByTagName('input');
	formTextAreas = this.getElementsByTagName('textarea');
	
	//Loop through the elements and validate them depending on their class attribute
	for (var i=0;i<formInputs.length;i++)
	{
		
		formErrors[i] = "";
		
		//First check to see if this is a required field
		if (formInputs[i].className.indexOf("required") >= 0) {
			if (trim(formInputs[i].value) == "") {
				formErrors[i] = 'This field is required';
			}
		}
		
		//If required check is ok check to see if the className contains any of the specified datatypes to validate
		if (formErrors[i] == "") {
			if (formInputs[i].className.indexOf("email") >= 0) {
				regEx = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
				if (!regEx.test(trim(formInputs[i].value))) {
					formErrors[i] = 'Please enter a valid e-mail address (eg: someone@somewhere.*)';
				}
			} else if (formInputs[i].className.indexOf("tel_no") >= 0) {
				regEx = /^\+?[0-9 ()-]+[0-9]$/;
				if (!regEx.test(trim(formInputs[i].value))) {
					formErrors[i] = 'Please enter a valid telephone number (eg: 01111 111111)';
				}
			} else if (formInputs[i].className.indexOf("postcode") >= 0) {
				regEx = /^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$/;
				if (!regEx.test(trim(formInputs[i].value))) {
					formErrors[i] = 'Please enter a valid UK Postcode (eg: A11 1AA)';
				}
			} else if (formInputs[i].className.indexOf("date") >= 0) {
				regEx = /^(0[1-9]|[12][0-9]|3[01])[-](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[-](19|20)\d\d$/i;
				if (!regEx.test(trim(formInputs[i].value))) {
					formErrors[i] = 'Please enter a valid Date';
				}
			}
		}
		
		if (formErrors[i] != "") {
			errorCount++;
			formInputs[i].style.backgroundColor = "#FFAAAA";
			currentFeedbackElem = document.getElementById(formInputs[i].id + "_feedback");
			clearInnerHTML(currentFeedbackElem);
			currentFeedbackElem.appendChild(document.createTextNode(formErrors[i]));	
			currentFeedbackElem.className = "form_feedback_on";
		} else {
			formInputs[i].style.backgroundColor = "#FFFFFF";
			currentFeedbackElem = document.getElementById(formInputs[i].id + "_feedback");
			clearInnerHTML(currentFeedbackElem);
			currentFeedbackElem.className = "form_feedback_off";
		}
		
	}
	
	return(errorCount == 0);
	
}

function init_homepage() {
	if (document.getElementById) {
		addNavRollovers(); 
		sameHeight(document.getElementById('left_box_content'), document.getElementById('right_box_content'));
	}
}

function init_page() {
	if (document.getElementById) {
		addNavRollovers();
	}
}

function init_contactpage() {
	if (document.getElementById) {
		addNavRollovers();
		document.getElementById('contact_form').onsubmit = validateForm;
	}
}