
var aryvalidate = new Array;
var regexAnything = '^[0-9a-zA-Z]';
var regexZipCode = '^[0-9]{5}([- /]?[0-9]{4})?$';
var regexEmail = '^([0-9a-zA-Z]([-.\w_]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$';
var regexPhone = '^[\\(]{0,1}([0-9]){3}[\\)]{0,1}[ ||-]?([^0-1]){1}([0-9]){2}[ ]?[-]?[ ]?([0-9]){4}[ ]*((x){0,1}([0-9]){1,5}){0,1}$';
var regexCC  = '^3(?:[47]\\d([ -]?)\\d{4}(?:\\1\\d{4}){2}|0[0-5]\\d{11}|[68]\\d{12})$|^4(?:\\d\\d\\d)?([ -]?)\\d{4}(?:\\2\\d{4}){2}$|^6011([ -]?)\\d{4}(?:\\3\\d{4}){2}$|^5[1-5]\\d\\d([ -]?)\\d{4}(?:\\4\\d{4}){2}$|^2014\\d{11}$|^2149\\d{11}$|^2131\\d{11}$|^1800\\d{11}$|^3\\d{15}$';
var regexNumeric = '^([0-9]+(\\.)?[0-9]*)$';


Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function IsStyleDisplay(elem) {
	el=elem.parentNode; 
	 do { 
	   el=el.parentNode; 
	   if (el.style.display=="none") {
			return false;   
	   }
	 } while(el.nodeName.toLowerCase()!="body"); 
	 return true;
	
}

