var currentGPOffset = 0;
var currentSessionOffset = 0;
var previousGPOffset = 0;
var clockMode = 0;
var now,nowfudge;
var SEASON_ENDED = false;

var NumbersSmall = new Array(10);
var NumbersBig = new Array(10);

NumbersSmall[0] = '<img src="images/numeros/00s.jpg" width="20" height="39" alt="0" />';
NumbersSmall[1] = '<img src="images/numeros/01s.jpg" width="20" height="39" alt="1" />';
NumbersSmall[2] = '<img src="images/numeros/02s.jpg" width="20" height="39" alt="2" />';
NumbersSmall[3] = '<img src="images/numeros/03s.jpg" width="20" height="39" alt="3" />';
NumbersSmall[4] = '<img src="images/numeros/04s.jpg" width="20" height="39" alt="4" />';
NumbersSmall[5] = '<img src="images/numeros/05s.jpg" width="20" height="39" alt="5" />';
NumbersSmall[6] = '<img src="images/numeros/06s.jpg" width="20" height="39" alt="6" />';
NumbersSmall[7] = '<img src="images/numeros/07s.jpg" width="20" height="39" alt="7" />';
NumbersSmall[8] = '<img src="images/numeros/08s.jpg" width="20" height="39" alt="8" />';
NumbersSmall[9] = '<img src="images/numeros/09s.jpg" width="20" height="39" alt="9" />';

NumbersBig[0] = '<img src="images/numeros/00b.jpg" width="32" height="39" alt="0" />';
NumbersBig[1] = '<img src="images/numeros/01b.jpg" width="32" height="39" alt="1" />';
NumbersBig[2] = '<img src="images/numeros/02b.jpg" width="32" height="39" alt="2" />';
NumbersBig[3] = '<img src="images/numeros/03b.jpg" width="32" height="39" alt="3" />';
NumbersBig[4] = '<img src="images/numeros/04b.jpg" width="32" height="39" alt="4" />';
NumbersBig[5] = '<img src="images/numeros/05b.jpg" width="32" height="39" alt="5" />';
NumbersBig[6] = '<img src="images/numeros/06b.jpg" width="32" height="39" alt="6" />';
NumbersBig[7] = '<img src="images/numeros/07b.jpg" width="32" height="39" alt="7" />';
NumbersBig[8] = '<img src="images/numeros/08b.jpg" width="32" height="39" alt="8" />';
NumbersBig[9] = '<img src="images/numeros/09b.jpg" width="32" height="39" alt="9" />';

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, "/").replace(/\+/g," ")) + " GMT";
		if (nowfudge == null) {
			setInterval( "window.status = now.toUTCString()", 1000 );
			nowfudge = now - new Date(querystring_current_date);
		}
		now.setTime(now.getTime() - nowfudge );
		now.setTime(now.getTime() + ((0 * 24 + 0) * 60 + 0) * 60 * 1000);
	}	
}		


function GPArrayItem(id, t, ci, co, d) {
	this.sessions = new Array();
	this.urls = new Array();
	this.id = id;
	this.offset = t;
	this.circuitname = ci;
	this.countryname = co;
	this.daterange = d;
	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.scountdown = 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;
	
	gp = grand_prix[currentGPOffset]
	gps = gp.sessions;
	ss = gps[gps.length-1];
	previousGPOffset = currentGPOffset;
	currentSessionOffset = 0;	
 
    for (; currentSessionOffset < gps.length; currentSessionOffset++) {
        s = gps[currentSessionOffset];
        if (s.start > now) {
	        ret.inProgress = false;
	        ret.afterRace = false;
	        break;
        }
        else if (s.end >= now) {
	        ret.inProgress = true;
	        ret.afterRace = false;
	        break;
        }
        else if (s.isGP == true) {
	        ret.inProgress = false;
	        ret.afterRace = true;
	        //console.log("Is After Race");
	        break;
        }
    }

	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);
	ret.scountdown = new Date(s.start - now);
	ret.circuitname = gp.circuitname;
	ret.countryname = gp.countryname;
	ret.daterange = gp.daterange;
	return this;
}


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)?"":"none";
	if (v.display != s)
		v.display = s;
}

