CONSTANTS.ROOT = '';
CONSTANTS.HOMEPAGE = '';

var SLIDEROBJ;

document.observe('dom:loaded', function(evt) {hpSetup()});

function hpSetup() {
	loadSchedules();
	loadStandings();
	loadHeadlines('news_Nationwide','nationwide');
	loadHeadlines('news_Indy','indy');
	loadplayerN();
	loadplayerI();
	if (CONSTANTS.SERIES != null) {switchSection(CONSTANTS.SERIES);}
	initPods();
}

function loadIntro() {
	$('introHolder').setStyle({'height':$('maincontent').getDimensions().height+$('pods').getDimensions().height+$('floater').getDimensions().height+'px'});
	if (getCookie('intro') == null) {
		var flashvars = {
		};

		var params = {
			quality: "high",
			wmode: "transparent",
			scale: "noscale",
			allowScriptAccess: "always"
		};

		var attributes = {
			id: "flsOutput",
			name: "flsOutput"
		};

		swfobject.embedSWF(CONSTANTS.ROOT+'flash/intro.swf', 'flsOutput', '1024', '525', '9.0.0', '', flashvars, params, attributes);
	} else {
		setCookie('intro','set');
		$('introHolder').remove();
	}
}

function redirect() {
	setCookie('intro','set');
	$('introHolder').fade({duration:1.0});
}

function skipIntro() {
	setCookie('intro','set');
	$('introHolder').remove();
}

//Schedules
function loadSchedules() {
	var request = new Ajax.Request('xml/schedule.xml',{
		method: 'get',
		asynchronous: true,
		onFailure: function() {
			//alert('fail');
		},
		onComplete: function() {
			//do something regardless of success/failure
		},
		onSuccess: function(response) {
			//do something on success
			var XMLresponse = response.responseXML;

			var nationwideNode = XMLresponse.getElementsByTagName('nationwide')[0];
			var indyNode = XMLresponse.getElementsByTagName('indy')[0];

			CONSTANTS.RACELIST.NATIONWIDE = makeRaceObj(nationwideNode.getElementsByTagName('race'));
			CONSTANTS.RACELIST.INDY = makeRaceObj(indyNode.getElementsByTagName('race'));

			buildShortSchedules();
		}
	});
}

function makeRaceObj(XMLnodes) {
	var raceList = new Array();
	for (var r=0;r<XMLnodes.length;r++) {
		var raceObj = new Object();
		var race = XMLnodes[r];
		raceObj.racedate = race.getAttribute('racedate');
		raceObj.racename = race.getAttribute('racename');
		raceObj.racetrack = race.getAttribute('track');
		raceObj.racelocation = race.getAttribute('location');
		raceObj.channel = race.getAttribute('channel');
			raceObj.channel = (raceObj.channel == '') ? 'NEED CHANNEL' : raceObj.channel;
		raceObj.icon = race.getAttribute('icon');
			raceObj.icon = (raceObj.icon == '') ? 'null.gif' : raceObj.icon;
		raceObj.racetime = race.getAttribute('racetime');
			raceObj.racetime = (raceObj.racetime == '') ? 'NEED TIME' : raceObj.racetime;
		raceObj.evenodd = (r%2) ? 'row_even' : 'row_odd';

		raceList.push(raceObj);
	}

	return raceList;
}

