function SaleViewUpdater(p_sName){this.Name=p_sName;this.__Forms={};}SaleViewUpdater.prototype.AddForm=function(p_sFormId, p_cBasePrice, p_lNumericFormatType, p_sPricePrefix, p_sPriceSuffix, p_sPositivePrefix, p_sPositiveSuffix, p_sNegativePrefix, p_sNegativeSuffix){var o=new SaleViewUpdaterForm(this, p_sFormId, p_cBasePrice, p_lNumericFormatType, p_sPricePrefix, p_sPriceSuffix, p_sPositivePrefix, p_sPositiveSuffix, p_sNegativePrefix, p_sNegativeSuffix);this.__Forms[p_sFormId]=o;return o;};SaleViewUpdater.prototype.AddListener=function(p_sFormId, p_sListenerId, p_dblPercentage){var oForm=this.__Forms[p_sFormId];if(oForm){oForm.AddListener(p_sListenerId, p_dblPercentage);}};SaleViewUpdater.prototype.UpdateForm=function(p_sFormId){var oForm=this.__Forms[p_sFormId];if(oForm){oForm.RecalculatePrice();}};function SaleViewUpdaterForm(p_oSaleViewUpdater, p_sFormId, p_cBasePrice, p_lNumericFormatType, p_sPricePrefix, p_sPriceSuffix, p_sPositivePrefix, p_sPositiveSuffix, p_sNegativePrefix, p_sNegativeSuffix){this.__SaleViewUpdater=p_oSaleViewUpdater;this.__FormId=p_sFormId;this.__Fields=[];this.__BasePrice=p_cBasePrice;this.__PricePrefix=p_sPricePrefix;this.__PriceSuffix=p_sPriceSuffix;this.__PositivePrefix=p_sPositivePrefix.replace(/ /g, '&nbsp;');this.__PositiveSuffix=p_sPositiveSuffix.replace(/ /g, '&nbsp;');this.__NegativePrefix=p_sNegativePrefix.replace(/ /g, '&nbsp;');this.__NegativeSuffix=p_sNegativeSuffix.replace(/ /g, '&nbsp;');this.__NumericFormatType=p_lNumericFormatType;this.__Listeners=[];}SaleViewUpdaterForm.prototype.AddListener=function(p_sId, p_dblPercentage){this.__Listeners[this.__Listeners.length]={Id:p_sId, Percentage:p_dblPercentage};};SaleViewUpdaterForm.prototype.AddField=function(p_sFieldName, p_oOptionValues){var o=new SaleViewUpdaterField(p_sFieldName, p_oOptionValues);this.__Fields[this.__Fields.length]=o;return o;};SaleViewUpdaterForm.prototype.WireUp=function(){var oFormEl=document.getElementById(this.__FormId);if(oFormEl){var oEventMethod=new Function(this.__SaleViewUpdater.Name+'.UpdateForm("'+this.__FormId+'")');for(var i=0;i<this.__Fields.length;i++){var oFieldEls=oFormEl[this.__Fields[i].FieldName];if(oFieldEls){if(!oFieldEls.length){oFieldEls=[oFieldEls];}for(var j=0;j<oFieldEls.length;j++){var sEventType;switch(oFieldEls[j].tagName.toLowerCase()){case "input":sEventType="click";break;case "select":sEventType="change";break;}ncBwHlpr.AttachEvent(oFieldEls[j], sEventType, oEventMethod);}}};}};SaleViewUpdaterForm.prototype.RecalculatePrice=function(){var oFormEl=document.getElementById(this.__FormId);if(oFormEl){var cTotalPrice=this.__BasePrice;for(var i=0;i<this.__Fields.length;i++){var oField=this.__Fields[i];var oFieldEls=oFormEl[oField.FieldName];if(oFieldEls){if(!oFieldEls.length){oFieldEls=[oFieldEls];}for(var j=0;j<oFieldEls.length;j++){var lFieldPrice=0;var oFieldEl=oFieldEls[j];var cOptionPrice;switch(oFieldEl.tagName.toLowerCase()){case "input":var cOptionPrice=oField.GetOptionPrice(oFieldEl.value);if(oFieldEl.checked){cTotalPrice+=cOptionPrice;}switch(oFieldEl.type){case 'radio':var cSelectedPrice=0;if(!oFieldEl.checked){for(var k=0;k<oFieldEls.length;k++){if(oFieldEls[k].checked){cSelectedPrice=oField.GetOptionPrice(oFieldEls[k].value);}}}else{cSelectedPrice=cOptionPrice;}this.__UpdateOptionPrice(oFieldEl, cOptionPrice-cSelectedPrice);break;case 'checkbox':this.__UpdateOptionPrice(oFieldEl, oFieldEl.checked?-cOptionPrice:cOptionPrice);break;}break;case "select":cTotalPrice+=oField.GetOptionPrice(oFieldEl[oFieldEl.selectedIndex].value);break;}}}};for(var i=0;i<this.__Listeners.length;i++){var oListener=this.__Listeners[i];var oSpanEl=document.getElementById(oListener.Id);if(oSpanEl){var oPriceParentEl;if(oSpanEl.childNodes&&oSpanEl.childNodes[0].nodeType==1&&oSpanEl.childNodes[0].tagName.toLowerCase()=='a'){oPriceParentEl=oSpanEl.childNodes[0];}else{oPriceParentEl=oSpanEl;}var cAdjustment=Math.floor(cTotalPrice * oListener.Percentage) / 100;var cPrice=cTotalPrice+cAdjustment;oPriceParentEl.innerHTML=this.__PricePrefix+ncFormatNumber(cPrice, 2, this.__NumericFormatType, true)+this.__PriceSuffix;}}}};SaleViewUpdaterForm.prototype.__UpdateOptionPrice=function(p_oFieldEl, p_cPrice){var oSiblingEl=p_oFieldEl.nextSibling;while(oSiblingEl){if(oSiblingEl.nodeType==1&&oSiblingEl.tagName.toLowerCase()=='span'&&oSiblingEl.className=='SaleViewOptionPrice'){var sText='';if(p_cPrice!=0){var sPrice=ncFormatNumber(Math.abs(p_cPrice), 2, this.__NumericFormatType, true);if(p_cPrice>0){sText=this.__PositivePrefix+sPrice+this.__PositiveSuffix;}else{sText=this.__NegativePrefix+sPrice+this.__NegativeSuffix;}}oSiblingEl.innerHTML=sText;break;}oSiblingEl=oSiblingEl.nextSibling;}};function SaleViewUpdaterField(p_sFieldName, p_oOptionValues){this.FieldName=p_sFieldName;this.__OptionValues=p_oOptionValues?p_oOptionValues:{};};SaleViewUpdaterField.prototype.AddOptionValue=function(p_sValue, p_cPrice){this.__OptionValues[p_sValue]=p_cPrice;};SaleViewUpdaterField.prototype.GetOptionPrice=function(p_sValue){if(this.__OptionValues[p_sValue]){return this.__OptionValues[p_sValue];}else{return 0;} };window['g_oSaleViewUpdater']=new SaleViewUpdater('g_oSaleViewUpdater');