VarienForm=Class.create();VarienForm.prototype={initialize:function(a,b){this.form=$(a);if(!this.form){return}this.cache=$A();this.currLoader=false;this.currDataIndex=false;this.validator=new Validation(this.form);this.elementFocus=this.elementOnFocus.bindAsEventListener(this);this.elementBlur=this.elementOnBlur.bindAsEventListener(this);this.childLoader=this.onChangeChildLoad.bindAsEventListener(this);this.highlightClass="highlight";this.extraChildParams="";this.firstFieldFocus=b||false;this.bindElements();if(this.firstFieldFocus){try{Form.Element.focus(Form.findFirstElement(this.form))}catch(c){}}},submit:function(a){if(this.validator&&this.validator.validate()){this.form.submit()}return false},bindElements:function(){var a=Form.getElements(this.form);for(var b in a){if(a[b].id){Event.observe(a[b],"focus",this.elementFocus);Event.observe(a[b],"blur",this.elementBlur)}}},elementOnFocus:function(a){var b=Event.findElement(a,"fieldset");if(b){Element.addClassName(b,this.highlightClass)}},elementOnBlur:function(a){var b=Event.findElement(a,"fieldset");if(b){Element.removeClassName(b,this.highlightClass)}},setElementsRelation:function(a,b,c,d){if(a=$(a)){if(!this.cache[a.id]){this.cache[a.id]=$A();this.cache[a.id]["child"]=b;this.cache[a.id]["dataUrl"]=c;this.cache[a.id]["data"]=$A();this.cache[a.id]["first"]=d||false}Event.observe(a,"change",this.childLoader)}},onChangeChildLoad:function(a){element=Event.element(a);this.elementChildLoad(element)},elementChildLoad:function(a,b){this.callback=b||false;if(a.value){this.currLoader=a.id;this.currDataIndex=a.value;if(this.cache[a.id]["data"][a.value]){this.setDataToChild(this.cache[a.id]["data"][a.value])}else{new Ajax.Request(this.cache[this.currLoader]["dataUrl"],{method:"post",parameters:{parent:a.value},onComplete:this.reloadChildren.bind(this)})}}},reloadChildren:function(transport){var data=eval("("+transport.responseText+")");this.cache[this.currLoader]["data"][this.currDataIndex]=data;this.setDataToChild(data)},setDataToChild:function(a){if(a.length){var b=$(this.cache[this.currLoader]["child"]);if(b){var c='<select name="'+b.name+'" id="'+b.id+'" class="'+b.className+'" title="'+b.title+'" '+this.extraChildParams+">";if(this.cache[this.currLoader]["first"]){c+='<option value="">'+this.cache[this.currLoader]["first"]+"</option>"}for(var d in a){if(a[d].value){c+='<option value="'+a[d].value+'"';if(b.value&&(b.value==a[d].value||b.value==a[d].label)){c+=" selected"}c+=">"+a[d].label+"</option>"}}c+="</select>";Element.insert(b,{before:c});Element.remove(b)}}else{var b=$(this.cache[this.currLoader]["child"]);if(b){var c='<input type="text" name="'+b.name+'" id="'+b.id+'" class="'+b.className+'" title="'+b.title+'" '+this.extraChildParams+">";Element.insert(b,{before:c});Element.remove(b)}}this.bindElements();if(this.callback){this.callback()}}};RegionUpdater=Class.create();RegionUpdater.prototype={initialize:function(a,b,c,d,e,f){this.countryEl=$(a);this.regionTextEl=$(b);this.regionSelectEl=$(c);this.zipEl=$(f);this.regions=d;this.disableAction=typeof e=="undefined"?"hide":e;this.zipOptions=typeof zipOptions=="undefined"?false:zipOptions;if(this.regionSelectEl.options.length<=1){this.update()}Event.observe(this.countryEl,"change",this.update.bind(this))},update:function(){if(this.regions[this.countryEl.value]){var a,b,c,d;if(this.regionTextEl){d=this.regionTextEl.value.toLowerCase();this.regionTextEl.value=""}if(!d){d=this.regionSelectEl.getAttribute("defaultValue")}this.regionSelectEl.options.length=1;for(regionId in this.regions[this.countryEl.value]){c=this.regions[this.countryEl.value][regionId];b=document.createElement("OPTION");b.value=regionId;b.text=c.name;if(this.regionSelectEl.options.add){this.regionSelectEl.options.add(b)}else{this.regionSelectEl.appendChild(b)}if(regionId==d||c.name.toLowerCase()==d||c.code.toLowerCase()==d){this.regionSelectEl.value=regionId}}if(this.disableAction=="hide"){if(this.regionTextEl){this.regionTextEl.style.display="none"}this.regionSelectEl.style.display=""}else if(this.disableAction=="disable"){if(this.regionTextEl){this.regionTextEl.disabled=true}this.regionSelectEl.disabled=false}this.setMarkDisplay(this.regionSelectEl,true)}else{if(this.disableAction=="hide"){if(this.regionTextEl){this.regionTextEl.style.display=""}this.regionSelectEl.style.display="none";Validation.reset(this.regionSelectEl)}else if(this.disableAction=="disable"){if(this.regionTextEl){this.regionTextEl.disabled=false}this.regionSelectEl.disabled=true}else if(this.disableAction=="nullify"){this.regionSelectEl.options.length=1;this.regionSelectEl.value="";this.regionSelectEl.selectedIndex=0;this.lastCountryId=""}this.setMarkDisplay(this.regionSelectEl,false)}var e=new ZipUpdater(this.countryEl.value,this.zipEl);e.update()},setMarkDisplay:function(a,b){a=$(a);var c=a.up(0).down("label > span.required")||a.up(1).down("label > span.required")||a.up(0).down("label.required > em")||a.up(1).down("label.required > em");if(c){inputElement=c.up().next("input");if(b){c.show();if(inputElement){inputElement.addClassName("required-entry")}}else{c.hide();if(inputElement){inputElement.removeClassName("required-entry")}}}}};ZipUpdater=Class.create();ZipUpdater.prototype={initialize:function(a,b){this.country=a;this.zipElement=$(b)},update:function(){if(typeof optionalZipCountries=="undefined"){return false}if(this.zipElement!=undefined){this._setPostcodeOptional()}else{Event.observe(window,"load",this._setPostcodeOptional.bind(this))}},_setPostcodeOptional:function(){this.zipElement=$(this.zipElement);if(this.zipElement==undefined){return false}var a=$$('label[for="'+this.zipElement.id+'"]')[0];if(a!=undefined){var b=a.down("em")||a.down("span.required")}if(optionalZipCountries.indexOf(this.country)!=-1){while(this.zipElement.hasClassName("required-entry")){this.zipElement.removeClassName("required-entry")}if(b!=undefined){b.hide()}}else{this.zipElement.addClassName("required-entry");if(b!=undefined){b.show()}}}}