function buildShortSchedules() {
	var month = new Date().getMonth()+1;
		month = (month < 10) ? '0'+month.toString() : month.toString();
	var day = new Date().getDate();
		day = (day < 10) ? '0'+day.toString() : day.toString();
	var year = new Date().getFullYear().toString().replace('20','');

	var today = month+'.'+day+'.'+year;

	var races_n = new Array();
	var races_i = new Array();

	var raceList_n = new Array();
	var raceList_i = new Array();

	for (var r=0;r<CONSTANTS.RACELIST.NATIONWIDE.length;r++) {
		if (CONSTANTS.RACELIST.NATIONWIDE[r].racedate > today) {
			var truncateValue = 24;
			var nationwideRaceNameText = CONSTANTS.RACELIST.NATIONWIDE[r].racename;
			var nationwideRaceDateText = CONSTANTS.RACELIST.NATIONWIDE[r].racedate;
			var nationwideRaceDetails;
			if(nationwideRaceNameText.length > truncateValue){
				var str = nationwideRaceNameText.substring(truncateValue,nationwideRaceNameText.length);
				nationwideRaceNameText = nationwideRaceNameText.replace(str,"...");
			}
			nationwideRaceDetails = nationwideRaceDateText+"&nbsp;"+nationwideRaceNameText;
			races_n.push(CONSTANTS.RACELIST.NATIONWIDE[r]);
			raceList_n.push(nationwideRaceDetails);
		}
		if (races_n.length == 3) {
			break;
		}
	}
	for (var r=0;r<CONSTANTS.RACELIST.INDY.length;r++) {
		if (CONSTANTS.RACELIST.INDY[r].racedate > today) {
			var truncateValue = 24;
			var indyRaceNameText = CONSTANTS.RACELIST.INDY[r].racename;
			var indyRaceDateText = CONSTANTS.RACELIST.INDY[r].racedate;
			var indyRaceDetails;
			if(indyRaceNameText.length > truncateValue){
				var str = indyRaceNameText.substring(truncateValue,indyRaceNameText.length);
				indyRaceNameText = indyRaceNameText.replace(str,"...");
			}
			indyRaceDetails = indyRaceDateText+"&nbsp;"+indyRaceNameText;
			races_i.push(CONSTANTS.RACELIST.INDY[r]);
			raceList_i.push(indyRaceDetails);
		}
		if (races_i.length == 3) {
			break;
		}
	}

	$('nextrace_n_name').update(races_n[0].racename);
	$('nextrace_n_datetime').update(races_n[0].racedate + ' ' + races_n[0].racetime);
	$('nextrace_n_chan').update(races_n[0].channel);

	$('racelist_n_1').update(raceList_n[1]);
	$('racelist_n_1').title = races_n[1].racedate+' '+races_n[1].racename;

	$('racelist_n_2').update(raceList_n[2]);
	$('racelist_n_2').title = races_n[2].racedate+' '+races_n[2].racename;

	$('nextrace_i_name').update(races_i[0].racename);
	$('nextrace_i_datetime').update(races_i[0].racedate + ' ' + races_i[0].racetime);
	$('nextrace_i_chan').update(races_i[0].channel);

	$('racelist_i_1').update(raceList_i[1]);
	$('racelist_i_2').update(raceList_i[2]);

	$('racelist_i_1').title = races_i[1].racedate+' '+races_i[1].racename;
	$('racelist_i_2').title = races_i[2].racedate+' '+races_i[2].racename;
}

function showFullSchedule(series) {
	var modalOBJ = buildModal('Schedule',series);
	$('centerizer').insert(modalOBJ.MODALBG);

	var modal = modalOBJ.MODAL;

	modal.insert(modalOBJ.CLOSEBTN);
	modal.insert(modalOBJ.HEADER);
	modal.insert(modalOBJ.CONTAINER);
	modal.insert(modalOBJ.SCROLLER);

	var scrollerarea = $(document.createElement('div'));
	scrollerarea.id = 'modal_scrollarea';
	modalOBJ.CONTAINER.insert(scrollerarea);

	modal.insert('<div id="modal_table_header" class="modal_table"><div class="sched_1">DATE</div><div class="sched_2">EVENT</div><div class="sched_3">TRACK</div><div class="sched_4">LOCATION</div></div>');
	var raceTemp = new Template('<div class="#{evenodd}"><img class="png rowborder" src="images/backgrounds/sched_row.png" /><div class="rowinner"></div><div class="row_holder"><div class="sched_1">#{racedate}</div><div class="sched_2"><p style="line-height:10px;margin:0px;padding:30px 0px;">#{racename}</p></div><div class="sched_3"><img class="png track" src="images/tracks/#{racetrack}" /></div><div class="sched_4"><p style="line-height:10px;margin:0px;padding:30px 0px;">#{racelocation}</p></div></div></div>');
	var raceTable = $(document.createElement('div'));
	raceTable.id = 'racetable';
	raceTable.addClassName('modal_table');
	for (var r=0;r<CONSTANTS.RACELIST[series].length;r++) {
		raceTable.insert(raceTemp.evaluate(CONSTANTS.RACELIST[series][r]));
	}
	scrollerarea.insert(raceTable);

	$('centerizer').insert(modal);
	$$('.row_even .rowinner').invoke('setOpacity','.08');

	SLIDEROBJ = scrollit(SLIDEROBJ,'modal_scrollarea','modal_container','handle_holder','scroller_handle');
	updatePNGs();
}

