PageSourceSearch

https://www.avidyne.com/wp-content/plugins/warranty-calculator/public/js/warranty-calculator-public.js

js avidyne.com collected 2026-10-02 06:13:06 UTC 19,730 bytes, 420 lines download raw bytes

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.