VarienForm=Class.create();VarienForm.prototype={initialize:function(c,b){this.form=$(c);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(a){}}},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(b){var a=Event.findElement(b,"fieldset");if(a){Element.addClassName(a,this.highlightClass)}},elementOnBlur:function(b){var a=Event.findElement(b,"fieldset");if(a){Element.removeClassName(a,this.highlightClass)}},setElementsRelation:function(a,d,b,c){if(a=$(a)){if(!this.cache[a.id]){this.cache[a.id]=$A();this.cache[a.id]["child"]=d;this.cache[a.id]["dataUrl"]=b;this.cache[a.id]["data"]=$A();this.cache[a.id]["first"]=c||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(c){if(c.length){var d=$(this.cache[this.currLoader]["child"]);if(d){var b='<select name="'+d.name+'" id="'+d.id+'" class="'+d.className+'" title="'+d.title+'" '+this.extraChildParams+">";if(this.cache[this.currLoader]["first"]){b+='<option value="">'+this.cache[this.currLoader]["first"]+"</option>"}for(var a in c){if(c[a].value){b+='<option value="'+c[a].value+'"';if(d.value&&(d.value==c[a].value||d.value==c[a].label)){b+=" selected"}b+=">"+c[a].label+"</option>"}}b+="</select>";Element.insert(d,{before:b});Element.remove(d)}}else{var d=$(this.cache[this.currLoader]["child"]);if(d){var b='<input type="text" name="'+d.name+'" id="'+d.id+'" class="'+d.className+'" title="'+d.title+'" '+this.extraChildParams+">";Element.insert(d,{before:b});Element.remove(d)}}this.bindElements();if(this.callback){this.callback()}}};RegionUpdater=Class.create();RegionUpdater.prototype={initialize:function(b,c,d,f,a,e){this.countryEl=$(b);this.regionTextEl=$(c);this.regionSelectEl=$(d);this.zipEl=$(e);this.regions=f;this.disableAction=(typeof a=="undefined")?"hide":a;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,c,e,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]){e=this.regions[this.countryEl.value][regionId];c=document.createElement("OPTION");c.value=regionId;c.text=e.name;if(this.regionSelectEl.options.add){this.regionSelectEl.options.add(c)}else{this.regionSelectEl.appendChild(c)}if(regionId==d||e.name.toLowerCase()==d||e.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 b=new ZipUpdater(this.countryEl.value,this.zipEl);b.update()},setMarkDisplay:function(b,c){b=$(b);var a=b.up(0).down("label > span.required")||b.up(1).down("label > span.required")||b.up(0).down("label.required > em")||b.up(1).down("label.required > em");if(a){inputElement=a.up().next("input");if(c){a.show();if(inputElement){inputElement.addClassName("required-entry")}}else{a.hide();if(inputElement){inputElement.removeClassName("required-entry")}}}}};ZipUpdater=Class.create();ZipUpdater.prototype={initialize:function(b,a){this.country=b;this.zipElement=$(a)},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()}}}};
