var currentGPOffset = 0;
var currentSessionOffset = 0;
var previousGPOffset = 0;
var now,nowfudge;

function QueryString(key)
{
	var value = null;
	for (var i=0;i<QueryString.keys.length;i++)
	{
		if (QueryString.keys[i] == key)
		{
			value = QueryString.values[i];
			break;
		}
	}
	return value;
}

QueryString.keys = new Array();
QueryString.values = new Array();

function QueryString_Parse()
{
	var query = window.location.search.substring(1);
	var pairs = query.split("&");
	for (var i=0;i<pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)
		{
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			QueryString.keys[QueryString.keys.length] = argname;
			QueryString.values[QueryString.values.length] = value;
		}
	}
}

QueryString_Parse();	

function getNow()
{
	now = new Date();
	if (QueryString("CURRENT_DATE") != null)
	{
		var querystring_current_date = unescape(QueryString("CURRENT_DATE").replace(/\+/g," ")) + " GMT";
		setInterval( "window.status = now.toUTCString()", 1000 );
		if (nowfudge == null)
		{
			nowfudge = now - new Date(querystring_current_date);
		}
		now.setTime(now.getTime() - nowfudge );
		now.setTime(now.getTime() + ((0 * 24 + 0) * 60 + 0) * 60 * 1000);
	}
}		
	
getNow();

function GPArrayItem(n, fn, id, c, t)
{
	this.name = n;
	this.fullname = fn;
	this.sessions = new Array();
	this.id = id;
	this.country = c;
	this.offset = t;
	return this;
}

function GPSArrayItem(s, d, l, bGP)
{
	this.session = s;
	this.start = new Date(d);
	this.end = new Date;
	this.end.setTime(this.start.getTime() + l * 60 * 1000);
	this.countdown = new Date(0);
	this.inProgress = false;
	this.isGP = bGP;
	return this;
}

function GPCurrent()
{
	return new findGPCurrent();
}

function findGPCurrent()
{
	var gp,s,gps,ss;
	var ret = this;
	
	for (; currentGPOffset < grand_prix.length; currentGPOffset++)
	{
		gp = grand_prix[currentGPOffset]
		gps = gp.sessions;
		ss = gps[gps.length-1];
		if ( ss.end >= now )
			break;
		previousGPOffset = currentGPOffset;
		currentSessionOffset = 0;
	}

	for (; currentSessionOffset < gps.length; currentSessionOffset++)
	{
		s = gps[currentSessionOffset];
		if (s.start > now)
		{
			ret.inProgress = false;
			break;
		}
		else if (s.end >= now)
		{
			ret.inProgress = true;
			break;
		}
	}

	ret.name = gp.name;
	ret.fullname = gp.fullname;
	ret.id = gp.id;
	ret.offset = gp.offset;
	ret.session = s.session;
	ret.start = s.start;
	ret.end = s.end
	ret.isGP = s.isGP;
	ret.countdown = new Date(ss.start - now);
	return this;
}

var grand_prix = new Array();

// First Parameter is "<GIF name>$<GP Title>$<Session Name>"
// Second Parameter is Date/Time in GMT of start of session
// Third Parameter is length of session in minutes
// Fourth Parameter is True/False if session is a GP.

//grand_prix[0] = new GPArrayItem("sao_paulo", "2004 Brazilian Grand Prix", 731, "brazilian",-180);
grand_prix[0] = new GPArrayItem("pr-Curitiba", "Copa Sul Paraná", 731, "pr-Curitiba",-180);
grand_prix[0].sessions = new Array(new GPSArrayItem("Race", "27 Mar 2010 16:31:00 GMT", 120, true));
//	new GPSArrayItem("Friday Practice 1", "22 Oct 2004 14:00:00 GMT", 60, false),
//	new GPSArrayItem("Friday Practice 2", "22 Oct 2004 17:00:00 GMT", 60, false),
//	new GPSArrayItem("Saturday Practice 1", "23 Oct 2004 11:00:00 GMT", 45, false),
//	new GPSArrayItem("Saturday Practice 2", "23 Oct 2004 12:15:00 GMT", 45, false),
//	new GPSArrayItem("Saturday Pre-Qual", "23 Oct 2004 15:00:00 GMT", 60, false),
//	new GPSArrayItem("Saturday Qualifying", "23 Oct 2004 16:00:00 GMT", 60, false),


grand_prix[1] = new GPArrayItem("sc-Joinville", "Raid de Joinville", 731, "sc-Joinville",-180);
grand_prix[1].sessions = new Array(new GPSArrayItem("Race", "01 Mar 2008 11:01:00 GMT", 120, true));

