function isValidEmailAddress(sEmail) {
	var patValidEmail = new RegExp("^[\\w-~]+(\\.[\\w-~]+)*@[\\w-~]+(\\.[\\w-]+)+$");
	return patValidEmail.test(sEmail);
}

function isValidExpirationDate(sExpDate) {
	var patValidDate = new RegExp("^\\d\\d\\d\\d$");
	
	if (patValidDate.test(sExpDate)) {
		var m = parseInt(sExpDate.substr(0, 2));
		if (isNaN(m) || m < 1 || m > 12)
			return false;
		var y = parseInt(sExpDate.substr(2, 2));
		if (isNaN(y))
			return false;
		return true;
	} else
		return false;
}

function isValidDollarAmount(sDollar) {
	
	var patValidDollar = new RegExp("^\\d+(\\.\\d\\d)*$");
	
	if (patValidDollar.test(sDollar)) {
		var d = parseFloat(sDollar);

		if (isNaN(d) || d <= 0) 
			return false;
		else
			return true;
	} else
		return false;
}

var canProvinces = "AB BC MB NB NF NS NT ON PE QC SK YT";	// valid Canadian Provinces

function isValidUSZipCode(zipCode)
{
	var zipPat5 = new RegExp("^\\d{5}$");
	var zipPat9 = new RegExp("^\\d{5}-?\\d{4}$");
	return (zipPat5.test(zipCode) || zipPat9.test(zipCode));
}

function isValidCanadianPostalCode(postalCode)
{
	var canPostalPat = new RegExp("[a-zA-Z]\\d[a-zA-Z][- ]?\\d[a-zA-Z]\\d");
	return canPostalPat.test(postalCode);
}

function isValidUSState(state)
{
	return (canProvinces.indexOf(state) == -1);
}

function isValidCanadianProvince(province)
{
	return (canProvinces.indexOf(province) != -1);
}
