
//-- -------------------------------------------
//-- 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 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;
}









writeSearchForm = function() {

	if(!dom) return;
	if(document.getElementById("searchForm")) {
		var objTARGET = document.getElementById("searchForm");
		var strHTML = "\
		<form action=\"http://www.infohub.moneyadvicetrust.org/search.asp\" id=\"cse-search-box\" class=\"epValidate\">\
			<input type=\"hidden\" name=\"cx\" value=\"001954874368791672392:hpukyyo7fmy\" />\
			<input type=\"hidden\" name=\"cof\" value=\"FORID:11\" />\
			<fieldset>\
				<legend>Search the site:</legend>\
				<label for=\"q\" class=\"disguise\">Enter keyword</label><input class=\"txt\" alt=\"Search term\" id=\"q\" name=\"q\" type=\"text\" value=\"\" /><button type=\"submit\" name=\"sa\" id=\"sa\">Search</button>\
			</fieldset>\
		</form>\
		";

		removeClass(objTARGET, "searchSpacer");
		objTARGET.innerHTML = strHTML;
	}
};












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 onblue actions
			var allInputs = allForms[f].getElementsByTagName("input");
			for (var i=0; i<allInputs.length; i++) {
				if (hasClass(allInputs[i], "txt")) {
					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);
					}
				}
			}
		}
	}
	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 {
					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;
	}
}




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(writeSearchForm);
addLoadEvent(epValidateForms);

