window.onload = function() { var dateInit = document.ff_fs.dateCheck.value; erCon = new erc(); // Init e-retail connector object // Only set current date on initial page request when date has not already been initialised if (dateInit == "init_no") { initDate(document.ff_fs, document.ff_fs.departureMonth, document.ff_fs.departureDay, 3); document.ff_fs.dateCheck.value = "init_yes"; } preloadImgs('/content/images/ie/modules/common/error2.gif', 13, 15, '/content/images/ie/modules/common/error3.gif', 15, 18, '/content/images/ie/modules/common/progress.gif', 322, 13, '/content/images/ie/modules/transitionPage/img_thinkpg_top.gif', 434, 20, '/content/images/ie/modules/transitionPage/img_thinkpg_plane.gif', 129, 77, '/content/images/ie/modules/transitionPage/logo_thinkpg_aa.gif', 281, 77, '/content/images/ie/modules/transitionPage/waiting_animatedCircle.gif', 23, 23, '/content/images/ie/modules/transitionPage/txt_thinkpg_1moment.gif', 212, 33, '/content/images/ie/banners/aux/tsBanner.jpg', 382, 60, '/content/images/ie/modules/transitionPage/img_thinkpg_bot.gif', 434, 24, 'http://www.aa.com/content/images/thinkPage/grad_bg_thinkpg.gif', 434, 1); } // VALIDATE FORM AND CALL CONNECTOR function validateForm() { var errHeadSet = false; var isValid = true; // Declare COSS variables and set to default value var url = "http://americanairlines.eu.amadeus.com/plnext/AAeurope2/Override.action"; var et = "FlexPricerAvailability"; var site = "BCDJBCDJ"; var eid = "IRELAND"; var lang = "GB"; var so_pos = "DUB"; var so_ofcId = "DUBAA18AA"; var so_amOfcId = "DUBAA18AA"; var so_qOfcId = "UHI"; var so_sppCfg = "UHI"; var tf = "YES"; var cff1 = "ECONOMYEU"; var cff2 = "PREMIUM"; var useQDefList = "TRUE"; var qDefType = "PEN"; var qDefCity = "DUB"; var qDefNbr = "157"; var qDefAction = "10"; var pm = "We are processing your request, please wait ..."; var activateOs = "FALSE"; var activateAs = "TRUE"; var connEncoding = "iso-8859-1"; // Override the default booking flow language if (typeof(document.forms["ff_fs"]["language"]) != 'undefined') { lang = document.forms["ff_fs"]["language"].value; } // Declare COOS variables and set to default value var sds = "default"; var pType = "default"; var nonStop = "default"; var drv1 = "default"; var drv2 = "default"; var drq1 = "default"; var drq2 = "default"; var fromPage = "default"; // Declare COAS variables and set to default value var custParamName1 = "MATRIX_CALENDAR"; var custParamValue1 = "FALSE"; var custParamName2 = "default"; var custParamValue2 = "default"; var custParamName3 = "default"; var custParamValue3 = "default"; var custParamName4 = "default"; var custParamValue4 = "default"; var custParamName5 = "default"; var custParamValue5 = "default"; var custParamName6 = "default"; var custParamValue6 = "default"; var custParamName7 = "default"; var custParamValue7 = "default"; var custParamName8 = "default"; var custParamValue8 = "default"; // User defined parameter values var orig = document.forms["ff_fs"]["origin"]; var dest = document.forms["ff_fs"]["destination"]; var tripType = document.forms["ff_fs"]["tripType"]; var depMonth = document.forms["ff_fs"]["departureMonth"]; var depDay = document.forms["ff_fs"]["departureDay"]; var depTime = document.forms["ff_fs"]["departureTime"]; var retMonth = document.forms["ff_fs"]["returnMonth"]; var retDay = document.forms["ff_fs"]["returnDay"]; var retTime = document.forms["ff_fs"]["returnTime"]; var classOfService = document.forms["ff_fs"]["classOfServicePreference"]; var numAdt = document.forms["ff_fs"]["adultPassengerCount"]; var numChd = document.forms["ff_fs"]["childPassengerCount"]; var st = document.forms["ff_fs"]["searchType"]; // Declare DEMV variables var errorHeader = "The following error(s) occured"; var invalDepCty = "Please provide us with a departure city and try again."; var invalArrCty = "Please provide us with a return city and try again."; var obOutOfRange = "We can only display departing flights up to 331 days from today."; var ibOutOfRange = "We can only display flights returning within the next 331 days."; var invalTimeCombo = "Your return time cannot be on or before your departure time."; var sameDayNoTimeSpec = "For same-date return flights, please specify your flight times."; var paxCountExceeds7 = "The maximum total number of passengers you can book online is 7."; // Checks if dropdown of free search is being used if (document.forms["ff_fs"]["originFreeSearch"].value == "true") { orig = orig.value; } else { orig = orig.options[orig.selectedIndex].value; } if (document.forms["ff_fs"]["destinationFreeSearch"].value == "true") { dest = dest.value; } else { dest = dest.options[dest.selectedIndex].value; } // Clear any previous error messages before validating form fsError.clearError('error', 'span'); fsError.clearError('ffSf','label'); /**** * ER00004 - Added 19/09/08 * Regex for permitted characters, anything outside of this range will be rejected * Permitted characters = Extended latin chars and a-z case is ignored **/ var rePcr = /[^a-z\s\u00e0-\u00ef\u00f1-\u00f6\u00f8-\u00fc]/i; // Calculate total passenger count var ttlPaxCount = parseInt(numAdt.options[numAdt.selectedIndex].value) + parseInt(numChd.options[numChd.selectedIndex].value); if (orig == "" || rePcr.test(orig)) { if (!errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/ie/modules/common/error3.gif'); errHeadSet = true; } fsError.setMessage('error', invalDepCty); fsError.setAlert('from', '/content/images/ie/modules/common/error2.gif'); isValid = false; } if (dest == "" || rePcr.test(dest)) { if (!errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/ie/modules/common/error3.gif'); errHeadSet = true; } fsError.setMessage('error', invalArrCty); fsError.setAlert('to', '/content/images/ie/modules/common/error2.gif'); isValid = false; } if (ttlPaxCount > 7) { if (!errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/ie/modules/common/error3.gif'); errHeadSet = true; } fsError.setMessage('error', paxCountExceeds7); fsError.setAlert('adult', '/content/images/ie/modules/common/error2.gif'); isValid = false; } // Check if outbound date is within permitted range of 331 days if (!checkDateRange(depMonth.options[depMonth.selectedIndex].value, depDay.options[depDay.selectedIndex].value, 0, 0, 0, 331, true)) { if (!errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/ie/modules/common/error3.gif'); errHeadSet = true; } fsError.setMessage('error', obOutOfRange); fsError.setAlert('depDate', '/content/images/ie/modules/common/error2.gif'); if (tripType.value != "O") { fsError.setMessage('error', ibOutOfRange); fsError.setAlert('retDateLbl', '/content/images/ie/modules/common/error2.gif'); } isValid = false; } // If trip type selected is not one-way check if return date is within permitted range of 331 days & in chronological order if (checkDateRange(depMonth.options[depMonth.selectedIndex].value, depDay.options[depDay.selectedIndex].value, 0, 0, 0, 331, true)) { var obYear = getYear(depMonth.options[depMonth.selectedIndex].value, depDay.options[depDay.selectedIndex].value); if (tripType.value != "O") { if (!checkDateRange(retMonth.options[retMonth.selectedIndex].value, retDay.options[retDay.selectedIndex].value, obYear, depMonth.options[depMonth.selectedIndex].value, depDay.options[depDay.selectedIndex].value, 331, false)) { if (!errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/ie/modules/common/error3.gif'); errHeadSet = true; } fsError.setMessage('error', ibOutOfRange); fsError.setAlert('retDateLbl', '/content/images/ie/modules/common/error2.gif'); isValid = false; } } } if (isValid) { // Calls e-retail connector and constructs form for flexpricer requests erCon.flexPricerBuild(url, et, site, eid, lang, so_pos, so_ofcId, so_amOfcId, so_qOfcId, so_sppCfg, tf, cff1, cff2, useQDefList, qDefType, qDefCity, qDefNbr, qDefAction, pm, activateOs, activateAs, orig, dest, tripType.value, depMonth.options[depMonth.selectedIndex].value, depDay.options[depDay.selectedIndex].value, depTime.value, retMonth.options[retMonth.selectedIndex].value, retDay.options[retDay.selectedIndex].value, retTime.value, classOfService.value, numAdt.options[numAdt.selectedIndex].value, numChd.options[numChd.selectedIndex].value, sds, pType, nonStop, drv1, drv2, drq1, drq2, fromPage, custParamName1, custParamValue1, custParamName2, custParamValue2, custParamName3, custParamValue3, custParamName4, custParamValue4, custParamName5, custParamValue5, custParamName6, custParamValue6, custParamName7, custParamValue7, custParamName8, custParamValue8, st.value, connEncoding); } }