“mostbet Register Регистрация а Вход В Систему В Mostbet Online Букмекерская Контора Мостбет Mostbet Регистрация%2C Бонусы%2C вход На Официальный Сайт Content Приложение Мостбет Правила Регистрации В Mostbet Мобильная Версия а Приложения Профессиональная службе…
1xbet مصر شركة مراهنات مراهنات رياضية أونلاين تسجيل الدخول إلى 1xbet” برنامج المراهنات الرياضية تحميل التطبيق العميل Ma-1xbet Com Content سهولة استخدام موقع 1xbet عربي العاب سلوتس 1xbet عربي تحقق من قسيمتك وسجل…
такие Онлайн Казино 2024 ⭐топ Казино а Деньги От Casino Online лучшие Онлайн Казино Рейтинг Топ 10 для Игры На 2024 Год Content O Выборе Онлайн-казино Casinoin Рассматриваем Ассортимент Игр И Провайдеров Казино…
Today’s Online Matches View Sports Streams Live Sports Bets 1xbet ᐉ 1xbet Com 1xbet App 1xbet Cellular ᐉ Download The 1xbet Apk Google Android & Iphone ᐉ 1xsports Com Content What Usually Are…
Winline Делает Разницу! Букмекерская Контора Winline Онлайн Ставки На Спорт! Спортивные Ставки только Коэффициенты Онлайн Content где Безопасно Скачать Приложение Для Ставок на Спорт%3F Начните Играть%2C выполнить 3 Простых действовать “приложения Букмекерских Контор…
Ggbet Zakłady I Kasyno ⭐ Oficjalna Strona Ggbet I Logowanie “zakłady Online I Kasyno Oficjalna Strona Bukmachera Content Rodzaje Zakładów Ggbet Czy Bukmacher Ggbet Jest Legalny W Polsce? Opcje Wypłaty Jak Czytać Kursy…
Zgarnij Najlepsze Bonusy Bez Depozytu W Polsce T 2024 Verde Casino Kasyno On-line Recenzja, Opinie Ekspertow I Bonusy Content Oceny I Recenzje” Dlaczego Nale?a?oby Korzystać Z Witryn Kasyn Online, Aby Grać Na Prawdziwe…
“mostbet Portugal Pt Casino Revisão E Jogos De Azar Mostbet Casino Online Em Pt 2024 ️ Bónus & Revisão Content ☝️ Limites Importantes De Apostas Em Jogos 🛡️ Segurança E Proteção De Dados…
Verde Casino 25 Euro No Deposit Or 50 Free Rotates Promo Code “Licencioso Casino 50 Free Spins Befizetés Nélküli Bónusz 2024 Content 🎰 A Felelős Szerencsejáték Fontossága John Hunter And The Particular Book…
Casino Utan Svensk Licens & Spelpaus Casino Utan Svensk Licens » Bästa Bets Utan Spelpaus 2024 Content Vart Har Mulighed For Man Spela Utan Spelpaus? Är Det Lagligt Att Lyckas Spela På Ett…
Collaboration is essential but the dependence on others to complete a task can quickly become laborious, inefficient and frustrating. Results from each employee’s efforts can be garnered faster if they are equipped with…
If you are a content creator on YouTube, one of your main goals is likely to maximize watch hours on your channel. Watch hours play a crucial role in determining the success and…
In the digital age, where the power of social media is undeniable, businesses of all sizes are constantly seeking innovative ways to bolster their online presence. As the demand for social media marketing…
In today’s rapidly evolving digital landscape, businesses are increasingly turning to cloud computing to streamline their operations, reduce costs, and improve scalability. Cloud migration has become a pivotal step in this journey, enabling…
In this era of rapidly advancing technology, Android games have become a cornerstone of entertainment for individuals of all ages and backgrounds. With a diverse range of experiences, from action-packed adventures to brain-teasing…
Dealing with pests at home is like a never-ending saga that we all seem to be a part of. It’s one of those topics that can make anyone nod their head in agreement…
// tipsy, facebook style tooltips for jquery
// version 1.0.0a
// (c) 2008-2010 jason frame [
[email protected]]
// released under the MIT license
(function($) {
function maybeCall(thing, ctx) {
return (typeof thing == 'function') ? (thing.call(ctx)) : thing;
};
function isElementInDOM(ele) {
while (ele = ele.parentNode) {
if (ele == document) return true;
}
return false;
};
function Tipsy(element, options) {
this.$element = $(element);
this.options = options;
this.enabled = true;
this.fixTitle();
};
Tipsy.prototype = {
show: function() {
var title = this.getTitle();
if (title && this.enabled) {
var $tip = this.tip();
$tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
$tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
$tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body);
var pos = $.extend({}, this.$element.offset(), {
width: this.$element[0].offsetWidth,
height: this.$element[0].offsetHeight
});
var actualWidth = $tip[0].offsetWidth,
actualHeight = $tip[0].offsetHeight,
gravity = maybeCall(this.options.gravity, this.$element[0]);
var tp;
switch (gravity.charAt(0)) {
case 'n':
tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
break;
case 's':
tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};
break;
case 'e':
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset};
break;
case 'w':
tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};
break;
}
if (gravity.length == 2) {
if (gravity.charAt(1) == 'w') {
tp.left = pos.left + pos.width / 2 - 15;
} else {
tp.left = pos.left + pos.width / 2 - actualWidth + 15;
}
}
$tip.css(tp).addClass('tipsy-' + gravity);
$tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);
if (this.options.className) {
$tip.addClass(maybeCall(this.options.className, this.$element[0]));
}
if (this.options.fade) {
$tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity});
} else {
$tip.css({visibility: 'visible', opacity: this.options.opacity});
}
}
},
hide: function() {
if (this.options.fade) {
this.tip().stop().fadeOut(function() { $(this).remove(); });
} else {
this.tip().remove();
}
},
fixTitle: function() {
var $e = this.$element;
if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {
$e.attr('original-title', $e.attr('title') || '').removeAttr('title');
}
},
getTitle: function() {
var title, $e = this.$element, o = this.options;
this.fixTitle();
var title, o = this.options;
if (typeof o.title == 'string') {
title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
} else if (typeof o.title == 'function') {
title = o.title.call($e[0]);
}
title = ('' + title).replace(/(^\s*|\s*$)/, "");
return title || o.fallback;
},
tip: function() {
if (!this.$tip) {
this.$tip = $('
').html('
');
this.$tip.data('tipsy-pointee', this.$element[0]);
}
return this.$tip;
},
validate: function() {
if (!this.$element[0].parentNode) {
this.hide();
this.$element = null;
this.options = null;
}
},
enable: function() { this.enabled = true; },
disable: function() { this.enabled = false; },
toggleEnabled: function() { this.enabled = !this.enabled; }
};
$.fn.tipsy = function(options) {
if (options === true) {
return this.data('tipsy');
} else if (typeof options == 'string') {
var tipsy = this.data('tipsy');
if (tipsy) tipsy[options]();
return this;
}
options = $.extend({}, $.fn.tipsy.defaults, options);
function get(ele) {
var tipsy = $.data(ele, 'tipsy');
if (!tipsy) {
tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
$.data(ele, 'tipsy', tipsy);
}
return tipsy;
}
function enter() {
var tipsy = get(this);
tipsy.hoverState = 'in';
if (options.delayIn == 0) {
tipsy.show();
} else {
tipsy.fixTitle();
setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);
}
};
function leave() {
var tipsy = get(this);
tipsy.hoverState = 'out';
if (options.delayOut == 0) {
tipsy.hide();
} else {
setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);
}
};
if (!options.live) this.each(function() { get(this); });
if (options.trigger != 'manual') {
var binder = options.live ? 'live' : 'bind',
eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
this[binder](eventIn, enter)[binder](eventOut, leave);
}
return this;
};
$.fn.tipsy.defaults = {
className: null,
delayIn: 0,
delayOut: 0,
fade: false,
fallback: '',
gravity: 'n',
html: false,
live: false,
offset: 0,
opacity: 0.8,
title: 'title',
trigger: 'hover'
};
$.fn.tipsy.revalidate = function() {
$('.tipsy').each(function() {
var pointee = $.data(this, 'tipsy-pointee');
if (!pointee || !isElementInDOM(pointee)) {
$(this).remove();
}
});
};
// Overwrite this method to provide options on a per-element basis.
// For example, you could store the gravity in a 'tipsy-gravity' attribute:
// return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
// (remember - do not modify 'options' in place!)
$.fn.tipsy.elementOptions = function(ele, options) {
return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
};
$.fn.tipsy.autoNS = function() {
return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
};
$.fn.tipsy.autoWE = function() {
return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
};
/**
* yields a closure of the supplied parameters, producing a function that takes
* no arguments and is suitable for use as an autogravity function like so:
*
* @param margin (int) - distance from the viewable region edge that an
* element should be before setting its tooltip's gravity to be away
* from that edge.
* @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer
* if there are no viewable region edges effecting the tooltip's
* gravity. It will try to vary from this minimally, for example,
* if 'sw' is preferred and an element is near the right viewable
* region edge, but not the top edge, it will set the gravity for
* that element's tooltip to be 'se', preserving the southern
* component.
*/
$.fn.tipsy.autoBounds = function(margin, prefer) {
return function() {
var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)},
boundTop = $(document).scrollTop() + margin,
boundLeft = $(document).scrollLeft() + margin,
$this = $(this);
if ($this.offset().top < boundTop) dir.ns = 'n';
if ($this.offset().left < boundLeft) dir.ew = 'w';
if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';
if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';
return dir.ns + (dir.ew ? dir.ew : '');
}
};
})(jQuery);