/*************************************************************************************************************************** * * Validation and helper functions for app modules. * ***************************************************************************************************************************/ /*************************************** BOOOKING MODULE CODE BEGINS HERE ************************************************/ function startInit() { 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/de/modules/common/error2.gif', 13, 15, '/content/images/de/modules/common/error3.gif', 15, 18, '/content/images/de/modules/common/progress.gif', 322, 13, '/content/images/de/modules/transitionPage/img_thinkpg_top.gif', 434, 20, '/content/images/de/modules/transitionPage/img_thinkpg_plane.gif', 129, 77, '/content/images/de/modules/transitionPage/logo_thinkpg_aa.gif', 281, 77, '/content/images/de/modules/transitionPage/waiting_animatedCircle.gif', 23, 23, '/content/images/de/modules/transitionPage/txt_thinkpg_1moment.gif', 212, 33, '/content/images/de/banners/aux/tsBanner.jpg', 382, 60, '/content/images/de/modules/transitionPage/img_thinkpg_bot.gif', 434, 24, 'http://www.aa.com/content/images/thinkPage/grad_bg_thinkpg.gif', 434, 1); detectUiState(document.forms["ff_fs"]["tripType"], null); } // Function checkIfLoaded checks to see if a the defined element ID is available before executing the specified // function. This is required for scripts that need to execute automatically when content is loaded // in an ajax loaded panel. function checkIfLoaded(id, load) { if (!load && document.getElementById(id)) { document.getElementById(id).id=''; return; } else if (load && document.getElementById(id)) { if (id == 'mod_1') { initDate(document.ff_fs, document.ff_fs.departureMonth, document.ff_fs.departureDay, 3); return; } } else if (load && !document.getElementById(id)) { setTimeout("checkIfLoaded('"+id+"', 'load')", 60); } } function ajaxProxy(fName, filePath) { var formName = fName; // Declare ARPV variables var targetDiv = "Target div not defined"; var divStyle = "Div style not defined"; var sendRequest = "NMSG not defined"; var loadingData = "NMSG not defined"; var dataLoaded = "NMSG not defined"; var preparingDisplay = "NMSG not defined"; var error404 = "NMSG not defined"; var errorRetRequest = "NMSG not defined"; var imgFilePath = "Image file path not defined"; // Notification message parameters validArpv = true; if (checkIfObjExists('arpv1')) { targetDiv = document.forms[formName]["ARPV_TARGET_DIV"].value; if (targetDiv == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv2')) { divStyle = document.forms[formName]["ARPV_DIV_STYLE"].value; if (divStyle == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv3')) { sendRequest = document.forms[formName]["ARPV_SENDING_REQUEST"].value; if (sendRequest == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv4')) { loadingData = document.forms[formName]["ARPV_LOADING_DATA"].value; if (loadingData == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv5')) { dataLoaded = document.forms[formName]["ARPV_DATA_LOADED"].value; if (dataLoaded == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv6')) { preparingDisplay = document.forms[formName]["ARPV_PREPARING_DISPLAY"].value; if (preparingDisplay == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv7')) { error404 = document.forms[formName]["ARPV_ERROR_404"].value; if (error404 == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv8')) { errorRetRequest = document.forms[formName]["ARPV_RETRIEVE_PROBLEM"].value; if (errorRetRequest == "") { validArpv = false; } } else { validArpv = false; } if (checkIfObjExists('arpv9')) { imgFilePath = document.forms[formName]["ARPV_IMAGE_PATH"].value; if (imgFilePath == "") { validArpv = false; } } else { validArpv = false; } if (!validArpv) { fsError.setMessageHeader('error', 'Unable to execute AJAX call. The following ARPV error(s) occured', 'SFError', imageFilePath); fsError.setMessage('error', 'Notification message parameters are either not defined or contain empty values'); } else { doAjaxCall(filePath, targetDiv, divStyle, sendRequest, loadingData, dataLoaded, preparingDisplay, error404, errorRetRequest); } } // Popup function for city lookup function jsPopUp(theUrl,theWidth,theHeight,getScrollVal) { var scrollVal = getScrollVal.toLowerCase(); // Open window and construct URL and toolbars win = window.open(theUrl,"myWin","width="+theWidth+",height="+theHeight+",resizable=0,menubar=1,scrollbars="+scrollVal+",left=100,top=20"); } // Hides or shows return flight input fields depending on if one-way or round-tript is selected function showHideReturnDate(bShow) { /*** * The following sets the time to any time for the return flight when one-way is selected. * Additionally it enables flexSearch if applicable. This check is required in case a user * selects a specific time on their return and then opts for a one-way flight instead. * Without this check the flexSearch option would remain disabled even if anytime was * selected on the departure flight ***/ if (bShow) { document.forms.ff_fs.returnTime.selectedIndex = 0; // Only enable if departure time value is set to ANY time if (document.forms.ff_fs.departureTime.options[document.forms.ff_fs.departureTime.selectedIndex].value == 'ANY') { disableEnable(document.forms.ff_fs.searchType[0], false); document.getElementById('fsOpt').style.color = ""; } } /* End of flexSearch check */ var returnCalendarId = "returnCalendar"; var returnMonthId = "returnMonth"; var returnDayId = "returnDay"; var returnTimeId = "returnTime"; var returnDateLabelId ="retDate"; var returnTimeErr = "rtimeErr"; showHide(returnTimeErr,bShow); showHide(returnDateLabelId,bShow); showHide(returnCalendarId,bShow); showHide(returnMonthId,bShow); showHide(returnTimeId,bShow); showHide(returnDayId,bShow); } // Function to disable or enable the flex search radio button function enableDisableFs(getAction) { if (getAction == 'ANY' && !document.forms.ff_fs.tripType[1].checked) { // Only enable if both field values are set to ANY time if (document.forms.ff_fs.departureTime.options[document.forms.ff_fs.departureTime.selectedIndex].value == 'ANY' && document.forms.ff_fs.returnTime.options[document.forms.ff_fs.returnTime.selectedIndex].value == 'ANY') { disableEnable(document.forms.ff_fs.searchType[0], false); document.getElementById('fsOpt').style.color = ""; } } else if (getAction == 'ANY' && document.forms.ff_fs.tripType[1].checked) { document.forms.ff_fs.returnTime.selectedIndex = 0; // Only enable if both field values are set to ANY time if (document.forms.ff_fs.departureTime.options[document.forms.ff_fs.departureTime.selectedIndex].value == 'ANY') { disableEnable(document.forms.ff_fs.searchType[0], false); document.getElementById('fsOpt').style.color = ""; } } else { document.getElementById('fsOpt').style.color = "#999999"; document.forms.ff_fs.searchType[1].checked = true; disableEnable(document.forms.ff_fs.searchType[0], true); } } function checkIfObjExists(obj) { var exists = false; if(document.getElementById(obj)) { exists = true; } return exists; } /*************************************** BOOKING MODULE CODE ENDS HERE ***************************************************/ /*************************************** RETRIEVE PNR MODULE CODE BEGINS HERE ********************************************/ function validateRPnrForm() { var pnr_errHeadSet = false; var pnr_isValid = true; var validDemv = true; errorHeader = "DEMV not defined"; var invalPnr = "DEMV not defined"; var invalLastName = "DEMV not defined"; var pnr = document.forms["retrievePnr"]["REC_LOC"]; var name = document.forms["retrievePnr"]["DIRECT_RETRIEVE_LASTNAME"]; if (checkIfObjExists('demv1')) { errorHeader = document.forms["retrievePnr"]["DEMV_ERROR_HEADER"].value; if (errorHeader == "") { validDemv = false; } } else { validDemv = false; } if (checkIfObjExists('demv9')) { invalPnr = document.forms["retrievePnr"]["DEMV_PNR_FIELD_INVALID"].value; if (invalPnr == "") { validDemv = false; } } else { validDemv = false; } if (checkIfObjExists('demv10')) { invalLastName = document.forms["retrievePnr"]["DEMV_LAST_NAME_FIELD_INVALID"].value; if (invalLastName == "") { validDemv = false; } } else { validDemv = false; } if (!validDemv) { if (!pnr_errHeadSet) { fsError.setMessageHeader('error', 'The following DEMV error(s) occured', 'SFError', '/content/images/de/modules/common/error3.gif'); pnr_errHeadSet = true; } fsError.setMessage('error', 'Error message parameters are either not defined or contain empty values'); isValid = false; } // Create vars for reg expression tests var num = /[0-9]+/; // Numeric content var ev = /^\s+$/; // Tab white space values var sc = /[\!\@\#\$\%\"\'\(\)\&\é\§\è\ç\à\-\_]+/; // Special characters // Clear any previous error messages before validating form fsError.clearError('error', 'span'); fsError.clearError('rPnr','label'); if (pnr.value == '' || ev.test(pnr.value) || num.test(pnr.value) || sc.test(pnr.value)) { if (!pnr_errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/de/modules/common/error3.gif'); pnr_errHeadSet = true; } fsError.setMessage('error', invalPnr); fsError.setAlert('recLoc', '/content/images/de/modules/common/error2.gif'); pnr_isValid = false; } if (name.value == '' || ev.test(name.value) || num.test(name.value) || sc.test(name.value)) { if (!pnr_errHeadSet) { fsError.setMessageHeader('error', errorHeader, 'SFError', '/content/images/de/modules/common/error3.gif'); pnr_errHeadSet = true; } fsError.setMessage('error', invalLastName); fsError.setAlert('lName', '/content/images/de/modules/common/error2.gif'); pnr_isValid = false; } if (pnr_isValid) { document.retrievePnr.submit(); } } // BEGINS WEB ANALYTICS ER TO TAG RETRIEVE PNR MODULE - ADDED 19/08/09 var AA_cu='http://www.aa.com/content/images/common/wa2.gif?Log=1'; function wa_doFormRead(form) { var vo = "&v_formName="+form.name; var item; var formitem; var formvalue; for(var i = 0; i < form.length; i++) { var item = form.elements[i]; var elType = form.elements[i].type; if(elType == "text" || elType == "hidden") { // Ensures the we do not track personally identifiable info on retrieve PNR if(item.name != 'DIRECT_RETRIEVE_LASTNAME') { formitem = "v_"+item.name; formvalue = item.value; vo+="&"+formitem+"="+formvalue; } } } wa_createPassBack(vo); } function wa_createPassBack(passback) { var lc=new Image(); var url = AA_cu; lc.src=url+passback; } /*************************************** RETRIEVE PNR MODULE CODE ENDS HERE ********************************************/ /*************************************** BEGINS RAIL AND FLY MODULE CODE ***********************************************/ // Sets up UI for Rail&Fly search when user clicks on From station/To Station function doRFSetup(disableId, enableId, disableEl, enableEl, fldValue, disableLink, enableLink) { // The toggleFields() function is defined in iApps_uif_v1.2.js/jsp // Toggles between enable/disable state for two specified fields toggleFields(disableId, enableId, disableEl, enableEl); disableEl.value = fldValue; enableEl.value = ""; document.getElementById(disableLink).disabled=1; document.getElementById(disableLink).style.color = '#B2AFAF'; document.getElementById(disableLink).style.cursor = 'text'; document.getElementById(enableLink).disabled=0; document.getElementById(enableLink).style.color = '#0000CC'; document.getElementById(enableLink).style.cursor = ''; } // Converts Rail&Fly user friendly text to valid PCC - QYG function doRFTextToPccConv(fldVal, compStr) { if (fldVal == compStr) { fldVal = 'QYG'; } return fldVal; } /*************************************** ENDS RAIL AND FLY MODULE CODE *************************************************/