wishlist = {
    panel :  null,
    p : {
        item_id : null,
        qty : null,
        size : null,
        color : null
    },
    postData : null,
 
    add : function(sku_selection) {
        var oThis = wishlist;
        
        oThis.p.item_id = sku_selection.item_id;
        oThis.p.qty     = sku_selection.qty;
        oThis.p.size    = sku_selection.size_id || sku_selection.defaults.size;
        oThis.p.color   = sku_selection.color_id;
        
        oThis.makeRequest("add");
        return false; /* Don't follow link */
    },
    addWithConnection : function(sku_selection){
        var oThis = wishlist;
        
        oThis.p.item_id = sku_selection.item_id;
        oThis.p.qty     = sku_selection.qty;
        oThis.p.size    = sku_selection.size_id;
        oThis.p.color   = sku_selection.color_id;
        
        return oThis.makeRequest("add");
    }, 
    
    rm : function(id){
        var oThis = wishlist;
        oThis.p.item_id = typeof id == "undefined" ? document.getElementById("item_hidden_0").value : id;

        oThis.makeRequest("remove");
        return false; /* Don't follow link */
    },
    
    makeRequest : function(action){
        var oThis = wishlist;

        oThis.preparePostData();
        return YAHOO.util.Connect.asyncRequest('POST', "/wishlist/"+action, oThis.callback, oThis.postData);
    },
    
    preparePostData :  function(){
        var oThis = wishlist;
        oThis.postData = '';
        for(var i in oThis.p){
            oThis.postData += "&"+i.substr(0,1)+"="+oThis.p[i];
        }
        oThis.postData += '&ajax=true';
    },

    callback : {
        success : function(o){
            var oThis = wishlist;
            if (o.responseText == undefined) return false;
            if (typeof wait != 'undefined'){ wait.hide(); }
            responses = o.responseText.split('<br />');
            oThis.prepareHeader(responses[0]);
            if(responses.length == 3)
                oThis.lnkFavorites(responses[2]);
            else
                oThis.lnkFavorites(responses[2],responses[3]);
        },
        failure : function(o){
            if (o.responseText == undefined) return false;
            wishlist.prepareHeader("There was an error with your bag.");
        }
     },

    prepareHeader : function(text){
        old_text = document.getElementById("header_wishlist_last_item").innerHTML;
        if (text == '' && old_text == '') {
            window.location = '/wishlist';
            return;
        }
        if (text != '') {
            var box = document.getElementById("header_wishlist_last_item");
            //alert(text); 
            box.innerHTML = text;
        }
        
        wishlist.openList();
    },
    
    openList : function(){
        if(typeof cart != 'undefined'){
            cart.hide();
        }
        wishlist.panel = 
                new YAHOO.widget.Panel(
                    'header_wishlist_last_item',  
                    {
                      width:'250px',
                      context: [ document.getElementById("top_cart_count") , 'tr', 'br'],
                      iframe:true,
                      close:false, 
                      zindex:300,
                      modal:false,
                      constraintoviewport: false,
                      scope:this
                    }
                );
        
        wishlist.panel.render(document.body);
        wishlist.panel.show();
        setTimeout('window.scrollTo(0, 0)',1);
        setTimeout("wishlist.panel.hide();wishlist.panel.setBody('');",5000);
    },
    
    closeList : function(){
        wishlist.panel.hide();
    },
    
    lnkFavorites : function(){
        var icon = document.getElementById('rowFavoritesLnk_icon');
        var text = document.getElementById('rowFavoritesLnk');
        if(!text)
            return;
        
        if(arguments.length > 1){
            icon.innerHTML = arguments[0];
            text.innerHTML = arguments[1];
        }
        else{
            icon.innerHTML = "";
            text.innerHTML = arguments[0];
        }
    }
};
