PageSourceSearch

https://www.lazkao.eus/libraries/cegcore/assets/gplugins/gtooltip/gtooltip.js

js lazkao.eus collected 2026-10-02 11:16:44 UTC 12,636 bytes, 392 lines download raw bytes

1jQuery.gtooltip = {
2	'tipclass' : 'gtooltip',
3	'awaytime': 800,
4	'ontime': 0,
5	'ajax': 0,
6	'ajax_cache': {},
7	'ajaxloading': 'Loading....',
8	'append': 'after',
9	'position':'top',
10	'closable':0,
11	'on_close':'hide',
12	'tid':'',
13	'content':'',
14	'trigger':'hover',
15	'resetOnShow':false,
16	'createOnShow':false,
17	'spacing':3,
18	'arrow_size':7,
19	'css':{
20		'background-color':'#000',
21		'border-color':'#000',
22		'border-radius':'4px',
23		'border-width':'1px',
24		'padding':'8px',
25		'color':'#fff',
26		'font-size':'12px',
27		'max-width':'200px',
28		'text-align':'center',
29	},
30};
31
32(function($){
33	$.fn.gtooltip = function(options, params){
34		if(this.length > 0){
35			if($.type(params) === 'undefined' && $.type(options) === 'object'){
36				params = options;
37			}
38			
39			if($.type(options) === 'undefined' || $.type(options) === 'object'){
40				params = $.extend(true, {}, $.gtooltip, params);
41				
42				var prefix = '';
43				if(params.tid){
44					prefix = '-'+params.tid;
45				}
46				
47				return this.each(function(){
48					if(!$(this).data('gtooltip'+prefix)){
49						$(this).data('gtooltip'+prefix, new GTooltip(this, params));
50					}
51				});
52			}
53			
54			if($.type(options) === 'string'){
55				params = $.extend(true, {}, $.gtooltip, params);
56				
57				var prefix = '';
58				if(params.tid){
59					prefix = '-'+params.tid;
60				}
61				
62				var tip = $(this).data('gtooltip'+prefix);
63				if(typeof tip == 'undefined'){
64					return null;
65				}
66				
67				switch (options){
68					case 'show':
69						return tip.show();
70					case 'hide':
71						return tip.hide();
72					case 'destroy':
73						return tip.destroy();
74					case 'reset':
75						return tip.reset();
76					case 'get':
77						return tip.get();
78				}
79			}
80		}
81	}
82	
83	var GTooltip = function(elem, params){
84		this.element = elem;
85		this.settings = params;
86		
87		this.shown = false;
88		this.hidden = false;
89		
90		this.content = null;
91		this.location = null;
92		
93		this.init();
94	};
95	
96	GTooltip.prototype = {
97		init: function(){
98			var ttObj = this;
99			ttObj.create();
100			
101			if(ttObj.settings.trigger == 'hover'){
102				ttObj.initHover();
103			}else if(ttObj.settings.trigger == 'click'){
104				ttObj.initClick();
105			}
106			
107			//show events
108			$(ttObj.element).on('show.gtooltip', function(){
109				if(ttObj.settings.resetOnShow || ttObj.settings.createOnShow){
110					ttObj.reset();
111				}
112				//check ajax data
113				if(ttObj.settings.ajax){
114					if($.type($(ttObj.element).data('ajax')) !== 'undefined'){
115						if($.type(ttObj.ajax_result) === 'undefined'){
116							ttObj.setContent(ttObj.settings.ajaxloading);
117							ttObj.reset();
118							$.ajax({
119								"type" : "GET",
120								"url" : $(ttObj.element).data('ajax'),
121								"cache" : true,
122								"beforeSend" : function(res){
123									//ttObj.setContent(ttObj.settings.ajaxloading);
124								},
125								"success" : function(res){
126									ttObj.setContent(res);
127									ttObj.ajax_result = res;
128								},
129							});
130						}
131					}
132				}
133			});
134		},
135		
136		get: function(){
137			var ttObj = this;
138			return ttObj;
139		},
140		
141		destroy: function(){
142			var ttObj = this;
143			ttObj.tip.remove();
144			
145			var prefix = '';
146			if(ttObj.settings.tid){
147				prefix = '-'+ttObj.settings.tid;
148			}
149			$(ttObj.element).removeData('gtooltip'+prefix);
150			return true;
151		},
152		
153		initClick: function(){
154			var ttObj = this;
155			$(ttObj.element).on('click', function(){
156				if(ttObj.shown){
157					ttObj.hide();
158				}else{
159					ttObj.show();
160				}
161			});
162		},
163		
164		initHover: function(){
165			var ttObj = this;
166			$(ttObj.element).on('mouseover', function(){
167				clearTimeout(ttObj.awaytime);
168				//$this.gtooltip('show');
169				var ontime_timeout = setTimeout(function(){
170					ttObj.show();
171					ttObj.tip.on('mouseover', function(){
172						clearTimeout(ttObj.awaytime);
173					});
174					ttObj.tip.on('mouseleave', function(){
175						var awaytime_timeout = setTimeout(function(){
176							ttObj.hide();
177						}, ttObj.settings.awaytime);
178						ttObj.awaytime = awaytime_timeout;
179					});
180				}, ttObj.settings.ontime);
181				ttObj.ontime = ontime_timeout;
182			});
183			$(ttObj.element).on('mouseleave', function(){
184				clearTimeout(ttObj.ontime);
185				var awaytime_timeout = setTimeout(function(){
186					ttObj.hide();
187				}, ttObj.settings.awaytime);
188				ttObj.awaytime = awaytime_timeout;
189			});
190		},
191		
192		initClose: function(){
193			var ttObj = this;
194			
195			ttObj.tip.find('.gtooltip-close').on('click', function(){
196				/*if($.isFunction(ttObj.settings.onClose)){
197					ttObj.settings.onClose.call(this);
198				}*/
199				$(ttObj.element).trigger('close.gtooltip');
200				
201				if(ttObj.settings.on_close == 'hide'){
202					ttObj.hide();
203				}else if(ttObj.settings.on_close == 'destroy'){
204					ttObj.destroy();
205				}
206			});
207		},
208		
209		initContent: function(){
210			var ttObj = this;
211			
212			if($(ttObj.element).prop('title')){
213				ttObj.content = $(ttObj.element).prop('title');
214				$(ttObj.element).prop('title', '');
215			}
216			
217			if(ttObj.settings.content){
218				ttObj.content = ttObj.settings.content;
219			}else{
220				if($(ttObj.element).data('content')){
221					ttObj.content = $(ttObj.element).data('content');
222				}else{
223					//$(ttObj.element).data('content', $(ttObj.element).prop('title'));
224				}
225			}
226		},
227		
228		
229		setContent: function(content){
230			var ttObj = this;
231			
232			ttObj.content = content;
233			ttObj.tip.find('.gtooltip-content').html(content);
234		},
235		
236		show: function(){
237			var ttObj = this;
238			
239			$(ttObj.element).triggerHandler('show.gtooltip');
240			
241			ttObj.tip.show();
242			ttObj.shown = true;
243			ttObj.hidden = false;
244			return true;
245		},
246		
247		hide: function(){
248			var ttObj = this;
249			
250			$(ttObj.element).triggerHandler('hide.gtooltip');
251			
252			ttObj.tip.hide();
253			ttObj.hidden = true;
254			ttObj.shown = false;
255			return true;
256		},
257		
258		reset: function(){
259			var ttObj = this;
260			//ttObj.destroy();
261			if($.type(ttObj.tip) !== 'undefined' && $.contains(document, ttObj.tip[0])){
262				ttObj.tip.remove();
263			}
264			ttObj.create();
265			return true;
266		},
267		
268		create: function(){
269			var ttObj = this;
270			
271			if($.type(ttObj.tip) !== 'undefined' && $.contains(document, ttObj.tip[0])){
272				//tip already exists and we don't need to create a new one
273				return;
274			}
275			
276			ttObj.createTip();
277			ttObj.positionTip();
278			ttObj.styleTip();
279			ttObj.initClose();
280		},
281		
282		createTip: function(){
283			var ttObj = this;
284			
285			if(ttObj.settings.closable){
286				var $close_button = '<div class="gtooltip-close">&times;</div>';
287			}else{
288				var $close_button = '';	
289			}
290			
291			ttObj.tip = $('<div class="'+ttObj.settings.tipclass+'" tid="'+ttObj.settings.tid+'">'+$close_button+'<div class="gtooltip-content">'+'</div><div class="gtooltip-arrow-border gtooltip-arrow-border-'+ttObj.settings.position+'"></div><div class="gtooltip-arrow gtooltip-arrow-'+ttObj.settings.position+'"></div></div>');
292			ttObj.initContent();
293			ttObj.setContent(ttObj.content);
294		},
295		
296		positionTip: function(){
297			var ttObj = this;
298			
299			//calculate position
300			var $offset = $(ttObj.element).offset();
301			var $position = $(ttObj.element).position();
302			if($(ttObj.element).data('target')){
303				var $offset = $(ttObj.element).data('target').offset();
304				var $position = $(ttObj.element).data('target').position();
305			}
306			
307			if(ttObj.settings.append == 'after'){
308				$(ttObj.element).after(ttObj.tip);
309				ttObj.location = $position;
310			}else if(ttObj.settings.append == 'body'){
311				$('body').append(ttObj.tip);
312				ttObj.location = $offset;
313			}
314		},
315		
316		styleTip: function(){
317			var ttObj = this;
318			
319			//apply css
320			ttObj.tip.css(ttObj.settings.css);
321			var arrow_css = {};
322			arrow_css['border-'+ttObj.settings.position+'-color'] = ttObj.settings.css['background-color'];
323			ttObj.tip.find('.gtooltip-arrow').css(arrow_css);
324			var arrow_border_css = {};
325			arrow_border_css['border-'+ttObj.settings.position+'-color'] = ttObj.settings.css['border-color'];
326			ttObj.tip.find('.gtooltip-arrow-border').css(arrow_border_css);
327			
328			ttObj.tip.find('.gtooltip-arrow, .gtooltip-arrow-border').css('border-width', ttObj.settings.arrow_size + 'px');
329			
330			var border_width = parseInt(ttObj.settings.css['border-width']);
331			
332			if(ttObj.settings.position == 'top'){
333				var $top = ttObj.location.top - ttObj.tip.outerHeight() - ttObj.tip.find('.gtooltip-arrow').outerHeight() - ttObj.settings.spacing;
334				var $left = ttObj.location.left + $(ttObj.element).outerWidth()/2 - ttObj.tip.outerWidth()/2;
335				//var $bottom = $(window).height() - ttObj.location.top + ttObj.tip.find('.gtooltip-arrow').outerHeight() + tip.settings.spacing;
336				var $bottom = $(window).height() - $top - ttObj.tip.outerHeight(true);
337				
338				ttObj.tip.find('.gtooltip-arrow-border').css('left', ttObj.tip.outerWidth()/2 - ttObj.tip.find('.gtooltip-arrow-border').outerWidth()/2);
339				ttObj.tip.find('.gtooltip-arrow').css('left', ttObj.tip.outerWidth()/2 - ttObj.tip.find('.gtooltip-arrow').outerWidth()/2);
340				
341				ttObj.tip.find('.gtooltip-arrow, .gtooltip-arrow-border').css('border-bottom-width', '0px');
342				ttObj.tip.find('.gtooltip-arrow').css('bottom', -1 * (ttObj.settings.arrow_size) + 'px');
343				ttObj.tip.find('.gtooltip-arrow-border').css('bottom', -1 * (ttObj.settings.arrow_size + border_width + 1) + 'px');
344				ttObj.tip.find('.gtooltip-arrow-border').css('border-top-width', (ttObj.settings.arrow_size + 1) + 'px');
345			}else if(ttObj.settings.position == 'bottom'){
346				var $top = ttObj.location.top + $(ttObj.element).outerHeight() + ttObj.tip.find('.gtooltip-arrow').outerHeight() + ttObj.settings.spacing;
347				var $left = ttObj.location.left + $(ttObj.element).outerWidth()/2 - ttObj.tip.outerWidth()/2;
348				
349				ttObj.tip.find('.gtooltip-arrow-border').css('left', ttObj.tip.outerWidth()/2 - ttObj.tip.find('.gtooltip-arrow-border').outerWidth()/2);
350				ttObj.tip.find('.gtooltip-arrow').css('left', ttObj.tip.outerWidth()/2 - ttObj.tip.find('.gtooltip-arrow').outerWidth()/2);
351				
352				ttObj.tip.find('.gtooltip-arrow, .gtooltip-arrow-border').css('border-top-width', '0px');
353				ttObj.tip.find('.gtooltip-arrow').css('top', -1 * (ttObj.settings.arrow_size) + 'px');
354				ttObj.tip.find('.gtooltip-arrow-border').css('top', -1 * (ttObj.settings.arrow_size + border_width + 1) + 'px');
355				ttObj.tip.find('.gtooltip-arrow-border').css('border-bottom-width', (ttObj.settings.arrow_size + 1) + 'px');
356			}else if(ttObj.settings.position == 'right'){
357				var $top = ttObj.location.top + $(ttObj.element).outerHeight()/2 - ttObj.tip.outerHeight()/2;
358				var $left = ttObj.location.left + $(ttObj.element).outerWidth() + ttObj.tip.find('.gtooltip-arrow').outerWidth() + ttObj.settings.spacing;
359				
360				ttObj.tip.find('.gtooltip-arrow-border').css('top', ttObj.tip.outerHeight()/2 - ttObj.tip.find('.gtooltip-arrow-border').outerHeight()/2);
361				ttObj.tip.find('.gtooltip-arrow').css('top', ttObj.tip.outerHeight()/2 - ttObj.tip.find('.gtooltip-arrow').outerHeight()/2);
362				
363				ttObj.tip.find('.gtooltip-arrow, .gtooltip-arrow-border').css('border-left-width', '0px');
364				ttObj.tip.find('.gtooltip-arrow').css('left', -1 * (ttObj.settings.arrow_size) + 'px');
365				ttObj.tip.find('.gtooltip-arrow-border').css('left', -1 * (ttObj.settings.arrow_size + border_width + 1) + 'px');
366				ttObj.tip.find('.gtooltip-arrow-border').css('border-right-width', (ttObj.settings.arrow_size + 1) + 'px');
367			}else if(ttObj.settings.position == 'left'){
368				var $top = ttObj.location.top + $(ttObj.element).outerHeight()/2 - ttObj.tip.outerHeight()/2;
369				var $left = ttObj.location.left - ttObj.tip.outerWidth() - ttObj.tip.find('.gtooltip-arrow').outerWidth() - ttObj.settings.spacing;
370				
371				ttObj.tip.find('.gtooltip-arrow-border').css('top', ttObj.tip.outerHeight()/2 - ttObj.tip.find('.gtooltip-arrow-border').outerHeight()/2);
372				ttObj.tip.find('.gtooltip-arrow').css('top', ttObj.tip.outerHeight()/2 - ttObj.tip.find('.gtooltip-arrow').outerHeight()/2);
373				
374				ttObj.tip.find('.gtooltip-arrow, .gtooltip-arrow-border').css('border-right-width', '0px');
375				ttObj.tip.find('.gtooltip-arrow').css('right', -1 * (ttObj.settings.arrow_size) + 'px');
376				ttObj.tip.find('.gtooltip-arrow-border').css('right', -1 * (ttObj.settings.arrow_size + border_width + 1) + 'px');
377				ttObj.tip.find('.gtooltip-arrow-border').css('border-left-width', (ttObj.settings.arrow_size + 1) + 'px');
378			}
379			ttObj.tip.css('top', $top);
380			//set bottom css and unset top to account for any dynamic content changes
381			if(ttObj.settings.position == 'top' && ttObj.settings.append == 'body'){
382				ttObj.tip.css('bottom', $bottom);
383				ttObj.tip.css('top', '');
384			}
385			//ttObj.tip.css('left', $(ttObj.element).outerWidth()/2 - 30 - 10); //element width - ttObj arrow left shift - arrow's border width
386			ttObj.tip.css('left', $left);
387			ttObj.tip.hide();
388			
389			return true;
390		},
391	};
392}(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.