//Constants
var CONSTANTS = {};
	CONSTANTS.BROWSER = navigator.appName;
	CONSTANTS.SERIES = getCookie('vcr_series');
		if (CONSTANTS.SERIES != undefined) {CONSTANTS.SERIES = CONSTANTS.SERIES.toUpperCase();}
	CONSTANTS.RACELIST = {};
		CONSTANTS.RACELIST.NATIONWIDE = new Array();
		CONSTANTS.RACELIST.INDY = new Array();
	CONSTANTS.STANDINGS = {};
		CONSTANTS.STANDINGS.NATIONWIDE = new Array();
		CONSTANTS.STANDINGS.INDY = new Array();
	CONSTANTS.HEADLINES = {};
		CONSTANTS.HEADLINES.NATIONWIDE = new Array();
		CONSTANTS.HEADLINES.INDY = new Array();
	CONSTANTS.IMAGEFILTERS = {driver:undefined,series:CONSTANTS.SERIES,race:undefined};
		if (CONSTANTS.SERIES == 'DUAL') {CONSTANTS.IMAGEFILTERS.series = undefined;}

	CONSTANTS.MODALOBJ = {};

if (window.attachEvent) {
	window.attachEvent('onload',setup);
} else {
	window.addEventListener('load', setup, false);
}

function expand() {
	$('nav').setStyle({'height':'576px'});
	$('header').height='576';
}

function contract() {
	$('header').height='186';
	$('nav').setStyle({'height':'186px'});
}

function setup() {
	writeNav(CONSTANTS.SERIES);
	contract();
	gradient($('gradientLeft'),'#060606','l2r');
	gradient($('gradientRight'),'#060606','r2l');
	writeFooter();
	writeLegal();
	addLike();
	updatePNGs();
}

function addLike() {
	var likebox = $(document.createElement('div'));
	likebox.id='likebox';

	var bgimg = $(document.createElement('img'));
	bgimg.id='likebg';
	bgimg.addClassName('png');
	bgimg.src=CONSTANTS.ROOT+'images/backgrounds/bg_like.png';

	var like = '<iframe id="likeframe" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.verizonchampionshipracing.com&amp;layout=button_count&amp;show_faces=false&amp;width=270&amp;action=like&amp;font=arial&amp;colorscheme=dark&amp;height=20" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:270px; height:20px;" allowTransparency="true"></iframe>';
	likebox.insert(bgimg).insert(like);

	$('centerizer').insert({'top':likebox});
}

