/*
********************************************************************

	file:	programlist.js
	author:	Rob Cannon
	date:	2003-07-31
	
	This file is protected by copyright.  Unauthorized use is 
	strictly prohibited.

	Copyright (c) 2003 US Off-Track, Inc.  All Rights Reserved.
	
********************************************************************
*/

var mdtePrevDate;
var mdteNextDate;
var marrPrograms;

var mintHeartbeat;
var mstrProgramURL;
var mstrNextDate;
var mstrPrevDate;

function BodyInit() {
	EnableAccountDataTimeout();
	LoadProgramListDataURL ('programlist.aspx');
}


function UpdateProgramList (strSports, strPrograms, strProgramDate, strPrevDate, strNextDate) {
	if (strPrograms != '') {
		if (! GetElement('trSports')) {
			GetElement('divHolder').innerHTML = '<table><tr id="trSports"></tr></table>';
		}
		UpdateSports (strSports);
		UpdatePrograms (strPrograms);
	}
	else
	{
		BlankList ();
	}
	UpdateProgramDate (strProgramDate);
	UpdateNextDate (strNextDate);
	UpdatePrevDate (strPrevDate);
	HideWaitBox(); 

}

function UpdateSports(strSports) {
	var arrSports;
	var divSport; 
	arrSports = strSports.split ('%7F');
	for (i=0;i<arrSports.length;i++) {
	 	if (GetElement('trSports').cells.length < (i+1)) {
			var tdAdd = GetElement('trSports').insertCell(i);
			tdAdd.className = 'programlistcolumn';
			tdAdd.id = 'tdCell' + i;
			divSport = document.createElement ('div'); 
			divSport.className = 'sportname';	
			tdAdd.appendChild (divSport);
		}
		else
		{
			divSport = GetElement('tdCell' + i).firstChild;
		}
		divSport.innerHTML = arrSports[i];
	 }
	 var intIndex;
	 for (intIndex = GetElement('trSports').cells.length-1;intIndex>=arrSports.length;intIndex--) {
			GetElement('trSports').deleteCell(intIndex);
	 }
	
}

function BlankList() {
	GetElement('divHolder').innerHTML = '<div class="sportname">No tracks are currently available for this date.</div>'
}

function UpdatePrograms (strPrograms) {
	
	var divProgram;
	var arrProgram;
	var divRace;
	var spnProgram;
	var cmtProgram;
	var cmtRace;
	marrPrograms = strPrograms.split ('%00');
	for (i=0;i<marrPrograms.length;i++) {
		arrProgram = marrPrograms[i].split ('%09');
		
		
		
		for (j=0;j<arrProgram.length;j++) {
			divProgram = GetElement('divProgram' + i + '_' + j);
			if (! divProgram) {
				divProgram = document.createElement ('div');
				divProgram.id = 'divProgram' + i + '_' + j;
				GetElement('tdCell' + i).appendChild (divProgram);
				divRace = document.createElement ('div');
				divRace.id = 'divRace' + i + '_' + j;
				GetElement('tdCell' + i).appendChild (divRace);
			}	
			UpdateProgram (i, j, arrProgram[j]);
		}
		for (j=arrProgram.length;GetElement('divProgram' + i + '_' + j);j++) {
			RemoveNode(GetElement('divProgram' + i + '_' + j));
			divRace=GetElement('divRace' + i + '_' + j);
			if (divRace) {
				RemoveNode(divRace);
			}
		}
	}
}


