function checkEmailForm(){
	var isValid = true;
	//var elIds = ['firstname', 'secondname', 'title', 'agency', 'branch', 'phone', 'email'];
	var elIds = ['firstname', 'agency', 'phone', 'email'];
	try{
		for (var i=0; i<elIds.length; i++){
			hideErrorMark(elIds[i]);
			if(!isNotEmpty(elIds[i])){
				isValid = false;
				showErrorMark(elIds[i]);
			}
		}
		
		if(!isValidEmail(document.getElementById('email').value)){
			isValid = false;
			showErrorMark('email');
		}
	}
	catch(e){
	}
	return isValid;
}

function showErrorMark(elId){
	var l = document.getElementById('lf_' + elId);
	l.innerHTML = l.innerHTML + '<span style="color: red;">*</span>';
}

function hideErrorMark(elId){
	var l = document.getElementById('lf_' + elId);
	l.innerHTML = l.innerHTML.replace(/<span style="color: red;">\*<\/span>/g, '');
}

function isNotEmpty(elId){
	var c = document.getElementById(elId);
	if(c!=null && c!='' && c.value!=null && c.value!=''){
		return true
	}
	else{
		return false;
	}
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function createXmlHttpRequest()
{
	var xmlHttp = null;
	if(window.ActiveXObject)
	{
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}

	else if(window.XMLHttpRequest)
	{
		xmlHttp=new XMLHttpRequest();
	}
	return xmlHttp;
}

function startRequest(method, url, asynchronous, handleStateChange)
{
	var xmlHttp = createXmlHttpRequest();
	xmlHttp.open(method, url, asynchronous)
	xmlHttp.onreadystatechange=handleStateChange;
	xmlHttp.send(null);
	return xmlHttp;
}

//example
function handleStateChangeExample()
{
	if(xmlHttp.readyState==4)
	{
		if(xmlHttp.status==200)
		{
			var message = xmlHttp.responseXML.getElementsByTagName("tagName")[0].childNodes[0].nodeValue;
			alert(message);
		}
		else
		{
			alert("Error loading pagen"+ xmlHttp.status + ":"+xmlHttp.statusText);
        }
    }
}

function isValidEmail(email)
{
	if (!email)
		return false;

	regex = /[\w\.]+@[\w-]+(\.[A_Za-z]{2,3}){1,2}/g;
	trimmedEmail = email.trim();
	found = trimmedEmail.match(regex);
	
	if (found == null){
		return false;
	}else if (found[0].length != trimmedEmail.length){
		return false;
	}else{
		return true;
	}
}

function isValidEmailCo(email)
{
	if (!email)
		return false;

	regex = /[\w\.]+@[\w-]+(\.[A_Za-z]{2,3}){0,1}\.co/g;
	trimmedEmail = email.trim();
	found = trimmedEmail.match(regex);
	
	if (found == null){
		return false;
	}else if (found[0].length != trimmedEmail.length){
		return false;
	}else{
		return true;
	}
}


var globalField = null;

function setFocusToComponent(component)
{
	//http://www.ozzu.com/ftopic48335.html
	globalField = component;
	setTimeout("globalField.focus(); globalField.select()", 0);
}

function localisedAlert(component, msg)
{
	var errMsg = component.getAttribute("errMsg");
	if(errMsg != null){
		alert(errMsg.toString());
	}else{
		alert(msg);
	}
}

function checkImageFile(component)
{
	var value = component.value;
	if(! /(jpg$)|(JPG$)|(gif$)|(GIF$)/.test(value))
	{
		component.value = "";
		localisedAlert(component,"Incorrect file type");
		return false;
	}
	return true;
}

function checkInt(component, down, up)
{
	var value = parseInt(component.value);
	if(!isNaN(value) && /^-?[\d]+$/.test(value))
	{
		if(value < down || value > up)
		{
			localisedAlert(component,"Value is out of range");
			setFocusToComponent(component);
			return false;
		}
	}
	else{
		localisedAlert(component,"Invalid Integer value");
		setFocusToComponent(component);
		return false;
	}
	return true;
}

function checkDate(component) {
	var fieldValue = component.value;
	var regex = /^[\d]{2}[\-|\/\.][\d]{2}[\-|\/\.][\d]{4}$/;
	if (!regex.test(fieldValue)) {
		localisedAlert(component,"Invalid Date format");
		setFocusToComponent(component);
		return false;
	} else {
		var dd = parseInt(fieldValue.substring(0, 2), 10);
		var mm = parseInt(fieldValue.substring(3, 5), 10);
		var yy = parseInt(fieldValue.substring(6, 10), 10);
		if (dd == 0 || mm == 0 || yy == 0) {
			localisedAlert(component,"Invalid Date...");
			setFocusToComponent(component);
			return false;
		}
		if (mm <= 12) {
			switch (mm) {
			  case 4:
			  case 6:
			  case 9:
			  case 11:
				if (dd > 30) {
					localisedAlert(component,"This month has 30 days");
					setFocusToComponent(component);
					return false;
				}
				break;
			}
		} else {
			localisedAlert(component,"Invalid Months...\n\nMakesure date format must be...\n  dd/mm/yyyy\n");
			setFocusToComponent(component);
			return false;
		}
		if ((yy % 4) == 0) {
			if ((mm == 2) && (dd > 29)) {
				localisedAlert(component,"Invalid days in February for leap year");
				setFocusToComponent(component);
				return false;
			}
		} else {
			if ((mm == 2) && (dd > 28)) {
				localisedAlert(component,"Invalid days in February for non leap year.");
				setFocusToComponent(component);
				return false;
			}
		}
	}
	return true;
}


