jquery-qtip2-wrapper-rails 2.2.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee12a65df8fc37f10a0182cb139af5ebab0d1cf7
4
- data.tar.gz: 318d8f219fd62dd2ed3a750d26c9d2be129ff777
3
+ metadata.gz: a61a3fdb1cb95a45e3411755e4b1c0aad66e38df
4
+ data.tar.gz: e2fcae0b12b1b6e3b5c9f6a4db9abc9a73eba8ba
5
5
  SHA512:
6
- metadata.gz: 0778e011829da73aff8bd884a7c4db9697dbb2d43447b283d1cb53fce3f31023da14e42e49b6322bad963e1142c1698599d4f2a624ac75efaa08909c215b57e6
7
- data.tar.gz: 75efaa7bdf7bcce7741e30f004361f02fdc4b57d659b2560086a3c247b31bf0dfcced6ac1e046c43fc32b5a23f0a5fc711b4f01f31ce8b4967664c4600994ea3
6
+ metadata.gz: b51bd123183588268d1f09cd6cf1de156810734a35873114220516c102a99e86be03edc7dda456837cedf92a0e23f7b2cfc43df9aae2234285a26609d4fa3a45
7
+ data.tar.gz: 1e86a0b3815b59e61e6ae67a71720aa14bdb8e3d4cc0baa676f9084bc10bd792c818e3dbe342b45e0f4836ccc113989e4ba9da5cbca8da6b9a19f23f469ffa75
@@ -2,7 +2,7 @@ module Jquery
2
2
  module Qtip2
3
3
  module Wrapper
4
4
  module Rails
5
- VERSION = "2.2.1"
5
+ VERSION = "3.0.2"
6
6
  end
7
7
  end
8
8
  end
@@ -1,12 +1,12 @@
1
1
  /*
2
- * qTip2 - Pretty powerful tooltips - v2.2.1
2
+ * qTip2 - Pretty powerful tooltips - v3.0.2
3
3
  * http://qtip2.com
4
4
  *
5
- * Copyright (c) 2014
5
+ * Copyright (c) 2015
6
6
  * Released under the MIT licenses
7
7
  * http://jquery.org/license
8
8
  *
9
- * Date: Sat Sep 6 2014 11:12 GMT+0100+0100
9
+ * Date: Tue Dec 8 2015 07:16 GMT+0000
10
10
  * Plugins: tips modal viewport svg imagemap ie6
11
11
  * Styles: core basic css3
12
12
  */