function UpdateProgram (intCol, intRow, strProgram) {
	var arrFields;
	var divProgram = GetElement('divProgram' + i + '_' + j);
	var divRace=GetElement('divRace' + i + '_' + j);

	
	arrFields = strProgram.split ('%7F');
	divProgram.innerHTML = arrFields[0];
		
		var strProgramClass;
		var strRaceClass;
		var strLine;
		divProgram.onclick=SelectProgram; 

		switch (arrFields[3].substr(0,1)) {
		
		
			case 'P':
				strProgramClass = 'programadv';
				divProgram.onmouseover=MouseOverAdv;  
				divProgram.onmouseout=MouseOutAdv;
				if (arrFields[3].substr(1) == ':')
					strLine = 'Post Time Pending';
				else
					strLine = 'Post Time ' + LocalTime(arrFields[3].substr(1));
			
				divRace.onmouseover=MouseOverAdvRace; // 'javascript:MouseOver(\'' + divProgram.id + '\',\'programopenover\');'; 
				divRace.onmouseout=MouseOutAdvRace;
				divRace.onclick=SelectRace;
				strRaceClass = 'programlistraceadv'; 
				break;
			
			case 'D': 
				strProgramClass = 'programadv';
				divProgram.onmouseover=MouseOverFut;  
				divProgram.onmouseout=MouseOutFut;
				strLine = 'Race Date ' + arrFields[3].substr(1);
			
				divRace.onmouseover=MouseOverFutRace; // 'javascript:MouseOver(\'' + divProgram.id + '\',\'programopenover\');'; 
				divRace.onmouseout=MouseOutFutRace;
				divRace.onclick=SelectProgramFromRace;
				strRaceClass='programlistraceadv';
				break;
			default:
				strProgramClass = 'programopen';
				divProgram.onmouseover=MouseOverOpen; // 'javascript:MouseOver(\'' + divProgram.id + '\',\'programopenover\');'; 
				divProgram.onmouseout=MouseOutOpen;

				strLine = 'Race ' + arrFields[4];
				if (arrFields[3]!='') {
					// strLine += '<span style="padding-left:7;">&nbsp;&nbsp;&nbsp;&nbsp;' + arrFields[3] + ' MTP</span>';
					strLine += '&nbsp;&nbsp;&nbsp;&nbsp;' + arrFields[3] + ' MTP';
				}
				divRace.onmouseover=MouseOverOpenRace; // 'javascript:MouseOver(\'' + divProgram.id + '\',\'programopenover\');'; 
				divRace.onmouseout=MouseOutOpenRace;
				divRace.onclick=SelectRace;
				strRaceClass = 'programlistrace';
			
		}
		divRace.innerHTML = strLine;
		
		
	if (arrFields[1] == 'C') {
		strProgramClass = 'programclosed';
		divProgram.onmouseover=MouseOverClosed;
		divProgram.onmouseout=MouseOutClosed;
		divProgram.onclick=SelectProgram;

		divRace.innerHTML = '(finished)';
		divRace.onmouseover=MouseOverClosedRace;
		divRace.onmouseout=MouseOutClosedRace;
		strRaceClass = 'programraceclosed';
		divRace.onclick=SelectProgramFromRace;
	}
	
	if (arrFields[1]=='N') {
			strProgramClass = 'programna';
			divProgram.onmouseover=MouseOverNA;
			divProgram.onmouseout=MouseOutNA;
			divProgram.onclick=SelectProgram;

// 			divRace.innerHTML += ' (not betting)';
			divRace.onmouseover=MouseOverNARace;
			divRace.onmouseout=MouseOutNARace;
			strRaceClass = 'programracena';
			divRace.onclick=SelectProgramFromRace;
		}
		
	divProgram.className=strProgramClass;
	divRace.className=strRaceClass;
	
	// if (divProgram.className != strProgramClass + 'over') {divProgram.className=strProgramClass;}
	// if (divRace.className != strRaceClass + 'over') {divRace.className=strRaceClass;}
	
	
}

function UpdateProgramDate(strProgramDate) {
	GetElement('programdate').innerHTML = 'Please click a Track or Race for ' + strProgramDate + ':';
}

function UpdateNextDate(strNextDate) {
	switch (strNextDate) {
		case '':
			GetElement('tdNextDate').innerHTML = '';
			GetElement('tdCurrent').innerHTML = '';
			break;
		case 'Current':
			GetElement('tdNextDate').innerHTML = '';
			GetElement('tdCurrent').innerHTML = 'Current events';
			break;
		default:
			var arrNextDate;
			arrNextDate = strNextDate.split('%7F');
			mdteNextDate = arrNextDate[0];
			GetElement('tdNextDate').innerHTML = 'Next day events (' + arrNextDate[1] + ')';
			mstrNextDate = arrNextDate[1];
			GetElement('tdCurrent').innerHTML = 'Current events';
	}
}

function UpdatePrevDate(strPrevDate) {
	if (strPrevDate=='') {
		GetElement('tdPrevDate').innerHTML = '';
		}
	else {
		var arrPrevDate;
		arrPrevDate = strPrevDate.split('%7F');
		mdtePrevDate = arrPrevDate[0];
		GetElement('tdPrevDate').innerHTML = 'Previous day events (' + arrPrevDate[1] + ')';
		mstrPrevDate = arrPrevDate[1];
	}
}

function GetKeyFromID (strID, intOffset) {
	var intPos = strID.indexOf('_');
	var intCol = strID.substr(intOffset, intPos-intOffset);
	var intRow = strID.substr(intPos+1);
	var arrProgram = marrPrograms[intCol].split ('%09');
	var arrFields = arrProgram[intRow].split ('%7F');
	return arrFields; 
}

function SelectProgram () {
	// GetElement(this.id);
	var arrReturn = GetKeyFromID (this.id, 10);
	
	DisplayWaitBox ('Loading ' + arrReturn[0] + '...');
	DisableProgramTimeout();
	document.location.href ='setprogram.aspx?ProgramKey=' + arrReturn[2];
}

function MouseOverOpen () {
	this.className='programopenover';  
}

