/* Shows the add to basket container in the specified position */
function showAddToBasketContainer(relativeElement, extraLeft, extraTop) {
    var offsetArray = relativeElement.cumulativeOffset();
    var addToBasketContainer = $('addToBasketContainer');
    var left = (offsetArray[0] + relativeElement.getWidth()) - addToBasketContainer.getWidth() - 2 + extraLeft;
    var top = (offsetArray[1] + relativeElement.getHeight()) - addToBasketContainer.getHeight() - 2 + extraTop;
    addToBasketContainer.style.left = left + "px";
    addToBasketContainer.style.top = top + "px";
    $('addToBasketLinks').hide();
    $('addToBasketMessage').innerHTML = 'Please wait whilst we update your basket...'
    $('loadingImage').show();
    Effect.Appear(addToBasketContainer);
}

/* Called once item added to basket using AJAX. Gives option to continue shopping or go to checkout */
function addToBasketSuccessful(data, quantity) {
    $('loadingImage').hide();
    if (data.errorMessage != null) {
        // A stock occurred adding the item
        $('addToBasketMessage').innerHTML = (data.errorMessage + '<br /><br /><a href="javascript:continueShopping()">Click here to continue shopping</a>');
    } else {
        // Item added
        $('addToBasketMessage').innerHTML = ('<strong>' + quantity + ' x ' + data.itemDescription + '</strong><br />has been added to your basket. What would you like to do now?');
        $('addToBasketLinks').show();
        $('shoppingBasketContainer').innerHTML = data.shoppingBasketHtml;
        // Number of basket items is not always shown so check before trying to update the number
        var basketItems = $('numberOfBasketItems');
        if (basketItems != null) {
            basketItems.innerHTML = data.numberOfBasketItems;
        }
    }
}

/* Shrinks the container indicating the user successfully added an item to their basket */
function shrinkSuccessContainer() {
    var shoppingBasket = $('shoppingBasket');
    var offsetArray = shoppingBasket.cumulativeOffset();
    var x = offsetArray[0] + (shoppingBasket.getWidth()/2);
    var y = offsetArray[1] + (shoppingBasket.getHeight()/2);
    var addToBasketSuccessfulContainer = $('addToBasketContainer');
    new Effect.Shrink(addToBasketSuccessfulContainer);
    new Effect.Move(addToBasketSuccessfulContainer,{ x: x, y: y, mode: 'absolute',  afterFinish: pulsateBasket});
}

/* Pulsate shopping basket to show it has been updated */
function pulsateBasket(obj) {
    new Effect.Pulsate($('shoppingBasket'),{from:0.5, duration:1,pulses:3});
}
