
YAHOO.namespace("USANA.cartWidget");
YAHOO.util.Event.onDOMReady(function(){
    try{


    YAHOO.USANA.cartWidget = new YAHOO.widget.SimpleDialog("cartWidget", {
        width:"500px",
        visible:false,
        draggable:false,
        close:true,
        effect:{
            effect:YAHOO.widget.ContainerEffect.FADE,
            duration:0.15
        },
        constraintoviewport:true,
        context:["ChangeMarketBtn", "tr", "br"] }
    );

    YAHOO.USANA.cartWidget.setHeader(YAHOO.USANA.translations.cartWidget.TITLE);
    YAHOO.USANA.cartWidget.setBody("");
    YAHOO.USANA.cartWidget.setFooter("");
    var handleCheckOut = function() {
     //user confirms the deletion of this item;
     //this method would perform that deletion;
     //when ready, hide the SimpleDialog:
     this.hide();
    }
    var handleClear = function() {
     //user cancels item deletion; this method
     //would handle the cancellation of the
     //process.
     //when ready, hide the SimpleDialog:
     this.hide();
    }
    var myButtons = [ { text:"Checkout",
                        handler:handleCheckOut },
                      { text:"Clear Cart",
                          handler:handleClear,
                        isDefault:true } ];
    YAHOO.USANA.cartWidget.cfg.queueProperty("buttons", myButtons);
    YAHOO.USANA.cartWidget.render("cartContainer");
    YAHOO.USANA.cartWidget.showCart = function(){
        //YAHOO.USANA.cartWidget.show();
        //YAHOO.USANA.container.markPop.hide();
        var cartW = Dom.get("cartWidget");
        var handleSuccess = function(o) {
            if (o.responseText != undefined) {
                var oData;
                try {
                    oData = YAHOO.lang.JSON.parse(o.responseText);
                } catch(e) {
//                    alert(e);
                    oData = undefined;
                    cartW.innerHTML = o.responseText;
                }
                var showCheckOut=false;
                var cartBody ="";
                var cartFoot ="";
                if (oData != undefined && oData.Response != undefined && oData.Response != 'ERROR') {
                    var items = oData.Response.Items,i;
                    if (items.length > 0) {
                        cartBody += "<form name=\"cartWidget\" id=\"cartForm\"><table class=\"cart_tbl\"><tr>";
//                        cartBody += "<th>"+YAHOO.USANA.translations.cartWidget.TABLE_ID+"</th>";
                        cartBody += "<th colspan=\"2\">"+YAHOO.USANA.translations.cartWidget.TABLE_NAME+"</th>";
                        cartBody += "<th>"+YAHOO.USANA.translations.cartWidget.TABLE_PRICE+"</th>";
                        if(oData.Response.ShowVolume!="false"){
                            cartBody += "<th>"+YAHOO.USANA.translations.cartWidget.TABLE_VOL+"</th>";
                        }
                        cartBody += "<th>"+YAHOO.USANA.translations.cartWidget.TABLE_QTY+"</th><th></th>";
                        cartBody += "</tr>";
                        for (i = 0; i < items.length; i++) {
                            cartBody += "<tr>";
                            cartBody += "<td><img align=\"left\" class=\"prod_img\" src=\""+items[i].image+"\" /></td><td> "+items[i].item_id_short+" - ";
                            cartBody += items[i].name+"</td>";
                            cartBody += "<td>"+items[i].price+"</td>";
                            if(oData.Response.ShowVolume!="false"){
                                cartBody += "<td>"+items[i].volume+"</td>";
                            }
                            cartBody += "<td>";
                            if(items[i].reward_status == 'false'){
                                cartBody += "<input type=\"hidden\" name=\"itemId\" value=\""+items[i].item_id+"\"/>";
                                cartBody += "<input type=\"text\" value=\""+items[i].quantity+"\" name=\"quantity\" size=1 />";
                                cartBody += "</td>";
                                cartBody += "<td><a onclick=\"YAHOO.USANA.cartWidget.removeItemFromCart('"+items[i].item_id+"');\"><img src=\"/shop/jsp/onlineServices/admin/images/delete_16.gif\"></a></td></tr>";
                            }else{
                                cartBody += items[i].quantity;
                                cartBody += "</td>";
                                cartBody += "<td></td></tr>";
                            }
                        }
                        cartBody+="<tr  class=\"totals\"><td colspan=2 align=right>"+YAHOO.USANA.translations.cartWidget.SUBTOTAL+"&nbsp;&nbsp;</td><td>"+oData.Response.SubTotal+"</td>";
                        if(oData.Response.ShowVolume!="false"){
                            cartBody+="<td>"+oData.Response.Volume+"</td>";
                        }
                        cartBody += "<td colspan=2>&nbsp;</td>";
                        cartBody += "</table></form>";
                        showCheckOut=true;
                    }else{
                        cartBody+=YAHOO.USANA.translations.cartWidget.EMPTY;
                    }
                    if(showCheckOut){
                        cartFoot+="<div class=\"outieGray btn_cart_outie\" >";
                        cartFoot+="<a href=\""+CHECKOUT_LINK+"\">";
                        cartFoot+="<div class=\"innieGray btn_cart_innie orange\"><span class=\"btn_cart_txt cart_icon\">"+CHECKOUT_TXT
                                +"</span></div></a></div>";
                        cartFoot+="<div class=\"outieGray btn_cart_outie\" >";
                        cartFoot+="<a onclick=\"YAHOO.USANA.cartWidget.updateItemsFromCart();\">";
                        cartFoot+="<div class=\"innieGray btn_cart_innie\"><span class=\"btn_cart_txt\">"+
                                  YAHOO.USANA.translations.cartWidget.UPDATE
                                +"</span></div></a></div>";
                    }

                }else{
                    window.location = '/shop/jsp/onlineServices/shop/sessiontimeout.jsp';
                }
                YAHOO.USANA.cartWidget.setBody(cartBody);
                YAHOO.USANA.cartWidget.setFooter(cartFoot);
                YAHOO.USANA.cartWidget.removeItemFromCart = function(id){
                    var cartForm = document.getElementById("cartForm");
                    var lineItemsId = cartForm.itemId;
                    var lineItemsQty = cartForm.quantity;
                    if(lineItemsId[0]!=undefined && lineItemsQty[0]!=undefined){
                        for(i=0;i<lineItemsId.length;i++){
                            if(lineItemsId[i].value == id){
                                lineItemsQty[i].value = '0';
                            }
                        }
                    }else{
                        lineItemsQty.value = '0';
                    }
                    YAHOO.USANA.cartWidget.updateItemsFromCart();
                }
                YAHOO.USANA.cartWidget.updateItemsFromCart = function(){
                    var cartForm = document.getElementById("cartForm");
                    var lineItemsId = cartForm.itemId;
                    var lineItemsQty = cartForm.quantity;
                    if(lineItemsId[0]!=undefined && lineItemsQty[0]!=undefined){
                        var string ="";
                        for(i=0;i<lineItemsId.length;i++){
                            string +="id: "+lineItemsId[i].value+" qty: "+lineItemsQty[i].value+"\n";
                        }
                        //alert(string);
                    }else{
                        var string ="";
                        string +="id: "+lineItemsId.value+" qty: "+lineItemsQty.value+"\n";
                        //alert(string);
                    }
                    var updateSuccess = function(o){
                        if(o.responseText == 'success'){
                            YAHOO.USANA.cartWidget.showCart();
                            updateCart();
                        }else{
                            YAHOO.USANA.cartWidget.setBody(o.responseText);
                            YAHOO.USANA.cartWidget.setFooter('');
                        }
                    }
                    var updateFailure = function(o){
                        YAHOO.USANA.cartWidget.setBody("Sorry you experienced an unexpected error.");
                    }
                    var callback =
                    {
                        success:updateSuccess,
                        failure: updateFailure,
                        argument: { foo:"foo", bar:"bar" }
                    };
                    var date = new Date().getTime();
                    YAHOO.util.Connect.setForm(cartForm);

                    var url2 = CONTEXT_PATH+"/jsp/onlineServices/shop/control/ShopController.jsp?controlAction=ajaxUpdateCart&ts="+date;
                    var request = YAHOO.util.Connect.asyncRequest('POST', url2, callback);
                    YAHOO.USANA.cartWidget.setBody("<div class='loading'><img src=\"/shop/jsp/shop/images/loading.gif\" /></div>");
                    setTimeout(function() { YAHOO.util.Connect.abort(request,callback) },10000); 
                }
                YAHOO.USANA.cartWidget.show();

            }
        }

        var handleFailure = function(o) {
            YAHOO.USANA.cartWidget.setBody("Sorry you experienced an unexpected error.");
            YAHOO.USANA.cartWidget.show();
        }

        var callback =
        {
            success:handleSuccess,
            failure: handleFailure,
            argument: { foo:"foo", bar:"bar" }
        };
        var date = new Date().getTime();
        var url = CONTEXT_PATH+"/jsp/onlineServices/shop/CartAjax.jsp?ts="+date;
        var request = YAHOO.util.Connect.asyncRequest('get', url, callback);
    }

    var didItwork = YAHOO.util.Event.addListener("hCartLink", "click", YAHOO.USANA.cartWidget.showCart, YAHOO.USANA.cartWidget, true);

    }catch(e){
        alert(e);
    }
});
 function updateCart(){
    YAHOO.USANA.cartWidget.showCart()
 }
