
	// ENCODE HTML STRING
	function encodeHtml(htmlToEncode) {
     encodedHtml = escape(htmlToEncode);
     encodedHtml = encodedHtml.replace(/\//g,"%2F");
     encodedHtml = encodedHtml.replace(/\?/g,"%3F");
     encodedHtml = encodedHtml.replace(/=/g,"%3D");
     encodedHtml = encodedHtml.replace(/&/g,"%26");
     encodedHtml = encodedHtml.replace(/@/g,"%40");
     return encodedHtml;
	 
	 /*
		<script type="text/javascript">document.write(unescape(" my encoded html "));</script>	 
	 */
   } 


	// FORM VALIDATION
	function checkEmail(_email) {
		var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		if (filter.test(_email)) return true; //alert('YES! Correct email address');
		else return false; //alert('NO! Incorrect email address');
	}
	function checkPhone(_phone) { 
		_phone = _phone.replace(/\./g,"");
		_phone = _phone.replace(/-/g,"");
		_phone = _phone.replace(/\(/g,"");
		_phone = _phone.replace(/\)/g,"");
		_phone = _phone.replace(/ /g,"");
		if (_phone.match(/^\d{3}\d{3}\d{4}$/)) return true; //else if (_phone.match(/^\d{3}\d{4}$/)) return true;
	  	else return false; 
	}
	function checkZip(_zip) {
		filter = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
		if (!filter.test(_zip)) {
			return false;
		} else {
			return true;
		}
	}
	function checkCredit(cardNumber, cardType) {
	  var isValid = false;
	  var ccCheckRegExp = /[^\d ]/;
	  isValid = !ccCheckRegExp.test(cardNumber);
	
	  if (isValid)
	  {
	    var cardNumbersOnly = cardNumber.replace(/ /g,"");cardNumbersOnly = cardNumbersOnly.replace(/-/g,"");
	    var cardNumberLength = cardNumbersOnly.length;
	    var lengthIsValid = false;
	    var prefixIsValid = false;
	    var prefixRegExp;
	
	    switch(cardType)
	    {
	      case "mastercard","MC":
	        lengthIsValid = (cardNumberLength == 16);
	        prefixRegExp = /^5[1-5]/;
	        break;
	
	      case "visa","VI":
	        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
	        prefixRegExp = /^4/;
	        break;
	
	      case "amex","AX":
	        lengthIsValid = (cardNumberLength == 15);
	        prefixRegExp = /^3(4|7)/;
	        break;
	
		  case "discover","DS":
	        lengthIsValid = (cardNumberLength == 16);
	        prefixRegExp = /^6011/;
	        break;
				   
	      default:
	        prefixRegExp = /^$/;
	        //alert("Card type not found");
			return false;
	    }
	
	    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
	    isValid = prefixIsValid && lengthIsValid;
	  }
	
	  if (isValid)
	  {
	    var numberProduct;
	    var numberProductDigitIndex;
	    var checkSumTotal = 0;
	
	    for (digitCounter = cardNumberLength - 1; 
	      digitCounter >= 0; 
	      digitCounter--)
	    {
	      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
	      digitCounter--;
	      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
	      for (var productDigitCounter = 0;
	        productDigitCounter < numberProduct.length; 
	        productDigitCounter++)
	      {
	        checkSumTotal += 
	          parseInt(numberProduct.charAt(productDigitCounter));
	      }
	    }
	
	    isValid = (checkSumTotal % 10 == 0);
	  }
	
	  return isValid;
	}
	
	
	
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
  function formActionReq(_frmID,_action,_messdiv) {
		if(validateFields(_frmID,_messdiv)) {
			SubmitReq(_action, _frmID)
			return true;		
		} else {
			return false;
		}	
	}
  function formAction(_frmID,_action,_messdiv) {
		if(validateFields(_frmID,_messdiv)) {
			document.getElementById(_frmID).action = _action
			document.getElementById(_frmID).submit();
			return true;		
		} else {
			return false;
		}	
	}
  function formSubmit(_frmID,_action,_field,_value) {
  		if (_field) document.getElementById(_field).value = _value
		document.getElementById(_frmID).action = _action
		document.getElementById(_frmID).submit();
		return true;		
	}
	function resetBckgr(_this, _messdiv) {
		_this.className="winXp"
		if (_messdiv > "") _messdiv = "msgRequiredDiv" + _messdiv
		else _messdiv = "msgRequiredDiv"
		mrDiv = document.getElementById(_messdiv)
		mrDiv.innerHTML = "";
	}
	function validateFields(_frmID,_messdiv) {
		msgRequired = ""
		msgInvalid = ""
		msgDiv = ""
		frm = document.getElementById(_frmID)
		var SepChar = ""
		for (i=0;i<frm.length;i++) {
			frmElement = frm.elements[i]
			eleRequired = frmElement.getAttribute('required')
			eleValidate = frmElement.getAttribute('validate')
			eleBuf = frmElement.getAttribute('buf')
			if (eleRequired == "true") {
			//required fields
				if (frmElement.value == "") {
					msgRequired += SepChar + eleBuf;
					frmElement.className = "reqXp"	
					var SepChar = ", "
				} else {
					frmElement.className = "winXp"	
					
					//email address
					if (frmElement.name == "email") {
							if (frmElement.value == document.getElementById("email2").value) {
								//confirm email address match
								if(!checkEmail(frmElement.value)) {
									if (msgInvalid > "") msgInvalid += "and Invalid Email Address  "
									else msgInvalid = "\nInvalid Email Address  "
									frmElement.className = "valXp"
								}
							} else {
									if (msgInvalid > "") msgInvalid += "and Email Addresses do not match "
									else msgInvalid = "\nEmail Addresses do not match  "
									frmElement.className = "valXp"
									document.getElementById("email2").className = "valXp"
							}
					} 
					// new password
					if (frmElement.name == "newpassword") {
							if (frmElement.value != document.getElementById("newpassword2").value) {
								//passwords do not match
									if (msgInvalid > "") msgInvalid += "and New Passwords do not match "
									else msgInvalid = "\nNew Passwords do not match  "
									frmElement.className = "valXp"
									document.getElementById("newpassword2").className = "valXp"
							}
					} 
					//phone number (1)
					if (frmElement.name == "phone1") {
							if(!checkPhone(frmElement.value)) {
								if (msgInvalid > "") msgInvalid += "and Invalid Phone Number  ";
								else msgInvalid = "\nInvalid Phone Number (including area code)  ";
								frmElement.className = "valXp"
								_phone = ""
							}
							else {
								_phone = frmElement.value
							}
					}				
				}
			}
			if (eleValidate == "true") {
					//phone number (2)
					if ((frmElement.name == "phone2") && (frmElement.value != "")) {
							if(!checkPhone(frmElement.value)) {
								if (msgInvalid > "") msgInvalid += "and Invalid Phone Number 2  ";
								else msgInvalid = "\nInvalid Phone Number 2 (including area code)  ";
								frmElement.className = "valXp"
							} 
					}	
					if ((frmElement.name == "phone3") && (frmElement.value != "")) {
							if(!checkPhone(frmElement.value)) {
								if (msgInvalid > "") msgInvalid += "and Invalid Fax Number ";
								else msgInvalid = "\nInvalid Fax Number (including area code)  ";
								frmElement.className = "valXp"
							}
					}	
			
			}
		}
	
		if((msgRequired > "") || (msgInvalid > "")){
			//alert("Please correct the following:" + msgRequired);
			if (msgRequired > "") {
				if (msgRequired.indexOf(",") > 0) msgDiv = msgRequired + " are required.<br>";
				else msgDiv = msgRequired + " is required.<br>";
			} else {
				//msgDiv = "<br>"
			}
			if (msgInvalid > "") msgDiv += "<font color='#CC9900'>Note: " + msgInvalid + "</font>";
			//else msgDiv += "<br>"
			//alert(msgDiv)
			if (_messdiv > "") _messdiv = "msgRequiredDiv" + _messdiv
			else _messdiv = "msgRequiredDiv"
			mrDiv = document.getElementById(_messdiv)
			mrDiv.innerHTML = msgDiv;
			return false
		} else {
			//replace with reforatted phone number
			//document.getElementById("phone1").value = formatPhone(_phone);
			//if (document.getElementById("phone2").value > "" ) document.getElementById("phone2").value = formatPhone(document.getElementById("phone2").value);
			//if (document.getElementById("phone3").value > "" ) document.getElementById("phone3").value = formatPhone(document.getElementById("phone3").value);
			//alert(document.getElementById("phone1").value)
			//submit the form
			return true;
		}
	}
	