var displayTerminal = true;

var flights = null;

var interfaceLock = false;

var arrivalsUrl = '/flightinformation/arrivals.json';
var departuresUrl = '/flightinformation/departures.json';

var currentDate = null;
var currentAOrD = 'A';
var currentFreeTextSearch = '';

function loadArrivals(func)
{
	loadJson(arrivalsUrl, func);
}

function showArrivals()
{
	loadArrivals(function() { renderResults(currentFreeTextSearch); }); 
	currentAOrD = 'A';
	$('#modeHeading').html('Arriving From');
}

function loadDepartures(func)
{
	loadJson(departuresUrl, func);
}

function showDepartures()
{
	loadDepartures(function() { renderResults(currentFreeTextSearch); }); 
	currentAOrD = 'D';
	$('#modeHeading').html('Departing To');
}

function loadJson(jsonUrl, func)
{
	$.ajax({    
		url: jsonUrl,  
		cache: false,
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		beforeSend: function(x) {
			if(x && x.overrideMimeType) {
				x.overrideMimeType("application/json; charset=UTF-8");
			}
		},
		success: function(data){
			flights = data.flights;
			func();
		},
		error: function (XMLHttpRequest, textStatus, errorThrown) {	}
	});
}

function doSearch()
{
	currentFreeTextSearch = document.getElementById('freeTextSearch').value;
	currentAOrD = $("input[name='searchAOrD']:checked").val(); 
	
	if(currentAOrD == 'A') showArrivals();
	else showDepartures();
	
	$('.flight_table_wrapper').css({ height: "auto" });
	$('#content-wrap div').removeClass('last');
	$('#content-wrap').css({ background: "none" });
}

function renderResults(searchText)
{
	if (searchText.indexOf("e.g.") == 0)
		searchText = "";
		
	searchText = searchText.toLowerCase();
	
	var totalRecords = 0;
	
	$("#flight-table tr:gt(0)").remove();
	
	$.each(flights, function(i, item)
	{
		if (flightFuzzyMatchesSearchText(item, searchText))
		{
			renderFlight(item);
			totalRecords++;
		}
	});
		
	if(totalRecords == 0)
	{
		$("#flight-table tr:last").after('<tr><td colspan="5">Sorry, there were no flights which matched your search</td></tr>');
	}
}

function flightFuzzyMatchesSearchText(flight, searchText)
{
	searchText = searchText.toLowerCase();

	var flightNumber = flight.flightNumber.toLowerCase().replace(/ /g, "");
	var searchTextFlightNumber = searchText.replace(/ /g, "");

	if (flightNumber.indexOf(searchTextFlightNumber) != -1) return true;

	if (flight.destination.toLowerCase().match(searchText)) return true;

	return false;
}

function renderFlight(flight)
{
	var row = '';

	if(currentDate == null || currentDate != flight.schdDate)
	{
		row = '<tr><th colspan="5" class="row_date">' + flight.schdDate + '</td></tr>';
		currentDate = flight.schdDate;
	}
	
	var terminal = flight.terminal;
	var terminalIndex = 1;
	
	if(terminal == 'T1')
		terminalIndex = 1;
	else if(terminal == 'T2')
		terminalIndex = 2;
	else if(terminal == 'T3')
		terminalIndex = 3;
	
	row += '<tr>';
	row += '<td class="row2"><img src="/manweb.nsf/AttachmentsByTitle/t'+ terminalIndex + '_small.gif/$FILE/t' + terminalIndex + '_small.gif" alt="' + terminal + '" /></td>';
	row += '<td class="row3">' + flight.flightNumber + '</td>';
	row += '<td class="row4">' + flight.schdTime + '</td>' ;
	row += '<td class="row5">' + flight.destination + '</td>' ;
	row += '<td class="row6">' + flight.status + '</td>';
	row += '</tr>';
	
	$("#flight-table tr:last").after(row);
}