function SetTime(sID, iTime) {
	var tiempo = iTime + '';
	//alert( tiempo.length );
	var TimeHTML;
	if ( sID == 'seconds' && iTime < 10 ) {
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersSmall[0]+'</td><td>'+NumbersSmall[iTime]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	} else if ( sID == 'seconds' ) {
		var n1 = tiempo.substring(0,1);
		var n2 = tiempo.substring(1,2);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersSmall[n1]+'</td><td>'+NumbersSmall[n2]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	} else if ( sID == 'days' && iTime >= 100 ) {
		//SetHTML(sID, '0' + iTime);
		//alert( iTime );
		var n1 = tiempo.substring(0,1);
		var n2 = tiempo.substring(1,2);
		var n3 = tiempo.substring(2,3);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersBig[n1]+'</td><td>'+NumbersBig[n2]+'</td><td>'+NumbersBig[n3]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
    } else if (sID == 'days' && iTime>=10 && iTime < 100) {
		//SetHTML(sID, '0' + iTime);
		//alert( iTime );
		var n1 = tiempo.substring(0,1);
		var n2 = tiempo.substring(1,2);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersBig[0]+'</td><td>'+NumbersBig[n1]+'</td><td>'+NumbersBig[n2]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	} else if (sID == 'days' && iTime < 10) {
		//SetHTML(sID, '0' + iTime);
		//alert( iTime );
		//var n1 = tiempo.substring(0,1);
		//var n2 = tiempo.substring(1,2);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersBig[0]+'</td><td>'+NumbersBig[0]+'</td><td>'+NumbersBig[iTime]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	} else if (iTime < 10) {
		//SetHTML(sID, '0' + iTime);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersBig[0]+'</td><td>'+NumbersBig[iTime]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	} else {
		//SetHTML(sID, iTime);
		var n1 = tiempo.substring(0,1);
		var n2 = tiempo.substring(1,2);
		TimeHTML = '<table cellpadding="0" cellspacing="0"><tr><td>'+NumbersBig[n1]+'</td><td>'+NumbersBig[n2]+'</td></tr></table>';
		SetHTML( sID, TimeHTML );
	}
}

function SetHTML(sID, sText) {
	if ($(sID)) {
		$(sID).innerHTML = sText;
	}
}

function ApplyLinks(liID, ahrefID, sURL){
    if ($(liID) && $(ahrefID)){
        $(liID).style.display="";       
        $(ahrefID).href=sURL;
    }   
}

function updateClock() {
	getNow();
	var gp = GPCurrent();	
    
    //$("clockCurrentRace").setStyle('display', '');
    $("clockSubItem").setStyle('display', '');
    
	if (SEASON_ENDED) {	
		// stop countdown at end of season
		//$("clockCurrentRace").setStyle('display', 'none');
		setVisibility("raceon", false);
		setVisibility("endseason", true);
		setVisibility("countdown", false);
		clockMode = 3;
	} else {
		if (gp)	{
			do {
				y = gp.scountdown.getUTCSeconds();
				SetTime('seconds', y);
				n = Math.floor(y / 10);
				if ( n != 5 && clockMode == 1 ) break;					
				
				y = gp.scountdown.getUTCMinutes();
				SetTime('minutes', y);
				n = Math.floor(y / 10);
				if ( n != 5 && clockMode == 1 ) break;

				y = gp.scountdown.getUTCHours();
				SetTime('hours', y);

				y = Math.floor(gp.scountdown.getTime() / (24*3600000));
				SetTime('days', y);
			} while(0);
			
			$('session_name').innerHTML = gp.session + " en:";
			
			if (gp.inProgress) {
				
				
				
				if (clockMode != 2) {
					//alert(clockMode);
					setVisibility("raceon", true);
					setVisibility("endseason", false);
					setVisibility("countdown", false);
					setVisibility("sessionNameHolder", false);
					setVisibility("sleeping", false);
					//setVisibility("raceonlink", true);
					clockMode = 2;
				}
			} else if (gp.afterRace) {
				if (clockMode != 4) {
					setVisibility("raceon", false);
					setVisibility("endseason", false);
					setVisibility("countdown", false);
					//setVisibility("sessionNameHolder", false);
					setVisibility("sleeping", true);
					//setVisibility("raceonlink", false);
					clockMode = 4;
				}
			} else {
				if (clockMode != 2) {
					setVisibility("raceon", true);
					setVisibility("endseason", false);
					setVisibility("countdown", false);
					//setVisibility("sessionNameHolder", false);
					setVisibility("sleeping", false);
					//setVisibility("raceonlink", true);
					clockMode = 2;
				}
				var x, y, n;
				if (clockMode != 1) {
					setVisibility("raceon", false);
					setVisibility("endseason", false);
					setVisibility("countdown", true);
					//setVisibility("sessionNameHolder", true);
					setVisibility("sleeping", false);
					//setVisibility("raceonlink", false);
				}
				clockMode = 1;
			}
		} else {	
			if (clockMode != 3) {
				setVisibility("raceon", false);
				setVisibility("endseason", true);
				setVisibility("countdown", false);
				//setVisibility("sessionNameHolder", false);
				setVisibility("sleeping", false);
				//setVisibility("raceonlink", false);				
			}
			clockMode = 3;
		}
	}

	setTimeout("updateClock()", 1001 - (new Date()).getMilliseconds());

	
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function EndOfTheDay(d)
{
	return new Date(Date.UTC(2000 + (d.getYear()%100), d.getMonth(), d.getDate()+1))
}

window.addEvent('domready', getNow);
window.addEvent('domready', updateClock);