//Standings
function loadStandings() {
	var request = new Ajax.Request('xml/standings.xml',{
		method: 'get',
		asynchronous: true,
		onFailure: function() {
			//alert('fail');
		},
		onComplete: function() {
			//do something regardless of success/failure
		},
		onSuccess: function(response) {
			//do something on success
			var XMLresponse = response.responseXML;

			var nationwideNode = XMLresponse.getElementsByTagName('nationwide')[0];
			var indyNode = XMLresponse.getElementsByTagName('indy')[0];

			CONSTANTS.STANDINGS.NATIONWIDE = makeDriverObj(nationwideNode.getElementsByTagName('driver'));
			CONSTANTS.STANDINGS.INDY = makeDriverObj(indyNode.getElementsByTagName('driver'));

			buildShortStandings();
		}
	});
}

function makeDriverObj(XMLnodes) {
	var driverList = new Array();
	for (var d=0;d<XMLnodes.length;d++) {
		var driverObj = new Object();
		var driver = XMLnodes[d];
		driverObj.rank = d+1;
		driverObj.drivername = driver.getAttribute('drivername');
		driverObj.points = parseInt(driver.getAttribute('points'));
		driverObj.wins = driver.getAttribute('wins');
		driverObj.delta = driver.getAttribute('delta');
		driverObj.behind = (d==0) ? 0 : driverObj.points-driverList[0].points;

		driverList.push(driverObj);
	}

	return driverList;
}

function buildShortStandings() {
	var standingsTemp = new Template('<div class="standings_info"><p class="col1">#{rank}</p><p class="col2">#{drivername}</p><p class="col3">#{delta}</p></div>');
	for (var d=0;d<6;d++) {
		$$('#standings_n div.standings_infolist')[0].insert(standingsTemp.evaluate(CONSTANTS.STANDINGS.NATIONWIDE[d]));
		$$('#standings_i div.standings_infolist')[0].insert(standingsTemp.evaluate(CONSTANTS.STANDINGS.INDY[d]));
	}

	$$('#standings_n div.standings_infolist')[0].insert('<div class="standings_info" style="border:none;"><p class="pillbutton pill_155" style="text-transform:none;margin:0px auto;"><a href="javascript:showFullStandings(\'NATIONWIDE\');" name="&lid=view+complete+standings+clicked">View Complete Standings</a></p></div>');
	$$('#standings_i div.standings_infolist')[0].insert('<div class="standings_info" style="border:none;"><p class="pillbutton pill_155" style="text-transform:none;margin:0px auto;"><a href="javascript:showFullStandings(\'INDY\');" name="&lid=view+complete+standings+clicked">View Complete Standings</a></p></div>');
}

function showFullStandings(series) {
	var modalOBJ = buildModal('Standings',series);
	$('centerizer').insert(modalOBJ.MODALBG);

	var modal = modalOBJ.MODAL;

	modal.insert(modalOBJ.CLOSEBTN);
	modal.insert(modalOBJ.HEADER);
	modal.insert(modalOBJ.CONTAINER);
	modal.insert(modalOBJ.SCROLLER);

	var scrollerarea = $(document.createElement('div'));
	scrollerarea.id = 'modal_scrollarea';
	modalOBJ.CONTAINER.insert(scrollerarea);

	modal.insert('<div id="modal_table_header" class="modal_table"><div class="stand_1">RANK</div><div class="stand_2">NAME</div><div class="stand_3">POINTS</div><div class="stand_4">BEHIND</div><div class="stand_5">WINS</div><div class="stand_6">+ / -</div></div>');
	var standingsTemp = new Template('<div class="#{evenodd}"><img class="png rowborder" src="images/backgrounds/stand_row.png" /><div class="rowinner"></div><div class="row_holder"><div class="stand_1">#{rank}</div><div class="stand_2">#{drivername}</div><div class="stand_3">#{points}</div><div class="stand_4">#{behind}</div><div class="stand_5">#{wins}</div><div class="stand_6">#{delta}</div></div></div>');
	var standingsTable = $(document.createElement('div'));
	standingsTable.id = 'standingstable';
	standingsTable.addClassName('modal_table');
	for (var s=0;s<CONSTANTS.STANDINGS[series].length;s++) {
		CONSTANTS.STANDINGS[series][s].evenodd = (s%2) ? 'row_even' : 'row_odd';
		standingsTable.insert(standingsTemp.evaluate(CONSTANTS.STANDINGS[series][s]));
	}
	scrollerarea.insert(standingsTable);

	$('centerizer').insert(modal);
	$$('.row_even .rowinner').invoke('setOpacity','.08');

	SLIDEROBJ = scrollit(SLIDEROBJ,'modal_scrollarea','modal_container','handle_holder','scroller_handle');
	updatePNGs();
}

