function isValidPhone(phoneText) {
	plainText = phoneText.replace(/[\(\)-\.xX]|\s*/g, "");
	if (/^\d{10}$/.test(plainText) || /^[\d]{14}$/.test(plainText))
		return true;
	else
		return false;
}

function isValidBillingPhone(phoneText) {
	var isValid = false;
	if (!isValidPhone(phoneText)) {
		return isValid;
	}
	//check if NANP
	var numbers= phoneText.split(/x|X|ext|extension/);
	for( i = 0; i < numbers.length; i++ ) {
		numbers[i] = numbers[i].replace(/[^\d]/g, "");
	}
	number = numbers[0];
	ext = (numbers.length > 1) ? numbers[1] : "";
	if (/^[2-9][0-8][0-9]$/.test(number.substring(0,3)) &&
		 /^[2-9][0-9][0-9]$/.test(number.substring(3, 6)) &&
		 /^[0-9][0-9][0-9][0-9]$/.test(number.substring(6))) {
		if (ext != "") {
			isValid = /^\d*$/.test(ext);
		} else {
			isValid = true;
		}
	}
	//check for repeating patterns
	if (/^0*$|^1*$|^2*$|^3*$|^4*$|^5*$|^6*$|^7*$|^8*$|^9*$/.test(number)) {
		isValid = false;
	}
	return isValid;
}


function isValidZip(zipText) {
	//if 5 digits
	if (/^\d{5}$/.test(zipText) )
		return true;
	//if 6th character - and stripping gives 9 digits number
	if (/^[\s\S]{5}-/.test(zipText)) {
		if (/^\d{9}$/.test(zipText.replace(/-/g, "")))
			return true;
	}
	return false;
}

function isValidEmail(emailText) {
	if (/^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)*(\.[A-Za-z]{2,4})$/.test(emailText.replace(/^\s*/, "").replace(/\s*$/, ""))) {
		return true;
	} else {
		return false;
	}
}

function isEmailMatch(email1, email2) {
	if (email1.replace(/^\s*/, "").replace(/\s*$/, "") == email2.replace(/^\s*/, "").replace(/\s*$/, "")) {
		return true;
	} else {
		return false;
	}
}

function validateXSS(text) {
	if (/[<>\|]|%3C|%3c|%3E|%3e/.test(text)) {
		return false;
	} else {
		return true;
	}
}

function replaceXSS(text) {
	return text.replace(/<|%3C|%3c/g, "&lt;").replace(/>|%3E|%3e>/g, "&gt;").replace(/\|/g, "");
}

