function CartViewModel(n){var t=this,i;t.sending=ko.observable(!0);t.processingQuote=ko.observable(!1);t.quoteRequested=ko.observable(!1);t.cart=n;t.quoteEmail=ko.observable("").extend({validateEmail:""});t.quoteMessage=ko.observable("");t.cartHasChanged=ko.observable(!1);t.offerHasChanged=ko.observable(!1);t.miniCartContainer="#mini-cart";t.miniCartSummary="#mini-cart-summary";ko.isObservable(t.cart.cartItems)||t.cart.cartItems.destroyAll!==undefined||(i=ko.observableArray([]),ko.utils.arrayForEach(t.cart.cartItems,function(n){var r=n.product.minMax?n.product.minMax.Min:1,u=n.product.minMax?n.product.minMax.Max:999999;n.product.price=ko.observable(n.product.price);n.quantity=ko.observable(n.quantity).extend({subTotal:n.product.price()}).extend({minMaxQty:{minQty:r,maxQty:u}});n.quantity.subscribe(function(){t.cartHasChanged(!0)});n.restrictionMessage!=null&&$(".restrictions-modal").modal("show");n.lineTotal=ko.computed({read:function(){return(n.quantity()*n.product.price()).toFixed(2)},owner:n});i.push(n)}),t.cart.cartItems=i);t.cart.total=t.cart.cartItems.cartTotal();t.cart.productCount=t.cart.cartItems.totalProducts();t.cart.totalWeight=t.cart.cartItems.totalWeight();t.cartItemBeingChanged=null;t.cartIsValid=ko.pureComputed(function(){if(t.cart.cartItems().length===0)return!1;for(var n=0;n<t.cart.cartItems().length;n++)if(t.cart.cartItems()[n].quantity.hasMinMaxError())return!1;return!0});t.cart.savings=ko.observable(t.cart.savings);t.cart.webOfferCode=ko.observable(t.cart.webOfferCode);t.cart.isValidOffer=ko.observable(t.cart.isValidOffer);t.cart.webOfferCode.subscribe(function(n){t.cartHasChanged(!0);t.offerHasChanged(!0);t.cart.isValidOffer(!1);t.cart.webOfferCode(n.toUpperCase())});t.maxWeightExceeded=ko.pureComputed(function(){return t.cart.totalWeight()>150});t.showMiniCart=function(){$(t.miniCartContainer).popover("show")};t.hideMiniCart=function(){$(t.miniCartContainer).popover("hide")};t.fadeInMiniCart=function(n){setTimeout(function(){$(t.miniCartContainer).popover("show");setTimeout(function(){$(t.miniCartContainer).popover("hide")},1e3);$(n).slideDown(function(){setTimeout(function(){$("#cart").popover("hide")},4e3)})},300)};$(t.miniCartContainer).popover({html:!0,content:function(){return $(t.miniCartSummary).html()},title:"Cart Details",placement:"bottom",animation:!0,trigger:"manual"});t.updateCartItem=function(n){for(var r=!0,i=0;i<t.cart.cartItems().length;i++)if(t.cart.cartItems()[i].lineId===n.lineId){t.cart.cartItems()[i].quantity(n.quantity);t.cart.cartItems()[i].product.price(n.product.price);r=!1;break}r&&(ko.isObservable(n.product.price)||(n.product.price=ko.observable(n.product.price)),ko.isObservable(n.quantity)||(n.quantity=ko.observable(n.quantity).extend({subTotal:n.product.price()})),n.lineTotal=ko.computed({read:function(){return(n.quantity()*n.product.price()).toFixed(2)},owner:n}),t.cart.cartItems.push(n))};t.deleteCartItem=function(n){t.sending(!0);t.cartItemBeingChanged=n;var i={lineId:n.lineId=n.lineId,cartId:cartData.cartId,cartGuid:n.cartGuid,edpno:n.product.edpno,quantity:n.quantity(),product:n.product},r={cartItem:i,customerEdpNo:cartData.customer.edpno};$.ajax({url:"/api/cartitems",type:"delete",contentType:"application/json",data:JSON.stringify(r),success:t.successfulDelete,error:t.errorSave,complete:function(){t.sending(!1)}})};t.successfulDelete=function(n){if(n.resultObject===null){t.ErrorSave();return}t.cart.cartItems.remove(t.cartItemBeingChanged);t.cartItemBeingChanged=null;t.syncCart()};t.syncCart=function(){if(t.cart.cartItems().length>0){var n={cartItems:ko.mapping.toJS(t.cart.cartItems()),customerEdpNo:cartData.customer.edpno,cartGuid:cartData.cartGuid,webOfferCode:t.cart.webOfferCode()};$.ajax({url:"/api/SyncCart",type:"PUT",dataType:"json",data:n,async:!1,success:function(n){var u=n,i,f,r;if(u.successful){for(i=u.resultObject,t.cart.sourceCode=i.sourceCode,t.cart.webOfferCode(i.webOfferCode),t.cart.isValidOffer(i.isValidOffer),t.cart.savings(i.savings),r=0;r<i.cartItems.length;r++)cartViewModel.updateCartItem(i.cartItems[r]);if(t.cart.cartItems.valueHasMutated(),t.cartHasChanged(!1),u.messages.length>0){for(f="",t.offerHasChanged()&&(f+=i.webOfferCode.length===0?"Your Offer Code has been removed<br/>":"Offer Code "+i.webOfferCode+" has been applied<br/>",t.offerHasChanged(!1)),r=0;r<u.messages.length;r++)f+=u.messages[r]+"<br/>";t.showMessage("Cart Updated",f)}}else t.processError(u)},error:t.errorSave,complete:function(){t.sending(!1)}})}};t.errorSave=function(){showModal("Error","<strong>Error!<\/strong> There was an error updating the item in your cart.",!1,!0)};t.fadeElementOut=function(n){$(n).fadeOut(1e3,function(){$(n).remove()})};t.successfulQuoteRequest=function(n){var i=n,u,r;if(i.successful){for(u="Thank you for requesting a quote with us. ",r=0;r<i.messages.length;r++)u+=i.messages[r]+"<br/>";t.quoteRequested(!0);showModal("Thank you",u,!1,!0)}else t.processError(i)};t.launchQuoteRequest=function(){$("#quoteRequestModal").modal({backdrop:"static",keyboard:!1})};t.submitQuoteRequest=function(){if(!t.quoteEmail.hasError()){$("#quoteRequestModal").modal("hide");$("#quoteProgress").modal({backdrop:"static",keyboard:!1});var n={CartGuid:t.cart.cartGuid,CustomerEdpno:t.cart.customer.edpno,ToEmail:t.quoteEmail,Comments:t.quoteMessage,SourceCode:t.cart.sourceCode};$.ajax({url:"/api/quoterequest",type:"PUT",dataType:"json",data:n,success:function(n){t.successfulQuoteRequest(n)},error:function(){showModal("Error","<strong>Error!<\/strong> There was an error requesting your quote.",!1,!0)},complete:function(){$("#quoteProgress").modal("hide")}})}};t.processError=function(n){for(var r="",i=0;i<n.messages.length;i++)r+=n.messages[i]+"<br/>";t.showMessage("Unexpected Error",r)};t.showMessage=function(n,t){$("#txtMessageHeader").html(n);$("#txtMessage").html(t);$("#messageModal").modal("show")};t.sending(!1)}if(cartData!==undefined){var cartViewModel=new CartViewModel(cartData),isCartPage=$("#cartPage").length;isCartPage?ko.applyBindings(cartViewModel,document.getElementById("cartContainer")):ko.applyBindings(cartViewModel,document.getElementById("miniCartContainer"))}else $(".body-content").prepend('<div class="alert alert-danger"><strong>Error!<\/strong> Could not find cart data<\/div>')