function addToCart(itemId)
{
    var qty     = 1;
    var qtyForm = $('qty_'+itemId);
    if (qtyForm) qty = parseInt(qtyForm.value, 10);
    if (qty < 1) qty = 1;
    
    var content = $('add_' + itemId).innerHTML;
    $('add_' + itemId).innerHTML = content.replace(/cart(.*).gif/, 'cart_loading.gif');
    $('add_' + itemId).onclick = function() { return false; };
    $('add_' + itemId).setStyle({'cursor': 'default'});
//    $('cart').innerHTML = 'Loading...';
    new Ajax.Request('http://' + document.domain + '/cart/add/' + itemId + '/qty/' + qty,
        {
            method:    'get',
            onSuccess: function(transport) {
                updateCart(transport);
                $('add_' + itemId).innerHTML = content.replace('cart.gif', 'cart_full.gif');
                $('add_' + itemId).onclick = function() { addToCart(itemId); return false; };
                $('add_' + itemId).setStyle({'cursor': 'pointer'});
                if (qtyForm) qtyForm.value = 1;
//                $('divCartContent').style.display = 'block';
//                $('cart-title').innerHTML = 'Корзина [&ndash;]';
            },
            onFailure: function() {
//                $('cart').innerHTML = 'Something went wrong...';
                $('add_' + itemId).innerHTML = content;
                $('add_' + itemId).onclick = function() { addToCart(itemId); return false; };
                $('add_' + itemId).setStyle({'cursor': 'pointer'});
                if (qtyForm) qtyForm.value = 1;
            }
        }
    );
}

function delFromCart(itemId)
{
    var content = $('add_' + itemId);
    new Ajax.Request('http://' + document.domain + '/cart/del/' + itemId,
        {
            method:    'get',
            onSuccess: function(transport) { 
                updateCart(transport); 
                if (content) $('add_' + itemId).innerHTML = content.innerHTML.replace('cart_full.gif', 'cart.gif');
//                $('divCartContent').style.display = 'block';
//                $('cart-title').innerHTML = 'Корзина [&ndash;]';
            },
            onFailure: function() { 
                alert('Something went wrong...');
//                $('in_cart_' + itemId).innerHTML = '';
            }
        }
    );
}

function clearCart()
{
    new Ajax.Request('http://' + document.domain + '/cart/clear',
        {
            method:    'get',
            onSuccess: function(transport) { 
                updateCart(transport);
                var tags = document.getElementsByTagName('*');
                for (var i = 0; i < tags.length; i++) {
                    if (tags[i].id.match(/^add_/)) {
                        var content = tags[i].innerHTML;
                        tags[i].innerHTML = content.replace('cart_full.gif', 'cart.gif');
                    }
                }
            },
            onFailure: function() { 
//                alert('Something went wrong...');
//                $('in_cart_' + itemId).innerHTML = '';
            }
        }
    );
}

function updateCart(transport)
{
    $('cart').innerHTML = transport.responseText;
}

function toggleCart()
{
    var content = $('divCartContent');
    if (!content) return;
    var display = content.style.display;
    if (!display || display == 'block') {
        content.style.display = 'none';
        $('cart-title').innerHTML = 'Корзина [+]';
    } else {
        content.style.display = 'block'
        $('cart-title').innerHTML = 'Корзина [&ndash;]';
    }
}

function changeDelivery(sel)
{
    var val  = sel.options[sel.selectedIndex].value;
    switch (val) {
        case 'self':
            $('row-district').hide();
            $('row-cargo').hide();
            break;
        case 'kiev':
            $('row-district').show();
            $('row-cargo').hide();
            break;
        case 'ukraine':
            $('row-district').hide();
            $('row-cargo').show();
            break;
        default:
            $('row-district').hide();
            $('row-cargo').hide();
    }
}

function checkOrder()
{
    var dt = $('delivery_type');
    if (dt.selectedIndex == 0) {
        alert('Выберите доставку!');
        return false;
    } else if (dt.options[dt.selectedIndex].value == 'ukraine') {
        if ($('cargo_id').selectedIndex == 0) {
            alert('Выберите перевозчика!');
            return false;
        }
    }
    return true;
}

function saveCartPosition()
{
    cookieSet('cartX', $('cart').style.left, 365);
    cookieSet('cartY', $('cart').style.top,  365);
}

function loadCartPosition()
{
    $('cart').style.left = cookieGet('cartX');
    $('cart').style.top  = cookieGet('cartY');
    checkCartPosition();
}

function checkCartPosition()
{
    var vpDims      = document.viewport.getDimensions();
    var cartDims    = $('cart').getDimensions();
    var cartCoords  = $('cart').viewportOffset();
    if (cartCoords.left > vpDims.width - cartDims.width) {
        $('cart').style.left = (vpDims.width - cartDims.width) + "px";
    }
    if (cartCoords.top > vpDims.height - cartDims.height) {
        $('cart').style.top = (vpDims.height - cartDims.height) + "px";
    }
    if (cartCoords.left < 0) $('cart').style.left = "0px";
    if (cartCoords.top  < 0) $('cart').style.top  = "0px";
}

Event.observe(window, "resize", function() {
    checkCartPosition();
    saveCartPosition();
});

Event.observe(window, "load", function() {
    new Draggable("cart", { onEnd: saveCartPosition, change: checkCartPosition });
});
