//---------------------------------- FORM FIELD CHECKING ------------//

function validate_form(obj,field_array)
{
	//alert('validating form');
	var field_len = field_array.length;
	for(var i=0;i<field_len;i++)
	{
		var field_info = field_array[i];
		var field_id = field_info[0];
		var field_title = field_info[1];
		var field_datatype = field_info[2];
		
		if(field_datatype=='email')
		{
			if(!testEmail(obj,field_id))
			{
				showEmailError(field_title);
				fieldFocus(obj, field_id);
				return false;
			}
		}else if(field_datatype=='string')
		{		
			field_minlength = field_info[3];
			if(!testString(obj,field_id,field_minlength))
			{
				showStringError(field_title, field_minlength);
				fieldFocus(obj, field_id);
				return false;
			}			
		}else if(field_datatype=='combo')
		{
			if(!testCombo(obj,field_id))
			{
				showComboError(field_title);
				fieldFocus(obj, field_id);
				return false;
			}			
		}else if(field_datatype=='checkbox')
		{
			if(!testCheckbox(obj,field_id))
			{
				showCheckboxError(field_title);
				fieldFocus(obj, field_id);
				return false;
			}			
		}
		else if(field_datatype=='select')
		{
			if(!testSelect(obj,field_id))
			{
				showSelectError(field_title);
				fieldFocus(obj, field_id);
				return false;
			}			
		}
	}
	return true;
}

function fieldFocus(obj, field)
{
	obj[field].focus();
}

function testString(obj,field,minLen)
{
	var val = obj[field].value;
	if(val.length < minLen)
	{
		return false;
	}else{
		return true;
	}
}

function testCombo(obj,field)
{
	var val = obj[field].value;
	if(val=='')
	{
		return false;
	}else{
		return true;
	}
}
function testEmail(obj,field)
{

	var val = obj[field].value;
	var filter  = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(val))
	{
		return true;
	}else{
		return false;
	}
}

function testCheckbox(obj,field)
{
	var val = obj[field].value;
	if(!obj[field].checked)
	{
		return false;
	}else{
		return true;
	}
}

function testSelect(obj,field)
{
	var val = obj[field].selectedIndex;
	if(val == 0)
	{
		return false;
	}else{
		return true;
	}
}

function showEmailError(field)
{
	alert("Invalid email in '" + field + "' field, please fix and re-submit.");
	return false;
}
function showStringError(field,minLen)
{
	alert("Invalid entry in '" + field + "' field, must be at least "+ minLen+" characters in length, please fix and re-submit.");
	return false;
}
function showComboError(field)
{
	alert("Please select item in '" + field + "'.");
	return false;
}

function showCheckboxError(field)
{
	alert("Please choose a '" + field + "'.");
	return false;
}

function showSelectError(field)
{
	alert("Please choose a value for '" + field + "'.");
	return false;
}

function showError(field)
{
	alert("Invalid entry in '" + field + "' field, please fix and re-submit.");
	return false;
}