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