/*
 *  adds the item in position specified by "id" to the cart
 * @param id  - the position of the item to be added to the cart
 */
function addtobag_makeRequest(id, display_overlay) {
    var item = document.getElementById("item_hidden"+id).value;
    var qty = document.getElementById("qty_select"+id).value;
    var size = document.getElementById("size_select"+id).value;
    var color = color_id_value[id];

    if (!size) {
        return alert("Please select a size");
    }

    var sUrl = "/cart/ajaxadd";
    var postData = "i=" + item + "&c=" + color + "&s=" + size + "&q=" + qty;
    var callback = {
        success: function(o) {
            if (o.responseText == undefined)
                return;
            if (typeof quickViewPanel != 'undefined' && global_color_id[2] == undefined) {
                quickViewPanel.setBody('');
                quickViewPanel.hide();
            };

            if (display_overlay) {
                if (o.responseText.match(/item_restriction/i)) 
                {
                    restrictions = new YAHOO.widget.Panel("restrictions", {
                        width:"429px",
                        height: "205px",
                        fixedcenter: true, 
                        constraintoviewport: true, 
                        underlay:"shadow", 
                        close:false, 
                        visible:false, 
                        draggable:false,
                        zIndex: 100
                    });
                    
                    var response = o.responseText.split('<SPLIT>');
                    restrictions.setBody(response[0]);
                    restrictions.render(document.body);
                    restrictions.show();
                    
                    YAHOO.util.Dom.get("cart_navigation").innerHTML = response[1];
                } 
                else 
                {
                    open_header_cart(o.responseText, id);
                    var bag_info = o.responseText.match(/<span style="display: none">(.*)<\/span>/i);
                    var availableQty = o.responseText.match(/<span style="display: none;">(.*)<\/span>/i);
                    if(bag_info)
                        YAHOO.util.Dom.get("cart_navigation").innerHTML = bag_info[1];
                    YAHOO.util.Dom.setStyle(YAHOO.util.Dom.get("view_bag"), "display", "");
                    color_size[id][color_id_value[id]][size]['quantity'] = availableQty[1];
                    selectSize(size, id);                    
                }
            }else
                location.reload(true);
        },
        failure: function(o) {
            if (o.responseText == undefined) return;
                open_header_cart("There was an error while adding the item to your bag.", id);
        }
    };
    YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
}

var header_cart_timout;

/*
 *  @param text - te response gotten from the server
 *  @param id  - [1-5] specifies over which "add to cart" button display the message box
 */
function open_header_cart(text,id)
{
    old_text = document.getElementById("header_cart_last_item").innerHTML;
    if (text == '' && old_text == '') {
        window.location = '/cart';
        return;
    }

    ohc1(id);

    if (text != '' && text != "There was an error while adding the item to your bag.") {
        document.getElementById("header_cart_last_item").innerHTML = text;
        var regex = / \d+ item\(s\)/;
        var match = regex.exec(text);
        if(match)
            document.getElementById("header_cart_status").innerHTML = match[0];

        clearTimeout(header_cart_timout);
        header_cart_timout = setTimeout("close_header_cart()", 5000);
    }

    animate_header_cart(1);

    return false;   // don't follow link
}

function close_header_cart()
{
    animate_header_cart(-1);
}
function animate_header_element(id, rate, max)
{
    e = document.getElementById(id);

    // skip the animation for browsers that don't support max-height
    if (typeof(e.style.maxHeight) == "undefined") {
        if (rate > 0) {
            e.style.display = "block";
        } else {
            e.style.display = "none";
        }
        return false;
    }

    h = parseInt(e.style.maxHeight) + rate;
    if (h > max) h = max;
    if (h < 0) h = 0;
    e.style.maxHeight = h + 'px';

    if (h > 0) {
        e.style.display = "block";
    } else {
        e.style.display = "none";
    }

    return (rate > 0 && h < max) || (rate < 0 && h > 0);
}

var header_cart_timer;

function animate_header_cart(dir)
{
    if (header_cart_timer) clearTimeout(header_cart_timer);

    if (dir > 0) {
        if (animate_header_element("header_cart_open", dir*50, 200)) {}
        else return;
    } else {
        if (animate_header_element("header_cart_open", dir*50, 200)) {}
        else {
            clearTimeout(header_cart_timout);
            ohc2();
            return;
        }
    }

    header_cart_timer = setTimeout("animate_header_cart("+dir+")", 100);
}



/*
 *  Substitute a fake header_cart.
 */

var x1_overlay = null;

function ohc1(id) {
    if (x1_overlay) return;

    x1_overlay = new YAHOO.widget.Panel("header_cart_x1", {
        visible: true,
        zIndex: 500,
        close: false,
        width: '274px',
        underlay: 'none',
        draggable: false,
        context:['cart_navigation','br','br']
    });

    var x2 = document.getElementById("header_cart_x2")
    x1_overlay.setBody(x2.innerHTML);
    x2.innerHTML = '';
    x1_overlay.render(document.body);

    var topOffset = 50;
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
        topOffset += document.body.scrollTop || document.documentElement.scrollTop;
    }
    else{
        if(pageYOffset) topOffset += pageYOffset;
    }
    var box = YAHOO.util.Dom.get("header_cart_x1_c");
    YAHOO.util.Dom.setStyle(box, "top", topOffset+"px");
}

function ohc2() {
    var x2 = document.getElementById("header_cart_x2");
    var x1 = document.getElementById("header_cart_x1");

    x2.innerHTML = x1.innerHTML;
    x1_overlay.destroy();
    x1_overlay = null;
}
