
//-- -------------------------------------------
//-- FUNCTION TO CLEAR THE SEARCH BOX TEXT
//-- -------------------------------------------
function clearField(Field,fieldValue) {
	if (Field.value	== fieldValue) {
		Field.value = '';
	}
}





//-- -------------------------------------------
//-- FUNCTION TO RESET THE SEARCH BOX TEXT
//-- -------------------------------------------
function resetField(Field,fieldValue) {
	if (Field.value	== '') {
		Field.value = fieldValue;
	}
}





//-- -------------------------------------------
//-- FUNCTION TO PRINT PAGE
//-- -------------------------------------------
function printpage() {
	if (window.print) { window.print(); }
	else {
		alert ("To print this page please select the 'Print' option from your browser's 'File' menu.")
	}
	return;
}





//-- -------------------------------------------
//-- ADD ON LOAD EVENT
//-- -------------------------------------------
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
		func();
		}
	}
}





//-- -------------------------------------------
//-- GENERIC ACCESSIBLE POPUP SCRIPT
//-- -------------------------------------------
var _POPUP_FEATURES = 'width=790,height=525,scrollbars=no';

function raw_popup(url, target, features) {
	if (isUndefined(features)) features = _POPUP_FEATURES;
	if (isUndefined(target)) target   = '_blank';
	var args = getArgs(url);
	refererParam = args.referer;
	if(refererParam.length>0) {
		url = url.substring(0,(url.indexOf("referer")-1));
	}
	var theWindow = window.open(url, target, features);
	theWindow.focus();
	return theWindow;
}

function link_popup(src, features) {
	return raw_popup(src.getAttribute('href'), src.getAttribute('target') || '_blank', features);
}

function isUndefined(v) {
	var undef;
	return v===undef;
}

getArgs = function(query) {
	var args = new Object();
	var pairs = query.split("&");
	for (var i=0; i<pairs.length; i++) {
		var pos = pairs[i].indexOf('=');
		if (pos == -1) continue;
		var argname = pairs[i].substring(0,pos);
		var value = pairs[i].substring(pos+1);
		args[argname] = unescape(value);
	}
	this.max = i;
	return args;
}





//-- -------------------------------------------
//-- WHERE WE WORK MAP FUNCTIONS
//-- -------------------------------------------
var preLoaded = false;
var aPreLoad = new Array();

swapMap = function(index) {
	if (!document.getElementById) return;
	var imgObj = document.getElementById("mapImage");
	if(preLoaded) {
		imgObj.src = aPreLoad[index].src;
	}
};

preLoadMap = function() {
	if (!document.getElementById) return;
	if (document.getElementById("mapImage")) {
		var imgObj = document.getElementById("mapImage");
		var imgPathArr = imgObj.src.split("/");
		var imgPath = imgObj.src.replace(imgPathArr[imgPathArr.length-1],"");
		aPreLoad[0] = new Image();
		aPreLoad[0].src = imgPath + "map-off.gif"
		aPreLoad[1] = new Image();
		aPreLoad[1].src = imgPath + "map-england.gif"
		aPreLoad[2] = new Image();
		aPreLoad[2].src = imgPath + "map-wales.gif"
		aPreLoad[3] = new Image();
		aPreLoad[3].src = imgPath + "map-scotland.gif"
		preLoaded = true
	}
};





//-- -------------------------------------------
//-- GENERIC ADD PRINT BUTTON
//-- -------------------------------------------
addPrint = function() {
	var items;
	items = document.getElementsByTagName("div");
	for (var i = 0; i < items.length; i++) {
		var regex = /\baddPrintButton\b/;
		if (items[i].className.search(regex) >= 0) {
			printP = items[i].appendChild(document.createElement("p"));
			printP.className = "printButton";
			// printP.id = "printButton";
			printA = printP.appendChild(document.createElement("a"));
			printA.href = '#';
			printA.onclick = function() { window.print(); return false; }
			printA.appendChild(document.createTextNode("print this page"));
		}
	}
};





//-- -------------------------------------------
//-- TRAINING DATES DATA TABLE FUNCTIONS
//-- -------------------------------------------
createDataTableRollovers = function() {
	var siblingObj;
	var siblingRowClass;
	var addressObj;
	if (!document.getElementById) return;
	if (document.getElementById("courseDataTable")) {
		var openRow = false;
		var tableObjectRows = document.getElementById("courseDataTable").getElementsByTagName('tr');
		for (var i = 0; i < tableObjectRows.length; i++) {
			if(i>0) {
				theRow = tableObjectRows[i];
				if (hasClass(theRow,"courseDetail")) {

					theRow.onmouseover = function() {
						this.vClassName = this.className
						this.className = "over"
						siblingObj = document.getElementById(this.id + "_details");
						siblingRowClass = siblingObj.className.split(" ")[0];
						siblingObj.vClassName = siblingRowClass
						siblingObj.className = siblingObj.className.replace(siblingRowClass, "over");
					}
					theRow.onmouseout = function() {
						this.className = this.vClassName
						siblingObj = document.getElementById(this.id + "_details");
						siblingRowClass = siblingObj.className.split(" ")[0];
						siblingObj.className = siblingObj.className.replace("over", siblingObj.vClassName);
					}
					theRow.onclick = function() {
						siblingObj = document.getElementById(this.id + "_details");
						addressObj = document.getElementById(this.id + "_address");
						if (hasClass(siblingObj, "disguise")) {
							if(openRow != false) {
								addClass(openRow, "disguise");
							}
							if(addressObj.innerHTML != "") {
								removeClass(siblingObj, "disguise");
								openRow = siblingObj;
							}
						} else {
							addClass(siblingObj, "disguise")
						}
					}
				}
			}
		}
	}
};





