function isPatternCheck(elem, patt, helperMsg){
	if(elem.value.match(patt)){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
        return true;
	}
}

function duplicateField(orig, dup, chk)
{
    if(document.getElementById(chk).checked)
    { document.getElementById(dup).value = document.getElementById(orig).value; }
}

function isNumeric(elem, helperMsg){
	//var numericExpression = /^[0-9]+$/;  // pg: Integer values only
	var numericExpression = /(^(0|[1-9][0-9]*)$)|((^(0?|[1-9][0-9]*)\.(0*[1-9][0-9]*)$)|(^[1-9]+[0-9]*\.0+$)|(^0\.0+$))/;  // pg: Integer and decimal values
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isNumericOrEmpty(elem, helperMsg){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression) || elem.value.length==0){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphaOrEmpty(elem, helperMsg){
	var alphaExp = /\s*^[a-zA-Z,\-\'\s]+\s*$/;
	if(elem.value.match(alphaExp) || elem.value.length==0){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isDifferent(elem1, elem2, helperMsg){
    if(elem1.value!==elem2.value){
        return true;
    }else{
        alert(helperMsg);
		elem1.focus();
		return false;
    }
}

function isAlphanumeric(elem, helperMsg){
	var alphaNumericExp = /\s*^[0-9a-zA-Z,\-\s]+\s*$/;
	if(elem.value.match(alphaNumericExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlpha(elem, helperMsg){
	var alphaExp = /\s*^[a-zA-Z,\-\'\s]+\s*$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isPostCode(elem, helperMsg){
	var alphaExp = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isDate(elem, helperMsg){
	var alphaExp = /^\d{2}\/\d{2}\/\d{4}$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isNotEmpty(elem, helperMsg){
	if(elem.value.length==""){
		alert(helperMsg);
		elem.focus();
		return false;
    }else{
        return true;
	}
}


function isEmailAddress(elem, helperMsg){
    var alphaExp = /^([0-9a-zA-Z\']([-.\w]*[0-9a-zA-Z\'])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isUKTelephone(elem, helperMsg){
    var alphaExp = /^(((\+44\s?\d{4}|\(?0\d{4}\)?)\s?\d{3}\s?\d{3})|((\+44\s?\d{3}|\(?0\d{3}\)?)\s?\d{3}\s?\d{4})|((\+44\s?\d{2}|\(?0\d{2}\)?)\s?\d{4}\s?\d{4}))(\s?x\s?(\d{4}|\d{3})|\s?ex\s?(\d{4}|\d{3})|\s?ext\s?(\d{4}|\d{3})|\s?\#(\d{4}|\d{3}))?$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function dateGreaterThanToday(elem, helperMsg) {
    var today = new Date();
    
    var valArray = elem.value.split('/');
    var valDD = valArray[0];
    var valM = valArray[1];
    var valY = valArray[2];

    var formDate = new Date();
    formDate.setFullYear(valY,valM-1,valDD);
    
    if (formDate > today){
        return true;
    }else{
        alert(helperMsg);
        return false;            
    }
}
