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