function MouseOutOpen () {
	this.className='programopen';  
}

function MouseOverAdv () {
	this.className='programadvover';  
}

function MouseOutAdv () {
	this.className='programadv';  
}


function MouseOverOpenRace () {
	this.className='programlistraceover';  
}

function MouseOutOpenRace () {
	this.className='programlistrace';  
}

function MouseOverAdvRace () {
	this.className='programlistraceadvover';  
}

function MouseOutAdvRace () {
	this.className='programlistraceadv';  
}



function MouseOverFut () {
	this.className='programadvover';  
	this.nextSibling.className='programlistraceadvover';
}

function MouseOutFut () {
	this.className='programadv';  
	this.nextSibling.className='programlistraceadv';
}

function MouseOverFutRace () {
	this.previousSibling.className='programadvover';
	this.className='programlistraceadvover';  
}

function MouseOutFutRace () {
	this.previousSibling.className='programadv';
	this.className='programlistraceadv';  
}


function MouseOverClosed () {
	this.className='programclosedover';  
	this.nextSibling.className='programraceclosedover';
}

function MouseOutClosed () {
	this.className='programclosed';  
	this.nextSibling.className='programraceclosed';
}

function MouseOverClosedRace () {
	this.previousSibling.className='programclosedover';
	this.className='programraceclosedover';
}

function MouseOutClosedRace () {
	this.previousSibling.className='programclosed';
	this.className='programraceclosed';  
}

function MouseOverNA () {
	this.className='programnaover';  
	this.nextSibling.className='programracenaover';
}

function MouseOutNA () {
	this.className='programna';  
	this.nextSibling.className='programracena';
}

function MouseOverNARace () {
	this.previousSibling.className='programnaover';
	this.className='programracenaover';
}

function MouseOutNARace () {
	this.previousSibling.className='programna';
	this.className='programracena';  
}



function LoadPrevDate () {
	DisableProgramTimeout();
	LoadProgramListDataURL('programlist.aspx?ProgramDate=' + mdtePrevDate);
	window.scroll (0,0);
// 	GetElement('programdate').innerHTML = 'Loading Programs...';
	DisplayWaitBox ('Loading Events for ' + mstrPrevDate + '...');
}

function LoadNextDate () {
	DisableProgramTimeout();
	LoadProgramListDataURL('programlist.aspx?ProgramDate=' + mdteNextDate);
	window.scroll (0,0);
	DisplayWaitBox ('Loading Events for ' + mstrNextDate + '...');
//	GetElement('programdate').innerHTML = 'Loading Programs...';
}

function LoadCurrent () {
	DisableProgramTimeout();
	LoadProgramListDataURL('programlist.aspx?ProgramDate=Current');
	window.scroll (0,0);
	DisplayWaitBox ('Loading Current Events...');
//	GetElement('programdate').innerHTML = 'Loading Programs...';
}

function SelectRace () {
	var arrReturn = GetKeyFromID (this.id,7);
	DisableProgramTimeout();
	DisplayWaitBox ('Loading ' + arrReturn[0] + ' Race ' + arrReturn[4] + '...');
	
	document.location.href = 'setrace.aspx?ProgramKey=' + arrReturn[2] + '&RaceNumber=' + arrReturn[4];
	
}

function SelectProgramFromRace () {
	
	var arrReturn = GetKeyFromID (this.id,7);
	DisableProgramTimeout();
	DisplayWaitBox ('Loading ' + arrReturn[0] + '...');
	
	document.location.href = 'setprogram.aspx?ProgramKey=' + arrReturn[2];
}

/*
function DisplayWait (strMessage) {
	var divWait = document.createElement('div');
	divWait.innerHTML = strMessage;
	divWait.className = 'waitbox';
	document.body.appendChild (divWait);
	divWait.style.left = GetElement('divHolder').style.left + (GetElement('divHolder').offsetWidth - divWait.offsetWidth) / 2;
	divWait.style.top = (document.body.clientHeight - divWait.offsetHeight) / 2;

}
*/

function SetProgramTimeout (intTimeout) {
	DisableProgramTimeout();
	mintHeartbeat = window.setTimeout (ProgramTimeoutExpired, intTimeout);
}

function DisableProgramTimeout () {
	if (mintHeartbeat) { 
		window.clearTimeout (mintHeartbeat); 
		mintHeartbeat=null;
	}
}

function ProgramTimeoutExpired () {
	GetElement('ifmProgramListData').src = QueryReady(mstrProgramURL) + 't=' + TimeStamp();
	SetProgramTimeout(15000);
}

function LoadProgramListDataURL(strURL) {
	mstrProgramURL = strURL;
	GetElement('ifmProgramListData').src = QueryReady(strURL) + 't=' + TimeStamp();
	SetProgramTimeout(15000);
}
	

