//================================================
//================================================
function onStartup(venueID)
{
	onLoadFoldTables();
	
	// run the update immediately
	updateOddsInRace(venueID);
	// schedule updates every 30 seconds
	var intervalString = "updateOddsInRace(" + venueID + ")";
	window.setInterval(intervalString, 30000);
}


//================================================
//================================================
function onLoadFoldTables()
{
	foldTableByClass("completedRace");
	foldTableByClass("upcomingRace");
}

//================================================
//================================================
function onClickShowHideToggle(clickedOn)
{	
	var parent = clickedOn.parentNode;
	
	while (parent.tagName != "TABLE")
	{
		parent = parent.parentNode;
	}
	
	toggleTable(parent);
										
	if (clickedOn.className == "closeState")
		$(clickedOn).replace('<img src="images/open.gif" id="open" class="openState" onclick="onClickShowHideToggle(this);" style=\"cursor:hand;cursor:pointer;\" alt=\"Click to Open or Close Race Data\"/>');
	else
		$(clickedOn).replace('<img src="images/close.gif" id="close" class="closeState" onclick="onClickShowHideToggle(this);" style=\"cursor:hand;cursor:pointer;\" alt=\"Click to Open or Close Race Data\"/>');
}

//================================================
//================================================
function toggleTable(table)
{
	($(table).descendants()).each(function(elem, index)
										{ 
											if (elem.className == "hideable")
												$(elem).toggle();
										});
}

//================================================
//================================================
function foldTableByClass(tableClass)
{
	$A(document.getElementsByClassName(tableClass)).each(function(tableElem, tableIndex)
													{
														($(tableElem).descendants()).each(
																		function(elem, index)
																		{ 
																			if (elem.className == "hideable")
																				$(elem).toggle();
																		});
													});

}

//================================================
//================================================
function updateOddsInRace(venueID)
{
	new Ajax.Request(
				"/dsi2007/LiveScratches.aspx?EventID=0&VenueID=" + venueID,
				{
					method: 'get',
					onComplete: updateOdds
				});		
}


