$(document).ready(function () {
	app.callInProgress = false;
	app.action.racingToday.init();
});

$.extend(app.util, {

	racingToday : {

		buildTrackRow : function(data, rowNbr, tableType) {
			var rowClass = '';
			var trackRow = $('<tr>');
			
			if (rowNbr % 2)
				rowClass = 'even';
			else
				rowClass = 'odd';
				
			trackRow.attr('class', rowClass);
				
			trackRow.append($('<td>').attr('class', 'TrackName').append($('<a>').attr('href', data.trackLink).append(app.util.toProperCase(data.trackName))));
			
			//trackRow.append($('<td>').attr('class', 'TrackName').append(app.util.toProperCase(data.trackName)));

			trackRow.append($('<td>').append($('<a>').attr('href', data.entryLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
			
            if (tableType == 'Today') {
				if (data.changeIndicator == 'Y')
					trackRow.append($('<td>').append($('<a>').attr('href', data.changeLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
				else
					trackRow.append($('<td>').append('&nbsp;'));
			}
            
			if (tableType == 'Today' || tableType == 'Tomorrow') {
				if (data.programIndicator == 'Y')
					trackRow.append($('<td>').append($('<a>').attr('href', data.programLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
				else
					trackRow.append($('<td>').append('&nbsp;'));
			}
			
			if (tableType == 'Today' || tableType == 'Yesterday') {
				if (data.resultIndicator == 'Y')
					trackRow.append($('<td>').append($('<a>').attr('href', data.resultLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
				else
					trackRow.append($('<td>').append('&nbsp;'));
			}

			if (tableType == 'Today' || tableType == 'Yesterday') {
				if (data.videoIndicator == 'Y')
					trackRow.append($('<td>').append($('<a>').attr('href', data.videoLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
				else
					trackRow.append($('<td>').append('&nbsp;'));
			}
			
			if (tableType == 'Today' || tableType == 'Tomorrow') {
				if (data.selectionsIndicator == 'Y')
					trackRow.append($('<td>').append($('<a>').attr('href', data.selectionsLink).append($('<img>').attr('src', '/images/green_button_new.png'))));
				else
					trackRow.append($('<td>').append('&nbsp;'));
			}
			
			return trackRow;
		},
		
		buildHeaderRow : function(tableType) {
			var newRow = $('<tr>');
			newRow.append($('<th>').append('&nbsp;').attr('class', 'TrackName'));
			newRow.append($('<th>').append('Entries'));
            
            if (tableType == 'Today')
				newRow.append($('<th>').append('Changes'));
			
			if (tableType == 'Today' || tableType == 'Tomorrow')
				newRow.append($('<th>').append('Programs'));
				
			if (tableType == 'Today' || tableType == 'Yesterday')
				newRow.append($('<th>').append('Full Charts'));
				
			if (tableType == 'Today' || tableType == 'Yesterday')
			newRow.append($('<th>').append('Replays'));
			
			if (tableType == 'Today' || tableType == 'Tomorrow')
				newRow.append($('<th>').append('Selections'));
		
			return newRow;
		}, 
		
		resetRTTable : function() {
			// app.log("entering resetRTTable");
		
			var rowNbr = 1;
			var headerTable = $("#headerTable").empty();
			var trackTable = $("#trackTable").empty();
			
			headerTable.append(app.util.racingToday.buildHeaderRow('Today'));
			
			var today  = new Date();
		
			app.service.racingToday.tracks(
				function(data){
					$("#rtYesterday").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$("#rtToday").css({'background-color' : '#B6A260', 'color' : 'white'});
					$("#rtTomorrow").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$.each(data, function(index, value) {
						// app.log(rowNbr);
						trackTable.append(app.util.racingToday.buildTrackRow(this, rowNbr, 'Today'));
						rowNbr++;
					});
				},
				today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate()
			);
		}
	}
});

		
$.extend(app.service, {
    cache : {},
    
    cacheExpirationInMinutes : 10,

	racingToday : {
		tracks : function (result, raceDate) {
            if(app.service.cache[raceDate] != undefined && ((new Date).getTime() - app.service.cache[raceDate].cacheTime) <  (app.service.cacheExpirationInMinutes * 60 * 1000))
                result(app.service.cache[raceDate]);
			else{
                app.call("RacingToday/Tracks", {rd: raceDate}, function(data){
                    app.service.cache[raceDate] = data;
                    app.service.cache[raceDate]['cacheTime'] = (new Date()).getTime();
                    result(data);
                });
            }
		}
	}

});

$.extend(app.action, {

	racingToday : {
		init : function () {
			app.log("Getting RacingToday");
			
			var trackTable = $("#trackTable").empty();
			var headerTable = $("#headerTable").empty();
			var today  = new Date();
			var yesterday = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 1);
			var tomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
			
			$("#rtYesterday").click(
				function() {
					var rowNbr = 1;
					app.log('rtYesterday has been clicked');
					
					$("#rtYesterday").css({'background-color' : '#B6A260', 'color' : 'white'});
					$("#rtToday").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$("#rtTomorrow").css({'background-color' : 'transparent', 'color' : '#638F53'});
					trackTable = $("#trackTable").empty();
					headerTable = $("#headerTable").empty();
					headerTable.append(app.util.racingToday.buildHeaderRow('Yesterday'));
			
			
					app.service.racingToday.tracks(
						function(data){
							$.each(data, function(index, value) {
								// app.log(this);
								trackTable.append(app.util.racingToday.buildTrackRow(this, rowNbr, 'Yesterday'));
								rowNbr++;
							});
						},
						yesterday.getFullYear() + '-' + (yesterday.getMonth() + 1) + '-' + yesterday.getDate()
					);
				}
			);

			$("#rtToday").click(
				function() {
					var rowNbr = 1;

					$("#rtYesterday").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$("#rtToday").css({'background-color' : '#B6A260', 'color' : 'white'});
					$("#rtTomorrow").css({'background-color' : 'transparent', 'color' : '#638F53'});
					trackTable = $("#trackTable").empty();
					headerTable = $("#headerTable").empty();
					headerTable.append(app.util.racingToday.buildHeaderRow('Today'));
			
					app.service.racingToday.tracks(
						function(data){
							$.each(data, function(index, value) {
								// app.log(this);
								trackTable.append(app.util.racingToday.buildTrackRow(this, rowNbr, 'Today'));
								rowNbr++;
							});
						},
						today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate()
					)
				}
			);

			$("#rtTomorrow").click(
				function() {
					var rowNbr = 1;

					$("#rtYesterday").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$("#rtToday").css({'background-color' : 'transparent', 'color' : '#638F53'});
					$("#rtTomorrow").css({'background-color' : '#B6A260', 'color' : 'white'});
					trackTable = $("#trackTable").empty();
					headerTable = $("#headerTable").empty();
					headerTable.append(app.util.racingToday.buildHeaderRow('Tomorrow'));
			
					app.service.racingToday.tracks(
						function(data){
							$.each(data, function(index, value) {
								// app.log(this);
								trackTable.append(app.util.racingToday.buildTrackRow(this, rowNbr, 'Tomorrow'));
								rowNbr++;
							});
						},
						tomorrow.getFullYear() + '-' + (tomorrow.getMonth() + 1) + '-' + tomorrow.getDate()
					)
				}
			);

			// app.util.racingToday.resetRTTable();
			
			return false;
		}
	}

});
