function isEmailAddress(string){
	var regex = new RegExp('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$');
	return regex.test(string);
}

function isTelephoneNumber(string){
	var regex = new RegExp('^[0-9 ]+$');
	return regex.test(string);
}

function checkName(r, error){
	var toReturn = false;
	var regex = new RegExp('^[a-zA-Z ]+$');
	if(toReturn = (regex.test(r.value) && (r.value.length > 3))){
		r.style.backgroundColor = normalColour();		
		showError(false, error);
	}
	else
	{
		r.style.backgroundColor = errorColour(); 
		showError(true, error);
	}
	return toReturn;			
}
			
function checkEmail(r, error){
	var toReturn = false;
	if(toReturn = isEmailAddress(r.value)){
		r.style.backgroundColor = normalColour();
		showError(false, error);
	}
	else
	{
		r.style.backgroundColor = errorColour();
		showError(true, error)
	}				
	return toReturn;		
}
function checkTelephone(r, error){
	var toReturn = false;
	if((toReturn = isTelephoneNumber(r.value)) && (r.value.length > 5)){
		r.style.backgroundColor = normalColour();
		showError(false, error);		
	}
	else
	{
		r.style.backgroundColor = errorColour();
		showError(true, error)	
	}
	return toReturn;
}
			
function checkTextArea(r, error){
	var toReturn = false;
	if(toReturn = r.value.length > 1){
		r.style.backgroundColor = normalColour();	
		showError(false, error);
	}
	else
	{
		r.style.backgroundColor = errorColour();
		showError(true, error);
	}
	return toReturn;			
}

function checkFFields(rarray, error){
	var toReturn = false;
	for(var i = 0; i < rarray.length; i++){
		toReturn = toReturn || checkFField(document.getElementById(rarray[i]));
	}
	if(toReturn){	
		showError(false, error);
		for(var i = 0; i < rarray.length; i++){
			document.getElementById(rarray[i]).style.backgroundColor = normalColour();	
		}
	}
	else
	{
		showError(true, error);
		for(var i = 0; i < rarray.length; i++){
			document.getElementById(rarray[i]).style.backgroundColor = alertColour();	
		}
	}
	return toReturn;	
}

function checkFField(r){
	return (r.value.length > 5);
}

function submitForm(element){
	return fireOnchange(element);
}

function fireOnchange(element){
	var children = element.childNodes;
	var toReturn = true;
	for(var i = 0; i < children.length; i++){
		var t = fireOnchange(children[i]);
		toReturn = toReturn && t;
	}
	if((element.className == "text") || (element.className == "textarea")){
		if(element.onchange != null){
			var t = element.onchange();
			toReturn = toReturn && t;
		}
	}
	if(toReturn == null){
		toReturn = false;	
	}
	return toReturn;
}
			
function resetForm(form){
	form.reset();
	resetColours(form);
}
		
function resetColours(element){
	var children = element.childNodes;
	for(var i = 0; i < children.length; i++){
		if((children[i].className == "text") || (children[i].className == "textarea")){
			children[i].style.backgroundColor = normalColour();
		}
		if(children[i].className == "error_message"){
			children[i].style.display = "none";
		}
		resetColours(children[i]);
	}			
}		

function errorColour(){
	return "#FF8888";
}
		
function alertColour(){
	return "#FFFF00";
}
			
function normalColour(){
	return "#FFFFFF";
}

function showError(boolean, error){
	if(boolean){
		document.getElementById(error).style.display = "inline";
	}
	else
	{
		document.getElementById(error).style.display = "none";
	}
}

function fireWindow(url, xSize, ySize, name){
	newWindow = window.open(url, name, "width="+ xSize + ",height=" + ySize + ",menubar=no,location=no,top=50,left=50,resizable=no,scrollbars=no,status=no");	
	newWindow.width = xSize;
	newWindow.height = ySize;
}

function encryptMail(charArray, subject){
	var toReturn = "<a href=\"mailto:";
	var address = "";
	for(i = 0; i < charArray.length; i++){
		address += String.fromCharCode(charArray[i]);	
	}
	toReturn += address;
	if(subject != null){
		toReturn += "?subject=" + subject;
	}
	toReturn += "\"";
	return toReturn += ">" + address + "</a>";	
}