@@ -77,14 +77,17 @@ BROWSER = {
77
77
  * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment
78
78
  * Credit to James Padolsey for the original implemntation!
79
79
  */
80
- ie: (function(){
80
+ ie: (function() {
81
+ /* eslint-disable no-empty */
82
+ var v, i;
81
83
  for (
82
- var v = 4, i = document.createElement("div");
83
- (i.innerHTML = "<!--[if gt IE " + v + "]><i></i><![endif]-->") && i.getElementsByTagName("i")[0];
84
+ v = 4, i = document.createElement('div');
85
+ (i.innerHTML = '<!--[if gt IE ' + v + ']><i></i><![endif]-->') && i.getElementsByTagName('i')[0];
84
86
  v+=1
85
87
  ) {}
86
88
  return v > 4 ? v : NaN;
87
- }()),
89
+ /* eslint-enable no-empty */
90
+ })(),
88
91
 
89
92
  /*
90
93
  * iOS version detection
@@ -138,9 +141,7 @@ PROTOTYPE.render = function(show) {
138
141
  title = options.content.title,
139
142
  button = options.content.button,
140
143
  posOptions = options.position,
141
- namespace = '.'+this._id+' ',
142
- deferreds = [],
143
- tooltip;
144
+ deferreds = [];
144
145
 
145
146
  // Add ARIA attributes to target
146
147
  $.attr(this.target[0], 'aria-describedby', this._id);
@@ -151,7 +152,7 @@ PROTOTYPE.render = function(show) {
151
152
  );
152
153
 
153
154
  // Create tooltip element
154
- this.tooltip = elements.tooltip = tooltip = $('<div/>', {
155
+ this.tooltip = elements.tooltip = $('<div/>', {
155
156
  'id': this._id,
156
157
  'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),
157
158
  'width': options.style.width || '',
@@ -256,13 +257,15 @@ PROTOTYPE.destroy = function(immediate) {
256
257
  }
257
258
 
258
259
  // Destroy all plugins
259
- $.each(this.plugins, function(name) {
260
+ $.each(this.plugins, function() {
260
261
  this.destroy && this.destroy();
261
262
  });
262
263
 
263
264
  // Clear timers
264
- for(timer in this.timers) {
265
- clearTimeout(this.timers[timer]);
265
+ for (timer in this.timers) {
266
+ if (this.timers.hasOwnProperty(timer)) {
267
+ clearTimeout(this.timers[timer]);
268
+ }
266
269
  }
267
270
 
268
271
  // Remove api object and ARIA attributes
@@ -288,7 +291,7 @@ PROTOTYPE.destroy = function(immediate) {
288
291
  delete QTIP.api[this.id];
289
292
  }
290
293
 
291
- // If an immediate destory is needed
294
+ // If an immediate destroy is needed
292
295
  if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {
293
296
  this.tooltip.one('tooltiphidden', $.proxy(process, this));
294
297
  !this.triggering && this.hide();
@@ -304,7 +307,7 @@ PROTOTYPE.destroy = function(immediate) {
304
307
  }
305
308
 
306
309
  function invalidContent(c) {
307
- return !( $.isFunction(c) || (c && c.attr) || c.length || ($.type(c) === 'object' && (c.jquery || c.then) ));
310
+ return !($.isFunction(c) || c && c.attr) || c.length || $.type(c) === 'object' && (c.jquery || c.then);
308
311
  }
309
312
 
310
313
  // Option object sanitizer
@@ -321,8 +324,9 @@ function sanitizeOptions(opts) {
321
324
  content = opts.content;
322
325
 
323
326
  if(invalidOpt(content) || content.jquery || content.done) {
327
+ text = invalidContent(content) ? FALSE : content;
324
328
  content = opts.content = {
325
- text: (text = invalidContent(content) ? FALSE : content)
329
+ text: text
326
330
  };
327
331
  }
328
332
  else { text = content.text; }
@@ -341,9 +345,9 @@ function sanitizeOptions(opts) {
341
345
  $.extend({}, ajax, { context: api })
342
346
  )
343
347
  .then(ajax.success, NULL, ajax.error)
344
- .then(function(content) {
345
- if(content && once) { api.set('content.text', content); }
346
- return content;
348
+ .then(function(newContent) {
349
+ if(newContent && once) { api.set('content.text', newContent); }
350
+ return newContent;
347
351
  },
348
352
  function(xhr, status, error) {
349
353
  if(api.destroyed || xhr.status === 0) { return; }
@@ -397,10 +401,10 @@ CHECKS = PROTOTYPE.checks = {
397
401
  // Core checks
398
402
  '^id$': function(obj, o, v, prev) {
399
403
  var id = v === TRUE ? QTIP.nextid : v,
400
- new_id = NAMESPACE + '-' + id;
404
+ newId = NAMESPACE + '-' + id;
401
405
 
402
- if(id !== FALSE && id.length > 0 && !$('#'+new_id).length) {
403
- this._id = new_id;
406
+ if(id !== FALSE && id.length > 0 && !$('#'+newId).length) {
407
+ this._id = newId;
404
408
 
405
409
  if(this.rendered) {
406
410
  this.tooltip[0].id = this._id;
@@ -440,7 +444,9 @@ CHECKS = PROTOTYPE.checks = {
440
444
 
441
445
  // Position checks
442
446
  '^position.(my|at)$': function(obj, o, v){
443
- 'string' === typeof v && (this.position[o] = obj[o] = new CORNER(v, o === 'at'));
447
+ if('string' === typeof v) {
448
+ this.position[o] = obj[o] = new CORNER(v, o === 'at');
449
+ }
444
450
  },
445
451
  '^position.container$': function(obj, o, v){
446
452
  this.rendered && this.tooltip.appendTo(v);
@@ -493,7 +499,7 @@ function convertNotation(options, notation) {
493
499
  levels = notation.split('.');
494
500
 
495
501
  // Loop through
496
- while( option = option[ levels[i++] ] ) {
502
+ while(option = option[ levels[i++] ]) {
497
503
  if(i < levels.length) { obj = option; }
498
504
  }
499
505
 
@@ -513,7 +519,11 @@ function setCallback(notation, args) {
513
519
  var category, rule, match;
514
520
 
515
521
  for(category in this.checks) {
522
+ if (!this.checks.hasOwnProperty(category)) { continue; }
523
+
516
524
  for(rule in this.checks[category]) {
525
+ if (!this.checks[category].hasOwnProperty(rule)) { continue; }
526
+
517
527
  if(match = (new RegExp(rule, 'i')).exec(notation)) {
518
528
  args.push(match);
519
529
 
@@ -536,7 +546,6 @@ PROTOTYPE.set = function(option, value) {
536
546
  var rendered = this.rendered,
537
547
  reposition = FALSE,
538
548
  options = this.options,
539
- checks = this.checks,
540
549
  name;
541
550
 
542
551
  // Convert singular option/value pair into object form
@@ -546,7 +555,7 @@ PROTOTYPE.set = function(option, value) {
546
555
  else { option = $.extend({}, option); }
547
556
 
548
557
  // Set all of the defined options to their new values
549
- $.each(option, function(notation, value) {
558
+ $.each(option, function(notation, val) {
550
559
  if(rendered && rrender.test(notation)) {
551
560
  delete option[notation]; return;
552
561
  }
@@ -554,13 +563,13 @@ PROTOTYPE.set = function(option, value) {
554
563
  // Set new obj value
555
564
  var obj = convertNotation(options, notation.toLowerCase()), previous;
556
565
  previous = obj[0][ obj[1] ];
557
- obj[0][ obj[1] ] = value && value.nodeType ? $(value) : value;
566
+ obj[0][ obj[1] ] = val && val.nodeType ? $(val) : val;
558
567
 
559
568
  // Also check if we need to reposition
560
569
  reposition = rmove.test(notation) || reposition;
561
570
 
562
571
  // Set the new params for the callback
563
- option[notation] = [obj[0], obj[1], value, previous];
572
+ option[notation] = [obj[0], obj[1], val, previous];
564
573
  });
565
574
 
566
575
  // Re-sanitize options
@@ -581,7 +590,7 @@ PROTOTYPE.set = function(option, value) {
581
590
 
582
591
  return this;
583
592
  };
584
- ;PROTOTYPE._update = function(content, element, reposition) {
593
+ ;PROTOTYPE._update = function(content, element) {
585
594
  var self = this,
586
595
  cache = this.cache;
587
596
 
@@ -605,7 +614,7 @@ PROTOTYPE.set = function(option, value) {
605
614
  }
606
615
 
607
616
  // If content is null... return false
608
- if(content === FALSE || (!content && content !== '')) { return FALSE; }
617
+ if(content === FALSE || !content && content !== '') { return FALSE; }
609
618
 
610
619
  // Append new content if its a DOM array and show it if hidden
611
620
  if(content.jquery && content.length > 0) {
@@ -632,7 +641,7 @@ PROTOTYPE._waitForContent = function(element) {
632
641
  cache.waiting = TRUE;
633
642
 
634
643
  // If imagesLoaded is included, ensure images have loaded and return promise
635
- return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve([]) )
644
+ return ( $.fn.imagesLoaded ? element.imagesLoaded() : new $.Deferred().resolve([]) )
636
645
  .done(function() { cache.waiting = FALSE; })
637
646
  .promise();
638
647
  };
@@ -743,7 +752,7 @@ PROTOTYPE.reposition = function(event, effect) {
743
752
  }
744
753
 
745
754
  // Use cached event for resize/scroll events
746
- else if(!event || (event && (event.type === 'resize' || event.type === 'scroll'))) {
755
+ else if(!event || event && (event.type === 'resize' || event.type === 'scroll')) {
747
756
  event = cache.event;
748
757
  }
749
758
 
@@ -833,16 +842,16 @@ PROTOTYPE.reposition = function(event, effect) {
833
842
  position = this.reposition.offset(target, position, container);
834
843
 
835
844
  // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2)
836
- if((BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) ||
837
- (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) ||
838
- (!BROWSER.iOS && type === 'fixed')
845
+ if(BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1 ||
846
+ BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33 ||
847
+ !BROWSER.iOS && type === 'fixed'
839
848
  ){
840
849
  position.left -= win.scrollLeft();
841
850
  position.top -= win.scrollTop();
842
851
  }
843
852
 
844
853
  // Adjust position relative to target
845
- if(!pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE)) {
854
+ if(!pluginCalculations || pluginCalculations && pluginCalculations.adjustable !== FALSE) {
846
855
  position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0;
847
856
  position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0;
848
857
  }
@@ -871,7 +880,8 @@ PROTOTYPE.reposition = function(event, effect) {
871
880
 
872
881
  // Set tooltip position class if it's changed
873
882
  if(cache.posClass !== (newClass = this._createPosClass(this.position.my))) {
874
- tooltip.removeClass(cache.posClass).addClass( (cache.posClass = newClass) );
883
+ cache.posClass = newClass;
884
+ tooltip.removeClass(cache.posClass).addClass(newClass);
875
885
  }
876
886
 
877
887
  // tooltipmove event
@@ -924,8 +934,8 @@ PROTOTYPE.reposition.offset = function(elem, pos, container) {
924
934
  }
925
935
  else {
926
936
  parentOffset = $(parent).position();
927
- parentOffset.left += (parseFloat($.css(parent, 'borderLeftWidth')) || 0);
928
- parentOffset.top += (parseFloat($.css(parent, 'borderTopWidth')) || 0);
937
+ parentOffset.left += parseFloat($.css(parent, 'borderLeftWidth')) || 0;
938
+ parentOffset.top += parseFloat($.css(parent, 'borderTopWidth')) || 0;
929
939
  }
930
940
 
931
941
  pos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0);
@@ -935,7 +945,7 @@ PROTOTYPE.reposition.offset = function(elem, pos, container) {
935
945
  if(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); }
936
946
  }
937
947
  }
938
- while((parent = parent.offsetParent));
948
+ while(parent = parent.offsetParent);
939
949
 
940
950
  // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode)
941
951
  if(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) {
@@ -953,7 +963,7 @@ var C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) {
953
963
  this.forceY = !!forceY;
954
964
 
955
965
  var f = corner.charAt(0);
956
- this.precedance = (f === 't' || f === 'b' ? Y : X);
966
+ this.precedance = f === 't' || f === 'b' ? Y : X;
957
967
  }).prototype;
958
968
 
959
969
  C.invert = function(z, center) {
@@ -964,10 +974,10 @@ C.string = function(join) {
964
974
  var x = this.x, y = this.y;
965
975
 
966
976
  var result = x !== y ?
967
- (x === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ?
968
- [y,x] : [x,y]
969
- ) :
970
- [x];
977
+ x === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ?
978
+ [y,x] :
979
+ [x,y] :
980
+ [x];
971
981
 
972
982
  return join !== false ? result.join(' ') : result;
973
983
  };
@@ -1008,14 +1018,13 @@ PROTOTYPE.toggle = function(state, event) {
1008
1018
 
1009
1019
  var type = state ? 'show' : 'hide',
1010
1020
  opts = this.options[type],
1011
- otherOpts = this.options[ !state ? 'show' : 'hide' ],
1012
1021
  posOptions = this.options.position,
1013
1022
  contentOptions = this.options.content,
1014
1023
  width = this.tooltip.css('width'),
1015
1024
  visible = this.tooltip.is(':visible'),
1016
1025
  animate = state || opts.target.length === 1,
1017
1026
  sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target,
1018
- identicalState, allow, showEvent, delay, after;
1027
+ identicalState, allow, after;
1019
1028
 
1020
1029
  // Detect state if valid one isn't provided
1021
1030
  if((typeof state).search('boolean|number')) { state = !visible; }
@@ -1061,7 +1070,7 @@ PROTOTYPE.toggle = function(state, event) {
1061
1070
  // Hide other tooltips if tooltip is solo
1062
1071
  if(!!opts.solo) {
1063
1072
  (typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo))
1064
- .not(tooltip).not(opts.target).qtip('hide', $.Event('tooltipsolo'));
1073
+ .not(tooltip).not(opts.target).qtip('hide', new $.Event('tooltipsolo'));
1065
1074
  }
1066
1075
  }
1067
1076
  else {
@@ -1146,8 +1155,7 @@ PROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };
1146
1155
  var qtips = $(SELECTOR),
1147
1156
  tooltip = this.tooltip,
1148
1157
  curIndex = parseInt(tooltip[0].style.zIndex, 10),
1149
- newIndex = QTIP.zindex + qtips.length,
1150
- focusedElem;
1158
+ newIndex = QTIP.zindex + qtips.length;
1151
1159
 
1152
1160
  // Only update the z-index if it has changed and tooltip is not already focused
1153
1161
  if(!tooltip.hasClass(CLASS_FOCUS)) {
@@ -1325,14 +1333,16 @@ function hideMethod(event) {
1325
1333
  // Or if mouse positioning is enabled and cursor momentarily overlaps
1326
1334
  if(this !== relatedTarget[0] &&
1327
1335
  (this.options.position.target === 'mouse' && ontoTooltip) ||
1328
- (this.options.hide.fixed && (
1336
+ this.options.hide.fixed && (
1329
1337
  (/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget))
1330
- ))
1338
+ )
1331
1339
  {
1340
+ /* eslint-disable no-empty */
1332
1341
  try {
1333
1342
  event.preventDefault();
1334
1343
  event.stopImmediatePropagation();
1335
1344
  } catch(e) {}
1345
+ /* eslint-enable no-empty */
1336
1346
 
1337
1347
  return;
1338
1348
  }