//================================================
//================================================
function updateOdds(transport) {
    var responseXml = transport.responseXML;
    var resultsList = responseXml.getElementsByTagName("ObjectInfo/Object");
    var eventInfo = responseXml.getElementsByTagName("EventInfo");
	var currentRaceEventID = 0;

	try
	{	
	// set parent table
	if (resultsList.length > 0)
	{
		try 
		{
			// don't bother if odds are final...
			var oddsType = eventInfo[0].getAttribute("OddsType");
			if (oddsType == "F") 
			{
				return;
			}
			
			horseID = resultsList[0].getAttribute("ID");
			if (horseID)
			{
				var parent = $("horseOdds_" + horseID).parentNode;
				while (parent.tagName != "TABLE")
				{
					parent = parent.parentNode;
				}
				$(parent).className = "currentRace";
				// and the containing table...
				
				parent = parent.parentNode;
				while (parent.tagName != "TABLE")
				{
					parent = parent.parentNode;
				}
				$(parent).className = "currentRaceHeader";
				currentRaceEventID = GetEventIDFromTable(parent);
			}
		}
		catch (e) {}
	}
	
	if (currentRaceEventID != 0)
	{
		var currents = document.getElementsByClassName('currentRaceHeader');
		$A(currents).each(function (elem, index) 
									{
										var eventID = GetEventIDFromTable(elem);
										if (eventID != currentRaceEventID)
										{
											markPreviousRaceAsComplete(eventID, currentRaceEventID);
										}
									});
	}
	
	if (resultsList.length > 0)
	{
		// scroll to current race
		if ((location.hash == null) || (location.hash == ""))
		{
			var currentRaceID = currentRaceEventID + "_raceHeader";
			location.hash = currentRaceID;
		}
	}
	
    for (i = 0; i < resultsList.length; i++)
    {
		var raceStatus = resultsList[i].getAttribute("RaceStatus");
		if (raceStatus == "3")
		{
			// horse scratched
			var horseID = resultsList[i].getAttribute("ID");
			var oddsElem = $("horseOdds_" + horseID);
			if (oddsElem) 
			{ 
				oddsElem.innerHTML = "SCR"; 
				SetCurrentRaceRowColor(oddsElem.parentNode);
			}
		}
		else if (raceStatus == "6")
		{
			// horse scratched
			var horseID = resultsList[i].getAttribute("ID");
			var oddsElem = $("horseOdds_" + horseID);
			if (oddsElem) 
			{ 
				oddsElem.innerHTML = "DNF"; 
				SetCurrentRaceRowColor(oddsElem.parentNode);
			}
		}
		else if (raceStatus == "7")
		{
			// horse scratched
			var horseID = resultsList[i].getAttribute("ID");
			var oddsElem = $("horseOdds_" + horseID);
			if (oddsElem) 
			{ 
				oddsElem.innerHTML = "ERR"; 
				SetCurrentRaceRowColor(oddsElem.parentNode);
			}
		}
		else
		{
			// update odds if not "---/1"
			var horseID = resultsList[i].getAttribute("ID");
			var horseOdds = resultsList[i].getAttribute("Odds");
			
			if ((horseOdds != "-") && (horseOdds != "-/1") && (horseOdds != "---") && (horseOdds != "---/1"))
			{
				var oddsElem = $("horseOdds_" + horseID);				
				horseOdds = horseOdds.replace("/1", "");
				if (oddsElem) 
				{ 
					oddsElem.innerHTML = horseOdds; 
					SetCurrentRaceRowColor(oddsElem.parentNode);
				}	
			}
			else
			{
				var oddsElem = $("horseOdds_" + horseID);
				if (oddsElem) 
				{ 
					oddsElem.innerHTML = "SCR"; 
					SetCurrentRaceRowColor(oddsElem.parentNode);
				}
			}	
		}
    }
    
    if (resultsList.length > 0)
	{
		// scroll to current race
		if ((location.hash == null) || (location.hash == ""))
		{
			var currentRaceID = currentRaceEventID + "_raceHeader";
			location.hash = currentRaceID;
		}
	}
	
    }
    catch (e)
    {
		alert(e);
    }
}



//===========================================================
//===========================================================
function GetEventIDFromTable(tableElem)
{
	var tableID = $(tableElem).id;
	var re = new RegExp("_raceHeader" , "g");
	var eventID = tableID.replace(re, "");

	return(eventID);
}


//===========================================================
//===========================================================
function SetCurrentRaceRowColor(rowElem)
{
	if ($(rowElem).bgColor != "#ffffff")
	{
		$(rowElem).bgColor = "#ffcccc";
	}
}

//================================================
//================================================
function markPreviousRaceAsComplete(eventID, currentRaceEventID)
{
	request = new Ajax.Request("/dsi2007/DailyProgramRefresh.aspx?EventID=" + eventID, {
							method: 'get',
							onComplete: function(transport) {
								$(eventID + "_raceHeader").replace(transport.responseText);
								toggleTable($(eventID + "_raceHeader"));
								
								// scroll to current race
								var currentRaceID = currentRaceEventID + "_raceHeader";
								location.hash = currentRaceID;
							}
						});
	
}

//================================================
//================================================
function submitAction()
{
	var eventIDString = "";
	
	try {
		$(DailyProgramForm).getInputs('checkbox').each(function(elem, index) { 
										if (elem.getValue() != null)
										{
											if (eventIDString.length > 0)
											{
												eventIDString = eventIDString + ",";
											}
											eventIDString = eventIDString + elem.getValue();
										}
									});
	} catch (e)
	{}
	
	if (eventIDString != "")
	{								
		var mobileURL = "/dsi2007/PublicMobileAlert.aspx?EventID=" + eventIDString;
		window.location = mobileURL;
	}
}