PageSourceSearch

https://www.billige-tester.no/wp-content/themes/bilige-teste/js/theme.js?ver=1791078444

js billige-tester.no collected 2026-10-04 01:49:12 UTC 17,599 bytes, 579 lines download raw bytes

1$ = jQuery.noConflict();
2var b_checkout_step = 1;
3var is_levering = 0;
4
5$('img').removeAttr('width').removeAttr('height');
6
7// set background image
8var wwidth = $(window).width();
9$('.b-bgimage').each(function(){
10	var bimg = $(this).attr('data-bgi');
11	if (wwidth <= 480) {
12		bimg = $(this).attr('data-bgi-mobile');
13	}
14	$(this).attr('style', 'background-image: url('+bimg+');');
15});
16
17$( document.body ).on('updated_cart_totals', function(){
18	b_form_styler();
19	b_checkout_init();
20});
21
22$( document.body ).on('update_checkout', function(){
23	setTimeout(function(){
24		b_form_styler();
25		b_checkout_init();
26	}, 1000);
27});
28$(document).ready(function() {
29	$('.b-btn-zoom').click(function(){
30		if ($('.b-search-form').is(':visible')) {
31			$('.b-search-form').hide();
32			$('.b-header__col-search').removeClass('b-search-opened');
33			$('body').removeClass('b-search-popup');
34		} else {
35			$('.b-search-form').fadeIn();
36			$('.b-header__col-search').addClass('b-search-opened');
37			$('body').addClass('b-search-popup');
38		}
39		return false;
40	});
41	$('.b-search-close').click(function(){
42		$('.b-search-form').hide();
43		$('.b-header__col-search').removeClass('b-search-opened');
44		$('body').removeClass('b-search-popup');
45		return false;
46	});
47	$('a.sp-reviews').click(function(){
48		$('.tab-reviews').trigger('click');
49		$('html, body').animate({
50			scrollTop: $('#reviews').offset().top - 50
51		}, 500);
52		return false;
53	});
54	var wloc = window.location + '';
55	if (wloc.indexOf('#reviews') > 0) {
56		$('a.sp-reviews').trigger('click');
57	}
58	if ($('.b-prod-table__body label').length) {
59		var vid = $('.b-prod-table__body label.checked').attr('data-variation-id');
60		prod_variation_select(vid);
61	}
62	$('.prod-img-zoom').fancybox();
63
64	if ($('.b-prod-dispatch-time').length) {
65		var $el = $('.b-prod-dispatch-time');
66
67		// Read dates from data-* attributes
68		var cdate = $el.attr('data-cdate');
69		var ddate = $el.attr('data-ddate');
70		var nddate = $el.attr('data-ndate');
71
72		if (!cdate || !ddate || !nddate) {
73			console.warn('Dispatch time: missing date attributes');
74			return;
75		}
76
77		// Labels (singular/plural) from data-*
78		var dsm = $el.attr('data-day');
79		var dmm = $el.attr('data-days');
80		var hsm = $el.attr('data-hour');
81		var hmm = $el.attr('data-hours');
82		var ism = $el.attr('data-minute');
83		var imm = $el.attr('data-minutes');
84		var ssm = $el.attr('data-second');
85		var smm = $el.attr('data-seconds');
86
87		// Normalise date format for JS
88		cdate = cdate.replace(' ', 'T');
89		ddate = ddate.replace(' ', 'T');
90		nddate = nddate.replace(' ', 'T');
91
92		var count_down_date = new Date(ddate).getTime();
93
94		// Offset between server time and client time
95		var dt_offset = Date.parse(new Date(cdate).toUTCString()) - Date.parse(new Date().toUTCString());
96
97		var dt = setInterval(function () {
98			var dt_now = new Date().getTime() + dt_offset;
99			var dt_distance = count_down_date - dt_now;
100
101			if (dt_distance < 0) {
102				count_down_date = new Date(nddate).getTime();
103				dt_distance = count_down_date - dt_now;
104			}
105
106			// Guard: if something is still wrong, stop to avoid NaN spam
107			if (!isFinite(dt_distance)) {
108				console.warn('Dispatch time: dt_distance is not finite');
109				$el.hide();
110				clearInterval(dt);
111				return;
112			}
113
114			var dt_days = Math.floor(dt_distance / (1000 * 60 * 60 * 24));
115			var dt_hours = Math.floor((dt_distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
116			var dt_minutes = Math.floor((dt_distance % (1000 * 60 * 60)) / (1000 * 60));
117			var dt_seconds = Math.floor((dt_distance % (1000 * 60)) / 1000);
118
119			var dt_days_lbl = dmm;
120			var dt_hours_lbl = hmm;
121			var dt_minutes_lbl = imm;
122			var dt_seconds_lbl = smm;
123
124			if (dt_days === 1)   dt_days_lbl    = dsm;
125			if (dt_hours === 1)  dt_hours_lbl   = hsm;
126			if (dt_minutes === 1) dt_minutes_lbl = ism;
127			if (dt_seconds === 1) dt_seconds_lbl = ssm;
128
129			if (dt_days > 0) {
130				$el.find('.dt-d').show();
131			} else {
132				$el.find('.dt-d').hide();
133			}
134
135			$el.find('.dt-d').html(dt_days    + ' ' + dt_days_lbl);
136			$el.find('.dt-h').html(dt_hours   + ' ' + dt_hours_lbl);
137			$el.find('.dt-i').html(dt_minutes + ' ' + dt_minutes_lbl);
138			$el.find('.dt-s').html(dt_seconds + ' ' + dt_seconds_lbl);
139		}, 1000);
140	}
141
142	// add to cart
143	$('form.cart').submit(function(){
144		var ajax_url = $(this).attr('action');
145		var product_id = $(this).attr('data-product_id');
146		var quantity = $('form.cart input.qty').val();
147		var variation_id = 0;
148		if ($(this).hasClass('variations_form')) {
149			variation_id = $('form.cart input.variation_id').val();
150		}
151		$('form.cart .b-add-to-cart-loading').show();
152		$.post(
153			ajax_url,
154			{
155				'bt_add_to_cart': 1,
156				'product_id': product_id,
157				'qty': quantity,
158				'variation_id': variation_id
159			},
160			function(data) {
161				$('#cart-modal .b-cm-at-text').html(data);
162				$('.cart-modal-link').trigger('click');
163				$('form.cart .b-add-to-cart-loading').hide();
164				$('.b-header-cart-btn').load(ajax_url + '?bt_header_cart=1');
165			}
166		);
167		return false;
168	});
169	// monthly offers add to cart
170	$('.b-mo-add-to-cart').click(function(){
171		var ajax_url = $('#cart-modal').attr('data-url');
172		var product_id = $(this).attr('data-product-id');
173		var product_title = $(this).attr('data-product-title');
174
175		$('#cart-modal .b-modal__tit strong').html(product_title);
176		$(this).addClass('b-mo-atc-loading');
177		$.post(
178			ajax_url,
179			{
180				'bt_add_to_cart': 1,
181				'product_id': product_id,
182				'qty': 1
183			},
184			function(data) {
185				$('#cart-modal .b-cm-at-text').html(data);
186				$('.cart-modal-link').trigger('click');
187				$('.b-mo-add-to-cart').removeClass('b-mo-atc-loading');
188				$('.b-header-cart-btn').load(ajax_url + '?bt_header_cart=1');
189			}
190		);
191
192		return false;
193	});
194	// checkout
195	if ($('form.checkout')) {
196		is_levering = parseInt($('form.checkout').attr('data-levering'));
197		$('form.checkout .b-checkout-next').click(function(){
198			var cstep = $(this).attr('data-step');
199			var valid = b_checkout_validate_step(cstep);
200			if (valid) {
201				if (b_checkout_step == 1) {
202					var ajax_url = $('form.checkout').attr('action');
203					var email = $('form.checkout #billing_email').val();
204					$('form.checkout .ch-loading').show();
205					$.post(
206						ajax_url,
207						{
208							'bt_checkout_data': 'true',
209							'email': email,
210							'unkey': Date.now()
211						},
212						function(data) {
213							var chdata = JSON.parse(data);
214							$('form.checkout .ch-loading').hide();
215
216							$('form.checkout .b-checkout-step2-newsletter').hide();
217							if (chdata.subscribed == 'no') {
218								$('form.checkout .b-checkout-step2-newsletter').show();
219							}
220							if (chdata.noemail == 1) {
221								$('form.checkout .b-checkout-step2-text input').attr('checked', 'checked');
222							} else {
223								$('form.checkout .b-checkout-step2-text input').removeAttr('checked');
224							}
225
226							b_checkout_next_step();
227						}
228					);
229				} else {
230					b_checkout_next_step();
231				}
232			}
233			return false;
234		});
235		$('form.checkout .b-checkout-accordion').click(function(){
236			var ahref = $(this).attr('href');
237			if ($('form.checkout '+ahref).is(':visible')) {
238				$('form.checkout '+ahref).slideUp();
239			} else {
240				$('form.checkout '+ahref).slideDown();
241			}
242			return false;
243		});
244		$('form.checkout .b-checkout-edit').click(function(){
245			b_checkout_step = parseInt($(this).attr('data-tostep'));
246			b_checkout_show_step();
247			return false;
248		});
249		b_checkout_init();
250		b_checkout_update_summary();
251		b_checkout_company_field();
252		$('#billing_company_address_field .jq-radio').click(function(){
253			b_checkout_company_field();
254		});
255		$('form.checkout #billing_phone').keyup(function(){
256			var fval = $(this).val();
257			$('form.checkout .b-mobile-phone').val(fval);
258		});
259		$('form.checkout .b-mobile-phone').keyup(function(){
260			var fval = $(this).val();
261			$('form.checkout #billing_phone').val(fval);
262		});
263		$('form.checkout #billing_phone').trigger('keyup');
264		$('form.checkout .b-shipping-method').click(function(){
265			var smkey = $(this).attr('data-smkey');
266			if (!$(this).hasClass('checked')) {
267				$('form.checkout .b-shipping-method').removeClass('checked');
268				$('form.checkout .b-shipping-method .b-sm-check .jq-radio').removeClass('checked');
269				$('form.checkout .b-shipping-method .b-sm-check input').removeAttr('checked');
270
271				$(this).addClass('checked');
272				$(this).find('.b-sm-check .jq-radio').addClass('checked');
273				$(this).find('.b-sm-check input').attr('checked', 'checked');
274				b_checkout_smethod(smkey);
275
276				if ($(this).find('.b-sm-additional').length) {
277					if (!$(this).find('.b-sm-additional').is(':visible')) {
278						$('form.checkout .b-shipping-method .b-sm-additional').hide();
279						$(this).find('.b-sm-additional').slideDown();
280					}
281				} else {
282					$('form.checkout .b-shipping-method .b-sm-additional').slideUp();
283				}
284			}
285		});
286		$('.ch-terms-link a').click(function(){
287			var ltype = $(this).attr('class');
288			if ($('.ch-terms-content').is(':visible')) {
289				if (ltype == 'l-terms') {
290					if ($('.ch-terms-content .c-terms').is(':visible')) {
291						$('.ch-terms-content').slideUp(300, function(){
292							$('.ch-terms-content .c-terms').hide();
293						});
294					} else {
295						$('.ch-terms-content .c-policy').hide();
296						$('.ch-terms-content .c-terms').fadeIn();
297					}
298				} else {
299					if ($('.ch-terms-content .c-policy').is(':visible')) {
300						$('.ch-terms-content').slideUp(300, function(){
301							$('.ch-terms-content .c-policy').hide();
302						});
303					} else {
304						$('.ch-terms-content .c-terms').hide();
305						$('.ch-terms-content .c-policy').fadeIn();
306					}
307				}
308			} else {
309				if (ltype == 'l-terms') {
310					$('.ch-terms-content .c-policy').hide();
311					$('.ch-terms-content .c-terms').show();
312				} else {
313					$('.ch-terms-content .c-terms').hide();
314					$('.ch-terms-content .c-policy').show();
315				}
316				$('.ch-terms-content').slideDown();
317			}
318			return false;
319		});
320		$('.b-cart-step__list li').click(function(){
321			if ($(this).hasClass('is-done')) {
322				b_checkout_step = parseInt($(this).attr('data-tostep'));
323				b_checkout_show_step();
324			}
325		});
326	}
327});
328
329function b_form_styler() {
330	$('.js-select, .js-input, input[type=number]').styler();
331}
332
333function prod_variation_select(vid) {
334	$('.b-prod-full-post__price .b-prod-price').hide();
335	$('.b-prod-full-post__price .b-prod-price-'+vid).fadeIn();
336	$('input.variation_id').val(vid);
337}
338
339function b_modal_popup_close() {
340	$.fancybox.close();
341}
342
343function b_top_checkout_button() {
344	if ($('.b-ptc-button').hasClass('b-limit-is-more')) {
345		$('.b-ptc-button').trigger('click');
346		return false;
347	}
348}
349
350function b_cart_to_checkout() {
351	$('a.cart-popup-link').trigger('click');
352}
353
354function b_cart_to_checkout_process(b) {
355	var cartchok = $('.b-cart-popup .cart-ch-ok').val().toUpperCase();
356	if (cartchok == 'OK') {
357		var checkout_url = $('.b-cart-popup').attr('data-url');
358		$(b).attr('href', checkout_url);
359		return true;
360	} else {
361		alert($('.b-cart-popup').attr('data-ok-message'));
362		$('.b-cart-popup .cart-ch-ok').trigger('focus');
363		return false;
364	}
365}
366
367function b_checkout_init() {
368	if ($('.b-ch-btn--grey').length) {
369		$('.b-woo-page__head-btn .checkout-button').fadeOut();
370	} else {
371		$('.b-woo-page__head-btn .checkout-button').fadeIn();
372	}
373}
374
375function b_checkout_scroll_step_to_top(s) {
376	$('html, body').animate({
377		scrollTop: $('.b-content-checkout-step-'+s).offset().top
378	}, 500);
379}
380
381function b_checkout_next_step() {
382	b_checkout_step++;
383	if (!is_levering && b_checkout_step == 2) {
384		b_checkout_step = 3;
385	}
386	b_checkout_update_summary();
387	b_checkout_show_step();
388}
389
390function b_checkout_show_step() {
391	$('form.checkout .b-content-checkout-step').hide();
392	$('form.checkout .b-content-checkout-step-'+b_checkout_step).fadeIn();
393
394	$('html, body').animate({
395		scrollTop: $('.b-checkout-page').offset().top
396	}, 500);
397
398	$('.b-checkout-steps li').removeClass('is-active').removeClass('is-done');
399	for (var s=1; s<=4; s++) {
400		if (s < b_checkout_step) {
401			$('.b-checkout-steps .b-checkout-step-'+s).addClass('is-done');
402		} else if (s == b_checkout_step) {
403			$('.b-checkout-steps .b-checkout-step-'+s).addClass('is-active');
404		}
405	}
406}
407
408function b_checkout_company_field() {
409	var val = $('#billing_company_address_field .jq-radio.checked').find('input.js-input').val();
410	if (val == 'yes') {
411		$('form.checkout .billing-company').slideDown();
412	} else {
413		$('form.checkout .billing-company').slideUp();
414	}
415}
416
417function b_checkout_payment_check(mid) {
418}
419
420function b_checkout_coupon_show() {
421	if ($('#coupon-part').is(':visible')) {
422		$('#coupon-part').slideUp();
423	} else {
424		$('#coupon-part').slideDown();
425	}
426}
427
428function b_checkout_apply_coupon() {
429	var bcoupon = $('#coupon-part .b-coupon').val();
430	$('form.checkout .b-coupon-box').addClass('c-loading');
431	$('form.woocommerce-form-coupon .input-text').val(bcoupon);
432	$('form.woocommerce-form-coupon').submit();
433	setTimeout(function(){
434		$('html, body').animate({
435			scrollTop: 0
436		}, 500);
437		$('form.checkout .b-coupon-box').removeClass('c-loading');
438	}, 1500);
439}
440
441function customValidateEmail(email) {
442    const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
443    return re.test(String(email).toLowerCase());
444}
445
446function b_checkout_validate_step(step) {
447	var valid = true;
448	if (step == 'information') {
449		var b_required_error = false;
450		var b_email_error = false;
451		$('form.checkout .form-row').removeClass('woocommerce-invalid');
452		$('form.checkout .b-content-checkout-step-1 .b-step-errors').hide();
453		$('form.checkout .b-content-checkout-step-1 .b-step-errors span').hide();
454
455		$('form.checkout .b-content-checkout-step-1 .form-row').each(function(){
456			if ($(this).hasClass('validate-required')) {
457				if ($(this).hasClass('billing-company-field')) {
458					var fvalue = $(this).find('.country_select').val();
459				} else {
460					var fvalue = $(this).find('.input-text').val();
461				}
462				if (fvalue == '') {
463					valid = false;
464					b_required_error = true;
465					$(this).addClass('woocommerce-invalid');
466				} else if ($(this).hasClass('validate-email') && ! customValidateEmail(fvalue)) {
467					valid = false;
468					b_email_error = true;
469					$(this).addClass('woocommerce-invalid');
470				}
471			}
472		});
473		if (!valid) {
474			if (b_required_error) {
475				$('form.checkout .b-content-checkout-step-1 .b-step-errors span.b-required-error').show();
476			}
477			if (b_email_error) {
478				$('form.checkout .b-content-checkout-step-1 .b-step-errors span.b-email-error').show();
479			}
480			b_checkout_scroll_step_to_top(1);
481			$('form.checkout .b-content-checkout-step-1 .b-step-errors').slideDown();
482		}
483	} else if (step == 'delivery') {
484		var smchecked = false;
485		$('form.checkout .b-content-checkout-step-2 .b-step-errors').slideUp(100);
486		$('form.checkout .b-shipping-methods .b-shipping-method').each(function(){
487			if ($(this).is(':visible')) {
488				if ($(this).find('input.b-smethod').attr('checked') == 'checked') {
489					smchecked = true;
490				}
491			}
492		});
493		if (!smchecked) {
494			valid = false;
495			b_checkout_scroll_step_to_top(1);
496			$('form.checkout .b-content-checkout-step-2 .b-step-errors').slideDown();
497		}
498		if (valid) {
499			$('body').trigger('update_checkout');
500		}
501	}
502	return valid;
503}
504
505function b_checkout_update_summary() {
506	var c_first_name = $('form.checkout #billing_first_name').val();
507	var c_last_name = $('form.checkout #billing_last_name').val();
508	var c_company = $('form.checkout #billing_company').val();
509	var c_company_address = $('form.checkout .billing-company-address-field input:checked').val();
510
511	var c_address_1 = $('form.checkout #billing_address_1').val();
512	var c_postcode = $('form.checkout #billing_postcode').val();
513	var c_city = $('form.checkout #billing_city').val();
514	var c_country = $('form.checkout #billing_country').val();
515	var c_country_name = $('form.checkout #billing_country option[value="'+c_country+'"]').html();
516	var c_phone = $('form.checkout #billing_phone').val();
517	var c_email = $('form.checkout #billing_email').val();
518
519	var c_name = c_first_name+' '+c_last_name;
520	var c_addr = c_address_1;
521	var c_addr2 = c_postcode + ' ' + c_city;
522
523	if (c_company_address == 'yes' && c_company != '') {
524		c_name = c_name + '<br>' + c_company;
525	}
526
527	$('.b-checkout-cinfo .ch-c-name').html(c_name);
528	$('.b-checkout-cinfo .ch-c-addr').html(c_addr);
529	$('.b-checkout-cinfo .ch-c-addr2').html(c_addr2);
530	$('.b-checkout-cinfo .ch-c-country').html(c_country_name);
531	$('.b-checkout-cinfo .ch-c-email').html(c_email);
532	$('.b-checkout-cinfo .ch-c-phone').html(c_phone);
533}
534
535function b_checkout_smethod(smkey) {
536	$('#shipping_method input.shipping_method').removeAttr('checked');
537	$('#shipping_method input[value="'+smkey+'"]').attr('checked', 'checked').trigger('click');
538	$(document.body).trigger('update_checkout');
539}
540
541function b_checkout_submit() {
542	$('form.checkout').submit();
543}
544
545function b_ao_filter(o) {
546	var clink = $(o).val();
547	window.location.href = clink;
548}
549
550$(document).ready(function() {
551	var headerHeight = $('.b-header').height();
552	var scrollPosition = 0,
553		lastScrollPosition = 0,
554		headerFixed;
555	$(window).scroll(function(){
556		//console.log($(window).scrollTop());
557		scrollPosition = $(this).scrollTop();
558		if( scrollPosition > headerHeight + 50 ){
559			headerFixed = true;
560			$('body').addClass('header-fixed');
561		}else{
562			$('body').removeClass('header-fixed');
563			headerFixed = false;
564		}
565		if( headerFixed && scrollPosition > lastScrollPosition ){
566			$('.b-header').removeClass('open');
567		}else{
568			if(scrollPosition - 100 > headerHeight){
569				$('.b-header').addClass('open');
570			}else{
571				$('.b-header').removeClass('open');
572				/*setTimeout(function(){
573					
574				}, 500);*/
575			}
576		}
577		lastScrollPosition = scrollPosition;
578	});
579});

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.