PageSourceSearch

https://www.ing.com.tr/documents/IngBank/assets/plugins/jquery.bbWarningBar.js

js ing.com.tr collected 2026-09-24 09:14:54 UTC 11,746 bytes, 387 lines download raw bytes

1!(function($, jING, undefined) {
2    'use strict';
3
4    $.warningBar = {
5        _PLUGIN_NAME: 'warningBar',
6        _setFn: function(fn, def) {
7
8            def = def || function() {};
9
10            if ( typeof fn !== 'function' ) {
11                fn = def;
12            }
13
14            return fn;
15        },
16        getContainer: function(el) {
17
18            return $(el).parents(this.container).eq(0);
19        },
20        getTop: function(el, settings, showHide) {
21
22            showHide = showHide || false;
23
24            var h = $(el).outerHeight() * (showHide ? 1 : -1 ),
25                oldH = parseInt($(settings.container).data('wbPos'), 10) || 0;
26
27            $(settings.container).data('wbPos', oldH + h);
28
29            return oldH + h;  // parseInt($(settings.page).css(settings.cssAttr), 10) + h;
30        },
31        s: function(el) {
32
33            var settings = el.wbSettings,
34                t = this.getTop(el, settings, true);
35            if ( t === false ) {
36                return false;
37            }
38
39            var o = {};
40            o[settings.cssAttr] = t + 'px';
41            $(settings.page).animate(o, settings.animSpeed);
42        },
43        h: function(el) {
44
45            var settings = el.wbSettings,
46                t = this.getTop(el, settings, false);
47            if ( t === false ) {
48                return false;
49            }
50
51            var o = {};
52            o[settings.cssAttr] = t + 'px';
53            $(settings.page).animate(o, settings.animSpeed);
54        },
55        _show: function(el, fn) {
56
57            if ( el.wbSettings.isOpen ) {
58                return this;
59            }
60
61            fn = this._setFn(fn, el.wbSettings.onShow);
62
63            this.s.call(this, el);
64            $(el).slideDown(el.wbSettings.animSpeed, function() {
65                fn.call(el, this);
66                el.wbSettings.isOpen = true;
67                $(el).trigger('show.warningbar');
68            });
69
70            return this;
71        },
72        _hide: function(el, fn) {
73
74            if ( !el.wbSettings.isOpen ) {
75                return this;
76            }
77
78            fn = this._setFn(fn, el.wbSettings.onHide);
79
80            this.h.call(this, el);
81            $(el).slideUp(el.wbSettings.animSpeed, function() {
82                fn.call(el, this);
83                el.wbSettings.isOpen = false;
84                $(el).trigger('hide.warningbar');
85            });
86
87            return this;
88        },
89        combineElementOptions: function(el, options) {
90
91            var opts = $.extend({}, options),
92                data = $(el).data(),
93                optl;
94
95            if ( data || data.length ) {
96                for ( var opt in opts ) {
97                    if ( opts.hasOwnProperty(opt) ) {
98                        if ( data.hasOwnProperty(opt) || data.hasOwnProperty(optl = opt.toLowerCase()) ) {
99                            opts[opt] = data.hasOwnProperty(opt) ? data[opt] : data[optl];
100                        }
101                    }
102                }
103            }
104
105            return opts;
106        }
107    };
108    $.fn.warningbar = function(opts) {
109
110        var base = $.warningBar;
111
112        if ( typeof opts === 'string' ) {
113
114            var fn = base['_' + opts],
115                args = null;
116            if ( fn ) {
117                args = Array.prototype.slice.call(arguments);
118                args[0] = this[0];
119                fn.apply(base, args);
120            }
121
122            return this;
123        }
124
125        var options = $.extend({}, {
126            cssAttr: 'top',
127            delay: false,
128            container: '.warningbar-container',
129            page: '#viewport',
130            animSpeed: 600,
131            onShow: function(base) {},
132            onHide: function(base) {},
133            isOpen: false
134        }, opts);
135
136        var o = {
137            'position': 'relative'
138        };
139        o[options.cssAttr] = 0;
140        $(options.page).css(o);
141
142        return this.each(function() {
143
144            var el = this;
145
146            if ( $(el).data(base._PLUGIN_NAME) ) {
147                return this;
148            }
149
150            var settings = base.combineElementOptions(el, options);
151            settings.container = base.getContainer(el);
152            settings.container[0].wbPos = 0;
153            if ( typeof settings.onShow === 'string' ) {
154                settings.onShow = window[settings.onShow];
155            }
156            if ( typeof settings.onHide === 'string' ) {
157                settings.onShow = window[settings.onHide];
158            }
159
160            el.wbSettings = settings;
161
162            $(el).data(base._PLUGIN_NAME, true);
163
164            $('[data-role=btn-close]', $(this)).on('click.warningBar', function(e) {
165                e.preventDefault();
166                e.stopPropagation();
167                base._hide.call(base, el);
168            });
169
170            if ( $(el).hasClass('active') ) {
171                var o = {};
172                o[settings.cssAttr] = base.getTop(el, settings, true);
173                $(settings.page).css(o);
174                settings.isOpen = true;
175            }
176
177            if ( settings.delay ) {
178                setTimeout(function() {
179                    base._show.call(base, el);
180                }, settings.delay);
181            }
182        });
183    };
184
185    jING.init = jING.init || {};
186
187    jING.loginBar = {
188        defaults: {
189            expireDate: null,
190            alertOn: 60,
191            alertClass: 'red',
192            container: '#login-bar',
193            canvas: '#login-bar div.remaining em',
194            btnClose: '.close',
195            onComplete: function(options) {},
196            onAlert: function(diff, options) {},
197            onUpdate: function(options) {},
198            run: true,
199            fnExpireDate: null
200        },
201        isReady: false,
202        _timer: null,
203        getTimeLeft: function(expireDate) {
204
205            var now = (new Date()).getTime() / 1000,
206                diff = Math.floor(expireDate - now);
207
208            var min = parseInt(diff / 60, 10),
209                sec = Math.round(diff % 60);
210
211            min = min < 10 ? '0' + min : min;
212            sec = sec < 10 ? '0' + sec : sec;
213
214            return {
215                now: now,
216                seconds: diff,
217                str: min + ':' + sec
218            };
219        },
220        init: function(options) {
221
222            var base = this;
223
224            this.settings = $.extend({}, this.defaults, options);
225            if ( $(this.settings.container).length < 1 ) {
226                return;
227            }
228
229            var c = $(this.settings.container);
230            this.settings.barHeight = c.height() + 10;
231
232            this.settings.run = this.settings.run && c.is(':visible');
233
234            base.isReady = true;
235
236            if ( this.settings.expireDate && $(this.settings.canvas).length ) {
237                if ( this.settings.run ) {
238                    $('body.warning-bar #viewport').css({
239                        'margin-top': this.settings.barHeight
240                    });
241                    this.run();
242                }
243            } else {
244                if ( !this.settings.run ) {
245                    c.removeClass('hidden').css({
246                        'top': -this.settings.barHeight
247                    });
248                }
249            }
250
251            c.on('hide.warningbar', function() {
252                clearTimeout(base._timer);
253            });
254            $(this.settings.btnClose, c).on('click', function(e) {
255                base.close();
256            });
257        },
258        update: function() {
259
260            var base = this,
261                options = base.settings;
262
263            if ( $.isFunction(base.settings.onUpdate) ) {
264                clearTimeout(base._timer);
265                base.isReady = false;
266                $(options.container).removeClass(options.alertClass);
267                base.settings.expireDate = base.settings.onUpdate.call(base, options);
268                base.isReady = true;
269            }
270
271            base.run();
272        },
273        animate: function(inv) {
274
275            if ( !jING.loginBar.isReady ) {
276                return;
277            }
278
279            var base = jING.loginBar,
280                opts = base.settings;
281
282            inv = inv || 600;
283
284            $(document.body).animate({
285                'margin-top': opts.barHeight
286            }, inv, function() {
287                $(document.body).addClass('warning-bar');
288            });
289            $(opts.container).css({
290                opacity: 0
291            }).show().animate({
292                top: 0,
293                opacity: 1
294            }, inv);
295
296            opts.expireDate && base.run();
297        },
298        run: function() {
299
300            if ( !this.isReady ) {
301                return;
302            }
303            var base = this,
304                opts = base.settings,
305                timeLeft = base.getTimeLeft(opts.expireDate);
306            if (!opts || !opts.expireDate || timeLeft.seconds < 1 || opts.expireDate < timeLeft.now) {
307                base.settings.onComplete.call(base, opts);
308                return;
309            }
310
311            if ( parseInt(timeLeft.seconds - opts.alertOn, 10) === 0 ) {
312                base.settings.onAlert.call(base, timeLeft, opts);
313            }
314
315            $(opts.canvas).text(timeLeft.str);
316
317            clearTimeout(base._timer);
318            base._timer = setTimeout(function() {
319                base.isReady && base.run();
320            }, 999);
321        },
322        reset: function() {
323
324            var base = this;
325
326            clearTimeout(base._timer);
327
328            $(document.body).css({
329                'margin-top': 0
330            }).removeClass('warning-bar');
331            $(base.settings.container).hide();
332        },
333        close: function(inv) {
334
335            inv = inv || 600;
336
337            var base = this,
338                opts = base.settings;
339
340            clearTimeout(base._timer);
341
342            $(document.body).animate({
343                marginTop: '0'
344            }, inv, function() {
345                $(document.body).removeClass('warning-bar');
346            });
347            $(opts.container).animate({
348                top: -opts.barHeight,
349                opacity: 0
350            }, inv, function() {
351                $(opts.container).hide().css({
352                    opacity: 1
353                });
354            });
355        }
356    };
357    jING.init.loginBar = function(opts) {
358
359        var options = $.extend({
360            container: '#login-bar',
361            canvas: '#login-bar div.remaining em',
362            expireDate: window.logoutTime,
363            alertOn: 15,
364            onComplete: function(options) {
365                var c = $(options.container);
366                c.removeClass(options.alertClass)
367                    .addClass('logged-out');
368                $(document.body).addClass('logged-out');
369                $('div.online a', c).fadeOut(100, function() {
370                    $('div.online em', c).fadeIn(200);
371                });
372            },
373            onAlert: window.logoutOnAlert || function(timeLeft, options) {
374                $(options.container).addClass(options.alertClass);
375            },
376            run: !( !window.logoutTime || isNaN(window.logoutTime) )
377        }, window.loginBarOptions, opts);
378
379        if ( !$(options.container).length ) {
380            return;
381        }
382
383        jING.loginBar.init(options);
384    };
385
386    jING.init.logoutBar = jING.init.loginBar;
387})(jQuery, window.jING = window.jING || {});

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.