1(function($) { 2 'use strict'; 3 4 /** 5 * All of the code for your public-facing JavaScript source 6 * should reside in this file. 7 * 8 * Note: It has been assumed you will write jQuery code here, so the 9 * $ function reference has been prepared for usage within the scope 10 * of this function. 11 * 12 * This enables you to define handlers, for when the DOM is ready: 13 * 14 * $(function() { 15 * 16 * }); 17 * 18 * When the window is loaded: 19 * 20 * $( window ).load(function() { 21 * 22 * }); 23 * 24 * ...and/or other possibilities. 25 * 26 * Ideally, it is not considered best practise to attach more than a 27 * single DOM-ready or window-load handler for a particular page. 28 * Although scripts in the WordPress core, Plugins and Themes may be 29 * practising this, we should strive to set a better example in our own work. 30 */ 31 32 $(document).ready(function() { 33 const showPreview = $('#show-preview'); 34 const cancelPreview = $('#cancel-preview'); 35 const submitForm = $('#submit-form'); 36 const popup = $('#preview-lightbox'); 37 const warrantyForm = $('#warrantyForm'); 38 let warrantyDetails = ""; 39 let customerVariables = {}; 40 let errorCount = 0; 41 const warranty_fraction = 1; 42 const buy_in_fraction = 1; 43 const repair_fraction = 1; 44 45 // Original Prices 46 const warrantyData = { 47 "Entegra EX5000 (MFD)": { "warranty_price": "400", "buy_in": "800", "repair_needed": "2400", "flat_rate": "9512" }, 48 "Entegra EXP5000 (PFD)": { "warranty_price": "500", "buy_in": "1000", "repair_needed": "3000", "flat_rate": "10273" }, 49 "DFC90 (Autopilot)": { "warranty_price": "100", "buy_in": "200", "repair_needed": "600", "flat_rate": "4900" }, 50 "Entegra Release 9 (R9 - Including DFC100)": { "warranty_price": "1250", "buy_in": "2500", "repair_needed": "1250", "flat_rate": "6900" }, 51 "TAS-Series": { "warranty_price": "600", "buy_in": "1200", "repair_needed": "600", "flat_rate": "3500" }, 52 "SkyTrax 6XX Series (TAS-A)": { "warranty_price": "600", "buy_in": "1200", "repair_needed": "600", "flat_rate": "2700" }, 53 "SkyTrax1XXB Series (UAT in)": { "warranty_price": "50", "buy_in": "100", "repair_needed": "50", "flat_rate": "750" }, 54 "AXP Series (Transponder)": { "warranty_price": "50", "buy_in": "100", "repair_needed": "50", "flat_rate": "750" }, 55 "AMX 240 (Audio Panel)": { "warranty_price": "50", "buy_in": "100", "repair_needed": "50", "flat_rate": "400" }, 56 "TWX670 (Lightning Detection System)": { "warranty_price": "300", "buy_in": "600", "repair_needed": "300", "flat_rate": "1800" }, 57 "IFD Series (GPS\/NAV\/COM)": { "warranty_price": "200", "buy_in": "400", "repair_needed": "1400", "flat_rate": "2200" } 58 }; 59 60 function get_totals() { 61 let one_year_total = 0.00; 62 let one_year_prorated_total = 0.00; 63 let three_year_total = 0.00; 64 let three_year_prorated_total = 0.00; 65 let complete_1yr_total; 66 let complete_3yr_total; 67 let warranty_total_one_year_input = $('.warranty-total-input-1yr'); 68 let warranty_total_one_year_prorate_input = $('.warranty-total-input-1yr-prorate'); 69 let warranty_total_three_year_input = $('.warranty-total-input-3yr'); 70 let warranty_total_three_year_prorate_input = $('.warranty-total-input-3yr-prorate'); 71 let warranty_total_one_year_complete_input = $('.warranty-total-1yr-complete-input'); 72 let warranty_total_three_year_complete_input = $('.warranty-total-3yr-complete-input'); 73 74 let warranty_total_1yr_pdata = $('.warranty-total-1yr'); 75 let warranty_total_1yr_prorate_pdata = $('.warranty-total-1yr-prorate'); 76 let warranty_total_3yr_pdata = $('.warranty-total-3yr'); 77 let warranty_total_3yr_prorate_pdata = $('.warranty-total-3yr-prorate'); 78 let warranty_total_1yr_complete_pdata = $('.warranty-total-1yr-complete'); 79 let warranty_total_3yr_complete_pdata = $('.warranty-total-3yr-complete'); 80 81 warranty_total_one_year_input.val(0); 82 warranty_total_one_year_prorate_input.val(0); 83 warranty_total_three_year_input.val(0); 84 warranty_total_three_year_prorate_input.val(0); 85 warranty_total_one_year_complete_input.val(0); 86 warranty_total_three_year_complete_input.val(0); 87 88 $('.warranty-details').each(function(index) { 89 let warranty_coverage = $('.warranty-coverage', this); 90 if (!isNaN(parseFloat($('.warranty-1year-input', this).val())) && warranty_coverage.val() !== 'renewal') { 91 one_year_total = (one_year_total) + parseFloat($('.warranty-1year-input', this).val()); 92 } 93 if (!isNaN(parseFloat($('.warranty-1yr-prorate-input', this).val())) && warranty_coverage.val() === 'renewal') { 94 one_year_prorated_total = (one_year_prorated_total) + parseFloat($('.warranty-1yr-prorate-input', this).val()); 95 } 96 if (!isNaN(parseFloat($('.warranty-3year-input', this).val())) && warranty_coverage.val() !== 'renewal') { 97 three_year_total = (three_year_total) + parseFloat($('.warranty-3year-input', this).val()); 98 } 99 if (!isNaN(parseFloat($('.warranty-3yr-prorate-input', this).val())) && warranty_coverage.val() === 'renewal') { 100 three_year_prorated_total = (three_year_prorated_total) + parseFloat($('.warranty-3yr-prorate-input', this).val()); 101 } 102 }); 103 104 complete_1yr_total = (one_year_total) + (one_year_prorated_total); 105 complete_3yr_total = (three_year_total) + (three_year_prorated_total); 106 107 warranty_total_one_year_input.val(one_year_total); 108 warranty_total_one_year_prorate_input.val(one_year_prorated_total); 109 warranty_total_three_year_input.val(three_year_total); 110 warranty_total_three_year_prorate_input.val(three_year_prorated_total); 111 warranty_total_one_year_complete_input.val(complete_1yr_total);
112 warranty_total_three_year_complete_input.val(complete_3yr_total); 113 warranty_total_1yr_pdata.html('$' + formatMoney(one_year_total)); 114 warranty_total_1yr_prorate_pdata.html('$' + formatMoney(one_year_prorated_total)); 115 warranty_total_3yr_pdata.html('$' + formatMoney(three_year_total)); 116 warranty_total_3yr_prorate_pdata.html('$' + formatMoney(three_year_prorated_total)); 117 warranty_total_1yr_complete_pdata.html('$' + formatMoney(complete_1yr_total)); 118 warranty_total_3yr_complete_pdata.html('$' + formatMoney(complete_3yr_total)); 119 } 120 121 function update_dynamic_fields(object) { 122 let parent = $(object).closest('.warranty-details'); 123 let warrantyValue = $('.warranties', parent).val(); 124 let warrantyCoverage = ['new', 'new_repair', 'renewal'].includes($('.warranty-coverage', parent).val()) ? $('.warranty-coverage', parent).val() : 'new'; 125 let warrantyQuantity = Number($('.warranty-quantity', parent).val()) !== 0 ? $('.warranty-quantity', parent).val() : 1; 126 127 let startDate = new Date($('.warranty-signup-input', parent).val()); 128 let expirationDate = new Date($('.warranty-expiration', parent).val()); 129 let dateDiff = monthDiff(startDate, expirationDate); 130 131 if (warrantyValue !== null 132 && warrantyValue !== '' 133 && warrantyCoverage !== null 134 && warrantyCoverage !== '' 135 && warrantyQuantity !== null 136 && warrantyQuantity !== '') { 137 138 let warrantyOneYear = 0.00; 139 let warrantyThreeYear = 0.00; 140 141 if (warrantyCoverage === 'new') { 142 warrantyOneYear = (((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction) + (parseFloat(warrantyData[`${warrantyValue}`].buy_in) * buy_in_fraction)) * warrantyQuantity); 143 warrantyThreeYear = (((((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction) * 3) + (parseFloat(warrantyData[`${warrantyValue}`].buy_in) * buy_in_fraction)) * 0.95) * warrantyQuantity); 144 } 145 if (warrantyCoverage === 'new_repair') { 146 warrantyOneYear = (((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction) + (parseFloat(warrantyData[`${warrantyValue}`].buy_in) * buy_in_fraction) + (parseFloat(warrantyData[`${warrantyValue}`].repair_needed) * repair_fraction)) * warrantyQuantity); 147 warrantyThreeYear = (((((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction) * 3) + (parseFloat(warrantyData[`${warrantyValue}`].buy_in) * buy_in_fraction) + (parseFloat(warrantyData[`${warrantyValue}`].repair_needed) * repair_fraction)) * 0.95) * warrantyQuantity); 148 } 149 if (warrantyCoverage === 'renewal') { 150 warrantyOneYear = (((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction)) * warrantyQuantity); 151 warrantyThreeYear = (((parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction) * 3 * 0.95) * warrantyQuantity); 152 } 153 154 let warrantyOneYearFormatted = formatMoney(warrantyOneYear); 155 let warrantyOneYearProrate = dateDiff < 12 ? ((12 - dateDiff) / 12) * warrantyOneYear : 0.00; 156 let warrantyOneYearProrateFormatted = formatMoney(warrantyOneYearProrate); 157 $('.warranty-1year', parent).html('$' + warrantyOneYearFormatted); 158 $('.warranty-1year-input', parent).val(warrantyOneYear); 159 $('.warranty-1yr-prorate', parent).html('$' + warrantyOneYearProrateFormatted); 160 $('.warranty-1yr-prorate-input', parent).val(warrantyOneYearProrate); 161 162 let warrantyThreeYearFormatted = formatMoney(warrantyThreeYear); 163 let warrantyThreeYearProrate = dateDiff < 36 ? ((36 - dateDiff) / 36) * warrantyThreeYear : 0.00; 164 let warrantyThreeYearProrateFormatted = formatMoney(warrantyThreeYearProrate); 165 $('.warranty-3year', parent).html('$' + warrantyThreeYearFormatted); 166 $('.warranty-3year-input', parent).val(warrantyThreeYear); 167 $('.warranty-3yr-prorate', parent).html('$' + warrantyThreeYearProrateFormatted); 168 $('.warranty-3yr-prorate-input', parent).val(warrantyThreeYearProrate); 169 170 get_totals(); 171 } 172 } 173 174 function validate(cb) { 175 errorCount = 0; 176 let requiredFields = $('#warrantyForm input[required], #warrantyForm select[required]'); 177 $.each(requiredFields, function(index, item) { 178 if ($(this).val().length === 0 && $(this).is(':visible')) { 179 $(this).css('border-color', 'red'); 180 errorCount++; 181 } else { 182 $(this).css('border-color', '#BDBDBD'); 183 } 184 }); 185 cb(); 186 } 187 188 function build_query_object(variables, index = "", warrantyDetails = {}) { 189 for (let key in variables) { 190 if (index !== "") { 191 warrantyDetails[key + '_' + index] = variables[key]; 192 } else { 193 warrantyDetails[key] = variables[key]; 194 } 195 } 196 return warrantyDetails; 197 } 198 199 function generate_iframe() { 200 $.ajax({ 201 // url: siteData.site_url + "/wp-admin/admin-ajax.php", 202 url: siteData.warranty_ajax, 203 data: { 204 "action": "generate_warranty_iframe", 205 "vars": warrantyForm.serialize() 206 }, 207 method: "post" 208 }).success(function(response) { 209 // document.querySelector('.loading-overlay').classList.remove('loading-active'); 210 211 let file = response.fileName.replace(/['"]+/g, ''); 212 let conId = response.conId; 213 let iframe = document.createElement('iframe'); 214 let pdf_url = siteData.temp_files + file; 215 iframe.src = pdf_url; 216 warrantyForm.append('<input name="pdf_url" type="hidden" value="' + pdf_url + '" />'); 217 warrantyForm.append('<input name="ID" type="hidden" value="' + conId + '" />'); 218 $('.lightbox-wrapper').prepend(iframe); 219 $('body').addClass('noScroll'); 220 221 // Hide loading overlay 222 document.querySelector('.loading-overlay').classList.remove('loading-active'); 223 224 popup.show(); 225 }); 226 } 227 228 function process_warranty_details() { 229 var warrantyVariables = {}; 230 let warrantyList = $('.warranty-details'); 231 warrantyList.each(function(index, item) { 232 warrantyVariables.xWarrantyName = $('[name="warranties"] option:selected', this).val(); 233 warrantyVariables.xWarrantyPrice = $('[name="warranty_price"]', this).val(); 234 warrantyVariables.xWarrantyBuyIn = $('[name="warranty_buy_in"]', this).val(); 235 warrantyVariables.xWarrantyRepair = $('[name="warranty_repair"]', this).val(); 236 warrantyVariables.xWarrantyQuantity = $('[name="warranty_quantity"] option:selected', this).val(); 237 warrantyVariables.xWarrantyCoverage = $('[name="warranty_coverage"] option:selected', this).val(); 238 warrantyVariables.xWarranty1Year = $('[name="warranty_1year"]', this).val(); 239 warrantyVariables.xWarranty3Year = $('[name="warranty_3year"]', this).val(); 240 warrantyVariables.xWarrantyFlat = $('[name="warranty_flat_rate"]', this).val(); 241 warrantyVariables.xWarrantySignup = $('[name="warranty_signup"]', this).val(); 242 warrantyVariables.xWarrantyExpiration = $('[name="warranty_expiration"]', this).val(); 243 warrantyVariables.xWarranty1YearProrate = $('[name="warranty_1yr_prorate"]', this).val(); 244 warrantyVariables.xWarranty3YearProrate = $('[name="warranty_3yr_prorate"]', this).val(); 245 build_query_object(warrantyVariables, index, warrantyDetails); 246 }); 247 } 248 249 function formatMoney(amount, decimalCount = 2, decimal = ".", thousands = ",") { 250 try { 251 decimalCount = Math.abs(decimalCount); 252 decimalCount = isNaN(decimalCount) ? 2 : decimalCount; 253 254 const negativeSign = amount < 0 ? "-" : ""; 255 256 let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString(); 257 let j = (i.length > 3) ? i.length % 3 : 0; 258 259 return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : ""); 260 } catch (e) { 261 console.log(e) 262 } 263 } 264 265 function monthDiff(d1, d2) { 266 let months; 267 let days; 268 months = (d2.getFullYear() - d1.getFullYear()) * 12; 269 days = (d2.getDate() - d1.getDate()); 270 months -= d1.getMonth() + 1; 271 months += days >= 0 ? d2.getMonth() + 1 : d2.getMonth(); 272 return months <= 0 ? 0 : months; 273 } 274 275 function reset_fields(parent) { 276 $('select', parent).val(''); 277 $('input:not(".warranty-signup-input")', parent).val(''); 278 $('.pdata:not(".warranty-signup")', parent).html('$0.00'); 279 } 280 281 warrantyForm.on('change', '.warranties', function() { 282 let parent = $(this).closest('.warranty-details'); 283 let warrantyValue = $(this).val(); 284 285 if (warrantyValue !== '') { 286 let warrantyPrice = (parseFloat(warrantyData[`${warrantyValue}`].warranty_price) * warranty_fraction); 287 let warrantyPriceFormatted = formatMoney(warrantyPrice); 288 $('.warranty-price', parent).html('$' + warrantyPriceFormatted); 289 $('.warranty-price-input', parent).val(warrantyPrice); 290 291 let warrantyFlatRate = warrantyData[`${warrantyValue}`].flat_rate; 292 let warrantyFlatRateFormatted = formatMoney(warrantyFlatRate); 293 $('.warranty-flat-rate', parent).html('$' + warrantyFlatRateFormatted); 294 $('.warranty-flat-rate-input', parent).val(warrantyFlatRate); 295 296 let warrantyBuyIn = (parseFloat(warrantyData[`${warrantyValue}`].buy_in) * buy_in_fraction); 297 let warrantyBuyInFormatted = formatMoney(warrantyBuyIn); 298 $('.warranty-buy-in', parent).html('$' + warrantyBuyInFormatted); 299 $('.warranty-buy-in-input', parent).val(warrantyBuyIn); 300 301 let warrantyRepair = (parseFloat(warrantyData[`${warrantyValue}`].repair_needed) * repair_fraction); 302 let warrantyRepairFormatted = formatMoney(warrantyRepair); 303 $('.warranty-repair', parent).html('$' + warrantyRepairFormatted); 304 $('.warranty-repair-input', parent).val(warrantyRepair); 305 306 update_dynamic_fields(this); 307 } 308 }); 309 310 warrantyForm.on('change', '.warranty-calc', function() { 311 update_dynamic_fields(this); 312 }); 313 314 warrantyForm.on('change', '.warranty-coverage', function() { 315 let parent = $(this).closest('.warranty-details'); 316 if ($(this, parent).val() === 'renewal') { 317 $('.warranty-renewal', parent).css('display', 'flex'); 318 $('.warranty-new', parent).css('display', 'none'); 319 $('.warranty-expiration', parent).prop('required', 'true'); 320 $('.warranty-repair-fee', parent).css('display', 'none'); 321 } else if ($(this, parent).val() === 'new') { 322 $('.warranty-new', parent).css('display', 'flex'); 323 $('.warranty-renewal', parent).css('display', 'none'); 324 $('.warranty-expiration', parent).removeProp('required'); 325 $('.warranty-repair-fee', parent).css('display', 'none'); 326 } else if ($(this, parent).val() === 'new_repair') { 327 $('.warranty-new', parent).css('display', 'flex'); 328 $('.warranty-renewal', parent).css('display', 'none'); 329 $('.warranty-expiration', parent).removeProp('required'); 330 $('.warranty-repair-fee', parent).css('display', 'flex'); 331 } 332 }); 333 334 warrantyForm.on('change', '.warranty-referred', function() { 335 const referred_dealer = $('.warranty-referred-dealer'); 336 const referred_dealer_input = $('#warranty-referred-dealer'); 337 338 if ($(this).val() === 'yes') { 339 referred_dealer.css('display', 'flex'); 340 referred_dealer_input.prop('required', 'true'); 341 } else { 342 referred_dealer.css('display', 'none'); 343 referred_dealer_input.removeProp('required'); 344 } 345 }); 346 347 showPreview.on('click', function() { 348 if (showPreview.data('run') === true) { 349 showPreview.data('run', false); 350 351 // Display loading overlay 352 document.querySelector('.loading-overlay').classList.add('loading-active'); 353 354 validate(function() { 355 if (parseInt(errorCount) === 0) { 356 customerVariables.warranty_fname = $('[name="warranty_fname"]').val(); 357 customerVariables.warranty_lname = $('[name="warranty_lname"]').val(); 358 customerVariables.warranty_email = $('[name="warranty_email"]').val(); 359 customerVariables.warranty_tnum = $('[name="warranty_tnum"]').val(); 360 customerVariables.warranty_referred = $('[name="warranty_referred"]').val(); 361 customerVariables.warranty_referred_dealer = $('[name="warranty_referred_dealer"]').val(); 362 customerVariables.form_hash = $('[name="form_hash"]').val(); 363 customerVariables.warranty_total_one_year = $('[name="warranty_total_one_year"]').val(); 364 customerVariables.warranty_total_one_prorate_year = $('[name="warranty_total_one_prorate_year"]').val(); 365 customerVariables.warranty_total_one_year_complete = $('[name="warranty_total_one_year_complete"]').val(); 366 customerVariables.warranty_total_three_year = $('[name="warranty_total_three_year"]').val(); 367 customerVariables.warranty_total_three_year_prorate = $('[name="warranty_total_three_year_prorate"]').val();
368 customerVariables.warranty_total_three_year_complete = $('[name="warranty_total_three_year_complete"]').val(); 369 370 warrantyDetails = build_query_object(customerVariables); //Build the query data 371 process_warranty_details(warrantyDetails); 372 373 generate_iframe(warrantyDetails); 374 setTimeout(function() { 375 // document.querySelector('#header-area').scrollIntoView(); 376 document.querySelector('#main').scrollIntoView(); 377 $('body').addClass('noScroll'); 378 }, 2000); 379 } else { 380 $('#cancel-preview').trigger('click'); 381 382 // Hide loading overlay 383 document.querySelector('.loading-overlay').classList.remove('loading-active'); 384 385 window.confirm("There are required fields that are missing and are highlighted in red."); 386 } 387 }); 388 } 389 }); 390 391 cancelPreview.on('click', function() { 392 showPreview.data('run', true); 393 popup.hide(); 394 $('.lightbox-wrapper iframe').remove(); 395 $('body').removeClass('noScroll'); 396 }); 397 398 submitForm.on('click', function() { 399 $('#warrantyForm').submit() 400 }); 401 402 $('.add-warranty').on('click', function() { 403 let newWarranty = $(this).closest('.warranty-prod-wrap').clone(true); 404 let warrantyList = $('.warranty-list', newWarranty); 405 if (!$('.fa-minus-square', warrantyList).length) { 406 $('.warranty-list', newWarranty).append('<i class="far fa-minus-square remove-warranty"></i>'); 407 } 408 $('.warranty-prod').append(newWarranty); 409 reset_fields(newWarranty); 410 }); 411 412 $('.warranty-prod-wrap').on('click', '.remove-warranty', function() { 413 $(this).closest('.warranty-prod-wrap').slideUp(200, function() { 414 $(this).remove(); 415 get_totals(); 416 }); 417 }); 418 419 }); 420})(jQuery);
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.