var serviceurl = "/services/ecom-product-info.aspx";
var minicarttimer;

function CartId() {
    return getCookieValue("%5Facucartid");
}

function UserId() {
    return getCookieValue("%5Fuserid");
}

function CountryId() {
    return getCookieValue("countryid");
}

function acceptterms(thecontrol) {
    var divAccept, divCheckout;

    divAccept = document.getElementById('iacceptdiv');
    divCheckout = document.getElementById('checkout');
    if (thecontrol.checked) {
        hideObject(divAccept, 'display');
        showObject(divCheckout, 'display');
    } else {
        hideObject(divCheckout, 'display');
        showObject(divAccept, 'display');
    }
}

function applyOffer() {
    document.getElementById('shopcartaction').value = 'applyoffer';
    document.forms['shopcart'].submit();
}

function AddItemToCart(productid, categoryid) {
    var quantity = $('qty_' + productid).value;
    new Ajax.Request(serviceurl, {
        parameters: {
            action: "addtocart",
            cid: CartId(),
            uid: UserId(),
            coid: CountryId(),
            pid: productid,
            qty: quantity,
            catid: categoryid
        },
        onSuccess: function(transport) {
            var json = transport.responseText.evalJSON();
            if (json.cartitem)
                ShowMiniCart(json);
            else 
                HandleError(json);
        }
    });
}

function RemoveItemFromCart(rowid, anchor, productid) {
    $(anchor).setAttribute("onclick", "return false;");
    new Ajax.Request(serviceurl, {
        parameters: {
            action: "removeitem",
            cid: CartId(),
            pid: productid
        },
        onSuccess: function(transport) {
            var json = transport.responseText.evalJSON();
            if (json.success) {
                RemoveCartRow(rowid);
                UpdateCart(json);
            } else {
                HandleError(json);
            }
        }
    });
}

function UpdateCart(json) {
    //site_cur_symbol
    var cartdata = json.cartdata[0];
    var estimate = json.estimate[0];
    UpdateCartHeader(cartdata.cartcount);
    $('order_subtotal').update(site_cur_symbol + cartdata.subtotal);
    if (estimate.message)
        $('estimated_shipping').update(estimate.message);
    else
        $('estimated_shipping').update(site_cur_symbol + estimate.rate);
}

function RemoveCartRow(rowid) {
    $('cartrow_' + rowid).remove();
    $('rowspacer_' + rowid).remove();
}

function HandleError(json) {
    //alert(json.error);
    var errors = $('cart_errors');
    if (errors && json.errors)
        errors.insert({ bottom: json.error });
    else if (errors)
        errors.insert({ bottom: "unhandled error" });
}

function UpdateCartHeader(cartcount) {
    $('cartcount_header').update(cartcount);
    if (cartcount == 1)
        $('items_text').update("&nbsp;item");
    else
        $('items_text').update("&nbsp;items");
    setCookieValue('cartcount', cartcount, 1);
}

function ShowMiniCart(json) {
    window.clearTimeout(minicarttimer);
    $('mini_cart').hide(); //needed this here for IE7 bug

    SetPosition();
    
    var ci = json.cartitem[0];
    var cartcount = ci.cartcount;

    UpdateCartHeader(cartcount);
    
    if (ci.img_url) {
        var img = document.createElement('img');
        img.setAttribute('src', '/image.aspx' + unescape(ci.img_url) + '-75x75');
        img.setAttribute('alt', ci.name);
        img.setAttribute('border', '0');
        img.setAttribute('id', 'mc_img');
        $('mc_img_wrap').update(img);
        $('mc_img_wrap').show();
    } else {
        $('mc_img_wrap').hide();
    }
    $('mc_sku').update(ci.sku);
    if (ci.notes)
        $('mc_notes').update(unescape(ci.notes));
    else
        $('mc_notes').update('');
    $('mc_qty').update(json.postdata.quantity);
    $('mc_name').update(unescape(ci.name));
    $('mc_qty_total').update(ci.quantity);
    $('mc_price').update(ci.price);
    $('mc_cart_qty_total').update(cartcount);
    $('mc_linetotal').update(ci.linetotal);
    $('mc_subtotal').update(ci.subtotal);

    $('mini_cart').show();
    minicarttimer = window.setTimeout("$('mini_cart').hide()", 8000);
}

function SetPosition() {
    var output = $('testing');
    var br = '<br/>';
    var pageOffset = document.viewport.getScrollOffsets();
    var container = $('page_wrap');
    var pLeft = container.offsetLeft + 554;
    var pTop = container.offsetTop > pageOffset[1] ? container.offsetTop - pageOffset[1] : 0;
    $('mini_cart').setStyle({
        top: pTop + 'px',
        left: pLeft + 'px'
    });
}

Event.observe(window, 'load', function() {
    var minicart = $('mini_cart');
    if (minicart) {
        Event.observe(window, 'scroll', function() {
            if (minicart.visible())
                SetPosition();
        });
    }
});