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(e, p_sFormId){var oForm=this.__Forms[p_sFormId];if(oForm){var oEv=e?e:event;var oSrc=oEv.target?oEv.target:oEv.srcElement;var sValue;switch(oSrc.tagName.toLowerCase()){case "input":sValue=oSrc.value;break;case "select":sValue=oSrc[oSrc.selectedIndex].value;break;} var oFormEl=document.getElementById(oForm.__FormId);var oFieldEls=oFormEl[oSrc.name];if(typeof oFieldEls.tagName=='undefined'){for(var i=0;i<oFieldEls.length;i++){var oFieldEl=oFieldEls[i];switch(oFieldEl.tagName.toLowerCase()){case "input":switch(oFieldEl.type){case "radio":oFieldEl.checked=oFieldEl.value==sValue;break;case "checkbox":if(oFieldEl.value==sValue){oFieldEl.checked=oSrc.checked;}break;}break;case "select":for(var j=0;j<oFieldEl.length;j++){if(oFieldEl[j].value==sValue){oFieldEl.selectedIndex=j;break;}}break;} }}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;this.__PositiveSuffix=p_sPositiveSuffix;this.__NegativePrefix=p_sNegativePrefix;this.__NegativeSuffix=p_sNegativeSuffix;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(arguments[0], "'+this.__FormId+'")');for(var i=0;i<this.__Fields.length;i++){var oFieldEls=oFormEl[this.__Fields[i].FieldName];if(oFieldEls){if(typeof oFieldEls.tagName!='undefined'){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(typeof oFieldEls.tagName!='undefined'){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;}if(oFieldEl.className.indexOf("ncSaleViewPricedField")!=-1){this.__UpdateOptionPrice(oFieldEl, cOptionPrice-cSelectedPrice);}break;case 'checkbox':if(oFieldEl.className.indexOf("ncSaleViewPricedField")!=-1){this.__UpdateOptionPrice(oFieldEl, oFieldEl.checked?-cOptionPrice:cOptionPrice);}break;}break;case "select":var cSelectedPrice=oField.GetOptionPrice(oFieldEl[oFieldEl.selectedIndex].value);cTotalPrice+=cSelectedPrice;for(var k=0;k<oFieldEl.length;k++){var oOption=oFieldEl[k];cOptionPrice=oField.GetOptionPrice(oOption.value);if(oFieldEl.className.indexOf("ncSaleViewPricedField")!=-1){oOption.text=oOption.title+" "+this.__GetTextPrice(cOptionPrice-cSelectedPrice);}}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'){oSiblingEl.innerHTML=this.__GetTextPrice(p_cPrice).replace(/ /g, '&nbsp;');break;}oSiblingEl=oSiblingEl.nextSibling;}};SaleViewUpdaterForm.prototype.__GetTextPrice=function(p_cPrice){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;}}return sText;};function SaleViewUpdaterField(p_sFieldName, p_oOptionValues){this.FieldName=p_sFieldName;this.__OptionValues=p_oOptionValues?p_oOptionValues:{};};SaleViewUpdaterField.prototype.GetOptionPrice=function(p_sValue){if(this.__OptionValues[p_sValue]){return this.__OptionValues[p_sValue].Price;}else{return 0;} };window['g_oSaleViewUpdater']=new SaleViewUpdater('g_oSaleViewUpdater');
