summaryrefslogtreecommitdiff
path: root/views/js/jquery-cluetip-master
diff options
context:
space:
mode:
authorDaniel Schmitzer <noreply@maennchen1.de>2016-01-14 14:55:36 +0000
committerDaniel Schmitzer <noreply@maennchen1.de>2016-01-14 14:55:36 +0000
commitad405c7045c6e242080ec9d3ce4c9e586b517c4f (patch)
treeb41905f4d27f3eaaabd5bad3a39f8d3873540b46 /views/js/jquery-cluetip-master
- Testweise 4
git-svn-id: https://[internal]/wordpress/plugins/wpsg4@5261 0d5edaf7-2b12-4e95-93f4-047927463d4b
Diffstat (limited to 'views/js/jquery-cluetip-master')
-rw-r--r--views/js/jquery-cluetip-master/.gitignore2
-rw-r--r--views/js/jquery-cluetip-master/images/darrowdown.gifbin0 -> 69 bytes
-rw-r--r--views/js/jquery-cluetip-master/images/darrowleft.gifbin0 -> 76 bytes
-rw-r--r--views/js/jquery-cluetip-master/images/darrowright.gifbin0 -> 77 bytes
-rw-r--r--views/js/jquery-cluetip-master/images/darrowup.gifbin0 -> 69 bytes
-rw-r--r--views/js/jquery-cluetip-master/jquery.cluetip.css241
-rw-r--r--views/js/jquery-cluetip-master/jquery.cluetip.js880
-rw-r--r--views/js/jquery-cluetip-master/jquery.cluetip.min.js7
8 files changed, 1130 insertions, 0 deletions
diff --git a/views/js/jquery-cluetip-master/.gitignore b/views/js/jquery-cluetip-master/.gitignore
new file mode 100644
index 0000000..aa6c4c9
--- /dev/null
+++ b/views/js/jquery-cluetip-master/.gitignore
@@ -0,0 +1,2 @@
+.DS_Store
+demo-more* \ No newline at end of file
diff --git a/views/js/jquery-cluetip-master/images/darrowdown.gif b/views/js/jquery-cluetip-master/images/darrowdown.gif
new file mode 100644
index 0000000..e138d9b
--- /dev/null
+++ b/views/js/jquery-cluetip-master/images/darrowdown.gif
Binary files differ
diff --git a/views/js/jquery-cluetip-master/images/darrowleft.gif b/views/js/jquery-cluetip-master/images/darrowleft.gif
new file mode 100644
index 0000000..e22d11c
--- /dev/null
+++ b/views/js/jquery-cluetip-master/images/darrowleft.gif
Binary files differ
diff --git a/views/js/jquery-cluetip-master/images/darrowright.gif b/views/js/jquery-cluetip-master/images/darrowright.gif
new file mode 100644
index 0000000..d36d7e4
--- /dev/null
+++ b/views/js/jquery-cluetip-master/images/darrowright.gif
Binary files differ
diff --git a/views/js/jquery-cluetip-master/images/darrowup.gif b/views/js/jquery-cluetip-master/images/darrowup.gif
new file mode 100644
index 0000000..fd74057
--- /dev/null
+++ b/views/js/jquery-cluetip-master/images/darrowup.gif
Binary files differ
diff --git a/views/js/jquery-cluetip-master/jquery.cluetip.css b/views/js/jquery-cluetip-master/jquery.cluetip.css
new file mode 100644
index 0000000..12209d1
--- /dev/null
+++ b/views/js/jquery-cluetip-master/jquery.cluetip.css
@@ -0,0 +1,241 @@
+/* global */
+div.ui-cluetip {
+ font-size: 1em;
+}
+.ui-cluetip-header,
+.ui-cluetip-content {
+ padding: 12px;
+}
+.ui-cluetip-header {
+ font-size: 1em;
+ margin: 0;
+ overflow: hidden;
+}
+
+.cluetip-title .cluetip-close {
+ float: right;
+ position: relative;
+}
+.cluetip-close img {
+ border: 0;
+}
+
+#cluetip-waitimage {
+ width: 43px;
+ height: 11px;
+ position: absolute;
+ background-image: url(../../gfx/ajax-loader.gif);
+ background-repeat:no-repeat;
+ background-position:50% 50%;
+}
+.cluetip-arrows {
+ display: none;
+ position: absolute;
+ top: 0;
+ left: -11px;
+ width: 11px;
+ height: 22px;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+ border-width: 0;
+}
+.cluetip-extra {
+ display: none;
+}
+
+/***************************************
+ =cluetipClass: 'default'
+-------------------------------------- */
+
+.cluetip-default,
+.cluetip-default .cluetip-outer {
+ background-color: #d9d9c2;
+}
+.cluetip-default .ui-cluetip-header {
+ background-color: #87876a;
+}
+
+
+/*
+.cluetip-default #cluetip-outer {
+ position: relative;
+ margin: 0;
+ background-color: #d9d9c2;
+}
+.cluetip-default h3#cluetip-title {
+ margin: 0 0 5px;
+ padding: 8px 10px 4px;
+ font-size: 1.1em;
+ font-weight: normal;
+ background-color: #87876a;
+ color: #fff;
+}
+.cluetip-default #cluetip-title a {
+ color: #d9d9c2;
+ font-size: 0.95em;
+}
+.cluetip-default #cluetip-inner {
+ padding: 10px;
+}
+.cluetip-default div#cluetip-close {
+ text-align: right;
+ margin: 0 5px 5px;
+ color: #900;
+}
+*/
+/* default arrows */
+div.cluetip-default .cluetip-arrows {
+ border-width: 0;
+ background: transparent none;
+}
+div.clue-right-default .cluetip-arrows {
+ background-image: url(images/darrowleft.gif);
+}
+div.clue-left-default .cluetip-arrows {
+ background-image: url(images/darrowright.gif);
+ left: 100%;
+ margin-right: -11px;
+}
+div.clue-top-default .cluetip-arrows {
+ background-image: url(images/darrowdown.gif);
+ top: 100%;
+ left: 50%;
+ margin-left: -11px;
+ width: 22px;
+ height: 11px;
+}
+div.clue-bottom-default .cluetip-arrows {
+ background-image: url(images/darrowup.gif);
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ width: 22px;
+ height: 11px;
+}
+
+/***************************************
+ =cluetipClass: 'jtip'
+-------------------------------------- */
+.cluetip-jtip {
+ background-color: #fff;
+}
+.cluetip-jtip .cluetip-outer {
+ border: 2px solid #ccc;
+ position: relative;
+ /*background-color: #fff;*/
+}
+
+.cluetip-jtip .cluetip-inner {
+ padding: 5px;
+ display: inline-block;
+}
+.cluetip-jtip div.cluetip-close {
+ text-align: right;
+ margin: 0 5px 0;
+ color: #900;
+}
+
+.cluetip-jtip .ui-cluetip-header {
+ background-color: #ccc;
+ padding: 6px;
+/* margin-bottom: 1em;*/
+}
+
+/* jtip arrows */
+div.cluetip-jtip .cluetip-arrows {
+ border-width: 0;
+ background: transparent none;
+}
+div.clue-right-jtip .cluetip-arrows {
+ background-image: url(images/arrowleft.gif);
+}
+div.clue-left-jtip .cluetip-arrows {
+ background-image: url(images/arrowright.gif);
+ left: 100%;
+ margin-right: -11px;
+}
+div.clue-top-jtip .cluetip-arrows {
+ background-image: url(images/arrowdown.gif);
+ top: 100%;
+ left: 50%;
+ width: 22px;
+ height: 11px;
+ margin-left: -11px;
+}
+div.clue-bottom-jtip .cluetip-arrows {
+ background-image: url(images/arrowup.gif);
+ top: -11px;
+ left: 50%;
+ width: 22px;
+ height: 11px;
+ margin-left: -11px;
+}
+
+/***************************************
+ =cluetipClass: 'rounded'
+-------------------------------------- */
+.cluetip-rounded {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+}
+
+.cluetip-rounded .cluetip-outer {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ background-color: #fff;
+}
+
+.cluetip-rounded .cluetip-arrows {
+ border-color: #ccc;
+}
+
+/* need to be more specific here to override ThemeRoller defaults */
+div.cluetip-rounded .cluetip-arrows {
+ font-size: 0;
+ line-height: 0%;
+ width: 0;
+ height: 0;
+ border-style: solid;
+ background: transparent none;
+}
+div.clue-right-rounded .cluetip-arrows {
+ border-width: 11px 11px 11px 0;
+ border-top-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+}
+div.clue-left-rounded .cluetip-arrows {
+ left: 100%;
+ margin-right: -11px;
+ border-width: 11px 0 11px 11px;
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+
+}
+div.clue-top-rounded .cluetip-arrows {
+ top: 100%;
+ left: 50%;
+ border-width: 11px 11px 0 11px;
+ border-right-color: transparent;
+ border-bottom-color: transparent;
+ border-left-color: transparent;
+}
+.clue-bottom-rounded .cluetip-arrows {
+ top: -11px;
+ left: 50%;
+ border-width: 0 11px 11px 11px;
+ border-top-color: transparent;
+ border-right-color: transparent;
+ border-left-color: transparent;
+
+}
+/* stupid IE6 HasLayout hack */
+.cluetip-rounded .cluetip-title,
+.cluetip-rounded .cluetip-inner {
+ zoom: 1;
+}
diff --git a/views/js/jquery-cluetip-master/jquery.cluetip.js b/views/js/jquery-cluetip-master/jquery.cluetip.js
new file mode 100644
index 0000000..35808df
--- /dev/null
+++ b/views/js/jquery-cluetip-master/jquery.cluetip.js
@@ -0,0 +1,880 @@
+/*!
+ * clueTip - v1.2.9 - 2013-06-02
+ * http://plugins.learningjquery.com/cluetip/
+ * Copyright (c) 2013 Karl Swedberg
+ * Licensed MIT (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+(function($) {
+
+ $.cluetip = {
+ version: '1.2.9',
+
+ // the HTML that will be used for the tooltip
+ template: ['<div>',
+ '<div class="cluetip-outer">',
+ '<h3 class="cluetip-title ui-widget-header ui-cluetip-header"></h3>',
+ '<div class="cluetip-inner ui-widget-content ui-cluetip-content"></div>',
+ '</div>',
+ '<div class="cluetip-extra"></div>',
+ '</div>'].join(''),
+
+ /* clueTip setup
+ * the setup options are applied each time .cluetip() is called,
+ * BUT only if <div id="cluetip"> is not already in the document
+ */
+ setup: {
+ // method to be used for inserting the clueTip into the DOM.
+ // Permitted values are 'appendTo', 'prependTo', 'insertBefore', and 'insertAfter'
+ insertionType: 'appendTo',
+ // element in the DOM the plugin will reference when inserting the clueTip.
+ insertionElement: 'body'
+ },
+
+ /*
+ * clueTip options
+ *
+ * each one can be explicitly overridden by changing its value.
+ * for example: $.cluetip.defaults.width = 200;
+ * or: $.fn.cluetip.defaults.width = 200; // for compatibility with previous clueTip versions
+ * would change the default width for all clueTips to 200.
+ *
+ * each one can also be overridden by passing an options map to the cluetip method.
+ * for example: $('a.example').cluetip({width: 200});
+ * would change the default width to 200 for clueTips invoked by a link with class of "example"
+ *
+ */
+ defaults: {
+ multiple: false, // Allow a new tooltip to be created for each .cluetip() call
+ width: 275, // The width of the clueTip
+ height: 'auto', // The height of the clueTip
+ cluezIndex: 97, // Sets the z-index style property of the clueTip
+ positionBy: 'auto', // Sets the type of positioning: 'auto', 'mouse','bottomTop', 'topBottom', fixed'
+ topOffset: 15, // Number of px to offset clueTip from top of invoking element
+ leftOffset: 15, // Number of px to offset clueTip from left of invoking element
+ snapToEdge: false, // For bottomTop and topBottom, snap to the top or bottom of the element.
+ local: false, // Whether to use content from the same page for the clueTip's body
+ localPrefix: null, // string to be prepended to the tip attribute if local is true
+ localIdSuffix: null, // string to be appended to the cluetip content element's id if local is true
+ hideLocal: true, // If local option is set to true, this determines whether local content
+ // to be shown in clueTip should be hidden at its original location
+ attribute: 'rel', // the attribute to be used for fetching the clueTip's body content
+ titleAttribute: 'title', // the attribute to be used for fetching the clueTip's title
+ splitTitle: '', // A character used to split the title attribute into the clueTip title and divs
+ // within the clueTip body. more info below [6]
+ escapeTitle: false, // whether to html escape the title attribute
+ showTitle: true, // show title bar of the clueTip, even if title attribute not set
+ cluetipClass: 'default',// class added to outermost clueTip div in the form of 'cluetip-' + clueTipClass.
+ hoverClass: '', // class applied to the invoking element onmouseover and removed onmouseout
+ waitImage: true, // whether to show a "loading" img, which is set in jquery.cluetip.css
+ cursor: 'help',
+ arrows: false, // if true, displays arrow on appropriate side of clueTip
+ dropShadow: true, // set to false if you don't want the drop-shadow effect on the clueTip
+ dropShadowSteps: 6, // adjusts the size of the drop shadow
+ sticky: false, // keep visible until manually closed
+ mouseOutClose: false, // close when clueTip is moused out: false, 'cluetip', 'link', 'both'
+ delayedClose: 50, // close clueTip on a timed delay
+ activation: 'hover', // set to 'click' to force user to click to show clueTip
+ // set to 'focus' to show on focus of a form element and hide on blur
+ clickThrough: true, // if true, and activation is not 'click', then clicking on link will take user to the link's href,
+ // even if href and tipAttribute are equal
+ tracking: false, // if true, clueTip will track mouse movement (experimental)
+ closePosition: 'top', // location of close text for sticky cluetips; can be 'top', 'bottom', 'title' or 'none'
+ closeText: 'Close', // text (or HTML) to to be clicked to close sticky clueTips
+ truncate: 0, // number of characters to truncate clueTip's contents. if 0, no truncation occurs
+
+ // effect and speed for opening clueTips
+ fx: {
+ open: 'show', // can be 'show' or 'slideDown' or 'fadeIn'
+ openSpeed: ''
+ },
+
+ // settings for when hoverIntent plugin is used
+ hoverIntent: {
+ sensitivity: 3,
+ interval: 50,
+ timeout: 0
+ },
+
+ // short-circuit function to run just before clueTip is shown.
+ onActivate: function(e) {return true;},
+ // function to run just after clueTip is shown.
+ onShow: function(ct, ci){},
+ // function to run just after clueTip is hidden.
+ onHide: function(ct, ci){},
+ // whether to cache results of ajax request to avoid unnecessary hits to server
+ ajaxCache: true,
+
+ // process data retrieved via xhr before it's displayed
+ ajaxProcess: function(data) {
+ data = data.replace(/<(script|style|title)[^<]+<\/(script|style|title)>/gm, '').replace(/<(link|meta)[^>]+>/g,'');
+ return data;
+ },
+
+ // can pass in standard $.ajax() parameters. Callback functions, such as beforeSend,
+ // will be queued first within the default callbacks.
+ // The only exception is error, which overrides the default
+ ajaxSettings: {
+ // error: function(ct, ci) { /* override default error callback */ },
+ // beforeSend: function(ct, ci) { /* called first within default beforeSend callback */ },
+ dataType: 'html'
+ },
+ debug: false
+
+ }
+ };
+ var $cluetipWait,
+ standardClasses = 'cluetip ui-widget ui-widget-content ui-cluetip',
+ caches = {},
+ counter = 0,
+ imgCount = 0;
+
+ // use $.fn.prop() if available (jQuery 1.6+); otherwise, $.fn.attr()
+ $.fn.attrProp = $.fn.prop || $.fn.attr;
+
+ // .cluetip() method
+ $.fn.cluetip = function(js, options) {
+ var $cluetip, $cluetipInner, $cluetipOuter, $cluetipTitle, $cluetipArrows, $dropShadow;
+ if (typeof js == 'object') {
+ options = js;
+ js = null;
+ }
+ if (js == 'destroy') {
+ this.each(function(index) {
+ var $l = $(this),
+ data = $l.data('cluetip');
+ if ( data ) {
+ $(data.selector).remove();
+ $.removeData(this, 'title');
+ $.removeData(this, 'cluetip');
+ }
+ if (data.title) {
+ $l.attrProp('title', data.title);
+ }
+ $l.unbind('.cluetip').unbind('cluetipMoc');
+ });
+ if ( !$('[id^="cluetip"]').length ) {
+ $(document).unbind('.cluetip');
+ }
+ return this;
+ }
+
+ // merge per-call options with defaults
+ options = $.extend(true, {}, $.cluetip.defaults, options || {});
+
+ /** =create cluetip divs **/
+ counter++;
+ var cluezIndex,
+ cluetipId = $.cluetip.backCompat || !options.multiple ? 'cluetip' : 'cluetip-' + counter,
+ cluetipSelector = '#' + cluetipId,
+ prefix = $.cluetip.backCompat ? '#' : '.',
+ insertionType = $.cluetip.setup.insertionType,
+ insertionElement = $.cluetip.setup.insertionElement || 'body';
+
+ insertionType = (/appendTo|prependTo|insertBefore|insertAfter/).test(insertionType) ? insertionType : 'appendTo';
+ $cluetip = $(cluetipSelector);
+ if (!$cluetip.length) {
+
+ $cluetip = $($.cluetip.template)
+ [insertionType](insertionElement)
+ .attr('id', cluetipId)
+ .css({position: 'absolute', display: 'none'});
+
+ cluezIndex = +options.cluezIndex;
+ $cluetipOuter = $cluetip.find(prefix + 'cluetip-outer').css({position: 'relative', zIndex: cluezIndex});
+ $cluetipInner = $cluetip.find(prefix + 'cluetip-inner');
+ $cluetipTitle = $cluetip.find(prefix + 'cluetip-title');
+
+ $cluetip.bind('mouseenter mouseleave', function(event) {
+ $(this).data('entered', event.type === 'mouseenter');
+ });
+ }
+
+ $cluetipWait = $('#cluetip-waitimage');
+ if (!$cluetipWait.length && options.waitImage) {
+ $cluetipWait = $('<div></div>').attr('id', 'cluetip-waitimage').css({position: 'absolute'});
+ $cluetipWait.insertBefore($cluetip).hide();
+ }
+
+
+ var cluetipPadding = (parseInt($cluetip.css('paddingLeft'), 10) || 0) + (parseInt($cluetip.css('paddingRight'), 10) || 0);
+
+
+ this.each(function(index) {
+ var link = this,
+ $link = $(this),
+ // support metadata plugin (v1.0 and 2.0)
+ opts = $.extend(true, {}, options, $.metadata ? $link.metadata() : $.meta ? $link.data() : $link.data('cluetip') || {}),
+ // start out with no contents (for ajax activation)
+ cluetipContents = false,
+ isActive = false,
+ closeOnDelay = null,
+ tipAttribute = opts[opts.attribute] ||
+ ( opts.attribute == 'href' ? $link.attr(opts.attribute) : $link.attrProp(opts.attribute) || $link.attr(opts.attribute) ),
+ ctClass = opts.cluetipClass;
+
+ cluezIndex = +opts.cluezIndex;
+ $link.data('cluetip', {title: link.title, zIndex: cluezIndex, selector: cluetipSelector, cursor: link.style.cursor || ''});
+
+ if (opts.arrows && !$cluetip.find('.cluetip-arrows').length) {
+ $cluetip.append('<div class="cluetip-arrows ui-state-default"></div>');
+ }
+
+ if (!tipAttribute && !opts.splitTitle && !js) {
+ return true;
+ }
+ // if hideLocal is set to true, on DOM ready hide the local content that will be displayed in the clueTip
+ if (opts.local && opts.localPrefix) {tipAttribute = opts.localPrefix + tipAttribute;}
+ if (opts.local && opts.hideLocal && tipAttribute) { $(tipAttribute + ':first').hide(); }
+
+ var tOffset = parseInt(opts.topOffset, 10), lOffset = parseInt(opts.leftOffset, 10);
+ // vertical measurement variables
+ var tipHeight, wHeight,
+ defHeight = isNaN(parseInt(opts.height, 10)) ? 'auto' : (/\D/g).test(opts.height) ? opts.height : opts.height + 'px';
+ var sTop, linkTop, linkBottom, posY, tipY, mouseY, baseline;
+ // horizontal measurement variables
+ var tipInnerWidth = parseInt(opts.width, 10) || 275,
+ tipWidth = tipInnerWidth + cluetipPadding + opts.dropShadowSteps,
+ linkWidth = this.offsetWidth,
+ linkLeft, posX, tipX, mouseX, winWidth;
+
+ // parse the title
+ var tipParts;
+ var tipTitle = (opts.attribute != 'title') ? $link.attr(opts.titleAttribute) || '' : '';
+ if (opts.splitTitle) {
+ tipParts = tipTitle.split(opts.splitTitle);
+ tipTitle = opts.showTitle || tipParts[0] === '' ? tipParts.shift() : '';
+ }
+ if (opts.escapeTitle) {
+ tipTitle = tipTitle.replace(/&/g,'&amp;').replace(/>/g,'&gt;').replace(/</g,'&lt;');
+ }
+
+ var localContent;
+ function returnFalse() { return false; }
+
+ // Keep track of mouse entered state on link
+ $link.bind('mouseenter mouseleave', function(event) {
+ var data = $link.data('cluetip');
+ data.entered = event.type === 'entered';
+ $link.data('cluetip', data);
+ });
+
+/***************************************
+* ACTIVATION
+****************************************/
+
+//activate clueTip
+ var activate = function(event) {
+ var pY, ajaxMergedSettings, cacheKey,
+ continueOn = opts.onActivate.call(link, event);
+
+ if (continueOn === false) {
+ return false;
+ }
+
+ isActive = true;
+
+ // activate function may get called after an initialization of a
+ // different target so need to re-get the Correct Cluetip object here
+ $cluetip = $(cluetipSelector).css({position: 'absolute'});
+ $cluetipOuter = $cluetip.find(prefix + 'cluetip-outer');
+ $cluetipInner = $cluetip.find(prefix + 'cluetip-inner');
+ $cluetipTitle = $cluetip.find(prefix + 'cluetip-title');
+ $cluetipArrows = $cluetip.find(prefix + 'cluetip-arrows');
+ $cluetip.removeClass().css({width: tipInnerWidth});
+ if (tipAttribute == $link.attr('href')) {
+ $link.css('cursor', opts.cursor);
+ }
+ if (opts.hoverClass) {
+ $link.addClass(opts.hoverClass);
+ }
+ linkTop = posY = $link.offset().top;
+ linkBottom = linkTop + $link.innerHeight();
+ linkLeft = $link.offset().left;
+ if ( $(insertionElement).css('position') === 'relative' ) {
+ linkLeft -= $(insertionElement)[0].getBoundingClientRect().left;
+ }
+
+ // FIX: (bug 4412)
+ linkWidth = $link.innerWidth();
+ if ( event.type == focus ) {
+ // in focus event, no mouse position is available; this is needed with bottomTop:
+ mouseX = linkLeft + ( linkWidth / 2 ) + lOffset;
+ $cluetip.css({left: posX});
+ mouseY = posY + tOffset;
+ } else {
+ mouseX = event.pageX;
+ mouseY = event.pageY;
+ }
+ //END OF FIX
+
+ if (link.tagName.toLowerCase() != 'area') {
+ sTop = $(document).scrollTop();
+ winWidth = $(window).width();
+ }
+// position clueTip horizontally
+ if (opts.positionBy == 'fixed') {
+ posX = linkWidth + linkLeft + lOffset;
+ $cluetip.css({left: posX});
+ } else {
+ posX = (linkWidth > linkLeft && linkLeft > tipWidth) ||
+ linkLeft + linkWidth + tipWidth + lOffset > winWidth ?
+ linkLeft - tipWidth - lOffset :
+ linkWidth + linkLeft + lOffset;
+ if (link.tagName.toLowerCase() == 'area' || opts.positionBy == 'mouse' || linkWidth + tipWidth > winWidth) { // position by mouse
+ if (mouseX + 20 + tipWidth > winWidth) {
+ $cluetip.addClass('cluetip-' + ctClass);
+ posX = (mouseX - tipWidth - lOffset) >= 0 ? mouseX - tipWidth - lOffset - parseInt($cluetip.css('marginLeft'),10) + parseInt($cluetipInner.css('marginRight'),10) : mouseX - (tipWidth/2);
+ } else {
+ posX = mouseX + lOffset;
+ }
+ }
+ pY = posX < 0 ? event.pageY + tOffset : event.pageY;
+ if (posX < 0 || opts.positionBy == 'bottomTop' || opts.positionBy == 'topBottom') {
+ posX = (mouseX + (tipWidth/2) > winWidth) ? winWidth/2 - tipWidth/2 : Math.max(mouseX - (tipWidth/2),0);
+ }
+ }
+
+ $cluetipArrows.css({zIndex: $link.data('cluetip').zIndex+1});
+ $cluetip.css({
+ left: posX,
+ zIndex: $link.data('cluetip').zIndex
+ });
+ wHeight = $(window).height();
+
+/***************************************
+* load a string from cluetip method's first argument
+***************************************/
+ if (js) {
+ if (typeof js == 'function') {
+ js = js.call(link);
+ }
+ $cluetipInner.html(js);
+ cluetipShow(pY);
+ }
+/***************************************
+* load the title attribute only (or user-selected attribute).
+* clueTip title is the string before the first delimiter
+* subsequent delimiters place clueTip body text on separate lines
+***************************************/
+
+ else if (tipParts) {
+ var tpl = tipParts.length;
+ $cluetipInner.html(tpl ? tipParts[0] : '');
+ if (tpl > 1) {
+ for (var i=1; i < tpl; i++){
+ $cluetipInner.append('<div class="split-body">' + tipParts[i] + '</div>');
+ }
+ }
+ cluetipShow(pY);
+ }
+/***************************************
+* load external file via ajax
+***************************************/
+
+ else if ( !opts.local && tipAttribute.indexOf('#') !== 0 ) {
+ if (/\.(jpe?g|tiff?|gif|png)(?:\?.*)?$/i.test(tipAttribute)) {
+ $cluetipInner.html('<img src="' + tipAttribute + '" alt="' + tipTitle + '" />');
+ cluetipShow(pY);
+ } else {
+ var optionBeforeSend = opts.ajaxSettings.beforeSend,
+ optionError = opts.ajaxSettings.error,
+ optionSuccess = opts.ajaxSettings.success,
+ optionComplete = opts.ajaxSettings.complete;
+
+ cacheKey = getCacheKey(tipAttribute, opts.ajaxSettings.data);
+
+ var ajaxSettings = {
+ cache: opts.ajaxCache, // force requested page not to be cached by browser
+ url: tipAttribute,
+ beforeSend: function(xhr, settings) {
+ if (optionBeforeSend) {optionBeforeSend.call(link, xhr, $cluetip, $cluetipInner, settings);}
+ $cluetipOuter.children().empty();
+ if (opts.waitImage) {
+ $cluetipWait
+ .css({top: mouseY+20, left: mouseX+20, zIndex: $link.data('cluetip').zIndex-1})
+ .show();
+ }
+ },
+ error: function(xhr, textStatus) {
+ if ( options.ajaxCache && !caches[cacheKey] ) {
+ caches[cacheKey] = {status: 'error', textStatus: textStatus, xhr: xhr};
+ }
+
+ if (isActive) {
+ if (optionError) {
+ optionError.call(link, xhr, textStatus, $cluetip, $cluetipInner);
+ } else {
+ $cluetipInner.html('<i>sorry, the contents could not be loaded</i>');
+ }
+ }
+ },
+ success: function(data, textStatus, xhr) {
+ if ( options.ajaxCache && !caches[cacheKey] ) {
+ caches[cacheKey] = {status: 'success', data: data, textStatus: textStatus, xhr: xhr};
+ }
+
+ cluetipContents = opts.ajaxProcess.call(link, data);
+
+ // allow for changing the title based on data returned by xhr
+ if ( typeof cluetipContents == 'object' && cluetipContents !== null ) {
+ tipTitle = cluetipContents.title;
+ cluetipContents = cluetipContents.content;
+ }
+
+ if (isActive) {
+ if (optionSuccess) {
+ optionSuccess.call(link, data, textStatus, $cluetip, $cluetipInner);
+ }
+ $cluetipInner.html(cluetipContents);
+
+ }
+ },
+ complete: function(xhr, textStatus) {
+ if (optionComplete) {
+ optionComplete.call(link, xhr, textStatus, $cluetip, $cluetipInner);
+ }
+ var imgs = $cluetipInner[0].getElementsByTagName('img');
+ imgCount = imgs.length;
+ for (var i=0, l = imgs.length; i < l; i++) {
+ if (imgs[i].complete) {
+ imgCount--;
+ }
+ }
+ if (imgCount) {
+ $(imgs).bind('load.ct error.ct', function() {
+ imgCount--;
+ if (imgCount === 0) {
+ $cluetipWait.hide();
+ $(imgs).unbind('.ct');
+ if (isActive) { cluetipShow(pY); }
+ }
+ });
+ } else {
+ $cluetipWait.hide();
+ if (isActive) { cluetipShow(pY); }
+ }
+ }
+ };
+
+ ajaxMergedSettings = $.extend(true, {}, opts.ajaxSettings, ajaxSettings);
+
+ if ( caches[cacheKey] ) {
+ cachedAjax( caches[cacheKey], ajaxMergedSettings );
+ } else {
+ $.ajax(ajaxMergedSettings);
+ }
+ }
+ }
+/***************************************
+* load an element from the same page
+***************************************/
+ else if (opts.local) {
+ var $localContent = $(tipAttribute + (/^#\S+$/.test(tipAttribute) ? '' : ':eq(' + index + ')')).clone(true).show();
+ if (opts.localIdSuffix) {
+ $localContent.attr('id', $localContent[0].id + opts.localIdSuffix);
+ }
+ $cluetipInner.html($localContent);
+ cluetipShow(pY);
+ }
+ };
+
+// get dimensions and options for cluetip and prepare it to be shown
+ var cluetipShow = function(bpY) {
+ var $closeLink, dynamicClasses, heightDiff,
+ titleHTML = tipTitle || opts.showTitle && '&nbsp;',
+ bgY = '', direction = '', insufficientX = false;
+ var stickyClose = {
+ bottom: function($cLink) {
+ $cLink.appendTo($cluetipInner);
+ },
+ top: function($cLink) {
+ $cLink.prependTo($cluetipInner);
+ },
+ title: function($cLink) {
+ $cLink.prependTo($cluetipTitle);
+ }
+ };
+
+ $cluetip.addClass('cluetip-' + ctClass);
+ if (opts.truncate) {
+ var $truncloaded = $cluetipInner.text().slice(0,opts.truncate) + '...';
+ $cluetipInner.html($truncloaded);
+ }
+
+ if (titleHTML) {
+ $cluetipTitle.show().html(titleHTML);
+ } else {
+ $cluetipTitle.hide();
+ }
+
+ if (opts.sticky) {
+ if (stickyClose[opts.closePosition]) {
+ $closeLink = $('<div class="cluetip-close"><a href="#">' + opts.closeText + '</a></div>');
+ stickyClose[opts.closePosition]( $closeLink );
+ $closeLink.bind('click.cluetip', function() {
+ cluetipClose();
+ return false;
+ });
+ }
+ if (opts.mouseOutClose) {
+ $link.unbind('mouseleave.cluetipMoc');
+ $cluetip.unbind('mouseleave.cluetipMoc');
+ if (opts.mouseOutClose == 'both' || opts.mouseOutClose == 'cluetip' || opts.mouseOutClose === true) { // true implies 'cluetip' for backwards compatability
+ $cluetip.bind('mouseleave.cluetipMoc', mouseOutClose);
+ }
+ if (opts.mouseOutClose == 'both' || opts.mouseOutClose == 'link') {
+ $link.bind('mouseleave.cluetipMoc', mouseOutClose);
+ }
+ }
+ }
+
+// now that content is loaded, finish the positioning
+ $cluetipOuter.css({zIndex: $link.data('cluetip').zIndex, overflow: defHeight == 'auto' ? 'visible' : 'auto', height: defHeight});
+ tipHeight = defHeight == 'auto' ? Math.max($cluetip.outerHeight(),$cluetip.height()) : parseInt(defHeight,10);
+ tipY = posY;
+ baseline = sTop + wHeight;
+ insufficientX = (posX < mouseX && (Math.max(posX, 0) + tipWidth > mouseX));
+ if (opts.positionBy == 'fixed') {
+ tipY = posY - opts.dropShadowSteps + tOffset;
+ } else if (opts.positionBy == 'topBottom' || opts.positionBy == 'bottomTop' || insufficientX) {
+ if (opts.positionBy == 'topBottom') {
+ if (posY + tipHeight + tOffset < baseline && mouseY - sTop < tipHeight + tOffset) {
+ direction = 'bottom';
+ } else {
+ direction = 'top';
+ }
+ } else if (opts.positionBy == 'bottomTop' || insufficientX) {
+ if (posY + tipHeight + tOffset > baseline && mouseY - sTop > tipHeight + tOffset) {
+ direction = 'top';
+ } else {
+ direction = 'bottom';
+ }
+ }
+ // We should now have a direction. Compute tipY
+ if (opts.snapToEdge) {
+ if (direction == 'top') {
+ tipY = linkTop - tipHeight - tOffset;
+ } else if (direction == 'bottom') {
+ tipY = linkBottom + tOffset;
+ }
+ } else {
+ if (direction == 'top') {
+ tipY = mouseY - tipHeight - tOffset;
+ } else if (direction == 'bottom') {
+ tipY = mouseY + tOffset;
+ }
+ }
+ } else if ( posY + tipHeight + tOffset > baseline ) {
+ tipY = (tipHeight >= wHeight) ? sTop : baseline - tipHeight - tOffset;
+ } else if ($link.css('display') == 'block' || link.tagName.toLowerCase() == 'area' || opts.positionBy == "mouse") {
+ tipY = bpY - tOffset;
+ } else {
+ tipY = posY - opts.dropShadowSteps;
+ }
+ if (direction === '') {
+ direction = posX < linkLeft ? 'left' : 'right';
+ }
+ // add classes
+ dynamicClasses = ' clue-' + direction + '-' + ctClass + ' cluetip-' + ctClass;
+ if (ctClass == 'rounded') {
+ dynamicClasses += ' ui-corner-all';
+ }
+ $cluetip.css({top: tipY + 'px'}).attrProp({'className': standardClasses + dynamicClasses});
+ // set up arrow positioning to align with element
+ if (opts.arrows) {
+ if ( /(left|right)/.test(direction) ) {
+ heightDiff = $cluetip.height() - $cluetipArrows.height();
+ bgY = posX >= 0 && bpY > 0 ? (posY - tipY - opts.dropShadowSteps) : 0;
+ bgY = heightDiff > bgY ? bgY : heightDiff;
+ bgY += 'px';
+ }
+ $cluetipArrows.css({top: bgY}).show();
+ } else {
+ $cluetipArrows.hide();
+ }
+
+// (first hide, then) ***SHOW THE CLUETIP***
+ // handle dropshadow divs first
+ $dropShadow = createDropShadows($cluetip, opts);
+ if ($dropShadow && $dropShadow.length) {
+ $dropShadow.hide().css({height: tipHeight, width: tipInnerWidth, zIndex: $link.data('cluetip').zIndex-1}).show();
+ }
+
+ if (!closeOnDelay) {
+ $cluetip.hide();
+ }
+ clearTimeout(closeOnDelay);
+ closeOnDelay = null;
+
+ // show the cluetip
+ $cluetip[opts.fx.open](opts.fx.openSpeed || 0);
+
+ if ($.fn.bgiframe) { $cluetip.bgiframe(); }
+
+ // trigger the optional onShow function
+ opts.onShow.call(link, $cluetip, $cluetipInner);
+ };
+
+/***************************************
+ =INACTIVATION
+-------------------------------------- */
+ var inactivate = function(event) {
+ isActive = false;
+ $cluetipWait.hide();
+ if (!opts.sticky || (/click|toggle/).test(opts.activation) ) {
+ // delayed close (not fully tested)
+ if (opts.delayedClose > 0) {
+ clearTimeout(closeOnDelay);
+ closeOnDelay = null;
+ closeOnDelay = setTimeout(cluetipClose, opts.delayedClose);
+ } else {
+ cluetipClose();
+ clearTimeout(closeOnDelay);
+ }
+ }
+
+ if (opts.hoverClass) {
+ $link.removeClass(opts.hoverClass);
+ }
+ };
+
+ // close cluetip and reset some things
+ var cluetipClose = function(el) {
+ var $closer = el && el.data('cluetip') ? el : $link,
+ ct = $closer.data('cluetip') && $closer.data('cluetip').selector,
+ ctSelector = ct || 'div.cluetip',
+ $cluetip = $(ctSelector),
+ $cluetipInner = $cluetip.find(prefix + 'cluetip-inner'),
+ $cluetipArrows = $cluetip.find(prefix + 'cluetip-arrows');
+
+ $cluetip.hide().removeClass();
+ opts.onHide.call($closer[0], $cluetip, $cluetipInner);
+
+ if (ct) {
+ $closer.removeClass('cluetip-clicked');
+ $link.css('cursor', $link.data('cluetip').cursor);
+ }
+ if (ct && tipTitle) {
+ $closer.attrProp(opts.titleAttribute, tipTitle);
+ }
+
+ if (opts.arrows) {
+ $cluetipArrows.css({top: ''});
+ }
+ if ($dropShadow) {
+ $dropShadow.hide();
+ }
+ };
+
+ // Check to see if we should be closing by checking where the user is hovering.
+ // We do a short 50ms delay for two reasons: to prevent flicker, and to allow the user time to hover on other element
+ var mouseOutClose = function() {
+ var el = this;
+ clearTimeout(closeOnDelay);
+ closeOnDelay = setTimeout(function() {
+ var linkOver = $link.data('cluetip').entered,
+ cluetipOver = $cluetip.data('entered'),
+ entered = false;
+
+ if ( opts.mouseOutClose == 'both' && (linkOver || cluetipOver) ) {
+ entered = true;
+ }
+ // true implies 'cluetip' for backwards compatibility
+ else if ( (opts.mouseOutClose === true || opts.mouseOutClose == 'cluetip') && cluetipOver) {
+ entered = true;
+ }
+ else if (opts.mouseOutClose == 'link' && linkOver) {
+ entered = true;
+ }
+
+ if ( !entered ) {
+ // All checks pass, close the cluetip
+ cluetipClose.call(el);
+ }
+
+ }, opts.delayedClose);
+ };
+
+ $(document).unbind('hideCluetip.cluetip').bind('hideCluetip.cluetip', function(e) {
+ cluetipClose( $(e.target) );
+ });
+/***************************************
+ =BIND EVENTS
+-------------------------------------- */
+ // activate by click
+ if ( (/click|toggle/).test(opts.activation) ) {
+ $link.bind('click.cluetip', function(event) {
+ if ($cluetip.is(':hidden') || !$link.is('.cluetip-clicked')) {
+ activate(event);
+ $('.cluetip-clicked').removeClass('cluetip-clicked');
+ $link.addClass('cluetip-clicked');
+ } else {
+ inactivate(event);
+ }
+ return false;
+ });
+ // activate by focus; inactivate by blur
+ } else if (opts.activation == 'focus') {
+ $link.bind('focus.cluetip', function(event) {
+ $link.attrProp('title','');
+ activate(event);
+ });
+ $link.bind('blur.cluetip', function(event) {
+ $link.attrProp('title', $link.data('cluetip').title);
+ inactivate(event);
+ });
+ // activate by hover
+ } else {
+
+ // clicking is returned false if clickThrough option is set to false
+ $link[opts.clickThrough ? 'unbind' : 'bind']('click.cluetip', returnFalse);
+
+ //set up mouse tracking
+ var mouseTracks = function(evt) {
+ if (opts.tracking) {
+ var trackX = posX - evt.pageX;
+ var trackY = tipY ? tipY - evt.pageY : posY - evt.pageY;
+ $link.bind('mousemove.cluetip', function(evt) {
+ $cluetip.css({left: evt.pageX + trackX, top: evt.pageY + trackY });
+ });
+ }
+ };
+
+ if ($.fn.hoverIntent && opts.hoverIntent) {
+ $link.hoverIntent({
+ sensitivity: opts.hoverIntent.sensitivity,
+ interval: opts.hoverIntent.interval,
+ over: function(event) {
+ activate(event);
+ mouseTracks(event);
+ },
+ timeout: opts.hoverIntent.timeout,
+ out: function(event) {
+ inactivate(event);
+ $link.unbind('mousemove.cluetip');
+ }
+ });
+ } else {
+ $link.bind('mouseenter.cluetip', function(event) {
+ activate(event);
+ mouseTracks(event);
+ })
+ .bind('mouseleave.cluetip', function(event) {
+ inactivate(event);
+ $link.unbind('mousemove.cluetip');
+ });
+ }
+
+ $link.bind('mouseover.cluetip', function(event) {
+ $link.attrProp('title','');
+ }).bind('mouseleave.cluetip', function(event) {
+ $link.attrProp('title', $link.data('cluetip').title);
+ });
+ }
+
+ // trigger a cached Ajax response
+ function cachedAjax(info, settings) {
+ var status = info.status;
+ settings.beforeSend(info.xhr, settings);
+ if ( status == 'error' ) {
+ settings[status](info.xhr, info.textStatus);
+ } else if (status == 'success') {
+ settings[status](info.data, info.textStatus, info.xhr);
+ }
+ settings.complete(info.xhr, settings.textStatus);
+ }
+
+ }); // end this.each
+
+ /** =private functions
+ ************************************************************/
+ //empty function
+ function doNothing() {}
+
+ // create a string to be used as an identifier for ajax caches
+ function getCacheKey(url, data) {
+ var cacheKey = url || '';
+ data = data || '';
+
+ if (typeof data == 'object') {
+ $.each(data, function(key, val) {
+ cacheKey += '-' + key + '-' + val;
+ });
+ } else if (typeof data == 'string') {
+ cacheKey += data;
+ }
+
+ return cacheKey;
+ }
+
+ /** =create dropshadow divs **/
+
+ function createDropShadows($cluetip, options, newDropShadow) {
+ var dsStyle = '',
+ dropShadowSteps = (options.dropShadow && options.dropShadowSteps) ? +options.dropShadowSteps : 0;
+
+ if ($.support.boxShadow) {
+ if ( dropShadowSteps ) {
+ dsStyle = '1px 1px ' + dropShadowSteps + 'px rgba(0,0,0,0.5)';
+ }
+ var dsOffsets = dropShadowSteps === 0 ? '0 0 ' : '1px 1px ';
+ $cluetip.css($.support.boxShadow, dsStyle);
+ return false;
+ }
+ var oldDropShadow = $cluetip.find('.cluetip-drop-shadow');
+ if (dropShadowSteps == oldDropShadow.length) {
+ return oldDropShadow;
+ }
+ oldDropShadow.remove();
+ var dropShadows = [];
+ for (var i=0; i < dropShadowSteps;) {
+ dropShadows[i++] = '<div style="top:' + i + 'px;left:' + i + 'px;"></div>';
+ }
+
+ newDropShadow = $(dropShadows.join(''))
+ .css({
+ position: 'absolute',
+ backgroundColor: '#000',
+ zIndex: cluezIndex -1,
+ opacity: 0.1
+ })
+ .addClass('cluetip-drop-shadow')
+ .prependTo($cluetip);
+ return newDropShadow;
+
+ }
+
+ return this;
+ };
+
+ (function() {
+ $.support = $.support || {};
+ // check support for CSS3 properties (currently only boxShadow)
+ var div = document.createElement('div'),
+ divStyle = div.style,
+ styleProps = ['boxShadow'],
+ prefixes = ['moz', 'Moz', 'webkit', 'o'];
+
+ for (var i=0, sl = styleProps.length; i < sl; i++) {
+ var prop = styleProps[i],
+ uProp = prop.charAt(0).toUpperCase() + prop.slice(1);
+
+ if ( typeof divStyle[ prop ] !== 'undefined' ) {
+ $.support[ prop ] = prop;
+ } else {
+ for (var j=0, pl = prefixes.length; j < pl; j++) {
+
+ if (typeof divStyle[ prefixes[j] + uProp ] !== 'undefined') {
+ $.support[ prop ] = prefixes[j] + uProp;
+ break;
+ }
+ }
+ }
+ }
+ div = null;
+ })();
+
+ $.fn.cluetip.defaults = $.cluetip.defaults;
+
+})(jQuery);
diff --git a/views/js/jquery-cluetip-master/jquery.cluetip.min.js b/views/js/jquery-cluetip-master/jquery.cluetip.min.js
new file mode 100644
index 0000000..70ff84f
--- /dev/null
+++ b/views/js/jquery-cluetip-master/jquery.cluetip.min.js
@@ -0,0 +1,7 @@
+/*!
+ * clueTip - v1.2.9 - 2013-06-02
+ * http://plugins.learningjquery.com/cluetip/
+ * Copyright (c) 2013 Karl Swedberg
+ * Licensed MIT (http://www.opensource.org/licenses/mit-license.php)
+ */
+(function(t){t.cluetip={version:"1.2.9",template:["<div>",'<div class="cluetip-outer">','<h3 class="cluetip-title ui-widget-header ui-cluetip-header"></h3>','<div class="cluetip-inner ui-widget-content ui-cluetip-content"></div>',"</div>",'<div class="cluetip-extra"></div>',"</div>"].join(""),setup:{insertionType:"appendTo",insertionElement:"body"},defaults:{multiple:!1,width:275,height:"auto",cluezIndex:97,positionBy:"auto",topOffset:15,leftOffset:15,snapToEdge:!1,local:!1,localPrefix:null,localIdSuffix:null,hideLocal:!0,attribute:"rel",titleAttribute:"title",splitTitle:"",escapeTitle:!1,showTitle:!0,cluetipClass:"default",hoverClass:"",waitImage:!0,cursor:"help",arrows:!1,dropShadow:!0,dropShadowSteps:6,sticky:!1,mouseOutClose:!1,delayedClose:50,activation:"hover",clickThrough:!0,tracking:!1,closePosition:"top",closeText:"Close",truncate:0,fx:{open:"show",openSpeed:""},hoverIntent:{sensitivity:3,interval:50,timeout:0},onActivate:function(){return!0},onShow:function(){},onHide:function(){},ajaxCache:!0,ajaxProcess:function(t){return t=t.replace(/<(script|style|title)[^<]+<\/(script|style|title)>/gm,"").replace(/<(link|meta)[^>]+>/g,"")},ajaxSettings:{dataType:"html"},debug:!1}};var e,i="cluetip ui-widget ui-widget-content ui-cluetip",o={},a=0,l=0;t.fn.attrProp=t.fn.prop||t.fn.attr,t.fn.cluetip=function(s,n){function c(e,i){var o=e||"";return i=i||"","object"==typeof i?t.each(i,function(t,e){o+="-"+t+"-"+e}):"string"==typeof i&&(o+=i),o}function u(e,i,o){var a="",l=i.dropShadow&&i.dropShadowSteps?+i.dropShadowSteps:0;if(t.support.boxShadow)return l&&(a="1px 1px "+l+"px rgba(0,0,0,0.5)"),e.css(t.support.boxShadow,a),!1;var s=e.find(".cluetip-drop-shadow");if(l==s.length)return s;s.remove();for(var n=[],c=0;l>c;)n[c++]='<div style="top:'+c+"px;left:"+c+'px;"></div>';return o=t(n.join("")).css({position:"absolute",backgroundColor:"#000",zIndex:v-1,opacity:.1}).addClass("cluetip-drop-shadow").prependTo(e)}var r,p,d,f,h,m;if("object"==typeof s&&(n=s,s=null),"destroy"==s)return this.each(function(){var e=t(this),i=e.data("cluetip");i&&(t(i.selector).remove(),t.removeData(this,"title"),t.removeData(this,"cluetip")),i.title&&e.attrProp("title",i.title),e.unbind(".cluetip").unbind("cluetipMoc")}),t('[id^="cluetip"]').length||t(document).unbind(".cluetip"),this;n=t.extend(!0,{},t.cluetip.defaults,n||{}),a++;var v,g=t.cluetip.backCompat||!n.multiple?"cluetip":"cluetip-"+a,b="#"+g,x=t.cluetip.backCompat?"#":".",w=t.cluetip.setup.insertionType,y=t.cluetip.setup.insertionElement||"body";w=/appendTo|prependTo|insertBefore|insertAfter/.test(w)?w:"appendTo",r=t(b),r.length||(r=t(t.cluetip.template)[w](y).attr("id",g).css({position:"absolute",display:"none"}),v=+n.cluezIndex,d=r.find(x+"cluetip-outer").css({position:"relative",zIndex:v}),p=r.find(x+"cluetip-inner"),f=r.find(x+"cluetip-title"),r.bind("mouseenter mouseleave",function(e){t(this).data("entered","mouseenter"===e.type)})),e=t("#cluetip-waitimage"),!e.length&&n.waitImage&&(e=t("<div></div>").attr("id","cluetip-waitimage").css({position:"absolute"}),e.insertBefore(r).hide());var C=(parseInt(r.css("paddingLeft"),10)||0)+(parseInt(r.css("paddingRight"),10)||0);return this.each(function(a){function g(){return!1}function w(t,e){var i=t.status;e.beforeSend(t.xhr,e),"error"==i?e[i](t.xhr,t.textStatus):"success"==i&&e[i](t.data,t.textStatus,t.xhr),e.complete(t.xhr,e.textStatus)}var S=this,I=t(this),T=t.extend(!0,{},n,t.metadata?I.metadata():t.meta?I.data():I.data("cluetip")||{}),k=!1,j=!1,z=null,B=T[T.attribute]||("href"==T.attribute?I.attr(T.attribute):I.attrProp(T.attribute)||I.attr(T.attribute)),P=T.cluetipClass;if(v=+T.cluezIndex,I.data("cluetip",{title:S.title,zIndex:v,selector:b,cursor:S.style.cursor||""}),T.arrows&&!r.find(".cluetip-arrows").length&&r.append('<div class="cluetip-arrows ui-state-default"></div>'),!B&&!T.splitTitle&&!s)return!0;T.local&&T.localPrefix&&(B=T.localPrefix+B),T.local&&T.hideLocal&&B&&t(B+":first").hide();var O,M,A,L,N,E,Y,H,D,R,X,W,$,q,Q=parseInt(T.topOffset,10),U=parseInt(T.leftOffset,10),F=isNaN(parseInt(T.height,10))?"auto":/\D/g.test(T.height)?T.height:T.height+"px",G=parseInt(T.width,10)||275,J=G+C+T.dropShadowSteps,K=this.offsetWidth,V="title"!=T.attribute?I.attr(T.titleAttribute)||"":"";T.splitTitle&&(q=V.split(T.splitTitle),V=T.showTitle||""===q[0]?q.shift():""),T.escapeTitle&&(V=V.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;")),I.bind("mouseenter mouseleave",function(t){var e=I.data("cluetip");e.entered="entered"===t.type,I.data("cluetip",e)});var Z=function(i){var u,m,v,g=T.onActivate.call(S,i);if(g===!1)return!1;if(j=!0,r=t(b).css({position:"absolute"}),d=r.find(x+"cluetip-outer"),p=r.find(x+"cluetip-inner"),f=r.find(x+"cluetip-title"),h=r.find(x+"cluetip-arrows"),r.removeClass().css({width:G}),B==I.attr("href")&&I.css("cursor",T.cursor),T.hoverClass&&I.addClass(T.hoverClass),L=E=I.offset().top,N=L+I.innerHeight(),R=I.offset().left,"relative"===t(y).css("position")&&(R-=t(y)[0].getBoundingClientRect().left),K=I.innerWidth(),i.type==focus?(W=R+K/2+U,r.css({left:X}),H=E+Q):(W=i.pageX,H=i.pageY),"area"!=S.tagName.toLowerCase()&&(A=t(document).scrollTop(),$=t(window).width()),"fixed"==T.positionBy?(X=K+R+U,r.css({left:X})):(X=K>R&&R>J||R+K+J+U>$?R-J-U:K+R+U,("area"==S.tagName.toLowerCase()||"mouse"==T.positionBy||K+J>$)&&(W+20+J>$?(r.addClass("cluetip-"+P),X=W-J-U>=0?W-J-U-parseInt(r.css("marginLeft"),10)+parseInt(p.css("marginRight"),10):W-J/2):X=W+U),u=0>X?i.pageY+Q:i.pageY,(0>X||"bottomTop"==T.positionBy||"topBottom"==T.positionBy)&&(X=W+J/2>$?$/2-J/2:Math.max(W-J/2,0))),h.css({zIndex:I.data("cluetip").zIndex+1}),r.css({left:X,zIndex:I.data("cluetip").zIndex}),M=t(window).height(),s)"function"==typeof s&&(s=s.call(S)),p.html(s),_(u);else if(q){var C=q.length;if(p.html(C?q[0]:""),C>1)for(var z=1;C>z;z++)p.append('<div class="split-body">'+q[z]+"</div>");_(u)}else if(T.local||0===B.indexOf("#")){if(T.local){var O=t(B+(/^#\S+$/.test(B)?"":":eq("+a+")")).clone(!0).show();T.localIdSuffix&&O.attr("id",O[0].id+T.localIdSuffix),p.html(O),_(u)}}else if(/\.(jpe?g|tiff?|gif|png)(?:\?.*)?$/i.test(B))p.html('<img src="'+B+'" alt="'+V+'" />'),_(u);else{var Y=T.ajaxSettings.beforeSend,D=T.ajaxSettings.error,F=T.ajaxSettings.success,Z=T.ajaxSettings.complete;v=c(B,T.ajaxSettings.data);var te={cache:T.ajaxCache,url:B,beforeSend:function(t,i){Y&&Y.call(S,t,r,p,i),d.children().empty(),T.waitImage&&e.css({top:H+20,left:W+20,zIndex:I.data("cluetip").zIndex-1}).show()},error:function(t,e){n.ajaxCache&&!o[v]&&(o[v]={status:"error",textStatus:e,xhr:t}),j&&(D?D.call(S,t,e,r,p):p.html("<i>sorry, the contents could not be loaded</i>"))},success:function(t,e,i){n.ajaxCache&&!o[v]&&(o[v]={status:"success",data:t,textStatus:e,xhr:i}),k=T.ajaxProcess.call(S,t),"object"==typeof k&&null!==k&&(V=k.title,k=k.content),j&&(F&&F.call(S,t,e,r,p),p.html(k))},complete:function(i,o){Z&&Z.call(S,i,o,r,p);var a=p[0].getElementsByTagName("img");l=a.length;for(var s=0,n=a.length;n>s;s++)a[s].complete&&l--;l?t(a).bind("load.ct error.ct",function(){l--,0===l&&(e.hide(),t(a).unbind(".ct"),j&&_(u))}):(e.hide(),j&&_(u))}};m=t.extend(!0,{},T.ajaxSettings,te),o[v]?w(o[v],m):t.ajax(m)}},_=function(e){var o,a,l,s=V||T.showTitle&&"&nbsp;",n="",c="",v=!1,g={bottom:function(t){t.appendTo(p)},top:function(t){t.prependTo(p)},title:function(t){t.prependTo(f)}};if(r.addClass("cluetip-"+P),T.truncate){var b=p.text().slice(0,T.truncate)+"...";p.html(b)}s?f.show().html(s):f.hide(),T.sticky&&(g[T.closePosition]&&(o=t('<div class="cluetip-close"><a href="#">'+T.closeText+"</a></div>"),g[T.closePosition](o),o.bind("click.cluetip",function(){return ee(),!1})),T.mouseOutClose&&(I.unbind("mouseleave.cluetipMoc"),r.unbind("mouseleave.cluetipMoc"),("both"==T.mouseOutClose||"cluetip"==T.mouseOutClose||T.mouseOutClose===!0)&&r.bind("mouseleave.cluetipMoc",ie),("both"==T.mouseOutClose||"link"==T.mouseOutClose)&&I.bind("mouseleave.cluetipMoc",ie))),d.css({zIndex:I.data("cluetip").zIndex,overflow:"auto"==F?"visible":"auto",height:F}),O="auto"==F?Math.max(r.outerHeight(),r.height()):parseInt(F,10),Y=E,D=A+M,v=W>X&&Math.max(X,0)+J>W,"fixed"==T.positionBy?Y=E-T.dropShadowSteps+Q:"topBottom"==T.positionBy||"bottomTop"==T.positionBy||v?("topBottom"==T.positionBy?c=D>E+O+Q&&O+Q>H-A?"bottom":"top":("bottomTop"==T.positionBy||v)&&(c=E+O+Q>D&&H-A>O+Q?"top":"bottom"),T.snapToEdge?"top"==c?Y=L-O-Q:"bottom"==c&&(Y=N+Q):"top"==c?Y=H-O-Q:"bottom"==c&&(Y=H+Q)):Y=E+O+Q>D?O>=M?A:D-O-Q:"block"==I.css("display")||"area"==S.tagName.toLowerCase()||"mouse"==T.positionBy?e-Q:E-T.dropShadowSteps,""===c&&(c=R>X?"left":"right"),a=" clue-"+c+"-"+P+" cluetip-"+P,"rounded"==P&&(a+=" ui-corner-all"),r.css({top:Y+"px"}).attrProp({className:i+a}),T.arrows?(/(left|right)/.test(c)&&(l=r.height()-h.height(),n=X>=0&&e>0?E-Y-T.dropShadowSteps:0,n=l>n?n:l,n+="px"),h.css({top:n}).show()):h.hide(),m=u(r,T),m&&m.length&&m.hide().css({height:O,width:G,zIndex:I.data("cluetip").zIndex-1}).show(),z||r.hide(),clearTimeout(z),z=null,r[T.fx.open](T.fx.openSpeed||0),t.fn.bgiframe&&r.bgiframe(),T.onShow.call(S,r,p)},te=function(){j=!1,e.hide(),(!T.sticky||/click|toggle/.test(T.activation))&&(T.delayedClose>0?(clearTimeout(z),z=null,z=setTimeout(ee,T.delayedClose)):(ee(),clearTimeout(z))),T.hoverClass&&I.removeClass(T.hoverClass)},ee=function(e){var i=e&&e.data("cluetip")?e:I,o=i.data("cluetip")&&i.data("cluetip").selector,a=o||"div.cluetip",l=t(a),s=l.find(x+"cluetip-inner"),n=l.find(x+"cluetip-arrows");l.hide().removeClass(),T.onHide.call(i[0],l,s),o&&(i.removeClass("cluetip-clicked"),I.css("cursor",I.data("cluetip").cursor)),o&&V&&i.attrProp(T.titleAttribute,V),T.arrows&&n.css({top:""}),m&&m.hide()},ie=function(){var t=this;clearTimeout(z),z=setTimeout(function(){var e=I.data("cluetip").entered,i=r.data("entered"),o=!1;"both"==T.mouseOutClose&&(e||i)?o=!0:T.mouseOutClose!==!0&&"cluetip"!=T.mouseOutClose||!i?"link"==T.mouseOutClose&&e&&(o=!0):o=!0,o||ee.call(t)},T.delayedClose)};if(t(document).unbind("hideCluetip.cluetip").bind("hideCluetip.cluetip",function(e){ee(t(e.target))}),/click|toggle/.test(T.activation))I.bind("click.cluetip",function(e){return r.is(":hidden")||!I.is(".cluetip-clicked")?(Z(e),t(".cluetip-clicked").removeClass("cluetip-clicked"),I.addClass("cluetip-clicked")):te(e),!1});else if("focus"==T.activation)I.bind("focus.cluetip",function(t){I.attrProp("title",""),Z(t)}),I.bind("blur.cluetip",function(t){I.attrProp("title",I.data("cluetip").title),te(t)});else{I[T.clickThrough?"unbind":"bind"]("click.cluetip",g);var oe=function(t){if(T.tracking){var e=X-t.pageX,i=Y?Y-t.pageY:E-t.pageY;I.bind("mousemove.cluetip",function(t){r.css({left:t.pageX+e,top:t.pageY+i})})}};t.fn.hoverIntent&&T.hoverIntent?I.hoverIntent({sensitivity:T.hoverIntent.sensitivity,interval:T.hoverIntent.interval,over:function(t){Z(t),oe(t)},timeout:T.hoverIntent.timeout,out:function(t){te(t),I.unbind("mousemove.cluetip")}}):I.bind("mouseenter.cluetip",function(t){Z(t),oe(t)}).bind("mouseleave.cluetip",function(t){te(t),I.unbind("mousemove.cluetip")}),I.bind("mouseover.cluetip",function(){I.attrProp("title","")}).bind("mouseleave.cluetip",function(){I.attrProp("title",I.data("cluetip").title)})}}),this},function(){t.support=t.support||{};for(var e=document.createElement("div"),i=e.style,o=["boxShadow"],a=["moz","Moz","webkit","o"],l=0,s=o.length;s>l;l++){var n=o[l],c=n.charAt(0).toUpperCase()+n.slice(1);if(i[n]!==void 0)t.support[n]=n;else for(var u=0,r=a.length;r>u;u++)if(i[a[u]+c]!==void 0){t.support[n]=a[u]+c;break}}e=null}(),t.fn.cluetip.defaults=t.cluetip.defaults})(jQuery); \ No newline at end of file