//Headlines
function loadHeadlines(feed,series) {
	var request = new Ajax.Request('proxy.rss?id='+feed,{
		method: 'get',
		asynchronous: true,
		onFailure: function() {
			//alert('fail');
		},
		onComplete: function() {
			//do something regardless of success/failure
		},
		onSuccess: function(response) {
			//do something on success
			var XMLresponse = convertStringToXML(response.responseText);

			var newsNode = XMLresponse.getElementsByTagName('news')[0];

			CONSTANTS.HEADLINES[series.toUpperCase()] = makeNewsObj(newsNode.getElementsByTagName('story'));

			buildHeadlinePreview(series);
		}
	});
}

function makeNewsObj(XMLnodes) {
	var newsList = new Array();
	for (var r=0;r<XMLnodes.length;r++) {
		var newsObj = new Object();
		var newsitem = XMLnodes[r];
		newsObj.index = r;
		newsObj.dateval = getText(newsitem.getElementsByTagName('date')[0]);
		newsObj.headline = getText(newsitem.getElementsByTagName('title')[0]);
		newsObj.link = getText(newsitem.getElementsByTagName('link')[0]);
		newsObj.imagepath = getText(newsitem.getElementsByTagName('image')[0]);
		newsObj.thumbpath = newsObj.imagepath.replace('/full/','/thumb/');
		newsObj.fullarticle = getText(newsitem.getElementsByTagName('body')[0]);
		newsObj.snippet = getText(newsitem.getElementsByTagName('teaser')[0]);

		newsList.push(newsObj);
	}

	return newsList;
}

function buildHeadlinePreview(series) {
	var ni = series.charAt(0);
	for (var n=0;n<6;n++) {
		var headlineObj = CONSTANTS.HEADLINES[series.toUpperCase()][n];

		var itemdiv = $(document.createElement('div'));
		itemdiv.id='headlines_'+ni+'_'+n;
		itemdiv.setStyle({'display':'none'});

		var imgElm = $(document.createElement('img'));
		imgElm.id='headline_'+ni+'_img_'+n;
		imgElm.addClassName('headlines_'+ni+'_img');
		imgElm.src = headlineObj.imagepath;

		var headlineblock = $(document.createElement('div'));
		headlineblock.id = 'headlines_'+ni+'_text_'+n;
		headlineblock.addClassName('hdln_text');
		headlineblock.setOpacity('.65');

		var headline = $(document.createElement('p'));
		headline.id='headlines_'+ni+'_headline_'+n;
		headline.addClassName('headline');
		headline.insert(headlineObj.headline.truncate(70));

		var subhead = $(document.createElement('p'));
		subhead.id='headlines_'+ni+'_subhead_'+n;
		subhead.addClassName('subhead');
		subhead.insert(headlineObj.subhead);

		var readmore = $(document.createElement('p'));
		readmore.id='headlines_'+ni+'_readmore_'+n;
		readmore.addClassName('readmore');
		readmore.innerHTML='<a href="javascript:showFullArticle(\''+series.toUpperCase()+'\','+n+');" name="&lid='+series+'+headlines+read+more">READ MORE &gt;&gt;</a>';

		headlineblock.insert(headline).insert(subhead).insert(readmore);
		itemdiv.insert(imgElm);
		itemdiv.insert(headlineblock);
		$('headlines_'+ni+'_img_hldr').insert(itemdiv);
	}

	$('headlines_'+ni+'_0').show();
	setInterval('rotateHeadlines("'+ni+'")',3000);
}

var headlineNum = {'n':-1,'i':-1};
function rotateHeadlines(series) {
	headlineNum[series] = (headlineNum[series] != 4) ? headlineNum[series]+1 : 0;
	$('headlines_'+series+'_circles').src = 'images/graphics/circles_'+headlineNum[series]+'.gif';
	$('headlines_'+series+'_'+((headlineNum[series]-1!= -1)?headlineNum[series]-1:4)).hide();
	$('headlines_'+series+'_'+headlineNum[series]).show();
}

