dojo.provide("atg.store.widget.RichCartSummary");dojo.declare("atg.store.widget.RichCartSummary",[dijit._Widget,dijit._Templated,dijit._Container],{templateString:'<div id="${id}" class="${id}" dojoAttachPoint="csContainer" style="overflow:hidden;z-index:1;">  <div id="atg_store_richCartHeader">    <a href="javascript:void(0);" class="atg_store_csClose" dojoAttachPoint="csClose" dojoAttachEvent="onclick:hide">      <img width="12" height="11" src="/images/very/theme/cart/btn_close.png" alt="Close"/>    </a>    <h3>${i18n.myCartSummary}</h3><span class="atg_store_richCartCount" dojoAttachPoint="csQuantity">??(10)??</span>  </div>        <ul id="atg_store_csContent" dojoAttachPoint="csContent,containerNode">    <li dojoAttachPoint="csEmptyMessage" class="atg_store_emptyRichCart"><span>${i18n.cartIsEmpty}</span></li>  </ul>    <div id="atg_store_csFooter">      <span class="summary"  dojoAttachPoint="csSubtotalContainer">        ${i18n.your} ${i18n.itemsSubtotal}${i18n.labelSeparator}      </span>      <span class="atg_store_csSubtotal atg_store_viewCartPrice" dojoAttachPoint="csSubtotal">      </span>  </div>    <a class="atg_store_richCartCart" dojoAttachPoint="csFullCheckout" href="${url.checkout}">    ${i18n.viewCart}  </a>      <a href="${url.checkout}" class="atg_store_basicButton atg_store_chevron" dojoAttachPoint="csCheckout">    <span>${i18n.checkout}</span>  </a>    </div>',triggerWidget:null,data:null,quantityNodeId:null,hijackClassName:null,highlightColor:null,firstPlacementDone:false,cartAnimationInProgress:false,duration:{highlight:3000,scroll:500,wipe:280,autoHide:5000},afterStartup:function(){console.debug("Initializing RichCartSummary widget");
if(this.data!==null){this.setAllCartData(this.data);}var a=this;dojo.connect(window,"onresize",this,"placeCart");
dojo.connect(window,"onscroll",this,"placeCart");dojo.connect(document.body,"onclick",function(b){var c=b.target.nodeName;
a.hide();});dojo.connect(this.domNode,"onclick",function(b){b.stopPropagation();});
this.triggerWidget=dijit.byId("richCartTrigger");if(this.doHijack===true){this.hijackAllAddToCartNodes();
}},startup:function(){console.debug("Startup RichCartSummary widget");var a=this;
dojo.addOnLoad(function(){a.domNode.style.visibility="hidden";a.attachToContainer();
a.hide(function(){a.domNode.style.visibility="visible";});});this.afterStartup();
},setAllCartData:function(b){console.debug("Setting all cart data");this.data=b;this.clearCartItems();
this.setCartSummaryData();if(b.items){for(var a=0;a<b.items.length;a++){this.addCartItem(b.items[a]);
}}},setCartSummaryData:function(){var a;if(this.quantityNodeId!==null){a=dojo.byId(this.quantityNodeId);
if(a){console.debug("Setting Quantity Value in Rich Cart to: ",this.data.itemsQuantity);
a.innerHTML='<span id="atg_store_navCart_label">Shopping Cart </span><span id="atg_store_navCart_count_all"><span id="atg_store_navCart_count_divider">: </span><span id="atg_store_navCart_count_prefix">(</span><span id="atg_store_navCart_count">'+dojo.string.substitute(this.i18n.itemCount,[this.data.itemsQuantity]).replace("(","").replace(")","")+'</span><span id="atg_store_navCart_count_suffix">)</span><span id="atg_store_navCart_count_items"> Items</span></span>';
}a=this.csQuantity;if(a){a.innerHTML='<span id="atg_store_navCart_label">Shopping Cart </span><span id="atg_store_navCart_count_all"><span id="atg_store_navCart_count_divider">: </span><span id="atg_store_navCart_count_prefix">(</span><span id="atg_store_navCart_count">'+dojo.string.substitute(this.i18n.itemCount,[this.data.itemsQuantity]).replace("(","").replace(")","")+'</span><span id="atg_store_navCart_count_suffix">)</span><span id="atg_store_navCart_count_items"> Items</span></span>';
}}if(this.data.itemCount===0){this.showEmptyCart(true);}else{this.showEmptyCart(false);
this.csSubtotal.innerHTML=this.data.subtotal;}},showEmptyCart:function(a){if(a===true){dojo.style(this.csSubtotalContainer,"display","none");
dojo.style(this.csCheckout,"display","none");dojo.style(this.csEmptyMessage,"display","");
}else{dojo.style(this.csSubtotalContainer,"display","");dojo.style(this.csCheckout,"display","");
dojo.style(this.csEmptyMessage,"display","none");}},addCartItem:function(a){console.debug("Adding a Line Item");
var b=new atg.store.widget.RichCartSummaryItem({data:a,highlightColor:this.highlightColor,highlightDuration:this.duration.highlight,scrollDuration:this.duration.scroll,i18n:this.i18n});
b.startup();this.csContent.appendChild(b.domNode);this.addChild(b);},clearCartItems:function(){var b=this.getChildren();
for(var a=0;a<b.length;a++){this.removeChild(b[a]);b[a].destroy();}},toggleCart:function(){if(this.isShowing===true){this.hide();
}else{this.show();}},placeCart:function(){if(!this.isShowing&&this.firstPlacementDone&&!this.cartAnimationInProgress){return;
}console.debug("placeCart call");this.firstPlacementDone=true;var d=this.triggerWidget.triggerLink;
var f=dojo.position(d,true);var a,e,c,b;a=f.x-(parseInt(dojo.style(this.domNode).width,10)-f.w);
a=(a>0)?a:0;c=dojo._getMarginBox(d.parentNode).h;b=dijit.getViewport().t;console.debug("scrollOffsetHeight"+b);
e=f.y;e=(e-b>0)?e:b;console.debug("Placing cart @ "+a+", "+e);this.domNode.style.left=a+"px";
this.domNode.style.top=e+"px";this.domNode.style.zIndex="1000";if(this.bgIframe){this.bgIframe.size(this.domNode);
}},show:function(d){console.debug("show cart");if(this.isShowing){if(d){d();}return;
}if(this.cartAnimationInProgress===true){return;}this.cartAnimationInProgress=true;
this.placeCart();var c=this;console.debug("show:node: "+this.domNode);console.debug("show:duration: "+this.duration.wipe);
var b=dojo.fx.wipeIn({node:this.domNode,duration:this.duration.wipe,onEnd:function(){c.isShowing=true;
c.cartAnimationInProgress=false;if(dojo.isIE){if(dojo.isIE<6){if(!c.bgIframe){c.bgIframe=new dijit.BackgroundIframe();
c.bgIframe.setZIndex(c.domNode);}c.bgIframe.size(c.domNode);c.bgIframe.show();}}if(d&&dojo.isFunction(d)){d();
}}});console.debug("after wipe animation");var a=dojo.fadeIn({node:this.domNode,properties:{opacity:{start:0.3,end:0.1}},duration:this.duration.wipe});
dojo.fx.combine([b,a]).play();this.triggerWidget.updateTriggerDisplay();},hide:function(d){if(this.cartAnimationInProgress===true){return;
}this.cartAnimationInProgress=true;var c=this;console.debug("hide:node: "+this.domNode);
console.debug("hide:duration: "+this.duration.wipe);var b=dojo.fx.wipeOut({node:this.domNode,duration:this.duration.wipe,onEnd:function(){c.isShowing=false;
c.cartAnimationInProgress=false;c.triggerWidget.updateTriggerDisplay();if(c.bgIframe){c.bgIframe.hide();
c.bgIframe.size({left:0,top:0,width:0,height:0});}if(d&&dojo.isFunction(d)){d();}}});
var a=dojo.fadeOut({node:this.domNode,properties:{opacity:{start:1,end:0.8}},duration:this.duration.wipe});
dojo.fx.combine([b,a]).play();this.clearAutoHide();},getChangedItemWidgets:function(){var changedItems=[];
var item;var children=this.getChildren();for(var i=0;i<this.data.items.length;i++){item=this.data.items[i];
if(item.modified===true){changedItems[changedItems.length]=children[i];if(item.currency!=undefined&&item.shop5JsFunctionParams!=undefined){cmSetCurrencyCode(item.currency.code);
cmCreateShopAction5Tag(item.shop5JsFunctionParams.catalogNumber,item.shop5JsFunctionParams.productName,item.shop5JsFunctionParams.productQuantity,item.shop5JsFunctionParams.productPrice,item.shop5JsFunctionParams.categoryID,item.shop5JsFunctionParams.attributes);
eval(item.coremetricsTrigger.jsFunction);}}}return changedItems;},startAutoHide:function(){if(this.autoHideTimer!==null){this.clearAutoHide();
}console.debug("Starting auto-hide (in "+this.duration.autoHide+" ms)");var a=this;
this.autoHideTimer=setTimeout(dojo.hitch(a,"hide"),this.duration.autoHide);dojo.connect(this.domNode,"onmouseover",this,"clearAutoHide");
},clearAutoHide:function(){console.debug("Clearing auto-hide");clearTimeout(this.autoHideTimer);
dojo.disconnect(this.domNode,"onmouseover",this,"clearAutoHide");this.autoHideTimer=null;
},handleResponse:function(d,c){console.debug("RichCart:handleResponse");console.debug("RichCart:handleResponse:node "+c);
console.debug("RichCart:handleResponse:data "+d);if(!d){this.handleError();return;
}if(d.error){console.debug("Received error from server - resubmitting form");fireBasketAddFailed(d.error);
this.resubmitForm(c);return;}this.setAllCartData(d);fireBasketAdd();var b=this.isShowing;
var a=this.getChangedItemWidgets();var e=this;this.show(function(){if(a.length>0){a[0].scrollIntoView();
}for(var f=0;f<a.length;f++){a[f].highlight();}e.enableNode(c);});if(!b||this.autoHideTimer!==null){this.startAutoHide();
}},resetPicker:function(){dojo.query(".atg_store_quantity input[type='text']").forEach(function(a){console.debug("Resetting quantity field: ",a);
a.value="0";});},hijackAllAddToCartNodes:function(){console.debug("Connecting RichCart to all elements with class ["+this.hijackClassName+"]");
var a=this;console.debug("class name: "+this.hijackClassName);dojo.query("*."+this.hijackClassName).forEach(function(b){a.hijackNode(b);
});},hijackNode:function(b){console.debug("Hijacking node");console.debug(b);if(b.isHijacked){console.debug("Node is already hijacked - ignoring");
return;}b.isHijacked=true;var c=this;var a={headers:{Accept:"application/json"},handleAs:"json",load:function(e,d){c.handleResponse(e,b);
},error:function(e,d){c.handleError(e,d);},timeout:function(e,d){c.handleError(e,d);
}};if(b.nodeName=="INPUT"){dojo.connect(b,"onclick",function(d){d.cancelBubble=true;
d.preventDefault();var h=c.getParentNode(b,"form");console.debug("formNode: "+h);
var g={};g[b.name]=b.value;console.debug("Add to Cart form clicked - submitting form");
var e=dojo.query("#atg_store_formValidationError").concat(dojo.query(".atg_store_productDisplay_errorMsg"));
if(e){console.debug("Hide error elements");for(var f=0;e.length>f;f++){e[f].style.display="none";
}}dojo._mixin(a,{form:h,content:g});c.disableNode(b);dojo.xhrPost(a);return false;
});}else{if(b.nodeName=="A"){dojo.connect(b,"onclick",function(d){console.debug("Add to Cart link clicked");
d.preventDefault();if(b.currentlyAdding&&b.currentlyAdding===true){console.debug("This link has already been clicked - ignoring");
return;}dojo._mixin(a,{url:b.href});c.disableNode(b);dojo.xhrGet(a);});}else{console.debug("Node is not a form submit or an anchor - ignoring");
}}},attachToContainer:function(){console.debug("Appending cart domNode to "+this.domNode);
document.body.appendChild(this.domNode);},handleError:function(b,a){console.debug("RichCartSummary:handleError");
document.location=this.url.error;},disableNode:function(b){if(b.nodeName=="INPUT"){b.originalProps={};
b.originalProps.width=b.style.width;b.originalProps.height=b.style.height;b.style.width=dojo._getBorderBox(b).w+"px";
b.originalProps.value=b.value;b.disabled=true;b.value=this.i18n.addingToCart;}else{if(b.nodeName=="A"){if(navigator.userAgent.indexOf("MSIE")!=-1){var a=b.childNodes[0];
}else{var a=b.childNodes[1];}b.originalProps={};b.originalProps.width=a.style.width;
b.originalProps.height=a.style.height;basepadding=dojo.style(a,"paddingLeft");basewidth=a.offsetWidth-basepadding;
a.style.width=basewidth+"px";b.originalProps.innerHTML=a.innerHTML;b.currentlyAdding=true;
a.innerHTML=this.i18n.addingToCart;}}},enableNode:function(b){if(b.nodeName=="INPUT"){b.disabled=false;
b.value=b.originalProps.value;b.style.width=b.originalProps.width;b.style.height=b.originalProps.height;
b.originalProps=null;}else{if(b.nodeName=="A"){if(navigator.userAgent.indexOf("MSIE")!=-1){var a=b.childNodes[0];
}else{var a=b.childNodes[1];}b.currentlyAdding=false;a.innerHTML=b.originalProps.innerHTML;
a.style.width=b.originalProps.width;a.style.height=b.originalProps.height;b.originalProps=null;
}}},resubmitForm:function(a){console.debug("RichCartSummary:resubmit from");var c=document.createElement("input");
c.type="hidden";c.name=a.name;c.value=a.value;var b=this.getParentNode(a,"FORM");
b.appendChild(c);b.submit();},getParentNode:function(d,c){var a=dojo.doc;var b=dojo.byId(d);
c=c.toLowerCase();while((b)&&(b.nodeName.toLowerCase()!=c)){if(b==(a.body||a.documentElement)){return null;
}b=b.parentNode;}return b;}});
