
/* The dropdown is used to display a session timeout message to the customers */

function showMessageDropdown(message) {
	var dropdown = $('div#dropdown');
	if (dropdown.length != 0) {
		updateMessageDropdown(message);
		return;
	}
		
	dropdown = $('<div id="dropdown"></div>')
		.css('display', 'none');
	
	dropdown.html(message);
	
	$('body').append(dropdown);
	dropdown.css('top', ($(window).height() / 2) - ($(dropdown).height() / 2));
	dropdown.css('left', ($(window).width() / 2) - ($(dropdown).width() / 2));
	dropdown.fadeIn(700, function() {
		// We bind to all spans with a class of close so that we include a close link in any HTML inserted
		$('body').live('click', function() { hideMessageDropdown(); });
	});
}

function updateMessageDropdown(message) {
	var dropdown = $('div#dropdown');
	if (dropdown.length == 0) {
		showMessageDropdown(message);
		return;
	} else {
		dropdown.html(message);
		// We update the positioning of the message in case the contents have changed it's size
		dropdown.css('top', ($(window).height() / 2) - ($(dropdown).height() / 2));
		dropdown.css('left', ($(window).width() / 2) - ($(dropdown).width() / 2));
	}
}

function hideMessageDropdown() {
	var dropdown = $('div#dropdown');
	if (dropdown.length != 0)
		dropdown.fadeOut(700, function() { $(this).remove(); });
}

/* Show the expanded/mouseover basket */ 

function showBasket() {
	if ($('div#ajaxBasketHolder').size() == 0) {
		$('<div id="ajaxBasketHolder"></div>').appendTo('div#headerControls');
		$('div#ajaxBasketHolder').load(storeRoot + 'ajax/getBasketHTML/', function () {
			$(this).fadeIn();
		});
	}
}

var hideBasketTimeout = null;

/* Hide the expanded/mouseover basket */

function hideBasket() {
	hideBasketTimeout = setTimeout(function () {
		$('div#ajaxBasketHolder').fadeOut(function() {
			$('div#ajaxBasketHolder').remove();
		});
	}, 100);
}

$(function() {
	$('div#headerControls div.basket, div#ajaxBasketHolder').live('mouseenter', function(e) {
		if (hideBasketTimeout != null)
			clearTimeout(hideBasketTimeout);
		showBasket();
	});
	
	$('div#headerControls div.basket, div#ajaxBasketHolder').live('mouseleave', function(e) {
		hideBasket();
	});
	
	/*
	if (typeof basketQuantity != 'undefined' && typeof basketProduct != 'undefined') {
		showBasket();
		setTimeout(function() { hideBasket(); }, 3000);
	}
	*/
	
	var pageMessagesDialog = $('ul.pageMessages, ul.pageErrors')
		.dialog({
			autoOpen: false, 
			modal: true, 
			dialogClass: 'pageMessageDialog',
			position: 'center',
			buttons: {
				"OK": function() {
					$(this).dialog("close");
				}
			}
		});
	pageMessagesDialog.dialog('open');
	
	var basketMessageDialog = $('#basketMessage');
	if (basketMessageDialog.length > 0) {
		basketMessageDialog.dialog({
			resizable: false,
			modal: true,
			dialogClass: 'basketMessageDialog'
		});
		$('#basketMessageContinue').bind('click', function() { basketMessageDialog.dialog("close"); });
		$('#basketMessageCheckout').bind('click', function() { location.href = storeRoot + 'basket/'; });
	}
	
	$('.ui-dialog').css('left', ($(window).width() / 2) - ($('.ui-dialog').width() / 2) + 'px');
	$('.ui-dialog').css('top', ($(window).height() / 2) - ($('.ui-dialog').height() / 2) + 'px');

	if ($('.productImageZoom').length > 0) {
		if ($('.ui-widget-overlay').length > 0) {
			$('.ui-dialog').bind('dialogclose', function(e) {
				$('.productImageZoom').groovyZoom({ zoomWidth: 175, zoomHeight: 175, followMouse: true, displayPreloader: true });
			});
		} else {
			$('.productImageZoom').groovyZoom({ zoomWidth: 175, zoomHeight: 175, followMouse: true, displayPreloader: true });
		}
	}
	
	if(hasProducts) {
		setTimeout(function() {
			showMessageDropdown('<p>The stock reserved in your basket will expire in 10 minutes. If you want to reserve this stock for longer or checkout then reload this page.</p><span class="close">Close</span>');
		}, sessionWarningLength);
		setTimeout(function() {
			showMessageDropdown('<p>We\'re sorry but the time limit for stock reservation has expired. If you would like to checkout please add the items back into \'Your Bag\' and checkout.</p><span class="close">Close</span>');
		}, sessionLength);
	}
});

