PageSourceSearch

https://goldenstedt.de/templates/goldenstedt_2019_02_07_002/script.responsive.js

js goldenstedt.de collected 2026-10-02 18:20:33 UTC 20,439 bytes, 531 lines download raw bytes

1/* Created by Artisteer v4.3.0.60745 */
2/*jshint forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, curly:false, browser:true, jquery:false */
3/*global jQuery */
4
5var responsiveDesign = {
6    isResponsive: false,
7    isDesktop: false,
8    isTablet: false,
9    isPhone: false,
10    lockedResponsiveMode: '', // free mode from start
11
12    responsiveType: 'desktop',
13    responsiveTypeIdx: 1,
14    lockedResponsiveType: '',
15
16    isCurrentDefaultResponsive: false,
17
18    defaultResponsive: [ false, true, true, true, true ], // turn on/off old or new responsive modes
19
20    windowWidth: 0,
21
22    responsive: (function ($) {
23        "use strict";
24        return function () {
25            var html = $("html");
26            this.windowWidth = $(window).width();
27            var triggerEvent = false;
28
29            var isRespVisible = $("#art-resp").is(":visible");
30            if (this.lockedResponsiveMode === 'desktop') isRespVisible = false;
31
32            if (isRespVisible && !this.isResponsive) {
33                html.addClass("responsive").removeClass("desktop");
34                this.isResponsive = true;
35                this.isDesktop = false;
36                triggerEvent = true;
37            } else if (!isRespVisible && !this.isDesktop) {
38                html.addClass("desktop").removeClass("responsive default-responsive responsive-tablet responsive-phone");
39                this.isResponsive = this.isTablet = this.isPhone = false;
40                this.isDesktop = true;
41                triggerEvent = true;
42            }
43
44            if (this.isResponsive) {
45                // additional check to lock responsive mode
46                var isTablet = this.lockedResponsiveMode === 'tablet' || ($("#art-resp-t").is(":visible") && this.lockedResponsiveMode === '');
47                var isPhone = this.lockedResponsiveMode === 'phone' || ($("#art-resp-m").is(":visible") && this.lockedResponsiveMode === '');
48                if (isTablet && !this.isTablet) {
49                    html.addClass("responsive-tablet").removeClass("responsive-phone");
50                    this.isTablet = true;
51                    this.isPhone = false;
52                    triggerEvent = true;
53                } else if (isPhone && !this.isPhone) {
54                    html.addClass("responsive-phone").removeClass("responsive-tablet");
55                    this.isTablet = false;
56                    this.isPhone = true;
57                    triggerEvent = true;
58                }
59            }
60
61            var prevResponsiveIndx = this.responsiveTypeIdx;
62            if (this.lockedResponsiveType === 'tabletlandscape' || ($("#art-resp-tablet-landscape").is(":visible") && this.lockedResponsiveType === '')) {
63                this.responsiveType = 'tabletlandscape';
64                this.responsiveTypeIdx = 1;
65            } else if (this.lockedResponsiveType === 'tabletportrait' || ($("#art-resp-tablet-portrait").is(":visible") && this.lockedResponsiveType === '')) {
66                this.responsiveType = 'tabletportrait';
67                this.responsiveTypeIdx = 2;
68            } else if (this.lockedResponsiveType === 'phonelandscape' || ($("#art-resp-phone-landscape").is(":visible") && this.lockedResponsiveType === '')) {
69                this.responsiveType = 'phonelandscape';
70                this.responsiveTypeIdx = 3;
71            } else if (this.lockedResponsiveType === 'phoneportrait' || ($("#art-resp-phone-portrait").is(":visible") && this.lockedResponsiveType === '')) {
72                this.responsiveType = 'phoneportrait';
73                this.responsiveTypeIdx = 4;
74            } else { //if (this.lockedResponsiveType === 'desktop' || ($("#art-resp-desktop").is(":visible") && this.lockedResponsiveType === '')) {
75                this.responsiveType = 'desktop';
76                this.responsiveTypeIdx = 0;
77            }
78
79            if (triggerEvent || prevResponsiveIndx !== this.responsiveTypeIdx) {
80                triggerEvent = true;
81                
82                if (this.isResponsive && this.defaultResponsive[ this.responsiveTypeIdx ]) {
83                    this.isCurrentDefaultResponsive = true;
84                    html.removeClass('custom-responsive').addClass('default-responsive');
85                } else {
86                    this.isCurrentDefaultResponsive = false;
87                    html.removeClass('default-responsive').addClass('custom-responsive');
88                }
89            }
90
91            if (triggerEvent) {
92                $(window).trigger("responsive", this);
93            }
94
95            $(window).trigger("responsiveResize", this);
96        };
97    })(jQuery),
98    initialize: (function ($) {
99        "use strict";
100        return function () {
101            // get correct defaultResponsive
102            if (typeof defaultResponsiveData !== 'undefined') responsiveDesign.defaultResponsive = defaultResponsiveData;
103
104            $("<div id=\"art-resp\"><div id=\"art-resp-m\"></div><div id=\"art-resp-t\"></div></div>").appendTo("body");
105            $('<div id="art-resp-tablet-landscape" /><div id="art-resp-tablet-portrait" /><div id="art-resp-phone-landscape" /><div id="art-resp-phone-portrait" />').appendTo('body');
106
107
108            /* (1) Use this code for debug instead of (2):
109             * var resizeTimeout;
110             * $(window).resize(function () {
111             * clearTimeout(resizeTimeout);
112             * resizeTimeout = setTimeout(function () { responsiveDesign.responsive(); }, 50);
113             * });
114             */
115
116            /* (2) Use this code for production and comment (1): */
117            $(window).resize(function () {
118                responsiveDesign.responsive();
119            });
120
121            $(window).trigger("resize");
122        };
123    })(jQuery),
124    // lock responsive in some mode: desktop, tablet or phone for editor
125    lockResponsiveType: function (mode) {
126        responsiveDesign.lockedResponsiveType = mode;
127
128        if (mode.indexOf('tablet') === 0) mode = 'tablet';
129        if (mode.indexOf('phone') === 0) mode = 'phone';
130
131        responsiveDesign.lockedResponsiveMode = mode;
132    },
133    // using in editor to turn off default responsive
134    toogleDefaultResponsive: function (type, val) {
135        var old = responsiveDesign.defaultResponsive[ type ];
136        responsiveDesign.defaultResponsive[ type ] = val;
137        if (old !== val) responsiveDesign.responsiveTypeIdx = -1;
138    }
139};
140
141function responsiveAbsBg(responsiveDesign, el, bg) {
142    "use strict";
143    if (bg.length === 0)
144        return;
145
146    var desktopBgTop = bg.attr("data-bg-top");
147    var desktopBgHeight = bg.attr("data-bg-height");
148
149    if (responsiveDesign.isResponsive) {
150        if (typeof desktopBgTop === "undefined" || desktopBgTop === false) {
151            bg.attr("data-bg-top", bg.css("top"));
152            bg.attr("data-bg-height", bg.css("height"));
153        }
154
155        var elTop = el.offset().top;
156        var elHeight = el.outerHeight();
157        bg.css("top", elTop + "px");
158        bg.css("height", elHeight + "px");
159    } else if (typeof desktopBgTop !== "undefined" && desktopBgTop !== false) {
160        bg.css("top", desktopBgTop);
161        bg.css("height", desktopBgHeight);
162        bg.removeAttr("data-bg-top");
163        bg.removeAttr("data-bg-height");
164    }
165}
166
167var responsiveImages = (function ($) {
168    "use strict";
169    return function (responsiveDesign) {
170        $("img[width]").each(function () {
171            var img = $(this), newWidth = "", newMaxWidth = "", newHeight = "";
172            if (responsiveDesign.isResponsive) {
173                newWidth = "auto";
174                newHeight = "auto";
175                newMaxWidth = "100%";
176
177                var widthAttr = img.attr("width");
178                if (widthAttr !== null && typeof (widthAttr) === "string" && widthAttr.indexOf("%") === -1) {
179                    newWidth = "100%";
180                    newMaxWidth = parseInt($.trim(widthAttr), 10) + "px";
181                }
182            }
183            img.css("width", newWidth).css("max-width", newMaxWidth).css("height", newHeight);
184        });
185    };
186})(jQuery); 
187
188var responsiveVideos = (function ($) {
189    "use strict";
190    return function (responsiveDesign) {
191        $("iframe[width],object[width],embed[width]").each(function () {
192            var obj = $(this);
193            if ((obj.is('[width]') && obj.attr("width").indexOf("%") !== -1) ||
194                (obj.is('[class]') && obj.attr("class").indexOf("twitter") !== -1) ||
195                (obj.id && obj.id.indexOf("google") !== -1))
196                return;
197            var container = obj.parent(".art-responsive-embed");
198            if (responsiveDesign.isResponsive) {
199                if (container.length !== 0)
200                    return;
201                container = $("<div class=\"art-responsive-embed\">").insertBefore(obj);
202                obj.appendTo(container);
203            } else if (container.length > 0) {
204                obj.insertBefore(container);
205                container.remove();
206            }
207        });
208    };
209})(jQuery);
210
211// this must be called for collages only!
212var responsiveTextblocks = (function ($) {
213    "use strict";
214    return function (slider, responsiveDesign) {
215        slider.find(".art-textblock").each(function () {
216            if (parseInt(slider.attr("data-width"), 10) === 0) {
217                return true;
218            }
219            var tb = $(this);
220            var c = slider.width() / slider.attr("data-width");
221            tb.css({
222                "height": "",
223                "width": "",
224                "top": "",
225                "margin-left": ""
226            });
227            if (responsiveDesign.isResponsive) {
228                var tbHeight = parseInt(tb.css("height"), 10);
229                var tbWidth = parseInt(tb.css("width"), 10);
230                var tbTop = parseInt(tb.css("top"), 10);
231                var tbMargin = parseInt(tb.css("margin-left"), 10);
232                tb.add(tb.find('div')).css({
233                    "height": tbHeight * c,
234                    "width": tbWidth * c
235                });
236                tb.css("top", tbTop * c);
237                tb.attr("style", function (i, s) { return s + "margin-left: " + (tbMargin * c) + "px !important"; });
238            }
239        });
240    };
241})(jQuery);
242
243var responsiveSlider = (function ($) {
244    "use strict";
245    return function (responsiveDesign) {
246        $(".art-slider").each(function () {
247            var s = $(this);
248
249            var isHeaderSlider = s.parent('.art-header').length > 0 || s.parent('.art-pageslider').length > 0;
250            if (!isHeaderSlider && responsiveDesign.isResponsive) {
251                responsiveTextblocks(s, responsiveDesign);
252                return;
253            }
254
255            var initialWidth = s.attr("data-width");
256            var initialHeight = s.attr("data-height");
257
258            // set size
259
260            var obj = s.data("slider");
261            if (!obj) {
262                return false;
263            }
264
265            var inner = s.find(".art-slider-inner");
266
267            if (!responsiveDesign.isResponsive && obj.settings.helper) {
268                obj.settings.helper.updateSize(inner, { width: initialWidth, height: initialHeight });
269                return;
270            }
271
272            // set slider
273            if (obj && obj.settings.helper) {
274                $(window).on("responsiveResize", function updateSize() {
275                    if (obj.settings.animation === "fade") return;
276                    if (responsiveDesign.isCurrentDefaultResponsive) {
277                        obj.settings.helper.updateSize(inner, { width: initialWidth, height: initialHeight });
278                        $.each(inner.children(), function () {
279                            $(this).css(
280                                "background-position",
281                                -Math.floor(initialWidth / 2 - parseInt(inner.outerWidth(), 10) / 2) + "px" +
282                                -Math.floor(initialHeight / 2 - parseInt(inner.outerHeight(), 10) / 2) + "px "
283                            );
284                        });
285                    } else {
286                        $(window).off("responsiveResize", updateSize);
287                    }
288                });
289            }
290        });
291    };
292})(jQuery);
293
294var responsiveCollages = (function ($) {
295    "use strict";
296    return function (responsiveDesign) {
297        $(".art-collage").each(function() {
298            var collage = $(this);
299            var slider = collage.find(".art-slider");
300
301            var initialWidth = slider.attr("data-width");
302            var initialHeight = slider.attr("data-height");
303
304            var parent = collage.closest(':not(.image-caption-wrapper, .art-collage)');
305            var parentIcw = collage.closest('.image-caption-wrapper');
306            var parentWidth = parent.width();
307            var collageWidth = collage.width();
308
309            // for responsive try to make collage smaller
310            // a) no icw - check collage width and parent
311            // b) with icw - collage is bigger than icw
312            var doms = collage
313                .add(slider)
314                .add(collage.closest(".image-caption-wrapper"));
315
316            // so try to make collage smaller
317            if (responsiveDesign.isResponsive && collageWidth > parentWidth || (parentIcw.length > 0 && collageWidth > parentIcw.width())) {
318                doms.css("width", "100%");
319            }
320
321            // but if icw make collage too bit reset it width to noraml
322            collageWidth = collage.width();
323            if (collageWidth > initialWidth) {
324                doms.css("width", "");
325            }
326
327            var c = slider.width() / initialWidth;
328            var h = c * initialHeight;
329            slider.css("height", h + "px");
330        });
331    };
332})(jQuery);
333
334
335jQuery(window).bind("responsive", (function ($) {
336    "use strict";
337    return function (event, responsiveDesign) {
338        // so this event is main and it generate sub events to make important changes before we will modify slider
339        // for example we move out of slider menu button, and it change slider size
340        $(window).trigger('responsivePage', responsiveDesign);
341        responsiveImages(responsiveDesign);
342        responsiveVideos(responsiveDesign);
343
344        responsiveSlider(responsiveDesign);
345        responsiveNavigator(responsiveDesign);
346    };
347})(jQuery));
348
349jQuery(window).bind("responsiveResize", (function ($) {
350    "use strict";
351    return function (event, responsiveDesign) {
352        responsiveCollages(responsiveDesign);
353        responsiveNavigator(responsiveDesign);
354    };
355})(jQuery));
356
357jQuery(function ($) {
358    if (!browser.ie || browser.version > 8) return;
359    var timeout;
360    $(window).on("resize", function () {
361        clearTimeout(timeout);
362        timeout = setTimeout(function() {
363            responsiveCollages(responsiveDesign);
364            responsiveNavigator(responsiveDesign);
365        }, 25);
366    });
367    responsiveCollages(responsiveDesign);
368    responsiveNavigator(responsiveDesign);
369});
370
371var responsiveHeader = (function ($) {
372    "use strict";
373    return function(responsiveDesign) {
374        var header = $("header.art-header");
375        var headerSlider = header.find(".art-slider");
376
377        if (headerSlider.length) {
378            var firstSlide = headerSlider.find(".art-slide-item").first();
379            var slidebg = firstSlide.css("background-image").split(",");
380            var previousSibling = headerSlider.prev();
381            var sliderNav = headerSlider.siblings(".art-slidenavigator");
382            if (slidebg.length && responsiveDesign.isResponsive) {
383                // if prev is menu in header
384                if (previousSibling.is("nav.art-nav")) {
385                    sliderNav.attr("data-offset", previousSibling.height());
386                }
387            } else {
388                sliderNav.removeAttr("data-offset");
389                header.removeAttr("style");
390            }
391        }
392    };
393})(jQuery);
394
395jQuery(window).bind("responsiveResize", (function ($) {
396    "use strict";
397    return function (event, responsiveDesign) {
398        responsiveAbsBg(responsiveDesign, $(".art-header"), $("#art-header-bg"));
399    };
400})(jQuery));
401
402jQuery(window).bind("responsive", (function ($) {
403    "use strict";
404    return function (event, responsiveDesign) {
405        if (browser.ie && browser.version <= 8) return;
406
407        if (responsiveDesign.isResponsive) {
408            $(window).on("responsiveResize.header", function () {
409                responsiveHeader(responsiveDesign);
410            });
411        } else {
412            $(window).trigger("responsiveResize.header");
413            $(window).off("responsiveResize.header");
414        }
415    };
416})(jQuery));
417
418jQuery(window).bind("responsiveResize", (function ($) {
419    "use strict";
420    return function (event, responsiveDesign) {
421        responsiveAbsBg(responsiveDesign, $("nav.art-nav"), $("#art-hmenu-bg"));
422        $(window).trigger("responsiveNav", { responsiveDesign: responsiveDesign });
423    };
424})(jQuery));
425
426
427
428
429jQuery(function ($) {
430    "use strict";
431    $(".art-hmenu a")
432        .click(function(e) {
433            var link = $(this);
434            if ($(".responsive").length === 0)
435                return;
436
437            var item = link.parent("li");
438            
439            if (item.hasClass("active")) {
440                item.removeClass("active").children("a").removeClass("active");
441            } else {
442                item.addClass("active").children("a").addClass("active");
443            }
444
445            if (item.children("ul").length > 0) {
446                var href = link.attr("href");
447                link.attr("href", "#");
448                setTimeout(function () { 
449                    link.attr("href", href);
450                }, 300);
451                e.preventDefault();
452            }
453        })
454        .each(function() {
455            var link = $(this);
456            if (link.get(0).href === location.href) {
457                link.addClass("active").parents("li").addClass("active");
458                return false;
459            }
460        });
461});
462
463
464jQuery(function($) {
465    $('<a href=\"#\" class=\"art-menu-btn\"><span></span><span></span><span></span></a>').insertBefore(".art-hmenu").click(function(e) {
466        var menu = $(this).next();
467        if (menu.is(":visible")) {
468            menu.slideUp("fast", function() {
469                $(this).removeClass("visible").css("display", "");
470            });
471        } else {
472            menu.slideDown("fast", function() {
473                $(this).addClass("visible").css("display", "");
474            });
475        }
476        e.preventDefault();
477    });
478});
479
480var responsiveLayoutCell = (function ($) {
481    "use strict";
482    return function (responsiveDesign) {
483        $(".art-content .art-content-layout-row,.art-footer .art-content-layout-row").each(function () {
484            var row = $(this);
485            var rowChildren = row.children(".art-layout-cell");
486            if (rowChildren.length > 0) {
487                var c;
488                row.removeClass("responsive-layout-row-2").removeClass("responsive-layout-row-3").removeClass("responsive-layout-row-1");
489                if (rowChildren.length === 1) {
490                    c = 1;
491                    row.addClass("responsive-layout-row-1");
492                } else if (rowChildren.length % 2 === 0) {
493                    var c = 2;
494                    row.addClass("responsive-layout-row-2");
495                } else {
496                    var c = 3;
497                    row.addClass("responsive-layout-row-3");
498                }
499                if (c > 0 && responsiveDesign.isTablet) {
500                    rowChildren.addClass("responsive-tablet-layout-cell").each(function (i) {
501                        if ((i + 1) % c === 0) {
502                            $(this).after("<div class=\"cleared responsive-cleared\">");
503                        }
504                    });
505                } else {
506                    rowChildren.removeClass("responsive-tablet-layout-cell");
507                    row.children(".responsive-cleared").remove();
508                }
509            }
510        });
511    };
512})(jQuery);
513
514jQuery(window).bind("responsive", function (event, responsiveDesign) {
515    "use strict";
516
517    responsiveLayoutCell(responsiveDesign);
518});
519
520/*global jQuery, responsiveDesign*/
521
522
523
524
525//setTimeout(function () { $("html").addClass("desktop") }, 0);
526
527if (!browser.ie || browser.version > 8) {
528    jQuery(responsiveDesign.initialize);
529} else {
530    jQuery("html").addClass("desktop");
531}

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.