var brightOne = -1;
var currentShop = 0;
var interfaceUpdated = false;
var progressContainerShown = false;
var shops2Crawl = null;
var updateStatusInterval = null;
var updateShopInterval = null;
var animateInterval = null;
var forwardUrl = null;
var globalTimeout = 0;
var updateStatusIntervalValue = 0;
var updateShopIntervalValue = 0;
var arrowColour = "";
var runningTaskJsp = null;
var forwardSet = false;
var backwardUrl = null;
var backwardSet = false;
var runningTaskSet = false;

function setShops(toCrawl){shops2Crawl = toCrawl;}
function getShops(){return shops2Crawl;}
function setForward(toURL){forwardSet = (forwardUrl = toURL);}
function getForward(){return forwardUrl;}
function setBackward(toURL){backwardSet = (backwardUrl = toURL);}
function getBackward(){return backwardUrl;}
function setRunning(toURL){runningTaskSet = (runningTaskJsp = toURL);}
function getRunning(){return runningTaskJsp;}

function animate()
{
	brightOne = (brightOne + 1) % 6;
	
	for(i = 0; i < 6; i++) 
	{
		var obj = (document.getElementById ? document.getElementById("a" + i) : document.all["a" + i]);
		
		if(i == brightOne) 
		{
			obj.style.color = arrowColour;
			obj.style["font-size"] = '60px';
		} 
		else obj.style.color = '#000000';
	}
}	
function doInterface(job)
{
	$("#RunningTime").html(job.RunningTime);
	$("#NumberOfCompareShops").html(job.NumberOfCompareShops);
	
	if( !interfaceUpdated && ( interfaceUpdated = true ) )
	{
		updateShopInterval = self.setInterval('updateShop()', updateShopIntervalValue);
		
		$("#progressbar").progressbar(
		{
			value: ( job.RunningTime / globalTimeout ) * 100
		});	
	}
	else $("#progressbar").progressbar('value', ( job.RunningTime / globalTimeout ) * 100 );	
	
	if( ( job.RunningTime / globalTimeout ) * 100 >= 100 ) arrowColour = "#FF0000";
}
function updateStatus()
{
	jQuery.post(runningTaskJsp, null, function(job, status)
	{
		if( !shops2Crawl ) { setShops(job.Shops2Crawl); }
		if( job.ForwardUrl ) { setForward(job.ForwardUrl); }
		if( job.BackwardUrl ) { setBackward(job.BackwardUrl); }
		
		if( job.RunningTaskJSP != null ) 
		{ 
			if( runningTaskSet == false )
			{
				setRunning(job.RunningTaskJSP);
				return;
			}
			else setRunning(job.RunningTaskJSP);
		}
		
		if( job.IsDone == true || job.Error )
		{
			forwardPage();
		}
		else doInterface(job);
		
	}, "json");
}
function updateShop()
{
	$("#CrawlingShop").html(shops2Crawl[currentShop++]);
	
	if( !progressContainerShown && ( progressContainerShown = true ) )
	{
		$("#progressContainer").fadeIn(500);
	}
}
function forwardPage() 
{ 
	if( updateStatusInterval ) window.clearInterval(updateStatusInterval);
	if( updateShopInterval ) window.clearInterval(updateShopInterval);
	
	$("#waitSeconds").html(forwardMessage);
	
	$("#progressContainer").fadeOut(1000, function()
	{	
		$(this).remove();
		
		if( forwardSet )
		{
			setTimeout("document.location.replace(forwardUrl)", 1000);
		}
		else setTimeout("document.location.replace(forwardUrl)", 100);	
	});
	
	/**
	if( forwardSet )
	{
		$("#forwardContainer").dialog
		({
			close: function(event, ui)
			{
				setTimeout("document.location.href = forwardUrl", 200);
			}
		});
	}
	else setTimeout("document.location.href = forwardUrl", 200);
	**/
}
function openWindowOnOldResults()
{
	if( ( childWindow = window.open(backwardUrl) ) )
	{
		childWindow.onload=function()
		{
			if( $("#forwardContainer") != null )
			{
				$("#forwardContainer").dialog('close');
			}
		}
	}
}