PageSourceSearch

https://www.leinwandfoto.de/wp-content/themes/LWF_new/js/functions_new.js

js leinwandfoto.de collected 2026-09-26 15:55:50 UTC 28,570 bytes, 922 lines download raw bytes

1var has_resized = false;
2var cm_to_inch;
3
4if(typeof Cookies.get('pids') == 'undefined') {
5	Cookies.set('pids', postID, { expires: 1, domain: translate['cookie_domain'], path: '/' });
6} else {
7	var temp_pids = Cookies.get('pids').split(',');
8	var last_pid = temp_pids.slice(-1)[0];
9	if (last_pid != postID) {
10		Cookies.set('pids', Cookies.get('pids')+','+postID, { expires: 7, domain: translate['cookie_domain'], path: '/' });
11	}
12}
13
14if(typeof Cookies.get('B2CLEAD') != 'undefined') {
15    jQuery('.fb-upload .upload-step-2 form, .fb-upload .upload-step-2 form + div').remove();
16}
17
18
19// lazy loading images
20/*
21var bLazy = new Blazy({
22	validateDelay: 100,
23	offset: 200,
24	loadInvisible: true,
25	success: function(element){
26		setTimeout(function(){
27			element.className = element.className.replace(/\bloading\b/,'');
28			if (jQuery('.js-new-hint').length) {
29				UpdateHintPosition();
30			}
31		}, 200);
32	}
33});
34*/
35
36
37
38jQuery(document).ready(function($){
39    
40    /*------------------------------------*\
41        # PLUGINS
42    \*------------------------------------*/
43    
44    /*
45    setTimeout(function(){
46		$('figure > .shadowed').loongshadow({
47		  lenght : 200,
48		  fadeIn : true,
49		  fadeTime : 1000,
50		  darken: 50,
51		  baseOpacity: 0.3,
52		});
53
54		// the scrollbars sometime appear and mess it up. Just call the refresh method.
55		$('figure > .shadowed').loongshadow('refresh');
56    }, 5000);
57    */
58    
59    //bLazy.revalidate();
60    
61    
62    $('select.custom-select-contact').selectBoxIt({
63        defaultText: translate['callback_select'],
64    });
65    $('select.custom-select-formats').selectBoxIt({
66        dynamicPositioning: false
67    });
68    
69    $('.js-content-shifter .wrap').on('click', function(){
70        ToggleContentShifter($(this));
71    });
72    
73    /*
74    $('.js-tabify.contact-content li:last-child').off('click')
75	$('.js-tabify.contact-content li:last-child').on('click', function(){
76    	console.log('jetzt');
77	});
78	*/
79    
80    
81    
82    
83    /*------------------------------------*\
84        # GENERAL
85    \*------------------------------------*/
86    
87    var temp_date = new Date();
88    if (xLanguage == 'de') {
89		$('.js-date-1').text(temp_date.getDate()+'. '+translate['month_'+(temp_date.getMonth()+1)]);
90    } else if (xLanguage == 'en') {
91		$('.js-date-1').text(temp_date.getDate()+' '+translate['month_'+(temp_date.getMonth()+1)]);
92    }
93    
94    /*
95    if (getParameterByName(window.location.href, 'tracking_no')) {
96        ShowTrackingInfo(getParameterByName(window.location.href, 'tracking_no'));
97    }
98    
99    if (getParameterByName(window.location.href, 'order_no')) {
100		var cid = getParameterByName(window.location.href, 'order_no');
101		var zip = getParameterByName(window.location.href, 'zip');
102		$('input[name="cid"]').val(cid);
103		$('input[name="plz"]').val(zip);
104		$('form[name="order-status"]').submit();
105    }
106    */
107    
108    if ($('.js-count-cart').length) {
109        var values = new Object();
110        values['vlog_cookie'] = xVlog;
111        $.ajax({
112            type: 'POST',
113            data: { params: values },
114            url: '/global/ajax/class.ajax-functions.php?func=CartCount',
115            success: function (data) {
116                data = jQuery.parseJSON(data);
117                if (data.result != null) {
118                  if (data.result == 0) {
119                    $('.js-count-cart').text('');
120                  } else {
121                    $('.js-count-cart').text(data.result);
122                  }
123                }
124            }
125        });
126    }
127    
128    $('.promotion-header .btn').off('click');
129    $('.promotion-header .btn').on('click', function(){
130    	SetUploadData($(this));
131        jQuery.fancybox.open({
132			src: '/apps/lwf_agf_global/themes/LWF_new/js/templates/promotion-form.php',
133			type: 'ajax',
134			touch: false,
135			afterShow: function(instance, current) {
136				$('.fb-promotion .js-upload').each(function(){
137    				InitFileUpload($(this));
138			    });
139			}
140		});
141    });
142    
143    // old stuff
144    if ($('.js-format-calculator').length) {
145        $.ajax({
146            type: 'POST',
147            data: { params: values },
148            url: '/global/ajax/class.ajax-functions.php?func=cm_to_inch',
149            success: function (data) {
150                data = jQuery.parseJSON(data);
151                cm_to_inch = data.result;
152            }
153        });
154	}
155        
156    $('.person-comparison input').on('change', function(){
157        var target = $(this).parents('li').find('img');
158        target.addClass('ani-flip');
159        setTimeout(function(){
160            target.removeClass('ani-flip');
161        }, 1000);
162    });
163    
164    $('.js-tip-box .js-next').on('click', function(){
165		var cur_index = $('.js-tip-box .wrap.active').index();
166		if (cur_index < $('.js-tip-box .wrap').length - 1) {
167			var new_index = cur_index + 1;
168		} else {
169			var new_index = 0;
170		}
171		$('.js-tip-box .wrap.active').removeClass('active');
172		$('.js-tip-box .wrap').eq(new_index).addClass('active');
173    });
174	
175
176    
177    
178    
179    /*------------------------------------*\
180        # SPECIFIC
181    \*------------------------------------*/
182    
183    $('.suspensions .btn').on('click', function(){
184        var id = $(this).attr('data-id');
185        var quantity = $(this).parents('.suspensions').find('[name="quantity"]').val();
186        AddSuspensionToCart(id, quantity);
187    });
188    
189    // old stuff
190    $('select[name="sizes_overview"]').on('change', function(){
191        var value = $(this).val();
192        $('.price-table-classic table').removeClass('active');
193        $('.price-table-classic table[data-id="'+value+'"]').addClass('active');
194    });
195    
196    $('.price-table .js-show-info').on('click', function(){
197        TogglePriceTableInfo($(this));
198    });
199    $('.price-table .nav a, .price-table .section').on('click', function(){
200        TogglePriceTable($(this));
201    });
202    $('.js-price-table-switch').on('click', function(){
203        SwitchPriceTablePrice($(this));
204    });
205    $('.js-landing-price-switch').on('click', function(){
206        SwitchLandingPrice($(this));
207    });
208    
209    $('.order-status').on('click', '.js-prev', function(e) {
210        SwitchOrderStatus('prev');
211    }).on('click', '.js-next', function(e) {
212        SwitchOrderStatus('next');
213    });
214    
215    $('.js-select-region, .js-select-size, .js-select-pg').on('change', function(){
216        ChangeDelivery($(this));
217    });
218    
219    $('.feedback-form .icon').on('click', function(){
220		$('.feedback-form .icon').removeClass('active');
221		$(this).addClass('active');
222		if ($('.icon-thumbs-down').hasClass('active')) {
223			$('.feedback-form .hidden').slideDown('fast');
224		} else {
225			$('.feedback-form .hidden').slideUp('fast');
226		}
227    });
228    
229    $('.accordion li').on('click', function(){
230		var el = $(this);
231		el.toggleClass('active').siblings().removeClass('active');
232    });
233    
234    $('.order-status-new').on('click', '.js-edit', function(){
235    	var cid = $(this).attr('data-cid');
236		jQuery.fancybox.open({
237			src: '/apps/lwf_agf_global/themes/LWF_new/js/templates/change-address.php?cid='+cid+'&language='+xLanguage,
238			type: 'ajax',
239			touch: false
240		});
241    });
242    
243    
244    
245    /*------------------------------------*\
246        # RESPONSIVE
247    \*------------------------------------*/
248
249});
250
251
252
253// ready when all images are loaded
254jQuery('#page').imagesLoaded( function() {
255    if (jQuery('.js-hint-message').length) {
256        jQuery('.js-hint-message').each(function(){
257            InsertNewHint(jQuery(this));
258        });
259    }
260});
261
262/*
263// ready when everything(!) is loaded
264jQuery(window).on('load', function() {
265    
266});
267*/
268
269
270
271
272/*------------------------------------*\
273    # GENERAL
274\*------------------------------------*/
275
276jQuery(window).resize(function() {
277	has_resized = true;
278});
279setInterval(function() {
280	if (has_resized) {
281		//UpdateHintPosition();
282		has_resized = false;
283	}
284}, 250);
285
286
287function Redirect(url, params){
288    if (typeof params != 'undefined') {
289        url = url+'?'+params;
290    }
291    ToggleAreaLoading('fixed', 1);
292    window.location.href = url;
293}
294
295
296function OpenFancyBox(element, mode) {
297    if (mode == 'upload') {
298        var target = '.fb-upload';
299        SetUploadData(element);
300    } else if (mode == 'tester-negative' || mode == 'tester-positive') {
301		var target = '.fb-'+mode;
302    } else {
303        var target = '.fb-'+element.attr('data-fb');
304    }
305    
306    if (element == 'promotion') {
307		SetUploadData(element);
308	}
309    jQuery.fancybox.open({
310        src: target,
311        type: 'inline',
312        opts: {
313            touch: false,
314            beforeShow: function(){
315                if (mode == 'upload') {
316                    ShowPreselectBar();
317                    if (element.attr('data-upload-type') == 2) {
318                        SetUploadState(2);
319                    }
320                    if (element.attr('data-upload-type') == 5 || element.attr('data-upload-type') == 6) {
321                        jQuery('.upload-step-2 form, .upload-step-2 .buttons').remove();
322                    }
323                }
324            },
325            beforeClose: function() {
326                if (mode == 'upload') {
327                	if (element.attr('data-upload-type') != 6) {
328                		if ((jQuery('.upload-step-2').is(':visible') || jQuery('.upload-step-3').is(':visible')) && jQuery('.upload-step-2').hasClass('finished')) {
329	                        if ('mehrteiler' in upload_data) {
330	                            RedirectAtUpload('mehrteiler', upload_data['mehrteiler']);
331	                        } else {
332	                            RedirectAtUpload();
333	                        }
334	                    }
335					}
336                }
337            },
338            afterClose: function(instance, slide) {
339                if (mode == 'upload') {
340                	if (element.attr('data-upload-type') != 6) {
341                		if (typeof upload_data['object'] != 'undefined') {
342	                        upload_data['object'].abort();
343	                    }
344	                    upload_data['error'] = 0;
345	                    delete upload_data['size'];
346	                    HidePreselectBar();
347	                    SetUploadState(1);
348					}
349                }
350            }
351        },
352    });
353}
354
355
356function ToggleMoreInfo(element, target) {
357    element = jQuery(element);        
358    jQuery('.js-more[data-id="'+target+'"]').slideToggle('fast');
359    if (element.text() == element.attr('data-text-show')) {
360        element.text(element.attr('data-text-hide'));
361    } else {
362        element.text(element.attr('data-text-show'));
363    }
364}
365
366
367
368/*------------------------------------*\
369    # CALLBACKS
370\*------------------------------------*/
371
372function callback_AddNewLeadB2C(form, data) {
373    var code = data['voucher']['voucherCode'];
374    if (jQuery('.fb-promotion').is(':visible')) {
375        jQuery('.fb-promotion .code').text(code);
376        SetPromotionState(2);
377    } else {
378        jQuery('.upload-step-3 .code').text(code);
379        SetUploadState(3);
380    }
381}
382
383function callback_OrderStatus(form, data) {
384	jQuery('.order-status .js-request').hide();
385    var max = data['items'].length;
386    
387    jQuery.each(data['items'], function(index, value){
388        index = index + 1;
389        var parent = jQuery('.order-status .js-response[data-item="'+index+'"]');
390        if (!parent.length) {
391            parent = jQuery('.order-status .js-response[data-item="1"]').clone();
392            parent.attr('data-item', index).appendTo('.order-status');
393        }
394        parent.find('.js-product').text(value['product']+' ('+value['format']+')');
395        parent.find('.tracking-code').text(value['tracking_no']);
396        parent.find('.js-switch').text(index+' / '+max);
397        parent.find('.js-status').each(function(name, icon){
398            var state = parseInt(jQuery(icon).attr('data-state'));
399            if (parseInt(value['status']) >= state) {
400                jQuery(icon).addClass('active');
401            }
402        });
403        
404        if (typeof value['tracking_no'] == 'undefined') {
405            parent.find('.js-delivery').hide();
406        } else {
407            parent.find('.js-delivery').show();
408        }
409        
410    });
411    
412    jQuery('.order-status .js-response[data-item="1"]').show();
413}
414
415function callback_OrderStatusNew(form, data) {
416	data['language'] = xLanguage;
417	jQuery.ajax({
418		type: 'POST',
419		data: { params: data },
420		url: '/global/ajax/class.ajax-functions.php?func=renderOrderStatus',
421		async: false,
422		success: function (data) {
423			data = jQuery.parseJSON(data);
424			jQuery('.order-status-new .js-request').hide();
425			jQuery('.order-status-new .js-response').html(data.result).show();
426			
427			jQuery('.js-response .js-next').click(function(){
428				jQuery(this).parents('ul[data-item]').removeClass('active').next('ul').addClass('active');
429			});
430			jQuery('.js-response .js-prev').click(function(){
431				jQuery(this).parents('ul[data-item]').removeClass('active').prev('ul').addClass('active');
432			});
433		}
434	});
435}
436
437function callback_feedback(form, data) {
438	if (xLanguage == 'de') {
439		jQuery('.new-feedback [data-tab-content="3"] div').css('visibility', 'hidden').after('<div class="js-response"><p><strong class="green">'+translate['feedback_form_success_text_1']+'</strong></p><p>'+translate['feedback_form_success_text_2']+'</p></div>')
440	} else {
441		SwitchSubmitBtn(form, data['result']);
442	}
443}
444
445
446
447
448/*------------------------------------*\
449    # PRICE TABLES
450\*------------------------------------*/
451
452function TogglePriceTable(element) {
453    if (!element.hasClass('active')) {
454        if (element.is('.section')) {
455            var target = element.attr('id');
456            target = target.substring(4);
457            element.addClass('active').siblings('.section').removeClass('active');
458        } else {
459            var target = element.attr('data-target');
460            target = target.substring(4);
461        }
462        jQuery('.price-table .nav a').removeClass('active');
463        jQuery('.price-table .nav a[data-target="cat-'+target+'"]').addClass('active');
464        jQuery('.price-table table').removeClass('active');
465        jQuery('.price-table table[data-id="'+target+'"]').addClass('active');
466    }
467}
468
469function TogglePriceTableInfo(element) {
470    if (element.hasClass('active')) {
471        element.removeClass('active icon-down-dir').addClass('icon-right-dir');
472        element.parents('tr').next('tr.hidden').removeClass('active');
473    } else {
474        element.removeClass('icon-right-dir').addClass('active icon-down-dir');
475        element.parents('tr').next('tr.hidden').addClass('active');
476    }
477}
478
479function SwitchPriceTablePrice(element) {
480    var target = element.attr('data-target');
481    
482    jQuery('.js-price-table-switch').addClass('link').removeClass('active');
483    element.addClass('active').removeClass('link');
484    jQuery('.price-table .js-switch-price').removeClass('active');
485    jQuery('.price-table .js-switch-price[data-id="'+target+'"]').addClass('active');
486    
487    if (target == 'max') {
488        jQuery('.price-table .js-switch-price[data-id="'+target+'"]').parents('td').siblings('td').find('span.line-through').addClass('hide');
489    } else {
490        jQuery('.price-table .js-switch-price[data-id="'+target+'"]').parents('td').siblings('td').find('span.line-through').removeClass('hide');
491    }
492}
493
494function SwitchLandingPrice(element) {
495    var target = element.attr('data-target');
496    
497    var button = jQuery('.js-landing-simulator-1 button');
498    jQuery('.js-landing-price-switch').addClass('link').removeClass('active');
499    element.addClass('active').removeClass('link');
500    
501    if (target == 'max') {
502        var new_price = jQuery('.js-sim-price p strong').attr('data-price-max');
503        jQuery('.js-sim-price small').css('opacity', 0);
504        jQuery('.js-sim-price p strong').removeClass('red');
505    } else {
506        var new_price = jQuery('.js-sim-price p strong').attr('data-price-min');
507        if (jQuery('.js-sim-price small strong').text().substring(0, 1) != '0') {
508            jQuery('.js-sim-price small').css('opacity', 1);
509            jQuery('.js-sim-price p strong').addClass('red');
510        }
511    }
512    
513    if (typeof button.attr('data-price') != 'undefined') {
514        jQuery('.js-landing-simulator-1 button').attr({
515            'data-price': new_price
516        });
517    }
518    
519    jQuery('.js-sim-price p strong').text(new_price);
520}
521
522
523
524
525/*------------------------------------*\
526    # RESPONSIVE
527\*------------------------------------*/
528
529function ToggleFixedHeader(mode) {
530    var wrapper = jQuery('.header-wrap');
531    
532    if (mode == 'show') {
533        var promo_h = jQuery('.promotion-header').outerHeight();
534        var header_h = jQuery('.header-site').outerHeight();
535        
536        if (jQuery(document).scrollTop() > promo_h) {
537            wrapper.addClass('fixed');
538        } else {
539            wrapper.removeClass('fixed');
540        }
541        
542        if (wrapper.hasClass('fixed')) {
543            jQuery('#page').css('padding-top', header_h);
544        } else {
545            jQuery('#page').css('padding-top', 0);
546        }
547    } else {
548        if (wrapper.hasClass('fixed')) {
549            wrapper.removeClass('fixed');
550            jQuery('#page').css('padding-top', 0);
551        }
552    }
553}
554
555function ToggleSiteNavi() {
556    jQuery('.site-navi').slideToggle('fast');
557}
558
559
560
561
562/*------------------------------------*\
563    # MISC
564\*------------------------------------*/
565
566function ShowAllDeliveryTable(element){
567    element = jQuery(element);
568    jQuery('.delivery-table').toggleClass('full');
569    if (element.text() == element.attr('data-text-show')) {
570        element.text(element.attr('data-text-hide'));
571    } else {
572        element.text(element.attr('data-text-show'));
573        jQuery('html, body').animate({
574            scrollTop: jQuery('.delivery-table').offset().top
575        }, 0);
576    }
577}
578
579
580function SwitchOrderStatus(mode) {
581    var items = jQuery('.order-status .js-response');
582    var new_index;
583    
584    if (items.length > 1) {
585        var index = parseInt(jQuery('.order-status .js-response:visible').attr('data-item'));
586        if (mode == 'next') {
587            if (index >= items.length) {
588                new_index = 1;
589            } else {
590                new_index = index + 1;
591            }
592        } else {
593            if (index == 1) {
594                new_index = items.length;
595            } else {
596                new_index = index - 1;
597            }
598        }
599        items.hide();
600        jQuery('.order-status .js-response[data-item="'+new_index+'"]').show();
601    }
602}
603
604
605function ChangeDelivery(element) {
606    var target_size = jQuery('.js-select-size option:selected');
607    var target_region = jQuery('.js-select-region option:selected');
608    
609    if (element.is('.js-select-region')) {
610        target_region = element.find('option:selected');
611    }
612    
613    if (jQuery('.js-select-region').length > 1) {
614        jQuery('.js-select-region option[value="'+target_region.val()+'"]').prop('selected', true);
615    }
616    if (jQuery('.js-delivery-country').length) {
617        jQuery('.js-delivery-country').text(target_region.text());
618    }
619    
620    if (element.is('.js-up') || element.is('.js-down')) {
621        RefreshClassicTable(target_region);
622    } else if (element.is('.js-select-size')) {
623        RefreshDeliveryCalendar(target_region, target_size);
624    } else if (element.is('.js-select-region')) {
625        if (jQuery('.js-classic-delivery').length) {
626			RefreshClassicTable(target_region);
627		}
628		if (jQuery('.delivery-table').length) {
629	        RefreshDeliveryTable(target_region);
630	    }
631	    if (jQuery('.delivery-calendar').length) {
632	        RefreshDeliveryCalendar(target_region, target_size);
633	    }
634    } else if (element.is('.js-select-pg')) {
635		if (jQuery('.delivery-table').length) {
636	        RefreshDeliveryTable(target_region);
637	    }
638    }
639}
640
641function RefreshDeliveryCalendar(target_region, target_size) {
642	var params = new Object;
643    params['country'] = target_region.val();
644    params['language'] = xLanguage;
645	params['type_key'] = target_size.val();
646    params['pg'] = target_size.attr('data-pg');
647    params['pid'] = target_size.attr('data-pid');
648    params['size'] = target_size.attr('data-size');
649    params['price'] = target_size.attr('data-price');
650    ToggleAreaLoading(jQuery('.delivery-calendar'), 1);
651    
652    jQuery.ajax({
653        type: 'POST',
654        data: { params: params },
655        url: 'https://api2.xxlpix.com/b2c/functions/class.Functions.php?class=shortcode&func=delivery_calendar',
656        success: function (data) {
657            data = jQuery.parseJSON(data);
658            jQuery('.delivery-calendar table').html(data.result);
659            ToggleAreaLoading(jQuery('.delivery-calendar'), 0);
660        }
661    });
662}
663
664function RefreshDeliveryTable(target_region) {
665	jQuery('.delivery-table').each(function(){
666		var params = new Object;
667		params['country'] = target_region.val();
668		params['language'] = xLanguage;
669		params['mode'] = jQuery('.delivery-table').attr('data-mode');
670		if (jQuery('select[name="product"]').length) {
671			params['pg'] = jQuery('select[name="product"]').val();
672		} else {
673			params['pg'] = 1;
674			if (jQuery('.delivery-table')[0].hasAttribute('data-pg')) {
675			    params['pg'] = jQuery('.delivery-table').attr('data-pg');
676			}
677		}
678		
679		jQuery.ajax({
680		    type: 'POST',
681		    data: { params: params },
682		    url: 'https://api2.xxlpix.com/b2c/functions/class.Functions.php?class=shortcode&func=delivery_table',
683		    success: function (data) {
684		        data = jQuery.parseJSON(data);
685		        jQuery('.delivery-table').replaceWith(data.result);
686		    }
687		});
688	});
689		
690}
691
692function RefreshClassicTable(target_region) {
693	var format_1 = parseInt(jQuery('.js-delivery-1 .active').text());
694    var format_2 = parseInt(jQuery('.js-delivery-2 .active').text());
695    if (format_1 >= format_2) {
696        var format = format_1+''+format_2;
697    } else {
698        var format = format_2+''+format_1;
699    }
700    var params = new Object;
701    params['country'] = target_region.val();
702    params['language'] = xLanguage;
703    params['size'] = format;
704    params['pg'] = 1;
705    jQuery.ajax({
706        type: 'POST',
707        data: { params: params },
708        url: '/global/ajax/class.ajax-functions.php?func=classic_delivery_calculator',
709        success: function (data) {
710            data = jQuery.parseJSON(data);
711            var price = priceFormat(data.result, xLanguage, 'currency');
712            jQuery('.js-classic-delivery .js-result').text(price);
713        }
714    });
715}
716
717function InsertNewHint(target) {
718	var values = CalcNewHint(target);
719	var text_id = target.attr('data-hint-id');
720	if (typeof target.attr('data-hint-text') != 'undefined') {
721		var text = target.attr('data-hint-text');
722	} else {
723		var text = translate['hint_id_'+text_id];
724	}
725	var element = jQuery('<div class="js-new-hint '+xLanguage+' hint-id-'+text_id+' mobile-hide" style="top: '+values['y']+'px; left: '+values['x']+'px;"><span class="text">'+text+'</span><span class="arrow-curved"></span></div>').appendTo('#page');
726    target.waypoint({
727		handler: function() {
728			element.addClass('ani-wiggle');
729		}
730	});
731}
732
733
734function CalcNewHint(target) {
735	target = jQuery(target);
736	var values = new Object();
737	var text_id = target.attr('data-hint-id');
738	var approx_h = 80;
739	var approx_w = 290;
740	var target_y = target.offset().top;
741	var target_x = target.offset().left;
742	values['y'] = target_y + (target.outerHeight() / 2) - (approx_h / 2);
743	values['x'] = target_x + target.outerWidth() + 10;
744	if (text_id == 2) {
745		values['x'] = target_x - approx_w - 10;
746	}
747	if(text_id == 3) {
748		values['y'] = values['y'] - 70;
749	}
750	return values;
751}
752
753
754function UpdateHintPosition(){
755	jQuery('.js-hint-message').each(function(){
756		var target = jQuery(this);
757		var values = CalcNewHint(target);
758		var text_id = target.attr('data-hint-id');
759		if (jQuery('.hint-id-'+text_id).is(':visible')) {
760			jQuery('.hint-id-'+text_id).css({
761				left: values['x']+'px',
762				top: values['y']+'px'
763			});
764		}
765	});
766}
767
768
769function ShowTrackingInfo(tracking_no) {
770    if (jQuery('form[name="order-status"]').length) {
771    	jQuery('input[name="tracking_number"]').val(tracking_no);
772    	jQuery('form[name="order-status"]').submit();
773	} else {
774		var params = new Object;
775	    if (typeof tracking_no == 'undefined') {
776	        params['tracking_no'] = jQuery('input[name="tracking_number"]').val();
777	    } else {
778	        if (tracking_no.indexOf('#') > -1) {
779	            tracking_no = tracking_no.split('#')
780	            params['tracking_no'] = tracking_no[0];
781	        } else {
782	            params['tracking_no'] = tracking_no;
783	        }
784	    }
785	    params['language'] = xLanguage;
786		jQuery.ajax({
787	        type: 'POST',
788	        data: { params: params },
789	        url: '/global/ajax/class.ajax-functions.php?func=delivery_tracking',
790	        success: function (data) {
791	            data = jQuery.parseJSON(data);
792				if (data.result.indexOf('Error Invalid tracking number') !== -1 || data.result.indexOf('Error The XML document is well formed but the document is not valid') !== -1) {
793		            jQuery('.delivery-tracking input').addClass('error');
794		        } else {
795            		jQuery('.delivery-tracking table, .delivery-tracking table + p').remove();
796		            jQuery('.delivery-tracking input').removeClass('error');
797		            jQuery('.delivery-tracking').append('<table class="padding full">'+data.result+'</table><p class="clearfix"><a class="passive f-right" href="https://wwwapps.ups.com/tracking/tracking.cgi?tracknum='+params['tracking_no']+'" target="_blank">'+translate['tracking_link_text']+'</a></p>');
798		        }
799	        }
800	    });
801	}
802}
803
804function AddSuspensionToCart(pid, quantity) {
805    var params = new Object();
806    params['cart_id'] = xVlog;
807    params['currency'] = xCurrency;
808    params['product_id'] = pid;
809    params['quantity'] = quantity;
810    
811    jQuery.ajax({
812        type: 'POST',
813        data: { params: params },
814        url: '/global/ajax/class.ajax-functions.php?func=add_suspension_to_cart',
815        success: function(data){
816            Redirect('/tunnel/', 'step=2&vlog='+xVlog);
817        }
818    });
819}
820
821function CouponSubmit(value) {
822    var params = new Object();
823    var element = jQuery('.coupon-form');
824    params['ref'] = xRef;
825    params['language'] = xLanguage;
826    params['value'] = value;
827    params['currency'] = xCurrency;
828    params['cart_id'] = xVlog;
829    
830    jQuery.ajax({
831        type: 'POST',
832        data: { params: params },
833        url: '/global/ajax/class.ajax-functions.php?func=coupon_submit',
834        success: function(data){
835            Redirect('/tunnel/', 'step=2&vlog='+xVlog);
836        }
837    });
838}
839
840
841function change_upload_data(key, value) {
842    upload_data[key] = value;
843}
844
845
846function RedirectWandcollage(params) {
847    params = params.split('-');
848    switch(xLanguage) {
849        case 'de':
850            var url = '/foto-auf-leinwand-mehrteilig/mehrteiler-erstellen/';
851            break;
852        case 'en':
853            var url = '/canvas-prints/split-canvas-prints/create-split-canvas/';
854            break;
855        case 'fr':
856            var url = '/triptyque-photo-personnalise/creer-multi-panneaux/';
857            break;
858        case 'nl':
859            var url = '/drieluik/meerluik-maken/';
860            break;
861        case 'es':
862            var url = '/triptico/crear-triptico/';
863            break;
864        case 'it':
865            var url = '/trittico/crea-foto-multi-pannello/';
866            break;
867    }
868    
869    if (jQuery('.upload-step-2').hasClass('finished')) {
870        Redirect(url, 'parts='+params[0]+'&version='+params[1]);
871    } else {
872        jQuery('.js-lead-refuse, .upload-progress').addClass('error');
873    }
874}
875
876
877function RedirectMehrteiler(params) {
878    params = params.split('-');
879    var urls = {
880		'de': {
881			1: '/mehrteilige-leinwand-selbst-gestalten/mehrteiler-erstellen/',
882			3: '/mehrteiler-erstellen/',
883			4: '/mehrteiler-erstellen/',
884		},
885		'en': {
886			1: '/split-canvas-prints/create-split-canvas/',
887		},
888		'fr': {
889			1: '/tableau-multi-panneaux-personnalise/creer-multi-panneaux/',
890		},
891		'nl': {
892			1: '/drieluik/meerluik-maken/',
893		},
894		'es': {
895			1: '/triptico/crear-triptico/',
896		},
897		'it': {
898			1: '/trittico/crea-foto-multi-pannello/',
899		},
900    };
901	    
902    if (params.length == 3) {
903		var pg = params[2];
904	} else {
905		var pg = 1;
906	}
907	
908    var url = urls[xLanguage][pg];
909    if (jQuery('.upload-step-2').hasClass('finished')) {
910        Redirect(url, 'parts='+params[0]+'&version='+params[1]+'&pg='+pg);
911    } else {
912        jQuery('.js-lead-refuse, .upload-progress').addClass('error');
913    }
914}
915
916
917function ToggleContentShifter(element) {
918    if (!element.hasClass('active')) {
919        element.siblings().find('.hidden').slideUp('fast');
920        element.find('.hidden').slideDown('fast');
921    }
922}

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.