﻿$(document).ready(
	function () {
		initialiseAddLinks();
		initialiseBasketOverlay();
		initialiseQuantityChangeLinks();
	}
);

function initialiseAddLinks() {
	$('a.product').click(addToBasket);
	//$('a.removeproduct').click(removeFromBasket);
}

function addToBasket() {
	var itemId = $(this).attr('data-id');
	var quantityControl = $('input[data-id="' + itemId + '"]');
	var quantity = 1;
	if (quantityControl.length > 0) {
		quantity = quantityControl.val();
	}
	var url = '/services/basket.ashx';
	var postData = 'action=add&id=' + itemId + '&quantity=' + quantity;
	//alert(url + '?' + postData);
	$.post(url, postData, addCallback, 'json');
	return false;
}

function addCallback(data) {
	populateBasketSummary(data);
}

function removeFromBasket() {
	var itemId = $(this).attr('data-id');
	var url = '/services/basket.ashx';
	var postData = 'action=delete&id=' + itemId;
	var targetItem = $(this);
	//alert(url + '?' + postData);
	$.post(url, postData, function(data){removeCallBack(data, targetItem);}, 'json');
	return false;
}

function removeCallBack(data, targetItem) {
	targetItem.parents('div.line-item').remove();
	populateBasketSummary(data);
}

function populateBasketSummary(data) {
	$('div.basket span.basket-count').html(data.Basket.ItemCount);
	var price = parseFloat(data.Basket.SubTotal);
	$('div.basket span.basket-subtotal').html(price.toFixed(2));
	showBasketOverlay();
}

var basketOverlayTimeout;

function showBasketOverlay() {
	window.clearTimeout(basketOverlayTimeout);
	scroll(0, 0);
	$('div.basket-overlay').show('fast');
	setBasketHide();
}

function hideBasketOverlay() {
	$('div.basket-overlay').fadeOut('slow');
}

function basketOverlayOver() {
	window.clearTimeout(basketOverlayTimeout);
}

function setBasketHide() {
	basketOverlayTimeout = window.setTimeout(hideBasketOverlay, 3000);
}

function initialiseBasketOverlay() {
	$('div.basket-overlay').hide();
	$('div.basket-overlay a.close').click(function () { hideBasketOverlay(); return false; });
	$('div.basket-overlay').hover(basketOverlayOver, setBasketHide);
}

function initialiseQuantityChangeLinks() {
	$('input.entry-disabled').keydown(function () { return false; })
	$('a.reduce-quantity').click(
		function () {
			var targetInput = $(this).parent().find('input');
			return modifyQuantity(targetInput, -1);
		}
	);
	$('a.add-quantity').click(
		function () {
			var targetInput = $(this).parent().find('input');
			return modifyQuantity(targetInput, 1);
		}
	);
}

function modifyQuantity(targetInput, modifier) {
	var total = parseInt(targetInput.val());
	if (total > 0 && modifier < 0 || modifier > 0) {
		total = total + modifier;
	}
	targetInput.val(total);
	return false;
}