function updatePNGs(imgElm) {
	function version() {
		var appVersion = navigator.appVersion;
		var regEx = /MSIE\s\d+.\d+/gi;
		var msieV = new String(regEx.exec(navigator.appVersion));
		var verNum = parseInt(msieV.slice(msieV.indexOf(" ")+1,msieV.length));
		if (verNum < 7) {
			return true;
		} else {
			return false;
		}
	}

	if (CONSTANTS.BROWSER == 'Microsoft Internet Explorer' && version()) {
		var imgs = (imgElm==null) ? $$('.png') : [$(imgElm)];
		for (var i=0;i<imgs.length;i++) {
			var pngimg = $(imgs[i]);
			var existingStyle = pngimg.getAttribute('style').cssText;
			existingStyle = (existingStyle == '') ? '' : existingStyle + ';';
			pngimg.writeAttribute({'style':existingStyle+'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+pngimg.src+'",enabled="true");padding-top:'+pngimg.getDimensions().height+'px'});
		}
	}

}

function gradient(elm,color,dir) {
	var grad_w = elm.getDimensions().width;

	var floatdir = (dir=='r2l') ? 'right' : 'left';

	for (var p=0;p<grad_w;p++) {
		var opac_level = (grad_w-p)/grad_w;
		var col = $(document.createElement('div'));
		col.addClassName('gradientSub');
		col.setStyle({'float':floatdir,'backgroundColor':color});
		col.setOpacity(opac_level);
		elm.appendChild(col);
	}
}

function writeNav(series) {
	var flashvars = {};

	var params = {};
	params.menu = 'false';
	params.quality = 'best';
	params.scale = 'noscale';
	params.salign = 'tl';
	params.align = 'top';
	params.bgcolor = '060606';
	params.wmode = 'transparent';
	params.allowfullscreen = 'false';
	params.allowscriptaccess = 'always';
	params.base='/';
	if (series!=null) {params.vcr_series = series;}

	var attributes = {};
	attributes.id = 'header';
	attributes.name = 'header';

	swfobject.embedSWF(CONSTANTS.ROOT+'flash/VCR_header.swf', 'header', '1296px', '186px', '9.0.0', '', flashvars, params, attributes);
}

function writeFooter() {
	var flashvars = {};

	var params = {};
	params.menu = 'false';
	params.quality = 'best';
	params.scale = 'noscale';
	params.salign = 'tl';
	params.align = 'top';
	params.bgcolor = '000000';
	params.wmode = 'transparent';
	params.allowfullscreen = 'false';
	params.allowscriptaccess = 'always';

	var attributes = {};
	attributes.id = 'footer';
	attributes.name = 'footer';

	swfobject.embedSWF(CONSTANTS.ROOT+'flash/VCR_footer.swf', 'footer', '1296px', '90px', '9.0.0', '', flashvars, params, attributes);

	if ($('floater').offsetTop == 0) {
		makeFooterStick();
	}
}

function makeFooterStick() { //fix for IE6 not supporting position:fixed
	$('floater').setStyle({'position':'absolute','top':(getViewportSize().h+document.viewport.getScrollOffsets().top-$('floater').getDimensions().height)+'px'});
	Event.observe(window,'scroll',makeFooterStick);
}

function writeLegal() {
	var pArr = new Array();

	pArr[0] = $(document.createElement('p'));
	pArr[0].insert("Subject to Customer Agmt. &amp; Calling Plan. V CAST phone &amp; monthly subscription req'd. Add'l charges may apply for premium services. Available on select 3G smartphones. Offers &amp; coverage, varying by service not available everywhere. Ringtones/Ringback Tones/Wallpapers: Charges apply. Network details &amp; coverage maps at vzw.com.");
	pArr[0].setStyle({'margin':'0px 0px 5px 0px','padding':'0px'});

	pArr[1] = $(document.createElement('p'));
	pArr[1].insert("Penske Racing South, Inc. trademarks, including the No. 12 and the likeness of the race car, and race car driver's name and/or likeness are granted by license from Penske Racing South, Inc.");
	pArr[1].setStyle({'margin':'0px 0px 5px 0px','padding':'0px'});

	pArr[2] = $(document.createElement('p'));
	pArr[2].insert("Message and data rates may apply. Subject to Cust. Agmt &amp; Calling Plan.  Add'l charges apply for app.  Offers &amp; coverage not available everywhere. &copy;2010 Verizon &copy;2010 Penske Racing, Inc. IndyCar (and Design) are registered trademarks of Brickyard Trademarks, Inc. used with permission. IZOD is a registered trademark of Phillips-Van Heusen Corporation, used with permission.");
	pArr[2].setStyle({'margin':'0px 0px 5px 0px','padding':'0px'});

	$('legal').update()
	for (var p=0;p<pArr.length;p++) {
		$('legal').insert(pArr[p]);
	};
}

function switchSection(section) {
	setCookie('vcr_series',section.toLowerCase());
	var currPos = $('centerconsole').getStyle('left').replace('px','');
	var stopPos = -505;
	switch (section.toLowerCase()) {
		case 'nationwide':
			if (CONSTANTS.HOMEPAGE=='') {
				$('nationwide_left').appear({duration:1.0});
				$('nationwide_right').appear({duration:1.0});
				$('indy_left').fade({duration:1.0});
				$('indy_right').fade({duration:1.0});
				stopPos = -35;
				//$('centerconsole').setStyle({'left':'-35px'});
			}
			break;
		case 'indy':
			if (CONSTANTS.HOMEPAGE=='') {
				$('indy_left').appear({duration:1.0});
				$('indy_right').appear({duration:1.0});
				$('nationwide_left').fade({duration:1.0});
				$('nationwide_right').fade({duration:1.0});
				stopPos = -972;
				//$('centerconsole').setStyle({'left':'-972px'});
			}
			break;
		case 'dual':
		default:
			if (CONSTANTS.HOMEPAGE=='') {
				$('indy_left').appear({duration:1.0});
				$('indy_right').fade({duration:1.0});
				$('nationwide_left').fade({duration:1.0});
				$('nationwide_right').appear({duration:1.0});
				stopPos = -505;
				//$('centerconsole').setStyle({'left':'-505px'});
			} else {
				location.href='default.htm';
			}
			break;
	}

	if (CONSTANTS.HOMEPAGE=='') {
		new Effect.Move($('centerconsole'),{x:stopPos-currPos});
	}
}


function showDDL(ddlName) {
	$(ddlName).show();
}

function hideDDL(ddlName) {
	$(ddlName).hide();
}

function changeBgColor(elm,newColor) {
	$(elm).ancestors()[0].setStyle({'backgroundColor':newColor});
}

//SHOW CAR LOADER
function readShowcarXML() {
	var request = new Ajax.Request('showcar.xml',{
		method: 'get',
		asynchronous: true,
		onFailure: function() {
			//do something on failure
		},
		onComplete: function() {
			//do something regardless of success/failure
		},
		onSuccess: function(response) {
			//do something on success
			var XMLresponse = response.responseXML;

			var southNode = XMLresponse.getElementsByTagName('south')[0];
			var westNode = XMLresponse.getElementsByTagName('west')[0];
			var northeastNode = XMLresponse.getElementsByTagName('northeast')[0];
			var midwestNode = XMLresponse.getElementsByTagName('midwest')[0];
			var indyNode = XMLresponse.getElementsByTagName('indy')[0];

			var southList = makeEventObj(southNode.getElementsByTagName('event'));
			var westList = makeEventObj(westNode.getElementsByTagName('event'));
			var northeastList = makeEventObj(northeastNode.getElementsByTagName('event'));
			var midwestList = makeEventObj(midwestNode.getElementsByTagName('event'));
			var indyList = makeEventObj(indyNode.getElementsByTagName('event'));

			if (southList.length > 0) { buildRegion('eventList','south',southList); }
			if (westList.length > 0) { buildRegion('eventList','west',westList); }
			if (northeastList.length > 0) { buildRegion('eventList','northeast',northeastList); }
			if (midwestList.length > 0) { buildRegion('eventList','midwest',midwestList); }
			if (indyList.length > 0) { buildRegion('eventList_indy','indy',indyList); }
		}
	});
}

function makeEventObj(XMLnodes) {
	var evtList = new Array();
	for (var ev=0;ev<XMLnodes.length;ev++) {
		var evtObj = new Object();
		var evt = XMLnodes[ev];
		evtObj.evtdate = evt.getAttribute('evtdate');
		evtObj.starttime = evt.getAttribute('starttime');
		evtObj.endtime = evt.getAttribute('endtime');
		evtObj.state = evt.getAttribute('state');
		evtObj.venue = evt.getAttribute('venue');
		evtObj.street = evt.getAttribute('street');

		evtList.push(evtObj);
	}

	return evtList;
}

function buildRegion(table, region, events) {
	var eventTemp = new Template('<tr><td valign="top" class="tdRed">#{evtdate}</td><td valign="top" class="tdRed">#{starttime} - #{endtime}</td><td>#{state}</td><td>#{venue}, #{street}</td></tr>');
	var tableHTML = '';

	if (region != 'indy') {
		tableHTML += '<tr><td colspan="4" class="tdHeader">&nbsp;'+region.toUpperCase()+'</td></tr>';
	}

	tableHTML += '<tr><td>Date</td><td>Time</td><td>State</td><td>Location</td></tr>';
	for (var ev=0;ev<events.length;ev++) {
		tableHTML += eventTemp.evaluate(events[ev]);
	}
	tableHTML += '<tr><td></td><td></td><td></td><td></td></tr>';
	$(table).insert(tableHTML);
}

//MODALS
function buildModal(modaltype,series) {
	var modalOBJ = {}

	var modalBG = $(document.createElement('div'));
	modalBG.id = 'modal_bg';
	modalBG.setStyle({'height':($('nav').getDimensions().height+$('centerconsole').getDimensions().height+$('pods').getDimensions().height+$('legal').getDimensions().height+$('floater').getDimensions().height)+'px'});
	modalBG.setOpacity(.55);

	var modal = $(document.createElement('div'));
	modal.id = 'full'+modaltype;
	modal.setStyle({'top':(document.viewport.getScrollOffsets().top+230)+'px'});
	modal.addClassName('modal');

	var closebtn = $(document.createElement('a'));
	closebtn.id = 'modal_closebtn';
	closebtn.href = 'javascript:closeModal("'+modal.id+'");';
	closebtn.insert('CLOSE X');

	var header = $(document.createElement('img'));
	header.id = 'modal_header';
	header.src = 'images/headers/hdr_'+series.toLowerCase()+'_'+modaltype.toLowerCase()+'.gif';
	header.alt = series + ' '+ modaltype;

	var container = $(document.createElement('div'));
	container.id = 'modal_container';

	var scroller = $(document.createElement('div'));
	scroller.id = 'modal_scroller';
	scroller.addClassName('scroller');
	scroller.insert('<a href="javascript:up(SLIDEROBJ);"><img id="arrow_up" class="arrow_up" src="images/buttons/btn_scroller_up_off.gif" onmouseover="swapImage(this,[\'_off\',\'_on\']);" onmouseout="swapImage(this,[\'_on\',\'_off\']);" alt="up" /></a><div id="handle_holder" class="large_handle_holder"><div id="scroller_handle" class="scroller_handle"></div></div><a href="javascript:down(SLIDEROBJ);"><img id="arrow_down" class="arrow_down" src="images/buttons/btn_scroller_down_off.gif" onmouseover="swapImage(this,[\'_off\',\'_on\']);" onmouseout="swapImage(this,[\'_on\',\'_off\']);" alt="down" /></a>');

	modalOBJ.MODALBG = modalBG;
	modalOBJ.MODAL = modal;
	modalOBJ.CLOSEBTN = closebtn;
	modalOBJ.HEADER = header;
	modalOBJ.CONTAINER = container;
	modalOBJ.SCROLLER = scroller;

	return modalOBJ;
}

function closeModal(modalID) {
	$(modalID).remove();
	$('modal_bg').remove();
}

function scrollit(sliderObj,scrollarea,contentarea,handle_holder,scroller_handle) {
	if ($(scrollarea)) {
		var handle_holder=$(handle_holder);

		sliderObj = new Control.Slider($(scroller_handle),handle_holder,
			{
				axis:'vertical',
				range:$R(0,$(scrollarea).getHeight()-$(contentarea).getHeight()),
				sliderValue:0,
				onSlide: function(val) {
					$(scrollarea).setStyle({'top':-val+'px'});
				},
				onChange: function(val) {
					$(scrollarea).setStyle({'top':-val+'px'});
				}
			}
		);

		return sliderObj;
	}
}

function up(sliderObj) {
	sliderObj.setValue(sliderObj.value-30);
}

function down(sliderObj) {
	sliderObj.setValue(sliderObj.value+30);
}


//HELPERS
function getViewportSize() {
	var bH = document.viewport.getDimensions().height;
	var bW = document.viewport.getDimensions().width;

	var winDims = {
		w: bW,
		h: bH
	};

	return winDims;
}

function swapImage(img,swapAr) {
	var currSrc = img.src;
	var newSrc = currSrc.replace(swapAr[0],swapAr[1]);

	img.src = newSrc;
}

//Handle browser DOM differences with XML reading
function getText(node) {
	if (node.text != undefined) {		//IE
		return node.text.replace(/&amp;/g, '&');
	} else if (node.textContent != undefined) {		//FireFox
		return node.textContent.replace(/&amp;/g, '&');
	}
}

function convertStringToXML(xmlString) {
	var xmldoc;
	if (window.ActiveXObject) {
		if (typeof xmlString == 'string' && xmlString.charAt(0) != "<") {xmlString = xmlString;}
		xmldoc = new ActiveXObject("Microsoft.XMLDOM");
		xmldoc.async = 'false';
		if (xmlString.xml == null) {
			xmldoc.loadXML(xmlString);
		} else {
			xmldoc.loadXML(xmlString.xml);
		}
	} else {
		var xmlparser = new DOMParser();
		xmldoc = xmlparser.parseFromString(xmlString, 'text/xml');
	}

	return xmldoc;
}

function addObserve(elm) {
	elm.observe('mouseover', function(evt) {changeBgColor(this,'#770000');});
	elm.observe('mouseout', function(evt) {changeBgColor(this,'#333333');});
}

function setCookie(cookieName, cookieValue, cookieLengthDays) {
	if (cookieLengthDays != undefined) {
		var expDate = new Date();
		expDate.setTime(expDate.getTime()+(cookieLengthDays*24*60*60*1000));
		var expires = 'expires='+expDate.toGMTString();
	} else {
		var expires = '';
	}

	document.cookie = cookieName+'='+cookieValue+';'+expires;
}
function getCookie(cookieName) {
	cookieName += '=';
	var cookies = document.cookie.split(';');

	for (var i=0;i<=cookies.length-1;i++) {
		var c = cookies[i];
		while (c.charAt(0) == ' ') { c = c.substring(1,c.length); }
		if (c.indexOf(cookieName) == 0) { return c.substring(cookieName.length, c.length); }
	}
	return null;
}
function clearCookie(cookieName) {
	setCookie(cookieName, '', -1);
}
