PageSourceSearch

https://www.mnzlendava.si/plugins/system/floatingmoduleck/assets/floatingmoduleck.js?87464d

js mnzlendava.si collected 2026-09-25 07:08:34 UTC 8,670 bytes, 201 lines download raw bytes

1/**
2 * @name		Floating Module CK
3 * @package		mod_floatingmoduleck
4 * @copyright	Copyright (C) 2015. All rights reserved.
5 * @license		GNU General Public License version 2 or later; see LICENSE.txt
6 * @author		Cedric Keiflin - http://www.template-creator.com - http://www.joomlack.fr
7 * @version		1.1.12
8 */
9
10(function($) {
11	$.fn.FloatingModuleCK = function(options) {
12		var defaults = {
13			time: 200,
14			zIndex: '1000',
15			minResolution: '640'
16		};
17
18		var opts = $.extend(defaults, options);
19		var mods = this;
20		var $window = $(window);
21		// check the resolution to disable the floating
22		var doFloating = true;
23		var timeout;
24
25		mods.each(function(options) {
26			var mod = $(this);
27			if (mod.attr('data-float') == '1') return;
28			mod.attr('data-float', '1');
29			mod.data('isfloatingckbottom', false);
30			toggleButton();
31			if (mod.attr('data-method') == 'onscroll') {
32				clearTimeout(timeout);
33				timeout = setTimeout(function() {
34					floatModule(mod);
35				}, 500);
36				$window.scroll(function() { floatModule(mod); });
37				$window.resize(function() { resizeModule(mod); });
38			}
39			if (mod.attr('data-method') == 'always') {
40				$(document.body).prepend(mod);
41				mod.css({position: 'absolute', zIndex: opts.zIndex, top: parseInt(mod.attr('data-y')), width: mod.attr('data-w'), backgroundColor: mod.attr('data-bg')}).addClass(mod.attr('data-css'));
42				switch (mod.attr('data-pos')) {
43					case 'right':
44						mod.css({right : parseInt(mod.attr('data-x'))}).css('left', 'auto');
45					break;
46					case 'bottom':
47						mod.css({bottom : parseInt(mod.attr('data-y'))}).css('top', 'auto').css('left', 'auto').css('right',  parseInt(mod.attr('data-x')));
48					break;
49					case 'bottomleft':
50						mod.css({bottom : parseInt(mod.attr('data-y'))}).css('top', 'auto').css('left', parseInt(mod.attr('data-x'))).css('right', 'auto');
51					break;
52					case 'left':
53					default:
54						mod.css({left : parseInt(mod.attr('data-x'))}).css('right', 'auto');
55					break;
56				}
57				fixedModule(mod);
58				$window.scroll(function() { fixedModule(mod); });
59				$window.on('resize load', function() { checkDofloating(); if(doFloating) {mod.css('display', 'block');} else {mod.css('display', 'none');} });
60			}
61		});
62
63		function toggleButton() {
64			$('.floatingmoduleck-button').on('click', function() {
65				var module = $(this).next('.floatingmoduleck-inner').get(0);
66				if (module.style.display === 'block') {
67					module.style.display = '';
68				} else {
69					module.style.display = 'block';
70				}
71			});
72		}
73
74		function floatModule(mod) {
75			if (mod.attr('data-onscrollpos') == 'top') {
76				checkDofloating();
77				var winY = $window.scrollTop();
78				if(!mod.data('isfloatingck')) {
79					mod.data('floatingckTop', mod.offset().top);
80					mod.data('floatingckLeft', mod.offset().left);
81					mod.data('floatingckWidth', mod.width());
82					mod.data('floatingckHeight', mod.height());
83					mod.data('floatingckIniW',(mod[0].style.width ? mod[0].style.width : ''));
84					mod.data('floatingckIniH',(mod[0].style.height ? mod[0].style.height : ''));
85				}
86				modTop = mod.data('floatingckTop');
87
88				// float the module
89				var bottomlimit = mod.attr('data-bottomlimit') && $(mod.attr('data-bottomlimit')).length ? $(mod.attr('data-bottomlimit')).offset().top + parseFloat(mod.attr('data-bottomoffset')) : 0;
90				var modTop2 = mod.offset().top;
91				var modBottom = modTop2 + mod.height();
92				var topvalue = bottomlimit - (winY + mod.height());
93
94				if (mod.attr('data-bottomlimit') && $(mod.attr('data-bottomlimit')).length 
95					&& modBottom >= bottomlimit 
96					&& mod.data('isfloatingckbottom') == false
97					&& doFloating
98				) {
99					mod.css({position: 'fixed', top: parseFloat(topvalue) +'px'}).data('isfloatingckbottom', true);
100				} else if (mod.data('isfloatingckbottom') == true) {
101					mod.css({position: 'fixed', top: parseFloat(topvalue) +'px'});
102					if (mod.position().top >= parseInt(mod.attr('data-y'))) {
103						mod.data('isfloatingckbottom', false)
104						.css('top' , parseInt(mod.attr('data-y')));
105					}
106				} else if (modTop < (winY - parseInt(mod.attr('data-offsety')) + parseInt(mod.attr('data-y'))) && !mod.data('isfloatingck') && doFloating) {
107					mod.after('<div id="'+mod.attr('id')+'tmp"></div>')
108					var modtmp = $('#'+mod.attr('id')+'tmp');
109					modtmp
110						.css('visibility', 'hidden')
111						.height(mod.outerHeight());
112					mod.css({position: 'fixed', zIndex: opts.zIndex, marginTop: -parseInt(mod.attr('data-offsety'))+'px',top: parseInt(mod.attr('data-y'))+'px', left: 'auto', width: mod.data('floatingckWidth'), backgroundColor: mod.attr('data-bg')}).data('isfloatingck', true).addClass('isfloatingck').addClass(mod.attr('data-css'));
113					mod.attr('data-offset', modTop);
114					mod.animate({marginTop: 0}, parseInt(opts.time));
115				// else the module is not in the scope, don't float
116				} else if (modTop >= (winY - parseInt(mod.attr('data-offsety')) + parseInt(mod.attr('data-y'))) && mod.data('isfloatingck') || (!doFloating && $('#'+mod.attr('id')+'tmp').length)) {
117					var modtmp = $('#'+mod.attr('id')+'tmp');
118					mod.data('floatingckTop', modtmp.offset().top);
119					mod.data('floatingckLeft', modtmp.offset().left);
120					mod.css({position: '', marginTop: '', backgroundColor: '', top: ''}).data('isfloatingck', false).removeClass('isfloatingck').removeClass(mod.attr('data-css'));
121					mod.width(mod.data('floatingckIniW')).height(mod.data('floatingckIniH'));
122					modtmp.remove();
123				}
124			// if bottom
125			} else {
126				checkDofloating();
127				var winY = $window.scrollTop();
128				if(!mod.data('isfloatingck')) {
129					mod.data('floatingckBottom', mod.offset().top + mod.height());
130					mod.data('floatingckLeft', mod.offset().left);
131					mod.data('floatingckWidth', mod.width());
132					mod.data('floatingckHeight', mod.height());
133					mod.data('floatingckIniW',(mod[0].style.width ? mod[0].style.width : ''));
134					mod.data('floatingckIniH',(mod[0].style.height ? mod[0].style.height : ''));
135				}
136				modBottom = mod.data('floatingckBottom');
137
138				// var modBottom = mod.offset().top + mod.height();
139				var winBottom = winY + $window.height();
140
141				if (winBottom < (modBottom - parseInt(mod.attr('data-offsety')) + parseInt(mod.attr('data-y'))) && !mod.data('isfloatingck') && doFloating) {
142					mod.after('<div id="'+mod.attr('id')+'tmp"></div>')
143					var modtmp = $('#'+mod.attr('id')+'tmp');
144					modtmp
145						.css('visibility', 'hidden')
146						.height(mod.outerHeight());
147					mod.css({position: 'fixed', zIndex: opts.zIndex, marginTop: -parseInt(mod.attr('data-offsety'))+'px',bottom: parseInt(mod.attr('data-y'))+'px', left: 'auto', width: mod.data('floatingckWidth'), backgroundColor: mod.attr('data-bg')}).data('isfloatingck', true).addClass('isfloatingck').addClass(mod.attr('data-css'));
148					mod.attr('data-offset', modBottom);
149					mod.animate({marginTop: 0}, parseInt(opts.time));
150				// else the module is not in the scope, don't float
151				} else if (winBottom >= (modBottom - parseInt(mod.attr('data-offsety')) + parseInt(mod.attr('data-y'))) && mod.data('isfloatingck') || (!doFloating && $('#'+mod.attr('id')+'tmp').length)) {
152					var modtmp = $('#'+mod.attr('id')+'tmp');
153					mod.data('floatingckTop', modtmp.offset().top);
154					mod.data('floatingckLeft', modtmp.offset().left);
155					mod.css({position: '', marginTop: '', backgroundColor: '', bottom: ''}).data('isfloatingck', false).removeClass('isfloatingck').removeClass(mod.attr('data-css'));
156					mod.width(mod.data('floatingckIniW')).height(mod.data('floatingckIniH'));
157					modtmp.remove();
158				}
159			}
160		}
161
162		function resizeModule(mod) {
163			if (!mod.data('isfloatingck')) return;
164			var modtmp = $('#'+mod.attr('id')+'tmp');
165			mod.data('floatingckTop', modtmp.offset().top);
166			mod.data('floatingckLeft', modtmp.offset().left);
167			floatModule(mod);
168			if ($('#'+mod.attr('id')+'tmp').length) {
169				mod.width(modtmp.width());
170				modtmp.height(mod.height());
171			}
172		}
173
174		function fixedModule(mod) {
175			var winY = $window.scrollTop();
176			var modTop = mod.offset().top;
177			switch (mod.attr('data-pos')) {
178				case 'bottom':
179					mod.css({position: 'fixed', bottom : parseInt(mod.attr('data-y')), top: 'auto', left: 'auto', right:  parseInt(mod.attr('data-x'))});
180				break;
181				case 'bottomleft':
182					mod.css({position: 'fixed', bottom : parseInt(mod.attr('data-y')), top: 'auto', left: parseInt(mod.attr('data-x')), right: 'auto'});
183				break;
184				case 'right':
185				case 'left':
186				default:
187					mod.animate({top: winY + parseInt(mod.attr('data-y'))}, parseInt(opts.time)/10);
188				break;
189			}
190			
191		}
192
193		function checkDofloating() {
194			if ($window.width() <= opts.minResolution) {
195				doFloating = false;
196			} else {
197				doFloating = true;
198			}
199		}
200	}
201})(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.