grand_prix[2] = new GPArrayItem("sc-Gaspar", "Raid de Gaspar", 732, "sc-Gaspar",660);
grand_prix[2].sessions = new Array(new GPSArrayItem("Race", "15 Mar 2008 13:01:00 GMT", 120, true));

grand_prix[3] = new GPArrayItem("sc-SaoBentodoSul", "Raid de São Bento do Sul", 733, "sc-SaoBentodoSul",480);
grand_prix[3].sessions = new Array(new GPSArrayItem("Race", "10 May 2008 13:01:00 GMT", 120, true));

grand_prix[4] = new GPArrayItem("sc-Brusque", "Raid de Brusque", 735, "sc-Brusque",120);
grand_prix[4].sessions = new Array(new GPSArrayItem("Race", "24 May 2008 13:01:00 GMT", 120, true));

grand_prix[5] = new GPArrayItem("sc-Itajai", "Raid de Itajai", 736, "sc-Itajai",120);
grand_prix[5].sessions = new Array(new GPSArrayItem("Race", "21 Jun 2008 13:01:00 GMT", 120, true));

grand_prix[6] = new GPArrayItem("sc-Corupa", "Raid de Corupá", 737, "sc-Corupa",-240);
grand_prix[6].sessions = new Array(new GPSArrayItem("Race", "12 Jul 2008 13:01:00 GMT", 120, true));

grand_prix[7] = new GPArrayItem("sc-JaraguadoSul", "Raid de Jaraguá do Sul", 738, "sc-JaraguadoSul",120);
grand_prix[7].sessions = new Array(new GPSArrayItem("Race", "16 Aug 2008 13:01:00 GMT", 120, true));

grand_prix[8] = new GPArrayItem("sc-Florianopolis", "Raid de Florianópolis", 739, "sc-Florianopolis",120);
grand_prix[8].sessions = new Array(new GPSArrayItem("Race", "06 Sep 2008 13:01:00 GMT", 120, true));

grand_prix[9] = new GPArrayItem("sc-RioNegrinho", "Raid de Rio Negrinho", 740, "sc-RioNegrinho",60);
grand_prix[9].sessions = new Array(new GPSArrayItem("Race", "18 Oct 2008 13:01:00 GMT", 120, true));

grand_prix[10] = new GPArrayItem("sc-Pomerode", "Raid de Pomerode", 734, "sc-Pomerode",120);
grand_prix[10].sessions = new Array(new GPSArrayItem("Race", "08 Nov 2008 13:01:00 GMT", 120, true));

grand_prix[11] = new GPArrayItem("pr-Guaira", "Transparaná 2009", 742, "pr-Guaira",120);
grand_prix[11].sessions = new Array(new GPSArrayItem("Race", "26 Jan 2009 11:01:00 GMT", 120, true));

grand_prix[12] = new GPArrayItem("sc-Blumenau", "Raid de Blumenau", 742, "sc-Blumenau",120);
grand_prix[12].sessions = new Array(new GPSArrayItem("Race", "14 Feb 2009 13:01:00 GMT", 120, true));

//grand_prix[14] = new GPArrayItem("sc-Joinville", "Raid de Joinville", 731, "sc-Joinville",-180);
//grand_prix[14].sessions = new Array(new GPSArrayItem("Race", "03 Mar 2007 11:01:00 GMT", 120, true));



function getClockPath(s)
{
	if ( s == 10 )
		return "images/countdown_clock/numbers/blank.gif";
	else
		return "images/countdown_clock/numbers/" + s + ".gif";
	//return "images/clock/img" + s + ".gif";
}

function getClockImage(s)
{
	var x;
	x = new Image();
	x.src = getClockPath(s);
	
	return x;
}
	
var clockImage = new Array();
for (i = 0; i <= 9; i++)
	clockImage[i] = getClockImage(i);

function getElement(o)
{return MM_findObj(o);
	if (document.getElementById)
		return document.getElementById(o);
	else if (document.all)
		return document.all[o];
}

function setVisibility(o, b)
{
	v = getElement(o);
	if ( v == null )
		return;
	v = v.style
	var s = (b)?"block":"none";
	if (v.display != s)
		v.display = s;
}

function setNumber( s, m )
{
	setNumber2(s,m,11);
}

