function IsDate(dateStr){
// validate any date given in uk format DD/MM/YYYY
	var matchArray = new Array();
	matchArray = dateStr.split("/");
	var datestatus=true;
	datemsg="";

	day = matchArray[0];
	month = matchArray[1];
	year = matchArray[2];

	if ( isNaN(day) || isNaN(month) || isNaN(year) ){
		return false;
	}

	if (matchArray == null || day==null || month==null || year==null || year=="") {
		return false;
	}

	if (year.length < 4 || year.length > 4){
		datestatus= false;
	}

	if (month < 1 || month > 12){ 
		datestatus=false;
	}

	if (day < 1 || day > 31){
		datestatus=false;
	}

	if ((month==4 || month==6 || month==9 || month==11) && day==31){
		datestatus=false;
	}

	if (month == 2){ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day==29 && !isleap)){
			datestatus=false;
		}
	}

	return datestatus; 
}

function IsPostcode(StrPost){
// validate postcode
	//var RegEx = /^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$/;
	var RegEx = /^(GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2})$/;

	if (StrPost.toUpperCase().match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}

function IsUSZipCode(StrZip){
// There are 2 formats.  The most common format is 5 digit numeric postcode (i.e. 12345), 
// There is also a more recent addition which is known as ‘Zip + 4’ 
// which is 5 digits followed by a hyphen then followed by a further 4 digits (i.e. 12345-1234)

	var RegEx = /^\d{5}([\-]\d{4})?$/;

	if (StrZip.match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}

function IsCAPostcode(StrPost){
// Canada is a string of six characters in the format A3A 3A3 
// (where A is the letter and 3 a digit)

	var RegEx = /^[A-Z]\d[A-Z] \d[A-Z]\d$/;

	if (StrPost.toUpperCase().match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}

function IsEmail(StrEmail){
// validate e-mail
// this regular expression is not complete and requires revision before use
//	var RegEx = /^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+\.(co.uk|com|org|net)$/;
   var RegEx = /^[a-zA-Z0-9\._\-]+@{1}[a-zA-Z0-9\._\-]*\.[a-zA-Z]+$/;

	if (StrEmail.match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}

function IsNumOrNone(StrNum){
// validate e-mail
// StrNum can contain numbers or be empty
	var RegEx = /^\d*$/;

	if (StrNum.match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}

function IsAlphaOrNone(StrAlpha){
// validate e-mail
// StrNum can contain alphabeticals or be empty
	var RegEx = /^[a-zA-Z]*$/;

	if (StrAlpha.match(RegEx)){
		return true;
	}
	else{
		return false;
	}
}