Backbone.sync=function(e,b,a){var d={};
d.type="get";
d.url=b.url()+"&v=2";
d.contentType="application/json";
d.dataType="json";
d.processData=false;
d.cache=false;
if(typeof checkout!="undefined"){var c=checkout.getZipCode();
if(c!=""){d.url+="&zip="+checkout.getZipCode()
}}d.beforeSend=function(){$.publish("cart/onBeforeCartUpdate")
},d.getItems=function(h){var f=[];
var g=_.pluck(h.orders,"items");
_.each(g,function(i){_.each(i,function(j){f.push(j)
},this)
},this);
return(f.length>0)?f:false
},d.success=function(g){$.publish("cart/response",[g]);
if(g&&g.orders){var f=this.getItems(g);
if(f){$.publish("cart/update",[f])
}}if(g.cartError!="false"){$.publish("cart/cartError",[g])
}$("#xhr-subtotal").html(g.subtotalFormatted);
$("#xhr-shipping-subtotal").html(g.shippingFormatted)
};
d.error=function(f,i,h){var g=this.getItems(f);
if(a&&a.error){a.error([g])
}else{$.publish("cart/connectionError",[g])
}};
$.ajax(d)
};
var TadaCart=function(b){var a=this;
a.data=b;
a.CartItem=Backbone.Model.extend({initialize:function(){if(!this.get("name")){}if(this.get("shippingMessage")==null){this.set({shippingMessage:undefined})
}if(this.get("shipping")==="false"){this.set({shipping:undefined})
}this.set({id:this.get("id")});
if(parseInt(this.get("quantity"))==0){this.set({status:"soldout"})
}},clear:function(){this.destroy({success:function(){},error:function(){}});
this.view.remove()
},url:function(){return"/shoppingcartjson?productId="+this.get("id")+"&quantity="+parseInt(this.get("quantity"))+"&stamp="+(new Date().getTime()*Math.floor(Math.random()*50)).toString()
}});
a.CartItemList=Backbone.Collection.extend({model:a.CartItem,initialize:function(){_.bindAll(this,"update","getIds","clear");
$.subscribe("cart/onBeforeCartUpdate",this.getIds);
$.subscribe("cart/update",this.update);
_.extend({flattenIds:_.pluck(this.models,"id")},this)
},getIds:function(){this.flattenIds=_.pluck(this.models,"id")
},update:function(c){var d=this.flattenIds;
_.each(c,function(g){var i=g.id;
var e=this.get(i);
var h=parseInt(g.quantity);
d=_.without(d,i);
if(e){var f=(g.itemError!="false")?true:false;
e.set({status:"incart"});
if(parseInt(e.get("quantity"))>h&&f){_.extend(g,{status:"quantity",quantity:h})
}if(h==0&&f){_.extend(g,{status:"soldout",quantity:0})
}_.extend(g,{id:i});
e.set(g)
}else{_.extend(g,{id:g.id});
this.add(g)
}},this);
if(d.length>0){_.each(d,function(f){var e=(this.get(f)||false);
if(e){this.remove(e);
e.view.remove()
}},this)
}},clearErrors:function(){this.each(function(c){c.set({itemError:"false"})
})
},clear:function(){_.each(this.models,function(e){var c=this.get(e);
var d=c.get("status");
var f=parseInt(c.get("quantity"));
if(c&&(f===0||d=="error")){if(c.view){c.view.remove()
}this.remove(c)
}},this)
},url:function(c){return"/getShoppingcartjson?stamp="+(new Date().getTime()*Math.floor(Math.random()*50)).toString()
}});
a.CartItemView=Backbone.View.extend({el:false,className:"item-row",initialize:function(){_.bindAll(this,"render","itemQuantityChange");
this.model.bind("change",this.render);
this.model.view=this
},template:(function(){var c=[];
c.push("<tr>");
c.push('<td class="cart-image-col" valign="top">');
c.push('<img src="<%= imageUrl %>" width="80" height="80" />');
c.push("</td>");
c.push('<td class="cart-description-col" valign="top">');
c.push('<% if(typeof(productUrl) !== "undefined"){ %><p class="strong"><a href="<%= productUrl %>"><%= name %></a></p><% } else { %><p class="strong"><%= name %></p><% } %>');
c.push('<% if(typeof(productAttributes) !== "undefined") { %><%= productAttributes %><% } %>');
c.push('<%  if (giftCardFlag === "false") { %> <% if(typeof(merchantName) !== "undefined") { %><div class="cart-item-merchant">Offered by <%= merchantName %></div><% } %><% if(typeof(estimatedShipDate) !== "undefined") { %><div class="cart-item-ship-date">Estimated delivery <%= estimatedShipDate %></div><% } %><% } else { %><% if(typeof(giftCardExpirationDateTime) !== "undefined" && giftCardExpirationDateTime != null) { %><div class="cart-item-merchant cart-item-gift-card">Promotional value expires on <%= giftCardExpirationDateTime %></div><% } else { %><div class="cart-item-merchant cart-item-gift-card">Promotional value does not expire</div><% } %><div class="cart-item-merchant">e-Gift Cards are not returnable</div><% if(typeof(estimatedShipDate) !== "undefined") { %><div class="cart-item-ship-date">Your e-Gift Card code will be in your TaDa account by <%= estimatedShipDate %></div><% } %><% } %>');
c.push("</td>");
c.push('<td class="cart-price-col" valign="top"><%= price %></td>');
c.push('<td class="cart-quantity-col" valign="top"><%= quantityHTML %></td>');
c.push('<td class="cart-subtotal-col <%= itemErrorTriggered %>" valign="top"><div class="relative">');
c.push("<%= subtotal %>");
c.push('<% if(typeof(shippingMessage) !== "undefined" && giftCardFlag === "false") { %><div class="cart-item-shipping-message"><%= shippingMessage %></div><% } %>');
c.push('<% if(typeof(shipping) !== "undefined" && shipping != "false") { %><div class="cart-item-shipping-price">Shipping: <%= shipping %></div><% } %>');
c.push("</div></td>");
c.push('<td class="cart-remove-col" valign="top"><div class="remove-wrapper"><span class="trashcan-icon"> </span><span class="cart-item-delete">Remove</span></div></td>');
c.push("</tr>");
return _.template(c.join(""))
})(),events:{"click .cart-item-delete":"itemDelete","click .trashcan-icon":"itemDelete","change .quantity-change":"itemQuantityChange"},render:function(){var c=this.model.toJSON();
function f(i){var m=i.quantity,l=i.maxQuantity,n=i.id;
var j='<select id="quantity-change-'+n+'" class="quantity-change">';
var g=parseInt(l)+1;
for(var h=1;
h<g;
h++){var k="<option ";
if(h===parseInt(m)){k+=" SELECTED "
}k+='value="'+h+'">'+h+"</option>";
j+=k
}j+="</select>";
return j
}c.itemErrorTriggered=(c.itemError!="false")?"item-error":"";
if(c.status=="soldout"){var e="<span class='error-field'>N/A</span>";
c.subtotal="<span class='strike-thru'>"+c.price+"</span><p class='error-field'>"+c.itemError+"</p>";
c.shippingMessage=undefined
}else{var e=f(c);
c.subtotal="<span>"+c.subtotal+"</span>";
if(c.itemError!="false"&&c.status!="add"){c.subtotal+="<p class='error-field'>"+c.itemError+"</p>"
}}c.quantityHTML=e;
var d="";
if(!$.isEmptyObject(c.productAttributes)){d+='<div class="cart-item-attributes">';
_.each(c.productAttributes,function(h,g){d+=g+": "+h+", "
});
d=d.substr(0,d.length-2);
d+="</div>"
}c.productAttributes=d;
if(c.status=="add"){$(this.el).addClass("add-item")
}if(c.status=="incart"){$(this.el).removeClass("add-item")
}$(this.el).html(this.template(c));
return this
},itemDelete:function(){$.publish("cart/action");
this.model.set({quantity:0});
this.model.clear();
this.model.collection.remove(this.model)
},itemQuantityChange:function(i){$.publish("cart/action");
var c=$(i.currentTarget);
var h=parseInt(c.val());
var f=this.model.collection.get(this.model);
f.set({status:"add"});
var d=f.get("id");
var g=a.items.url;
a.items.url=function(){return"/shoppingcartjson?productId="+d+"&quantity="+h
};
var j=new Backbone.sync("read",a.items);
a.items.url=g;
return false
}});
a.ErrorView=Backbone.View.extend({el:$("#shopping-cart-container"),initialize:function(){_.bindAll(this,"errorHandler","restoreState","onLoadHandler","toggle","displayHtml","displayText","connectionHandler","cartHandler","clearError");
_.extend(this,{errorDiv:$("#shopping-cart-errror"),cartCountDiv:$("#cart-count"),itemErrorDiv:$("#item-error"),refreshHtml:"<a class='cart-refresh'>refresh</a>",toremove:[],restoreRef:false,active:false});
$.subscribe("cart/connectionError",this.errorHandler);
$.subscribe("cart/cartError",this.cartHandler);
$.subscribe("cart/gernalError",this.connectionHandler);
$.subscribe("cart/action",this.clearError)
},toggle:function(c){if(c||this.errorDiv.hasClass("no-display")){this.errorDiv.removeClass("no-display");
this.el.addClass("has-errors");
if(this.restoreRef!=false){$.unsubscribe(this.restoreRef)
}$.publish("cart/toggle",["open"]);
this.restoreRef=$.subscribe("cart/close",this.restoreState)
}else{this.clearError();
this.collection.clear()
}},clearError:function(){if(this.active){this.active.css("display","none");
this.active=false;
if(this.restoreRef!=false){$.unsubscribe(this.restoreRef)
}}this.collection.clearErrors();
this.errorDiv.addClass("no-display");
this.el.removeClass("has-errors")
},displayHtml:function(c){var d=$("#"+c);
d.css("display","block");
this.active=d
},displayText:function(c){c.replace("#refresh#",this.refreshHtml);
this.itemErrorDiv.html(c);
this.itemErrorDiv.css("display","block");
this.active=this.itemErrorDiv
},onLoadHandler:function(d,c){if(this.cartCountDiv.html()&&parseInt(this.cartCountDiv.html())==0){return false
}this.toggle(true);
this.displayHtml("timeout-pageload")
},connectionHandler:function(c,d){this.toggle(true);
this.displayHtml("timeout-"+(d||"load"))
},errorHandler:function(c){this.toggle(true)
},cartHandler:function(c){this.displayText(c.cartError);
this.toggle(true)
},restoreState:function(){this.toggle();
if(this.restoreRef!=false){$.unsubscribe(this.restoreRef)
}this.restoreRef=false
}});
a.BagNavView=Backbone.View.extend({el:$("ul.navigation"),initialize:function(){_.bindAll(this,"onFocus","onFocusOut","scrollToClose","clickHandler","checkout","toggle","updateContinueShoppingLink");
$.subscribe("cart/toggle",this.toggle);
$.subscribe("cart/updateShoppingLink",this.updateContinueShoppingLink);
_.extend(this,{cart:$("#shopping-cart-container"),header:$("#header"),content:$("#content"),navItem:$("#shopping-cart-nav"),saleLink:$("#sale-link-url").val(),isIE7:($("#is-ie7").val()=="true")?true:false,isCheckoutPage:$("body").hasClass("checkout"),isAnimating:false});
$("#shopping-cart-checkout").bind("click",this.checkout);
if(this.isIE7){$.fx.off=true
}},events:{"click li.shopping-cart":"clickHandler"},clickHandler:function(c){if(!this.navItem.hasClass("shopping-cart-active")){$.publish("cart/refresh")
}this.toggle(c)
},updateContinueShoppingLink:function(){var e=this.saleLink;
if(e!=undefined){var c=location.protocol+"//"+location.host;
var d=$("#shopping-cart-continue-shopping");
d.unbind("click");
d.bind("click",function(f){window.location=c+e
})
}},toggle:function(d){if(this.isAnimating||this.isCheckoutPage){return false
}var l=this;
var i=this.cart;
var f=false;
var c=false;
var g=-337-this.header.height()+10;
var j=($(document).scrollTop()>this.header.height())?true:false;
var e=this.navItem;
if(e.hasClass("shopping-cart-active")&&i.offset().top<100&&j){e.removeClass("shopping-cart-active");
i.attr("style","")
}var h=((!e.hasClass("shopping-cart-active")&&d=="open")||!e.hasClass("shopping-cart-active")&&d!="close")?true:false;
var k=((e.hasClass("shopping-cart-active")&&d!="open")||d=="close")?true:false;
if(h){this.isAnimating=true;
i.addClass("shopping-cart-active");
if(c){$.publish("cart/refresh")
}$.publish("cart/open");
if(j){f=true;
i.css("top",($(document).scrollTop()+g)+"px")
}else{i.css("top","-337px")
}l.navItem.addClass("no-hover");
if(!j){i.animate({top:"+="+Math.abs(i.position().top-l.header.height()/2)},{duration:350,step:function(m,n){i.css("z-index","9")
}}).queue(function(){i.css("z-index","10");
l.navItem.addClass("shopping-cart-active");
i.dequeue()
});
i.animate({top:"-=59"},250).queue(function(){if(f){i.hover(l.onFocus,l.onFocusOut);
i.css({top:"-7px",position:"fixed",left:l.header.offset().left});
if(!l.isIE7){i.css("z-index","10")
}$(window).bind("scroll",l.scrollToClose)
}UI.Navigation.cartTab.removeClass("no-display");
l.isAnimating=false;
i.dequeue()
})
}else{i.hover(l.onFocus,l.onFocusOut);
l.navItem.addClass("shopping-cart-active");
i.css("z-index","10");
i.css("top",$(document).scrollTop()-this.header.height());
$(window).bind("scroll",l.scrollToClose);
l.isAnimating=false
}}if(k&&!h){this.isAnimating=true;
$(window).unbind("scroll");
i.animate({top:"+=2px"},{duration:200}).queue(function(){i.css("z-index","9");
l.navItem.removeClass("shopping-cart-active");
UI.Navigation.cartTab.addClass("no-display");
i.dequeue()
});
i.animate({top:"-=429px"},{duration:350}).queue(function(){i.attr("style","");
i.removeClass("shopping-cart-active");
l.isAnimating=false;
$.publish("cart/close");
l.navItem.removeClass("no-hover");
i.dequeue()
})
}},checkout:function(c){if(a.items.length>=1){window.location.href="/checkout"
}},onFocus:function(c){$(window).unbind("scroll")
},onFocusOut:function(c){$(window).bind("scroll",this.scrollToClose)
},scrollToClose:function(c){$(window).unbind("scroll");
this.toggle("close")
}});
a.BagButtonView=Backbone.View.extend({el:$("#shopping-cart-nav"),initialize:function(){_.bindAll(this,"delegate");
_.extend(this,{container:$("#shopping-cart-container"),cart_count:$(".cart-count-html")});
$(".cart-close-trigger").click(this.delegate)
},delegate:function(){$.publish("cart/toggle",["close"])
}});
a.AppView=Backbone.View.extend({el:$("body"),initialize:function(){_.bindAll(this,"get","add","refresh","paintCart","addOne","addAll","addToCart","updateCounter","updateRows","getItToCart","refreshCart");
a.bagNav=new a.BagNavView;
a.cart=new a.BagButtonView;
a.items=new a.CartItemList;
a.errors=new a.ErrorView({collection:a.items});
a.items.bind("add",this.add);
a.items.bind("refresh",this.refresh);
a.items.bind("change",this.paintCart);
a.items.bind("remove",this.paintCart);
var d=document.getElementById("cart-json");
var c=(d===null)?false:d.innerHTML;
if(!c){a.items.fetch({error:function(g,f,h){a.errors.onLoadHandler(g,f)
}})
}else{var e=$.parseJSON(c);
a.items.refresh(e.items);
if(e.cartError!="false"){$.publish("cart/cartError",[e]);
if(window.location.href.indexOf("#cart-errror")<0){window.location.href+="#cart-errror"
}}}$.subscribe("cart/add",this.addToCart);
$.subscribe("cart/refresh",this.refreshCart);
$(".cart-refresh").live("click",this.refreshCart);
$(".getItToCart").live("click",this.getItToCart)
},events:{"click a.addToCart":"addToCart",click:"hideCartContextual"},refreshCart:function(c){a.items.fetch();
return false
},length:function(){return a.items.length
},get:function(c){return a.items.get(c)
},add:function(c){this.addOne(c);
this.paintCart()
},refresh:function(){this.addAll();
this.paintCart()
},paintCart:function(){this.updateCounter();
this.updateProductsInCart()
},addOne:function(d){var c=new a.CartItemView({model:d});
$("table.cart-content tbody").prepend(c.render().el)
},addAll:function(){a.items.each(this.addOne)
},getItToCart:function(d){var c=$(d.currentTarget);
var e={product_image:$("#main-product-image").attr("src"),productId:c.attr("productId"),quantity:parseInt($("#quantity").val()||1),product_name:"Saving Item...",productAttributes:false,target:false};
this.addToCart(e)
},addToCart:function(j){if(j.target){var m=$(j.target).parent();
var f=m.find(".productId").text();
var d="Saving item...";
var k=m.find("img").attr("src");
var g=parseInt($("#quantity").val()||1);
var c=false
}else{var d=j.product_name;
var f=j.productId;
var k=j.product_image;
var c=j.productAttributes;
var g=(j.quantity||1)
}var i=(a.items.get(f)!=="undefined")?a.items.get(f):false;
if(i){$.publish("cart/refresh");
$.publish("cart/toggle",["open"]);
$.publish("cart/updateShoppingLink");
return false
}a.items.add({name:d,price:"$0.00",imageUrl:k,productAttributes:c,itemError:"false",subtotal:"$0.00",giftCardFlag:"false",quantity:g,merchantName:"...",estimatedShipDate:"...",id:f.toUpperCase(),status:"add"});
var h=a.items.url;
a.items.url=function(){return"/shoppingcartjson?productId="+f+"&quantity="+g
};
var l=Backbone.sync("read",a.items,{error:function(n){var e=a.items.get(f);
var o=function(){e.clear();
a.items.remove(e)
};
a.errors.connectionHandler(n,"add");
e.set({status:"error"});
_.delay(o,1000)
}});
$.publish("cart/insert",[m]);
$.publish("cart/updateShoppingLink");
a.items.url=h;
setTimeout("$.publish('cart/toggle', ['open'])",100)
},updateCounter:function(){var i=0;
var e=a.bagNav.render().cart;
var h=a.cart.render().cart_count;
var g=a.cart.render().cart_label;
var f=parseInt(h.html());
var d=true;
var c=true;
var j=(function(){a.items.each(function(k){i+=parseInt(k.attributes.quantity);
if(k.attributes.shipping!="false"||k.attributes.shipping=="undefined"){d=false
}if(k.attributes.giftCardFlag=="false"){c=false
}});
return i
})();
h.html(j);
e.removeClass("no-checkout");
if(j>0||a.items.length>0){e.addClass("has-items");
e.removeClass("empty");
UI.Navigation.showCheckout()
}else{e.removeClass("has-items");
e.addClass("empty");
UI.Navigation.hideCheckout()
}if(j==0&&a.items.length>0){e.addClass("no-checkout")
}if(!c){if(!d){$("#no-tax-ship").removeClass("no-display");
$("#no-tax").addClass("no-display")
}else{$("#no-tax-ship").addClass("no-display");
$("#no-tax").removeClass("no-display")
}}else{$("#no-tax-ship,#no-tax").addClass("no-display")
}},updateProductsInCart:function(){var c=$(".getItToCart"),d="in-cart";
_.each(c,function(h,f){var g=$(h);
var i=g.attr("productId");
var e=a.items.get(i);
if(e&&e.get("status")!="add"){g.addClass(d).children().html("In Bag")
}else{if(!e&&g.hasClass(d)){g.removeClass(d).children().html("Add To Bag")
}}},this)
},updateSubtotals:function(){var c=0;
a.items.models.reverse();
_.each(a.items.models,function(e,d){var g=parseFloat(e.attributes.price.split("$")[1]);
var h=e.attributes.quantity;
var f=(g*h).toFixed(2);
c+=g*h;
$(e.view.el).find(".cart-subtotal-col").text(f)
});
$("#shopping-cart-subtotal span").text("$"+c.toFixed(2));
a.items.models.reverse()
},updateRows:function(){setTimeout(function(){var d="cart-item-last";
var e=$("div.cart-content-wrap tr");
var c=a.items.length;
e.removeClass(d).filter(":eq("+(c-1)+")").addClass(d)
},50)
},hideCartContextual:function(g){var c=$("li.shopping-cart");
if(c.hasClass("shopping-cart-active")){var f=$(g.target);
var d=(f.attr("id")==="shopping-cart-container"||f.attr("id")==="shopping-cart-nav"||f.hasClass("addToCart")||f.hasClass("getyours")||f.hasClass("getItToCart")||f.hasClass("trashcan-icon")||f.hasClass("cart-item-delete")||f.parents("#shopping-cart-container").length||f.parents("#shopping-cart-nav").length);
if(!d){$.publish("cart/toggle",["close"])
}}}});
return new a.AppView()
};
$(document).ready(function(){window.Cart=new TadaCart()
});