function setNumber2( s, m, nn )
{
	var v,n,o,ss;
	for ( n = 0; n < nn; n++ )
	{
		o = s + n;
		v = getElement(o);
		if ( v == null )
			continue;
		v = v.style;
		ss = (n==m)?"inline":"none";
		if (v.display != ss)
			v.display = ss;
	}
}

var clockMode = 0;

function updateClock()
{
	getNow();

	var gp = GPCurrent();

	if (gp)
	{
		if (!gp.inProgress)
		{
			var x, y, n;

			if ( clockMode != 1 )
			{
				n = "images/countdown_clock/circuit_names/" + gp.name + ".gif";
				document.images.cdgp.src = n
				setVisibility("raceon", false);
				setVisibility("endseason", false);
				setVisibility("countdown", true);
			}

			do
			{
			y = gp.countdown.getUTCSeconds();
			n = y % 10;
			setNumber( "cds1-", n );
			if ( n != 9 && clockMode == 1 ) break;
			n = Math.floor(y / 10);
			setNumber( "cds2-", n );
			if ( n != 5 && clockMode == 1 ) break;

			y = gp.countdown.getUTCMinutes();
			n = y % 10;
			setNumber( "cdm1-", n );
			if ( n != 9 && clockMode == 1 ) break;
			n = Math.floor(y / 10);
			setNumber( "cdm2-", n );
			if ( n != 5 && clockMode == 1 ) break;

			y = gp.countdown.getUTCHours();
			setNumber( "cdh1-", y % 10 );
			setNumber( "cdh2-", Math.floor(y / 10) );

			y = Math.floor(gp.countdown.getTime() / (24*3600000));
			n = y % 10;
			setNumber( "cdd1-", n );

			n = Math.floor(y / 10) % 10;
			if (n == 0) {
//			REMOVED PFW 16-11-04: Middle digit showing blank between 109 and 100
//				n = 10;
			}
			setNumber( "cdd2-", n );

			n = Math.floor(y / 100);
			if (n == 0)
				n = 10;
			setNumber( "cdd3-", n );
			} while(0);
			clockMode = 1;
		}
		else
		{
			if ( clockMode != 2 )
			{
				setVisibility("raceon", true);
				setVisibility("endseason", false);
				setVisibility("countdown", false);
			}
			clockMode = 2;
		}
	}
	else
	{	
		if ( clockMode != 3 )
		{
			setVisibility("raceon", false);
			setVisibility("endseason", true);
			setVisibility("countdown", false);
		}
		clockMode = 3;
	}

	setTimeout("updateClock()", 1001 - (new Date()).getMilliseconds());
}

function cd_DrawNumber(s)
{
var x;
for(x=0;x<11;x++)
	document.write( '<img style="display:' + (x==0?"inline":"none") + '" src="' + getClockPath(x) + '" width="11" height="27" alt="" id="cd' + s + '-' + x + '"/>');
//	<img src="images/countdown_clock/numbers/0.gif" width="11" height="27" alt="" />
}

function cd2_DrawNumber(s)
{
var x;
for(x=0;x<10;x++)
	document.write( '<img style="display:' + (x==0?"inline":"none") + '" src="images/home/live_timing/left_panel2/pre/session_countdown_clock/numbers/' + x + '.gif" width="9" height="22" alt="" id="cd2' + s + '-' + x + '" border="0" />');
//<img src="images/home/live_timing/left_panel2/pre/session_countdown_clock/numbers/0.gif" alt="0" width="9" height="22" border="0" />
}

var homepage;

