/********************************************************************************
*									Script Library								*
*								 Data Valiation Functions						*
********************************************************************************/ 

function validateEmail(strEmail) {
var reg = /^([A-Za-z0-9]+[\+\'_.-])*[A-Za-z0-9]+@([A-Za-z0-9]+[_.-])*[A-Za-z0-9]+\.[a-zA-Z]{2,4}$/;
	if (strEmail.match(reg) == null) {
		alert("Email address appears invalid.\n")
		return false;
	}

return true;
}


function validatePostalCode(code) {
	var expPostal = /^(([0-9]{5})|([0-9]{9}))$/
	return expPostal.test(removeChar(removeChar(code, "-"), " "));
}


function validatePhone(num) {
	var expPhone = /^[0-9]{10}$/	
	return expPhone.test(removeChar(removeChar(num, "-"), " "));
}


function validateCardNumber(type, num) {
	var mult = 1;
	var digit;
	var checksum = 0;
	var i;
	
	num = removeChar(removeChar(num, "-"), " ")
	
	// check for valid number
	for (i=(num.length - 1);i>=0;i--) {
		digit = num.substr(i, 1) * mult;
		if (digit > 9) {
			digit -= 9;
		}
		checksum = checksum + digit;
		mult = (mult % 2) + 1;		// alternates 1, 2, 1, 2
	}
	if ((checksum % 10) != 0) {
		return false;
	}
	
	// check for valid number within card type
	if (type == "AX") {
		if (num.length != 15 || (num.substr(0, 2) != '34' && num.substr(0, 2) != '37')) {
			return false;
		} else {
			return true;
		}
	}
	if (type == "MC") {
		if (num.length != 16 || num.substr(0, 2) < '51' || num.substr(0, 2) > '55') {
			return false;
		} else {
			return true;
		}
	}
	if (type == "DC") {
		if (num.length != 16 || num.substr(0, 4) != '6011') {
			return false;
		} else {
			return true;
		}
	}
	if (type == "VS") {
		if ((num.length != 13 && num.length != 16) || num.substr(0, 1) != '4') {
			return false;
		} else {
			return true;
		}
	}
	
	return false;
}


function validateNumber(minLen,maxLen,num){
	/*
	minLen = MINIMUM VALID LENGTH OF NUMBER
	maxLen = MAXIMUM VALID LENGTH OF NUMBER
	num = NUMBER TO BE VALIDATED
	*/
	
	var validNum = /\d/;
	var realNum = '';
	
	// FILTER OUT NON-NUMERIC CHARACTERS
	for (var i=0;i<num.length;i++) {
		var thisNum = num.charAt(i);
		if (validNum.test(thisNum)) realNum += thisNum;
	}
	
	if (realNum.length >= minLen) {
		if (realNum.length <= maxLen) return realNum; 
	} 
	
	// IF WE HAVEN'T RETURNED BY NOW NUMBER IS INVALID
	return -1;
}


function translateMonth(month) {
	// if numeric, will translate to 3 character text month, otherwise the reverse
	var monthstxt = "JAN;FEB;MAR;APR;MAY;JUN;JUL;AUG;SEP;OCT;NOV;DEC";
	var months = monthstxt.split(";");
	if (isNaN(month)) {
		for (i = 0;i < 12 && months[i] != month;i++) {
		}
		if (i == 12) {
			return 0;
		} else {
			return i + 1;
		}
	} else {
		if (month < 1 || month > 12) {
			return "";
		} else {
			return months[month - 1];
		}
	}

}


function removeChar(txt, what) {
	var i, one, cvtnum = '';
	
	for (i=0;i<=txt.length - 1;i++) {		// remove hyphens and blanks
		one = txt.substr(i, 1);
		if (one != what) {
			cvtnum += one;
		}
	}
	
	return cvtnum;
}


function lTrim(x) {
	// MODIFIED:  J. Speranza (04/09/2002) - Added regular expression handling
	//				to trim all white spaces on left (not just space character).
	var RE = /\s/;
	var i;
	var str = new String(x);
	for(i=0;i<str.length;i++) {
		if (!RE.test(str.charAt(i))) {
			break;
		} 
	}
	return str.substr(i,str.length-i);
}


function rTrim(x) {
	// MODIFIED:  J. Speranza (04/09/2002) - Added regular expression handling
	//				to trim all white spaces on right (not just space character).
	var RE = /\s/;
	var i;
	var str = new String(x);	
	for(i=str.length-1;i>=0;i--) {
		if (!RE.test(str.charAt(i))) {
			break;
		} 
	}
	return str.substr(0,i+1);
}


function Trim(str) {
	// MODIFIED:  J. Speranza (04/09/2002) - Added regular expression handling
	//				to replace all white space characters WITHIN the string with
	//				a single space character.
	var RE = /\s+/g;
	str = rTrim(lTrim(str));
	return str.replace(RE," ");
}
