
(function($){$.basket={lastAddedProduct:'',lastRemovedProduct:'',onAddCallbacks:[],onRemoveCallbacks:[],onClearCallbacks:[],registerAddButton:function(id){$('#'+id).click(function(){var id=$(this).attr('rel');var quantity=$('input[name='+id+'_quantity]:first').val();if(quantity!=undefined&&!isNaN(quantity)){$.basket.addToBasket(id,quantity);}else{$.basket.addToBasket(id,1);}});},registerRemoveButton:function(id){$('#'+id).click(function(){$.basket.removeFromBasket($(this).attr('rel'));});},registerClearButton:function(id){$('#'+id).click(function(){$.basket.clearBasket();});},onAdd:function(callback){$.basket.onAddCallbacks.push(callback);},onRemove:function(callback){$.basket.onRemoveCallbacks.push(callback);},onClear:function(callback){$.basket.onClearCallbacks.push(callback);},addToBasket:function(productId,quantity){$.basket.lastAddedProduct=productId;$.invoke('LaunchPad.Shop.Core.Basket/AddProductQuantityToCurrentBasket',[productId,quantity],function(r){$.basket.updateSummaries(function(){$($.basket.onAddCallbacks).each(function(){this();});});});},removeFromBasket:function(productId){$.basket.lastRemovedProduct=productId;$.invoke('LaunchPad.Shop.Core.Basket/RemoveProductFromCurrentBasket',[productId],function(r){$.basket.updateSummaries(function(){$($.basket.onRemoveCallbacks).each(function(){this();});});});},clearBasket:function(){$.invoke('LaunchPad.Shop.Core.Basket/ClearCurrentBasket',[],function(r){$.basket.updateSummaries(function(){$($.basket.onClearCallbacks).each(function(){this();});});});},updateSummaries:function(callback){var uniqueTemplates=[];var templateMapping=[];$('.shopBasketSummary').each(function(){var template=$(this).attr('rel');if(!template||template==undefined||template==null||template==''){template='Default';}
templateMapping.push({element:this,template:template});if($.grep(uniqueTemplates,function(el,idx){return el==template;}).length==0){uniqueTemplates.push(template);}});$.invoke('LaunchPad.Shop.Core.Basket/RenderCurrentBasket',[uniqueTemplates],function(r){var renderIter=0;$(uniqueTemplates).each(function(){var template=this;$($.grep(templateMapping,function(el,idx){return el.template==template;})).each(function(){$(this.element).html(r.renderings[renderIter]);renderIter++;});});if(callback&&typeof callback=='function'){callback();}});}};})(jQuery);