function updateHomePage()
{
	getNow();

	var gp = GPCurrent();
	var iTimeout = 0, n;
	if (gp)
	{
		if (gp.inProgress)
		{
			//RACE - InProgress
			setVisibility("Home_RaceOn", true );
			setVisibility("Home_PostRace", false );
			setVisibility("Home_PreRace", false );
//			setVisibility("Home_AnimationOn", true );
			setVisibility("Home_AnimationOn", false );
			setVisibility("Home_AnimationOff", false );
			homepage = 'raceon';
			iTimeout = gp.end.getTime() - now.getTime();
		}
		else
		{
			n = gp.countdown;
			pgp = grand_prix[previousGPOffset];
			prs = pgp.sessions[pgp.sessions.length-1];
			PrevRaceTime = new Date(now - prs.start);
			if ( PrevRaceTime.getUTCDate() < 2 || ( PrevRaceTime.getUTCDate() == 2 && now.getUTCDay() == 1 ) )
			{ // just after race
				n = getElement('Home_topflag');
				n.src= '/images/home/live_timing/left_panel2/grand_prix_name/' + grand_prix[previousGPOffset].country + '.gif';
				n = getElement('back_live_timing');
				n.src = '/images/home/live_timing/left_panel2/post/back_buttons/' + grand_prix[previousGPOffset].country + '_off.gif';
				n = getElement('back_live_timing_link');
				n.onclick = function(){window.open('/archive/grandprix/livetiming/popup/' + grand_prix[previousGPOffset].id + '/8.html','liveTimingWIN','width=610,height=505,history=no,resizable=no,status=no,scrollbars=no,menubar=no'); return false;}
				n.href = '/archive/grandprix/livetiming/popup/' + grand_prix[previousGPOffset].id + '/8.html'
				setVisibility("Home_PostRace", true );
				setVisibility("Home_PreRace", false );
				setVisibility("Home_RaceOn", false );
				setVisibility("Home_AnimationOn", false );
				setVisibility("Home_AnimationOff", true );
				homepage = 'postrace';
				iTimeout = 3600000;
			}
			else if ( n.getUTCMonth() > 1 || n.getUTCDate() > 6 || ( n.getUTCDate() == 6 && now.getUTCDay() == 1 ) )
			{ // 6 days before next race
			//POST
				n = getElement('Home_topflag');
				if (n) {
					n.src= '/images/home/live_timing/left_panel2/grand_prix_name/' + grand_prix[currentGPOffset].country + '.gif';
				}
				n = getElement('back_live_timing');
				if (n) {
					n.src = '/images/home/live_timing/left_panel2/post/back_buttons/' + grand_prix[previousGPOffset].country + '_off.gif';
				}
				n = getElement('back_live_timing_link');
				if (n) {
					n.onclick = function(){window.open('/archive/grandprix/livetiming/popup/' + grand_prix[previousGPOffset].id + '/8.html','liveTimingWIN','width=610,height=505,history=no,resizable=no,status=no,scrollbars=no,menubar=no'); return false;}
					n.href = '/archive/grandprix/livetiming/popup/' + grand_prix[previousGPOffset].id + '/8.html'
				}
				setVisibility("Home_PostRace", true );
				setVisibility("Home_PreRace", false );
				setVisibility("Home_RaceOn", false );
				setVisibility("Home_AnimationOn", false );
				setVisibility("Home_AnimationOff", true );
				homepage = 'postrace';
				iTimeout = 3600000;
			}
			else
			{
				if ( homepage != gp.session )
				{
				//PRE
					homepage = gp.session;
					setVisibility("Home_PreRace", true );
					setVisibility("Home_RaceOn", false );
					setVisibility("Home_PostRace", false );
					setVisibility("Home_AnimationOn", false );
					setVisibility("Home_AnimationOff", true );
					n = getElement('Home_session');
					if (n) {
						n.src = '/images/home/live_timing/left_panel2/pre/session/' + homepage.toLowerCase().replace(/ /g,'_') + '.gif';
					}
				}
				n = new Date( now.getTime() + gp.offset * 60000 );
				var ns = new Date( gp.start.getTime() + gp.offset * 60000 );
				ns.setUTCHours(0,0,0,0);
				if ( n.getTime() < ns.getTime() )
				{
					setVisibility("session_countdown_clock", false);
					setVisibility("session_countdown_space", true);
					iTimeout = ns.getTime() - n.getTime();
				}
				else
				{
					n = new Date( gp.start - now );
					setVisibility("session_countdown_clock", true);
					setVisibility("session_countdown_space", false);
					setNumber2( 'cd2s1-', n.getUTCSeconds() % 10, 10 );
					setNumber2( 'cd2s2-', Math.floor(n.getUTCSeconds() / 10 ), 6);
					setNumber2( 'cd2m1-', n.getUTCMinutes() % 10, 10 );
					setNumber2( 'cd2m2-', Math.floor(n.getUTCMinutes() / 10 ), 6);
					setNumber2( 'cd2h1-', n.getUTCHours() % 10, 10);
					setNumber2( 'cd2h2-', Math.floor(n.getUTCHours() / 10 ), 3);
					setNumber2( 'cd2d1-', (n.getUTCDate()-1) % 10, 10);
					iTimeout = 1001 - (new Date()).getMilliseconds();
				}
			}
		}
	}
	if ( iTimeout < 500 )
		iTimeout += 1000;
	setTimeout( "updateHomePage();", iTimeout );
}


function MM_swapImage2(i)
{
	MM_swapImage(i, '', getElement(i).src.replace(/off.gif/g,'over.gif') );
}
