var reDate = /^[0-3]?[0-9]\/[0-1]?[0-9]\/[1-2]?[0-9]?[0-9][0-9]$/
var reEmail = /^[A-Za-z0-9_\.\-\'&]+\@[A-Za-z0-9\.\-]+\.[A-Za-z]{2,6}$/
var reInteger = /^\d+$/
var reURL	= /^[A-Za-z0-9\.\-]+\.[A-Za-z]{2,4}(:[0-9]+)?\/?.*$/
//var reReal = /^\d{0,9}?\.?\d+$/
var reReal = /^[0-9]+\.?[0-9]?[0-9]?$/
var reWhitespace = /^\s+$/


function chkRadio(radName)
{
	var sel		= false
	var inps	= document.getElementsByTagName('input');
	var len		= inps.length;

	for (i=0;i<len;i++)
	{
	    if ((inps[i].type=="radio")&&(inps[i].name==radName)&&(inps[i].checked))
	    {	        
	        sel = true
	    }

	}
	return sel;
}	

function GetRadioVal(radName)
{
	var retVal	= "";
	var inps	= document.getElementsByTagName('input');
	var len		= inps.length;

	for (i=0;i<len;i++)
	{
	    if ((inps[i].type=="radio")&&(inps[i].name==radName)&&(inps[i].checked))
	    {	        
	       retVal = inps[i].value;
		  
	    }

	}
	return retVal;
}	

function EmptyField(s) {
	return ((s == null) || (s.length == 0) || reWhitespace.test(s));
}

function EmptyNumeric(s) {
	return ((s==0) || (s == null) || (s.length == 0) || reWhitespace.test(s));
}

function IsURL(s){
	return (reURL.test(s));
}
function IsInteger(s) {
	return (reInteger.test(s));
}
function IsReal(s) {
	return (reReal.test(s));
}
function ValidateEmail(s) {
	return (reEmail.test(s));
}
function ValidateWholeDate(s) {
	if (!reDate.test(s)) return (false);
	else {
		var dateCount = 1;
		var noDay = "";
		var noMonth = "";
		var noYear = "";
		for (i = 0;  i < s.length;  i++) {
			if (s.charAt(i) != "/") {
				if (dateCount == 1) noDay = noDay + s.charAt(i);
				if (dateCount == 2) noMonth = noMonth + s.charAt(i);
				if (dateCount == 3) noYear = noYear + s.charAt(i);
			}
			else {dateCount++;}
		}
		if (noDay.charAt(0) == "0") noDay = noDay.charAt(1);
		if (noMonth.charAt(0) == "0") noMonth = noMonth.charAt(1);
		return (ValidateSplitDate(noDay,noMonth,noYear));
	}
}
function ValidateSplitDate(ds,ms,ys) {
	var intDay = parseInt(ds);
	var intMonth = parseInt(ms);
	var intYear = parseInt(ys);
	var daysInMonth = new Array(0,31,29,31,30,31,30,31,31,30,31,30,31)
	if ((intMonth == 0)||(intMonth > 12)) return (false);
	if ((intDay == 0)||(intDay > daysInMonth[intMonth])) return (false); 
	if ((intMonth == 2) && (intDay > DaysInFebruary(intYear))) return (false);
	if (intYear == 0) return (false);
	return (true);
}
function DaysInFebruary (ys) {
	return (  ((ys % 4 == 0) && ( (!(ys % 100 == 0)) || (ys % 400 == 0) ) ) ? 29 : 28 );
}

function ValidateCollection(obj) {
	var somethingthere = false;

	for (var i=0; i<obj.length; i++) {
		if(obj[i].checked){somethingthere=true}
	}
	
	return somethingthere;
	
}

//Validate code

//regexp to validate email address "^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.+(com)|(uk)|(gov)|(org)|(mil)|(edu)|(info)|(biz)|(pro)|(name)|(aero)|(coop)|(museum)|(net)|(([a-zA-Z]{2})+(\.[a-zA-Z]{2}))"

//regexp for email addresses revised /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
function isEmail(strEmail){
	var pattern=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/

	return pattern.test(strEmail);
}

//regexp for UK postcodes ^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$ 
function isUKPostcode(strPostcode){
	var pattern="^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$"
	return pattern.test(strPostcode);
}

function isNumeric(varValue){
	return !isNaN(varValue);
}

function validateElement(objElement, strType, strName, boolCanBeEmpty){
	var boolValid=true;
	var strMessage="";
	
	switch(strType){
		case "STRING":
					if (boolCanBeEmpty==false){
						if (objElement.value.length==0){
							boolValid=false;
							strMessage=strName +" is empty, please enter a value.";
							break;
						}
					}
					break;
		case "EMAIL":
					if (boolCanBeEmpty==false){
						if (objElement.value.length==0){
							boolValid=false;
							strMessage=strName +" is empty, please enter a value.";
							break;
						}
					}
					if (isEmail(objElement.value)!=true){
						boolValid=false;
						strMessage=strName +" is not a valid email address.";
						break;
					}
					break;
		case "PHONE":
					if (boolCanBeEmpty==false){
						if (objElement.value.length==0){
							boolValid=false;
							strMessage=strName +" is empty, please enter a value.";
							break;
						}
					}
					break;
		case "PASSWORD":
					//if the password is blank take it as not being changed
					if (objElement.value.length!=0 && objElement.value.length<6){
						boolValid=false;
						strMessage=strName +" is less than 6 characters, please enter a password with at least 6 characters in.";
						break;
					}
					break;
		case "INTEGER":
					if (boolCanBeEmpty==false){
						if (objElement.value.length==0){
							boolValid=false;
							strMessage=strName +" is empty, please enter a value.";
							break;
						}
					}
					if (!isNumeric(objElement.value)){
						boolValid=false;
						strMessage=strName +" is not a number, please enter a numeric value.";
						break
					}else{
						objElement.value=Math.round(objElement.value)
					}
					break;
	}
	//alert(strMessage);
	return strMessage;					
}