var overlayAdded = false;
var overlayShowing = false;
var closeButtonAdded = false;
var closeButtonShowing = false;
var promoShowing = false;
var debugging = true;
var debuggingDivAdded = false;

function testShowPromoItem(elementToShow)
{
	$('.closeButton').click(function()
	{
		testRemoveAll()
	});

	// Get page dimensions
	var pageDetails = ___getPageSize();

	// Add overlay div to page
	if(overlayAdded == false)
	{
		$('body').append('<div id="testBackgroundOverlay"></div>');
		overlayAdded = true;
	}

	// Add debugging section if needed
	if(debugging && !debuggingDivAdded)
	{
		$('body').append('<div id="debuggingDump" style="display:none"></div>');
		debuggingDivAdded = true;
	}

	// Fix IE7 z-index bug
	if(IE7)
	{
		// Manually set problematic z indices
		$('#'+elementToShow).parents('div').css('z-index',4);
	}

	// Get selected element's parent's position
	var parentElemOffset = $('#'+elementToShow).parent().offset();
	var parentElemLeft = parentElemOffset.left;
	var parentElemTop = parentElemOffset.top;

	// Calculate top left corner relative to parent
	var overlayLeftOffset = 0 - parentElemLeft;	// Top left corner is (0,0)
	var overlayTopOffset = 0 - parentElemTop;

	// Display overlay (i.e. dim background)
	if(overlayShowing == false)
	{
		$('#testBackgroundOverlay').css({
			backgroundColor:	'#000',
			opacity:		0.7,
			position:		'absolute',
			left:			0,
			top:			0,
			width:			'100%',
			height:			'100%',
			'z-index':		3
			}).fadeIn();
		overlayShowing = true;

		if(IE7)
		{
			// Fade out problematic elements
			$('#startpageImgTopRight').fadeOut('slow');
			$('.DivNewsBox').fadeOut('slow');
			$('#startpageTitleImg').fadeOut('slow');
		}
	}

	// Get selected element's normal dimensions
	var elemWidth = $('#'+elementToShow).width();
	var elemHeight = $('#'+elementToShow).height();

	// Calculate & position element in page center
	var pageWidth = pageDetails[0];
	var pageHeight = Math.min(pageDetails[1], 860);		// Only center within Kambly content
	var elemTargetLeft = (0.5 * (pageWidth - elemWidth));	// Target relative to page
	var elemTargetTop = (0.5 * (pageHeight - elemHeight));
	var elemLeftOffset = elemTargetLeft - parentElemLeft;	// Difference between parent & target
	var elemTopOffset = elemTargetTop - parentElemTop;	// (i.e. position relative to parent)

	// Show selected item
	$('#'+elementToShow).css('position', 'absolute');
	$('#'+elementToShow).css('z-index', 4);
	if(promoShowing)
	{
		// Log debug info if needed
		if(debugging)
		{
			$('#debuggingDump').html(' elemWidth: ' + elemWidth + ' elemHeight: ' + elemHeight + ' parentElemLeft: ' + parentElemLeft + ' parentElemTop: ' + parentElemTop + ' pageWidth: ' + pageWidth + ' pageHeight: ' + pageHeight + ' elemTargetLeft: ' + elemTargetLeft + ' elemTargetTop: ' + elemTargetTop + ' elemLeftOffset: ' + elemLeftOffset + ' elemTopOffset: ' + elemTopOffset);
		}
		
		// Fade out current promo window
		$('.promoPage').fadeOut('fast');
		$('.promoPage').children().fadeOut('fast');

		// Move new window to screen center
		$('#'+elementToShow).css('left', elemLeftOffset);
		$('#'+elementToShow).css('top', elemTopOffset);

		// Fade in new promo window
		$('#'+elementToShow).fadeIn('fast');
		$('#'+elementToShow).children().fadeIn('fast');
	}
	else
	{
		// Collapse window to single point for animation start
		$('#'+elementToShow).css('width', 0);
		$('#'+elementToShow).css('height', 0);

		// Calculate and start animation at page center
		var pageCenterLeft = (0.5 * pageWidth);
		var pageCenterTop = (0.5 * pageHeight);
		var centerLeftOffset = pageCenterLeft - parentElemLeft;	// Difference between parent & center
		var centerTopOffset = pageCenterTop - parentElemTop;	// (i.e. center relative to parent)

		// Log debug info if needed
		if(debugging)
		{
			$('#debuggingDump').html(' elemWidth: ' + elemWidth + ' elemHeight: ' + elemHeight + ' parentElemLeft: ' + parentElemLeft + ' parentElemTop: ' + parentElemTop + ' pageWidth: ' + pageWidth + ' pageHeight: ' + pageHeight + ' elemTargetLeft: ' + elemTargetLeft + ' elemTargetTop: ' + elemTargetTop + ' elemLeftOffset: ' + elemLeftOffset + ' elemTopOffset: ' + elemTopOffset + ' pageCenterLeft: ' + pageCenterLeft + ' pageCenterTop: ' + pageCenterTop + ' centerLeftOffset: ' + centerLeftOffset + ' centerTopOffset: ' + centerTopOffset);
		}

		// Place selected element in page center
		$('#'+elementToShow).css('left', centerLeftOffset);
		$('#'+elementToShow).css('top', centerTopOffset);
	
		// Animate it opening
		$('#'+elementToShow).animate({
			width: elemWidth,
			height: elemHeight,
			left: elemLeftOffset,
			top: elemTopOffset},
			"slow",
			function()
			{
				//showCloseButton(elemLeftOffset + elemWidth - 25, elemTopOffset + 110)
				$('.promoPage').children().fadeIn('fast');
				promoShowing = true;
			});
	}
}

// Not needed at the moment, close button is now part of content
function testShowCloseButton(xPos, yPos)
{
	// Add close button
	if(closeButtonAdded == false)
	{
		$('.promoContainer').append('<div id="closeButton"><img src="/media/6398/Close.png"></img></div>');
		closeButtonAdded = true;
	}
	$('#closeButton').hide();
	$('#closeButton').css({'position': 'absolute', 'left': xPos, 'top': yPos});
	$('#closeButton').click(function()
	{
		testRemoveAll()
	});
	$('#closeButton').fadeIn('slow', function()
	{
		closeButtonShowing = true;
	});
}

// Close button functionality
function testRemoveAll()
{
	// Fix IE7 z-index bug
	if(IE7)
	{
		// Return hidden items
		$('#startpageImgTopRight').fadeIn('fast');
		$('.DivNewsBox').fadeIn('fast');
		$('#startpageTitleImg').fadeIn('fast');
	}

	// Hide all promo related items
	$('.promoPage').fadeOut('fast');
	$('.promoPage').children().fadeOut('fast');
	promoShowing = false;
	$('#testBackgroundOverlay').fadeOut('fast');
	overlayShowing = false;

/*
	$('#closeButton').fadeOut('200', function()
	{
		closeButtonShowing = false;
		$('.promoPage').fadeOut('fast');
		$('#testBackgroundOverlay').fadeOut('fast');
		overlayShowing = false;
	});
*/
}

/**
/ THIRD PARTY FUNCTION
* getPageSize() by quirksmode.com
*
* @return Array Return an array with page width, height and window width, height
*/
function ___getPageSize() {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}
	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
};
