/* SHOWCASE */

function ge(elementId)
{
	return document.getElementById(elementId);
}

// define images
var currentIdx = null;
var imageObjs = new Array();

var Direction =
{
	PREV:0,
	NEXT:1	
};

function Img(category, url)
{
	this.category = category;
	this.url = url;
}

function changeShowcaseImage(direction)
{
	if(images.length > 1)
	{
		var newIdx = currentIdx;
		
		if(direction == Direction.NEXT)
		{
			newIdx++;
		}
		else
		{
			newIdx--;
		}

		if(newIdx >= images.length)
		{
			newIdx = 0;
		}
		else if(newIdx < 0)
		{
			newIdx = images.length - 1;
		}
		
		setShowcaseImage(newIdx);
	}
}

var first = true;
function setShowcaseImage(newIdx)
{
	if(first)
	{
		first = false;
		setShowcaseChangeTime();
		currentIdx = newIdx;
	}
	else
	{
		if(images.length > newIdx)
		{
			if(currentIdx != null)
			{
				if(images.length > 1)
				{
					ge('pageidx' + currentIdx).className = 'page';
				}
				$('#image' + currentIdx).fadeOut(1200);
			}
			
			if(images.length > 1)
			{
				ge('pageidx' + newIdx).className = 'page selected';
			}
			$('#image' + newIdx).fadeIn(1200);
			currentIdx = newIdx;
			
			setShowcaseChangeTime();
		}
	}
}

var changeTime;
function setShowcaseChangeTime()
{
	changeTime = new Date().getTime();
}

function changeWhenReady()
{
	if(new Date().getTime() - changeTime >= 4000)
	{
		changeTime = 9999999999;
		if(!window.chrome || window.isActive)
		{
			changeShowcaseImage(Direction.NEXT);
		}
	}
}

function initShowcase()
{
	if(images != null && images.length > 0)
	{
		if(window.chrome)
		{
			window.isActive = true;
			$(window).focus(function() { this.isActive = true; });
			$(window).blur(function() { this.isActive = false; });
		}
		
		// load first image
		imageObjs[0] = ge('image0');
		setShowcaseImage(0);
		setInterval(changeWhenReady, 500);
		
		// preload rest of images
		for(var i = 1; i < images.length; i++)
		{
			imageObjs[i] = new Image();
			imageObjs[i].src = images[i];
			imageObjs[i].id = 'image' + i;
			imageObjs[i].style.display = 'none';
			imageObjs[i].style.position = 'absolute';
			imageObjs[i].style.width = '453px';
			imageObjs[i].style.height = '207px';
			ge('showcase').insertBefore(imageObjs[i], ge('showcase').firstChild);
		}
	}
}

function printPaging()
{
	// no point in pages if there's only 1
	if(images.length > 1)
	{
		var html = '';
		for(var i = 0; i < images.length; i++)
		{
			html += '<a id="pageidx' + i + '" class="page';
			
			if(i == 0)
			{
				html += ' selected';
			}
			
			html += '" onclick="setShowcaseImage(' + i + ')">&nbsp;</a>';
		}
		document.write(html);
	}
}