@@ -1394,8 +1404,8 @@ function delegate(selector, events, method) {
1394
1404
  }
1395
1405
  // Event trigger
1396
1406
  PROTOTYPE._trigger = function(type, args, event) {
1397
- var callback = $.Event('tooltip'+type);
1398
- callback.originalEvent = (event && $.extend({}, event)) || this.cache.event || NULL;
1407
+ var callback = new $.Event('tooltip'+type);
1408
+ callback.originalEvent = event && $.extend({}, event) || this.cache.event || NULL;
1399
1409
 
1400
1410
  this.triggering = type;
1401
1411
  this.tooltip.trigger(callback, [this].concat(args || []));
@@ -1404,7 +1414,7 @@ PROTOTYPE._trigger = function(type, args, event) {
1404
1414
  return !callback.isDefaultPrevented();
1405
1415
  };
1406
1416
 
1407
- PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showMethod, hideMethod) {
1417
+ PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showCallback, hideCallback) {
1408
1418
  // Get tasrgets that lye within both
1409
1419
  var similarTargets = showTargets.filter( hideTargets ).add( hideTargets.filter(showTargets) ),
1410
1420
  toggleEvents = [];
@@ -1426,7 +1436,7 @@ PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTarget
1426
1436
  // Bind toggle events to the similar targets
1427
1437
  this._bind(similarTargets, toggleEvents, function(event) {
1428
1438
  var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;
1429
- (state ? hideMethod : showMethod).call(this, event);
1439
+ (state ? hideCallback : showCallback).call(this, event);
1430
1440
  });
1431
1441
 
1432
1442
  // Remove the similar targets from the regular show/hide bindings
@@ -1436,8 +1446,8 @@ PROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTarget
1436
1446
  }
1437
1447
 
1438
1448
  // Apply show/hide/toggle events
1439
- this._bind(showTargets, showEvents, showMethod);
1440
- this._bind(hideTargets, hideEvents, hideMethod);
1449
+ this._bind(showTargets, showEvents, showCallback);
1450
+ this._bind(hideTargets, hideEvents, hideCallback);
1441
1451
  };
1442
1452
 
