1window.items_dealer = []; 2var CampaignType = 'testdrive' 3var selected_dealer ,selected_branch = null; 4var isStockAvailable = false; 5var gmap_iframe = window.google_map; 6 7var delayAliveSpace = null; 8 9var data_alivespace_timeslot = null; 10function getSelectedSerie(){ 11 var serie_selected = $("#series_code").val(); 12 return data_alivespace_grade[serie_selected]; 13 14} 15isAlive_ruleShown = false; 16var is_eventClickChangeModel = false; 17function showRules(){ 18 var title = '<p class="black heavent fs-title ">à¸à¸à¸à¸²à¸£à¹à¸à¹à¸ªà¸à¸²à¸¡à¸à¸à¸ªà¸à¸à¸£à¸à¸¢à¸à¸à¹</p>'; 19 var html = '<ol style="margin-left: 15px;"> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-1" name="checkCourtRule-1"> <label class="form-check-label" for="checkCourtRule-1"> à¸à¹à¸²à¸à¸à¸³à¹à¸à¹à¸à¸à¹à¸à¸à¸à¸³à¹à¸à¸à¸±à¸à¸à¸µà¹à¸à¸±à¸§à¸à¸£à¸´à¸à¸à¸µà¹à¸¢à¸±à¸à¹à¸¡à¹à¸«à¸¡à¸à¸à¸²à¸¢à¸¸ มาà¹à¸ªà¸à¸à¸à¸±à¸à¹à¸à¹à¸²à¸«à¸à¹à¸²à¸à¸µà¹à¹à¸à¸§à¸±à¸à¸à¸à¸¥à¸à¸à¸à¸±à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-2" name="checkCourtRule-2"> <label class="form-check-label" for="checkCourtRule-2"> à¸à¸²à¸£à¸ªà¸³à¸£à¸à¸à¸à¸´à¸§à¸à¸à¸¥à¸à¸à¸à¸±à¸ 1 à¸à¸´à¸§ สามารà¸à¸£à¸à¸à¸£à¸±à¸à¸à¸¹à¹à¸à¸±à¸à¸à¸µà¹à¹à¸à¹ 2 à¸à¸à¹à¸¥à¸°à¸à¸¹à¹à¹à¸à¸¢à¸ªà¸²à¸£ 1 à¸à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-3" name="checkCourtRule-3"> <label class="form-check-label" for="checkCourtRule-3"> à¸à¸£à¸¸à¸à¸²à¸ªà¸§à¸¡à¸£à¸à¸à¹à¸à¹à¸²à¸«à¸¸à¹à¸¡à¸ªà¹à¸à¸«à¸£à¸·à¸à¸£à¸à¸à¹à¸à¹à¸²à¸à¹à¸²à¹à¸à¹à¸à¸à¸²à¸£à¸à¸à¸¥à¸à¸à¸à¸±à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-4" name="checkCourtRule-4"> <label class="form-check-label" for="checkCourtRule-4"> หà¹à¸²à¸¡à¸à¹à¸²à¸¢à¸ าà¸à¸à¸´à¹à¸ à¹à¸¥à¸°à¸ าà¸à¹à¸à¸¥à¸·à¹à¸à¸à¹à¸«à¸§à¹à¸à¸£à¸°à¸«à¸§à¹à¸²à¸à¸à¸²à¸£à¸à¸à¸¥à¸à¸à¸à¸±à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-5" name="checkCourtRule-5"> <label class="form-check-label" for="checkCourtRule-5"> หà¹à¸²à¸¡à¸à¸³à¸à¸²à¸«à¸²à¸£ à¹à¸à¸£à¸·à¹à¸à¸à¸à¸·à¹à¸¡ à¹à¸¥à¸°à¸ªà¸±à¸à¸§à¹à¹à¸¥à¸µà¹à¸¢à¸à¸à¸¶à¹à¸à¸à¸à¸£à¸à¸à¸à¸¥à¸à¸à¸à¸±à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-6" name="checkCourtRule-6"> <label class="form-check-label" for="checkCourtRule-6"> à¸à¸à¸´à¸à¸±à¸à¸´à¸à¸²à¸¡à¸à¸³à¹à¸à¸°à¸à¸³à¸à¸à¸à¸à¸¹à¹à¸à¸¶à¸à¸ªà¸à¸à¸à¸¢à¹à¸²à¸à¹à¸à¸£à¹à¸à¸à¸£à¸±à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-7" name="checkCourtRule-7"> <label class="form-check-label" for="checkCourtRule-7"> à¸à¸¹à¹à¸à¸¶à¸à¸ªà¸à¸à¸¡à¸µà¸ªà¸´à¸à¸à¸´à¹à¸¢à¸¸à¸à¸´à¸à¸²à¸£à¸à¸à¸ªà¸à¸à¸«à¸²à¸à¸à¹à¸à¹à¸«à¹à¹à¸à¸´à¸à¹à¸«à¸à¸¸à¸à¸²à¸£à¸à¹à¸à¸±à¸à¸à¸£à¸²à¸¢à¹à¸à¹à¸à¸¹à¹à¸à¸à¸ªà¸à¸à¹à¸à¸à¸«à¸£à¸·à¸ à¸à¸¹à¹à¸£à¹à¸§à¸¡à¸à¸à¸ªà¸à¸à¸à¹à¸²à¸à¸à¸·à¹à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-8" name="checkCourtRule-8"> <label class="form-check-label" for="checkCourtRule-8"> สำหรัà¸à¸ªà¸à¸£à¸µà¸¡à¸µà¸à¸£à¸£à¸ ๠à¸à¸£à¸¸à¸à¸²à¹à¸à¹à¸à¹à¸«à¹à¹à¸à¹à¸²à¸«à¸à¹à¸²à¸à¸µà¹à¸à¸£à¸²à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-9" name="checkCourtRule-9"> <label class="form-check-label" for="checkCourtRule-9"> à¹à¸à¸£à¸à¸ªà¸¹à¸à¸à¸¸à¸«à¸£à¸µà¹à¹à¸à¸à¸·à¹à¸à¸à¸µà¹à¸à¸µà¹à¸à¸³à¸«à¸à¸ </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-10" name="checkCourtRule-10"> <label class="form-check-label" for="checkCourtRule-10">
19 หาà¸à¸¡à¸²à¸ªà¸²à¸¢à¹à¸à¸´à¸ 10 à¸à¸²à¸à¸µ à¸à¸·à¸à¹à¸à¹à¸à¸à¸²à¸£à¸ªà¸¥à¸°à¸ªà¸´à¸à¸à¸´à¸à¸²à¸£à¸à¸à¸à¸à¸à¸¥à¸à¸à¸à¸±à¸à¹à¸à¸£à¸à¸à¸à¸±à¹à¸à¹ </label> </div> </li> </ol>'; 20 if(WEB_LANG == 'en'){ 21 title = '<p class="black heavent fs-title ">Test Drive Court Safety Rules</p>'; 22 html = '<ol style="margin-left: 15px;"> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-1" name="checkCourtRule-1"> <label class="form-check-label" for="checkCourtRule-1"> Your valid driving license is required before test drive. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-2" name="checkCourtRule-2"> <label class="form-check-label" for="checkCourtRule-2"> For 1 test drive reservation slot can accommodate 2 drivers and 1 passenger. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-3" name="checkCourtRule-3"> <label class="form-check-label" for="checkCourtRule-3"> Please wear proper footwear, no slippers or high heels allowed. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-4" name="checkCourtRule-4"> <label class="form-check-label" for="checkCourtRule-4"> No photography or video recording while test drive. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-5" name="checkCourtRule-5"> <label class="form-check-label" for="checkCourtRule-5"> No food, drinks and pet are allowed onboard. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-6" name="checkCourtRule-6"> <label class="form-check-label" for="checkCourtRule-6"> Please follow the instructorâs guidance strictly. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-7" name="checkCourtRule-7"> <label class="form-check-label" for="checkCourtRule-7"> The instructor has the right to stop the test driving early or immediately if there is something that may cause danger. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-8" name="checkCourtRule-8"> <label class="form-check-label" for="checkCourtRule-8"> Please inform our staff if you may be pregnant. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-9" name="checkCourtRule-9"> <label class="form-check-label" for="checkCourtRule-9"> Please smoke and vape in designated area. </label> </div> </li> <li> <div class="form-check"> <input class="form-check-input checkCourtRules" type="checkbox" value="1" id="checkCourtRule-10" name="checkCourtRule-10"> <label class="form-check-label" for="checkCourtRule-10"> If you arrive more than 10 minutes late, your test drive reservation for that session will be canceled. </label> </div> </li> </ol>'; 23 } 24 setTimeout(function(){ 25 26 Swal.fire({ 27 background: '#eee', 28 title: title, 29 html: html, 30 icon: 'warning', 31 confirmButtonColor: "#eb0a1e", 32 width: 700, 33 allowOutsideClick: false, 34 showCloseButton:false, 35 confirmButtonText: ((WEB_LANG == 'en')?"Accept":"รัà¸à¸à¸£à¸²à¸"), 36 didOpen: (toast) => { 37 38 39 } 40 }).then((result) => { 41 if (result.isConfirmed) { 42 isAlive_ruleShown = true; 43 pushDataLayer({'event':'EV-alive_rules_acknowledged'}); 44 } 45 }); 46 Swal.disableButtons(); 47 $("#swal2-html-container input").click(function(){ 48 Swal.enableButtons(); 49 $("#swal2-html-container input").each(function(i,el){ 50 if(!el.checked){ 51 Swal.disableButtons(); 52 } 53 }) 54 }); 55 56 },400); 57 58 $('#driving_license_expiration_date, #driving_license_expiration_date2').caleran({ 59 locale: 'th', 60 format: 'DD/MM/YYYY', 61 minDate: moment().add(3, 'days'), 62 prevMonthIcon: "<", 63 nextMonthIcon: ">", 64 startEmpty: false, 65 singleDate: true, 66 autoCloseOnSelect: true, 67 onafterselect: function(caleran, startDate, endDate){ 68 caleran.hideDropdown(); 69 } 70 }); 71 72 $('#driving_license_expiration_date').on('focus', () => { 73 $('#driving_license_expiration_option_1').prop('checked', true) 74 }) 75 76 $('#driving_license_expiration_date2').on('focus', () => { 77 $('#driving_license_expiration_option2_1').prop('checked', true) 78 }) 79} 80function gradeAliveSpacelist(){ 81 var selected_alivespace_grade = getSelectedSerie(); 82 var selected_alivespace_serie_id = selected_alivespace_grade['id']; 83 // var selected_alivespace_grades = selected_alivespace_grade['grades']; 84 $.post("/alive/testdrive-reservation/available-grades", 85 {_token: $("#alive-token input").val(),series_id: selected_alivespace_serie_id}, 86 function(selected_alivespace_grades){ 87 88 $(".selected-grade-name").text(''); 89 $("#alivespace-grade").html("<option value=''>"+$Lang.SHOPPING_TOOLS_SELECT_GRADE+"</option>"); 90 $.each(selected_alivespace_grades,function(i,el){ 91 $("#alivespace-grade").append("<option value='"+el.id+"'>"+el.title+"</option>"); 92 }); 93 }); 94 95 96} 97function step3InitLayout(mode ){ 98 99 if(mode == 'alive'){ 100 101 $(".row-add_driver2").show(); 102 $(".row-attach_driverlicence").show(); 103 }else{ 104 $(".row-add_driver2").hide(); 105 $(".row-attach_driverlicence").hide(); 106 107 } 108} 109 110var isAliveActive = false; 111function checkAliveSpace(){ 112 clearTimeout(delayAliveSpace); 113 var serie_selected = $("#series_code").val(); 114 var isAlive_model_visible = true; 115 if(typeof data_alivespace_grade[serie_selected] == 'undefined'){ 116 isAlive_model_visible = false; 117 } 118 $("#display-selected-datetime").hide(); 119 120 delayAliveSpace = setTimeout(function(){ 121 isAliveActive = ($('#dealer').val() == '00000'); 122 if(isAliveActive && isAlive_model_visible){ 123 124 gradeAliveSpacelist(); 125 $("#box__alive-select-pin").hide(); 126 $("#box__alive-select-date").hide(); 127 $("#box__alive-select-grade").show(); 128 129 }else{ 130 if(isAlive_model_visible){ 131 $("#box__alive-select-pin").show(); 132 }else{ 133 $("#box__alive-select-pin").hide(); 134 } 135 136 $("#box__alive-select-grade").hide(); 137 $(".selected-grade-name").text(''); 138 if($("#dealer").val() != "" ){ 139 $.each(items_dealer, function(key,val){ 140 var selected_dealer_code = $("#dealer").val() ; 141 if(selected_dealer_code == val.comp_code){ 142 isStockAvailable = (val.stock == 'Y'); 143 } 144 }); 145 146 }else{ 147 isStockAvailable = false; 148 } 149 150 if(isStockAvailable ){ 151 152 $("#box__alive-select-date").show(); 153 $("#timeslot").html(' <option value="">'+$Lang.SHOPPING_TOOLS_SELECT_TIME+'</option><option value="08:00">08:00 - 12.00</option> <option value="13:00">13:00 - 17:00</option>'); 154 max_reserve_day = 21; // days 155 $('.calendar-picker').caleran({ 156 autoCloseOnSelect: true, 157 singleDate: true, 158 minDate: moment().add(2, 'days'), 159 maxDate: moment().add(max_reserve_day-1, 'days'), 160 format: 'DD/MM/YYYY', 161 onafterselect: function(caleran, startDate, endDate){ 162 var days = $('.calendar-picker').val().split("/"); 163 pushDataLayer({ 164 'event': 'EV-select_testdrive_date', 165 'testdrive_date': ( days[2]+"/" +days[1]+"/" +days[0] ) 166 }) 167 } 168 }); 169 }else{ 170 $("#box__alive-select-date").hide(); 171 } 172 } 173 },100); 174} 175 176function renderTimeslot(){ 177 $("#timeslot").html('<option value="">'+$Lang.SHOPPING_TOOLS_SELECT_TIME+'</option>'); 178 var days = $('.calendar-picker').val().split("/"); 179 day_selected = days[2]+"-" +days[1]+"-" +days[0]; 180 var selected_alivespace_grade = getSelectedSerie(); 181 var selected_alivespace_serie_id = selected_alivespace_grade['id']; 182 var selected_grade_id = $("#alivespace-grade").val(); 183 $.post("/alive/testdrive-reservation/available-time",{_token: $("#alive-token input").val(),series_id:selected_alivespace_serie_id,grade_id:selected_grade_id,reserve_date:day_selected},function(available_day){ 184 185 186 $.each(available_day,function(i,el){ 187 // var time_val = el.split(" - "); 188 $("#timeslot").append("<option value='"+el.id+"'>"+el.time+"</option>"); 189 }); 190 }); 191} 192function updateTimeslot(ev){ 193 $("#display-selected-datetime").show(); 194 var selected_date = $('.calendar-picker').val(); 195 var selected_time = $("#timeslot option:selected").text(); 196 var html = selected_date +' '+selected_time ; 197 $(".selected-datetime").html(html); 198 var days = $('.calendar-picker').val().split("/"); 199 200 pushDataLayer({ 201 'event': 'EV-select_testdrive_timeslot', 202 'testdrive_date': ( days[2]+"/" +days[1]+"/" +days[0] ), 203 'testdrive_time': selected_time 204 }) 205} 206$(document).ready(function(e) { 207 208 $("#alivespace-grade").change(function(){ 209 $("#box__alive-select-date").hide(); 210 211 // var model_code = $("#model_code").val(); 212 var selected_grade_id = $("#alivespace-grade").val(); 213 $(".selected-grade-name").text($("#alivespace-grade option:selected").text()); 214 pushDataLayer({ 215 'event': 'EV-select_alive_testdrive_grade', 216 'alive_testdrive_grade': $("#alivespace-grade option:selected").text() 217 }) 218 219 220 var selected_alivespace_grade = getSelectedSerie(); 221 var selected_alivespace_serie_id = selected_alivespace_grade['id']; 222 $.post("/alive/testdrive-reservation/disabled-dates",{_token: $("#alive-token input").val(),series_id:selected_alivespace_serie_id,grade_id:selected_grade_id},function(disabled_days){ 223 224 var disabled_ranges = []; 225 $.each(disabled_days, function(index, date){ 226 disabled_ranges.push({ 227 start: moment(date,"YYYY-MM-DD"), 228 end: moment(date,"YYYY-MM-DD") 229 }); 230 }); 231 232 let currentDate = moment(); 233 let minDate = null; 234 let dateFormat = "YYYY-MM-DD"; 235 236 // Assuming 'data' is an array of disabled dates in "YYYY-MM-DD" format 237 for (let i = 2; i < 60; i++) { 238 let checkDate = currentDate.clone().add(i, 'days').format(dateFormat); 239 if (!disabled_days.includes(checkDate)) { 240 minDate = checkDate; 241 break; 242 } 243 } 244 245 max_reserve_day= 21; 246 $('.calendar-picker').caleran({ 247 autoCloseOnSelect: true, 248 locale: 'th', 249 format: 'DD/MM/YYYY', 250 startEmpty: false, 251 minDate: moment(minDate),//.add(1, 'days'), 252 // maxDate: moment().add(2, 'months'), 253 maxDate: moment().add(max_reserve_day-1, 'days'), // 7 days 254 prevMonthIcon: "<", 255 nextMonthIcon: ">", 256 singleDate: true, 257 disableDays: function(day){ 258 return false; 259 }, 260 disabledRanges: disabled_ranges, 261 262 onafterselect: function(caleran, startDate, endDate){ 263 // console.log("onafterselect",$('.calendar-picker').val()) 264 renderTimeslot(); 265 var days = $('.calendar-picker').val().split("/"); 266 pushDataLayer({ 267 'event': 'EV-select_testdrive_date', 268 'testdrive_date': ( days[2]+"/" +days[1]+"/" +days[0] ) 269 }) 270 }, 271 oninit: function(caleran){ 272 // console.log("oninit",$('.calendar-picker').val()) 273 renderTimeslot(); 274 } 275 }); 276 var caleran = $('.calendar-picker').data("caleran"); 277 caleran.reDrawCalendars();
278 $("#box__alive-select-date").show(); 279 },'json'); 280 281 282 }) 283 $(".btn-select-alivespace").click(function(ev){ 284 ev.preventDefault(); 285 gmap_iframe.initMarker(); 286 $("#province").val($Lang.SHOPPING_TOOLS_PROVINCE_BANGKOK).change(); 287 $("#dealer").val("00000").change(); 288 gmap_iframe.branch_change_marker('00000','00') 289 290 gmap_iframe.map.setZoom(12); 291 $('#box__dealers_select').show(); 292 checkAliveSpace(); 293 294 pushDataLayer({'event':'EV-testdrive_alive'}); 295 }); 296 $('#dealer').change(function(ev){ 297 checkAliveSpace(); 298 }); 299 300 301 302 303 $('.box__step-1').removeClass('start') 304 305 // if($('#google_map').length > 0){ 306 // var gmap_iframe = $('#google_map')[0].contentWindow; 307 // } 308 let isMobile = window.matchMedia("only screen and (max-width: 760px)").matches; 309 310 311 312 313 if($('#Campaign_source').length > 0){ 314 if($('#Campaign_source').val() == ""){ 315 $('a.close').show(); 316 } 317 } 318 else{ 319 $('a.close').show(); 320 } 321 322 $('.slider-main').slick({ 323 slidesToShow: 1, 324 slidesToScroll: 1, 325 dots: false, 326 arrows: true, 327 adaptiveHeight: true, 328 // asNavFor: '.slider-promotion', 329 // responsive: [{ 330 // breakpoint: 992, 331 // settings: { 332 // dots: false, 333 // asNavFor: '.slider-bullet' 334 // } 335 // }] 336 }); 337 338 $('.slider-main').on('click', '.slick-prev, .slick-next', function() { 339 is_eventClickChangeModel = true; 340 }); 341 if($(window).width() > 991){ 342 $('.list__general a[data-type]').click(function(e) { 343 e.preventDefault(); 344 var car_type = $(this).data('type'); 345 $('.list__general .item').removeClass('active'); 346 $(this).parent().addClass('active'); 347 var first_slide_number = -1; 348 $('.slider-main .series-item[data-type="'+car_type+'"]').each(function(i,el){ 349 if(first_slide_number == -1 && $(el).data("slick-index") >= 0){ 350 first_slide_number = $(el).data("slide-number"); 351 } 352 }) 353 $('.slider-main').slick('slickGoTo', first_slide_number); 354 pushDataLayer({ 355 event: "EV-select_cartype", 356 car_type :car_type 357 }); 358 is_eventClickChangeModel = true; 359 }); 360 } else{ 361 $('.list__general .form-select-car_type').on('change', function(){ 362 var car_type = $(this).val(); 363 if(car_type){ 364 var first_slide_number = -1; 365 $('.slider-main .series-item[data-type="'+car_type+'"]').each(function(i,el){ 366 if(first_slide_number == -1 && $(el).data("slick-index") >= 0){ 367 first_slide_number = $(el).data("slide-number"); 368 } 369 }) 370 $('.slider-main').slick('slickGoTo', first_slide_number); 371 pushDataLayer({ 372 event: "EV-select_cartype", 373 car_type :car_type 374 }) 375 } 376 else{ 377 $('.slider-main').slick('slickGoTo', 0); 378 $('.form-select-car_type option[value=""]').prop('selected', true) 379 } 380 is_eventClickChangeModel = true; 381 }); 382 } 383 if(series_list.length > 0) 384 $('.slider-main').on('afterChange', function(event, slick, currentSlide, nextSlide){ 385 386 if($('#province').val() != '' ){ 387 $('#province').val('').change(); 388 } 389 reset_car_selected() 390 391 392 var series_code = $('.series-item.slick-current').data('id'); 393 var series_name = $('.series-item.slick-current').data('name'); 394 var car_type = $('.series-item.slick-current').data('type'); 395 396 if(is_eventClickChangeModel){ 397 is_eventClickChangeModel = false; 398 pushDataLayer({ 399 event: "EV-select_model", 400 select_model: series_name, 401 car_type: car_type, 402 }); 403 } 404 405 var selected_series = series_list.find((series) => series.code === series_code) 406 $('#model_code').val(selected_series.model_code) 407 408 let vehicleIds = getVehicleIds(selected_series.model_code, selected_series.grades) 409 $('#vehicle_id').val(`['${vehicleIds.join("']['")}']`) 410 411 $('.list__general .item').removeClass('active'); 412 $('.list__general .item a[data-type="'+car_type+'"]').parent().addClass('active'); 413 414 const select_car_type = $('.form-select-car_type').val() 415 if(select_car_type){ 416 $('.form-select-car_type option[value="'+car_type+'"]').prop('selected', true) 417 } 418 419 if (series_code) { 420 $('#series_code').val(series_code); 421 $('#series_name').val(series_name); 422 $('#model_code').val(selected_series.model_code); 423 424 $('.selected-series-name').text(selected_series.name) 425 $('.selected-series-picture').html(`<img src="${MAIN_URL}/media/${selected_series.picture}" alt="${selected_series.name}">`) 426 427 var active_model_name = $('.series-item.slick-current').data('name'); 428 if(typeof line_liff_data != "undefined" && line_liff_data.grade_name && line_liff_data.model_name == active_model_name){ 429 $(grade_select).val(line_liff_data.grade_name).trigger('change'); 430 } 431 432 if(typeof line_liff_data != "undefined"){ 433 line_liff_data.model_name = series_name 434 } 435 } 436 }); 437 438 // $('.slider__car .slider').slick({ 439 // infinite: true, 440 // slidesToShow: 3, 441 // slidesToScroll: 1, 442 // arrows: true, 443 // dots: check_mobile() ? false : true, 444 // centerMode: true, 445 // variableWidth: true, 446 // asNavFor: '.slider-bullet' 447 // }); 448 449 // $('.slider-bullet').slick({ 450 // infinite: true, 451 // slidesToShow: 6, 452 // slidesToScroll: 1, 453 // asNavFor: '.slider__car .slider', 454 // arrows: true, 455 // dots: false, 456 // centerMode: true, 457 // focusOnSelect: true, 458 // responsive: [ 459 // { 460 // breakpoint: 768, 461 // settings: { 462 // slidesToShow: 5 463 // } 464 // } 465 // ] 466 // }); 467 468 const series_code = $('.series-item.slick-current').data('id'); 469 var series_name = $('.series-item.slick-current').data('name'); 470 471 var selected_series = series_list.find((series) => series.code === series_code) 472 473 // $('#series').val(series_code); 474 // $('#series_name').val(series_name); 475 476 let vehicleIds = getVehicleIds(selected_series.model_code, selected_series.grades) 477 $('#vehicle_id').val(`['${vehicleIds.join("']['")}']`) 478 479 $('#series_code').val(series_code); 480 $('#series_name').val(series_name); 481 $('#model_code').val(selected_series.model_code); 482 483 $('.selected-series-name').text(selected_series.name) 484 $('.selected-series-picture').html(`<img src="${MAIN_URL}/media/${selected_series.picture}" alt="${selected_series.name}">`) 485 486 $('.slider__car .slider').on('afterChange', function(event, slick, currentSlide, nextSlide){ 487 var series_code = $('.series-item.slick-current').data('id'); 488 var series_name = $('.series-item.slick-current').data('name'); 489 490 if (series_code) { 491 $('#series_code').val(series_code); 492 $('#series_name').val(series_name); 493 } 494 }); 495 496 $('#province').on('change',onProvinceChange); 497 498 $('#dealer').on('change', function(){ 499 var dealer_code = $(this).val(); 500 var province = $('#province').val(); 501 var post_code = $('#post_code').val(); 502 503 $('#gmap_dealer_code').val(''); 504 $('#branch').val(''); 505 gmap_iframe.dealer_change_marker(dealer_code, province, post_code); 506 pushDataLayer({ 507 "event": "EV-select_dealer", 508 "postal_code": post_code|| null, 509 "province": province, 510 "dealer_code": dealer_code, 511 "dealer_name": $("#dealer option:selected").text() 512 }); 513 514 set_dealer_branch_options(dealer_code); 515 516 // $('#url_dlr').val(dealer_code); 517 checkAliveSpace(); 518 });
519 520 $('#branch').on('change', function(){ 521 console.log("branch_code change::",$(this).val()) 522 var branch_code = $(this).val(); 523 var dealer_code = $('#dealer').val(); 524 check_step2_complete(); 525 if(branch_code){ 526 gmap_iframe.branch_change_marker(branch_code, dealer_code); 527 pushDataLayer({ 528 "event": "EV-select_branch", 529 "dealer_code": dealer_code, 530 "dealer_name": $("#dealer option:selected").text(), 531 "branch_code": branch_code, 532 "branch_name": $("#branch option:selected").text() 533 }); 534 } 535 else{ 536 $('#dealer').trigger('change'); 537 } 538 539 // $('#url_dlr').val(dealer_code); 540 // if(dealer_code){ 541 // $('#url_bra').val(branch_code); 542 // } 543 // else{ 544 // $('#url_bra').val(''); 545 // } 546 }); 547 548 $('#btn_submit').click(function() { 549 const btn = $(this); 550 const url_dlr = $('#url_dlr').val(); 551 const url_bra = $('#url_bra').val(); 552 553 btn.attr('disabled', 'disabled'); 554 555 $('#branch').removeAttr('disabled'); 556 $('#dealer').removeAttr('disabled'); 557 558 $('#dealer').val(selected_dealer); 559 $('#branch').val(selected_branch); 560 561 $("#dealer_name").val($("#dealer option:selected").text()); 562 $("#branch_name").val($("#branch option:selected").text()); 563 564 $(".loading").show(); 565 566 var key = $("#g-recaptcha-k").val(); 567 grecaptcha.execute(key, {action: 'testdrive_request'}).then(function(token) { 568 $("#g-recaptcha-response").val(token); 569 is_alive_space = $("#dealer").val() == "00000"; 570 if(is_alive_space){ 571 572 // btn.removeAttr('disabled'); 573 // $(".loading").hide(); 574 //Todo validate 575 576 window.dataLayer = window.dataLayer || []; 577 window.dataLayer.push({ 578 event: 'formSubmissionSuccess', 579 formId: 'main_form' 580 }); 581 582 // if(typeof tracking_store_data != "undefined"){ 583 // payload += ("&uid="+tracking_store_data.uid+"&tid="+tracking_store_data.tid); 584 // } 585 586 // if(typeof line_liff_data != "undefined"){ 587 // payload += ("&line_id="+line_liff_data.line_id); 588 // } 589 // var days = $('.calendar-picker').val().split("/"); 590 // day_selected = days[2]+"-" +days[1]+"-" +days[0]; 591 $("#reserve_date").val($('.calendar-picker').val()); 592 $("#time_slot_id").val($("#timeslot").val()); 593 $("#grade_id").val($("#alivespace-grade").val()); 594 595 var selected_alivespace_grade = getSelectedSerie(); 596 var selected_alivespace_serie_id = selected_alivespace_grade['id']; 597 $("#series_id").val(selected_alivespace_serie_id); 598 599 $("#main_form").attr('action', "/alive/testdrive-reservation/fill-in-information"); 600 $("#main_form").removeAttr('target'); 601 $("#main_form").attr('target', "alive_iframe"); 602 $("#main_form").trigger('submit'); 603 submit_alive_timeout = setTimeout(function(){ 604 alert_error("Timeout, please try again"); 605 606 $('.loading').hide(); 607 $("#btn_submit").removeClass("disable"); 608 $("#btn_submit").removeAttr("disabled"); 609 },9000); 610 }else{ 611 var validator_url = SITE_URL+"/index.php?app=testdrive_v2&fnc=validator"+(WEB_LANG == 'en' ? '&lang=en' : '')+"&r=" + Math.floor(Math.random()*10000) ; 612 var action_url = SITE_URL+"/index.php?app=testdrive_v2&fnc=save"+(WEB_LANG == 'en' ? '&lang=en' : '')+"&r="+Math.floor(Math.random()*10000) ; 613 614 $.post( 615 validator_url, 616 $('#main_form').serialize(), 617 function(json) { 618 btn.removeAttr('disabled'); 619 620 if (json.result == 'Access Denied') { 621 alert_error("Access Denied or Session Timeout"); 622 $(".loading").hide(); 623 return false; 624 } 625 626 if (json.result == 'INVALID') { 627 if(url_dlr != "" && url_bra == ""){ 628 $('#dealer').attr('disabled', 'disabled'); 629 } 630 631 $('#popup__error .error').text(''); 632 633 634 if(json.message.captcha != ''){ 635 alert_error(json.message.captcha); 636 637 } 638 else if(json.message.firstname != ''){ 639 alert_error(json.message.firstname); 640 641 } 642 else if(json.message.lastname != ''){ 643 alert_error(json.message.lastname); 644 645 } 646 else if(json.message.phone != ''){ 647 alert_error(json.message.phone); 648 649 } 650 else if(json.message.email != '' ){ 651 alert_error(json.message.email); 652 653 } 654 else if(json.message.plan_to_purchase != '' ){ 655 alert_error(json.message.plan_to_purchase); 656 } 657 else if(json.message.check_condition != ''){ 658 alert_error(json.message.check_condition); 659 }else{ 660 var errMessage = ""; 661 var isBackClick = false; 662 $.each(json.message,function(i,e){ 663 664 if( i == "branch" || i == 'dealer'){
665 // goto step2 666 isBackClick = true; 667 } 668 if(e != ""){ 669 errMessage = " " + e + " " + i; 670 671 } 672 }); 673 if(isBackClick){ 674 $(".box__step-3 .box__sticky .back").click(); 675 } 676 677 if( errMessage != "") 678 alert_error(errMessage); 679 else 680 alert_error( JSON.stringify( json.message)); 681 682 } 683 684 $(".loading").hide(); 685 686 $('#tag-formstatus').val('quotaion_fail'); 687 688 window.dataLayer = window.dataLayer || []; 689 window.dataLayer.push({ 690 event: 'formSubmissionFailure', 691 formId: 'main_form' 692 }); 693 694 } 695 else{ 696 $('#main_form').attr('action', action_url); 697 $('#tag-formstatus').val('testdrive_success'); 698 699 window.dataLayer = window.dataLayer || []; 700 window.dataLayer.push({ 701 event: 'formSubmissionSuccess', 702 formId: 'main_form' 703 }); 704 705 my_submit(); 706 } 707 }, 708 'json' 709 ); 710 711 } 712 }) 713 }); 714 715 $(".dealer_branch").hide(); 716 717 $("#post_code").on('click', function(){ 718 $("#post_code").prop('readonly',false); 719 }); 720 $("#post_code").on('focus', function(){ 721 document.xpost_code = $("#post_code").val(); 722 }); 723 724 $("#post_code").on('blur', function(){ 725 // $("#post_code").prop('readonly',true); 726 var post_code_val = $("#post_code").val(); 727 if(post_code_val == "" && document.xpost_code != ""){ 728 729 updateDealer($("#post_code")[0]); 730 731 $('#box__dealers_select').hide(); 732 $('#province').val('').trigger('change'); 733 gmap_iframe.infoWindow.close(); 734 } 735 736 if($(this).val().length == 5){ 737 $('#box__dealers_select').show(); 738 739 var items = []; 740 $.each(items_dealer, function(key,val) { 741 if(post_code_val == val.post_code){ 742 items.push(val); 743 } 744 }); 745 746 var default_dealer_code = $('#dealer').val(); 747 set_dealer_branch_options(default_dealer_code); 748 749 if(items.length == 0){ 750 alert_error(WEB_LANG == 'en' ? 'Dealer is not found' : 'à¹à¸¡à¹à¸à¸à¸à¸¹à¹à¹à¸à¸à¸à¸³à¸«à¸à¹à¸²à¸¢'); 751 $('#box__dealers_select').hide(); 752 $('#province').val('').trigger('change'); 753 gmap_iframe.infoWindow.close(); 754 } 755 } 756 }); 757 758 759 760 //Step 1 action 761 $('.box__step-1 .box__sticky .btn-link').on('click', function(){ 762 checkAliveSpace(); 763 var current_series_code = $('.series-item.slick-current').data('id'); 764 765 if(!current_series_code){ 766 alert_error(WEB_LANG == 'en' ? 'Please select Car' : 'à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸£à¸¸à¹à¸à¸£à¸à¸à¸µà¹à¸à¹à¸²à¸à¸ªà¸à¹à¸'); 767 } 768 769 if(current_series_code){ 770 $('.box__step-1').hide(); 771 $('.box__step-2').show(); 772 773 774 775 setTimeout(function(){$("#firstname").focus();},1000); 776 // var uri = window.location.href.split('?')[1]; 777 // window.history.pushState("", "", (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step2.html"+(uri ? "?"+uri : "")); 778 if( typeof dataLayer != "undefined"){ 779 780 dataLayer.push({'event':'EV-page-view','page_path': (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step2("+source_page_mode+")"}) 781 782 pushDataLayer({'event':'EV-shoppingtools_testdrive_step2'}); 783 } 784 check_step2_complete(); 785 } 786 }); 787 788 //Step 2 action 789 $('.box__step-2 .box__sticky .back').on('click', function(){ 790 gmap_iframe.isChangeAble = true; 791 $("#post_code").prop('readonly',true); 792 $('.box__step-1').show(); 793 $('.box__step-2').hide(); 794 goto_top(); 795 $('.slider__car .slider').slick('setPosition'); 796 797 pushDataLayer({ 798 'event': 'EV-back_btn_step2', 799 }); 800 pushDataLayer({'event': 'EV-shoppingtools_testdrive_step1', 801 "select_model": $('.series-item.slick-current').data('name'), 802 "car_type": $('.series-item.slick-current').data('type'),}); 803 }); 804 805 $('.box__step-2 .box__sticky .next').on('click', function(){ 806 807 gmap_iframe.isChangeAble = false; 808 // $("#post_code").prop('readonly',true); 809 810 selected_dealer = $('#dealer').val(); 811 selected_branch = $('#branch').val(); 812 var post_code = $('#post_code').val(); 813 814 if(selected_dealer == "" || selected_branch == ""){ 815 816 if(post_code && post_code.length < 5){ 817 alert_error(WEB_LANG == 'en' ? 'Please fill Postal Code 5 digits' : 'à¸à¸£à¸¸à¸à¸²à¸£à¸°à¸à¸¸à¸£à¸«à¸±à¸ªà¹à¸à¸£à¸©à¸à¸µà¸¢à¹à¹à¸«à¹à¸à¸¹à¸à¸à¹à¸à¸'); 818 } else{ 819 if(!selected_dealer){ 820 alert_error(WEB_LANG == 'en' ? 'Please select Dealer' : 'à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸à¸¹à¹à¹à¸à¸à¸à¸³à¸«à¸à¹à¸²à¸¢'); 821 } 822 else if(!selected_branch){ 823 alert_error(WEB_LANG == 'en' ? 'Please select Branch' : 'à¸à¸£à¸¸à¸à¸²à¹à¸¥à¸·à¸à¸à¸ªà¸²à¸à¸²'); 824 } 825 } 826 gmap_iframe.isChangeAble = true; 827 } 828 if(isStockAvailable || isAliveActive){ 829 var days = $('.calendar-picker').val().split("/"); 830 var grade_selected = $("#alivespace-grade").val(); 831 if(isAliveActive && grade_selected == ''){ 832 return alert_error( $Lang.SHOPPING_TOOLS_REQ_GRADE ); 833 } 834 if(days.length != 3){ 835 return alert_error( $Lang.SHOPPING_TOOLS_REQ_DATE ); 836 }else{ 837 day_selected = days[2]+"-" +days[1]+"-" +days[0]; 838 839 if( moment(day_selected) > moment().add(2, 'days') && 840 moment(day_selected) < moment().add(2, 'days') 841 ){ 842 return alert_error( $Lang.SHOPPING_TOOLS_REQ_WRONGDATE); 843 } 844 } 845 if($("#timeslot").val() == ''){ 846 return alert_error( $Lang.SHOPPING_TOOLS_REQ_TIME ); 847 } 848 } 849 if(selected_dealer == '00000' && $("#alivespace-grade").val() == ''){ 850 return alert_error( $Lang.SHOPPING_TOOLS_REQ_GRADE); 851 } 852 853 854 if(selected_dealer && selected_branch){ 855 $('.box__step-2').hide(); 856 $('.box__step-3').show(); 857 if(isAliveActive){ 858 859 setTimeout(function(){ 860 if(!isAlive_ruleShown) showRules();
861 },300); 862 step3InitLayout('alive'); 863 }else{ 864 865 step3InitLayout('default'); 866 } 867 868 $('#dealer_name').val($('#dealer option:selected').text()); 869 $('#branch_name').val($('#branch option:selected').text()); 870 871 $('.selected-dealer-name').text($('#dealer_name').val()) 872 $('.selected-branch-name').text($('#branch_name').val()) 873 874 // var uri = window.location.href.split('?')[1]; 875 // window.history.pushState("", "", (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step3.html"+(uri ? "?"+uri : "")); 876 if( typeof dataLayer != "undefined"){ 877 878 dataLayer.push({'event':'EV-page-view','page_path': (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step3("+source_page_mode+")"}); 879 pushDataLayer({'event':'EV-shoppingtools_testdrive_step3'}); 880 } 881 goto_top(); 882 } 883 }); 884 885 //Step 3 action 886 $('.box__step-3 .box__sticky .back').on('click', function(){ 887 gmap_iframe.isChangeAble = true; 888 $("#post_code").prop('readonly',true); 889 $('.box__step-2').show(); 890 $('.box__step-3').hide(); 891 // var uri = window.location.href.split('?')[1]; 892 // window.history.pushState("", "", (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step2.html"+(uri ? "?"+uri : "")); 893 if( typeof dataLayer != "undefined"){ 894 895 dataLayer.push({'event':'EV-page-view','page_path': (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step2("+source_page_mode+")"}) 896 pushDataLayer({ 'event': 'EV-back_btn_step3', 897 'name': CryptoJS_SHA256($("#firstname").val()), 898 'lastname': CryptoJS_SHA256($("#lastname").val()), 899 'mobile_no': CryptoJS_SHA256($("#phone").val()), 900 'email': CryptoJS_SHA256($("#email").val()), 901 'purchase_plan': $("input[name=plan_to_purchase]:checked").val() }); 902 pushDataLayer({'event':'EV-shoppingtools_testdrive_step2'}); 903 } 904 goto_top(); 905 906 }); 907 908 909 910 $('.btn-find-nearly .link').on('click', function(){ 911 navigator.geolocation.watchPosition(function(position) { 912 $('.find-nearly .text').hide(); 913 // $('#url_dlrprv').val(''); 914 // $('#url_dlr').val(''); 915 // $('#url_bra').val(''); 916 }, 917 function(error) { 918 if (error.code == error.PERMISSION_DENIED) 919 $('.btn-find-nearly .text').show(); 920 }); 921 }); 922 923 924 925 $('.btn-find-nearly').on('click', function(){ 926 gmap_iframe.set_nearly_me(true); 927 }); 928 929 $.fn.inputFilter = function(inputFilter) { 930 return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() { 931 if (inputFilter(this.value)) { 932 this.oldValue = this.value; 933 this.oldSelectionStart = this.selectionStart; 934 this.oldSelectionEnd = this.selectionEnd; 935 } else if (this.hasOwnProperty("oldValue")) { 936 this.value = this.oldValue; 937 this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd); 938 } 939 }); 940 }; 941 942 $("#post_code").inputFilter(function(value) { 943 return /^\d*$/.test(value); 944 }); 945 946 947 948 949 var model = $("#referer_model").val(); 950 if(model){$('.slider-main') 951 var $slide = $('.slider-main .item[data-id="'+model+'"]'); 952 var slide_number = $slide.data("slide-number"); 953 $('.slider-main').slick("slickGoTo", slide_number); 954 }else{ 955 var default_car_type = 'personal_car'; 956 $(".list__general a[data-type='"+default_car_type+"']").eq(0).trigger('click'); 957 $('.form-select-car_type').trigger('change'); 958 } 959}); 960 961 962 963 964 965var source_page_mode = 'html'; 966const init_url_hash = () => { 967 if(typeof line_liff_data != "undefined"){ 968 lineInit(); 969 source_page_mode = 'line'; 970 if( typeof dataLayer != "undefined") 971 dataLayer.push({'event':'EV-page-view','page_path': (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step1("+source_page_mode+")"}); 972 }else{ 973 if( typeof dataLayer != "undefined") 974 dataLayer.push({'event':'EV-page-view','page_path': (WEB_LANG == 'en' ? '/en' : '')+"/request_testdrive/step1("+source_page_mode+")"}); 975 } 976 pushDataLayer({'event':'EV-shoppingtools_testdrive_step1', 977 "select_model": $('.series-item.slick-current').data('name'), 978 "car_type": $('.series-item.slick-current').data('type'),}); 979} 980 981const remove_hash_from_url = () => { 982 var uri = window.location.toString(); 983 if (uri.indexOf("#") > 0) { 984 var clean_uri = uri.substring(0, uri.indexOf("#")); 985 window.history.replaceState({}, document.title, clean_uri); 986 } 987} 988 989 990 991const check_post_code = (evt, val) => { 992 evt = (evt) ? evt : window.event;
993 var charCode = (evt.which) ? evt.which : evt.keyCode; 994 995 // console.log(charCode+" : "+(charCode - 48)); 996 997 if((charCode > 31 && (charCode < 48 || charCode > 57)) || charCode == 13){ 998 return false; 999 } 1000 else{ 1001 if(val.length == 5){ 1002 $('#post_code').trigger('blur'); 1003 1004 } 1005 return true; 1006 } 1007} 1008 1009const init_branch_select = () => { 1010 const options = '<option data-hidden="hidden" value="">'+$Lang.SHOPPING_TOOLS_BRANCH+'</option>' 1011 $('#branch').html(options); 1012} 1013 1014const check_mobile = () => { 1015 if( navigator.userAgent.match(/Android/i) 1016 || navigator.userAgent.match(/webOS/i) 1017 || navigator.userAgent.match(/iPhone/i) 1018 || navigator.userAgent.match(/iPad/i) 1019 || navigator.userAgent.match(/iPod/i) 1020 || navigator.userAgent.match(/BlackBerry/i) 1021 || navigator.userAgent.match(/Windows Phone/i) 1022 ){ 1023 return true; 1024 } 1025 else { 1026 return false; 1027 } 1028} 1029 1030 1031const goto_top = () => { 1032 1033 $("html, body").animate({scrollTop: 0}, 500); 1034 1035} 1036 1037function close_form(){ 1038 if (window.frameElement) { 1039 parent.jQuery.fancybox.close(); 1040 } 1041 else { 1042 window.close(); 1043 } 1044} 1045//** for callback success form alive site 1046var submit_alive_timeout = null; 1047function alivespace_submit_success(data) { 1048 $('.loading').hide(); 1049 $("#btn_submit").removeClass("disable"); 1050 $("#btn_submit").removeAttr("disabled"); 1051 clearTimeout(submit_alive_timeout); 1052 if (data.result == "success") { 1053 $("#row_form").hide(); 1054 $("#subhead_main").hide(); 1055 $("#subhead_thank").show(); 1056 $(".loading").hide(); 1057 1058 saveLineTrackingSuccess(); 1059 pushDataLayer({'event':'EV-shoppingtools_testdrive_submit'}); 1060 setTimeout(function(){ 1061 var uri = window.location.href.split('?')[1]; 1062 1063 if(isLiff){ 1064 action_url = BASE_URL+(WEB_LANG == 'en' ? '/en' : '')+'/request_testdrive/result_complete/webview_mode/'; 1065 }else{ 1066 action_url = BASE_URL+(WEB_LANG == 'en' ? '/en' : '')+'/request_testdrive/result_complete'+(uri ? "?"+uri : ""); 1067 } 1068 $("#form_result_complete").attr('action',action_url); 1069 $("#tid").val(tracking_store_data.tid); 1070 $("#alive_reserve_code").val(data.data.reserve_code); 1071 $("#alive_series_name").val($('#series_name').val()); 1072 $("#alive_reserve_date").val(data.data.reserve_date); 1073 $("#alive_reserve_time").val(data.data.reserve_time); 1074 1075 ga4data.event = 'EV-shoppingtools_testdrive_complete'; 1076 ga4data.total_time_spent = (new Date()).getTime() - PAGE_timeStart; 1077 delete ga4data.step; 1078 delete ga4data.step_time_spent; 1079 delete ga4data.gtm; 1080 var ga4str = JSON.stringify(ga4data); 1081 var postData = encodeURIComponent(ga4str); 1082 var gch = CryptoJS_SHA256(ga4str); 1083 $("#ga4data").val(postData); 1084 $("#gch").val(gch); 1085 1086 $("#form_result_complete").trigger('submit'); 1087 1088 },100); 1089 1090 } else{ 1091 if(data.message){ 1092 if(data.statusCode == '40006'){ 1093 alert_error(data.message); 1094 $("#alivespace-grade").change(); 1095 }else{ 1096 var error_message = data.message.split('/<br />'); 1097 var display_message = error_message[0]; 1098 if(error_message.length > 1){ 1099 if( WEB_LANG != 'th' ){ 1100 display_message = error_message[1]; 1101 } 1102 } 1103 1104 alert_error($Lang.SHOPPING_TOOLS_SYSTEMERROR+ " , "+display_message ); 1105 } 1106 }else{ 1107 alert_error($Lang.SHOPPING_TOOLS_SYSTEMERROR); 1108 } 1109 } 1110 $(".loading").hide(); 1111} 1112function my_submit() { 1113 1114 var payload = $('#main_form').serialize(); 1115 if(typeof tracking_store_data != "undefined"){ 1116 payload += ("&uid="+tracking_store_data.uid+"&tid="+tracking_store_data.tid); 1117 } 1118 1119 if(typeof line_liff_data != "undefined"){ 1120 payload += ("&line_id="+line_liff_data.line_id); 1121 } 1122 if(isStockAvailable){ 1123 1124 var days = $('.calendar-picker').val().split("/"); 1125 day_selected = days[2]+"-" +days[1]+"-" +days[0]; 1126 payload += ("&reserve_date="+day_selected); 1127 payload += ("&reserve_time="+$("#timeslot").val()); 1128 } 1129 1130 payload += ("&grade_code="+$("#alivespace-grade").val()); 1131 1132 1133 1134 1135 $.post( 1136 SITE_URL+"/index.php?app=testdrive_v2&fnc=save"+(WEB_LANG == 'en' ? '&lang=en' : ''), 1137 payload, 1138 function(data) { 1139 if (data.result == "success") { 1140 $("#row_form").hide(); 1141 $("#subhead_main").hide(); 1142 $("#subhead_thank").show(); 1143 $(".loading").hide(); 1144 1145 saveLineTrackingSuccess(); 1146 1147 pushDataLayer({ 'event':'EV-shoppingtools_testdrive_submit' }); 1148 setTimeout(function(){ 1149 var uri = window.location.href.split('?')[1]; 1150 1151 if(isLiff){ 1152 action_url = BASE_URL+(WEB_LANG == 'en' ? '/en' : '')+'/request_testdrive/result_complete/webview_mode/'; 1153 }else{ 1154 action_url = BASE_URL+(WEB_LANG == 'en' ? '/en' : '')+'/request_testdrive/result_complete'+(uri ? "?"+uri : ""); 1155 } 1156 $("#form_result_complete").attr('action',action_url); 1157 $("#tid").val(tracking_store_data.tid); 1158 1159 ga4data.event = 'EV-shoppingtools_testdrive_complete'; 1160 ga4data.total_time_spent = (new Date()).getTime() - PAGE_timeStart; 1161 delete ga4data.step; 1162 delete ga4data.step_time_spent; 1163 delete ga4data.gtm; 1164 var ga4str = JSON.stringify(ga4data); 1165 var postData = encodeURIComponent(ga4str); 1166 var gch = CryptoJS_SHA256(ga4str); 1167 $("#ga4data").val(postData); 1168 $("#gch").val(gch); 1169 $("#form_result_complete").submit(); 1170 },300); 1171 1172 } 1173 else{ 1174 if(data.message){ 1175 if(data.statusCode == '40006'){ 1176 alert_error(data.message); 1177 $("#alivespace-grade").change(); 1178 }else{ 1179 alert_error($Lang.SHOPPING_TOOLS_SYSTEMERROR+ " , "+data.message+" ("+data.statusCode+")"); 1180 } 1181 }else{ 1182 alert_error($Lang.SHOPPING_TOOLS_SYSTEMERROR); 1183 } 1184 } 1185 $(".loading").hide(); 1186 }, 'json' 1187 ); 1188} 1189 1190window.updateDealer = (trigerObj) => { 1191 var items = []; 1192 var post_code = $('#post_code'); 1193 1194 if($("#post_code").val().length == 0 && $("#province").val().length == 0){ 1195 return false; 1196 } 1197 1198 $(".loading").show(); 1199 1200 $("#branch").html('<option hidden value="">'+$Lang.SHOPPING_TOOLS_BRANCH+'</option>'); 1201 1202 if($(trigerObj).attr("id") == "post_code"){
1203 if($('#post_code').val().length == 5){ 1204 $("#province").val(""); 1205 if( latest_postal_code != $('#post_code').val() ){ 1206 pushDataLayer({ 1207 "event": "EV-search_postalcode", 1208 "postal_code": post_code.val(), 1209 }) 1210 } 1211 1212 1213 1214 $.each(items_dealer, function(key,val) { 1215 if(post_code.val() == val.post_code){ 1216 items.push(val); 1217 } 1218 }); 1219 1220 if(items.length > 0){ 1221 $("#province").val(items[0].province_name); 1222 gmap_iframe.province_change_marker(items[0].province_name, '', post_code.val()); 1223 1224 pushDataLayer({ 1225 "event": "EV-select_province", 1226 "province": $('#province').val(), 1227 }) 1228 1229 set_dealer_options(items[0].province_name); 1230 1231 if(items.length == 1){ 1232 $('#dealer').val(items[0].dealer_code.substr(0, 5)).trigger('change'); 1233 } 1234 } 1235 1236 $(".loading").hide(); 1237 if( latest_postal_code != $('#post_code').val() ){ 1238 latest_postal_code = $('#post_code').val(); 1239 } 1240 1241 } 1242 else{ 1243 $(".loading").hide(); 1244 $("#province").val(""); 1245 $("#dealer").html('<option data-hidden="hidden" value="">'+$Lang.SHOPPING_TOOLS_DEALER+'</option>'); 1246 return 0; 1247 } 1248 } 1249 else if($(trigerObj).attr("id") == "province"){ 1250 1251 if($('#province').val().length > 0){ 1252 $("#post_code").val(""); 1253 delete ga4data.postal_code; 1254 gmap_iframe.province_change_marker($('#province').val(), 'province', post_code.val()); 1255 pushDataLayer({ 1256 "event": "EV-select_province", 1257 "province": $('#province').val(), 1258 }); 1259 set_dealer_options($('#province').val()); 1260 } 1261 } 1262 1263} 1264 1265 1266$.fn.blockInput = function (options){ 1267 // find inserted or removed characters 1268 function findDelta(value, prevValue){ 1269 var delta = ''; 1270 1271 for (var i = 0; i < value.length; i++){ 1272 var str = value.substr(0, i) + 1273 value.substr(i + value.length - prevValue.length); 1274 1275 if (str === prevValue) delta = 1276 value.substr(i, value.length - prevValue.length); 1277 } 1278 1279 return delta; 1280 } 1281 1282 function isValidChar(c){ 1283 return new RegExp(options.regex).test(c); 1284 } 1285 1286 function isValidString(str){ 1287 for (var i = 0; i < str.length; i++) 1288 if (!isValidChar(str.substr(i, 1))) return false; 1289 1290 return true; 1291 } 1292 1293 this.filter('input,textarea').on('input', function (){ 1294 var val = this.value, 1295 lastVal = $(this).data('lastVal'); 1296 1297 // get inserted chars 1298 var inserted = findDelta(val, lastVal); 1299 // get removed chars 1300 var removed = findDelta(lastVal, val); 1301 // determine if user pasted content 1302 var pasted = inserted.length > 1 || (!inserted && !removed); 1303 1304 if (pasted){ 1305 if (!isValidString(val)) this.value = lastVal; 1306 } 1307 else if (!removed){ 1308 if (!isValidChar(inserted)) this.value = lastVal; 1309 } 1310 1311 // store current value as last value 1312 $(this).data('lastVal', this.value); 1313 }).on('focus', function (){ 1314 $(this).data('lastVal', this.value); 1315 }); 1316 1317 return this; 1318}; 1319 1320const reset_car_selected = () => { 1321 1322 $('#series_code').val("") 1323 $('#series_name').val("") 1324 $('#model_code').val("") 1325 1326}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.