if(!PfpjRom)var PfpjRom={};PfpjRom.AddressTippersBehaviour=Class.create();PfpjRom.AddressTippersBehaviour.prototype={initialize:function(tippers_value,state,config,levels_to_paret,is_tippers_required,enable_obj,primary_billing_id,primary_shipping_id,is_default_billing,is_default_shipping){this.enableObj=(enable_obj==true||enable_obj==null?true:false);this.config=config||{};is_tippers_required=(is_tippers_required==true||enable_obj==null?true:false);this.triggerBaseId=(this.config.trigger||null);this.requiredHintPath=(this.config.required_hint_path||"span.required");this.optionsConfig=(this.config.options||{});this.fieldsConfig=(this.config.fields||{});this.requiredClass=(this.config.required_class||"required-entry");this.state=state;this.primaryBilling=(primary_billing_id!=null&&$(primary_billing_id)!=undefined?$(primary_billing_id):null);this.primaryShipping=(primary_shipping_id!=null&&$(primary_shipping_id)!=undefined?$(primary_shipping_id):null);this.isDefaultBilling=(is_default_billing==true?true:false);this.isDefaultShipping=(is_default_shipping==true?true:false);if(!is_tippers_required){for(var fieldName in this.fieldsConfig){if(fieldName.indexOf('pfpj_tip_pers')!=-1){for(var fieldOption in this.fieldsConfig[fieldName]){if(this.state=='all'||this.state=='billing')this.fieldsConfig[fieldName][fieldOption]['billing'].required=false;if(this.state=='all'||this.state=='shipping')this.fieldsConfig[fieldName][fieldOption]['shipping'].required=false}break}}}this.tippersValue=(!(tippers_value==""||tippers_value==undefined)?tippers_value:this.config.default_option);this.levelsToParet=(levels_to_paret!=undefined?levels_to_paret:1);this.enableObject(this,this.enableObj)},enableObject:function(addr,enableObj){if(!enableObj){addr.enableObj=false;return false}addr.enableObj=enableObj;addr.fields={};for(var fieldName in addr.fieldsConfig){if($(fieldName)){addr.fields[fieldName]=$(fieldName)}}addr.options={};for(var optionValue in addr.optionsConfig)if($(addr.triggerBaseId+optionValue))addr.options[optionValue]=$(addr.triggerBaseId+optionValue);for(var option in addr.options)Event.observe(addr.options[option],'click',addr.eventListenerTippers.bindAsEventListener(addr,addr));if(addr.state=='all'||addr.state=='billing'){Event.observe(addr.fields[addr.getFieldName(addr,'pfpj_for_billing')],'change',addr.eventListenerStateFields.bindAsEventListener(addr,addr))}if(addr.state=='all'||addr.state=='shipping'){Event.observe(addr.fields[addr.getFieldName(addr,'pfpj_for_shipping')],'change',addr.eventListenerStateFields.bindAsEventListener(addr,addr))}if(addr.primaryBilling!=null)Event.observe(addr.primaryBilling,'change',addr.eventListenerPrimaryBilling.bindAsEventListener(addr,addr));if(addr.primaryShipping!=null)Event.observe(addr.primaryShipping,'change',addr.eventListenerPrimaryShipping.bindAsEventListener(addr,addr));addr.initObject(addr);return true},initObject:function(addr){addr.switchOptions(addr)},setTippersValue:function(addr,v){addr.tippersValue=v},setStateDefaultValue:function(addr,name,state){var _name=addr.getFieldName(addr,name);if(addr.isDefaultBilling&&_name=='pfpj_for_billing'){addr.fields[_name].value=1;addr.fields[_name].checked=true}else if(addr.isDefaultShipping&&_name=='pfpj_for_shipping'){addr.fields[_name].value=1;addr.fields[_name].checked=true}else{addr.fields[_name].value=addr.getDefaultValue(addr,_name,addr.tippersValue,state);addr.fields[_name].checked=(addr.fields[_name].value==1?true:false)}},eventListenerTippers:function(e,addr){addr.setTippersValue(addr,Event.element(e).value);if(addr.state=='all'||addr.state=='billing')addr.setStateDefaultValue(addr,'pfpj_for_billing',addr.state);if(addr.state=='all'||addr.state=='shipping')addr.setStateDefaultValue(addr,'pfpj_for_shipping',addr.state);addr.switchOptions(addr)},eventListenerStateFields:function(e,addr){var el=Event.element(e);for(var optionValue in addr.options){if(addr.options[optionValue].checked==true){addr.setTippersValue(addr,optionValue)}}addr.setStateFieldsByPrimary(addr,el);addr.switchOptions(addr)},setStateFieldsByPrimary:function(addr,el){if(el.id==addr.getFieldName(addr,'pfpj_for_billing')){if(addr.primaryBilling!==null){if(addr.primaryBilling.checked)addr.isDefaultBilling=true;else addr.isDefaultBilling=false}if(addr.isDefaultBilling){el.checked=true;el.value=1}}if(el.id==addr.getFieldName(addr,'pfpj_for_billing')&&addr.primaryBilling!=null){el.value=(el.checked?1:0);if(!el.checked&&addr.primaryBilling.checked)addr.primaryBilling.checked=false}if(el.id==addr.getFieldName(addr,'pfpj_for_shipping')){if(addr.primaryShipping!==null){if(addr.primaryShipping.checked){addr.isDefaultShipping=true}else{addr.isDefaultShipping=false}}if(addr.isDefaultShipping){el.checked=true;el.value=1}}if(el.id==addr.getFieldName(addr,'pfpj_for_shipping')&&addr.primaryShipping!=null){el.value=(el.checked?1:0);if(!el.checked&&addr.primaryShipping.checked)addr.primaryShipping.checked=false}},eventListenerPrimaryBilling:function(e,addr){if(Event.element(e).checked){var billingName=addr.getFieldName(addr,'pfpj_for_billing');addr.fields[billingName].checked=true;addr.fields[billingName].value=1;addr.isDefaultBilling=true}else{addr.isDefaultBilling=false}addr.eventListenerStateFields(e,addr)},eventListenerPrimaryShipping:function(e,addr){if(Event.element(e).checked){var shippingName=addr.getFieldName(addr,'pfpj_for_shipping');addr.fields[shippingName].checked=true;addr.fields[shippingName].value=1;addr.isDefaultShipping=true}else{addr.isDefaultShipping=false}addr.eventListenerStateFields(e,addr)},getFieldName:function(addr,name){for(var fieldName in addr.fields){if(fieldName.indexOf(name)!=-1)return fieldName}return null},getIsForBilling:function(addr){var billingEl=addr.fields[addr.getFieldName(addr,'pfpj_for_billing')];if(billingEl.checked==true)return true;return false},getIsForShipping:function(addr){var shippingEl=addr.fields[addr.getFieldName(addr,'pfpj_for_shipping')];if(shippingEl.checked==true)return true;return false},isShowField:function(addr,fieldName,tippers_value,state,check_state_field){var ret;if(state=='billing'){ret=((check_state_field&&addr.getIsForBilling(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value][state].show}else if(state=='shipping'){ret=((check_state_field&&addr.getIsForShipping(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value][state].show}else{ret=((check_state_field&&addr.getIsForBilling(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value]['billing'].show;ret=ret||(((check_state_field&&addr.getIsForShipping(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value]['shipping'].show)}return ret},isRequiredField:function(addr,fieldName,tippers_value,state,check_state_field){var ret;if(state=='billing'){ret=((check_state_field&&addr.getIsForBilling(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value][state].required}else if(state=='shipping'){ret=((check_state_field&&addr.getIsForShipping(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value][state].required}else{ret=((check_state_field&&addr.getIsForBilling(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value]['billing'].required;ret=ret||(((check_state_field&&addr.getIsForShipping(addr))||!check_state_field)&&addr.fieldsConfig[fieldName][tippers_value]['shipping'].required)}return ret},getDefaultValue:function(addr,fieldName,tippers_value,state){var defaultValue;if(state!='all'){defaultValue=addr.fieldsConfig[fieldName][tippers_value][state].defaultValue}else{defaultValue=(addr.fieldsConfig[fieldName][tippers_value]['billing'].defaultValue==1||addr.fieldsConfig[fieldName][tippers_value]['shipping'].defaultValue==1?1:0)}return defaultValue},switchOptions:function(addr){var billingName=addr.getFieldName(addr,'pfpj_for_billing');var shippingName=addr.getFieldName(addr,'pfpj_for_shipping');if(addr.state=='all'||addr.state=='billing')addr.setStateFieldsByPrimary(addr,addr.fields[billingName]);if(addr.state=='all'||addr.state=='shipping')addr.setStateFieldsByPrimary(addr,addr.fields[shippingName]);for(var fieldName in addr.fields){if(billingName!=fieldName&&shippingName!=fieldName){if(addr.isShowField(addr,fieldName,addr.tippersValue,addr.state,true)){addr.fields[fieldName].up(addr.levelsToParet).show()}else{addr.fields[fieldName].up(addr.levelsToParet).hide();addr.fields[fieldName].value=""}}}if(addr.state=='all'||addr.state=='billing'){if(addr.isShowField(addr,billingName,addr.tippersValue,addr.state,false)){addr.fields[billingName].up(addr.levelsToParet).show()}else{addr.fields[billingName].up(addr.levelsToParet).hide();addr.setStateDefaultValue(addr,'pfpj_for_billing',addr.state)}}if(addr.state=='all'||addr.state=='shipping'){if(addr.isShowField(addr,shippingName,addr.tippersValue,addr.state,false)){addr.fields[shippingName].up(addr.levelsToParet).show()}else{addr.fields[shippingName].up(addr.levelsToParet).hide();addr.setStateDefaultValue(addr,'pfpj_for_shipping',addr.state)}}for(var fieldName in addr.fields){if(billingName!=fieldName&&shippingName!=fieldName){var spanReqEl=addr.fields[fieldName].up(addr.levelsToParet).down(addr.requiredHintPath);if(addr.isRequiredField(addr,fieldName,addr.tippersValue,addr.state,true)){addr.fields[fieldName].removeClassName(addr.requiredClass);addr.fields[fieldName].addClassName(addr.requiredClass);if(spanReqEl!=undefined)spanReqEl.show()}else{addr.fields[fieldName].removeClassName(addr.requiredClass);if(spanReqEl!=undefined)spanReqEl.hide()}}}},mutateFieldsNames:function(addr,prefix_new,prefix_old,suffix_new,suffix_old){var newFieldsConfig={};for(var fieldName in addr.fieldsConfig){var newFieldName=addr._mutateName(fieldName,prefix_new,prefix_old,suffix_new,suffix_old);newFieldsConfig[newFieldName]=addr.fieldsConfig[fieldName]}addr.fieldsConfig=newFieldsConfig;addr.triggerBaseId=addr._mutateName(addr.triggerBaseId,prefix_new,prefix_old,suffix_new,suffix_old)},mutatePrimaryNames:function(addr,prefix_new,prefix_old,suffix_new,suffix_old){var primary_billing_id;var primary_shipping_id;if(addr.primaryBilling!=null){primary_billing_id=addr._mutateName(addr.primaryBilling.id,prefix_new,prefix_old,suffix_new,suffix_old);addr.primaryBilling=($(primary_billing_id)!=undefined?$(primary_billing_id):null)}if(addr.primaryShipping!=null){primary_shipping_id=addr._mutateName(addr.primaryShipping.id,prefix_new,prefix_old,suffix_new,suffix_old);addr.primaryShipping=($(primary_shipping_id)!=undefined?$(primary_shipping_id):null)}},_mutateName:function(fieldName,prefix_new,prefix_old,suffix_new,suffix_old){var newFieldName=fieldName;if(!((prefix_new==""||prefix_new==null)&&(prefix_old==""||prefix_old==null))){if(!(prefix_old==""||prefix_old==null)){if(newFieldName.indexOf(prefix_old)==0){newFieldName=prefix_new+newFieldName.substr(prefix_old.length)}}else{newFieldName=prefix_new+newFieldName}}if(!((suffix_new==""||suffix_new==null)&&(suffix_old==""||suffix_old==null))){if(!(suffix_old==""||suffix_old==null)){if(newFieldName.indexOf(suffix_old)>-1&&newFieldName.indexOf(suffix_old)==newFieldName.length-suffix_old.length){newFieldName=newFieldName.substr(0,newFieldName.indexOf(suffix_old))+suffix_new}}else{newFieldName=newFieldName+suffix_new}}return newFieldName},setFieldsValues:function(addr,addr_source,prefix_source,prefix_target,suffix_source,sufix_target){for(fieldName in addr.fields){var field_source;if(addr.fields[fieldName]){field_source=$(addr._mutateName(fieldName,prefix_source,prefix_target,suffix_source,sufix_target));if(field_source)addr.fields[fieldName].value=field_source.value}}for(var optionValue in addr.options){addr.options[optionValue].checked=addr_source.options[optionValue].checked;if(addr.options[optionValue].checked==true){addr.setTippersValue(addr,optionValue)}}addr.switchOptions(addr)},eventListenerSetFieldsValues:function(e,addr,addr_source,prefix_source,prefix_target,suffix_source,sufix_target){var trigger_el;trigger_el=Event.element(e);if(trigger_el.checked){addr.setFieldsValues(addr,addr_source,prefix_source,prefix_target,suffix_source,sufix_target)}},syncWithBilling:function(addr,addr_source,trigger,prefix_source,prefix_target,suffix_source,sufix_target){if($(trigger)){addr.triggerSyncWithBilling=$(trigger);Event.observe(addr.triggerSyncWithBilling,'click',addr.eventListenerSetFieldsValues.bindAsEventListener(addr,addr,addr_source,prefix_source,prefix_target,suffix_source,sufix_target))}},eventListenerCheckFieldState:function(e,addr){var el=Event.element(e);el.checked=true;el.value=1}}
