
var aryvalidate = new Array;
var regexAnything = '^[0-9a-zA-Z]';
/*var regexZipCode = '^[0-9]{5}([- /]?[0-9]{4})?$';*/
var regexZipCode = '^[0-9]{5}$';
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 NotBlank(elem) {
    if (elem.value.length == 0) {
// uncomment next line if we wish for the on-page validator to be used.
// it doesn't seem as if it mattered to TKG elsewhere but this is wired into the register.php form.
//        alert("This field must be filled.");
    }
}



// this function was re-written by Michael Carrino, WRL Advertising starting 2010 04 02
// the rehab is to make the function work the way it was supposed to, though this method is not necessirily recommended

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]
    */

    var bReturnValue=true;

    // this first section will handle validations where the element and the regex is provided.
    if (elem && regex) {

        // for backward compatibility, if the regex is present and it is blank, we'll assume regexAnything
        if (regex=="") {
            regex=regexAnything;
        }

        // test the element's value using the supplied regex
        var tester = new RegExp(regex);
        bReturnValue = tester.test(elem.value);

        // if the test fails, make an automatic alert based on regex value
        if (!bReturnValue) {
            switch (regex) {
                case regexAnything:
                    alert("This field cannot be blank.");
                    break;
                case regexZipCode:
                    alert("This field requires a valid zip code.");
                    break;
                case regexEmail:
                    alert("This field requires a valid e-mail address.");
                    break;
                case regexPhone:
                    alert("This field requires a valid phone number.");
                    break;
                case regexCC:
                    alert("This field requires a valid e-mail address.");
                    break;
                case regexNumeric:
                    alert("This field requires a valid number.");
                      break;
            }
        }
        return bReturnValue;
    }



    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") {
                                        if ((!elem.elements[i].value.match(re)) && document.getElementById(strrfv) && (elem.elements[i].type!=undefined)) {
                                            rfv.style.fontWeight = "bold";
                                            rfv.style.color = "#FF0000";

                                            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 {
                                                    aryRdBtn=eval("document."+elem.name+"."+elem.elements[i].id);
                                                    bChecked=false;
                                                    if (aryRdBtn.length==undefined) {
                                                            //aryRdBtn.length	=1;
                                                            if (eval("document."+elem.name+"."+elem.elements[i].id+".checked;")) {
                                                                    bChecked=true;
                                                            }
                                                    }
                                                    else {
                                                            for (j = 0; j <aryRdBtn.length; j++) {
                                                                    if (eval("document."+elem.name+"."+elem.elements[i].id+"["+j+"].checked;")) {
                                                                            bChecked=true;
                                                                            break;
                                                                    }
                                                            }
                                                    }
                                                    //alert(elem.elements[i].id+'--'+aryRadioButtonNames.inArray(elem.elements[i].id));
                                                    if (!bChecked && !aryRadioButtonNames.inArray(elem.elements[i].id)) {
                                                            rfv.style.fontWeight = "bold";
                                                            rfv.style.color = "#FF0000";

                                                            strElementSummary=strElementSummary+(elemmissed+1)+". ";
                                                            strInnerText=rfv.innerHTML;
                                                            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(elem.elements[i].id);
                                                    }
                                            } catch (e) {
                                                // alert("BL Error: " + e.description);
                                            }
                                    }
                            }
                    }
            }

            if (!bReturnValue && i>0) {
                alert("You have not filled in " + elemmissed + " of the required fields correctly.\n Please correct bolded items, summarized below.\n" + strElementSummary);
                elem.elements[elemfocus].focus();
                return false;
            }

            agreement = document.getElementById('chkAgree')
            cvv = document.getElementById('cvv')
            IGNORE_UNLOAD = true;

            if(document.getElementById('shippingLoaded').value == '0'){
                alert('Please select a shipping option');
                bReturnValue=false;
            }
            else if(cvv.value.length<3 || cvv.value.length>4) {
                alert('Please enter a valid CVV code');
                bReturnValue=false;
            }
            else if(!agreement.checked) {
                alert('You must agree to the Terms and Conditions before checkout.');
                bReturnValue=false;
            }
            else { //Form Element Validation

            if (elem.type=="text" || elem.type=="select-one") {
                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";
                    rfv.style.color = "#FF0000";
                    bReturnValue=false;
                }
                else {
                    rfv = document.getElementById(strrfv);
                    if(rfv){
                        rfv.style.fontWeight = "";
                        rfv.style.color = "";
                        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 FullZip5(zipString) {
    var legalCharacters = "0123456789";
    var retval = "00000";
    for (i=0; i<zipString.length; i++) {
        if (legalCharacters.indexOf(zipString.charAt(i)) >= 0) {
            retval = retval + zipString.charAt(i);
            retval = retval.substring(1);
        }
    }
    return retval;
}

function FullZipFill(elem) {
    elem.value = FullZip5(elem.value);
}
