
var monthXref = {"JAN":0, "FEB":1, "MAR":2, "APR":3, "MAY":4, "JUN":5, "JUL":6, "AUG":7, "SEP":8, "OCT":9, "NOV":10, "DEC":11};
var aptNameDecode = new Array();
$(function() {

setAutoComplete("outTo", "outToAutoComplete", "/dwr/exec/locationHelper.getMatchedLocations.dwr?callCount=1&c0-scriptName=locationHelper&c0-methodName=getMatchedLocations&xml=true&c0-param0=string:",DWRdestsResponseParser);
setAutoComplete("inFrom", "inFromAutoComplete", "/dwr/exec/locationHelper.getMatchedLocations.dwr?callCount=1&c0-scriptName=locationHelper&c0-methodName=getMatchedLocations&xml=true&c0-param0=string:",DWRdestsResponseParser);

$('#searchResults').hide();

showTerminalTable(false);


$('#depDate').val(displayDateFormat);
$('#routeSearch').click(function() {
$('#searchResults').hide("fast");

if($("#userPrefFrom:checked").length > 0)
{


$('#outToActual').val(convertArrival($('#outTo').val()));

var xmlDocument = "<FlightTimetablesRequest><BABias>true</BABias><Sector><DepartureAirport>" + $('#outFrom').val() + "</DepartureAirport><DestinationAirport>" + $('#outToActual').val() + "</DestinationAirport><DepartureDate>" + getCalDate() + "</DepartureDate><CarrierPref1>BA</CarrierPref1><CarrierPref2></CarrierPref2><CarrierPref3></CarrierPref3></Sector></FlightTimetablesRequest>";
}
else
{


$('#inFromActual').val(convertArrival($('#inFrom').val()));

var xmlDocument = "<FlightTimetablesRequest><BABias>true</BABias><Sector><DepartureAirport>" + $('#inFromActual').val() + "</DepartureAirport><DestinationAirport>" + $('#inTo').val() + "</DestinationAirport><DepartureDate>" + getCalDate() + "</DepartureDate><CarrierPref1>BA</CarrierPref1><CarrierPref2></CarrierPref2><CarrierPref3></CarrierPref3></Sector></FlightTimetablesRequest>";
}

var now = new Date();
var rand = now.getTime()
var theURL = '/flightInformation/OLTimetablesIVR2.jsp?rand=' + rand;



$.ajax({
url: theURL,
processData: false,
data: xmlDocument,
success: function(xml)
{
var xml = xml.replace(/^\s+|\s+$/g, '') ;


parseXML(textToXML(xml));
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
showError();
}
});
});
});
function setAirportDecode()
{
var apt;
$(".tsApt").each(function()
{
apt = $(this).html();
getDecode(apt,$(this));
});
}
function getDecode(apt, aptObj)
{
var x,y,z = "";
apt = apt.toUpperCase();
if(aptNameDecode[apt] === undefined)
{
$.get("/dwr/exec/locationHelper.getMatchedLocations.dwr?callCount=1&c0-scriptName=locationHelper&c0-methodName=getMatchedLocations&xml=true&c0-param0=string:" + apt, function(data){
var splitData = data.split("\n");
var s0 = eval(splitData[0] + ";s0;");
var thisApt = s0[apt];


var y = thisApt.split(',');
var z = y[3];
aptNameDecode[apt] = z;
$(aptObj).html(z + " (" + apt + ")");
});
}
else
{
$(aptObj).html(aptNameDecode[apt] + " (" + apt + ")");
}
}
function getTableTop()
{
var tableTop = "<table cellspacing='0' cellpadding='0' width='100%' summary=''><thead><tr>";

tableTop = tableTop + "<th>" + tableTrans.depart + "</th>";
tableTop = tableTop + "<th>" + tableTrans.arrive + "</th>";
tableTop = tableTop + "<th>" + tableTrans.from + "</th>";
tableTop = tableTop + "<th>" + tableTrans.to + "</th>";
tableTop = tableTop + "<th>" + tableTrans.flight + "</th>";
tableTop = tableTop + "<th>" + tableTrans.terminal + "</th>";
return tableTop;
}
function showError()
{

var tableTop = getTableTop();
var tableError = "<tr><td colspan='6'>" + errMsg1 + "</td></tr>";
var tableBottom = "</tbody></table>";
$('#dr').html(tableTop + tableError + tableBottom);
$("#searchResults").show("fast");
}
function parseXML(xml)
{
var tableTop = getTableTop();
var tableError = "<tr><td colspan='6'>" + tableTrans.error + "</td></tr>";
var tableContent = "";
var tableBottom = "</tbody></table>";
var noError = true;
var numResults = 0;
var numFlights, depLON, includeData, checkApt;

$(xml).find('ErrorText').each(function()
{
tableError = "<tr><td colspan='6'>" + errMsg1 + "</td></tr>";
noError = false;
});
if(noError)
{

if($("#userPrefFrom:checked").length > 0)
{
depLON = true;
checkApt = $('#outFrom').val()
}
else
{
depLON = false;
checkApt = $('#inTo').val()
}

$(xml).find('Sector').each(function()
{

numFlights = $(this).find('FlightSegment').length;
if(numFlights == 1)
{
$(this).find('FlightSegment').each(function()
{

var depApt = $(this).find('DepartureAirport').text();
var arrApt = $(this).find('DestinationAirport').text();
if((depLON && t5CheckApt(checkApt, depApt)) || (!depLON && t5CheckApt(checkApt, arrApt)))


{
var carrier = $(this).find('CarrierCode').text();
var flight = $(this).find('FlightNumber').text();
var depTime = $(this).find('DepartureTime').text();
var depDate = $(this).find('DepartureDate').text();
var depDateMon = monthXref[depDate.substr(2,3)];
var depDateMMM = refSMonth[depDateMon];
var depTimeDate = depTime.substr(0,2) + ":" + depTime.substr(2,2) + ", " + depDate.substr(0,2) + " " + depDateMMM;
var arrTime = $(this).find('ArrivalTime').text();
var arrDate = $(this).find('ArrivalDate').text();
var arrDateMon = monthXref[arrDate.substr(2,3)];
var arrDateMMM = refSMonth[arrDateMon];
var arrTimeDate = arrTime.substr(0,2) + ":" + arrTime.substr(2,2) + ", " + arrDate.substr(0,2) + " " + arrDateMMM;
if(depLON)
{
whatTerm = $(this).find('DepartureTerminal').text();
}
else
{
whatTerm = $(this).find('DestinationTerminal').text();
}

if(whatTerm == "")
{
whatTerm = "&nbsp;";
}

tableContent = tableContent + "<tr><td>" + depTimeDate + "</td><td>" + arrTimeDate + "</td><td class='tsApt'>" + depApt + "</td><td class='tsApt'>" + arrApt + "</td><td>" + carrier + flight + "</td><td>" + whatTerm + "</td></tr>";
numResults = numResults + 1;
}
});
}
});
}
if(numResults > 0)
{
$('#dr').html(tableTop + tableContent + tableBottom);
setAirportDecode();
}
else
{
$('#dr').html(tableTop + tableError + tableBottom);
}
$("#searchResults").show("fast");
}
function t5CheckApt(apt1, apt2)
{

if(apt1 == "LON")
{
var validApts = "LGW,LHR,LCY";
if (validApts.indexOf(apt2) > -1)
{
return true;
}
else
{
return false;
}
}
else
{
if (apt1 == apt2)
{
return true;
}
else
{
return false;
}

}
return false;
}
function textToXML(text)
{
if (typeof DOMParser != "undefined") {

return (new DOMParser()).parseFromString(text, "application/xml");
}
else if (typeof ActiveXObject != "undefined") {

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(text);
return xmlDoc;
}
else {

var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);
var request = new XMLHttpRequest();
request.open("GET", url, false);
request.send(null);
return request.responseXML;
}
}
function convertArrival(oldArr)
{
if(oldArr.length == 3)
{
return oldArr;
}
var arrParams = oldArr.split(", ");
if(arrParams[2] !== "undefined")
{
return arrParams[2];
}
return oldArr;
}
function changeUserPref(depFromChoice)
{

if(depFromChoice)
{
$("#arrTo1").hide();
$("#arrTo2").hide();
$("#inFrom").val("");
$("#inFromActual").val("");
$("#inTo").val("LHR");
$("#depFrom1").show();
$("#depFrom2").show();
}
else
{
$("#depFrom1").hide();
$("#depFrom2").hide();
$("#outFrom").val("LHR");
$("#outTo").val("");
$("#outToActual").val("");
$("#arrTo1").show();
$("#arrTo2").show();
}
$('#searchResults').hide();
}
function showTerminalTable(toDisplay)
{
if(toDisplay)
{
$('#termTable').show("fast", function() {
$('#showTerm').hide();
$('#hideTerm').show();
});
}
else
{
$('#termTable').hide("fast", function() {
$('#hideTerm').hide();
$('#showTerm').show();
});
}
}
function getCalDate()
{
var enMonth=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var dep = $('#depDate').val();
var depDate = dep.substr(0,2) + enMonth[parseInt(dep.substr(3,2),10)-1] + "20" + dep.substr(6,2);
return depDate.toUpperCase();
}
function checkCalDate(dateParam,ukFormat)
{


var dd,mm,yy,testDate,testdd,testmm,testyy;
if(ukFormat)
{
dd = parseInt(dateParam.substr(0,2),10);
mm = parseInt(dateParam.substr(3,2),10);
yy = parseInt(dateParam.substr(6,2),10);
}
else
{
dd = parseInt(dateParam.substr(3,2),10);
mm = parseInt(dateParam.substr(0,2),10);
yy = parseInt(dateParam.substr(6,2),10);
}
if(isNaN(dd) || isNaN(mm) || isNaN(yy))
{
return false;
}

mm = mm - 1;
yy = yy + 2000;

testDate = new Date (yy,mm,dd);
testdd = testDate.getDate();
testmm = testDate.getMonth();
testyy = testDate.getFullYear();
if(dd==testdd && mm==testmm && yy==testyy)
{
return true;
}
else
{
return false;
}
}
function formattedDate(dateObj)
{
var dd = dateObj.getDate();
dd = refDayNumbers.substr((parseInt(dd,10)-1)*3,2);
var mm = dateObj.getMonth();
var mmm = refSMonth[parseInt(mm,10)];
var yyyy = dateObj.getFullYear();
return dd + " " + mmm + " " + yyyy;
}
function formattedDateEN(dateObj)
{
var enMonth=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var dd = dateObj.getDate();
dd = refDayNumbers.substr((parseInt(dd,10)-1)*3,2);
var mm = dateObj.getMonth();
var mmm = enMonth[parseInt(mm,10)];
var yyyy = dateObj.getFullYear();
return dd + mmm + yyyy;
}
function buildFromToday(idParam,numDays)
{

var dateObj = new Date();
var fDate;
document.writeln('<select name="' + idParam + '" id="' + idParam + '">');
for(i=0; i<numDays; i++)
{
fDate = formattedDate(dateObj);
fDateEN = formattedDateEN(dateObj);

document.writeln('<option value="' + fDateEN + '">' + fDate + '</option>');

dateObj.setTime(dateObj.getTime() + 1000*60*60*24);
}
document.writeln('</select>');
}