function showFullArticle(series,idx) {
	if($('fullHeadlines')) {
		$('fullHeadlines').remove();
	}
	var modalOBJ = buildModal('Headlines',series);
	if(!$('modal_bg')) {
		$('centerizer').insert(modalOBJ.MODALBG);
	}

	var modal = modalOBJ.MODAL;

	modal.insert(modalOBJ.CLOSEBTN);
	modal.insert(modalOBJ.HEADER);
	modal.insert(modalOBJ.CONTAINER);
	modal.insert(modalOBJ.SCROLLER);

	var scrollerarea = $(document.createElement('div'));
	scrollerarea.id = 'modal_scrollarea';
	modalOBJ.CONTAINER.insert(scrollerarea);

	modal.insert('<div id="modal_table_header" class="modal_table headlines"><p class="headlines_headline">'+CONSTANTS.HEADLINES[series.toUpperCase()][idx].headline.toUpperCase()+'</p></div>');
	var newsTemp = new Template('<img id="newsimg" src="#{imagepath}" /><div id="newsbody">#{fullarticle}</div>');
	var newsTable = $(document.createElement('div'));
	newsTable.id = 'newstable';
	newsTable.addClassName('modal_table');
	newsTable.insert(newsTemp.evaluate(CONSTANTS.HEADLINES[series][idx]));
	scrollerarea.insert(newsTable);

	var viewArchive = $(document.createElement('a'));
	viewArchive.id = 'modal_archivelink';
	viewArchive.href = 'javascript:showNewsArchive("'+series.toUpperCase()+'");';
	viewArchive.insert('VIEW ARCHIVE');
	modal.insert(viewArchive);

	$('centerizer').insert(modal);
}

function showNewsArchive(series) {
	$('fullHeadlines').remove();

	var modalOBJ = buildModal('Headlines',series);

	var modal = modalOBJ.MODAL;

	modal.insert(modalOBJ.CLOSEBTN);
	modal.insert(modalOBJ.HEADER);
	modal.insert(modalOBJ.CONTAINER);
	modal.insert(modalOBJ.SCROLLER);

	var scrollerarea = $(document.createElement('div'));
	scrollerarea.id = 'modal_scrollarea';
	modalOBJ.CONTAINER.insert(scrollerarea);

	var archiveTemp = new Template('<div class="archivearticle"><img class="archive_thm" src="#{thumbpath}" /><div class="archive_text"><p class="archive_head"><a class="archive_head" href="javascript:showFullArticle(\''+series.toUpperCase()+'\',#{index});">#{headline}</a></p><p class="archive_snip">#{snippet}</p></div></div><img src="images/graphics/arch_div.png" class="archive_divider" />');
	var archiveTable = $(document.createElement('div'));
	archiveTable.id = 'archivetable';
	archiveTable.addClassName('modal_table');
	for (var a=0;a<CONSTANTS.HEADLINES[series].length;a++) {
		archiveTable.insert(archiveTemp.evaluate(CONSTANTS.HEADLINES[series][a]));
	}

	scrollerarea.insert(archiveTable);

	$('centerizer').insert(modal);
}

function loadplayerN() {
	var flashvars = {
		config : CONSTANTS.ROOT+'xml/nationwideConfig.xml',
		section : 'nationwide',
		playerWidth : 291,
		playerHeight : 167
	};

	if(typeof hbx != "undefined")
	{
		flashvars.mlc = hbx.mlc;
	}

	// uncomment the wmode below to make flash transparent
	var params = {
		wmode: "transparent",
		allowfullscreen : 'false',
		allowscriptaccess : 'always'
	};

	var attributes = {
	  id: "videoplayer_n",
	  name: "videoplayer_n"
	};

	swfobject.embedSWF(CONSTANTS.ROOT+"flash/videoPlayer.swf", "videoplayer_n", "100%", "100%", "9.0.124", false, flashvars, params, attributes);
}

function loadplayerI() {
	var flashvars = {
		config : CONSTANTS.ROOT+'xml/indyConfig.xml',
		section : 'indycar',
		playerWidth : 291,
		playerHeight : 167
	};

	if(typeof hbx != "undefined")
	{
		flashvars.mlc = hbx.mlc;
	}

	// uncomment the wmode below to make flash transparent
	var params = {
		wmode: "transparent",
		allowfullscreen : 'false',
		allowscriptaccess : 'always'
	};
	var attributes = {
	  id: "videoplayer_i",
	  name: "videoplayer_i"
	};
	swfobject.embedSWF(CONSTANTS.ROOT+"flash/videoPlayer.swf", "videoplayer_i", "100%", "100%", "9.0.124", false, flashvars, params, attributes);
}
