/**
 * Calculate Order Shipping Trigger Widget
 * This widget provides the 'show calculate shipping' / 'hide calculate shipping' icon/link that is used
 * to display the 'Calculate Shipping' popup.
 */
dojo.provide("atg.b2cblueprint.widget.RichCalculateOrderShippingTrigger");

dojo.widget.defineWidget(
  "atg.b2cblueprint.widget.RichCalculateOrderShippingTrigger",
  dojo.widget.HtmlWidget,
  {
    // Define all global variables for the widget.
    // templatePath: dojo.uri.dojoUri(contextPath+"/javascript/widget/template/richCalculateOrderShippingTrigger.html"),
    templateString: '<a href="javascript:void(0);" class="richCartTrigger" onclick="atg.b2cblueprint.shipping.openCalculateOrderShippingPopup(\'popup\'); return false;" dojoAttachPoint="calculateOrderShippingTriggerLink" title="${this.i18n.calculate}">${this.i18n.calculate}</a>',

    widgetId: "richCalculateOrderShippingTrigger",
    containerNodeId: null,            // DOM ID of the node to create the widget within
    calculateOrderShippingWidget: null,                 // Reference to the rich cart widget
    cartOpenCssClass: "richCartOpen",  // CSS class that is appended to trigger DOM node when cart showing
    /**
     * Initialize the widget
     */
    postCreate: function(){     
      var _this=this;
      dojo.addOnLoad(function(){
        _this.attachToContainer();
      });
    },
    
    /**
     * Toggle the display of the calculate shipping window
     */
    toggleCalculateShipping: function(pEventCodeTracking){
      dojo.debug("Toggling calculate shipping window");
     
      this.calculateOrderShippingWidget.toggleCalculateShipping(pEventCodeTracking);
      this.updateTriggerDisplay();
      atg.b2cblueprint.shipping.initSaturdayDelivery(this.calculateOrderShippingWidget);
    },
    
    /**
     * Set the display state of the trigger widget.
     * Toggle trigger image/text "Show Cart" <--> "Hide Cart"
     */
    updateTriggerDisplay: function(){
      if (this.calculateOrderShippingWidget===null){
         return;
      }
      
      var openOrOpening=(
        (this.calculateOrderShippingWidget.isShowing && !this.calculateOrderShippingWidget.cartAnimationInProgress)||
        (!this.calculateOrderShippingWidget.isShowing && this.calculateOrderShippingWidget.cartAnimationInProgress));

      if (openOrOpening){
        // Cart is open (or opening animation is in progress)
        this.calculateOrderShippingTriggerLink.innerHTML=this.i18n.hideCalculation;
        this.calculateOrderShippingTriggerLink.title=this.i18n.hideCalculation;
        dojo.html.addClass(this.domNode,this.cartOpenCssClass);
      }
      else {
        // Cart is closed (or closing animation is in progress)
        this.calculateOrderShippingTriggerLink.innerHTML=this.i18n.calculate;
        this.calculateOrderShippingTriggerLink.title=this.i18n.calculate;
        dojo.html.removeClass(this.domNode,this.cartOpenCssClass,false);
      }
    },
    
    /**
     * Attach this widget's domNode to its containing node
     */
    attachToContainer: function(){
      dojo.debug("Appending trigger domNode to "+this.containerNodeId);
      
      dojo.byId(this.containerNodeId).appendChild(this.domNode);
     
    }
  }
);