function validate(elem,regex) {
	/*
	Regular Expression parameters for various fields
	Zip Code:  ^[0-9]{5}([- /]?[0-9]{4})?$
	Email: ^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$
	Phone: ^[\\(]{0,1}([0-9]){3}[\\)]{0,1}[ ||-]?([^0-1]){1}([0-9]){2}[ ]?[-]?[ ]?([0-9]){4}[ ]*((x){0,1}([0-9]){1,5}){0,1}$
	Anything not starting with a special charachter (default) : ^[0-9a-zA-Z]
	*/
	
	bReturnValue=true;		
	if (regex=="") {
		regex=regexAnything;
	}
	var re = new RegExp(regex);
	if (elem.type==undefined) { //Entire Form Validation
		var elemfocus=-1;
		var elemmissed=0;
		var strElementSummary="";
		var aryRadioButtonNames=new Array();
		
		for (var i=0;i<elem.length;i++) {  //Whole Form
			if (elem.elements[i].id!=undefined) {
				var bElementIsDisplayed=IsStyleDisplay(elem.elements[i]);
				if (bElementIsDisplayed) {
					var strrfv = "rfv"+elem.elements[i].id; //.substr(3);
					rfv = document.getElementById(strrfv);
					if (aryvalidate[elem.elements[i].id]) {
						var re = new RegExp(aryvalidate[elem.elements[i].id]);
					}
					else {
						var re = new RegExp(regex);
					}
					if (elem.elements[i].type=="text" || elem.elements[i].type=="textarea" || elem.elements[i].type=="password" || elem.elements[i].type=="select-one") {
						if ((!elem.elements[i].value.match(re)) && document.getElementById(strrfv) && (elem.elements[i].type!=undefined)) {		
							rfv.style.fontWeight = "bold";
							elem.elements[i].style.backgroundColor="#FFCC99";
							strElementSummary=strElementSummary+(elemmissed+1)+". ";
							strInnerText=rfv.innerText;
							if (rfv.innerText==undefined) {
								strInnerText=rfv.textContent;	
							}
							if (strrfv.indexOf('Billing')>0) {
								strElementSummary=strElementSummary+"Billing "+strInnerText+"\n";
							}
							else if (strrfv.indexOf('Shipping')>0) {
								strElementSummary=strElementSummary+"Shipping "+strInnerText+"\n";
							}
							else {
								strElementSummary=strElementSummary+strInnerText+"\n";
							}
							bReturnValue=false;
							elemmissed++;
							if (elemfocus==-1) {
								elemfocus=i;
							}
						}
					} else if (elem.elements[i].type=="radio" || elem.elements[i].type=="checkbox") {
						try {
							var ary=elem.elements[i].id.split("_");
							var strrfv = "rfv"+ary[0]+'[]'; //.substr(3);
							rfv = document.getElementById(strrfv);
							if (rfv!=null) {
								//aryRdBtn=eval("document."+elem.name+"."+elem.elements[i].name);
								aryRdBtn=document.getElementsByName(ary[0]+'[]');
								bChecked=false;
								for (j = 0; j <aryRdBtn.length; j++) {
									//if (eval("document."+elem.name+"."+elem.elements[i].name+"["+j+"].checked;")) {
									tmpBtn=aryRdBtn[j];
									if (tmpBtn.checked) {
										bChecked=true;
										break;
									}
								}

								if (!bChecked && !aryRadioButtonNames.inArray(ary[0]+'[]')) {
									strElementSummary=strElementSummary+(elemmissed+1)+". ";
									strInnerText=rfv.innerText;
									rfv.style.fontWeight = "bold";
									if (rfv.innerText==undefined) {
										strInnerText=rfv.textContent;	
										
									}
									if (strrfv.indexOf('Billing')>0) {
										strElementSummary=strElementSummary+"Billing "+strInnerText+"\n";
									}
									else if (strrfv.indexOf('Shipping')>0) {
										strElementSummary=strElementSummary+"Shipping "+strInnerText+"\n";
									}
									else {
										strElementSummary=strElementSummary+strInnerText+"\n";
									}
									bReturnValue=false;
									elemmissed++;
									if (elemfocus==-1) {
										elemfocus=j;
									}
									aryRadioButtonNames.push(ary[0]+'[]');
								}
							}
						} catch (e) {
							
						}
					}
				}
			}
		}
		if (!bReturnValue) {
			var strMessage="We caught "+elemmissed+" incorrectly completed or missed field(s). Look for and correct the highlighted items, summarized below";
			if (document.getElementById('alert')) {
				document.getElementById('alert').innerHTML="<h2>"+strMessage+"</h2><p>"+strElementSummary+"</p>";
				document.getElementById('alert').style.display="block";
			}
			else {
				alert(strMessage+"\n\n"+strElementSummary);
			}
			elem.elements[elemfocus].focus();
			//return false;
		}
	}
	else { //Form Element Validation
		if (elem.type=="text" || elem.type=="textarea" || elem.type=="select-one" || elem.type=="password") {
			var strrfv = "rfv"+elem.id; //.substr(3);
			if (regex!=regexAnything) {
				aryvalidate[elem.id]=regex;
			}
			if ((!elem.value.match(re)) && document.getElementById(strrfv)) {
				rfv = document.getElementById(strrfv);
				rfv.style.fontWeight = "bold";
				elem.style.backgroundColor="#FFCC99";
				bReturnValue=false;
			}
			else {
				rfv = document.getElementById(strrfv);
				if (rfv) {
					rfv.style.fontWeight = "";
					rfv.style.color = "";
					elem.style.backgroundColor="";
					bReturnValue=true;
				}
			}
		}
	}
	return bReturnValue;

}


function Captcha() {
	var unixepoc = new Date(1970,0,1);
	var today = new Date();
	var oneday = 1000*60*60*24;
	var timestamp = new String((Math.ceil(today.getTime()-unixepoc.getTime()) / oneday)).replace(".","");
	document.write("<img src=\"/includes/captcha.php?txt="+timestamp+"\" style=\"border:1px solid #999999; padding:0px 21px;\">\n");
	document.write("<br><br>Please enter the value you see above in the image.\n");
	document.write("<input type=\"text\" value=\"\" name=\"txtCaptcha\" size=8>\n");
	document.write("<input type=\"hidden\" value=\""+timestamp+"\" name=\"hidTextFile\">\n");

}

function doClear(theText) {
	if (theText.value == theText.defaultValue) {
		theText.value = ""
	}
}
