//branchFail used in mobile.obj var branchFail; $(document).ready(function(){ //call validation when ever a field changes value $("input, select").change(function(event){ $(event.target).valid(val_error); }); if(deviceDetails.OS == 'android2') { //type date screws up android 2, so need to change to number. $("#apBirthDate_id, #apAddressSince_id, #apEmployedSince_id").attr('type','number'); } var pid1 = $("input[name=pid1]").val(); if(pid1 == "ba_platinum"){ $(".apMembershipNum").find("label").text("British Airways Membership Number"); $("#apMembershipNum_id").attr("maxlength", "8"); $(".apMembershipNum").removeClass("hasHelp"); } else if(pid1 == "westjet_world" || pid1 == "westjet"){ $(".apMembershipNum").find("label").text("WestJet ID (9 digits)"); $("#apMembershipNum_id").attr("maxlength", "9"); } else if(pid1 == "cp_platinum"){ $(".apMembershipNum").find("label").text("Asia Miles Membership Number"); $("#apMembershipNum_id").attr("maxlength", "10"); $(".apMembershipNum").removeClass("hasHelp"); } //Home Phone adding -'s $("#apHomePhone_id").keydown(function(event) { phoneFormatting(this,$(this),event); }); //If age is entered in manually add -'s $("#apBirthDate_id").keydown(function(event) { dateFormatting(this, $(this), event); }); //call the branch locator, and address locator service $("#apPostalCode_id").blur(function(){ if($(this).valid(val_error) ) { findBranchAndAddress(); findAltBranch($("#apPostalCode_id").val()); } }); /** Step 2b **/ //add in -s $("#apAddressSince_id").keydown(function(event) { dateFormatting2(this, $(this), event); }); //show hide previous address $('#apAddressSince_id').change(function(){ if(constraints.younger($(this).val(), ["2"]) && $(this).valid(val_error)) { $("#prev_address_warning").show(); //this is a hook into Jeremy's mobile framework previousAddressRequired = true; $("#review").toggleClass('previous-address', previousAddressRequired); } else { //hide the previous address previousAddressRequired = false; $("#prev_address_warning").hide(); $("#review").toggleClass('previous-address', previousAddressRequired); } }); /** Step 3a **/ $("#apOccupation_id").change(function(event){ var occupation = $(event.target).val(); if (occupation.match(/^(60)$/)) { isStudent = true; //hook into jeremy's mobile.js $("#apStudent_id").val('Y'); if(lang=='fr'){ $("#step3a").removeClass("employed").addClass("student").find('.page-title').text("Renseignements sur les études"); }else{ $("#step3a").removeClass("employed").addClass("student").find('.page-title').text("Education Details"); } } else { isStudent = false; //hook into jeremy's mobile.js $("#apStudent_id").val('N'); $("#step3a").addClass("employed").removeClass("student").find('.page-title').text(pages[currentPageID].pageTitle[lang]); } //if homemaker, retired, or unemployed Occupation stuff not required $(".employedForm .app-parent").toggleClass("required", !/^(13|19|27)$/.test(occupation)); if(/^(13|19|27)$/.test(occupation)){ $("#apCompanyName_id").show_error(true, ""); $("#apIncome_id").show_error(true, ""); $("#apWorkPhone_id").show_error(true, ""); $("#apEmployedSince_id").show_error(true, ""); } //showhide other/ attache $('.app-parent.apOccupationType_attache').toggle($(this).val() == '30'); $('.app-parent.apOccupationType_business').toggle($(this).val() == '54'); $('.app-parent.apOccupationType_other').toggle(!/^(30|54|13|19|27|60)?$/.test($(this).val())); }); /** Step 3b **/ //prevent letters $("#apIncome_id").keydown(function(event) { numOnly(event); }); $("#apWorkPhone_id").keydown(function(event) { phoneFormatting(this,$(this),event); }); $("#apEmployedSince_id").keydown(function(event) { dateFormatting2(this, $(this), event); }); $('#apIncome_id , #apOtherIncome_id').blur(function(){ if(!$(this).valid(val_error)){ $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); return; } var pid1 = $("input[name=pid1]").val(); var occupation = $('#apOccupation_id').value(); var student = $('#apStudent_id').value(); var income = personal_income(); var houseHoldIncome = household_income(); if (income == 'NaN') { $('.warning_avion_inf').hide(); $('.warning_avion_priv').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); } else { if (student == 'Y') { $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); } else if (pid1 == 'avion_priv' && income < 200000 && houseHoldIncome < 200000) { $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').show(); } else if (pid1 == 'avion_inf' && income < 60000 && houseHoldIncome < 100000) { $('.warning_avion_inf').show(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); } else if (pid1 == 'westjet_world' && income < 70000 && houseHoldIncome < 120000) { $('.warning_avion_inf').hide(); $('.warning_westjet_world').show(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); } else if (pid1 == 'ba_platinum' && income < 60000 && houseHoldIncome < 100000) { $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').show(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); } else if (occupation != "60" && occupation != "24" && occupation != "27" && occupation != "19" && occupation != "13" && income < 12000) { $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').show(); $('.warning_avion_priv').hide(); } else { $("#apOtherIncome_id").show_error(true,content.apOtherIncome[$("#lang_id").value()].errors.invalidIncome); $('.warning_avion_inf').hide(); $('.warning_westjet_world').hide(); $('.warning_ba_platinum').hide(); $('.warning_12k').hide(); $('.warning_avion_priv').hide(); } } }); /** Steps 3 & 4 **/ $("#apOtherIncome_id, #apAssets_id, #apRentMtgPayment_id, #apSIN_id").keydown(function(event) { numOnly(event); }); //Other Income Source and Assets Source show/hide logic $('#apAssets_id , #apOtherIncome_id').blur(function(){ $(".app-parent."+$(this).attr('name')+"Source").toggle($(this).val() != ''); }); //New logic for branch selector $("#searchBranch").click(function(){ if($('#altSearchString_id').val() != "") { findAltBranch($('#altSearchString_id').val()); } }); }); //end of document.ready /** review **/ function submit_app() { //session_delete(); var query_obj = {}; //get all page one fields $('#getting-started').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); $('#step1 form').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); $('#step2a form').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); if(previousAddressRequired){ $('#step2b form').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); } $('#step3a form').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); $('#step3b form').find('input, select, textarea').each(function(){ if($(this).value()) { query_obj[$(this).attr('name')] = $(this).value(); } }); //only get what is necessary for step 4 query_obj['findAddressA1'] = $("#findAddressA1_id").val(); query_obj['findCity1'] = $("#findCity1_id").val(); query_obj['findProvince1'] = $("#findProvince1_id").val(); query_obj['findPostalCode1'] = $("#findPostalCode1_id").val(); query_obj['findTransit1'] = $("#findTransit1_id").val(); query_obj['findName1'] = $("#findName1_id").val(); query_obj['findProcCentre1'] = $("#findProcCentre1_id").val(); query_obj['pid1'] = $("#pid1_id").val(); query_obj['session_id'] = $("#session_id_id").val(); query_obj['ASC'] = $("#ASC_id").val(); query_obj['product_code'] = $("#product_code_id").val(); query_obj['appStartTime'] = $("#appStartTime_id").val(); query_obj['lang'] = $("#lang_id").val(); query_obj['apStudent'] = $("#apStudent_id").val(); //////////////////////////////////////////////////////////// query_obj['previousAddressRequired'] = (previousAddressRequired)?"Y":"N"; //////////////////////////////////////////////////////////// //use constructed object to add inputs for each field to the review //page form for(var field in query_obj){ $("#page_3").append(''); } $("#page_3").submit(); } /** HELPER FUNCTIONS **/ function dateFormatting(object_js, object, event) { if(numOnly(event) && (object.val().length == 4 || object.val().length == 7 )) { object.val(object.val()+"-"); } android2FormattingFix(object_js, object, event); } function dateFormatting2(object_js, object, event) { if(numOnly(event) && (object.val().length == 4)) { object.val(object.val()+"-"); } android2FormattingFix(object_js, object, event); } function phoneFormatting(object_js, object, event) { if(numOnly(event) && (object.val().length == 3 || object.val().length == 7 )) { object.val(object.val()+"-"); } android2FormattingFix(object_js, object, event); } // this solves a bug for android 2.3 stock browser function android2FormattingFix(object_js, object, event) { if ( isAndroid2 || (typeof isAndroid2 === 'undefined' && /android [12]/i.test(navigator.userAgent)) ) { if(event.keyCode == 8) { object.val(''); } else { object_js.setSelectionRange(object.val().length,object.val().length); } } } function numOnly(event){ // Allow: backspace, delete, tab, escape, enter, and dash if ( event.keyCode === 46 || event.keyCode === 8 || event.keyCode === 9 || event.keyCode === 27 || event.keyCode === 13 || event.keyCode === 109 || (event.keyCode === 189 && !event.shiftKey) || // Allow: home, end, left, right, up, down (event.keyCode >= 35 && event.keyCode <= 40) || // Allow: Ctrl+A (event.keyCode === 65 && event.ctrlKey) ) { // let it happen, don't do anything return false; } else { // Ensure that it is a number and stop the keypress if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105 )) { event.preventDefault(); return false; } return true; } } //Branch locator and address locator service calls for the first page function findBranchAndAddress(){ //find the branch info var url = '/cgi-bin/common-ws/rbcServices_v1/service.cgi/branchlocator'; var postalCode = $("#apPostalCode_id").val(); var session_id = $("#session_id_id").val(); var data = { 'postal_code': postalCode, 'session_id': session_id}; jQuery.ajax({ url: url, type: "POST", dataType: 'text', data: ({ "data" : JSON.stringify(data) }), success: function(response) { var data = $.parseJSON(response); var status = data["result_code"]; if(status == ""){ status = 999; var msg = data["result_content"]; error(status,msg); } if(status == 0){ var data = data["result_content"]; for( var param in data.params){ if(data.params[param]){ $("#"+param+"_id").val(data.params[param]); } } $("#altSearchString_id").valChange($("#apPostalCode_id").val()); } else { $("body").addClass('show-form'); $("#alt_branch_info").hide(); branchFail = false; } }, error:function(response) { var XML_Data = $.parseJSON(response); var status = XML_Data["result_code"]; var msg = data["result_content"]; error(status,msg); }, async: true }); //address service call //only call if the user hasn't entered any information var url = '/cgi-bin/common-ws/rbcServices_v1/service.cgi/address/'; var postalCode = $("#apPostalCode_id").val(); var session_id = $("#session_id_id").val(); var data = { 'postal_code': postalCode, 'session_id': session_id }; jQuery.ajax({ url: url, type: "POST", dataType: 'text', data: ({ "data" : JSON.stringify(data) }), success: function(response) { var data = $.parseJSON(response); var status = data["result_code"]; if(status == ""){ status = 999; var msg = data["result_content"]; error(status,msg); } if(status == 0){ var data = data["result_content"]; for( var param in data.params){ $("#"+param+"_id").valChange(data.params[param]); if(!data.params[param]){ $("#"+param+"_id").show_error(true); $(".app-parent."+param).removeClass('app-valid'); } } } }, error:function(response) { var XML_Data = $.parseJSON(response); var status = XML_Data["result_code"]; var msg = data["result_content"]; error(status,msg); }, async: true }); } //call findAlt branch after we know what the postal code is function findAltBranch(search){ //find the branch info below *thanks* var url = '/cgi-bin/common-ws/rbcServices_v1/service.cgi/branchlocator/alternate'; var session_id = $("#session_id_id").val(); var data = { 'search': search, 'session_id': session_id}; jQuery.ajax({ url: url, type: "POST", dataType: 'text', data: ({ "data" : JSON.stringify(data) }), success: function(response) { var data = $.parseJSON(response); var status = data["result_code"]; if(status == ""){ status = 999; var msg = data["result_content"]; error(status,msg); } if(status == 0){ $("#alt_branch_info").show(); $("#show-form").show(); var data = data["result_content"]; for( var param in data.params){ $("#"+param+"_id").valChange(data.params[param]); //populate the drop down box } $("#alt_branch_info").summary(); $("#branch_information").summary(); $.mobile.loading('hide'); $('.ui-loader-background').hide(); } else { $.mobile.loading('hide'); $('.ui-loader-background').hide(); $("#show-form").hide(); $("#altSearchString_id").show_error(false,content.altSearchString[$("#lang_id").value()].errors.invalid); if(branchFail == false){ $("#altSearchString_id").show_error(true,content.altSearchString[$("#lang_id").value()].errors.invalid); } } }, error:function(response) { var XML_Data = $.parseJSON(response); var status = XML_Data["result_code"]; var msg = data["result_content"]; error(status,msg); }, async: true }); } function selectAltBranch(num){ $("#findTransit1_id").val($("#altTransit"+num+"_id").val()); $("#findName1_id").val($("#altName"+num+"_id").val()); $("#findAddressA1_id").val($("#altAddressA"+num+"_id").val()); $("#findAddressB1_id").val($("#altAddressB"+num+"_id").val()); $("#findCity1_id").val($("#altCity"+num+"_id").val()); $("#findProvince1_id").val($("#altProvince"+num+"_id").val()); $("#findPostalCode1_id").val($("#altPostalCode"+num+"_id").val()); $("#findPhone1_id").val($("#altPhone"+num+"_id").val()); $("#findProcCentre1_id").val($("#altProcCentre"+num+"_id").val()); $("#findHoursMon1_id").val($("#altHoursMon"+num+"_id").val()); $("#findHoursTue1_id").val($("#altHoursTue"+num+"_id").val()); $("#findHoursWed1_id").val($("#altHoursWed"+num+"_id").val()); $("#findHoursThu1_id").val($("#altHoursThu"+num+"_id").val()); $("#findHoursFri1_id").val($("#altHoursFri"+num+"_id").val()); $("#findHoursSat1_id").val($("#altHoursSat"+num+"_id").val()); $("#findHoursSun1_id").val($("#altHoursSun"+num+"_id").val()); $("#findDistance1_id").val($("#altDistance"+num+"_id").val()); } //call session update service to keep the session alive function session_retrieve(){ var url = '/cgi-bin/common-ws/rbcServices_v1/service.cgi/sessionretrieve'; var session_id = $("#session_id_id").val(); var data = { 'session_id': session_id,'session_data': " ",'session_timeout': "20" }; jQuery.ajax({ url: url, type: "POST", dataType: 'text', data: ({ "data" : JSON.stringify(data) }), success: function(response) { var data = $.parseJSON(response); var status = data["result_code"]; if(status == ""){ status = 999; var msg = data["result_content"]; error(status,msg); } if(status == 0){ $("#session_id_id").val(data.result_content.session_id); } else { status = 999; var msg = "Session Service failed."; error(status,msg); } }, error:function(response) { var XML_Data = $.parseJSON(response); var status = XML_Data["result_code"]; var msg = "Session Service failed."; error(status,msg); }, async: true }); } //call session delete service to delete the session on submission //it is not going to an error page if the call fails to aviod app submission function session_delete(){ var url = '/cgi-bin/common-ws/rbcServices_v1/service.cgi/sessiondelete'; var session_id = $("#session_id_id").val(); var data = { 'session_id': session_id}; jQuery.ajax({ url: url, type: "POST", dataType: 'text', data: ({ "data" : JSON.stringify(data) }), success: function(response) { if(data.result_code == 0){ $("#session_id_id").val(''); } }, error:function(response) {}, async: false }); } function personal_income(){ var income = $('#apIncome_id').val() || 0; var otherIncome = $('#apOtherIncome_id').val() || 0; return parseInt(income, 10) + parseInt(otherIncome, 10); } function household_income(){ var income = $('#apIncome_id').val() || 0; var otherIncome = $('#apOtherIncome_id').val() || 0; if ($('#apOtherIncomeSource').val() == 'SpouseIncome') { return parseInt(otherIncome, 10) + parseInt(income, 10); } else { return 0; } } function error(code,msg) { document.write("
"); document.getElementById("error").submit(); } function val_error() { var code = "VAL99"; var msg = "validationException"; document.write(""); document.getElementById("error").submit(); }