
var priceType = '';
var openID = '';
var route = '';
var extraCount = -1;
var loaded = 0;
var headerSet = 0;
var usedFootnotes = new Array();
var addOnRoutes = new Array();
var allRoutes = new Array();
var DESTINATION_COL = 0;
var DATES_COL = 1;
var PRICES_COL = 2;
var HOTEL_COL = 3;
var HOTEL_PRICE_COL = 4;
var BUY_COL = 5;
var ONEWAY_MESSAGE = 'one way';
var RETURN_MESSAGE = 'return';
var HOTEL_DISCOUNT = 'hotel';
var BUY = 'Book now';
var NO_HOTEL = 'No hotels available for this destination';
var NO_OFFERS = 'There are no offers available on this route';
var TWISTY_ALT = 'More dates and prices for ';
var TWISTY_TEXT = 'More<br /> dates...'
var TBL = 'table1';
var TBODY = 'table1body';
var THEAD = 'table1head';
var TFOOT = 'footnotes';
var ROW = 'row';
var FIRST_EXTRA_COL = 6;
function functionalPageLoad() {
var myFrom = '';
var myTo = '';
if(loaded == 0) {
myFrom = getQueryValue('from');
myTo = getQueryValue('to');
x=getIdElement('originDropDown');
for (i = 0; i < x.length; i++) {
if (x.options[i].value == myFrom) {
x.options[i].selected = true;
break;
}
}
y = getIdElement('destDropDown');
for (i = 0; i < y.length; i++) {
if (y.options[i].value == myTo) {
y.options[i].selected = true;
break;
}
}
getRouteDetails('top');
}
loaded = 1;
}
function getRouteDetails(where) {
var org=getIdElement('originDropDown');
var des=getIdElement('destDropDown');
route = org.options[org.selectedIndex].value + des.options[des.selectedIndex].value;
buildTable();
}
function buildTable() {
var lowestPriceID = 0;
var lowestPrice = '';
var lowestDate = '';
var newRow = '';
var priceType = '';
var rowID = '';
var tabIdx = 1;
var usedFootnotes = [];
var footnotesCount = 0;
var addOnDone = '';
var openID = '';
var destRow = new Array();
var thisTable = getIdElement(TBL);
var tableHead = getIdElement(THEAD);
var tableBody = getIdElement(TBODY);
if (extraCount == -1 && headerSet == 0){
setColumnHeaders(tableHead);
}
clearTable(thisTable);
allRoutes = getAllRoutes();
if(allRoutes.length == 0){
var x = tableBody.insertRow(-1);
x.vAlign = 'top';
cellA = x.insertCell(0)
cellA.colSpan = '10';
cellA.innerHTML = '<p>' + NO_OFFERS + '</p>';
}
for (var i=0; i<allRoutes.length; i++) {
destRow = allRoutes[i];
lowestPriceID = getLowestPriceID(i);
rowID = ROW+i;
var x=tableBody.insertRow(-1);
x.vAlign = 'top';
if(destRow[ROUTE] != route && destRow[ROUTE] != addOnDone) {
cellA = x.insertCell(0)
cellA.innerHTML = '<p>via '+locLookup(destRow[ROUTE])+'</p>';
cellA.colSpan = parseInt(FIRST_EXTRA_COL) + parseInt(extraCount) + 1;
cellA.style.backgroundColor='#eaecf5';
cellA.style.borderColor='#b3c3e3';
cellA.style.color='#555555';
cellA.style.fontWeight='bold';
addOnDone = destRow[ROUTE];
x=tableBody.insertRow(-1);
x.vAlign = 'top';
}
x.setAttribute('name', rowID);
x.id = rowID;
cellA = x.insertCell(DESTINATION_COL);
cellA.innerHTML = destRow[DESTINATION_NAME];
cellA.width = '110px';
cellC = x.insertCell(DATES_COL);
cellC.innerHTML = destRow[DATE_ONE]+'<br />'+destRow[DATE_TWO];
cellC.style.backgroundColor='#ffffbb';
cellC.style.borderRight='0';
cellC.style.margin='0';
cellC.width = '200px';
cellB = x.insertCell(PRICES_COL);
cellB.innerHTML = '<span class="priceFontStyle">&#36;'+adjustPrice(destRow, destRow[PRICE_ONE])+'</span>&nbsp;'+getPriceType(destRow)+'<br /><span class="priceFontStyle">&#36;'+adjustPrice(destRow, destRow[PRICE_TWO])+'</span>&nbsp;'+getPriceType(destRow);
cellB.style.backgroundColor='#ffffbb';
cellB.width = '90px';
cellF = x.insertCell(HOTEL_COL);
cellF.innerHTML = getHotelLink(destRow);
cellF.style.borderRight='0';
cellF.width = '140px';
if (getHotelLink(destRow)==NO_HOTEL){
cellF.style.backgroundColor='#ebebeb';
cellF.style.color='#898989';
cellG.innerHTML = '&nbsp;';
cellG.style.backgroundColor='#ebebeb';
cellG.style.color='#898989';
}
cellD = x.insertCell(HOTEL_PRICE_COL);
cellD.innerHTML = '<span class="priceFontStyle">&#36;'+destRow[HOTEL_PRICE]+'</span>';
cellD.width = '60px';
tabIdx += 1;
cellE = x.insertCell(BUY_COL);
cellE.innerHTML = '<div class="button primary"><a class="arrow" tabindex='+tabIdx+' href="'+bookNow(destRow)+'" title="Purchase flights to '+destRow[DESTINATION_NAME]+'.">'+BUY+'</a></div>';
tabIdx += 1;
}
}
function getAllRoutes(){
var aR = new Array();
var destRow = new Array();
var regAddOn = new Array();
var routesToAdd = new Array();
var added = 0;
for (var i=0; i<regionalAddOns.length; i++) {
regAddOn = regionalAddOns[i];
if(regAddOn[RAO_FROM] == route.slice(0,3)) {
routesToAdd[added] = regAddOn[RAO_TO]+route.slice(3,6);
added += 1;
}
}
added = 0;
for (var i=0; i<departureDestinationInfo.length; i++) {
destRow = departureDestinationInfo[i];
if((destRow[ORIG]+destRow[DEST])==route){
aR[added] = destRow;
added += 1;
}
}
for (var i=0; i<departureDestinationInfo.length; i++) {
destRow = departureDestinationInfo[i];
for (var j=0; j<routesToAdd.length; j++) {
if(destRow[ROUTE]==routesToAdd[j] && isExcluded(route.slice(0,3),routesToAdd[j].slice(0,3), destRow[DEST_CODE] ) == 0) {
aR[added] = destRow;
added += 1;
}
}
}
return aR;
}
function isExcluded(fromCode, viaCode, destCode){
var exRoute = new Array();
var exclude = 0;
for(i=0; i<regionalAddOnsExRoutes.length;i++){
exRoute = regionalAddOnsExRoutes[i];
if (fromCode == exRoute[RAOEX_FROM] && viaCode == exRoute[RAOEX_TO] && destCode == exRoute[RAOEX_DEST]){
exclude = 1;
}
}
return exclude;
}
function addExtraCols(x, destRow){
for (var i = 0; i <= extraCount; i++) {
var moreCells = x.insertCell(parseInt(FIRST_EXTRA_COL) + i);
if(destRow[i] == '') {
moreCells.innerHTML = '&nbsp;'
moreCells.style.backgroundColor = '#ebebeb';
moreCells.style.color = '#898989';
}
else {
moreCells.innerHTML = destRow[i];
}
}
}
function setColumnHeaders(headerRow){
for (var k in colDefs) {
var col = document.createElement('th')
var colTxt = document.createTextNode(colDefs[k]);
col.appendChild(colTxt);
col.scope='col';
headerRow.appendChild(col);
}
for (var i in extraColDefs) {
if(extraColDefs[i] != '') {
var extra = document.createElement('th')
extraTxt = document.createTextNode(extraColDefs[i]);
extra.appendChild(extraTxt);
extra.scope='col';
headerRow.appendChild(extra);
extraCount = i;
}
}
headerSet = 1;
}
function locLookup(route){
var locRow = locationLookup[route.slice(0,3)];
return locRow;
}
function loadRowData(ID, priceType){
var openPriceHTML = '',	dateHTML = '', buyHTML = '', rowID = '';
var destRow = allRoutes[ID];
rowID = ROW+ID
for (var i=PRICE_ONE; i<destRow.length; i+=2){
openPriceHTML += '<span class="priceFontStyle">&pound;'+adjustPrice(destRow, destRow[i])+'</span>&nbsp;'+priceType+'<br />';
dateHTML += destRow[i+DATE_RANGE]+'<br />';
}
getIdElement(rowID).cells[PRICES_COL].innerHTML=openPriceHTML;
getIdElement(rowID).cells[DATES_COL].innerHTML=dateHTML;
openID = ID;
}
function unloadRowData(ID, priceType){
var destRow = allRoutes[ID];
var lowestPrice = getLowestPriceID(ID);
var rowID = ROW+ID;
getIdElement(rowID).cells[PRICES_COL].innerHTML='<span class="priceFontStyle">&pound;'+adjustPrice(destRow, destRow[lowestPrice])+ '</span>' + ' return';
getIdElement(rowID).cells[DATES_COL].innerHTML=destRow[lowestPrice+DATE_RANGE]+'<br />';
getIdElement(rowID).cells[BUY_COL].innerHTML='<div class="button primary"><a class="arrow" href="'+bookNow(destRow)+'" title="Purchase flights to '+destRow[DESTINATION_NAME]+'.">'+BUY+'</a></div>';
}
function bookNow(destRow){
var origin = route.slice(0,3);
var destination = destRow[DEST_CODE];
var thisCUG = CUG[document.nav_form.logintype.value];
if(thisCUG == '') {
x =	'/main/fx?from=' + origin + '&amp;to=' + destination + getAdditionalTags();
} else {
x =	'/main/fx/cugAlias-'+thisCUG+'?source=CUG_'+thisCUG+'&amp;eId=111042&amp;from=' + origin + '&amp;to=' + destination + getAdditionalTags();
}
return x;
}
function getLowestPriceID(ID){
var destRow = allRoutes[ID];
var lowest = PRICE_ONE;
for (var i=PRICE_ONE; i<destRow.length; i+=2){
if (parseInt(destRow[i])<parseInt(destRow[lowest])){
lowest = i;
}
}
return lowest;
}
function getHotelLink(destRow){
var h = NO_HOTEL;
var linkTxt = '';
var linkStart = 0;
var linkEnd = 0;
if(destRow[HOTEL] != '') {
linkStart = destRow[HOTEL].indexOf(':');
linkEnd = destRow[HOTEL].lastIndexOf(':');
linkTxt = destRow[HOTEL].substring(linkStart+1,linkEnd);
aTxt = destRow[HOTEL].substring(0,linkStart);
h = '<a class="tertiaryLink" href="/main/home">' + aTxt + '</a>';
}
return h;
}
function clearTable(thisTable){
var len = thisTable.rows.length;
for (var i = len; i > 1; i--){
thisTable.deleteRow(1);
}
}
function addFootnote(destRow, count){
var found = 0;
var footer = getIdElement(TFOOT);
for (var i in usedFootnotes){
if (usedFootnotes[i] == destRow[FOOTNOTE]){
found = 1;
}
}
if(count == 0){
footer.innerHTML = '';
}
if (count == 0 || found == 0){
var newFootnote = document.createElement('p');
var newFootnoteTxt = document.createTextNode(destRow[FOOTNOTE]);
newFootnote.appendChild(newFootnoteTxt);
footer.appendChild(newFootnote);
usedFootnotes[count] = destRow[FOOTNOTE];
return 1;
} else {
return 0;
}
}
function adjustPrice(destRow, price){
var addRow = new Array();
var exRow = new Array();
var priceType = getPriceType(destRow);
var workingPrice = parseInt(price);
if (document.nav_form.logintype.value != 'public'){
switch (priceType){
case ONEWAY_MESSAGE: workingPrice = (parseInt(workingPrice) - parseInt(postPinDiscount[ONEWAY_MESSAGE])); break;
case RETURN_MESSAGE: workingPrice = (parseInt(workingPrice) - parseInt(postPinDiscount[RETURN_MESSAGE])); break;
default: workingPrice = parseInt(workingPrice);
}
}
return workingPrice;
}
function calcHotelPrice(price) {
var workingPrice = parseFloat(price);
if(isPostPin()) {
var discount = postPinDiscount[HOTEL_DISCOUNT];
if(discount) {
discount = workingPrice * (parseFloat(discount) / 100);
workingPrice -= discount;
}
}
return Math.ceil(workingPrice);
}
function getPriceType(destRow){
var pT = '';
switch(destRow[PRICE_TYPE]){
case ONEWAY_PRICETYPE: pT = ONEWAY_MESSAGE;	break;
case RETURN_PRICETYPE: pT = RETURN_MESSAGE;	break;
default:
}
return pT;
}
function getAdditionalTags() {
var returnTags = qStringExtras;
if(isPostPin()) {
returnTags = qStringExtrasPostpin;
}
return returnTags;
}
function isPostPin() {
var isPostpin = false;
if(document.nav_form.logintype.value != 'public') {
isPostpin = true;
}
return isPostpin;
}
function priceTwisty(ID){
var curDestRow = allRoutes[ID];
var opnDestRow = allRoutes[openID];
var priceType = getPriceType(curDestRow);
if ((openID != '')&&(openID != ID)){
var openPriceType = getPriceType(opnDestRow);
unloadRowData(openID, openPriceType);
}
loadRowData(ID, priceType);
}