1443
1453
  PROTOTYPE._assignInitialEvents = function(event) {
@@ -1448,7 +1458,7 @@ PROTOTYPE._assignInitialEvents = function(event) {
1448
1458
  hideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];
1449
1459
 
1450
1460
  // Catch remove/removeqtip events on target element to destroy redundant tooltips
1451
- this._bind(this.elements.target, ['remove', 'removeqtip'], function(event) {
1461
+ this._bind(this.elements.target, ['remove', 'removeqtip'], function() {
1452
1462
  this.destroy(true);
1453
1463
  }, 'destroy');
1454
1464
 
@@ -1465,24 +1475,24 @@ PROTOTYPE._assignInitialEvents = function(event) {
1465
1475
  * on show targets before the tooltip has rendered. Also set onTarget when triggered to
1466
1476
  * keep mouse tracking working.
1467
1477
  */
1468
- this._bind(showTarget, 'mousemove', function(event) {
1469
- this._storeMouse(event);
1478
+ this._bind(showTarget, 'mousemove', function(moveEvent) {
1479
+ this._storeMouse(moveEvent);
1470
1480
  this.cache.onTarget = TRUE;
1471
1481
  });
1472
1482
 
1473
1483
  // Define hoverIntent function
1474
- function hoverIntent(event) {
1484
+ function hoverIntent(hoverEvent) {
1475
1485
  // Only continue if tooltip isn't disabled
1476
1486
  if(this.disabled || this.destroyed) { return FALSE; }
1477
1487
 
1478
1488
  // Cache the event data
1479
- this.cache.event = event && $.event.fix(event);
1480
- this.cache.target = event && $(event.target);
1489
+ this.cache.event = hoverEvent && $.event.fix(hoverEvent);
1490
+ this.cache.target = hoverEvent && $(hoverEvent.target);
1481
1491
 
1482
1492
  // Start the event sequence
1483
1493
  clearTimeout(this.timers.show);
1484
1494
  this.timers.show = delay.call(this,
1485
- function() { this.render(typeof event === 'object' || options.show.ready); },
1495
+ function() { this.render(typeof hoverEvent === 'object' || options.show.ready); },
1486
1496
  options.prerender ? 0 : options.show.delay
1487
1497
  );
1488
1498
  }
@@ -1509,7 +1519,6 @@ PROTOTYPE._assignEvents = function() {
1509
1519
  containerTarget = posOptions.container,
1510
1520
  viewportTarget = posOptions.viewport,
1511
1521
  documentTarget = $(document),
1512
- bodyTarget = $(document.body),
1513
1522
  windowTarget = $(window),
1514
1523
 
1515
1524
  showEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],
@@ -1699,7 +1708,7 @@ function init(elem, id, opts) {
1699
1708
  newTarget = elem[0] === document ? docBody : elem,
1700
1709
 
1701
1710
  // Grab metadata from element if plugin is present
1702
- metadata = (elem.metadata) ? elem.metadata(opts.metadata) : NULL,
1711
+ metadata = elem.metadata ? elem.metadata(opts.metadata) : NULL,
1703
1712
 
1704
1713
  // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise
1705
1714
  metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,
@@ -1708,7 +1717,10 @@ function init(elem, id, opts) {
1708
1717
  html5 = elem.data(opts.metadata.name || 'qtipopts');
1709
1718
 
1710
1719
  // If we don't get an object returned attempt to parse it manualyl without parseJSON
1711
- try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; } catch(e) {}
1720
+ /* eslint-disable no-empty */
1721
+ try { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; }
1722
+ catch(e) {}
1723
+ /* eslint-enable no-empty */
1712
1724
 
1713
1725
  // Merge in and sanitize metadata
1714
1726
  config = $.extend(TRUE, {}, QTIP.defaults, opts,
@@ -1781,7 +1793,7 @@ QTIP = $.fn.qtip = function(options, notation, newValue)
1781
1793
  opts = this[0] ? $.data(this[0], NAMESPACE) : NULL;
1782
1794
 
1783
1795
  // Check for API request
1784
- if((!arguments.length && opts) || command === 'api') {
1796
+ if(!arguments.length && opts || command === 'api') {
1785
1797
  return opts;
1786
1798
  }
1787
1799
 
@@ -1855,7 +1867,7 @@ QTIP.api = {};
1855
1867
  title = 'title',
1856
1868
  api = $.data(self, 'qtip');
1857
1869
 
1858
- if(attr === title && api && 'object' === typeof api && api.options.suppress) {
1870
+ if(attr === title && api && api.options && 'object' === typeof api && 'object' === typeof api.options && api.options.suppress) {
1859
1871
  if(arguments.length < 2) {
1860
1872
  return $.attr(self, oldtitle);
1861
1873
  }
@@ -1875,10 +1887,8 @@ QTIP.api = {};
1875
1887
 
1876
1888
  /* Allow clone to correctly retrieve cached title attributes */
1877
1889
  clone: function(keepData) {
1878
- var titles = $([]), title = 'title',
1879
-
1880
1890
  // Clone our element using the real clone method
1881
- elems = $.fn['clone'+replaceSuffix].apply(this, arguments);
1891
+ var elems = $.fn['clone'+replaceSuffix].apply(this, arguments);
1882
1892
 
1883
1893
  // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false
1884
1894
  if(!keepData) {
@@ -1908,15 +1918,17 @@ if(!$.ui) {
1908
1918
  $.cleanData = function( elems ) {
1909
1919
  for(var i = 0, elem; (elem = $( elems[i] )).length; i++) {
1910
1920
  if(elem.attr(ATTR_HAS)) {
1921
+ /* eslint-disable no-empty */
1911
1922
  try { elem.triggerHandler('removeqtip'); }
1912
1923
  catch( e ) {}
1924
+ /* eslint-enable no-empty */
1913
1925
  }
1914
1926
  }
1915
1927
  $['cleanData'+replaceSuffix].apply(this, arguments);
1916
1928
  };
1917
1929
  }
1918
1930
  ;// qTip version
1919
- QTIP.version = '2.2.1';
1931
+ QTIP.version = '3.0.2';
1920
1932
 
1921
1933
  // Base ID for all qTips
1922
1934
  QTIP.nextid = 0;
@@ -1952,7 +1964,7 @@ QTIP.defaults = {
1952
1964
  resize: TRUE,
1953
1965
  method: 'flipinvert flipinvert'
1954
1966
  },
1955
- effect: function(api, pos, viewport) {
1967
+ effect: function(api, pos) {
1956
1968
  $(this).animate(pos, {
1957
1969
  duration: 200,
1958
1970
  queue: FALSE
@@ -1998,9 +2010,10 @@ QTIP.defaults = {
1998
2010
  }
1999
2011
  };
2000
2012
  ;var TIP,
2001
-
2002
- // .bind()/.on() namespace
2003
- TIPNS = '.qtip-tip',
2013
+ createVML,
2014
+ SCALE,
2015
+ PIXEL_RATIO,
2016
+ BACKING_STORE_RATIO,
2004
2017
 
2005
2018
  // Common CSS strings
2006
2019
  MARGIN = 'margin',
@@ -2024,7 +2037,7 @@ function camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }
2024
2037
  * Modified from Modernizr's testPropsAll()
2025
2038
  * http://modernizr.com/downloads/modernizr-latest.js
2026
2039
  */
2027
- var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"];
2040
+ var cssProps = {}, cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'];
2028
2041
  function vendorCss(elem, prop) {
2029
2042
  var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
2030
2043
  props = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),
@@ -2033,9 +2046,10 @@ function vendorCss(elem, prop) {
2033
2046
  // If the property has already been mapped...
2034
2047
  if(cssProps[prop]) { return elem.css(cssProps[prop]); }
2035
2048
 
2036
- while((cur = props[i++])) {
2049
+ while(cur = props[i++]) {
2037
2050
  if((val = elem.css(cur)) !== undefined) {
2038
- return cssProps[prop] = cur, val;
2051
+ cssProps[prop] = cur;
2052
+ return val;
2039
2053
  }
2040
2054
  }
2041
2055
  }
@@ -2048,7 +2062,7 @@ function intCss(elem, prop) {
2048
2062
 
2049
2063
  // VML creation (for IE only)
2050
2064
  if(!HASCANVAS) {
2051
- var createVML = function(tag, props, style) {
2065
+ createVML = function(tag, props, style) {
2052
2066
  return '<qtipvml:'+tag+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(props||'')+
2053
2067
  ' style="behavior: url(#default#VML); '+(style||'')+ '" />';
2054
2068
  };
@@ -2056,13 +2070,13 @@ if(!HASCANVAS) {
2056
2070
 
2057
2071
  // Canvas only definitions
2058
2072
  else {
2059
- var PIXEL_RATIO = window.devicePixelRatio || 1,
2060
- BACKING_STORE_RATIO = (function() {
2061
- var context = document.createElement('canvas').getContext('2d');
2062
- return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||
2063
- context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
2064
- }()),
2065
- SCALE = PIXEL_RATIO / BACKING_STORE_RATIO;
2073
+ PIXEL_RATIO = window.devicePixelRatio || 1;
2074
+ BACKING_STORE_RATIO = (function() {
2075
+ var context = document.createElement('canvas').getContext('2d');
2076
+ return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||
2077
+ context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;
2078
+ })();
2079
+ SCALE = PIXEL_RATIO / BACKING_STORE_RATIO;
2066
2080
  }
2067
2081
 
2068
2082
 
@@ -2073,7 +2087,8 @@ function Tip(qtip, options) {
2073
2087
  this.size = [ options.width, options.height ];
2074
2088
 
2075
2089
  // Initialize
2076
- this.init( (this.qtip = qtip) );
2090
+ this.qtip = qtip;
2091
+ this.init(qtip);
2077
2092
  }
2078
2093
 
2079
2094
  $.extend(Tip.prototype, {
@@ -2120,7 +2135,7 @@ $.extend(Tip.prototype, {
2120
2135
  _useTitle: function(corner) {
2121
2136
  var titlebar = this.qtip.elements.titlebar;
2122
2137
  return titlebar && (
2123
- corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight(TRUE))
2138
+ corner.y === TOP || corner.y === CENTER && this.element.position().top + this.size[1] / 2 + this.options.offset < titlebar.outerHeight(TRUE)
2124
2139
  );
2125
2140
  },
2126
2141
 
@@ -2146,11 +2161,11 @@ $.extend(Tip.prototype, {
2146
2161
  var elements = this.qtip.elements,
2147
2162
  prop = BORDER + camel(side) + 'Width';
2148
2163
 
2149
- return (use ? intCss(use, prop) : (
2164
+ return (use ? intCss(use, prop) :
2150
2165
  intCss(elements.content, prop) ||
2151
2166
  intCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||
2152
2167
  intCss(elements.tooltip, prop)
2153
- )) || 0;
2168
+ ) || 0;
2154
2169
  },
2155
2170
 
2156
2171
  _parseRadius: function(corner) {
@@ -2164,7 +2179,7 @@ $.extend(Tip.prototype, {
2164
2179
 
2165
2180
  _invalidColour: function(elem, prop, compare) {
2166
2181
  var val = elem.css(prop);
2167
- return !val || (compare && val === elem.css(compare)) || INVALID.test(val) ? FALSE : val;
2182
+ return !val || compare && val === elem.css(compare) || INVALID.test(val) ? FALSE : val;
2168
2183
  },
2169
2184
 
2170
2185
  _parseColours: function(corner) {
@@ -2190,8 +2205,8 @@ $.extend(Tip.prototype, {
2190
2205
 
2191
2206
  _calculateSize: function(corner) {
2192
2207
  var y = corner.precedance === Y,
2193
- width = this.options['width'],
2194
- height = this.options['height'],
2208
+ width = this.options.width,
2209
+ height = this.options.height,
2195
2210
  isCenter = corner.abbrev() === 'c',
2196
2211
  base = (y ? width: height) * (isCenter ? 0.5 : 1),
2197
2212
  pow = Math.pow,
@@ -2199,7 +2214,10 @@ $.extend(Tip.prototype, {
2199
2214
  bigHyp, ratio, result,
2200
2215
 
2201
2216
  smallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),
2202
- hyp = [ (this.border / base) * smallHyp, (this.border / height) * smallHyp ];
2217
+ hyp = [
2218
+ this.border / base * smallHyp,
2219
+ this.border / height * smallHyp
2220
+ ];
2203
2221
 
2204
2222
  hyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );
2205
2223
  hyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );
@@ -2253,7 +2271,8 @@ $.extend(Tip.prototype, {
2253
2271
  var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);
2254
2272
 
2255
2273
  // If we have a tip corner...
2256
- if( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) {
2274
+ this.enabled = !!this.corner && this.corner.abbrev() !== 'c';
2275
+ if(this.enabled) {
2257
2276
  // Cache it
2258
2277
  this.qtip.cache.corner = c.clone();
2259
2278
 
@@ -2278,7 +2297,7 @@ $.extend(Tip.prototype, {
2278
2297
  mimic = options.mimic,
2279
2298
  round = Math.round,
2280
2299
  color, precedance, context,
2281
- coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO;
2300
+ coords, bigCoords, translate, newSize, border;
2282
2301
 
2283
2302
  // Re-determine tip if not already set
2284
2303
  if(!corner) { corner = this.qtip.cache.corner || this.corner; }
@@ -2385,10 +2404,10 @@ $.extend(Tip.prototype, {
2385
2404
 
2386
2405
  // Set initial CSS
2387
2406
  inner.css({
2388
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2407
+ coordsize: newSize[0]+border + ' ' + newSize[1]+border,
2389
2408
  antialias: ''+(mimic.string().indexOf(CENTER) > -1),
2390
- left: translate[0] - (translate[2] * Number(precedance === X)),
2391
- top: translate[1] - (translate[2] * Number(precedance === Y)),
2409
+ left: translate[0] - translate[2] * Number(precedance === X),
2410
+ top: translate[1] - translate[2] * Number(precedance === Y),
2392
2411
  width: newSize[0] + border,
2393
2412
  height: newSize[1] + border
2394
2413
  })
@@ -2397,7 +2416,7 @@ $.extend(Tip.prototype, {
2397
2416
 
2398
2417
  // Set shape specific attributes
2399
2418
  $this[ $this.prop ? 'prop' : 'attr' ]({
2400
- coordsize: (newSize[0]+border) + ' ' + (newSize[1]+border),
2419
+ coordsize: newSize[0]+border + ' ' + newSize[1]+border,
2401
2420
  path: coords,
2402
2421
  fillcolor: color[0],
2403
2422
  filled: !!i,
@@ -2407,7 +2426,7 @@ $.extend(Tip.prototype, {
2407
2426
 
2408
2427
  // Check if border is enabled and add stroke element
2409
2428
  !i && $this.html( createVML(
2410
- 'stroke', 'weight="'+(border*2)+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"'
2429
+ 'stroke', 'weight="'+border*2+'px" color="'+color[1]+'" miterlimit="1000" joinstyle="miter"'
2411
2430
  ) );
2412
2431
  });
2413
2432
  }
@@ -2432,8 +2451,7 @@ $.extend(Tip.prototype, {
2432
2451
  elements = this.qtip.elements,
2433
2452
  tip = this.element,
2434
2453
  userOffset = this.options.offset,
2435
- isWidget = elements.tooltip.hasClass('ui-widget'),
2436
- position = { },
2454
+ position = {},
2437
2455
  precedance, corners;
2438
2456
 
2439
2457
  // Inherit corner if not provided
@@ -2461,7 +2479,7 @@ $.extend(Tip.prototype, {
2461
2479
  bc = self._parseWidth(corner, side, elements.content);
2462
2480
  br = self._parseRadius(corner);
2463
2481
 
2464
- position[ side ] = Math.max(-self.border, i ? bc : (userOffset + (br > b ? br : -b)));
2482
+ position[ side ] = Math.max(-self.border, i ? bc : userOffset + (br > b ? br : -b));
2465
2483
  }
2466
2484
  });
2467
2485
 
@@ -2473,7 +2491,7 @@ $.extend(Tip.prototype, {
2473
2491
  return position;
2474
2492
  },
2475
2493
 
2476
- reposition: function(event, api, pos, viewport) {
2494
+ reposition: function(event, api, pos) {
2477
2495
  if(!this.enabled) { return; }
2478
2496
 
2479
2497
  var cache = api.cache,
@@ -2492,7 +2510,8 @@ $.extend(Tip.prototype, {
2492
2510
  }
2493
2511
  else if(direction !== SHIFT && adjust[side]){
2494
2512
  newCorner[precedance] = newCorner[precedance] === CENTER ?
2495
- (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side);
2513
+ adjust[side] > 0 ? side : opposite :
2514
+ newCorner[precedance] === side ? opposite : side;
2496
2515
  }
2497
2516
  }
2498
2517
 
@@ -2534,8 +2553,14 @@ $.extend(Tip.prototype, {
2534
2553
  offset.user = this.offset;
2535
2554
 
2536
2555
  // Perform shift adjustments
2537
- if(shift.left = (horizontal === SHIFT && !!adjust.left)) { shiftonly(X, LEFT, RIGHT); }
2538
- if(shift.top = (vertical === SHIFT && !!adjust.top)) { shiftonly(Y, TOP, BOTTOM); }
2556
+ shift.left = horizontal === SHIFT && !!adjust.left;
2557
+ if(shift.left) {
2558
+ shiftonly(X, LEFT, RIGHT);
2559
+ }
2560
+ shift.top = vertical === SHIFT && !!adjust.top;
2561
+ if(shift.top) {
2562
+ shiftonly(Y, TOP, BOTTOM);
2563
+ }
2539
2564
 
2540
2565
  /*
2541
2566
  * If the tip is adjusted in both dimensions, or in a
@@ -2543,7 +2568,7 @@ $.extend(Tip.prototype, {
2543
2568
  * outer border, hide it!
2544
2569
  */
2545
2570
  this.element.css(css).toggle(
2546
- !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x))
2571
+ !(shift.x && shift.y || newCorner.x === CENTER && shift.y || newCorner.y === CENTER && shift.x)
2547
2572
  );
2548
2573
 
2549
2574
  // Adjust position to accomodate tip dimensions
@@ -2628,8 +2653,9 @@ OVERLAY = function()
2628
2653
  {
2629
2654
  var self = this,
2630
2655
  focusableElems = {},
2631
- current, onLast,
2632
- prevState, elem;
2656
+ current,
2657
+ prevState,
2658
+ elem;
2633
2659
 
2634
2660
  // Modified code from jQuery UI 1.10.0 source
2635
2661
  // http://code.jquery.com/ui/1.10.0/jquery-ui.js
@@ -2650,12 +2676,13 @@ OVERLAY = function()
2650
2676
  img = $('img[usemap=#' + mapName + ']')[0];
2651
2677
  return !!img && img.is(':visible');
2652
2678
  }
2653
- return (/input|select|textarea|button|object/.test( nodeName ) ?
2654
- !element.disabled :
2655
- 'a' === nodeName ?
2656
- element.href || isTabIndexNotNaN :
2657
- isTabIndexNotNaN
2658
- );
2679
+
2680
+ return /input|select|textarea|button|object/.test( nodeName ) ?
2681
+ !element.disabled :
2682
+ 'a' === nodeName ?
2683
+ element.href || isTabIndexNotNaN :
2684
+ isTabIndexNotNaN
2685
+ ;
2659
2686
  }
2660
2687
 
2661
2688
  // Focus inputs using cached focusable elements (see update())
@@ -2678,7 +2705,7 @@ OVERLAY = function()
2678
2705
 
2679
2706
  // Determine if input container target is above this
2680
2707
  targetOnTop = container.length < 1 ? FALSE :
2681
- (parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10));
2708
+ parseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10);
2682
2709
 
2683
2710
  // If we're showing a modal, but focus has landed on an input below
2684
2711
  // this modal, divert focus to the first visible input in this modal
@@ -2686,9 +2713,6 @@ OVERLAY = function()
2686
2713
  if(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) {
2687
2714
  focusInputs(target);
2688
2715
  }
2689
-
2690
- // Detect when we leave the last focusable element...
2691
- onLast = event.target === focusableElems[focusableElems.length - 1];
2692
2716
  }
2693
2717
 
2694
2718
  $.extend(self, {
@@ -2735,14 +2759,12 @@ OVERLAY = function()
2735
2759
  },
2736
2760
 
2737
2761
  toggle: function(api, state, duration) {
2738
- var docBody = $(document.body),
2739
- tooltip = api.tooltip,
2762
+ var tooltip = api.tooltip,
2740
2763
  options = api.options.show.modal,
2741
2764
  effect = options.effect,
2742
2765
  type = state ? 'show': 'hide',
2743
2766
  visible = elem.is(':visible'),
2744
- visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip),
2745
- zindex;
2767
+ visibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip);
2746
2768
 
2747
2769
  // Set active tooltip API reference
2748
2770
  self.update(api);
@@ -2762,7 +2784,7 @@ OVERLAY = function()
2762
2784
  }
2763
2785
 
2764
2786
  // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible
2765
- if((elem.is(':animated') && visible === state && prevState !== FALSE) || (!state && visibleModals.length)) {
2787
+ if(elem.is(':animated') && visible === state && prevState !== FALSE || !state && visibleModals.length) {
2766
2788
  return self;
2767
2789
  }
2768
2790
 
@@ -2813,7 +2835,8 @@ function Modal(api, options) {
2813
2835
  this.options = options;
2814
2836
  this._ns = '-modal';
2815
2837
 
2816
- this.init( (this.qtip = api) );
2838
+ this.qtip = api;
2839
+ this.init(api);
2817
2840
  }
2818
2841
 
2819
2842
  $.extend(Modal.prototype, {
@@ -2836,9 +2859,12 @@ $.extend(Modal.prototype, {
2836
2859
  // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop
2837
2860
  if(event.target === tooltip[0]) {
2838
2861
  if(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) {
2839
- try { event.preventDefault(); } catch(e) {}
2862
+ /* eslint-disable no-empty */
2863
+ try { event.preventDefault(); }
2864
+ catch(e) {}
2865
+ /* eslint-enable no-empty */
2840
2866
  }
2841
- else if(!oEvent || (oEvent && oEvent.type !== 'tooltipsolo')) {
2867
+ else if(!oEvent || oEvent && oEvent.type !== 'tooltipsolo') {
2842
2868
  this.toggle(event, event.type === 'tooltipshow', duration);
2843
2869
  }
2844
2870
  }
@@ -2875,7 +2901,10 @@ $.extend(Modal.prototype, {
2875
2901
  OVERLAY.update(api);
2876
2902
 
2877
2903
  // Prevent default handling
2878
- try { event.preventDefault(); } catch(e) {}
2904
+ /* eslint-disable no-empty */
2905
+ try { event.preventDefault(); }
2906
+ catch(e) {}
2907
+ /* eslint-enable no-empty */
2879
2908
  }, this._ns, this);
2880
2909
 
2881
2910
  // Focus any other visible modals when this one hides
@@ -2921,7 +2950,9 @@ MODAL.sanitize = function(opts) {
2921
2950
  };
2922
2951
 
2923
2952
  // Base z-index for all modal tooltips (use qTip core z-index as a base)
2953
+ /* eslint-disable camelcase */
2924
2954
  QTIP.modal_zindex = QTIP.zindex - 200;
2955
+ /* eslint-enable camelcase */
2925
2956
 
2926
2957
  // Plugin needs to be initialized on render
2927
2958
  MODAL.initialize = 'render';
@@ -2964,7 +2995,6 @@ $.extend(TRUE, QTIP.defaults, {
2964
2995
  methodY = method[1] || method[0],
2965
2996
  viewport = posOptions.viewport,
2966
2997
  container = posOptions.container,
2967
- cache = api.cache,
2968
2998
  adjusted = { left: 0, top: 0 },
2969
2999
  fixed, newMy, containerOffset, containerStatic,
2970
3000
  viewportWidth, viewportHeight, viewportScroll, viewportOffset;
@@ -2986,7 +3016,7 @@ $.extend(TRUE, QTIP.defaults, {
2986
3016
  viewportOffset = viewport.offset() || adjusted;
2987
3017
 
2988
3018
  // Generic calculation method
2989
- function calculate(side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength) {
3019
+ function calculate(side, otherSide, type, adjustment, side1, side2, lengthName, targetLength, elemLength) {
2990
3020
  var initialPos = position[side1],
2991
3021
  mySide = my[side],
2992
3022
  atSide = at[side],
@@ -3024,22 +3054,22 @@ $.extend(TRUE, QTIP.defaults, {
3024
3054
  // flip/flipinvert
3025
3055
  else {
3026
3056
  // Update adjustment amount depending on if using flipinvert or flip
3027
- adjust *= (type === FLIPINVERT ? 2 : 0);
3057
+ adjustment *= type === FLIPINVERT ? 2 : 0;
3028
3058
 
3029
3059
  // Check for overflow on the left/top
3030
3060
  if(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {
3031
- position[side1] -= offset + adjust;
3061
+ position[side1] -= offset + adjustment;
3032
3062
  newMy.invert(side, side1);
3033
3063
  }
3034
3064
 
3035
3065
  // Check for overflow on the bottom/right
3036
3066
  else if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {
3037
- position[side1] -= (mySide === CENTER ? -offset : offset) + adjust;
3067
+ position[side1] -= (mySide === CENTER ? -offset : offset) + adjustment;
3038
3068
  newMy.invert(side, side2);
3039
3069
  }
3040
3070
 
3041
3071
  // Make sure we haven't made things worse with the adjustment and reset if so
3042
- if(position[side1] < viewportScroll && -position[side1] > overflow2) {
3072
+ if(position[side1] < viewportScroll[side1] && -position[side1] > overflow2) {
3043
3073
  position[side1] = initialPos; newMy = my.clone();
3044
3074
  }
3045
3075
  }
@@ -3079,7 +3109,8 @@ $.extend(TRUE, QTIP.defaults, {
3079
3109
  newWidth, newHeight;
3080
3110
 
3081
3111
  // First pass, sanitize coords and determine outer edges
3082
- i = baseCoords.length; while(i--) {
3112
+ i = baseCoords.length;
3113
+ while(i--) {
3083
3114
  next = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];
3084
3115
 
3085
3116
  if(next[0] > result.position.right){ result.position.right = next[0]; }
@@ -3097,8 +3128,8 @@ $.extend(TRUE, QTIP.defaults, {
3097
3128
  // If it's the center corner...
3098
3129
  if(corner.abbrev() === 'c') {
3099
3130
  result.position = {
3100
- left: result.position.left + (result.width / 2),
3101
- top: result.position.top + (result.height / 2)
3131
+ left: result.position.left + result.width / 2,
3132
+ top: result.position.top + result.height / 2
3102
3133
  };
3103
3134
  }
3104
3135
  else {
@@ -3116,19 +3147,21 @@ $.extend(TRUE, QTIP.defaults, {
3116
3147
  else if(corner.y === BOTTOM){ compareY = result.height - newHeight; }
3117
3148
  else{ compareY += Math.floor(newHeight / 2); }
3118
3149
 
3119
- i = coords.length; while(i--)
3150
+ i = coords.length;
3151
+ while(i--)
3120
3152
  {
3121
3153
  if(coords.length < 2){ break; }
3122
3154
 
3123
3155
  realX = coords[i][0] - result.position.left;
3124
3156
  realY = coords[i][1] - result.position.top;
3125
3157
 
3126
- if((corner.x === LEFT && realX >= compareX) ||
3127
- (corner.x === RIGHT && realX <= compareX) ||
3128
- (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) ||
3129
- (corner.y === TOP && realY >= compareY) ||
3130
- (corner.y === BOTTOM && realY <= compareY) ||
3131
- (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY)))) {
3158
+ if(
3159
+ corner.x === LEFT && realX >= compareX ||
3160
+ corner.x === RIGHT && realX <= compareX ||
3161
+ corner.x === CENTER && (realX < compareX || realX > result.width - compareX) ||
3162
+ corner.y === TOP && realY >= compareY ||
3163
+ corner.y === BOTTOM && realY <= compareY ||
3164
+ corner.y === CENTER && (realY < compareY || realY > result.height - compareY)) {
3132
3165
  coords.splice(i, 1);
3133
3166
  }
3134
3167
  }
@@ -3161,8 +3194,8 @@ $.extend(TRUE, QTIP.defaults, {
3161
3194
  rys = ry * Math.sin( c * Math.PI );
3162
3195
 
3163
3196
  return {
3164
- width: (rx * 2) - Math.abs(rxc),
3165
- height: (ry * 2) - Math.abs(rys),
3197
+ width: rx * 2 - Math.abs(rxc),
3198
+ height: ry * 2 - Math.abs(rys),
3166
3199
  position: {
3167
3200
  left: cx + rxc,
3168
3201
  top: cy + rys
@@ -3176,14 +3209,13 @@ $.extend(TRUE, QTIP.defaults, {
3176
3209
  };
3177
3210
  ;PLUGINS.svg = function(api, svg, corner)
3178
3211
  {
3179
- var doc = $(document),
3180
- elem = svg[0],
3212
+ var elem = svg[0],
3181
3213
  root = $(elem.ownerSVGElement),
3182
3214
  ownerDocument = elem.ownerDocument,
3183
3215
  strokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2,
3184
- frameOffset, mtx, transformed, viewBox,
3216
+ frameOffset, mtx, transformed,
3185
3217
  len, next, i, points,
3186
- result, position, dimensions;
3218
+ result, position;
3187
3219
 
3188
3220
  // Ascend the parentNode chain until we find an element with getBBox()
3189
3221
  while(!elem.getBBox) { elem = elem.parentNode; }
@@ -3265,7 +3297,7 @@ $.extend(TRUE, QTIP.defaults, {
3265
3297
 
3266
3298
  return result;
3267
3299
  };
3268
- ;PLUGINS.imagemap = function(api, area, corner, adjustMethod)
3300
+ ;PLUGINS.imagemap = function(api, area, corner)
3269
3301
  {
3270
3302
  if(!area.jquery) { area = $(area); }
3271
3303
 
@@ -3273,7 +3305,7 @@ $.extend(TRUE, QTIP.defaults, {
3273
3305
  image = $('img[usemap="#'+area.parent('map').attr('name')+'"]'),
3274
3306
  coordsString = $.trim(area.attr('coords')),
3275
3307
  coordsArray = coordsString.replace(/,$/, '').split(','),
3276
- imageOffset, coords, i, next, result, len;
3308
+ imageOffset, coords, i, result, len;
3277
3309
 
3278
3310
  // If we can't find the image using the map...
3279
3311
  if(!image.length) { return FALSE; }
@@ -3318,9 +3350,11 @@ BGIFRAME = '<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="jav
3318
3350
  ' style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); ' +
3319
3351
  '-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';
3320
3352
 
3321
- function Ie6(api, qtip) {
3353
+ function Ie6(api) {
3322
3354
  this._ns = 'ie6';
3323
- this.init( (this.qtip = api) );
3355
+
3356
+ this.qtip = api;
3357
+ this.init(api);
3324
3358
  }
3325
3359
 
3326
3360
  $.extend(Ie6.prototype, {
@@ -3330,8 +3364,7 @@ $.extend(Ie6.prototype, {
3330
3364
  },
3331
3365
 
3332
3366
  init: function(qtip) {
3333
- var tooltip = qtip.tooltip,
3334
- scroll;
3367
+ var tooltip = qtip.tooltip;
3335
3368
 
3336
3369
  // Create the BGIFrame element if needed
3337
3370
  if($('select, object').length < 1) {
@@ -3371,7 +3404,7 @@ $.extend(Ie6.prototype, {
3371
3404
 
3372
3405
  // Adjust for tips plugin
3373
3406
  if(plugin && tip) {
3374
- tipAdjust = (plugin.corner.precedance === 'x') ? [WIDTH, LEFT] : [HEIGHT, TOP];
3407
+ tipAdjust = plugin.corner.precedance === 'x' ? [WIDTH, LEFT] : [HEIGHT, TOP];
3375
3408
  offset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ]();
3376
3409
  }
3377
3410
 
@@ -3410,8 +3443,8 @@ $.extend(Ie6.prototype, {
3410
3443
 
3411
3444
  // Parse into proper pixel values
3412
3445
  perc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0;
3413
- max = ((max.indexOf('%') > -1 ? perc : 1) * parseInt(max, 10)) || width;
3414
- min = ((min.indexOf('%') > -1 ? perc : 1) * parseInt(min, 10)) || 0;
3446
+ max = (max.indexOf('%') > -1 ? perc : 1 * parseInt(max, 10)) || width;
3447
+ min = (min.indexOf('%') > -1 ? perc : 1 * parseInt(min, 10)) || 0;
3415
3448
 
3416
3449
  // Determine new dimension size based on max/min/current values
3417
3450
  width = max + min ? Math.min(Math.max(width, min), max) : width;
@@ -3448,4 +3481,4 @@ CHECKS.ie6 = {
3448
3481
  }
3449
3482
  };
3450
3483
  ;}));
3451
- }( window, document ));
3484
+ }( window, document ));