//----------------------------------------------
// JavaScript Regular Expression Pattern Check
// usage: 	include this file as:
//	<script type="text/javascript" src="<cfoutput>#application.root_path#</cfoutput>_modules/common/includes/client/js/Checkpattern.js"></script>
//			call this function with 2 required parameters: which pattern to check and the string to check
//	By: Chris Chay
//	2007-03-12
//----------------------------------------------
function CheckPattern(checkWhat,str)
{
/* cchay: test

alert("DEBUG!!! CheckPattern(): Pattern to Check = " + checkWhat + " value = " + str);
*/


	// Variable Declaration
	var	rePattern=""; // Assign RE pattern to this variable

	switch (checkWhat){
		case "isEmail":
			rePattern=/^([\w\d\-\.]+)@{1}(([\w\d\-]{1,67})|([\w\d\-]+\.[\w\d\-]{1,67}))\.(([a-zA-Z\d]{2,4})(\.[a-zA-Z\d]{2})?)$/; // works
			break;
		case "isIP":
			rePattern=/^(((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9])\.){3,3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9]))$/; //works
			break;
		case "isFloat":
			rePattern=/^[-+]?\d*\.?\d*$/; //may not work
			break;
		case "isInteger":
			rePattern=/^[+-]?\d+$/; // works
			break;
		case "isPositiveInteger":
			rePattern=/^\d+$/; // works
			break;
		case "isUSPhone":
			//rePattern=/^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$/; // 111-222-3333 only
			rePattern=/^1?\s*-?\s*(\d{3}|\(\s*\d{3}\s*\))\s*-?\s*\d{3}\s*-?\s*\d{4}$/; // 1-123-456-7890, 1 (123) 456 7980, 1 123 456 7890, (123) 456-7890, 123-456-7890, and so on, and makes sure that if one paren is Psent both must be Psent.
			break;
		case "isUSCurrency":
			rePattern=/^\${0,1}(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/;
			break;
		case "isDate":
			rePattern=/^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/; //checks for leap year 02/29/2008
			break;
		case "isCreditCard":
			rePattern=/^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$/;
			break;
		case "isSSN":
			rePattern=/^\d{3}-\d{2}-\d{4}$/;
			break;
		case "isZipCode":
			rePattern=/(^\d{5}$)|(^\d{5}-\d{4}$)/; // works for 12345 or 12345-1234
			break;
		default:
			return(false);
			break;
	}

	if(rePattern.test(str)){
		return true;
	}
	else{
		return false;
	}
}