

//Validates an integer.
var vInt = new RegExp("^[+-]?[0-9]+$","m");
//Validates a float.
var vFloat = new RegExp("^[+-]?[0-9]+(?:\\.[0-9]+)?$","m");
//Validates an emai string with a shortened version of the RFC 2822 spec.
var vEmail = new RegExp("^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$","im");
//Validates an international phone number.
var vPhoneNumber = new RegExp("^((\\+\\d{1,3}(-| )?\\(?\\d\\)?(-| )?\\d{1,5})|(\\(?\\d{2,6}\\)?))(-| )?(\\d{3,4})(-| )?(\\d{4})(( x| ext)\\d{1,5}){0,1}$","m");

var vCurrencyUSD = new RegExp("^(?:[+-]\\$|\\$[+-])\\d+\\.\\d{0,2}$","m");



//For the credit card regular expressions all spaces and slahes must be removed.
//Validates a Visa credit card number.
var vCreditCardVisa = new RegExp("^4[0-9]{12}(?:[0-9]{3})?$","m");
//Validates a MasterCard credit card number.
var vCreditCardMasterCard = new RegExp("^5[1-5][0-9]{14}$","m");
//Validates a Discover credit card number.
var vCreditCardDiscover = new RegExp("^6(?:011|5[0-9]{2})[0-9]{12}$","m");
//Validates an American Express credit card number.
var vCreditCardAmericanExpress = new RegExp("^3[47][0-9]{13}$","m");
//Uses the Luhn algorithm to try and filter out a mistyped card number.
function vLuhn(cardNum) {
	var num = parseInt(String(cardNum));
	var valid = 0;
	var even = false;
	while (num != 0) {
		if (even) {
			even=false;
			var sub=2*(num%10);
//			if (add > 9)
				valid+=Math.floor(sub/10) + sub%10;
//			else
//				valid+=sub;
		} else {
			even=true;
			valid+=num%10;
		}
		num=Math.floor(num/10);
	}
	return (valid != 0 && valid%10 == 0);
}

