$(document).ready(function(){
	$('a.addtobasket').click(function(){
		var link = $(this);
		var done = false;
		$('html, body').animate({ scrollTop: 0 }, 'slow', 'swing', function(){
			if (!done) {
				displayBasketNotification(link.attr('href'));
				done = true;
			}
		});
		return false;
	});

	$('div.clickable_bg').click(function(){
		var url = $(this).find('a.bg_link').attr('href');
		if (url !== undefined && url != '') {
			window.location = url;
		}
	}).hover(function(){
		$(this).css('cursor', 'pointer');
	});
});

var addToBasketData = '';
var addToBasketError = false;

function basketNotificationText (id, txt) {
	var d = document.createElement('div');
	d.id = id;
	d.appendChild(document.createTextNode(txt));
	return d;
}

function addToBasketAJAX (product_id, check_stock) {
	if (check_stock == undefined || check_stock == null) {
		var check_stock = 1;
	}
	addToBasketData = '';
	$.ajax({
		url: "/javascript/flytobasket/addProduct.php",
		type: "POST",
		cache: false,
		data: {
			productId: product_id,
			url: product_id,
			check_stock: check_stock
		},
		dataType: "html",
		error: function (req, strStatus, errorThrown) { addToBasketError = true; displayItemError(); },
		success: function (data,strStatus,req) {
			addToBasketData = data;
			displayItemAdded();
		}
	});
}

function displayBasketNotification (url) {
	addToBasketError = false;
	var link = url.split('/');
	var check_part = 1;
	if (link[1] == 'applogic' || link[1] == 'index.php') check_part = 2;
	if (link[check_part] != 'addtobasket' && link[check_part] != 'addtobasketinline') {
		addToBasketError = true;
	} else {
		var product_id = link[check_part + 1];
		if (product_id == '') {
			addToBasketError = true;
		} else {
			addToBasketAJAX(product_id);
		}
	}

	var b = $('#basket');
	var bPos = b.offset();

	var nTop = bPos.top + b.height();
	var nLeft = bPos.left;
	var nWidth = b.width();

	$('div#basket-notification').remove();
	var popup = document.createElement('div');
	popup.id = 'basket-notification';
	popup.style.top = nTop + 'px';
	popup.style.left = nLeft + 'px';
	document.body.appendChild(popup);

	if (addToBasketError) {
		displayItemError(popup);
	} else if (addToBasketData != '') {
		displayItemAdded(popup);
	} else {
		displayItemAdding(popup);
	}

	$('div#basket-notification').hide().slideDown(400);
}

function displayItemError (container) {
	if (container == undefined || container == null) {
		var container = document.getElementById('basket-notification');
	}
	if (container !== undefined && container !== null) {
		container.innerHTML = '';
		container.appendChild(basketNotificationText('basket-notification-adding', 'Error Adding Item'));
		container.appendChild(basketNotificationText('basket-notification-wait', 'Please try again...'));
	}
	setTimeout(hideBasketNotification, 5000);
}

function displayItemAdding (container) {
	container.innerHTML = '';
	container.appendChild(basketNotificationText('basket-notification-adding', 'Adding Item'));
	container.appendChild(basketNotificationText('basket-notification-wait', 'Please Wait...'));
}

function displayItemAdded (container) {
	var bits = addToBasketData.split('|||');

	if (bits[0] == 'alert' && bits[1] == 'out_of_stock') {
		var d = $('<div></div>')
			.html('This item is currently out of stock until ' + bits[2] + ', and will only be delivered once stock arrives into our warehouse. If you wish to continue and pre-order the item, please click continue, alternatively, click cancel and select another item')
			.dialog({
				draggable: false,
				modal: true,
				resizable: false,
				title: 'Item out of stock',
				width: 500,
				buttons: {
					"Cancel": function () { $(this).dialog('close'); hideBasketNotification(); },
					"Continue": function () {
						addToBasketAJAX(bits[3], 0);
						$(this).dialog('close');
					}
				}
		});
		return;
	}

	if (container == undefined || container == null) {
		var container = document.getElementById('basket-notification');
	}

	basketItemCount++;
	basketTotalPrice += parseFloat(bits[2]);

	$('div#miniBasketEmpty').hide();
	$('div#miniBasketFull').show();
	$('span#miniBasketItemCount').text(basketItemCount);
	$('span#miniBasketTotalPrice').text(basketTotalPrice.toFixed(2));

	container.innerHTML = '';
	container.appendChild(basketNotificationText('basket-notification-status', 'Item Added'));
	container.appendChild(basketNotificationText('basket-notification-item', bits[1]));
	container.appendChild(basketNotificationText('basket-notification-price', '£' + bits[2]));
	container.appendChild(basketNotificationText('basket-notification-code', 'Code ' + bits[0]));
	setTimeout(hideBasketNotification, 5000);
}

function hideBasketNotification () {
	$('div#basket-notification').slideUp(400, function(){
		$('div#basket-notification').remove();
	});
}

