//SERVER-SIDE ONLY FUNCTIONS
function verifyUnique(field,msg){ return true; }
function verifyExists(field,msg){ return true; }
function verifyTitle(field,msg){ return true; }

//CLIENT SIDE FUNCTIONS
function verifyState(field,msg)
{
	if(!field.value) return true;

	var val = parseInt(field.value);
	if(val>=1 && val<=8) return true;
	
	if(!msg) msg = "Please select a valid state.";
	alert(msg);
	field.focus();
	return false;
}

function verifyPhone(field,msg)
{
	if(!field.value) return true;
	
	var phone_valid = /^\+?[0-9| ]{8,20}$/;
	if(!phone_valid.test(field.value))
	{
		if(!msg) msg = "Please enter a valid phone number.";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyFax(field,msg)
{
	if(!msg) msg = "Please enter a valid fax number";
	return verifyPhone(field,msg);
}

function verifyURL(field,msg)
{
	if(!field.value) return true;

	if(field.value.substr(0,7)!="http://" || field.value.length <=7)
	{
		if(!msg) msg = "Please enter a valid website address.";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyPostcode(field,msg)
{
	if(!field.value) return true;
	
	var postcode_valid = /^[0-9]{4}$/;
	if(!postcode_valid.test(field.value))
	{
		if(!msg) msg = "Please enter a valid postcode.";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyEmail(field,msg)
{
	if(!field.value) return true;
	
	var email_not_valid = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/;
	var email_valid = /^.+\@(\[?)[a-zA-Z0-9\-\._]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;

	if(!(!email_not_valid.test(field.value) && email_valid.test(field.value))) 
	{
		if(!msg) msg = "Please enter a valid email address.";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyDate(field,msg)
{
	if(!field.value) return true;
	
	var date_valid = /^([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/;
	if(!date_valid.test(field.value))
	{
		if(!msg) msg = "Please enter a valid date (dd/mm/yyyy).";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyTime(field,msg)
{
	if(!field.value) return true;
	
	var time_valid = /^([0-9]{1,2}):([0-9]{1,2}) ([AP]M)$/;
	if(!time_valid.test(field.value))
	{
		if(!msg) msg = "Please enter a valid time (hh:mm AM/PM).";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}

function verifyMinLength(field,minlength,textarea)
{
	if(!field.value) return true;
	
	if(field.value.length<minlength)
	{
		alert("Please ensure this field contains "+minlength+" or more characters.");
		field.select();
		return false;
	}
	return true;
}

function verifyMaxLength(field,maxlength,textarea)
{
	if(!field.value) return true;

	if(field.value.length>maxlength)
	{
		alert("Please ensure this field contains "+maxlength+" or less characters.");
		field.select();
		return false;
	}
	return true;
}

function verifyMaxVal(field,maxval)
{
	if(!field.value) return true;
	
	if(parseFloat(field.value)>maxval)
	{
		alert("Please enter a number less than or equal to "+maxval+".");
		field.select();
		return false;
	}
	return true;
}

function verifyMinVal(field,minval)
{
	if(!field.value) return true;
	
	if(parseFloat(field.value)<minval)
	{
		alert("Please enter a number greater than or equal to "+minval+".");
		field.select();
		return false;
	}
	return true;
}

function verifyNumber(field)
{
	if(!field.value) return true;
	
	var num_valid = /^-?[0-9]*.?[0-9]*$/;
	if(!num_valid.test(field.value) && field.value)
	{
		alert("Please enter a valid number.");
		field.select();
		return false;
	}
	return true;
}

function verifyPositiveNumber(field)
{
	if(!field.value) return true;
	
	var num_valid = /^[^-][0-9]*.?[0-9]*$/;
	if(!num_valid.test(field.value) && field.value)
	{
		alert("Please enter a valid positive number.");
		field.select();
		return false;
	}
	return true;
}

function verifyInteger(field)
{
	if(!field.value) return true;

	var int_valid = /^-?[0-9]*$/;
	if(!int_valid.test(field.value) && field.value)
	{
		alert("Please enter a valid integer.");
		field.select();
		return false;
	}
	return true;
}

function verifyAlphaFirst(field,msg)
{
	if(!field.value) return true;

	var is_valid = /^[A-Za-z]{1}/;
	if(!is_valid.test(field.value) && field.value)
	{
		if(!msg) msg = "Please ensure A-Z is the first letter entered.";
		alert(msg);
		field.select();
		return false;
	}
	return true;
}


function verifyCompleted(field,msg)
{
	if(!msg) msg = "Please complete this field."
	if((field.type=="text" || field.type=="textarea" || field.type=="password") && !field.value)
	{
		alert(msg);
		field.focus();
		return false;
	}
	else if(field.type.substr(0,6)=="select")
	{
		var value="";
		for(var i=0; i<field.options.length; i++)
		{
			if(field.options[i].selected)
			{
				value = field.options[i].value;
				if(value=="")
				{
					alert(msg);
					field.focus();
					return false;
				}
				return true;
			}
		}
	}
	else if(field.type=="file" && !field.value)
	{
		alert(msg);
		field.focus();
		return false;
	}
	return true;
}
