var cookie={set:function(f,h,d,b,a){try{var c=new Date();c.setTime(c.getTime()+(d*24*60*60*1000));var g=f+"="+escape(h)+"; expires="+(d>0?c.toGMTString():"");if(typeof b!="undefined"&&b!=null){g+="; path="+b}if(typeof a!="undefined"&&a){g+="; secure"}document.cookie=g}catch(e){if(typeof console!=="undefined"){console.log("[Error] cookie.set() message: "+e.message)}}},get:function(g){var h=null;try{var b=document.cookie.split(";");for(var e=0,f=b.length;e<f;e++){var a=b[e].split("=");if(a[0].match(g)!=null){h=a[1]}}}catch(d){if(typeof console!=="undefined"){console.log("[Error] cookie.get() message: "+d.message)}}return{name:g,value:(h!=null?unescape(h):h)}},erase:function(b,a){this.set(b,"",0,a)}};var checkout={};checkout.cookies={ids:["First","Last","Email","DOBMo","DOBDay","DOBYear","Zip"],days:30,path:"/Checkout",save:function(){for(var a=0,b=this.ids.length;a<b;a++){cookie.set(this.ids[a],document.getElementById(this.ids[a]).value,this.days)}return true},autoFill:function(){for(var b=0,c=this.ids.length;b<c;b++){var d=document.getElementById(this.ids[b]),a=cookie.get(this.ids[b]).value;if(d.value===""&&a!=null){d.value=a}}}};var valObj={email:{filter:/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/,example:"i.e. username@gmail.com",message:"Email required"},password:{filter:/^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{8,}$/,example:"i.e. 8 or more chars - at least 1 letter and 1 number",message:"8 or more chars - at least 1 letter and 1 number"},phone:{filter:/^\(?[0-9]{3}\)?(\-| ?|.)[0-9]{3}(\-| ?|.)[0-9]{4}$/,example:"i.e. (555) 555-5555, 5555555555, 555 555 5555",message:"Phone number required"},_name:{filter:/[a-zA-Z]{2,25}/i,example:"i.e. Name",message:"Required"},birthdate:{filter:/\d{2}\/\d{2}\/\d{4}/,example:"i.e. 12/21/1980",message:"Birthdate required"},address:{filter:/^([0-9]{1,10}[ 0-9a-zA-Z\.\- ]{2,50}|P.*O.* Box [0-9]{1,10})$/i,example:"i.e. 1111 Lazy A. Dr, PO Box 233, P.O. Box 555, etc",message:"Address required"},city:{filter:/[a-zA-Z ]{4,25}/i,example:"i.e. City name",message:"Required"},state:{filter:/^[a-zA-Z]{2}$/i,example:"i.e. CA, PA, NV, etc.",message:"State required"},zipcode:{filter:/^[0-9]{5}$/i,example:"i.e. 93514, 15825, 90210, etc.",message:"5 digit Zipcode required"},ccnum:{filter:/^[0-9]{13,16}$/i,example:"Only Visa, MasterCard or Amex is accepted (no spaces)",message:"Visa, MasterCard or Amex required (no spaces)"},cccvs:{filter:/^[0-9]{3,4}$/i,example:"i.e. 212, 112, 4422, etc.",message:"CVS required"},month:{filter:/^[0-9]{1,2}$/i,example:"i.e. 1 (jan), 8 (aug), 12 (dec), etc.",message:"Month required"},day:{filter:/^[0-9]{1,2}$/i,example:"i.e. 1 - 31",message:"Day required"},year:{filter:/^[0-9]{4}$/i,example:"i.e. 1980, 2000, 2010, etc.",message:"Year required"},number:{filter:/(^\d+$)|(^\d*\.\d+$)|(^\d+\.\d*$)/i,example:"i.e. 1, 2, 3, 3.5, etc.",message:"Number required"},integer:{filter:/^\d+$/i,example:"i.e. 1, 2, 3, etc.",message:"Number required"},selection:{filter:/[a-zA-Z0-9]/i,example:"please choose",message:"Selection required"},accept:{filter:/(true)/i,example:"Accept the terms to continue",message:"Acceptance required"},filexls:{filter:/^[0-9a-zA-Z\_\:\\\/]{2,50}.xls$/i,example:"i.e. instAbrvReadingFormA20110131.xls",message:"Excel file required"},fullname:{filter:/^[a-zA-Z]{2,25}[ +][a-zA-Z]{2,25}/i,example:"i.e. First Last",message:"First and Last name required"},valFilters:/(email|password|phone|_name|birthdate|address|city|state|zipcode|ccnum|cccvs|month|day|year|number|integer|selection|accept|filexls|fullname)/i,useStyles:true,bValidate:true,noValidation:function(){this.bValidate=false},validate:function(){if(!this.bValidate){return !this.bValidate}var b=true,e=/(optional)/i;for(idx=0,len=document.forms[0].elements.length;idx<len;idx++){var c=document.forms[0].elements[idx];var f=c.className.match(this.valFilters)!==null?c.className.match(this.valFilters)[0]:null;if(f!==null){var a=(c.className.search(e)>-1)?true:false;var g=valObj[f];if(c.value.match(g.filter)===null||!valObj.additionalValidation(c,g)){if(a&&c.value.length===0||c.disabled===true){this.log(c.name+" passed "+f+" special optional");continue}if(c.type==="checkbox"&&(c.checked+"").match(g.filter)!==null){this.log(c.name+" passed "+f+" special checkbox");continue}this.log(c.name+" failed "+f);if(c.parentNode.lastChild.className!=="warn"){var h=document.createElement("span"),i=document.createTextNode(a?"Failed validation":g.message);h.className="warn";if(this.useStyles){h.style.top=(c.offsetTop-5)+"px";h.style.left=(c.offsetLeft+c.offsetWidth)+"px";h.style.position="absolute";h.style.zIndex="1000";h.style.color="red";h.style.backgroundColor="white";h.style.filter="alpha(opacity=80)";h.style.opacity=0.8}else{h.id="warn_"+c.className}h.appendChild(i);h.setAttribute("title",g.example);c.parentNode.appendChild(h);var d=c.type;this.log("form field type:"+d);if(d==="text"||d==="password"){c.onkeyup=function(){var j=valObj.valField(this);if(j){this.onkeyup=null;this.onblur=null}};c.onblur=function(){var j=valObj.valField(this);if(j){this.onkeyup=null;this.onblur=null}}}else{if(d==="select-one"||d==="checkbox"||d==="file"){c.onchange=function(){var j=valObj.valField(this);if(j){this.onchange=null}}}}}b=false}else{this.log(c.name+" passed "+f)}}}return b},valField:function(a){var d=a.parentNode.lastChild;var b=a.className.match(this.valFilters)!==null?a.className.match(this.valFilters)[0]:null;if(b!==null){var c=valObj[b];this.log("valField() node.value "+a.value+" - validation.filter "+c.filter);if(a.type!=="checkbox"&&d.className==="warn"&&a.value.match(c.filter)!==null){if(valObj.additionalValidation(a,c)){this.log("valField() valid");a.parentNode.removeChild(d)}else{this.log("valField() not valid");return false}}else{if(a.type==="checkbox"&&d.className==="warn"&&(a.checked+"").match(c.filter)!==null){this.log("valField() checkbox valid");a.parentNode.removeChild(d)}else{this.log("valField() not valid");return false}}}return true},clearWarning:function(a){for(var b=0,c=arguments.length;b<c;b++){var f=arguments[b];for(var d=0,e=f.parentNode.childNodes.length;d<e;d++){var g=f.parentNode.childNodes[d];if(g.className==="warn"){var h=g.parentNode;h.removeChild(g);this.log("clearSubWarns() removed")}else{this.log("clearSubWarns() not removed className:"+g.className)}}}},optional:function(a){a.className+=" optional";this.clearWarning(a)},required:function(a){a.className=a.className.replace("optional","");this.clearWarning(a)},bDebug:true,log:function(a){if(typeof console!=="undefined"&&this.bDebug){console.log(a)}},luhnCheck:function(b){var a=false;var e=b.length;var f=e&1;var g=0;for(var c=0;c<e;c++){var d=parseInt(b.charAt(c));if(!((c&1)^f)){d*=2;if(d>9){d-=9}}g+=d}if(g==0){a=false}else{if(g%10==0){a=true}}return a},approvedCCTypeCheck:function(a){return a.match(/^(4|34|37|51|52|53|54|55)/)!=null?true:false},additionalValidation:function(b,c){var a=true;if(b.type==="text"&&b.className.search(/placeholder/i)>-1){if(b.value===b.title){a=false;this.log("valObj additionalValidation placeholder: "+a)}}else{if(c===valObj.ccnum){a=valObj.luhnCheck(b.value);this.log("Luhn check passed: "+a);if(a){a=valObj.approvedCCTypeCheck(b.value);this.log("Approved credit card type check passed: "+a)}}}return a}};(function(a){a.fn.placeholder=function(c){var d=this;var b=c;this.each(function(){var e=a(this);e.val(e.attr("title"));if(typeof console!=="undefined"){console.log("placeholder id:"+e.attr("id"))}e.focus(function(){e=a(this);if(e.val()==e.attr("title")){e.val("");e.removeClass("placeholder")}});e.blur(function(){e=a(this);if(a.trim(e.val())==""){e.val(e.attr("title"));e.addClass("placeholder")}})});return this}})(jQuery);