//-- -------------------------------------------
//-- GENERIC FORM VALIDATOR
//-- -------------------------------------------
epValidateForms = function() {
	if (!dom) return;

	var allForms = document.getElementsByTagName('form');
	for (var f=0; f<allForms.length; f++) {
		if (hasClass(allForms[f], "epValidate")) {
			// Update form's onsubmit action
			var oldOnsubmit = allForms[f].onsubmit;
			if (typeof allForms[f].onsubmit != "function") {
				allForms[f].onsubmit = function() {
					return epCheckFields(this);
				}
			} else {
				allForms[f].onsubmit = function() {
					epCheckFields(this);
					return oldOnsubmit();
				}
			}
			// Update fields onfocus and onblur actions
			var allInputs = allForms[f].getElementsByTagName("input");
			for (var i=0; i<allInputs.length; i++) {
				if (hasClass(allInputs[i], "epActive")) {
					if(allInputs[i].value == "") {
						allInputs[i].value = allInputs[i].alt;
					}
					allInputs[i].onfocus = function() {
						clearField(this, this.alt);
					}
					allInputs[i].onblur = function() {
						resetField(this, this.alt);
					}
				}
			}
			// Update textareas onfocus and onblur actions
			var allTextareas = allForms[f].getElementsByTagName("textarea");
			for (var t=0; t<allTextareas.length; t++) {
				if (hasClass(allTextareas[t], "epActive")) {
					if(allTextareas[t].value == "") {
						allTextareas[t].value = allTextareas[t].title;
					}
					allTextareas[t].onfocus = function() {
						clearField(this, this.title);
					}
					allTextareas[t].onblur = function() {
						resetField(this, this.title);
					}
				}
			}
		}
	}
	return true;
};


epCheckFields = function(theForm) {
	var hasError = false;
	var errObj;
	var errorMessage = "";

	// Loop through all the fields looking for required fields
	var allInputs = theForm.getElementsByTagName("input");
	for (var i=0; i<allInputs.length; i++) {
		if (hasClass(allInputs[i], "epRequired")) {
			// If the field is empty of has the default value
			if (allInputs[i].value == "" || allInputs[i].value == allInputs[i].alt) {
				hasError = true;
				errObj = allInputs[i];
				errorMessage = "Please enter " + allInputs[i].alt.toLowerCase();
				break;
			// If the field has a value and it is an email field - check it is valid
			} else {
				if (hasClass(allInputs[i], "email") && !validateEmail(allInputs[i].value)) {
					hasError = true;
					errObj = allInputs[i];
					errorMessage = "Please enter a valid email address";
					break;
				} else if (hasClass(allInputs[i], "integer") && !isNumeric(allInputs[i].value)) {
					hasError = true;
					errObj = allInputs[i];
					errorMessage = "Please enter a numeric value";
					break;
				} else {
					removeClass(allInputs[i], "err");
				}
			}
		}
	}
	// If we have an error return false
	if(hasError) {
		addClass(errObj,"err");
		if (document.getElementById("errorHolder")) {
			document.getElementById("errorHolder").innerHTML = errorMessage;
		} else {
			var errorHolder = document.createElement("p");
			errorHolder.id = "errorHolder";
			addClass(errorHolder,"error");
			errorHolder.appendChild(document.createTextNode(errorMessage));
			theForm.parentNode.insertBefore(errorHolder, theForm);
		}
		return false;
	} else {
		return true;
	}
};

function isNumeric(x) {
	var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;
	var result = x.match(RegExp);
	return result;
};

validateEmail = function(addr) {
	var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++) {
		if (addr.indexOf(invalidChars.charAt(i),0) > -1) { return false; }
	}
	for (i=0; i<addr.length; i++) {
		if (addr.charCodeAt(i)>127) { return false; }
	}
	var atPos = addr.indexOf('@',0);
	if (atPos == -1) { return false; }
	if (atPos == 0) { return false; }
	if (addr.indexOf('@', atPos + 1) > - 1) { return false; }
	if (addr.indexOf('.', atPos) == -1) { return false; }
	if (addr.indexOf('@.',0) != -1) { return false; }
	if (addr.indexOf('.@',0) != -1){ return false; }
	if (addr.indexOf('..',0) != -1) { return false; }
	var suffix = addr.substring(addr.lastIndexOf('.')+1);
	if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') { return false; }
	return true;
};






addLoadEvent(epValidateForms);
addLoadEvent(addPrint);
addLoadEvent(createDataTableRollovers);
addLoadEvent(preLoadMap);

