15774 lines
996 KiB
Diff
15774 lines
996 KiB
Diff
Binary files doxygen-1.8.14.orig/jquery/._jquery-3.6.0.min.js and doxygen-1.8.14/jquery/._jquery-3.6.0.min.js differ
|
||
diff -Nur doxygen-1.8.14.orig/jquery/Makefile doxygen-1.8.14/jquery/Makefile
|
||
--- doxygen-1.8.14.orig/jquery/Makefile 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/Makefile 2021-06-27 13:30:43.000000000 +0200
|
||
@@ -1,34 +1,27 @@
|
||
-JQUERY_VERSION = 1.7.1
|
||
-JQUERY_UI_VERSION = 1.8.18
|
||
-HASHCHANGE_VERSION = 1.3
|
||
-SCROLL_VERSION = 1.4.2
|
||
-POWERTIP_VERSION = 1.2.0
|
||
+JQUERY_VERSION = 3.6.0
|
||
+JQUERY_UI_VERSION = 1.12.1
|
||
+SCROLL_VERSION = 2.1.2
|
||
+POWERTIP_VERSION = 1.3.1
|
||
TOUCHPUNCH_VERSION = 0.2.3
|
||
-SMARTMENUS_VERSION = 1.0.0
|
||
+SMARTMENUS_VERSION = 1.1.0
|
||
|
||
-MINIFIER ?= /usr/local/bin/yuicompressor-2.4.7
|
||
-SCRIPTS = jquery-$(JQUERY_VERSION).js \
|
||
- jquery.ui-$(JQUERY_UI_VERSION).core.js \
|
||
- jquery.ui-$(JQUERY_UI_VERSION).widget.js \
|
||
- jquery.ui-$(JQUERY_UI_VERSION).mouse.js \
|
||
- jquery.ui-$(JQUERY_UI_VERSION).resizable.js \
|
||
- jquery.ba-$(HASHCHANGE_VERSION)-hashchange.js \
|
||
- jquery.scrollTo-$(SCROLL_VERSION).js \
|
||
- jquery.powertip-$(POWERTIP_VERSION).js \
|
||
- jquery.ui-$(TOUCHPUNCH_VERSION).touch-punch.js \
|
||
- jquery.smartmenus-$(SMARTMENUS_VERSION).js
|
||
+MINIFIER ?= /usr/local/bin/yuicompressor-2.4.8
|
||
+SCRIPTS = jquery-$(JQUERY_VERSION).min.js \
|
||
+ jquery.ui-$(JQUERY_UI_VERSION).min.js \
|
||
+ jquery.scrollTo-$(SCROLL_VERSION).min.js \
|
||
+ jquery.powertip-$(POWERTIP_VERSION).mod.min.js \
|
||
+ jquery.ui.touch-punch-$(TOUCHPUNCH_VERSION).min.js \
|
||
+ jquery.smartmenus-$(SMARTMENUS_VERSION).min.js
|
||
RESULTS = jquery.js doxmenu-min.css
|
||
|
||
-SCRIPTS_MIN = $(SCRIPTS:%.js=%-min.js)
|
||
-
|
||
all: $(RESULTS)
|
||
|
||
install: $(RESULTS)
|
||
cp jquery.js ../templates/html/jquery.js
|
||
cp doxmenu-min.css ../templates/html/tabs.css
|
||
|
||
-jquery.js: $(SCRIPTS_MIN)
|
||
- cat $(SCRIPTS_MIN) > jquery.js
|
||
+jquery.js: $(SCRIPTS)
|
||
+ cat $(SCRIPTS) > jquery.js
|
||
|
||
doxmenu-min.css: sm-core-css.css \
|
||
sass/sm-dox.scss \
|
||
@@ -40,11 +33,6 @@
|
||
java -jar $(MINIFIER).jar doxmenu.css > doxmenu-min.css
|
||
rm -f sm-dox.css doxmenu.css
|
||
|
||
-scripts: $(SCRIPTS_MIN)
|
||
-
|
||
clean:
|
||
- rm -rf $(SCRIPTS_MIN) $(RESULTS) doxmenu.css .sass-cache jquery.js
|
||
-
|
||
-%-min.js: %.js
|
||
- java -jar $(MINIFIER).jar $^ > $@
|
||
+ rm -rf $(RESULTS) doxmenu.css .sass-cache
|
||
|
||
diff -Nur doxygen-1.8.14.orig/jquery/README doxygen-1.8.14/jquery/README
|
||
--- doxygen-1.8.14.orig/jquery/README 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/README 2021-06-27 13:30:36.000000000 +0200
|
||
@@ -1,16 +1,20 @@
|
||
Doxygen's jquery.js script is composed of minified versions of the following
|
||
packages:
|
||
-- jquery 1.7.1: http://jquery.com/download/
|
||
-- jquery.ui 1.8.18: https://code.google.com/p/jquery-ui/downloads/list
|
||
+- jquery 3.6.0: https://jquery.com/download/
|
||
+- jquery.ui 1.12.1: https://github.com/jquery/jquery-ui
|
||
modules required:
|
||
- - jquery.ui.core
|
||
- - jquery.ui.widget
|
||
- - jquery.ui.mouse
|
||
- - jquery.ui.resizable
|
||
-- jquery.hashchange: 1.3: http://benalman.com/projects/jquery-hashchange-plugin/
|
||
-- jquery.scrollTo: 1.4.2: https://github.com/flesler/jquery.scrollTo
|
||
-- jquery.powertip: 1.2.0: http://stevenbenner.github.io/jquery-powertip/
|
||
-- jquery.touchpunch: 0.2.3: http://touchpunch.furf.com/
|
||
-- jquery.smartmenus: 1.0.0: http://www.smartmenus.org/
|
||
+ - jquery.ui.core all
|
||
+ - jquery.ui.interactions resizable
|
||
+ - jquery.ui.widgets mouse
|
||
+- jquery.scrollTo: 2.1.2: https://github.com/flesler/jquery.scrollTo
|
||
+- jquery.powertip: 1.3.1: https://stevenbenner.github.io/jquery-powertip/
|
||
+- jquery.touchpunch: 0.2.3: http://touchpunch.furf.com/ + fix for issue 303
|
||
+- jquery.smartmenus: 1.1.0: https://www.smartmenus.org/
|
||
|
||
The Makefile will built the jquery.js files used by doxygen.
|
||
+
|
||
+Note that there is a performance issue in the default powertip version.
|
||
+See https://github.com/stevenbenner/jquery-powertip/issues/178
|
||
+Until that is fixed a modified version is shipped with doxygen. This version
|
||
+removes the "destroy" functionality which was not used by doxygen anyway.
|
||
+
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery-1.7.1.js doxygen-1.8.14/jquery/jquery-1.7.1.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery-1.7.1.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery-1.7.1.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,9266 +0,0 @@
|
||
-/*!
|
||
- * jQuery JavaScript Library v1.7.1
|
||
- * http://jquery.com/
|
||
- *
|
||
- * Copyright 2011, John Resig
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * Includes Sizzle.js
|
||
- * http://sizzlejs.com/
|
||
- * Copyright 2011, The Dojo Foundation
|
||
- * Released under the MIT, BSD, and GPL Licenses.
|
||
- *
|
||
- * Date: Mon Nov 21 21:11:03 2011 -0500
|
||
- */
|
||
-(function( window, undefined ) {
|
||
-
|
||
-// Use the correct document accordingly with window argument (sandbox)
|
||
-var document = window.document,
|
||
- navigator = window.navigator,
|
||
- location = window.location;
|
||
-var jQuery = (function() {
|
||
-
|
||
-// Define a local copy of jQuery
|
||
-var jQuery = function( selector, context ) {
|
||
- // The jQuery object is actually just the init constructor 'enhanced'
|
||
- return new jQuery.fn.init( selector, context, rootjQuery );
|
||
- },
|
||
-
|
||
- // Map over jQuery in case of overwrite
|
||
- _jQuery = window.jQuery,
|
||
-
|
||
- // Map over the $ in case of overwrite
|
||
- _$ = window.$,
|
||
-
|
||
- // A central reference to the root jQuery(document)
|
||
- rootjQuery,
|
||
-
|
||
- // A simple way to check for HTML strings or ID strings
|
||
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
||
- quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
|
||
-
|
||
- // Check if a string has a non-whitespace character in it
|
||
- rnotwhite = /\S/,
|
||
-
|
||
- // Used for trimming whitespace
|
||
- trimLeft = /^\s+/,
|
||
- trimRight = /\s+$/,
|
||
-
|
||
- // Match a standalone tag
|
||
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
|
||
-
|
||
- // JSON RegExp
|
||
- rvalidchars = /^[\],:{}\s]*$/,
|
||
- rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
|
||
- rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
|
||
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
|
||
-
|
||
- // Useragent RegExp
|
||
- rwebkit = /(webkit)[ \/]([\w.]+)/,
|
||
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
|
||
- rmsie = /(msie) ([\w.]+)/,
|
||
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
|
||
-
|
||
- // Matches dashed string for camelizing
|
||
- rdashAlpha = /-([a-z]|[0-9])/ig,
|
||
- rmsPrefix = /^-ms-/,
|
||
-
|
||
- // Used by jQuery.camelCase as callback to replace()
|
||
- fcamelCase = function( all, letter ) {
|
||
- return ( letter + "" ).toUpperCase();
|
||
- },
|
||
-
|
||
- // Keep a UserAgent string for use with jQuery.browser
|
||
- userAgent = navigator.userAgent,
|
||
-
|
||
- // For matching the engine and version of the browser
|
||
- browserMatch,
|
||
-
|
||
- // The deferred used on DOM ready
|
||
- readyList,
|
||
-
|
||
- // The ready event handler
|
||
- DOMContentLoaded,
|
||
-
|
||
- // Save a reference to some core methods
|
||
- toString = Object.prototype.toString,
|
||
- hasOwn = Object.prototype.hasOwnProperty,
|
||
- push = Array.prototype.push,
|
||
- slice = Array.prototype.slice,
|
||
- trim = String.prototype.trim,
|
||
- indexOf = Array.prototype.indexOf,
|
||
-
|
||
- // [[Class]] -> type pairs
|
||
- class2type = {};
|
||
-
|
||
-jQuery.fn = jQuery.prototype = {
|
||
- constructor: jQuery,
|
||
- init: function( selector, context, rootjQuery ) {
|
||
- var match, elem, ret, doc;
|
||
-
|
||
- // Handle $(""), $(null), or $(undefined)
|
||
- if ( !selector ) {
|
||
- return this;
|
||
- }
|
||
-
|
||
- // Handle $(DOMElement)
|
||
- if ( selector.nodeType ) {
|
||
- this.context = this[0] = selector;
|
||
- this.length = 1;
|
||
- return this;
|
||
- }
|
||
-
|
||
- // The body element only exists once, optimize finding it
|
||
- if ( selector === "body" && !context && document.body ) {
|
||
- this.context = document;
|
||
- this[0] = document.body;
|
||
- this.selector = selector;
|
||
- this.length = 1;
|
||
- return this;
|
||
- }
|
||
-
|
||
- // Handle HTML strings
|
||
- if ( typeof selector === "string" ) {
|
||
- // Are we dealing with HTML string or an ID?
|
||
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
|
||
- // Assume that strings that start and end with <> are HTML and skip the regex check
|
||
- match = [ null, selector, null ];
|
||
-
|
||
- } else {
|
||
- match = quickExpr.exec( selector );
|
||
- }
|
||
-
|
||
- // Verify a match, and that no context was specified for #id
|
||
- if ( match && (match[1] || !context) ) {
|
||
-
|
||
- // HANDLE: $(html) -> $(array)
|
||
- if ( match[1] ) {
|
||
- context = context instanceof jQuery ? context[0] : context;
|
||
- doc = ( context ? context.ownerDocument || context : document );
|
||
-
|
||
- // If a single string is passed in and it's a single tag
|
||
- // just do a createElement and skip the rest
|
||
- ret = rsingleTag.exec( selector );
|
||
-
|
||
- if ( ret ) {
|
||
- if ( jQuery.isPlainObject( context ) ) {
|
||
- selector = [ document.createElement( ret[1] ) ];
|
||
- jQuery.fn.attr.call( selector, context, true );
|
||
-
|
||
- } else {
|
||
- selector = [ doc.createElement( ret[1] ) ];
|
||
- }
|
||
-
|
||
- } else {
|
||
- ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
|
||
- selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
|
||
- }
|
||
-
|
||
- return jQuery.merge( this, selector );
|
||
-
|
||
- // HANDLE: $("#id")
|
||
- } else {
|
||
- elem = document.getElementById( match[2] );
|
||
-
|
||
- // Check parentNode to catch when Blackberry 4.6 returns
|
||
- // nodes that are no longer in the document #6963
|
||
- if ( elem && elem.parentNode ) {
|
||
- // Handle the case where IE and Opera return items
|
||
- // by name instead of ID
|
||
- if ( elem.id !== match[2] ) {
|
||
- return rootjQuery.find( selector );
|
||
- }
|
||
-
|
||
- // Otherwise, we inject the element directly into the jQuery object
|
||
- this.length = 1;
|
||
- this[0] = elem;
|
||
- }
|
||
-
|
||
- this.context = document;
|
||
- this.selector = selector;
|
||
- return this;
|
||
- }
|
||
-
|
||
- // HANDLE: $(expr, $(...))
|
||
- } else if ( !context || context.jquery ) {
|
||
- return ( context || rootjQuery ).find( selector );
|
||
-
|
||
- // HANDLE: $(expr, context)
|
||
- // (which is just equivalent to: $(context).find(expr)
|
||
- } else {
|
||
- return this.constructor( context ).find( selector );
|
||
- }
|
||
-
|
||
- // HANDLE: $(function)
|
||
- // Shortcut for document ready
|
||
- } else if ( jQuery.isFunction( selector ) ) {
|
||
- return rootjQuery.ready( selector );
|
||
- }
|
||
-
|
||
- if ( selector.selector !== undefined ) {
|
||
- this.selector = selector.selector;
|
||
- this.context = selector.context;
|
||
- }
|
||
-
|
||
- return jQuery.makeArray( selector, this );
|
||
- },
|
||
-
|
||
- // Start with an empty selector
|
||
- selector: "",
|
||
-
|
||
- // The current version of jQuery being used
|
||
- jquery: "1.7.1",
|
||
-
|
||
- // The default length of a jQuery object is 0
|
||
- length: 0,
|
||
-
|
||
- // The number of elements contained in the matched element set
|
||
- size: function() {
|
||
- return this.length;
|
||
- },
|
||
-
|
||
- toArray: function() {
|
||
- return slice.call( this, 0 );
|
||
- },
|
||
-
|
||
- // Get the Nth element in the matched element set OR
|
||
- // Get the whole matched element set as a clean array
|
||
- get: function( num ) {
|
||
- return num == null ?
|
||
-
|
||
- // Return a 'clean' array
|
||
- this.toArray() :
|
||
-
|
||
- // Return just the object
|
||
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
|
||
- },
|
||
-
|
||
- // Take an array of elements and push it onto the stack
|
||
- // (returning the new matched element set)
|
||
- pushStack: function( elems, name, selector ) {
|
||
- // Build a new jQuery matched element set
|
||
- var ret = this.constructor();
|
||
-
|
||
- if ( jQuery.isArray( elems ) ) {
|
||
- push.apply( ret, elems );
|
||
-
|
||
- } else {
|
||
- jQuery.merge( ret, elems );
|
||
- }
|
||
-
|
||
- // Add the old object onto the stack (as a reference)
|
||
- ret.prevObject = this;
|
||
-
|
||
- ret.context = this.context;
|
||
-
|
||
- if ( name === "find" ) {
|
||
- ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
|
||
- } else if ( name ) {
|
||
- ret.selector = this.selector + "." + name + "(" + selector + ")";
|
||
- }
|
||
-
|
||
- // Return the newly-formed element set
|
||
- return ret;
|
||
- },
|
||
-
|
||
- // Execute a callback for every element in the matched set.
|
||
- // (You can seed the arguments with an array of args, but this is
|
||
- // only used internally.)
|
||
- each: function( callback, args ) {
|
||
- return jQuery.each( this, callback, args );
|
||
- },
|
||
-
|
||
- ready: function( fn ) {
|
||
- // Attach the listeners
|
||
- jQuery.bindReady();
|
||
-
|
||
- // Add the callback
|
||
- readyList.add( fn );
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- eq: function( i ) {
|
||
- i = +i;
|
||
- return i === -1 ?
|
||
- this.slice( i ) :
|
||
- this.slice( i, i + 1 );
|
||
- },
|
||
-
|
||
- first: function() {
|
||
- return this.eq( 0 );
|
||
- },
|
||
-
|
||
- last: function() {
|
||
- return this.eq( -1 );
|
||
- },
|
||
-
|
||
- slice: function() {
|
||
- return this.pushStack( slice.apply( this, arguments ),
|
||
- "slice", slice.call(arguments).join(",") );
|
||
- },
|
||
-
|
||
- map: function( callback ) {
|
||
- return this.pushStack( jQuery.map(this, function( elem, i ) {
|
||
- return callback.call( elem, i, elem );
|
||
- }));
|
||
- },
|
||
-
|
||
- end: function() {
|
||
- return this.prevObject || this.constructor(null);
|
||
- },
|
||
-
|
||
- // For internal use only.
|
||
- // Behaves like an Array's method, not like a jQuery method.
|
||
- push: push,
|
||
- sort: [].sort,
|
||
- splice: [].splice
|
||
-};
|
||
-
|
||
-// Give the init function the jQuery prototype for later instantiation
|
||
-jQuery.fn.init.prototype = jQuery.fn;
|
||
-
|
||
-jQuery.extend = jQuery.fn.extend = function() {
|
||
- var options, name, src, copy, copyIsArray, clone,
|
||
- target = arguments[0] || {},
|
||
- i = 1,
|
||
- length = arguments.length,
|
||
- deep = false;
|
||
-
|
||
- // Handle a deep copy situation
|
||
- if ( typeof target === "boolean" ) {
|
||
- deep = target;
|
||
- target = arguments[1] || {};
|
||
- // skip the boolean and the target
|
||
- i = 2;
|
||
- }
|
||
-
|
||
- // Handle case when target is a string or something (possible in deep copy)
|
||
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
|
||
- target = {};
|
||
- }
|
||
-
|
||
- // extend jQuery itself if only one argument is passed
|
||
- if ( length === i ) {
|
||
- target = this;
|
||
- --i;
|
||
- }
|
||
-
|
||
- for ( ; i < length; i++ ) {
|
||
- // Only deal with non-null/undefined values
|
||
- if ( (options = arguments[ i ]) != null ) {
|
||
- // Extend the base object
|
||
- for ( name in options ) {
|
||
- src = target[ name ];
|
||
- copy = options[ name ];
|
||
-
|
||
- // Prevent never-ending loop
|
||
- if ( target === copy ) {
|
||
- continue;
|
||
- }
|
||
-
|
||
- // Recurse if we're merging plain objects or arrays
|
||
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
|
||
- if ( copyIsArray ) {
|
||
- copyIsArray = false;
|
||
- clone = src && jQuery.isArray(src) ? src : [];
|
||
-
|
||
- } else {
|
||
- clone = src && jQuery.isPlainObject(src) ? src : {};
|
||
- }
|
||
-
|
||
- // Never move original objects, clone them
|
||
- target[ name ] = jQuery.extend( deep, clone, copy );
|
||
-
|
||
- // Don't bring in undefined values
|
||
- } else if ( copy !== undefined ) {
|
||
- target[ name ] = copy;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Return the modified object
|
||
- return target;
|
||
-};
|
||
-
|
||
-jQuery.extend({
|
||
- noConflict: function( deep ) {
|
||
- if ( window.$ === jQuery ) {
|
||
- window.$ = _$;
|
||
- }
|
||
-
|
||
- if ( deep && window.jQuery === jQuery ) {
|
||
- window.jQuery = _jQuery;
|
||
- }
|
||
-
|
||
- return jQuery;
|
||
- },
|
||
-
|
||
- // Is the DOM ready to be used? Set to true once it occurs.
|
||
- isReady: false,
|
||
-
|
||
- // A counter to track how many items to wait for before
|
||
- // the ready event fires. See #6781
|
||
- readyWait: 1,
|
||
-
|
||
- // Hold (or release) the ready event
|
||
- holdReady: function( hold ) {
|
||
- if ( hold ) {
|
||
- jQuery.readyWait++;
|
||
- } else {
|
||
- jQuery.ready( true );
|
||
- }
|
||
- },
|
||
-
|
||
- // Handle when the DOM is ready
|
||
- ready: function( wait ) {
|
||
- // Either a released hold or an DOMready/load event and not yet ready
|
||
- if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
|
||
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
|
||
- if ( !document.body ) {
|
||
- return setTimeout( jQuery.ready, 1 );
|
||
- }
|
||
-
|
||
- // Remember that the DOM is ready
|
||
- jQuery.isReady = true;
|
||
-
|
||
- // If a normal DOM Ready event fired, decrement, and wait if need be
|
||
- if ( wait !== true && --jQuery.readyWait > 0 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // If there are functions bound, to execute
|
||
- readyList.fireWith( document, [ jQuery ] );
|
||
-
|
||
- // Trigger any bound ready events
|
||
- if ( jQuery.fn.trigger ) {
|
||
- jQuery( document ).trigger( "ready" ).off( "ready" );
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- bindReady: function() {
|
||
- if ( readyList ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- readyList = jQuery.Callbacks( "once memory" );
|
||
-
|
||
- // Catch cases where $(document).ready() is called after the
|
||
- // browser event has already occurred.
|
||
- if ( document.readyState === "complete" ) {
|
||
- // Handle it asynchronously to allow scripts the opportunity to delay ready
|
||
- return setTimeout( jQuery.ready, 1 );
|
||
- }
|
||
-
|
||
- // Mozilla, Opera and webkit nightlies currently support this event
|
||
- if ( document.addEventListener ) {
|
||
- // Use the handy event callback
|
||
- document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
|
||
-
|
||
- // A fallback to window.onload, that will always work
|
||
- window.addEventListener( "load", jQuery.ready, false );
|
||
-
|
||
- // If IE event model is used
|
||
- } else if ( document.attachEvent ) {
|
||
- // ensure firing before onload,
|
||
- // maybe late but safe also for iframes
|
||
- document.attachEvent( "onreadystatechange", DOMContentLoaded );
|
||
-
|
||
- // A fallback to window.onload, that will always work
|
||
- window.attachEvent( "onload", jQuery.ready );
|
||
-
|
||
- // If IE and not a frame
|
||
- // continually check to see if the document is ready
|
||
- var toplevel = false;
|
||
-
|
||
- try {
|
||
- toplevel = window.frameElement == null;
|
||
- } catch(e) {}
|
||
-
|
||
- if ( document.documentElement.doScroll && toplevel ) {
|
||
- doScrollCheck();
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- // See test/unit/core.js for details concerning isFunction.
|
||
- // Since version 1.3, DOM methods and functions like alert
|
||
- // aren't supported. They return false on IE (#2968).
|
||
- isFunction: function( obj ) {
|
||
- return jQuery.type(obj) === "function";
|
||
- },
|
||
-
|
||
- isArray: Array.isArray || function( obj ) {
|
||
- return jQuery.type(obj) === "array";
|
||
- },
|
||
-
|
||
- // A crude way of determining if an object is a window
|
||
- isWindow: function( obj ) {
|
||
- return obj && typeof obj === "object" && "setInterval" in obj;
|
||
- },
|
||
-
|
||
- isNumeric: function( obj ) {
|
||
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
|
||
- },
|
||
-
|
||
- type: function( obj ) {
|
||
- return obj == null ?
|
||
- String( obj ) :
|
||
- class2type[ toString.call(obj) ] || "object";
|
||
- },
|
||
-
|
||
- isPlainObject: function( obj ) {
|
||
- // Must be an Object.
|
||
- // Because of IE, we also have to check the presence of the constructor property.
|
||
- // Make sure that DOM nodes and window objects don't pass through, as well
|
||
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
|
||
- return false;
|
||
- }
|
||
-
|
||
- try {
|
||
- // Not own constructor property must be Object
|
||
- if ( obj.constructor &&
|
||
- !hasOwn.call(obj, "constructor") &&
|
||
- !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
|
||
- return false;
|
||
- }
|
||
- } catch ( e ) {
|
||
- // IE8,9 Will throw exceptions on certain host objects #9897
|
||
- return false;
|
||
- }
|
||
-
|
||
- // Own properties are enumerated firstly, so to speed up,
|
||
- // if last one is own, then all properties are own.
|
||
-
|
||
- var key;
|
||
- for ( key in obj ) {}
|
||
-
|
||
- return key === undefined || hasOwn.call( obj, key );
|
||
- },
|
||
-
|
||
- isEmptyObject: function( obj ) {
|
||
- for ( var name in obj ) {
|
||
- return false;
|
||
- }
|
||
- return true;
|
||
- },
|
||
-
|
||
- error: function( msg ) {
|
||
- throw new Error( msg );
|
||
- },
|
||
-
|
||
- parseJSON: function( data ) {
|
||
- if ( typeof data !== "string" || !data ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
|
||
- data = jQuery.trim( data );
|
||
-
|
||
- // Attempt to parse using the native JSON parser first
|
||
- if ( window.JSON && window.JSON.parse ) {
|
||
- return window.JSON.parse( data );
|
||
- }
|
||
-
|
||
- // Make sure the incoming data is actual JSON
|
||
- // Logic borrowed from http://json.org/json2.js
|
||
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
|
||
- .replace( rvalidtokens, "]" )
|
||
- .replace( rvalidbraces, "")) ) {
|
||
-
|
||
- return ( new Function( "return " + data ) )();
|
||
-
|
||
- }
|
||
- jQuery.error( "Invalid JSON: " + data );
|
||
- },
|
||
-
|
||
- // Cross-browser xml parsing
|
||
- parseXML: function( data ) {
|
||
- var xml, tmp;
|
||
- try {
|
||
- if ( window.DOMParser ) { // Standard
|
||
- tmp = new DOMParser();
|
||
- xml = tmp.parseFromString( data , "text/xml" );
|
||
- } else { // IE
|
||
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
|
||
- xml.async = "false";
|
||
- xml.loadXML( data );
|
||
- }
|
||
- } catch( e ) {
|
||
- xml = undefined;
|
||
- }
|
||
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
|
||
- jQuery.error( "Invalid XML: " + data );
|
||
- }
|
||
- return xml;
|
||
- },
|
||
-
|
||
- noop: function() {},
|
||
-
|
||
- // Evaluates a script in a global context
|
||
- // Workarounds based on findings by Jim Driscoll
|
||
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
|
||
- globalEval: function( data ) {
|
||
- if ( data && rnotwhite.test( data ) ) {
|
||
- // We use execScript on Internet Explorer
|
||
- // We use an anonymous function so that context is window
|
||
- // rather than jQuery in Firefox
|
||
- ( window.execScript || function( data ) {
|
||
- window[ "eval" ].call( window, data );
|
||
- } )( data );
|
||
- }
|
||
- },
|
||
-
|
||
- // Convert dashed to camelCase; used by the css and data modules
|
||
- // Microsoft forgot to hump their vendor prefix (#9572)
|
||
- camelCase: function( string ) {
|
||
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
||
- },
|
||
-
|
||
- nodeName: function( elem, name ) {
|
||
- return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
|
||
- },
|
||
-
|
||
- // args is for internal usage only
|
||
- each: function( object, callback, args ) {
|
||
- var name, i = 0,
|
||
- length = object.length,
|
||
- isObj = length === undefined || jQuery.isFunction( object );
|
||
-
|
||
- if ( args ) {
|
||
- if ( isObj ) {
|
||
- for ( name in object ) {
|
||
- if ( callback.apply( object[ name ], args ) === false ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- } else {
|
||
- for ( ; i < length; ) {
|
||
- if ( callback.apply( object[ i++ ], args ) === false ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // A special, fast, case for the most common use of each
|
||
- } else {
|
||
- if ( isObj ) {
|
||
- for ( name in object ) {
|
||
- if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- } else {
|
||
- for ( ; i < length; ) {
|
||
- if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return object;
|
||
- },
|
||
-
|
||
- // Use native String.trim function wherever possible
|
||
- trim: trim ?
|
||
- function( text ) {
|
||
- return text == null ?
|
||
- "" :
|
||
- trim.call( text );
|
||
- } :
|
||
-
|
||
- // Otherwise use our own trimming functionality
|
||
- function( text ) {
|
||
- return text == null ?
|
||
- "" :
|
||
- text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
|
||
- },
|
||
-
|
||
- // results is for internal usage only
|
||
- makeArray: function( array, results ) {
|
||
- var ret = results || [];
|
||
-
|
||
- if ( array != null ) {
|
||
- // The window, strings (and functions) also have 'length'
|
||
- // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
|
||
- var type = jQuery.type( array );
|
||
-
|
||
- if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
|
||
- push.call( ret, array );
|
||
- } else {
|
||
- jQuery.merge( ret, array );
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- },
|
||
-
|
||
- inArray: function( elem, array, i ) {
|
||
- var len;
|
||
-
|
||
- if ( array ) {
|
||
- if ( indexOf ) {
|
||
- return indexOf.call( array, elem, i );
|
||
- }
|
||
-
|
||
- len = array.length;
|
||
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
|
||
-
|
||
- for ( ; i < len; i++ ) {
|
||
- // Skip accessing in sparse arrays
|
||
- if ( i in array && array[ i ] === elem ) {
|
||
- return i;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return -1;
|
||
- },
|
||
-
|
||
- merge: function( first, second ) {
|
||
- var i = first.length,
|
||
- j = 0;
|
||
-
|
||
- if ( typeof second.length === "number" ) {
|
||
- for ( var l = second.length; j < l; j++ ) {
|
||
- first[ i++ ] = second[ j ];
|
||
- }
|
||
-
|
||
- } else {
|
||
- while ( second[j] !== undefined ) {
|
||
- first[ i++ ] = second[ j++ ];
|
||
- }
|
||
- }
|
||
-
|
||
- first.length = i;
|
||
-
|
||
- return first;
|
||
- },
|
||
-
|
||
- grep: function( elems, callback, inv ) {
|
||
- var ret = [], retVal;
|
||
- inv = !!inv;
|
||
-
|
||
- // Go through the array, only saving the items
|
||
- // that pass the validator function
|
||
- for ( var i = 0, length = elems.length; i < length; i++ ) {
|
||
- retVal = !!callback( elems[ i ], i );
|
||
- if ( inv !== retVal ) {
|
||
- ret.push( elems[ i ] );
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- },
|
||
-
|
||
- // arg is for internal usage only
|
||
- map: function( elems, callback, arg ) {
|
||
- var value, key, ret = [],
|
||
- i = 0,
|
||
- length = elems.length,
|
||
- // jquery objects are treated as arrays
|
||
- isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
|
||
-
|
||
- // Go through the array, translating each of the items to their
|
||
- if ( isArray ) {
|
||
- for ( ; i < length; i++ ) {
|
||
- value = callback( elems[ i ], i, arg );
|
||
-
|
||
- if ( value != null ) {
|
||
- ret[ ret.length ] = value;
|
||
- }
|
||
- }
|
||
-
|
||
- // Go through every key on the object,
|
||
- } else {
|
||
- for ( key in elems ) {
|
||
- value = callback( elems[ key ], key, arg );
|
||
-
|
||
- if ( value != null ) {
|
||
- ret[ ret.length ] = value;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Flatten any nested arrays
|
||
- return ret.concat.apply( [], ret );
|
||
- },
|
||
-
|
||
- // A global GUID counter for objects
|
||
- guid: 1,
|
||
-
|
||
- // Bind a function to a context, optionally partially applying any
|
||
- // arguments.
|
||
- proxy: function( fn, context ) {
|
||
- if ( typeof context === "string" ) {
|
||
- var tmp = fn[ context ];
|
||
- context = fn;
|
||
- fn = tmp;
|
||
- }
|
||
-
|
||
- // Quick check to determine if target is callable, in the spec
|
||
- // this throws a TypeError, but we will just return undefined.
|
||
- if ( !jQuery.isFunction( fn ) ) {
|
||
- return undefined;
|
||
- }
|
||
-
|
||
- // Simulated bind
|
||
- var args = slice.call( arguments, 2 ),
|
||
- proxy = function() {
|
||
- return fn.apply( context, args.concat( slice.call( arguments ) ) );
|
||
- };
|
||
-
|
||
- // Set the guid of unique handler to the same of original handler, so it can be removed
|
||
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
|
||
-
|
||
- return proxy;
|
||
- },
|
||
-
|
||
- // Mutifunctional method to get and set values to a collection
|
||
- // The value/s can optionally be executed if it's a function
|
||
- access: function( elems, key, value, exec, fn, pass ) {
|
||
- var length = elems.length;
|
||
-
|
||
- // Setting many attributes
|
||
- if ( typeof key === "object" ) {
|
||
- for ( var k in key ) {
|
||
- jQuery.access( elems, k, key[k], exec, fn, value );
|
||
- }
|
||
- return elems;
|
||
- }
|
||
-
|
||
- // Setting one attribute
|
||
- if ( value !== undefined ) {
|
||
- // Optionally, function values get executed if exec is true
|
||
- exec = !pass && exec && jQuery.isFunction(value);
|
||
-
|
||
- for ( var i = 0; i < length; i++ ) {
|
||
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
|
||
- }
|
||
-
|
||
- return elems;
|
||
- }
|
||
-
|
||
- // Getting an attribute
|
||
- return length ? fn( elems[0], key ) : undefined;
|
||
- },
|
||
-
|
||
- now: function() {
|
||
- return ( new Date() ).getTime();
|
||
- },
|
||
-
|
||
- // Use of jQuery.browser is frowned upon.
|
||
- // More details: http://docs.jquery.com/Utilities/jQuery.browser
|
||
- uaMatch: function( ua ) {
|
||
- ua = ua.toLowerCase();
|
||
-
|
||
- var match = rwebkit.exec( ua ) ||
|
||
- ropera.exec( ua ) ||
|
||
- rmsie.exec( ua ) ||
|
||
- ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
|
||
- [];
|
||
-
|
||
- return { browser: match[1] || "", version: match[2] || "0" };
|
||
- },
|
||
-
|
||
- sub: function() {
|
||
- function jQuerySub( selector, context ) {
|
||
- return new jQuerySub.fn.init( selector, context );
|
||
- }
|
||
- jQuery.extend( true, jQuerySub, this );
|
||
- jQuerySub.superclass = this;
|
||
- jQuerySub.fn = jQuerySub.prototype = this();
|
||
- jQuerySub.fn.constructor = jQuerySub;
|
||
- jQuerySub.sub = this.sub;
|
||
- jQuerySub.fn.init = function init( selector, context ) {
|
||
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
|
||
- context = jQuerySub( context );
|
||
- }
|
||
-
|
||
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
|
||
- };
|
||
- jQuerySub.fn.init.prototype = jQuerySub.fn;
|
||
- var rootjQuerySub = jQuerySub(document);
|
||
- return jQuerySub;
|
||
- },
|
||
-
|
||
- browser: {}
|
||
-});
|
||
-
|
||
-// Populate the class2type map
|
||
-jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
|
||
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
||
-});
|
||
-
|
||
-browserMatch = jQuery.uaMatch( userAgent );
|
||
-if ( browserMatch.browser ) {
|
||
- jQuery.browser[ browserMatch.browser ] = true;
|
||
- jQuery.browser.version = browserMatch.version;
|
||
-}
|
||
-
|
||
-// Deprecated, use jQuery.browser.webkit instead
|
||
-if ( jQuery.browser.webkit ) {
|
||
- jQuery.browser.safari = true;
|
||
-}
|
||
-
|
||
-// IE doesn't match non-breaking spaces with \s
|
||
-if ( rnotwhite.test( "\xA0" ) ) {
|
||
- trimLeft = /^[\s\xA0]+/;
|
||
- trimRight = /[\s\xA0]+$/;
|
||
-}
|
||
-
|
||
-// All jQuery objects should point back to these
|
||
-rootjQuery = jQuery(document);
|
||
-
|
||
-// Cleanup functions for the document ready method
|
||
-if ( document.addEventListener ) {
|
||
- DOMContentLoaded = function() {
|
||
- document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
|
||
- jQuery.ready();
|
||
- };
|
||
-
|
||
-} else if ( document.attachEvent ) {
|
||
- DOMContentLoaded = function() {
|
||
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
|
||
- if ( document.readyState === "complete" ) {
|
||
- document.detachEvent( "onreadystatechange", DOMContentLoaded );
|
||
- jQuery.ready();
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-// The DOM ready check for Internet Explorer
|
||
-function doScrollCheck() {
|
||
- if ( jQuery.isReady ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- try {
|
||
- // If IE is used, use the trick by Diego Perini
|
||
- // http://javascript.nwbox.com/IEContentLoaded/
|
||
- document.documentElement.doScroll("left");
|
||
- } catch(e) {
|
||
- setTimeout( doScrollCheck, 1 );
|
||
- return;
|
||
- }
|
||
-
|
||
- // and execute any waiting functions
|
||
- jQuery.ready();
|
||
-}
|
||
-
|
||
-return jQuery;
|
||
-
|
||
-})();
|
||
-
|
||
-
|
||
-// String to Object flags format cache
|
||
-var flagsCache = {};
|
||
-
|
||
-// Convert String-formatted flags into Object-formatted ones and store in cache
|
||
-function createFlags( flags ) {
|
||
- var object = flagsCache[ flags ] = {},
|
||
- i, length;
|
||
- flags = flags.split( /\s+/ );
|
||
- for ( i = 0, length = flags.length; i < length; i++ ) {
|
||
- object[ flags[i] ] = true;
|
||
- }
|
||
- return object;
|
||
-}
|
||
-
|
||
-/*
|
||
- * Create a callback list using the following parameters:
|
||
- *
|
||
- * flags: an optional list of space-separated flags that will change how
|
||
- * the callback list behaves
|
||
- *
|
||
- * By default a callback list will act like an event callback list and can be
|
||
- * "fired" multiple times.
|
||
- *
|
||
- * Possible flags:
|
||
- *
|
||
- * once: will ensure the callback list can only be fired once (like a Deferred)
|
||
- *
|
||
- * memory: will keep track of previous values and will call any callback added
|
||
- * after the list has been fired right away with the latest "memorized"
|
||
- * values (like a Deferred)
|
||
- *
|
||
- * unique: will ensure a callback can only be added once (no duplicate in the list)
|
||
- *
|
||
- * stopOnFalse: interrupt callings when a callback returns false
|
||
- *
|
||
- */
|
||
-jQuery.Callbacks = function( flags ) {
|
||
-
|
||
- // Convert flags from String-formatted to Object-formatted
|
||
- // (we check in cache first)
|
||
- flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
|
||
-
|
||
- var // Actual callback list
|
||
- list = [],
|
||
- // Stack of fire calls for repeatable lists
|
||
- stack = [],
|
||
- // Last fire value (for non-forgettable lists)
|
||
- memory,
|
||
- // Flag to know if list is currently firing
|
||
- firing,
|
||
- // First callback to fire (used internally by add and fireWith)
|
||
- firingStart,
|
||
- // End of the loop when firing
|
||
- firingLength,
|
||
- // Index of currently firing callback (modified by remove if needed)
|
||
- firingIndex,
|
||
- // Add one or several callbacks to the list
|
||
- add = function( args ) {
|
||
- var i,
|
||
- length,
|
||
- elem,
|
||
- type,
|
||
- actual;
|
||
- for ( i = 0, length = args.length; i < length; i++ ) {
|
||
- elem = args[ i ];
|
||
- type = jQuery.type( elem );
|
||
- if ( type === "array" ) {
|
||
- // Inspect recursively
|
||
- add( elem );
|
||
- } else if ( type === "function" ) {
|
||
- // Add if not in unique mode and callback is not in
|
||
- if ( !flags.unique || !self.has( elem ) ) {
|
||
- list.push( elem );
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
- // Fire callbacks
|
||
- fire = function( context, args ) {
|
||
- args = args || [];
|
||
- memory = !flags.memory || [ context, args ];
|
||
- firing = true;
|
||
- firingIndex = firingStart || 0;
|
||
- firingStart = 0;
|
||
- firingLength = list.length;
|
||
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
|
||
- if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
|
||
- memory = true; // Mark as halted
|
||
- break;
|
||
- }
|
||
- }
|
||
- firing = false;
|
||
- if ( list ) {
|
||
- if ( !flags.once ) {
|
||
- if ( stack && stack.length ) {
|
||
- memory = stack.shift();
|
||
- self.fireWith( memory[ 0 ], memory[ 1 ] );
|
||
- }
|
||
- } else if ( memory === true ) {
|
||
- self.disable();
|
||
- } else {
|
||
- list = [];
|
||
- }
|
||
- }
|
||
- },
|
||
- // Actual Callbacks object
|
||
- self = {
|
||
- // Add a callback or a collection of callbacks to the list
|
||
- add: function() {
|
||
- if ( list ) {
|
||
- var length = list.length;
|
||
- add( arguments );
|
||
- // Do we need to add the callbacks to the
|
||
- // current firing batch?
|
||
- if ( firing ) {
|
||
- firingLength = list.length;
|
||
- // With memory, if we're not firing then
|
||
- // we should call right away, unless previous
|
||
- // firing was halted (stopOnFalse)
|
||
- } else if ( memory && memory !== true ) {
|
||
- firingStart = length;
|
||
- fire( memory[ 0 ], memory[ 1 ] );
|
||
- }
|
||
- }
|
||
- return this;
|
||
- },
|
||
- // Remove a callback from the list
|
||
- remove: function() {
|
||
- if ( list ) {
|
||
- var args = arguments,
|
||
- argIndex = 0,
|
||
- argLength = args.length;
|
||
- for ( ; argIndex < argLength ; argIndex++ ) {
|
||
- for ( var i = 0; i < list.length; i++ ) {
|
||
- if ( args[ argIndex ] === list[ i ] ) {
|
||
- // Handle firingIndex and firingLength
|
||
- if ( firing ) {
|
||
- if ( i <= firingLength ) {
|
||
- firingLength--;
|
||
- if ( i <= firingIndex ) {
|
||
- firingIndex--;
|
||
- }
|
||
- }
|
||
- }
|
||
- // Remove the element
|
||
- list.splice( i--, 1 );
|
||
- // If we have some unicity property then
|
||
- // we only need to do this once
|
||
- if ( flags.unique ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- return this;
|
||
- },
|
||
- // Control if a given callback is in the list
|
||
- has: function( fn ) {
|
||
- if ( list ) {
|
||
- var i = 0,
|
||
- length = list.length;
|
||
- for ( ; i < length; i++ ) {
|
||
- if ( fn === list[ i ] ) {
|
||
- return true;
|
||
- }
|
||
- }
|
||
- }
|
||
- return false;
|
||
- },
|
||
- // Remove all callbacks from the list
|
||
- empty: function() {
|
||
- list = [];
|
||
- return this;
|
||
- },
|
||
- // Have the list do nothing anymore
|
||
- disable: function() {
|
||
- list = stack = memory = undefined;
|
||
- return this;
|
||
- },
|
||
- // Is it disabled?
|
||
- disabled: function() {
|
||
- return !list;
|
||
- },
|
||
- // Lock the list in its current state
|
||
- lock: function() {
|
||
- stack = undefined;
|
||
- if ( !memory || memory === true ) {
|
||
- self.disable();
|
||
- }
|
||
- return this;
|
||
- },
|
||
- // Is it locked?
|
||
- locked: function() {
|
||
- return !stack;
|
||
- },
|
||
- // Call all callbacks with the given context and arguments
|
||
- fireWith: function( context, args ) {
|
||
- if ( stack ) {
|
||
- if ( firing ) {
|
||
- if ( !flags.once ) {
|
||
- stack.push( [ context, args ] );
|
||
- }
|
||
- } else if ( !( flags.once && memory ) ) {
|
||
- fire( context, args );
|
||
- }
|
||
- }
|
||
- return this;
|
||
- },
|
||
- // Call all the callbacks with the given arguments
|
||
- fire: function() {
|
||
- self.fireWith( this, arguments );
|
||
- return this;
|
||
- },
|
||
- // To know if the callbacks have already been called at least once
|
||
- fired: function() {
|
||
- return !!memory;
|
||
- }
|
||
- };
|
||
-
|
||
- return self;
|
||
-};
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var // Static reference to slice
|
||
- sliceDeferred = [].slice;
|
||
-
|
||
-jQuery.extend({
|
||
-
|
||
- Deferred: function( func ) {
|
||
- var doneList = jQuery.Callbacks( "once memory" ),
|
||
- failList = jQuery.Callbacks( "once memory" ),
|
||
- progressList = jQuery.Callbacks( "memory" ),
|
||
- state = "pending",
|
||
- lists = {
|
||
- resolve: doneList,
|
||
- reject: failList,
|
||
- notify: progressList
|
||
- },
|
||
- promise = {
|
||
- done: doneList.add,
|
||
- fail: failList.add,
|
||
- progress: progressList.add,
|
||
-
|
||
- state: function() {
|
||
- return state;
|
||
- },
|
||
-
|
||
- // Deprecated
|
||
- isResolved: doneList.fired,
|
||
- isRejected: failList.fired,
|
||
-
|
||
- then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
|
||
- deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
|
||
- return this;
|
||
- },
|
||
- always: function() {
|
||
- deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
|
||
- return this;
|
||
- },
|
||
- pipe: function( fnDone, fnFail, fnProgress ) {
|
||
- return jQuery.Deferred(function( newDefer ) {
|
||
- jQuery.each( {
|
||
- done: [ fnDone, "resolve" ],
|
||
- fail: [ fnFail, "reject" ],
|
||
- progress: [ fnProgress, "notify" ]
|
||
- }, function( handler, data ) {
|
||
- var fn = data[ 0 ],
|
||
- action = data[ 1 ],
|
||
- returned;
|
||
- if ( jQuery.isFunction( fn ) ) {
|
||
- deferred[ handler ](function() {
|
||
- returned = fn.apply( this, arguments );
|
||
- if ( returned && jQuery.isFunction( returned.promise ) ) {
|
||
- returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
|
||
- } else {
|
||
- newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
|
||
- }
|
||
- });
|
||
- } else {
|
||
- deferred[ handler ]( newDefer[ action ] );
|
||
- }
|
||
- });
|
||
- }).promise();
|
||
- },
|
||
- // Get a promise for this deferred
|
||
- // If obj is provided, the promise aspect is added to the object
|
||
- promise: function( obj ) {
|
||
- if ( obj == null ) {
|
||
- obj = promise;
|
||
- } else {
|
||
- for ( var key in promise ) {
|
||
- obj[ key ] = promise[ key ];
|
||
- }
|
||
- }
|
||
- return obj;
|
||
- }
|
||
- },
|
||
- deferred = promise.promise({}),
|
||
- key;
|
||
-
|
||
- for ( key in lists ) {
|
||
- deferred[ key ] = lists[ key ].fire;
|
||
- deferred[ key + "With" ] = lists[ key ].fireWith;
|
||
- }
|
||
-
|
||
- // Handle state
|
||
- deferred.done( function() {
|
||
- state = "resolved";
|
||
- }, failList.disable, progressList.lock ).fail( function() {
|
||
- state = "rejected";
|
||
- }, doneList.disable, progressList.lock );
|
||
-
|
||
- // Call given func if any
|
||
- if ( func ) {
|
||
- func.call( deferred, deferred );
|
||
- }
|
||
-
|
||
- // All done!
|
||
- return deferred;
|
||
- },
|
||
-
|
||
- // Deferred helper
|
||
- when: function( firstParam ) {
|
||
- var args = sliceDeferred.call( arguments, 0 ),
|
||
- i = 0,
|
||
- length = args.length,
|
||
- pValues = new Array( length ),
|
||
- count = length,
|
||
- pCount = length,
|
||
- deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
|
||
- firstParam :
|
||
- jQuery.Deferred(),
|
||
- promise = deferred.promise();
|
||
- function resolveFunc( i ) {
|
||
- return function( value ) {
|
||
- args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
|
||
- if ( !( --count ) ) {
|
||
- deferred.resolveWith( deferred, args );
|
||
- }
|
||
- };
|
||
- }
|
||
- function progressFunc( i ) {
|
||
- return function( value ) {
|
||
- pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
|
||
- deferred.notifyWith( promise, pValues );
|
||
- };
|
||
- }
|
||
- if ( length > 1 ) {
|
||
- for ( ; i < length; i++ ) {
|
||
- if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
|
||
- args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
|
||
- } else {
|
||
- --count;
|
||
- }
|
||
- }
|
||
- if ( !count ) {
|
||
- deferred.resolveWith( deferred, args );
|
||
- }
|
||
- } else if ( deferred !== firstParam ) {
|
||
- deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
|
||
- }
|
||
- return promise;
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-jQuery.support = (function() {
|
||
-
|
||
- var support,
|
||
- all,
|
||
- a,
|
||
- select,
|
||
- opt,
|
||
- input,
|
||
- marginDiv,
|
||
- fragment,
|
||
- tds,
|
||
- events,
|
||
- eventName,
|
||
- i,
|
||
- isSupported,
|
||
- div = document.createElement( "div" ),
|
||
- documentElement = document.documentElement;
|
||
-
|
||
- // Preliminary tests
|
||
- div.setAttribute("className", "t");
|
||
- div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
|
||
-
|
||
- all = div.getElementsByTagName( "*" );
|
||
- a = div.getElementsByTagName( "a" )[ 0 ];
|
||
-
|
||
- // Can't get basic test support
|
||
- if ( !all || !all.length || !a ) {
|
||
- return {};
|
||
- }
|
||
-
|
||
- // First batch of supports tests
|
||
- select = document.createElement( "select" );
|
||
- opt = select.appendChild( document.createElement("option") );
|
||
- input = div.getElementsByTagName( "input" )[ 0 ];
|
||
-
|
||
- support = {
|
||
- // IE strips leading whitespace when .innerHTML is used
|
||
- leadingWhitespace: ( div.firstChild.nodeType === 3 ),
|
||
-
|
||
- // Make sure that tbody elements aren't automatically inserted
|
||
- // IE will insert them into empty tables
|
||
- tbody: !div.getElementsByTagName("tbody").length,
|
||
-
|
||
- // Make sure that link elements get serialized correctly by innerHTML
|
||
- // This requires a wrapper element in IE
|
||
- htmlSerialize: !!div.getElementsByTagName("link").length,
|
||
-
|
||
- // Get the style information from getAttribute
|
||
- // (IE uses .cssText instead)
|
||
- style: /top/.test( a.getAttribute("style") ),
|
||
-
|
||
- // Make sure that URLs aren't manipulated
|
||
- // (IE normalizes it by default)
|
||
- hrefNormalized: ( a.getAttribute("href") === "/a" ),
|
||
-
|
||
- // Make sure that element opacity exists
|
||
- // (IE uses filter instead)
|
||
- // Use a regex to work around a WebKit issue. See #5145
|
||
- opacity: /^0.55/.test( a.style.opacity ),
|
||
-
|
||
- // Verify style float existence
|
||
- // (IE uses styleFloat instead of cssFloat)
|
||
- cssFloat: !!a.style.cssFloat,
|
||
-
|
||
- // Make sure that if no value is specified for a checkbox
|
||
- // that it defaults to "on".
|
||
- // (WebKit defaults to "" instead)
|
||
- checkOn: ( input.value === "on" ),
|
||
-
|
||
- // Make sure that a selected-by-default option has a working selected property.
|
||
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
|
||
- optSelected: opt.selected,
|
||
-
|
||
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
|
||
- getSetAttribute: div.className !== "t",
|
||
-
|
||
- // Tests for enctype support on a form(#6743)
|
||
- enctype: !!document.createElement("form").enctype,
|
||
-
|
||
- // Makes sure cloning an html5 element does not cause problems
|
||
- // Where outerHTML is undefined, this still works
|
||
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
|
||
-
|
||
- // Will be defined later
|
||
- submitBubbles: true,
|
||
- changeBubbles: true,
|
||
- focusinBubbles: false,
|
||
- deleteExpando: true,
|
||
- noCloneEvent: true,
|
||
- inlineBlockNeedsLayout: false,
|
||
- shrinkWrapBlocks: false,
|
||
- reliableMarginRight: true
|
||
- };
|
||
-
|
||
- // Make sure checked status is properly cloned
|
||
- input.checked = true;
|
||
- support.noCloneChecked = input.cloneNode( true ).checked;
|
||
-
|
||
- // Make sure that the options inside disabled selects aren't marked as disabled
|
||
- // (WebKit marks them as disabled)
|
||
- select.disabled = true;
|
||
- support.optDisabled = !opt.disabled;
|
||
-
|
||
- // Test to see if it's possible to delete an expando from an element
|
||
- // Fails in Internet Explorer
|
||
- try {
|
||
- delete div.test;
|
||
- } catch( e ) {
|
||
- support.deleteExpando = false;
|
||
- }
|
||
-
|
||
- if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
|
||
- div.attachEvent( "onclick", function() {
|
||
- // Cloning a node shouldn't copy over any
|
||
- // bound event handlers (IE does this)
|
||
- support.noCloneEvent = false;
|
||
- });
|
||
- div.cloneNode( true ).fireEvent( "onclick" );
|
||
- }
|
||
-
|
||
- // Check if a radio maintains its value
|
||
- // after being appended to the DOM
|
||
- input = document.createElement("input");
|
||
- input.value = "t";
|
||
- input.setAttribute("type", "radio");
|
||
- support.radioValue = input.value === "t";
|
||
-
|
||
- input.setAttribute("checked", "checked");
|
||
- div.appendChild( input );
|
||
- fragment = document.createDocumentFragment();
|
||
- fragment.appendChild( div.lastChild );
|
||
-
|
||
- // WebKit doesn't clone checked state correctly in fragments
|
||
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
||
-
|
||
- // Check if a disconnected checkbox will retain its checked
|
||
- // value of true after appended to the DOM (IE6/7)
|
||
- support.appendChecked = input.checked;
|
||
-
|
||
- fragment.removeChild( input );
|
||
- fragment.appendChild( div );
|
||
-
|
||
- div.innerHTML = "";
|
||
-
|
||
- // Check if div with explicit width and no margin-right incorrectly
|
||
- // gets computed margin-right based on width of container. For more
|
||
- // info see bug #3333
|
||
- // Fails in WebKit before Feb 2011 nightlies
|
||
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
||
- if ( window.getComputedStyle ) {
|
||
- marginDiv = document.createElement( "div" );
|
||
- marginDiv.style.width = "0";
|
||
- marginDiv.style.marginRight = "0";
|
||
- div.style.width = "2px";
|
||
- div.appendChild( marginDiv );
|
||
- support.reliableMarginRight =
|
||
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
|
||
- }
|
||
-
|
||
- // Technique from Juriy Zaytsev
|
||
- // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
|
||
- // We only care about the case where non-standard event systems
|
||
- // are used, namely in IE. Short-circuiting here helps us to
|
||
- // avoid an eval call (in setAttribute) which can cause CSP
|
||
- // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
|
||
- if ( div.attachEvent ) {
|
||
- for( i in {
|
||
- submit: 1,
|
||
- change: 1,
|
||
- focusin: 1
|
||
- }) {
|
||
- eventName = "on" + i;
|
||
- isSupported = ( eventName in div );
|
||
- if ( !isSupported ) {
|
||
- div.setAttribute( eventName, "return;" );
|
||
- isSupported = ( typeof div[ eventName ] === "function" );
|
||
- }
|
||
- support[ i + "Bubbles" ] = isSupported;
|
||
- }
|
||
- }
|
||
-
|
||
- fragment.removeChild( div );
|
||
-
|
||
- // Null elements to avoid leaks in IE
|
||
- fragment = select = opt = marginDiv = div = input = null;
|
||
-
|
||
- // Run tests that need a body at doc ready
|
||
- jQuery(function() {
|
||
- var container, outer, inner, table, td, offsetSupport,
|
||
- conMarginTop, ptlm, vb, style, html,
|
||
- body = document.getElementsByTagName("body")[0];
|
||
-
|
||
- if ( !body ) {
|
||
- // Return for frameset docs that don't have a body
|
||
- return;
|
||
- }
|
||
-
|
||
- conMarginTop = 1;
|
||
- ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
|
||
- vb = "visibility:hidden;border:0;";
|
||
- style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
|
||
- html = "<div " + style + "><div></div></div>" +
|
||
- "<table " + style + " cellpadding='0' cellspacing='0'>" +
|
||
- "<tr><td></td></tr></table>";
|
||
-
|
||
- container = document.createElement("div");
|
||
- container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
|
||
- body.insertBefore( container, body.firstChild );
|
||
-
|
||
- // Construct the test element
|
||
- div = document.createElement("div");
|
||
- container.appendChild( div );
|
||
-
|
||
- // Check if table cells still have offsetWidth/Height when they are set
|
||
- // to display:none and there are still other visible table cells in a
|
||
- // table row; if so, offsetWidth/Height are not reliable for use when
|
||
- // determining if an element has been hidden directly using
|
||
- // display:none (it is still safe to use offsets if a parent element is
|
||
- // hidden; don safety goggles and see bug #4512 for more information).
|
||
- // (only IE 8 fails this test)
|
||
- div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
|
||
- tds = div.getElementsByTagName( "td" );
|
||
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
|
||
-
|
||
- tds[ 0 ].style.display = "";
|
||
- tds[ 1 ].style.display = "none";
|
||
-
|
||
- // Check if empty table cells still have offsetWidth/Height
|
||
- // (IE <= 8 fail this test)
|
||
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
|
||
-
|
||
- // Figure out if the W3C box model works as expected
|
||
- div.innerHTML = "";
|
||
- div.style.width = div.style.paddingLeft = "1px";
|
||
- jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
|
||
-
|
||
- if ( typeof div.style.zoom !== "undefined" ) {
|
||
- // Check if natively block-level elements act like inline-block
|
||
- // elements when setting their display to 'inline' and giving
|
||
- // them layout
|
||
- // (IE < 8 does this)
|
||
- div.style.display = "inline";
|
||
- div.style.zoom = 1;
|
||
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
|
||
-
|
||
- // Check if elements with layout shrink-wrap their children
|
||
- // (IE 6 does this)
|
||
- div.style.display = "";
|
||
- div.innerHTML = "<div style='width:4px;'></div>";
|
||
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
|
||
- }
|
||
-
|
||
- div.style.cssText = ptlm + vb;
|
||
- div.innerHTML = html;
|
||
-
|
||
- outer = div.firstChild;
|
||
- inner = outer.firstChild;
|
||
- td = outer.nextSibling.firstChild.firstChild;
|
||
-
|
||
- offsetSupport = {
|
||
- doesNotAddBorder: ( inner.offsetTop !== 5 ),
|
||
- doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
|
||
- };
|
||
-
|
||
- inner.style.position = "fixed";
|
||
- inner.style.top = "20px";
|
||
-
|
||
- // safari subtracts parent border width here which is 5px
|
||
- offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
|
||
- inner.style.position = inner.style.top = "";
|
||
-
|
||
- outer.style.overflow = "hidden";
|
||
- outer.style.position = "relative";
|
||
-
|
||
- offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
|
||
- offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
|
||
-
|
||
- body.removeChild( container );
|
||
- div = container = null;
|
||
-
|
||
- jQuery.extend( support, offsetSupport );
|
||
- });
|
||
-
|
||
- return support;
|
||
-})();
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var rbrace = /^(?:\{.*\}|\[.*\])$/,
|
||
- rmultiDash = /([A-Z])/g;
|
||
-
|
||
-jQuery.extend({
|
||
- cache: {},
|
||
-
|
||
- // Please use with caution
|
||
- uuid: 0,
|
||
-
|
||
- // Unique for each copy of jQuery on the page
|
||
- // Non-digits removed to match rinlinejQuery
|
||
- expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
|
||
-
|
||
- // The following elements throw uncatchable exceptions if you
|
||
- // attempt to add expando properties to them.
|
||
- noData: {
|
||
- "embed": true,
|
||
- // Ban all objects except for Flash (which handle expandos)
|
||
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
|
||
- "applet": true
|
||
- },
|
||
-
|
||
- hasData: function( elem ) {
|
||
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
|
||
- return !!elem && !isEmptyDataObject( elem );
|
||
- },
|
||
-
|
||
- data: function( elem, name, data, pvt /* Internal Use Only */ ) {
|
||
- if ( !jQuery.acceptData( elem ) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- var privateCache, thisCache, ret,
|
||
- internalKey = jQuery.expando,
|
||
- getByName = typeof name === "string",
|
||
-
|
||
- // We have to handle DOM nodes and JS objects differently because IE6-7
|
||
- // can't GC object references properly across the DOM-JS boundary
|
||
- isNode = elem.nodeType,
|
||
-
|
||
- // Only DOM nodes need the global jQuery cache; JS object data is
|
||
- // attached directly to the object so GC can occur automatically
|
||
- cache = isNode ? jQuery.cache : elem,
|
||
-
|
||
- // Only defining an ID for JS objects if its cache already exists allows
|
||
- // the code to shortcut on the same path as a DOM node with no cache
|
||
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
|
||
- isEvents = name === "events";
|
||
-
|
||
- // Avoid doing any more work than we need to when trying to get data on an
|
||
- // object that has no data at all
|
||
- if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- if ( !id ) {
|
||
- // Only DOM nodes need a new unique ID for each element since their data
|
||
- // ends up in the global cache
|
||
- if ( isNode ) {
|
||
- elem[ internalKey ] = id = ++jQuery.uuid;
|
||
- } else {
|
||
- id = internalKey;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( !cache[ id ] ) {
|
||
- cache[ id ] = {};
|
||
-
|
||
- // Avoids exposing jQuery metadata on plain JS objects when the object
|
||
- // is serialized using JSON.stringify
|
||
- if ( !isNode ) {
|
||
- cache[ id ].toJSON = jQuery.noop;
|
||
- }
|
||
- }
|
||
-
|
||
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
|
||
- // shallow copied over onto the existing cache
|
||
- if ( typeof name === "object" || typeof name === "function" ) {
|
||
- if ( pvt ) {
|
||
- cache[ id ] = jQuery.extend( cache[ id ], name );
|
||
- } else {
|
||
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
|
||
- }
|
||
- }
|
||
-
|
||
- privateCache = thisCache = cache[ id ];
|
||
-
|
||
- // jQuery data() is stored in a separate object inside the object's internal data
|
||
- // cache in order to avoid key collisions between internal data and user-defined
|
||
- // data.
|
||
- if ( !pvt ) {
|
||
- if ( !thisCache.data ) {
|
||
- thisCache.data = {};
|
||
- }
|
||
-
|
||
- thisCache = thisCache.data;
|
||
- }
|
||
-
|
||
- if ( data !== undefined ) {
|
||
- thisCache[ jQuery.camelCase( name ) ] = data;
|
||
- }
|
||
-
|
||
- // Users should not attempt to inspect the internal events object using jQuery.data,
|
||
- // it is undocumented and subject to change. But does anyone listen? No.
|
||
- if ( isEvents && !thisCache[ name ] ) {
|
||
- return privateCache.events;
|
||
- }
|
||
-
|
||
- // Check for both converted-to-camel and non-converted data property names
|
||
- // If a data property was specified
|
||
- if ( getByName ) {
|
||
-
|
||
- // First Try to find as-is property data
|
||
- ret = thisCache[ name ];
|
||
-
|
||
- // Test for null|undefined property data
|
||
- if ( ret == null ) {
|
||
-
|
||
- // Try to find the camelCased property
|
||
- ret = thisCache[ jQuery.camelCase( name ) ];
|
||
- }
|
||
- } else {
|
||
- ret = thisCache;
|
||
- }
|
||
-
|
||
- return ret;
|
||
- },
|
||
-
|
||
- removeData: function( elem, name, pvt /* Internal Use Only */ ) {
|
||
- if ( !jQuery.acceptData( elem ) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- var thisCache, i, l,
|
||
-
|
||
- // Reference to internal data cache key
|
||
- internalKey = jQuery.expando,
|
||
-
|
||
- isNode = elem.nodeType,
|
||
-
|
||
- // See jQuery.data for more information
|
||
- cache = isNode ? jQuery.cache : elem,
|
||
-
|
||
- // See jQuery.data for more information
|
||
- id = isNode ? elem[ internalKey ] : internalKey;
|
||
-
|
||
- // If there is already no cache entry for this object, there is no
|
||
- // purpose in continuing
|
||
- if ( !cache[ id ] ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- if ( name ) {
|
||
-
|
||
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
|
||
-
|
||
- if ( thisCache ) {
|
||
-
|
||
- // Support array or space separated string names for data keys
|
||
- if ( !jQuery.isArray( name ) ) {
|
||
-
|
||
- // try the string as a key before any manipulation
|
||
- if ( name in thisCache ) {
|
||
- name = [ name ];
|
||
- } else {
|
||
-
|
||
- // split the camel cased version by spaces unless a key with the spaces exists
|
||
- name = jQuery.camelCase( name );
|
||
- if ( name in thisCache ) {
|
||
- name = [ name ];
|
||
- } else {
|
||
- name = name.split( " " );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- for ( i = 0, l = name.length; i < l; i++ ) {
|
||
- delete thisCache[ name[i] ];
|
||
- }
|
||
-
|
||
- // If there is no data left in the cache, we want to continue
|
||
- // and let the cache object itself get destroyed
|
||
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
|
||
- return;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // See jQuery.data for more information
|
||
- if ( !pvt ) {
|
||
- delete cache[ id ].data;
|
||
-
|
||
- // Don't destroy the parent cache unless the internal data object
|
||
- // had been the only thing left in it
|
||
- if ( !isEmptyDataObject(cache[ id ]) ) {
|
||
- return;
|
||
- }
|
||
- }
|
||
-
|
||
- // Browsers that fail expando deletion also refuse to delete expandos on
|
||
- // the window, but it will allow it on all other JS objects; other browsers
|
||
- // don't care
|
||
- // Ensure that `cache` is not a window object #10080
|
||
- if ( jQuery.support.deleteExpando || !cache.setInterval ) {
|
||
- delete cache[ id ];
|
||
- } else {
|
||
- cache[ id ] = null;
|
||
- }
|
||
-
|
||
- // We destroyed the cache and need to eliminate the expando on the node to avoid
|
||
- // false lookups in the cache for entries that no longer exist
|
||
- if ( isNode ) {
|
||
- // IE does not allow us to delete expando properties from nodes,
|
||
- // nor does it have a removeAttribute function on Document nodes;
|
||
- // we must handle all of these cases
|
||
- if ( jQuery.support.deleteExpando ) {
|
||
- delete elem[ internalKey ];
|
||
- } else if ( elem.removeAttribute ) {
|
||
- elem.removeAttribute( internalKey );
|
||
- } else {
|
||
- elem[ internalKey ] = null;
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- // For internal use only.
|
||
- _data: function( elem, name, data ) {
|
||
- return jQuery.data( elem, name, data, true );
|
||
- },
|
||
-
|
||
- // A method for determining if a DOM node can handle the data expando
|
||
- acceptData: function( elem ) {
|
||
- if ( elem.nodeName ) {
|
||
- var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
|
||
-
|
||
- if ( match ) {
|
||
- return !(match === true || elem.getAttribute("classid") !== match);
|
||
- }
|
||
- }
|
||
-
|
||
- return true;
|
||
- }
|
||
-});
|
||
-
|
||
-jQuery.fn.extend({
|
||
- data: function( key, value ) {
|
||
- var parts, attr, name,
|
||
- data = null;
|
||
-
|
||
- if ( typeof key === "undefined" ) {
|
||
- if ( this.length ) {
|
||
- data = jQuery.data( this[0] );
|
||
-
|
||
- if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
|
||
- attr = this[0].attributes;
|
||
- for ( var i = 0, l = attr.length; i < l; i++ ) {
|
||
- name = attr[i].name;
|
||
-
|
||
- if ( name.indexOf( "data-" ) === 0 ) {
|
||
- name = jQuery.camelCase( name.substring(5) );
|
||
-
|
||
- dataAttr( this[0], name, data[ name ] );
|
||
- }
|
||
- }
|
||
- jQuery._data( this[0], "parsedAttrs", true );
|
||
- }
|
||
- }
|
||
-
|
||
- return data;
|
||
-
|
||
- } else if ( typeof key === "object" ) {
|
||
- return this.each(function() {
|
||
- jQuery.data( this, key );
|
||
- });
|
||
- }
|
||
-
|
||
- parts = key.split(".");
|
||
- parts[1] = parts[1] ? "." + parts[1] : "";
|
||
-
|
||
- if ( value === undefined ) {
|
||
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
|
||
-
|
||
- // Try to fetch any internally stored data first
|
||
- if ( data === undefined && this.length ) {
|
||
- data = jQuery.data( this[0], key );
|
||
- data = dataAttr( this[0], key, data );
|
||
- }
|
||
-
|
||
- return data === undefined && parts[1] ?
|
||
- this.data( parts[0] ) :
|
||
- data;
|
||
-
|
||
- } else {
|
||
- return this.each(function() {
|
||
- var self = jQuery( this ),
|
||
- args = [ parts[0], value ];
|
||
-
|
||
- self.triggerHandler( "setData" + parts[1] + "!", args );
|
||
- jQuery.data( this, key, value );
|
||
- self.triggerHandler( "changeData" + parts[1] + "!", args );
|
||
- });
|
||
- }
|
||
- },
|
||
-
|
||
- removeData: function( key ) {
|
||
- return this.each(function() {
|
||
- jQuery.removeData( this, key );
|
||
- });
|
||
- }
|
||
-});
|
||
-
|
||
-function dataAttr( elem, key, data ) {
|
||
- // If nothing was found internally, try to fetch any
|
||
- // data from the HTML5 data-* attribute
|
||
- if ( data === undefined && elem.nodeType === 1 ) {
|
||
-
|
||
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
|
||
-
|
||
- data = elem.getAttribute( name );
|
||
-
|
||
- if ( typeof data === "string" ) {
|
||
- try {
|
||
- data = data === "true" ? true :
|
||
- data === "false" ? false :
|
||
- data === "null" ? null :
|
||
- jQuery.isNumeric( data ) ? parseFloat( data ) :
|
||
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
|
||
- data;
|
||
- } catch( e ) {}
|
||
-
|
||
- // Make sure we set the data so it isn't changed later
|
||
- jQuery.data( elem, key, data );
|
||
-
|
||
- } else {
|
||
- data = undefined;
|
||
- }
|
||
- }
|
||
-
|
||
- return data;
|
||
-}
|
||
-
|
||
-// checks a cache object for emptiness
|
||
-function isEmptyDataObject( obj ) {
|
||
- for ( var name in obj ) {
|
||
-
|
||
- // if the public data object is empty, the private is still empty
|
||
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
|
||
- continue;
|
||
- }
|
||
- if ( name !== "toJSON" ) {
|
||
- return false;
|
||
- }
|
||
- }
|
||
-
|
||
- return true;
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-function handleQueueMarkDefer( elem, type, src ) {
|
||
- var deferDataKey = type + "defer",
|
||
- queueDataKey = type + "queue",
|
||
- markDataKey = type + "mark",
|
||
- defer = jQuery._data( elem, deferDataKey );
|
||
- if ( defer &&
|
||
- ( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
|
||
- ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
|
||
- // Give room for hard-coded callbacks to fire first
|
||
- // and eventually mark/queue something else on the element
|
||
- setTimeout( function() {
|
||
- if ( !jQuery._data( elem, queueDataKey ) &&
|
||
- !jQuery._data( elem, markDataKey ) ) {
|
||
- jQuery.removeData( elem, deferDataKey, true );
|
||
- defer.fire();
|
||
- }
|
||
- }, 0 );
|
||
- }
|
||
-}
|
||
-
|
||
-jQuery.extend({
|
||
-
|
||
- _mark: function( elem, type ) {
|
||
- if ( elem ) {
|
||
- type = ( type || "fx" ) + "mark";
|
||
- jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
|
||
- }
|
||
- },
|
||
-
|
||
- _unmark: function( force, elem, type ) {
|
||
- if ( force !== true ) {
|
||
- type = elem;
|
||
- elem = force;
|
||
- force = false;
|
||
- }
|
||
- if ( elem ) {
|
||
- type = type || "fx";
|
||
- var key = type + "mark",
|
||
- count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
|
||
- if ( count ) {
|
||
- jQuery._data( elem, key, count );
|
||
- } else {
|
||
- jQuery.removeData( elem, key, true );
|
||
- handleQueueMarkDefer( elem, type, "mark" );
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- queue: function( elem, type, data ) {
|
||
- var q;
|
||
- if ( elem ) {
|
||
- type = ( type || "fx" ) + "queue";
|
||
- q = jQuery._data( elem, type );
|
||
-
|
||
- // Speed up dequeue by getting out quickly if this is just a lookup
|
||
- if ( data ) {
|
||
- if ( !q || jQuery.isArray(data) ) {
|
||
- q = jQuery._data( elem, type, jQuery.makeArray(data) );
|
||
- } else {
|
||
- q.push( data );
|
||
- }
|
||
- }
|
||
- return q || [];
|
||
- }
|
||
- },
|
||
-
|
||
- dequeue: function( elem, type ) {
|
||
- type = type || "fx";
|
||
-
|
||
- var queue = jQuery.queue( elem, type ),
|
||
- fn = queue.shift(),
|
||
- hooks = {};
|
||
-
|
||
- // If the fx queue is dequeued, always remove the progress sentinel
|
||
- if ( fn === "inprogress" ) {
|
||
- fn = queue.shift();
|
||
- }
|
||
-
|
||
- if ( fn ) {
|
||
- // Add a progress sentinel to prevent the fx queue from being
|
||
- // automatically dequeued
|
||
- if ( type === "fx" ) {
|
||
- queue.unshift( "inprogress" );
|
||
- }
|
||
-
|
||
- jQuery._data( elem, type + ".run", hooks );
|
||
- fn.call( elem, function() {
|
||
- jQuery.dequeue( elem, type );
|
||
- }, hooks );
|
||
- }
|
||
-
|
||
- if ( !queue.length ) {
|
||
- jQuery.removeData( elem, type + "queue " + type + ".run", true );
|
||
- handleQueueMarkDefer( elem, type, "queue" );
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-jQuery.fn.extend({
|
||
- queue: function( type, data ) {
|
||
- if ( typeof type !== "string" ) {
|
||
- data = type;
|
||
- type = "fx";
|
||
- }
|
||
-
|
||
- if ( data === undefined ) {
|
||
- return jQuery.queue( this[0], type );
|
||
- }
|
||
- return this.each(function() {
|
||
- var queue = jQuery.queue( this, type, data );
|
||
-
|
||
- if ( type === "fx" && queue[0] !== "inprogress" ) {
|
||
- jQuery.dequeue( this, type );
|
||
- }
|
||
- });
|
||
- },
|
||
- dequeue: function( type ) {
|
||
- return this.each(function() {
|
||
- jQuery.dequeue( this, type );
|
||
- });
|
||
- },
|
||
- // Based off of the plugin by Clint Helfers, with permission.
|
||
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
|
||
- delay: function( time, type ) {
|
||
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
||
- type = type || "fx";
|
||
-
|
||
- return this.queue( type, function( next, hooks ) {
|
||
- var timeout = setTimeout( next, time );
|
||
- hooks.stop = function() {
|
||
- clearTimeout( timeout );
|
||
- };
|
||
- });
|
||
- },
|
||
- clearQueue: function( type ) {
|
||
- return this.queue( type || "fx", [] );
|
||
- },
|
||
- // Get a promise resolved when queues of a certain type
|
||
- // are emptied (fx is the type by default)
|
||
- promise: function( type, object ) {
|
||
- if ( typeof type !== "string" ) {
|
||
- object = type;
|
||
- type = undefined;
|
||
- }
|
||
- type = type || "fx";
|
||
- var defer = jQuery.Deferred(),
|
||
- elements = this,
|
||
- i = elements.length,
|
||
- count = 1,
|
||
- deferDataKey = type + "defer",
|
||
- queueDataKey = type + "queue",
|
||
- markDataKey = type + "mark",
|
||
- tmp;
|
||
- function resolve() {
|
||
- if ( !( --count ) ) {
|
||
- defer.resolveWith( elements, [ elements ] );
|
||
- }
|
||
- }
|
||
- while( i-- ) {
|
||
- if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
|
||
- ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
|
||
- jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
|
||
- jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
|
||
- count++;
|
||
- tmp.add( resolve );
|
||
- }
|
||
- }
|
||
- resolve();
|
||
- return defer.promise();
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var rclass = /[\n\t\r]/g,
|
||
- rspace = /\s+/,
|
||
- rreturn = /\r/g,
|
||
- rtype = /^(?:button|input)$/i,
|
||
- rfocusable = /^(?:button|input|object|select|textarea)$/i,
|
||
- rclickable = /^a(?:rea)?$/i,
|
||
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
|
||
- getSetAttribute = jQuery.support.getSetAttribute,
|
||
- nodeHook, boolHook, fixSpecified;
|
||
-
|
||
-jQuery.fn.extend({
|
||
- attr: function( name, value ) {
|
||
- return jQuery.access( this, name, value, true, jQuery.attr );
|
||
- },
|
||
-
|
||
- removeAttr: function( name ) {
|
||
- return this.each(function() {
|
||
- jQuery.removeAttr( this, name );
|
||
- });
|
||
- },
|
||
-
|
||
- prop: function( name, value ) {
|
||
- return jQuery.access( this, name, value, true, jQuery.prop );
|
||
- },
|
||
-
|
||
- removeProp: function( name ) {
|
||
- name = jQuery.propFix[ name ] || name;
|
||
- return this.each(function() {
|
||
- // try/catch handles cases where IE balks (such as removing a property on window)
|
||
- try {
|
||
- this[ name ] = undefined;
|
||
- delete this[ name ];
|
||
- } catch( e ) {}
|
||
- });
|
||
- },
|
||
-
|
||
- addClass: function( value ) {
|
||
- var classNames, i, l, elem,
|
||
- setClass, c, cl;
|
||
-
|
||
- if ( jQuery.isFunction( value ) ) {
|
||
- return this.each(function( j ) {
|
||
- jQuery( this ).addClass( value.call(this, j, this.className) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( value && typeof value === "string" ) {
|
||
- classNames = value.split( rspace );
|
||
-
|
||
- for ( i = 0, l = this.length; i < l; i++ ) {
|
||
- elem = this[ i ];
|
||
-
|
||
- if ( elem.nodeType === 1 ) {
|
||
- if ( !elem.className && classNames.length === 1 ) {
|
||
- elem.className = value;
|
||
-
|
||
- } else {
|
||
- setClass = " " + elem.className + " ";
|
||
-
|
||
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
|
||
- if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
|
||
- setClass += classNames[ c ] + " ";
|
||
- }
|
||
- }
|
||
- elem.className = jQuery.trim( setClass );
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- removeClass: function( value ) {
|
||
- var classNames, i, l, elem, className, c, cl;
|
||
-
|
||
- if ( jQuery.isFunction( value ) ) {
|
||
- return this.each(function( j ) {
|
||
- jQuery( this ).removeClass( value.call(this, j, this.className) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( (value && typeof value === "string") || value === undefined ) {
|
||
- classNames = ( value || "" ).split( rspace );
|
||
-
|
||
- for ( i = 0, l = this.length; i < l; i++ ) {
|
||
- elem = this[ i ];
|
||
-
|
||
- if ( elem.nodeType === 1 && elem.className ) {
|
||
- if ( value ) {
|
||
- className = (" " + elem.className + " ").replace( rclass, " " );
|
||
- for ( c = 0, cl = classNames.length; c < cl; c++ ) {
|
||
- className = className.replace(" " + classNames[ c ] + " ", " ");
|
||
- }
|
||
- elem.className = jQuery.trim( className );
|
||
-
|
||
- } else {
|
||
- elem.className = "";
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- toggleClass: function( value, stateVal ) {
|
||
- var type = typeof value,
|
||
- isBool = typeof stateVal === "boolean";
|
||
-
|
||
- if ( jQuery.isFunction( value ) ) {
|
||
- return this.each(function( i ) {
|
||
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
|
||
- });
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- if ( type === "string" ) {
|
||
- // toggle individual class names
|
||
- var className,
|
||
- i = 0,
|
||
- self = jQuery( this ),
|
||
- state = stateVal,
|
||
- classNames = value.split( rspace );
|
||
-
|
||
- while ( (className = classNames[ i++ ]) ) {
|
||
- // check each className given, space seperated list
|
||
- state = isBool ? state : !self.hasClass( className );
|
||
- self[ state ? "addClass" : "removeClass" ]( className );
|
||
- }
|
||
-
|
||
- } else if ( type === "undefined" || type === "boolean" ) {
|
||
- if ( this.className ) {
|
||
- // store className if set
|
||
- jQuery._data( this, "__className__", this.className );
|
||
- }
|
||
-
|
||
- // toggle whole className
|
||
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- hasClass: function( selector ) {
|
||
- var className = " " + selector + " ",
|
||
- i = 0,
|
||
- l = this.length;
|
||
- for ( ; i < l; i++ ) {
|
||
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
|
||
- return true;
|
||
- }
|
||
- }
|
||
-
|
||
- return false;
|
||
- },
|
||
-
|
||
- val: function( value ) {
|
||
- var hooks, ret, isFunction,
|
||
- elem = this[0];
|
||
-
|
||
- if ( !arguments.length ) {
|
||
- if ( elem ) {
|
||
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
|
||
-
|
||
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
|
||
- return ret;
|
||
- }
|
||
-
|
||
- ret = elem.value;
|
||
-
|
||
- return typeof ret === "string" ?
|
||
- // handle most common string cases
|
||
- ret.replace(rreturn, "") :
|
||
- // handle cases where value is null/undef or number
|
||
- ret == null ? "" : ret;
|
||
- }
|
||
-
|
||
- return;
|
||
- }
|
||
-
|
||
- isFunction = jQuery.isFunction( value );
|
||
-
|
||
- return this.each(function( i ) {
|
||
- var self = jQuery(this), val;
|
||
-
|
||
- if ( this.nodeType !== 1 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- if ( isFunction ) {
|
||
- val = value.call( this, i, self.val() );
|
||
- } else {
|
||
- val = value;
|
||
- }
|
||
-
|
||
- // Treat null/undefined as ""; convert numbers to string
|
||
- if ( val == null ) {
|
||
- val = "";
|
||
- } else if ( typeof val === "number" ) {
|
||
- val += "";
|
||
- } else if ( jQuery.isArray( val ) ) {
|
||
- val = jQuery.map(val, function ( value ) {
|
||
- return value == null ? "" : value + "";
|
||
- });
|
||
- }
|
||
-
|
||
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
|
||
-
|
||
- // If set returns undefined, fall back to normal setting
|
||
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
|
||
- this.value = val;
|
||
- }
|
||
- });
|
||
- }
|
||
-});
|
||
-
|
||
-jQuery.extend({
|
||
- valHooks: {
|
||
- option: {
|
||
- get: function( elem ) {
|
||
- // attributes.value is undefined in Blackberry 4.7 but
|
||
- // uses .value. See #6932
|
||
- var val = elem.attributes.value;
|
||
- return !val || val.specified ? elem.value : elem.text;
|
||
- }
|
||
- },
|
||
- select: {
|
||
- get: function( elem ) {
|
||
- var value, i, max, option,
|
||
- index = elem.selectedIndex,
|
||
- values = [],
|
||
- options = elem.options,
|
||
- one = elem.type === "select-one";
|
||
-
|
||
- // Nothing was selected
|
||
- if ( index < 0 ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- // Loop through all the selected options
|
||
- i = one ? index : 0;
|
||
- max = one ? index + 1 : options.length;
|
||
- for ( ; i < max; i++ ) {
|
||
- option = options[ i ];
|
||
-
|
||
- // Don't return options that are disabled or in a disabled optgroup
|
||
- if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
|
||
- (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
|
||
-
|
||
- // Get the specific value for the option
|
||
- value = jQuery( option ).val();
|
||
-
|
||
- // We don't need an array for one selects
|
||
- if ( one ) {
|
||
- return value;
|
||
- }
|
||
-
|
||
- // Multi-Selects return an array
|
||
- values.push( value );
|
||
- }
|
||
- }
|
||
-
|
||
- // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
|
||
- if ( one && !values.length && options.length ) {
|
||
- return jQuery( options[ index ] ).val();
|
||
- }
|
||
-
|
||
- return values;
|
||
- },
|
||
-
|
||
- set: function( elem, value ) {
|
||
- var values = jQuery.makeArray( value );
|
||
-
|
||
- jQuery(elem).find("option").each(function() {
|
||
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
|
||
- });
|
||
-
|
||
- if ( !values.length ) {
|
||
- elem.selectedIndex = -1;
|
||
- }
|
||
- return values;
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- attrFn: {
|
||
- val: true,
|
||
- css: true,
|
||
- html: true,
|
||
- text: true,
|
||
- data: true,
|
||
- width: true,
|
||
- height: true,
|
||
- offset: true
|
||
- },
|
||
-
|
||
- attr: function( elem, name, value, pass ) {
|
||
- var ret, hooks, notxml,
|
||
- nType = elem.nodeType;
|
||
-
|
||
- // don't get/set attributes on text, comment and attribute nodes
|
||
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- if ( pass && name in jQuery.attrFn ) {
|
||
- return jQuery( elem )[ name ]( value );
|
||
- }
|
||
-
|
||
- // Fallback to prop when attributes are not supported
|
||
- if ( typeof elem.getAttribute === "undefined" ) {
|
||
- return jQuery.prop( elem, name, value );
|
||
- }
|
||
-
|
||
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
|
||
-
|
||
- // All attributes are lowercase
|
||
- // Grab necessary hook if one is defined
|
||
- if ( notxml ) {
|
||
- name = name.toLowerCase();
|
||
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
|
||
- }
|
||
-
|
||
- if ( value !== undefined ) {
|
||
-
|
||
- if ( value === null ) {
|
||
- jQuery.removeAttr( elem, name );
|
||
- return;
|
||
-
|
||
- } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
|
||
- return ret;
|
||
-
|
||
- } else {
|
||
- elem.setAttribute( name, "" + value );
|
||
- return value;
|
||
- }
|
||
-
|
||
- } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
|
||
- return ret;
|
||
-
|
||
- } else {
|
||
-
|
||
- ret = elem.getAttribute( name );
|
||
-
|
||
- // Non-existent attributes return null, we normalize to undefined
|
||
- return ret === null ?
|
||
- undefined :
|
||
- ret;
|
||
- }
|
||
- },
|
||
-
|
||
- removeAttr: function( elem, value ) {
|
||
- var propName, attrNames, name, l,
|
||
- i = 0;
|
||
-
|
||
- if ( value && elem.nodeType === 1 ) {
|
||
- attrNames = value.toLowerCase().split( rspace );
|
||
- l = attrNames.length;
|
||
-
|
||
- for ( ; i < l; i++ ) {
|
||
- name = attrNames[ i ];
|
||
-
|
||
- if ( name ) {
|
||
- propName = jQuery.propFix[ name ] || name;
|
||
-
|
||
- // See #9699 for explanation of this approach (setting first, then removal)
|
||
- jQuery.attr( elem, name, "" );
|
||
- elem.removeAttribute( getSetAttribute ? name : propName );
|
||
-
|
||
- // Set corresponding property to false for boolean attributes
|
||
- if ( rboolean.test( name ) && propName in elem ) {
|
||
- elem[ propName ] = false;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- attrHooks: {
|
||
- type: {
|
||
- set: function( elem, value ) {
|
||
- // We can't allow the type property to be changed (since it causes problems in IE)
|
||
- if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
|
||
- jQuery.error( "type property can't be changed" );
|
||
- } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
|
||
- // Setting the type on a radio button after the value resets the value in IE6-9
|
||
- // Reset value to it's default in case type is set after value
|
||
- // This is for element creation
|
||
- var val = elem.value;
|
||
- elem.setAttribute( "type", value );
|
||
- if ( val ) {
|
||
- elem.value = val;
|
||
- }
|
||
- return value;
|
||
- }
|
||
- }
|
||
- },
|
||
- // Use the value property for back compat
|
||
- // Use the nodeHook for button elements in IE6/7 (#1954)
|
||
- value: {
|
||
- get: function( elem, name ) {
|
||
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
|
||
- return nodeHook.get( elem, name );
|
||
- }
|
||
- return name in elem ?
|
||
- elem.value :
|
||
- null;
|
||
- },
|
||
- set: function( elem, value, name ) {
|
||
- if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
|
||
- return nodeHook.set( elem, value, name );
|
||
- }
|
||
- // Does not return so that setAttribute is also used
|
||
- elem.value = value;
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- propFix: {
|
||
- tabindex: "tabIndex",
|
||
- readonly: "readOnly",
|
||
- "for": "htmlFor",
|
||
- "class": "className",
|
||
- maxlength: "maxLength",
|
||
- cellspacing: "cellSpacing",
|
||
- cellpadding: "cellPadding",
|
||
- rowspan: "rowSpan",
|
||
- colspan: "colSpan",
|
||
- usemap: "useMap",
|
||
- frameborder: "frameBorder",
|
||
- contenteditable: "contentEditable"
|
||
- },
|
||
-
|
||
- prop: function( elem, name, value ) {
|
||
- var ret, hooks, notxml,
|
||
- nType = elem.nodeType;
|
||
-
|
||
- // don't get/set properties on text, comment and attribute nodes
|
||
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
|
||
-
|
||
- if ( notxml ) {
|
||
- // Fix name and attach hooks
|
||
- name = jQuery.propFix[ name ] || name;
|
||
- hooks = jQuery.propHooks[ name ];
|
||
- }
|
||
-
|
||
- if ( value !== undefined ) {
|
||
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
|
||
- return ret;
|
||
-
|
||
- } else {
|
||
- return ( elem[ name ] = value );
|
||
- }
|
||
-
|
||
- } else {
|
||
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
|
||
- return ret;
|
||
-
|
||
- } else {
|
||
- return elem[ name ];
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- propHooks: {
|
||
- tabIndex: {
|
||
- get: function( elem ) {
|
||
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
|
||
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
||
- var attributeNode = elem.getAttributeNode("tabindex");
|
||
-
|
||
- return attributeNode && attributeNode.specified ?
|
||
- parseInt( attributeNode.value, 10 ) :
|
||
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
|
||
- 0 :
|
||
- undefined;
|
||
- }
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
|
||
-jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
|
||
-
|
||
-// Hook for boolean attributes
|
||
-boolHook = {
|
||
- get: function( elem, name ) {
|
||
- // Align boolean attributes with corresponding properties
|
||
- // Fall back to attribute presence where some booleans are not supported
|
||
- var attrNode,
|
||
- property = jQuery.prop( elem, name );
|
||
- return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
|
||
- name.toLowerCase() :
|
||
- undefined;
|
||
- },
|
||
- set: function( elem, value, name ) {
|
||
- var propName;
|
||
- if ( value === false ) {
|
||
- // Remove boolean attributes when set to false
|
||
- jQuery.removeAttr( elem, name );
|
||
- } else {
|
||
- // value is true since we know at this point it's type boolean and not false
|
||
- // Set boolean attributes to the same name and set the DOM property
|
||
- propName = jQuery.propFix[ name ] || name;
|
||
- if ( propName in elem ) {
|
||
- // Only set the IDL specifically if it already exists on the element
|
||
- elem[ propName ] = true;
|
||
- }
|
||
-
|
||
- elem.setAttribute( name, name.toLowerCase() );
|
||
- }
|
||
- return name;
|
||
- }
|
||
-};
|
||
-
|
||
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
|
||
-if ( !getSetAttribute ) {
|
||
-
|
||
- fixSpecified = {
|
||
- name: true,
|
||
- id: true
|
||
- };
|
||
-
|
||
- // Use this for any attribute in IE6/7
|
||
- // This fixes almost every IE6/7 issue
|
||
- nodeHook = jQuery.valHooks.button = {
|
||
- get: function( elem, name ) {
|
||
- var ret;
|
||
- ret = elem.getAttributeNode( name );
|
||
- return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
|
||
- ret.nodeValue :
|
||
- undefined;
|
||
- },
|
||
- set: function( elem, value, name ) {
|
||
- // Set the existing or create a new attribute node
|
||
- var ret = elem.getAttributeNode( name );
|
||
- if ( !ret ) {
|
||
- ret = document.createAttribute( name );
|
||
- elem.setAttributeNode( ret );
|
||
- }
|
||
- return ( ret.nodeValue = value + "" );
|
||
- }
|
||
- };
|
||
-
|
||
- // Apply the nodeHook to tabindex
|
||
- jQuery.attrHooks.tabindex.set = nodeHook.set;
|
||
-
|
||
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
|
||
- // This is for removals
|
||
- jQuery.each([ "width", "height" ], function( i, name ) {
|
||
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
|
||
- set: function( elem, value ) {
|
||
- if ( value === "" ) {
|
||
- elem.setAttribute( name, "auto" );
|
||
- return value;
|
||
- }
|
||
- }
|
||
- });
|
||
- });
|
||
-
|
||
- // Set contenteditable to false on removals(#10429)
|
||
- // Setting to empty string throws an error as an invalid value
|
||
- jQuery.attrHooks.contenteditable = {
|
||
- get: nodeHook.get,
|
||
- set: function( elem, value, name ) {
|
||
- if ( value === "" ) {
|
||
- value = "false";
|
||
- }
|
||
- nodeHook.set( elem, value, name );
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-
|
||
-// Some attributes require a special call on IE
|
||
-if ( !jQuery.support.hrefNormalized ) {
|
||
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
|
||
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
|
||
- get: function( elem ) {
|
||
- var ret = elem.getAttribute( name, 2 );
|
||
- return ret === null ? undefined : ret;
|
||
- }
|
||
- });
|
||
- });
|
||
-}
|
||
-
|
||
-if ( !jQuery.support.style ) {
|
||
- jQuery.attrHooks.style = {
|
||
- get: function( elem ) {
|
||
- // Return undefined in the case of empty string
|
||
- // Normalize to lowercase since IE uppercases css property names
|
||
- return elem.style.cssText.toLowerCase() || undefined;
|
||
- },
|
||
- set: function( elem, value ) {
|
||
- return ( elem.style.cssText = "" + value );
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-// Safari mis-reports the default selected property of an option
|
||
-// Accessing the parent's selectedIndex property fixes it
|
||
-if ( !jQuery.support.optSelected ) {
|
||
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
|
||
- get: function( elem ) {
|
||
- var parent = elem.parentNode;
|
||
-
|
||
- if ( parent ) {
|
||
- parent.selectedIndex;
|
||
-
|
||
- // Make sure that it also works with optgroups, see #5701
|
||
- if ( parent.parentNode ) {
|
||
- parent.parentNode.selectedIndex;
|
||
- }
|
||
- }
|
||
- return null;
|
||
- }
|
||
- });
|
||
-}
|
||
-
|
||
-// IE6/7 call enctype encoding
|
||
-if ( !jQuery.support.enctype ) {
|
||
- jQuery.propFix.enctype = "encoding";
|
||
-}
|
||
-
|
||
-// Radios and checkboxes getter/setter
|
||
-if ( !jQuery.support.checkOn ) {
|
||
- jQuery.each([ "radio", "checkbox" ], function() {
|
||
- jQuery.valHooks[ this ] = {
|
||
- get: function( elem ) {
|
||
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
|
||
- return elem.getAttribute("value") === null ? "on" : elem.value;
|
||
- }
|
||
- };
|
||
- });
|
||
-}
|
||
-jQuery.each([ "radio", "checkbox" ], function() {
|
||
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
|
||
- set: function( elem, value ) {
|
||
- if ( jQuery.isArray( value ) ) {
|
||
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
|
||
- }
|
||
- }
|
||
- });
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var rformElems = /^(?:textarea|input|select)$/i,
|
||
- rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
|
||
- rhoverHack = /\bhover(\.\S+)?\b/,
|
||
- rkeyEvent = /^key/,
|
||
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
|
||
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
||
- rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
|
||
- quickParse = function( selector ) {
|
||
- var quick = rquickIs.exec( selector );
|
||
- if ( quick ) {
|
||
- // 0 1 2 3
|
||
- // [ _, tag, id, class ]
|
||
- quick[1] = ( quick[1] || "" ).toLowerCase();
|
||
- quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
|
||
- }
|
||
- return quick;
|
||
- },
|
||
- quickIs = function( elem, m ) {
|
||
- var attrs = elem.attributes || {};
|
||
- return (
|
||
- (!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
|
||
- (!m[2] || (attrs.id || {}).value === m[2]) &&
|
||
- (!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
|
||
- );
|
||
- },
|
||
- hoverHack = function( events ) {
|
||
- return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
|
||
- };
|
||
-
|
||
-/*
|
||
- * Helper functions for managing events -- not part of the public interface.
|
||
- * Props to Dean Edwards' addEvent library for many of the ideas.
|
||
- */
|
||
-jQuery.event = {
|
||
-
|
||
- add: function( elem, types, handler, data, selector ) {
|
||
-
|
||
- var elemData, eventHandle, events,
|
||
- t, tns, type, namespaces, handleObj,
|
||
- handleObjIn, quick, handlers, special;
|
||
-
|
||
- // Don't attach events to noData or text/comment nodes (allow plain objects tho)
|
||
- if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Caller can pass in an object of custom data in lieu of the handler
|
||
- if ( handler.handler ) {
|
||
- handleObjIn = handler;
|
||
- handler = handleObjIn.handler;
|
||
- }
|
||
-
|
||
- // Make sure that the handler has a unique ID, used to find/remove it later
|
||
- if ( !handler.guid ) {
|
||
- handler.guid = jQuery.guid++;
|
||
- }
|
||
-
|
||
- // Init the element's event structure and main handler, if this is the first
|
||
- events = elemData.events;
|
||
- if ( !events ) {
|
||
- elemData.events = events = {};
|
||
- }
|
||
- eventHandle = elemData.handle;
|
||
- if ( !eventHandle ) {
|
||
- elemData.handle = eventHandle = function( e ) {
|
||
- // Discard the second event of a jQuery.event.trigger() and
|
||
- // when an event is called after a page has unloaded
|
||
- return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
|
||
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
|
||
- undefined;
|
||
- };
|
||
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
|
||
- eventHandle.elem = elem;
|
||
- }
|
||
-
|
||
- // Handle multiple events separated by a space
|
||
- // jQuery(...).bind("mouseover mouseout", fn);
|
||
- types = jQuery.trim( hoverHack(types) ).split( " " );
|
||
- for ( t = 0; t < types.length; t++ ) {
|
||
-
|
||
- tns = rtypenamespace.exec( types[t] ) || [];
|
||
- type = tns[1];
|
||
- namespaces = ( tns[2] || "" ).split( "." ).sort();
|
||
-
|
||
- // If event changes its type, use the special event handlers for the changed type
|
||
- special = jQuery.event.special[ type ] || {};
|
||
-
|
||
- // If selector defined, determine special event api type, otherwise given type
|
||
- type = ( selector ? special.delegateType : special.bindType ) || type;
|
||
-
|
||
- // Update special based on newly reset type
|
||
- special = jQuery.event.special[ type ] || {};
|
||
-
|
||
- // handleObj is passed to all event handlers
|
||
- handleObj = jQuery.extend({
|
||
- type: type,
|
||
- origType: tns[1],
|
||
- data: data,
|
||
- handler: handler,
|
||
- guid: handler.guid,
|
||
- selector: selector,
|
||
- quick: quickParse( selector ),
|
||
- namespace: namespaces.join(".")
|
||
- }, handleObjIn );
|
||
-
|
||
- // Init the event handler queue if we're the first
|
||
- handlers = events[ type ];
|
||
- if ( !handlers ) {
|
||
- handlers = events[ type ] = [];
|
||
- handlers.delegateCount = 0;
|
||
-
|
||
- // Only use addEventListener/attachEvent if the special events handler returns false
|
||
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
|
||
- // Bind the global event handler to the element
|
||
- if ( elem.addEventListener ) {
|
||
- elem.addEventListener( type, eventHandle, false );
|
||
-
|
||
- } else if ( elem.attachEvent ) {
|
||
- elem.attachEvent( "on" + type, eventHandle );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- if ( special.add ) {
|
||
- special.add.call( elem, handleObj );
|
||
-
|
||
- if ( !handleObj.handler.guid ) {
|
||
- handleObj.handler.guid = handler.guid;
|
||
- }
|
||
- }
|
||
-
|
||
- // Add to the element's handler list, delegates in front
|
||
- if ( selector ) {
|
||
- handlers.splice( handlers.delegateCount++, 0, handleObj );
|
||
- } else {
|
||
- handlers.push( handleObj );
|
||
- }
|
||
-
|
||
- // Keep track of which events have ever been used, for event optimization
|
||
- jQuery.event.global[ type ] = true;
|
||
- }
|
||
-
|
||
- // Nullify elem to prevent memory leaks in IE
|
||
- elem = null;
|
||
- },
|
||
-
|
||
- global: {},
|
||
-
|
||
- // Detach an event or set of events from an element
|
||
- remove: function( elem, types, handler, selector, mappedTypes ) {
|
||
-
|
||
- var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
|
||
- t, tns, type, origType, namespaces, origCount,
|
||
- j, events, special, handle, eventType, handleObj;
|
||
-
|
||
- if ( !elemData || !(events = elemData.events) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Once for each type.namespace in types; type may be omitted
|
||
- types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
|
||
- for ( t = 0; t < types.length; t++ ) {
|
||
- tns = rtypenamespace.exec( types[t] ) || [];
|
||
- type = origType = tns[1];
|
||
- namespaces = tns[2];
|
||
-
|
||
- // Unbind all events (on this namespace, if provided) for the element
|
||
- if ( !type ) {
|
||
- for ( type in events ) {
|
||
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
|
||
- }
|
||
- continue;
|
||
- }
|
||
-
|
||
- special = jQuery.event.special[ type ] || {};
|
||
- type = ( selector? special.delegateType : special.bindType ) || type;
|
||
- eventType = events[ type ] || [];
|
||
- origCount = eventType.length;
|
||
- namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
|
||
-
|
||
- // Remove matching events
|
||
- for ( j = 0; j < eventType.length; j++ ) {
|
||
- handleObj = eventType[ j ];
|
||
-
|
||
- if ( ( mappedTypes || origType === handleObj.origType ) &&
|
||
- ( !handler || handler.guid === handleObj.guid ) &&
|
||
- ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
|
||
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
|
||
- eventType.splice( j--, 1 );
|
||
-
|
||
- if ( handleObj.selector ) {
|
||
- eventType.delegateCount--;
|
||
- }
|
||
- if ( special.remove ) {
|
||
- special.remove.call( elem, handleObj );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Remove generic event handler if we removed something and no more handlers exist
|
||
- // (avoids potential for endless recursion during removal of special event handlers)
|
||
- if ( eventType.length === 0 && origCount !== eventType.length ) {
|
||
- if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
|
||
- jQuery.removeEvent( elem, type, elemData.handle );
|
||
- }
|
||
-
|
||
- delete events[ type ];
|
||
- }
|
||
- }
|
||
-
|
||
- // Remove the expando if it's no longer used
|
||
- if ( jQuery.isEmptyObject( events ) ) {
|
||
- handle = elemData.handle;
|
||
- if ( handle ) {
|
||
- handle.elem = null;
|
||
- }
|
||
-
|
||
- // removeData also checks for emptiness and clears the expando if empty
|
||
- // so use it instead of delete
|
||
- jQuery.removeData( elem, [ "events", "handle" ], true );
|
||
- }
|
||
- },
|
||
-
|
||
- // Events that are safe to short-circuit if no handlers are attached.
|
||
- // Native DOM events should not be added, they may have inline handlers.
|
||
- customEvent: {
|
||
- "getData": true,
|
||
- "setData": true,
|
||
- "changeData": true
|
||
- },
|
||
-
|
||
- trigger: function( event, data, elem, onlyHandlers ) {
|
||
- // Don't do events on text and comment nodes
|
||
- if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Event object or event type
|
||
- var type = event.type || event,
|
||
- namespaces = [],
|
||
- cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
|
||
-
|
||
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
|
||
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- if ( type.indexOf( "!" ) >= 0 ) {
|
||
- // Exclusive events trigger only for the exact event (no namespaces)
|
||
- type = type.slice(0, -1);
|
||
- exclusive = true;
|
||
- }
|
||
-
|
||
- if ( type.indexOf( "." ) >= 0 ) {
|
||
- // Namespaced trigger; create a regexp to match event type in handle()
|
||
- namespaces = type.split(".");
|
||
- type = namespaces.shift();
|
||
- namespaces.sort();
|
||
- }
|
||
-
|
||
- if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
|
||
- // No jQuery handlers for this event type, and it can't have inline handlers
|
||
- return;
|
||
- }
|
||
-
|
||
- // Caller can pass in an Event, Object, or just an event type string
|
||
- event = typeof event === "object" ?
|
||
- // jQuery.Event object
|
||
- event[ jQuery.expando ] ? event :
|
||
- // Object literal
|
||
- new jQuery.Event( type, event ) :
|
||
- // Just the event type (string)
|
||
- new jQuery.Event( type );
|
||
-
|
||
- event.type = type;
|
||
- event.isTrigger = true;
|
||
- event.exclusive = exclusive;
|
||
- event.namespace = namespaces.join( "." );
|
||
- event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
|
||
- ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
|
||
-
|
||
- // Handle a global trigger
|
||
- if ( !elem ) {
|
||
-
|
||
- // TODO: Stop taunting the data cache; remove global events and always attach to document
|
||
- cache = jQuery.cache;
|
||
- for ( i in cache ) {
|
||
- if ( cache[ i ].events && cache[ i ].events[ type ] ) {
|
||
- jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
|
||
- }
|
||
- }
|
||
- return;
|
||
- }
|
||
-
|
||
- // Clean up the event in case it is being reused
|
||
- event.result = undefined;
|
||
- if ( !event.target ) {
|
||
- event.target = elem;
|
||
- }
|
||
-
|
||
- // Clone any incoming data and prepend the event, creating the handler arg list
|
||
- data = data != null ? jQuery.makeArray( data ) : [];
|
||
- data.unshift( event );
|
||
-
|
||
- // Allow special events to draw outside the lines
|
||
- special = jQuery.event.special[ type ] || {};
|
||
- if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Determine event propagation path in advance, per W3C events spec (#9951)
|
||
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
||
- eventPath = [[ elem, special.bindType || type ]];
|
||
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
|
||
-
|
||
- bubbleType = special.delegateType || type;
|
||
- cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
|
||
- old = null;
|
||
- for ( ; cur; cur = cur.parentNode ) {
|
||
- eventPath.push([ cur, bubbleType ]);
|
||
- old = cur;
|
||
- }
|
||
-
|
||
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
|
||
- if ( old && old === elem.ownerDocument ) {
|
||
- eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
|
||
- }
|
||
- }
|
||
-
|
||
- // Fire handlers on the event path
|
||
- for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
|
||
-
|
||
- cur = eventPath[i][0];
|
||
- event.type = eventPath[i][1];
|
||
-
|
||
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
|
||
- if ( handle ) {
|
||
- handle.apply( cur, data );
|
||
- }
|
||
- // Note that this is a bare JS function and not a jQuery handler
|
||
- handle = ontype && cur[ ontype ];
|
||
- if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
|
||
- event.preventDefault();
|
||
- }
|
||
- }
|
||
- event.type = type;
|
||
-
|
||
- // If nobody prevented the default action, do it now
|
||
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
|
||
-
|
||
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
|
||
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
|
||
-
|
||
- // Call a native DOM method on the target with the same name name as the event.
|
||
- // Can't use an .isFunction() check here because IE6/7 fails that test.
|
||
- // Don't do default actions on window, that's where global variables be (#6170)
|
||
- // IE<9 dies on focus/blur to hidden element (#1486)
|
||
- if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
|
||
-
|
||
- // Don't re-trigger an onFOO event when we call its FOO() method
|
||
- old = elem[ ontype ];
|
||
-
|
||
- if ( old ) {
|
||
- elem[ ontype ] = null;
|
||
- }
|
||
-
|
||
- // Prevent re-triggering of the same event, since we already bubbled it above
|
||
- jQuery.event.triggered = type;
|
||
- elem[ type ]();
|
||
- jQuery.event.triggered = undefined;
|
||
-
|
||
- if ( old ) {
|
||
- elem[ ontype ] = old;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return event.result;
|
||
- },
|
||
-
|
||
- dispatch: function( event ) {
|
||
-
|
||
- // Make a writable jQuery.Event from the native event object
|
||
- event = jQuery.event.fix( event || window.event );
|
||
-
|
||
- var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
|
||
- delegateCount = handlers.delegateCount,
|
||
- args = [].slice.call( arguments, 0 ),
|
||
- run_all = !event.exclusive && !event.namespace,
|
||
- handlerQueue = [],
|
||
- i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
|
||
-
|
||
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
|
||
- args[0] = event;
|
||
- event.delegateTarget = this;
|
||
-
|
||
- // Determine handlers that should run if there are delegated events
|
||
- // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
|
||
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
|
||
-
|
||
- // Pregenerate a single jQuery object for reuse with .is()
|
||
- jqcur = jQuery(this);
|
||
- jqcur.context = this.ownerDocument || this;
|
||
-
|
||
- for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
|
||
- selMatch = {};
|
||
- matches = [];
|
||
- jqcur[0] = cur;
|
||
- for ( i = 0; i < delegateCount; i++ ) {
|
||
- handleObj = handlers[ i ];
|
||
- sel = handleObj.selector;
|
||
-
|
||
- if ( selMatch[ sel ] === undefined ) {
|
||
- selMatch[ sel ] = (
|
||
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
|
||
- );
|
||
- }
|
||
- if ( selMatch[ sel ] ) {
|
||
- matches.push( handleObj );
|
||
- }
|
||
- }
|
||
- if ( matches.length ) {
|
||
- handlerQueue.push({ elem: cur, matches: matches });
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Add the remaining (directly-bound) handlers
|
||
- if ( handlers.length > delegateCount ) {
|
||
- handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
|
||
- }
|
||
-
|
||
- // Run delegates first; they may want to stop propagation beneath us
|
||
- for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
|
||
- matched = handlerQueue[ i ];
|
||
- event.currentTarget = matched.elem;
|
||
-
|
||
- for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
|
||
- handleObj = matched.matches[ j ];
|
||
-
|
||
- // Triggered event must either 1) be non-exclusive and have no namespace, or
|
||
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
|
||
- if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
|
||
-
|
||
- event.data = handleObj.data;
|
||
- event.handleObj = handleObj;
|
||
-
|
||
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
|
||
- .apply( matched.elem, args );
|
||
-
|
||
- if ( ret !== undefined ) {
|
||
- event.result = ret;
|
||
- if ( ret === false ) {
|
||
- event.preventDefault();
|
||
- event.stopPropagation();
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return event.result;
|
||
- },
|
||
-
|
||
- // Includes some event props shared by KeyEvent and MouseEvent
|
||
- // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
|
||
- props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
|
||
-
|
||
- fixHooks: {},
|
||
-
|
||
- keyHooks: {
|
||
- props: "char charCode key keyCode".split(" "),
|
||
- filter: function( event, original ) {
|
||
-
|
||
- // Add which for key events
|
||
- if ( event.which == null ) {
|
||
- event.which = original.charCode != null ? original.charCode : original.keyCode;
|
||
- }
|
||
-
|
||
- return event;
|
||
- }
|
||
- },
|
||
-
|
||
- mouseHooks: {
|
||
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
|
||
- filter: function( event, original ) {
|
||
- var eventDoc, doc, body,
|
||
- button = original.button,
|
||
- fromElement = original.fromElement;
|
||
-
|
||
- // Calculate pageX/Y if missing and clientX/Y available
|
||
- if ( event.pageX == null && original.clientX != null ) {
|
||
- eventDoc = event.target.ownerDocument || document;
|
||
- doc = eventDoc.documentElement;
|
||
- body = eventDoc.body;
|
||
-
|
||
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
|
||
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
|
||
- }
|
||
-
|
||
- // Add relatedTarget, if necessary
|
||
- if ( !event.relatedTarget && fromElement ) {
|
||
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
|
||
- }
|
||
-
|
||
- // Add which for click: 1 === left; 2 === middle; 3 === right
|
||
- // Note: button is not normalized, so don't use it
|
||
- if ( !event.which && button !== undefined ) {
|
||
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
|
||
- }
|
||
-
|
||
- return event;
|
||
- }
|
||
- },
|
||
-
|
||
- fix: function( event ) {
|
||
- if ( event[ jQuery.expando ] ) {
|
||
- return event;
|
||
- }
|
||
-
|
||
- // Create a writable copy of the event object and normalize some properties
|
||
- var i, prop,
|
||
- originalEvent = event,
|
||
- fixHook = jQuery.event.fixHooks[ event.type ] || {},
|
||
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
|
||
-
|
||
- event = jQuery.Event( originalEvent );
|
||
-
|
||
- for ( i = copy.length; i; ) {
|
||
- prop = copy[ --i ];
|
||
- event[ prop ] = originalEvent[ prop ];
|
||
- }
|
||
-
|
||
- // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
|
||
- if ( !event.target ) {
|
||
- event.target = originalEvent.srcElement || document;
|
||
- }
|
||
-
|
||
- // Target should not be a text node (#504, Safari)
|
||
- if ( event.target.nodeType === 3 ) {
|
||
- event.target = event.target.parentNode;
|
||
- }
|
||
-
|
||
- // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
|
||
- if ( event.metaKey === undefined ) {
|
||
- event.metaKey = event.ctrlKey;
|
||
- }
|
||
-
|
||
- return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
|
||
- },
|
||
-
|
||
- special: {
|
||
- ready: {
|
||
- // Make sure the ready event is setup
|
||
- setup: jQuery.bindReady
|
||
- },
|
||
-
|
||
- load: {
|
||
- // Prevent triggered image.load events from bubbling to window.load
|
||
- noBubble: true
|
||
- },
|
||
-
|
||
- focus: {
|
||
- delegateType: "focusin"
|
||
- },
|
||
- blur: {
|
||
- delegateType: "focusout"
|
||
- },
|
||
-
|
||
- beforeunload: {
|
||
- setup: function( data, namespaces, eventHandle ) {
|
||
- // We only want to do this special case on windows
|
||
- if ( jQuery.isWindow( this ) ) {
|
||
- this.onbeforeunload = eventHandle;
|
||
- }
|
||
- },
|
||
-
|
||
- teardown: function( namespaces, eventHandle ) {
|
||
- if ( this.onbeforeunload === eventHandle ) {
|
||
- this.onbeforeunload = null;
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- simulate: function( type, elem, event, bubble ) {
|
||
- // Piggyback on a donor event to simulate a different one.
|
||
- // Fake originalEvent to avoid donor's stopPropagation, but if the
|
||
- // simulated event prevents default then we do the same on the donor.
|
||
- var e = jQuery.extend(
|
||
- new jQuery.Event(),
|
||
- event,
|
||
- { type: type,
|
||
- isSimulated: true,
|
||
- originalEvent: {}
|
||
- }
|
||
- );
|
||
- if ( bubble ) {
|
||
- jQuery.event.trigger( e, null, elem );
|
||
- } else {
|
||
- jQuery.event.dispatch.call( elem, e );
|
||
- }
|
||
- if ( e.isDefaultPrevented() ) {
|
||
- event.preventDefault();
|
||
- }
|
||
- }
|
||
-};
|
||
-
|
||
-// Some plugins are using, but it's undocumented/deprecated and will be removed.
|
||
-// The 1.7 special event interface should provide all the hooks needed now.
|
||
-jQuery.event.handle = jQuery.event.dispatch;
|
||
-
|
||
-jQuery.removeEvent = document.removeEventListener ?
|
||
- function( elem, type, handle ) {
|
||
- if ( elem.removeEventListener ) {
|
||
- elem.removeEventListener( type, handle, false );
|
||
- }
|
||
- } :
|
||
- function( elem, type, handle ) {
|
||
- if ( elem.detachEvent ) {
|
||
- elem.detachEvent( "on" + type, handle );
|
||
- }
|
||
- };
|
||
-
|
||
-jQuery.Event = function( src, props ) {
|
||
- // Allow instantiation without the 'new' keyword
|
||
- if ( !(this instanceof jQuery.Event) ) {
|
||
- return new jQuery.Event( src, props );
|
||
- }
|
||
-
|
||
- // Event object
|
||
- if ( src && src.type ) {
|
||
- this.originalEvent = src;
|
||
- this.type = src.type;
|
||
-
|
||
- // Events bubbling up the document may have been marked as prevented
|
||
- // by a handler lower down the tree; reflect the correct value.
|
||
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
|
||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
|
||
-
|
||
- // Event type
|
||
- } else {
|
||
- this.type = src;
|
||
- }
|
||
-
|
||
- // Put explicitly provided properties onto the event object
|
||
- if ( props ) {
|
||
- jQuery.extend( this, props );
|
||
- }
|
||
-
|
||
- // Create a timestamp if incoming event doesn't have one
|
||
- this.timeStamp = src && src.timeStamp || jQuery.now();
|
||
-
|
||
- // Mark it as fixed
|
||
- this[ jQuery.expando ] = true;
|
||
-};
|
||
-
|
||
-function returnFalse() {
|
||
- return false;
|
||
-}
|
||
-function returnTrue() {
|
||
- return true;
|
||
-}
|
||
-
|
||
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
||
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
||
-jQuery.Event.prototype = {
|
||
- preventDefault: function() {
|
||
- this.isDefaultPrevented = returnTrue;
|
||
-
|
||
- var e = this.originalEvent;
|
||
- if ( !e ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // if preventDefault exists run it on the original event
|
||
- if ( e.preventDefault ) {
|
||
- e.preventDefault();
|
||
-
|
||
- // otherwise set the returnValue property of the original event to false (IE)
|
||
- } else {
|
||
- e.returnValue = false;
|
||
- }
|
||
- },
|
||
- stopPropagation: function() {
|
||
- this.isPropagationStopped = returnTrue;
|
||
-
|
||
- var e = this.originalEvent;
|
||
- if ( !e ) {
|
||
- return;
|
||
- }
|
||
- // if stopPropagation exists run it on the original event
|
||
- if ( e.stopPropagation ) {
|
||
- e.stopPropagation();
|
||
- }
|
||
- // otherwise set the cancelBubble property of the original event to true (IE)
|
||
- e.cancelBubble = true;
|
||
- },
|
||
- stopImmediatePropagation: function() {
|
||
- this.isImmediatePropagationStopped = returnTrue;
|
||
- this.stopPropagation();
|
||
- },
|
||
- isDefaultPrevented: returnFalse,
|
||
- isPropagationStopped: returnFalse,
|
||
- isImmediatePropagationStopped: returnFalse
|
||
-};
|
||
-
|
||
-// Create mouseenter/leave events using mouseover/out and event-time checks
|
||
-jQuery.each({
|
||
- mouseenter: "mouseover",
|
||
- mouseleave: "mouseout"
|
||
-}, function( orig, fix ) {
|
||
- jQuery.event.special[ orig ] = {
|
||
- delegateType: fix,
|
||
- bindType: fix,
|
||
-
|
||
- handle: function( event ) {
|
||
- var target = this,
|
||
- related = event.relatedTarget,
|
||
- handleObj = event.handleObj,
|
||
- selector = handleObj.selector,
|
||
- ret;
|
||
-
|
||
- // For mousenter/leave call the handler if related is outside the target.
|
||
- // NB: No relatedTarget if the mouse left/entered the browser window
|
||
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
|
||
- event.type = handleObj.origType;
|
||
- ret = handleObj.handler.apply( this, arguments );
|
||
- event.type = fix;
|
||
- }
|
||
- return ret;
|
||
- }
|
||
- };
|
||
-});
|
||
-
|
||
-// IE submit delegation
|
||
-if ( !jQuery.support.submitBubbles ) {
|
||
-
|
||
- jQuery.event.special.submit = {
|
||
- setup: function() {
|
||
- // Only need this for delegated form submit events
|
||
- if ( jQuery.nodeName( this, "form" ) ) {
|
||
- return false;
|
||
- }
|
||
-
|
||
- // Lazy-add a submit handler when a descendant form may potentially be submitted
|
||
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
|
||
- // Node name check avoids a VML-related crash in IE (#9807)
|
||
- var elem = e.target,
|
||
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
|
||
- if ( form && !form._submit_attached ) {
|
||
- jQuery.event.add( form, "submit._submit", function( event ) {
|
||
- // If form was submitted by the user, bubble the event up the tree
|
||
- if ( this.parentNode && !event.isTrigger ) {
|
||
- jQuery.event.simulate( "submit", this.parentNode, event, true );
|
||
- }
|
||
- });
|
||
- form._submit_attached = true;
|
||
- }
|
||
- });
|
||
- // return undefined since we don't need an event listener
|
||
- },
|
||
-
|
||
- teardown: function() {
|
||
- // Only need this for delegated form submit events
|
||
- if ( jQuery.nodeName( this, "form" ) ) {
|
||
- return false;
|
||
- }
|
||
-
|
||
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
|
||
- jQuery.event.remove( this, "._submit" );
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-// IE change delegation and checkbox/radio fix
|
||
-if ( !jQuery.support.changeBubbles ) {
|
||
-
|
||
- jQuery.event.special.change = {
|
||
-
|
||
- setup: function() {
|
||
-
|
||
- if ( rformElems.test( this.nodeName ) ) {
|
||
- // IE doesn't fire change on a check/radio until blur; trigger it on click
|
||
- // after a propertychange. Eat the blur-change in special.change.handle.
|
||
- // This still fires onchange a second time for check/radio after blur.
|
||
- if ( this.type === "checkbox" || this.type === "radio" ) {
|
||
- jQuery.event.add( this, "propertychange._change", function( event ) {
|
||
- if ( event.originalEvent.propertyName === "checked" ) {
|
||
- this._just_changed = true;
|
||
- }
|
||
- });
|
||
- jQuery.event.add( this, "click._change", function( event ) {
|
||
- if ( this._just_changed && !event.isTrigger ) {
|
||
- this._just_changed = false;
|
||
- jQuery.event.simulate( "change", this, event, true );
|
||
- }
|
||
- });
|
||
- }
|
||
- return false;
|
||
- }
|
||
- // Delegated event; lazy-add a change handler on descendant inputs
|
||
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
|
||
- var elem = e.target;
|
||
-
|
||
- if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
|
||
- jQuery.event.add( elem, "change._change", function( event ) {
|
||
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
|
||
- jQuery.event.simulate( "change", this.parentNode, event, true );
|
||
- }
|
||
- });
|
||
- elem._change_attached = true;
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- handle: function( event ) {
|
||
- var elem = event.target;
|
||
-
|
||
- // Swallow native change events from checkbox/radio, we already triggered them above
|
||
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
|
||
- return event.handleObj.handler.apply( this, arguments );
|
||
- }
|
||
- },
|
||
-
|
||
- teardown: function() {
|
||
- jQuery.event.remove( this, "._change" );
|
||
-
|
||
- return rformElems.test( this.nodeName );
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-// Create "bubbling" focus and blur events
|
||
-if ( !jQuery.support.focusinBubbles ) {
|
||
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
||
-
|
||
- // Attach a single capturing handler while someone wants focusin/focusout
|
||
- var attaches = 0,
|
||
- handler = function( event ) {
|
||
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
|
||
- };
|
||
-
|
||
- jQuery.event.special[ fix ] = {
|
||
- setup: function() {
|
||
- if ( attaches++ === 0 ) {
|
||
- document.addEventListener( orig, handler, true );
|
||
- }
|
||
- },
|
||
- teardown: function() {
|
||
- if ( --attaches === 0 ) {
|
||
- document.removeEventListener( orig, handler, true );
|
||
- }
|
||
- }
|
||
- };
|
||
- });
|
||
-}
|
||
-
|
||
-jQuery.fn.extend({
|
||
-
|
||
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
|
||
- var origFn, type;
|
||
-
|
||
- // Types can be a map of types/handlers
|
||
- if ( typeof types === "object" ) {
|
||
- // ( types-Object, selector, data )
|
||
- if ( typeof selector !== "string" ) {
|
||
- // ( types-Object, data )
|
||
- data = selector;
|
||
- selector = undefined;
|
||
- }
|
||
- for ( type in types ) {
|
||
- this.on( type, selector, data, types[ type ], one );
|
||
- }
|
||
- return this;
|
||
- }
|
||
-
|
||
- if ( data == null && fn == null ) {
|
||
- // ( types, fn )
|
||
- fn = selector;
|
||
- data = selector = undefined;
|
||
- } else if ( fn == null ) {
|
||
- if ( typeof selector === "string" ) {
|
||
- // ( types, selector, fn )
|
||
- fn = data;
|
||
- data = undefined;
|
||
- } else {
|
||
- // ( types, data, fn )
|
||
- fn = data;
|
||
- data = selector;
|
||
- selector = undefined;
|
||
- }
|
||
- }
|
||
- if ( fn === false ) {
|
||
- fn = returnFalse;
|
||
- } else if ( !fn ) {
|
||
- return this;
|
||
- }
|
||
-
|
||
- if ( one === 1 ) {
|
||
- origFn = fn;
|
||
- fn = function( event ) {
|
||
- // Can use an empty set, since event contains the info
|
||
- jQuery().off( event );
|
||
- return origFn.apply( this, arguments );
|
||
- };
|
||
- // Use same guid so caller can remove using origFn
|
||
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
|
||
- }
|
||
- return this.each( function() {
|
||
- jQuery.event.add( this, types, fn, data, selector );
|
||
- });
|
||
- },
|
||
- one: function( types, selector, data, fn ) {
|
||
- return this.on.call( this, types, selector, data, fn, 1 );
|
||
- },
|
||
- off: function( types, selector, fn ) {
|
||
- if ( types && types.preventDefault && types.handleObj ) {
|
||
- // ( event ) dispatched jQuery.Event
|
||
- var handleObj = types.handleObj;
|
||
- jQuery( types.delegateTarget ).off(
|
||
- handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
|
||
- handleObj.selector,
|
||
- handleObj.handler
|
||
- );
|
||
- return this;
|
||
- }
|
||
- if ( typeof types === "object" ) {
|
||
- // ( types-object [, selector] )
|
||
- for ( var type in types ) {
|
||
- this.off( type, selector, types[ type ] );
|
||
- }
|
||
- return this;
|
||
- }
|
||
- if ( selector === false || typeof selector === "function" ) {
|
||
- // ( types [, fn] )
|
||
- fn = selector;
|
||
- selector = undefined;
|
||
- }
|
||
- if ( fn === false ) {
|
||
- fn = returnFalse;
|
||
- }
|
||
- return this.each(function() {
|
||
- jQuery.event.remove( this, types, fn, selector );
|
||
- });
|
||
- },
|
||
-
|
||
- bind: function( types, data, fn ) {
|
||
- return this.on( types, null, data, fn );
|
||
- },
|
||
- unbind: function( types, fn ) {
|
||
- return this.off( types, null, fn );
|
||
- },
|
||
-
|
||
- live: function( types, data, fn ) {
|
||
- jQuery( this.context ).on( types, this.selector, data, fn );
|
||
- return this;
|
||
- },
|
||
- die: function( types, fn ) {
|
||
- jQuery( this.context ).off( types, this.selector || "**", fn );
|
||
- return this;
|
||
- },
|
||
-
|
||
- delegate: function( selector, types, data, fn ) {
|
||
- return this.on( types, selector, data, fn );
|
||
- },
|
||
- undelegate: function( selector, types, fn ) {
|
||
- // ( namespace ) or ( selector, types [, fn] )
|
||
- return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
|
||
- },
|
||
-
|
||
- trigger: function( type, data ) {
|
||
- return this.each(function() {
|
||
- jQuery.event.trigger( type, data, this );
|
||
- });
|
||
- },
|
||
- triggerHandler: function( type, data ) {
|
||
- if ( this[0] ) {
|
||
- return jQuery.event.trigger( type, data, this[0], true );
|
||
- }
|
||
- },
|
||
-
|
||
- toggle: function( fn ) {
|
||
- // Save reference to arguments for access in closure
|
||
- var args = arguments,
|
||
- guid = fn.guid || jQuery.guid++,
|
||
- i = 0,
|
||
- toggler = function( event ) {
|
||
- // Figure out which function to execute
|
||
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
|
||
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
|
||
-
|
||
- // Make sure that clicks stop
|
||
- event.preventDefault();
|
||
-
|
||
- // and execute the function
|
||
- return args[ lastToggle ].apply( this, arguments ) || false;
|
||
- };
|
||
-
|
||
- // link all the functions, so any of them can unbind this click handler
|
||
- toggler.guid = guid;
|
||
- while ( i < args.length ) {
|
||
- args[ i++ ].guid = guid;
|
||
- }
|
||
-
|
||
- return this.click( toggler );
|
||
- },
|
||
-
|
||
- hover: function( fnOver, fnOut ) {
|
||
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
||
- }
|
||
-});
|
||
-
|
||
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
|
||
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
|
||
-
|
||
- // Handle event binding
|
||
- jQuery.fn[ name ] = function( data, fn ) {
|
||
- if ( fn == null ) {
|
||
- fn = data;
|
||
- data = null;
|
||
- }
|
||
-
|
||
- return arguments.length > 0 ?
|
||
- this.on( name, null, data, fn ) :
|
||
- this.trigger( name );
|
||
- };
|
||
-
|
||
- if ( jQuery.attrFn ) {
|
||
- jQuery.attrFn[ name ] = true;
|
||
- }
|
||
-
|
||
- if ( rkeyEvent.test( name ) ) {
|
||
- jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
|
||
- }
|
||
-
|
||
- if ( rmouseEvent.test( name ) ) {
|
||
- jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-/*!
|
||
- * Sizzle CSS Selector Engine
|
||
- * Copyright 2011, The Dojo Foundation
|
||
- * Released under the MIT, BSD, and GPL Licenses.
|
||
- * More information: http://sizzlejs.com/
|
||
- */
|
||
-(function(){
|
||
-
|
||
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
|
||
- expando = "sizcache" + (Math.random() + '').replace('.', ''),
|
||
- done = 0,
|
||
- toString = Object.prototype.toString,
|
||
- hasDuplicate = false,
|
||
- baseHasDuplicate = true,
|
||
- rBackslash = /\\/g,
|
||
- rReturn = /\r\n/g,
|
||
- rNonWord = /\W/;
|
||
-
|
||
-// Here we check if the JavaScript engine is using some sort of
|
||
-// optimization where it does not always call our comparision
|
||
-// function. If that is the case, discard the hasDuplicate value.
|
||
-// Thus far that includes Google Chrome.
|
||
-[0, 0].sort(function() {
|
||
- baseHasDuplicate = false;
|
||
- return 0;
|
||
-});
|
||
-
|
||
-var Sizzle = function( selector, context, results, seed ) {
|
||
- results = results || [];
|
||
- context = context || document;
|
||
-
|
||
- var origContext = context;
|
||
-
|
||
- if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
|
||
- return [];
|
||
- }
|
||
-
|
||
- if ( !selector || typeof selector !== "string" ) {
|
||
- return results;
|
||
- }
|
||
-
|
||
- var m, set, checkSet, extra, ret, cur, pop, i,
|
||
- prune = true,
|
||
- contextXML = Sizzle.isXML( context ),
|
||
- parts = [],
|
||
- soFar = selector;
|
||
-
|
||
- // Reset the position of the chunker regexp (start from head)
|
||
- do {
|
||
- chunker.exec( "" );
|
||
- m = chunker.exec( soFar );
|
||
-
|
||
- if ( m ) {
|
||
- soFar = m[3];
|
||
-
|
||
- parts.push( m[1] );
|
||
-
|
||
- if ( m[2] ) {
|
||
- extra = m[3];
|
||
- break;
|
||
- }
|
||
- }
|
||
- } while ( m );
|
||
-
|
||
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
|
||
-
|
||
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
|
||
- set = posProcess( parts[0] + parts[1], context, seed );
|
||
-
|
||
- } else {
|
||
- set = Expr.relative[ parts[0] ] ?
|
||
- [ context ] :
|
||
- Sizzle( parts.shift(), context );
|
||
-
|
||
- while ( parts.length ) {
|
||
- selector = parts.shift();
|
||
-
|
||
- if ( Expr.relative[ selector ] ) {
|
||
- selector += parts.shift();
|
||
- }
|
||
-
|
||
- set = posProcess( selector, set, seed );
|
||
- }
|
||
- }
|
||
-
|
||
- } else {
|
||
- // Take a shortcut and set the context if the root selector is an ID
|
||
- // (but not if it'll be faster if the inner selector is an ID)
|
||
- if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
|
||
- Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
|
||
-
|
||
- ret = Sizzle.find( parts.shift(), context, contextXML );
|
||
- context = ret.expr ?
|
||
- Sizzle.filter( ret.expr, ret.set )[0] :
|
||
- ret.set[0];
|
||
- }
|
||
-
|
||
- if ( context ) {
|
||
- ret = seed ?
|
||
- { expr: parts.pop(), set: makeArray(seed) } :
|
||
- Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
|
||
-
|
||
- set = ret.expr ?
|
||
- Sizzle.filter( ret.expr, ret.set ) :
|
||
- ret.set;
|
||
-
|
||
- if ( parts.length > 0 ) {
|
||
- checkSet = makeArray( set );
|
||
-
|
||
- } else {
|
||
- prune = false;
|
||
- }
|
||
-
|
||
- while ( parts.length ) {
|
||
- cur = parts.pop();
|
||
- pop = cur;
|
||
-
|
||
- if ( !Expr.relative[ cur ] ) {
|
||
- cur = "";
|
||
- } else {
|
||
- pop = parts.pop();
|
||
- }
|
||
-
|
||
- if ( pop == null ) {
|
||
- pop = context;
|
||
- }
|
||
-
|
||
- Expr.relative[ cur ]( checkSet, pop, contextXML );
|
||
- }
|
||
-
|
||
- } else {
|
||
- checkSet = parts = [];
|
||
- }
|
||
- }
|
||
-
|
||
- if ( !checkSet ) {
|
||
- checkSet = set;
|
||
- }
|
||
-
|
||
- if ( !checkSet ) {
|
||
- Sizzle.error( cur || selector );
|
||
- }
|
||
-
|
||
- if ( toString.call(checkSet) === "[object Array]" ) {
|
||
- if ( !prune ) {
|
||
- results.push.apply( results, checkSet );
|
||
-
|
||
- } else if ( context && context.nodeType === 1 ) {
|
||
- for ( i = 0; checkSet[i] != null; i++ ) {
|
||
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
|
||
- results.push( set[i] );
|
||
- }
|
||
- }
|
||
-
|
||
- } else {
|
||
- for ( i = 0; checkSet[i] != null; i++ ) {
|
||
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
|
||
- results.push( set[i] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- } else {
|
||
- makeArray( checkSet, results );
|
||
- }
|
||
-
|
||
- if ( extra ) {
|
||
- Sizzle( extra, origContext, results, seed );
|
||
- Sizzle.uniqueSort( results );
|
||
- }
|
||
-
|
||
- return results;
|
||
-};
|
||
-
|
||
-Sizzle.uniqueSort = function( results ) {
|
||
- if ( sortOrder ) {
|
||
- hasDuplicate = baseHasDuplicate;
|
||
- results.sort( sortOrder );
|
||
-
|
||
- if ( hasDuplicate ) {
|
||
- for ( var i = 1; i < results.length; i++ ) {
|
||
- if ( results[i] === results[ i - 1 ] ) {
|
||
- results.splice( i--, 1 );
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return results;
|
||
-};
|
||
-
|
||
-Sizzle.matches = function( expr, set ) {
|
||
- return Sizzle( expr, null, null, set );
|
||
-};
|
||
-
|
||
-Sizzle.matchesSelector = function( node, expr ) {
|
||
- return Sizzle( expr, null, null, [node] ).length > 0;
|
||
-};
|
||
-
|
||
-Sizzle.find = function( expr, context, isXML ) {
|
||
- var set, i, len, match, type, left;
|
||
-
|
||
- if ( !expr ) {
|
||
- return [];
|
||
- }
|
||
-
|
||
- for ( i = 0, len = Expr.order.length; i < len; i++ ) {
|
||
- type = Expr.order[i];
|
||
-
|
||
- if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
|
||
- left = match[1];
|
||
- match.splice( 1, 1 );
|
||
-
|
||
- if ( left.substr( left.length - 1 ) !== "\\" ) {
|
||
- match[1] = (match[1] || "").replace( rBackslash, "" );
|
||
- set = Expr.find[ type ]( match, context, isXML );
|
||
-
|
||
- if ( set != null ) {
|
||
- expr = expr.replace( Expr.match[ type ], "" );
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- if ( !set ) {
|
||
- set = typeof context.getElementsByTagName !== "undefined" ?
|
||
- context.getElementsByTagName( "*" ) :
|
||
- [];
|
||
- }
|
||
-
|
||
- return { set: set, expr: expr };
|
||
-};
|
||
-
|
||
-Sizzle.filter = function( expr, set, inplace, not ) {
|
||
- var match, anyFound,
|
||
- type, found, item, filter, left,
|
||
- i, pass,
|
||
- old = expr,
|
||
- result = [],
|
||
- curLoop = set,
|
||
- isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
|
||
-
|
||
- while ( expr && set.length ) {
|
||
- for ( type in Expr.filter ) {
|
||
- if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
|
||
- filter = Expr.filter[ type ];
|
||
- left = match[1];
|
||
-
|
||
- anyFound = false;
|
||
-
|
||
- match.splice(1,1);
|
||
-
|
||
- if ( left.substr( left.length - 1 ) === "\\" ) {
|
||
- continue;
|
||
- }
|
||
-
|
||
- if ( curLoop === result ) {
|
||
- result = [];
|
||
- }
|
||
-
|
||
- if ( Expr.preFilter[ type ] ) {
|
||
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
|
||
-
|
||
- if ( !match ) {
|
||
- anyFound = found = true;
|
||
-
|
||
- } else if ( match === true ) {
|
||
- continue;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( match ) {
|
||
- for ( i = 0; (item = curLoop[i]) != null; i++ ) {
|
||
- if ( item ) {
|
||
- found = filter( item, match, i, curLoop );
|
||
- pass = not ^ found;
|
||
-
|
||
- if ( inplace && found != null ) {
|
||
- if ( pass ) {
|
||
- anyFound = true;
|
||
-
|
||
- } else {
|
||
- curLoop[i] = false;
|
||
- }
|
||
-
|
||
- } else if ( pass ) {
|
||
- result.push( item );
|
||
- anyFound = true;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- if ( found !== undefined ) {
|
||
- if ( !inplace ) {
|
||
- curLoop = result;
|
||
- }
|
||
-
|
||
- expr = expr.replace( Expr.match[ type ], "" );
|
||
-
|
||
- if ( !anyFound ) {
|
||
- return [];
|
||
- }
|
||
-
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Improper expression
|
||
- if ( expr === old ) {
|
||
- if ( anyFound == null ) {
|
||
- Sizzle.error( expr );
|
||
-
|
||
- } else {
|
||
- break;
|
||
- }
|
||
- }
|
||
-
|
||
- old = expr;
|
||
- }
|
||
-
|
||
- return curLoop;
|
||
-};
|
||
-
|
||
-Sizzle.error = function( msg ) {
|
||
- throw new Error( "Syntax error, unrecognized expression: " + msg );
|
||
-};
|
||
-
|
||
-/**
|
||
- * Utility function for retreiving the text value of an array of DOM nodes
|
||
- * @param {Array|Element} elem
|
||
- */
|
||
-var getText = Sizzle.getText = function( elem ) {
|
||
- var i, node,
|
||
- nodeType = elem.nodeType,
|
||
- ret = "";
|
||
-
|
||
- if ( nodeType ) {
|
||
- if ( nodeType === 1 || nodeType === 9 ) {
|
||
- // Use textContent || innerText for elements
|
||
- if ( typeof elem.textContent === 'string' ) {
|
||
- return elem.textContent;
|
||
- } else if ( typeof elem.innerText === 'string' ) {
|
||
- // Replace IE's carriage returns
|
||
- return elem.innerText.replace( rReturn, '' );
|
||
- } else {
|
||
- // Traverse it's children
|
||
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
|
||
- ret += getText( elem );
|
||
- }
|
||
- }
|
||
- } else if ( nodeType === 3 || nodeType === 4 ) {
|
||
- return elem.nodeValue;
|
||
- }
|
||
- } else {
|
||
-
|
||
- // If no nodeType, this is expected to be an array
|
||
- for ( i = 0; (node = elem[i]); i++ ) {
|
||
- // Do not traverse comment nodes
|
||
- if ( node.nodeType !== 8 ) {
|
||
- ret += getText( node );
|
||
- }
|
||
- }
|
||
- }
|
||
- return ret;
|
||
-};
|
||
-
|
||
-var Expr = Sizzle.selectors = {
|
||
- order: [ "ID", "NAME", "TAG" ],
|
||
-
|
||
- match: {
|
||
- ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
||
- CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
|
||
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
|
||
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
|
||
- TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
|
||
- CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
|
||
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
|
||
- PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
|
||
- },
|
||
-
|
||
- leftMatch: {},
|
||
-
|
||
- attrMap: {
|
||
- "class": "className",
|
||
- "for": "htmlFor"
|
||
- },
|
||
-
|
||
- attrHandle: {
|
||
- href: function( elem ) {
|
||
- return elem.getAttribute( "href" );
|
||
- },
|
||
- type: function( elem ) {
|
||
- return elem.getAttribute( "type" );
|
||
- }
|
||
- },
|
||
-
|
||
- relative: {
|
||
- "+": function(checkSet, part){
|
||
- var isPartStr = typeof part === "string",
|
||
- isTag = isPartStr && !rNonWord.test( part ),
|
||
- isPartStrNotTag = isPartStr && !isTag;
|
||
-
|
||
- if ( isTag ) {
|
||
- part = part.toLowerCase();
|
||
- }
|
||
-
|
||
- for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
|
||
- if ( (elem = checkSet[i]) ) {
|
||
- while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
|
||
-
|
||
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
|
||
- elem || false :
|
||
- elem === part;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( isPartStrNotTag ) {
|
||
- Sizzle.filter( part, checkSet, true );
|
||
- }
|
||
- },
|
||
-
|
||
- ">": function( checkSet, part ) {
|
||
- var elem,
|
||
- isPartStr = typeof part === "string",
|
||
- i = 0,
|
||
- l = checkSet.length;
|
||
-
|
||
- if ( isPartStr && !rNonWord.test( part ) ) {
|
||
- part = part.toLowerCase();
|
||
-
|
||
- for ( ; i < l; i++ ) {
|
||
- elem = checkSet[i];
|
||
-
|
||
- if ( elem ) {
|
||
- var parent = elem.parentNode;
|
||
- checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
|
||
- }
|
||
- }
|
||
-
|
||
- } else {
|
||
- for ( ; i < l; i++ ) {
|
||
- elem = checkSet[i];
|
||
-
|
||
- if ( elem ) {
|
||
- checkSet[i] = isPartStr ?
|
||
- elem.parentNode :
|
||
- elem.parentNode === part;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( isPartStr ) {
|
||
- Sizzle.filter( part, checkSet, true );
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- "": function(checkSet, part, isXML){
|
||
- var nodeCheck,
|
||
- doneName = done++,
|
||
- checkFn = dirCheck;
|
||
-
|
||
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
|
||
- part = part.toLowerCase();
|
||
- nodeCheck = part;
|
||
- checkFn = dirNodeCheck;
|
||
- }
|
||
-
|
||
- checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
|
||
- },
|
||
-
|
||
- "~": function( checkSet, part, isXML ) {
|
||
- var nodeCheck,
|
||
- doneName = done++,
|
||
- checkFn = dirCheck;
|
||
-
|
||
- if ( typeof part === "string" && !rNonWord.test( part ) ) {
|
||
- part = part.toLowerCase();
|
||
- nodeCheck = part;
|
||
- checkFn = dirNodeCheck;
|
||
- }
|
||
-
|
||
- checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
|
||
- }
|
||
- },
|
||
-
|
||
- find: {
|
||
- ID: function( match, context, isXML ) {
|
||
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
||
- var m = context.getElementById(match[1]);
|
||
- // Check parentNode to catch when Blackberry 4.6 returns
|
||
- // nodes that are no longer in the document #6963
|
||
- return m && m.parentNode ? [m] : [];
|
||
- }
|
||
- },
|
||
-
|
||
- NAME: function( match, context ) {
|
||
- if ( typeof context.getElementsByName !== "undefined" ) {
|
||
- var ret = [],
|
||
- results = context.getElementsByName( match[1] );
|
||
-
|
||
- for ( var i = 0, l = results.length; i < l; i++ ) {
|
||
- if ( results[i].getAttribute("name") === match[1] ) {
|
||
- ret.push( results[i] );
|
||
- }
|
||
- }
|
||
-
|
||
- return ret.length === 0 ? null : ret;
|
||
- }
|
||
- },
|
||
-
|
||
- TAG: function( match, context ) {
|
||
- if ( typeof context.getElementsByTagName !== "undefined" ) {
|
||
- return context.getElementsByTagName( match[1] );
|
||
- }
|
||
- }
|
||
- },
|
||
- preFilter: {
|
||
- CLASS: function( match, curLoop, inplace, result, not, isXML ) {
|
||
- match = " " + match[1].replace( rBackslash, "" ) + " ";
|
||
-
|
||
- if ( isXML ) {
|
||
- return match;
|
||
- }
|
||
-
|
||
- for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
|
||
- if ( elem ) {
|
||
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
|
||
- if ( !inplace ) {
|
||
- result.push( elem );
|
||
- }
|
||
-
|
||
- } else if ( inplace ) {
|
||
- curLoop[i] = false;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return false;
|
||
- },
|
||
-
|
||
- ID: function( match ) {
|
||
- return match[1].replace( rBackslash, "" );
|
||
- },
|
||
-
|
||
- TAG: function( match, curLoop ) {
|
||
- return match[1].replace( rBackslash, "" ).toLowerCase();
|
||
- },
|
||
-
|
||
- CHILD: function( match ) {
|
||
- if ( match[1] === "nth" ) {
|
||
- if ( !match[2] ) {
|
||
- Sizzle.error( match[0] );
|
||
- }
|
||
-
|
||
- match[2] = match[2].replace(/^\+|\s*/g, '');
|
||
-
|
||
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
|
||
- var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
|
||
- match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
|
||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
|
||
-
|
||
- // calculate the numbers (first)n+(last) including if they are negative
|
||
- match[2] = (test[1] + (test[2] || 1)) - 0;
|
||
- match[3] = test[3] - 0;
|
||
- }
|
||
- else if ( match[2] ) {
|
||
- Sizzle.error( match[0] );
|
||
- }
|
||
-
|
||
- // TODO: Move to normal caching system
|
||
- match[0] = done++;
|
||
-
|
||
- return match;
|
||
- },
|
||
-
|
||
- ATTR: function( match, curLoop, inplace, result, not, isXML ) {
|
||
- var name = match[1] = match[1].replace( rBackslash, "" );
|
||
-
|
||
- if ( !isXML && Expr.attrMap[name] ) {
|
||
- match[1] = Expr.attrMap[name];
|
||
- }
|
||
-
|
||
- // Handle if an un-quoted value was used
|
||
- match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
|
||
-
|
||
- if ( match[2] === "~=" ) {
|
||
- match[4] = " " + match[4] + " ";
|
||
- }
|
||
-
|
||
- return match;
|
||
- },
|
||
-
|
||
- PSEUDO: function( match, curLoop, inplace, result, not ) {
|
||
- if ( match[1] === "not" ) {
|
||
- // If we're dealing with a complex expression, or a simple one
|
||
- if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
|
||
- match[3] = Sizzle(match[3], null, null, curLoop);
|
||
-
|
||
- } else {
|
||
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
|
||
-
|
||
- if ( !inplace ) {
|
||
- result.push.apply( result, ret );
|
||
- }
|
||
-
|
||
- return false;
|
||
- }
|
||
-
|
||
- } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
|
||
- return true;
|
||
- }
|
||
-
|
||
- return match;
|
||
- },
|
||
-
|
||
- POS: function( match ) {
|
||
- match.unshift( true );
|
||
-
|
||
- return match;
|
||
- }
|
||
- },
|
||
-
|
||
- filters: {
|
||
- enabled: function( elem ) {
|
||
- return elem.disabled === false && elem.type !== "hidden";
|
||
- },
|
||
-
|
||
- disabled: function( elem ) {
|
||
- return elem.disabled === true;
|
||
- },
|
||
-
|
||
- checked: function( elem ) {
|
||
- return elem.checked === true;
|
||
- },
|
||
-
|
||
- selected: function( elem ) {
|
||
- // Accessing this property makes selected-by-default
|
||
- // options in Safari work properly
|
||
- if ( elem.parentNode ) {
|
||
- elem.parentNode.selectedIndex;
|
||
- }
|
||
-
|
||
- return elem.selected === true;
|
||
- },
|
||
-
|
||
- parent: function( elem ) {
|
||
- return !!elem.firstChild;
|
||
- },
|
||
-
|
||
- empty: function( elem ) {
|
||
- return !elem.firstChild;
|
||
- },
|
||
-
|
||
- has: function( elem, i, match ) {
|
||
- return !!Sizzle( match[3], elem ).length;
|
||
- },
|
||
-
|
||
- header: function( elem ) {
|
||
- return (/h\d/i).test( elem.nodeName );
|
||
- },
|
||
-
|
||
- text: function( elem ) {
|
||
- var attr = elem.getAttribute( "type" ), type = elem.type;
|
||
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
|
||
- // use getAttribute instead to test this case
|
||
- return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
|
||
- },
|
||
-
|
||
- radio: function( elem ) {
|
||
- return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
|
||
- },
|
||
-
|
||
- checkbox: function( elem ) {
|
||
- return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
|
||
- },
|
||
-
|
||
- file: function( elem ) {
|
||
- return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
|
||
- },
|
||
-
|
||
- password: function( elem ) {
|
||
- return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
|
||
- },
|
||
-
|
||
- submit: function( elem ) {
|
||
- var name = elem.nodeName.toLowerCase();
|
||
- return (name === "input" || name === "button") && "submit" === elem.type;
|
||
- },
|
||
-
|
||
- image: function( elem ) {
|
||
- return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
|
||
- },
|
||
-
|
||
- reset: function( elem ) {
|
||
- var name = elem.nodeName.toLowerCase();
|
||
- return (name === "input" || name === "button") && "reset" === elem.type;
|
||
- },
|
||
-
|
||
- button: function( elem ) {
|
||
- var name = elem.nodeName.toLowerCase();
|
||
- return name === "input" && "button" === elem.type || name === "button";
|
||
- },
|
||
-
|
||
- input: function( elem ) {
|
||
- return (/input|select|textarea|button/i).test( elem.nodeName );
|
||
- },
|
||
-
|
||
- focus: function( elem ) {
|
||
- return elem === elem.ownerDocument.activeElement;
|
||
- }
|
||
- },
|
||
- setFilters: {
|
||
- first: function( elem, i ) {
|
||
- return i === 0;
|
||
- },
|
||
-
|
||
- last: function( elem, i, match, array ) {
|
||
- return i === array.length - 1;
|
||
- },
|
||
-
|
||
- even: function( elem, i ) {
|
||
- return i % 2 === 0;
|
||
- },
|
||
-
|
||
- odd: function( elem, i ) {
|
||
- return i % 2 === 1;
|
||
- },
|
||
-
|
||
- lt: function( elem, i, match ) {
|
||
- return i < match[3] - 0;
|
||
- },
|
||
-
|
||
- gt: function( elem, i, match ) {
|
||
- return i > match[3] - 0;
|
||
- },
|
||
-
|
||
- nth: function( elem, i, match ) {
|
||
- return match[3] - 0 === i;
|
||
- },
|
||
-
|
||
- eq: function( elem, i, match ) {
|
||
- return match[3] - 0 === i;
|
||
- }
|
||
- },
|
||
- filter: {
|
||
- PSEUDO: function( elem, match, i, array ) {
|
||
- var name = match[1],
|
||
- filter = Expr.filters[ name ];
|
||
-
|
||
- if ( filter ) {
|
||
- return filter( elem, i, match, array );
|
||
-
|
||
- } else if ( name === "contains" ) {
|
||
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
|
||
-
|
||
- } else if ( name === "not" ) {
|
||
- var not = match[3];
|
||
-
|
||
- for ( var j = 0, l = not.length; j < l; j++ ) {
|
||
- if ( not[j] === elem ) {
|
||
- return false;
|
||
- }
|
||
- }
|
||
-
|
||
- return true;
|
||
-
|
||
- } else {
|
||
- Sizzle.error( name );
|
||
- }
|
||
- },
|
||
-
|
||
- CHILD: function( elem, match ) {
|
||
- var first, last,
|
||
- doneName, parent, cache,
|
||
- count, diff,
|
||
- type = match[1],
|
||
- node = elem;
|
||
-
|
||
- switch ( type ) {
|
||
- case "only":
|
||
- case "first":
|
||
- while ( (node = node.previousSibling) ) {
|
||
- if ( node.nodeType === 1 ) {
|
||
- return false;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( type === "first" ) {
|
||
- return true;
|
||
- }
|
||
-
|
||
- node = elem;
|
||
-
|
||
- case "last":
|
||
- while ( (node = node.nextSibling) ) {
|
||
- if ( node.nodeType === 1 ) {
|
||
- return false;
|
||
- }
|
||
- }
|
||
-
|
||
- return true;
|
||
-
|
||
- case "nth":
|
||
- first = match[2];
|
||
- last = match[3];
|
||
-
|
||
- if ( first === 1 && last === 0 ) {
|
||
- return true;
|
||
- }
|
||
-
|
||
- doneName = match[0];
|
||
- parent = elem.parentNode;
|
||
-
|
||
- if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
|
||
- count = 0;
|
||
-
|
||
- for ( node = parent.firstChild; node; node = node.nextSibling ) {
|
||
- if ( node.nodeType === 1 ) {
|
||
- node.nodeIndex = ++count;
|
||
- }
|
||
- }
|
||
-
|
||
- parent[ expando ] = doneName;
|
||
- }
|
||
-
|
||
- diff = elem.nodeIndex - last;
|
||
-
|
||
- if ( first === 0 ) {
|
||
- return diff === 0;
|
||
-
|
||
- } else {
|
||
- return ( diff % first === 0 && diff / first >= 0 );
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- ID: function( elem, match ) {
|
||
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
|
||
- },
|
||
-
|
||
- TAG: function( elem, match ) {
|
||
- return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
|
||
- },
|
||
-
|
||
- CLASS: function( elem, match ) {
|
||
- return (" " + (elem.className || elem.getAttribute("class")) + " ")
|
||
- .indexOf( match ) > -1;
|
||
- },
|
||
-
|
||
- ATTR: function( elem, match ) {
|
||
- var name = match[1],
|
||
- result = Sizzle.attr ?
|
||
- Sizzle.attr( elem, name ) :
|
||
- Expr.attrHandle[ name ] ?
|
||
- Expr.attrHandle[ name ]( elem ) :
|
||
- elem[ name ] != null ?
|
||
- elem[ name ] :
|
||
- elem.getAttribute( name ),
|
||
- value = result + "",
|
||
- type = match[2],
|
||
- check = match[4];
|
||
-
|
||
- return result == null ?
|
||
- type === "!=" :
|
||
- !type && Sizzle.attr ?
|
||
- result != null :
|
||
- type === "=" ?
|
||
- value === check :
|
||
- type === "*=" ?
|
||
- value.indexOf(check) >= 0 :
|
||
- type === "~=" ?
|
||
- (" " + value + " ").indexOf(check) >= 0 :
|
||
- !check ?
|
||
- value && result !== false :
|
||
- type === "!=" ?
|
||
- value !== check :
|
||
- type === "^=" ?
|
||
- value.indexOf(check) === 0 :
|
||
- type === "$=" ?
|
||
- value.substr(value.length - check.length) === check :
|
||
- type === "|=" ?
|
||
- value === check || value.substr(0, check.length + 1) === check + "-" :
|
||
- false;
|
||
- },
|
||
-
|
||
- POS: function( elem, match, i, array ) {
|
||
- var name = match[2],
|
||
- filter = Expr.setFilters[ name ];
|
||
-
|
||
- if ( filter ) {
|
||
- return filter( elem, i, match, array );
|
||
- }
|
||
- }
|
||
- }
|
||
-};
|
||
-
|
||
-var origPOS = Expr.match.POS,
|
||
- fescape = function(all, num){
|
||
- return "\\" + (num - 0 + 1);
|
||
- };
|
||
-
|
||
-for ( var type in Expr.match ) {
|
||
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
|
||
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
|
||
-}
|
||
-
|
||
-var makeArray = function( array, results ) {
|
||
- array = Array.prototype.slice.call( array, 0 );
|
||
-
|
||
- if ( results ) {
|
||
- results.push.apply( results, array );
|
||
- return results;
|
||
- }
|
||
-
|
||
- return array;
|
||
-};
|
||
-
|
||
-// Perform a simple check to determine if the browser is capable of
|
||
-// converting a NodeList to an array using builtin methods.
|
||
-// Also verifies that the returned array holds DOM nodes
|
||
-// (which is not the case in the Blackberry browser)
|
||
-try {
|
||
- Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
|
||
-
|
||
-// Provide a fallback method if it does not work
|
||
-} catch( e ) {
|
||
- makeArray = function( array, results ) {
|
||
- var i = 0,
|
||
- ret = results || [];
|
||
-
|
||
- if ( toString.call(array) === "[object Array]" ) {
|
||
- Array.prototype.push.apply( ret, array );
|
||
-
|
||
- } else {
|
||
- if ( typeof array.length === "number" ) {
|
||
- for ( var l = array.length; i < l; i++ ) {
|
||
- ret.push( array[i] );
|
||
- }
|
||
-
|
||
- } else {
|
||
- for ( ; array[i]; i++ ) {
|
||
- ret.push( array[i] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- };
|
||
-}
|
||
-
|
||
-var sortOrder, siblingCheck;
|
||
-
|
||
-if ( document.documentElement.compareDocumentPosition ) {
|
||
- sortOrder = function( a, b ) {
|
||
- if ( a === b ) {
|
||
- hasDuplicate = true;
|
||
- return 0;
|
||
- }
|
||
-
|
||
- if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
|
||
- return a.compareDocumentPosition ? -1 : 1;
|
||
- }
|
||
-
|
||
- return a.compareDocumentPosition(b) & 4 ? -1 : 1;
|
||
- };
|
||
-
|
||
-} else {
|
||
- sortOrder = function( a, b ) {
|
||
- // The nodes are identical, we can exit early
|
||
- if ( a === b ) {
|
||
- hasDuplicate = true;
|
||
- return 0;
|
||
-
|
||
- // Fallback to using sourceIndex (in IE) if it's available on both nodes
|
||
- } else if ( a.sourceIndex && b.sourceIndex ) {
|
||
- return a.sourceIndex - b.sourceIndex;
|
||
- }
|
||
-
|
||
- var al, bl,
|
||
- ap = [],
|
||
- bp = [],
|
||
- aup = a.parentNode,
|
||
- bup = b.parentNode,
|
||
- cur = aup;
|
||
-
|
||
- // If the nodes are siblings (or identical) we can do a quick check
|
||
- if ( aup === bup ) {
|
||
- return siblingCheck( a, b );
|
||
-
|
||
- // If no parents were found then the nodes are disconnected
|
||
- } else if ( !aup ) {
|
||
- return -1;
|
||
-
|
||
- } else if ( !bup ) {
|
||
- return 1;
|
||
- }
|
||
-
|
||
- // Otherwise they're somewhere else in the tree so we need
|
||
- // to build up a full list of the parentNodes for comparison
|
||
- while ( cur ) {
|
||
- ap.unshift( cur );
|
||
- cur = cur.parentNode;
|
||
- }
|
||
-
|
||
- cur = bup;
|
||
-
|
||
- while ( cur ) {
|
||
- bp.unshift( cur );
|
||
- cur = cur.parentNode;
|
||
- }
|
||
-
|
||
- al = ap.length;
|
||
- bl = bp.length;
|
||
-
|
||
- // Start walking down the tree looking for a discrepancy
|
||
- for ( var i = 0; i < al && i < bl; i++ ) {
|
||
- if ( ap[i] !== bp[i] ) {
|
||
- return siblingCheck( ap[i], bp[i] );
|
||
- }
|
||
- }
|
||
-
|
||
- // We ended someplace up the tree so do a sibling check
|
||
- return i === al ?
|
||
- siblingCheck( a, bp[i], -1 ) :
|
||
- siblingCheck( ap[i], b, 1 );
|
||
- };
|
||
-
|
||
- siblingCheck = function( a, b, ret ) {
|
||
- if ( a === b ) {
|
||
- return ret;
|
||
- }
|
||
-
|
||
- var cur = a.nextSibling;
|
||
-
|
||
- while ( cur ) {
|
||
- if ( cur === b ) {
|
||
- return -1;
|
||
- }
|
||
-
|
||
- cur = cur.nextSibling;
|
||
- }
|
||
-
|
||
- return 1;
|
||
- };
|
||
-}
|
||
-
|
||
-// Check to see if the browser returns elements by name when
|
||
-// querying by getElementById (and provide a workaround)
|
||
-(function(){
|
||
- // We're going to inject a fake input element with a specified name
|
||
- var form = document.createElement("div"),
|
||
- id = "script" + (new Date()).getTime(),
|
||
- root = document.documentElement;
|
||
-
|
||
- form.innerHTML = "<a name='" + id + "'/>";
|
||
-
|
||
- // Inject it into the root element, check its status, and remove it quickly
|
||
- root.insertBefore( form, root.firstChild );
|
||
-
|
||
- // The workaround has to do additional checks after a getElementById
|
||
- // Which slows things down for other browsers (hence the branching)
|
||
- if ( document.getElementById( id ) ) {
|
||
- Expr.find.ID = function( match, context, isXML ) {
|
||
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
|
||
- var m = context.getElementById(match[1]);
|
||
-
|
||
- return m ?
|
||
- m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
|
||
- [m] :
|
||
- undefined :
|
||
- [];
|
||
- }
|
||
- };
|
||
-
|
||
- Expr.filter.ID = function( elem, match ) {
|
||
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
|
||
-
|
||
- return elem.nodeType === 1 && node && node.nodeValue === match;
|
||
- };
|
||
- }
|
||
-
|
||
- root.removeChild( form );
|
||
-
|
||
- // release memory in IE
|
||
- root = form = null;
|
||
-})();
|
||
-
|
||
-(function(){
|
||
- // Check to see if the browser returns only elements
|
||
- // when doing getElementsByTagName("*")
|
||
-
|
||
- // Create a fake element
|
||
- var div = document.createElement("div");
|
||
- div.appendChild( document.createComment("") );
|
||
-
|
||
- // Make sure no comments are found
|
||
- if ( div.getElementsByTagName("*").length > 0 ) {
|
||
- Expr.find.TAG = function( match, context ) {
|
||
- var results = context.getElementsByTagName( match[1] );
|
||
-
|
||
- // Filter out possible comments
|
||
- if ( match[1] === "*" ) {
|
||
- var tmp = [];
|
||
-
|
||
- for ( var i = 0; results[i]; i++ ) {
|
||
- if ( results[i].nodeType === 1 ) {
|
||
- tmp.push( results[i] );
|
||
- }
|
||
- }
|
||
-
|
||
- results = tmp;
|
||
- }
|
||
-
|
||
- return results;
|
||
- };
|
||
- }
|
||
-
|
||
- // Check to see if an attribute returns normalized href attributes
|
||
- div.innerHTML = "<a href='#'></a>";
|
||
-
|
||
- if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
|
||
- div.firstChild.getAttribute("href") !== "#" ) {
|
||
-
|
||
- Expr.attrHandle.href = function( elem ) {
|
||
- return elem.getAttribute( "href", 2 );
|
||
- };
|
||
- }
|
||
-
|
||
- // release memory in IE
|
||
- div = null;
|
||
-})();
|
||
-
|
||
-if ( document.querySelectorAll ) {
|
||
- (function(){
|
||
- var oldSizzle = Sizzle,
|
||
- div = document.createElement("div"),
|
||
- id = "__sizzle__";
|
||
-
|
||
- div.innerHTML = "<p class='TEST'></p>";
|
||
-
|
||
- // Safari can't handle uppercase or unicode characters when
|
||
- // in quirks mode.
|
||
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- Sizzle = function( query, context, extra, seed ) {
|
||
- context = context || document;
|
||
-
|
||
- // Only use querySelectorAll on non-XML documents
|
||
- // (ID selectors don't work in non-HTML documents)
|
||
- if ( !seed && !Sizzle.isXML(context) ) {
|
||
- // See if we find a selector to speed up
|
||
- var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
|
||
-
|
||
- if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
|
||
- // Speed-up: Sizzle("TAG")
|
||
- if ( match[1] ) {
|
||
- return makeArray( context.getElementsByTagName( query ), extra );
|
||
-
|
||
- // Speed-up: Sizzle(".CLASS")
|
||
- } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
|
||
- return makeArray( context.getElementsByClassName( match[2] ), extra );
|
||
- }
|
||
- }
|
||
-
|
||
- if ( context.nodeType === 9 ) {
|
||
- // Speed-up: Sizzle("body")
|
||
- // The body element only exists once, optimize finding it
|
||
- if ( query === "body" && context.body ) {
|
||
- return makeArray( [ context.body ], extra );
|
||
-
|
||
- // Speed-up: Sizzle("#ID")
|
||
- } else if ( match && match[3] ) {
|
||
- var elem = context.getElementById( match[3] );
|
||
-
|
||
- // Check parentNode to catch when Blackberry 4.6 returns
|
||
- // nodes that are no longer in the document #6963
|
||
- if ( elem && elem.parentNode ) {
|
||
- // Handle the case where IE and Opera return items
|
||
- // by name instead of ID
|
||
- if ( elem.id === match[3] ) {
|
||
- return makeArray( [ elem ], extra );
|
||
- }
|
||
-
|
||
- } else {
|
||
- return makeArray( [], extra );
|
||
- }
|
||
- }
|
||
-
|
||
- try {
|
||
- return makeArray( context.querySelectorAll(query), extra );
|
||
- } catch(qsaError) {}
|
||
-
|
||
- // qSA works strangely on Element-rooted queries
|
||
- // We can work around this by specifying an extra ID on the root
|
||
- // and working up from there (Thanks to Andrew Dupont for the technique)
|
||
- // IE 8 doesn't work on object elements
|
||
- } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
|
||
- var oldContext = context,
|
||
- old = context.getAttribute( "id" ),
|
||
- nid = old || id,
|
||
- hasParent = context.parentNode,
|
||
- relativeHierarchySelector = /^\s*[+~]/.test( query );
|
||
-
|
||
- if ( !old ) {
|
||
- context.setAttribute( "id", nid );
|
||
- } else {
|
||
- nid = nid.replace( /'/g, "\\$&" );
|
||
- }
|
||
- if ( relativeHierarchySelector && hasParent ) {
|
||
- context = context.parentNode;
|
||
- }
|
||
-
|
||
- try {
|
||
- if ( !relativeHierarchySelector || hasParent ) {
|
||
- return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
|
||
- }
|
||
-
|
||
- } catch(pseudoError) {
|
||
- } finally {
|
||
- if ( !old ) {
|
||
- oldContext.removeAttribute( "id" );
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return oldSizzle(query, context, extra, seed);
|
||
- };
|
||
-
|
||
- for ( var prop in oldSizzle ) {
|
||
- Sizzle[ prop ] = oldSizzle[ prop ];
|
||
- }
|
||
-
|
||
- // release memory in IE
|
||
- div = null;
|
||
- })();
|
||
-}
|
||
-
|
||
-(function(){
|
||
- var html = document.documentElement,
|
||
- matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
|
||
-
|
||
- if ( matches ) {
|
||
- // Check to see if it's possible to do matchesSelector
|
||
- // on a disconnected node (IE 9 fails this)
|
||
- var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
|
||
- pseudoWorks = false;
|
||
-
|
||
- try {
|
||
- // This should fail with an exception
|
||
- // Gecko does not error, returns false instead
|
||
- matches.call( document.documentElement, "[test!='']:sizzle" );
|
||
-
|
||
- } catch( pseudoError ) {
|
||
- pseudoWorks = true;
|
||
- }
|
||
-
|
||
- Sizzle.matchesSelector = function( node, expr ) {
|
||
- // Make sure that attribute selectors are quoted
|
||
- expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
|
||
-
|
||
- if ( !Sizzle.isXML( node ) ) {
|
||
- try {
|
||
- if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
|
||
- var ret = matches.call( node, expr );
|
||
-
|
||
- // IE 9's matchesSelector returns false on disconnected nodes
|
||
- if ( ret || !disconnectedMatch ||
|
||
- // As well, disconnected nodes are said to be in a document
|
||
- // fragment in IE 9, so check for that
|
||
- node.document && node.document.nodeType !== 11 ) {
|
||
- return ret;
|
||
- }
|
||
- }
|
||
- } catch(e) {}
|
||
- }
|
||
-
|
||
- return Sizzle(expr, null, null, [node]).length > 0;
|
||
- };
|
||
- }
|
||
-})();
|
||
-
|
||
-(function(){
|
||
- var div = document.createElement("div");
|
||
-
|
||
- div.innerHTML = "<div class='test e'></div><div class='test'></div>";
|
||
-
|
||
- // Opera can't find a second classname (in 9.6)
|
||
- // Also, make sure that getElementsByClassName actually exists
|
||
- if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Safari caches class attributes, doesn't catch changes (in 3.2)
|
||
- div.lastChild.className = "e";
|
||
-
|
||
- if ( div.getElementsByClassName("e").length === 1 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- Expr.order.splice(1, 0, "CLASS");
|
||
- Expr.find.CLASS = function( match, context, isXML ) {
|
||
- if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
|
||
- return context.getElementsByClassName(match[1]);
|
||
- }
|
||
- };
|
||
-
|
||
- // release memory in IE
|
||
- div = null;
|
||
-})();
|
||
-
|
||
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
||
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
||
- var elem = checkSet[i];
|
||
-
|
||
- if ( elem ) {
|
||
- var match = false;
|
||
-
|
||
- elem = elem[dir];
|
||
-
|
||
- while ( elem ) {
|
||
- if ( elem[ expando ] === doneName ) {
|
||
- match = checkSet[elem.sizset];
|
||
- break;
|
||
- }
|
||
-
|
||
- if ( elem.nodeType === 1 && !isXML ){
|
||
- elem[ expando ] = doneName;
|
||
- elem.sizset = i;
|
||
- }
|
||
-
|
||
- if ( elem.nodeName.toLowerCase() === cur ) {
|
||
- match = elem;
|
||
- break;
|
||
- }
|
||
-
|
||
- elem = elem[dir];
|
||
- }
|
||
-
|
||
- checkSet[i] = match;
|
||
- }
|
||
- }
|
||
-}
|
||
-
|
||
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
|
||
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
|
||
- var elem = checkSet[i];
|
||
-
|
||
- if ( elem ) {
|
||
- var match = false;
|
||
-
|
||
- elem = elem[dir];
|
||
-
|
||
- while ( elem ) {
|
||
- if ( elem[ expando ] === doneName ) {
|
||
- match = checkSet[elem.sizset];
|
||
- break;
|
||
- }
|
||
-
|
||
- if ( elem.nodeType === 1 ) {
|
||
- if ( !isXML ) {
|
||
- elem[ expando ] = doneName;
|
||
- elem.sizset = i;
|
||
- }
|
||
-
|
||
- if ( typeof cur !== "string" ) {
|
||
- if ( elem === cur ) {
|
||
- match = true;
|
||
- break;
|
||
- }
|
||
-
|
||
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
|
||
- match = elem;
|
||
- break;
|
||
- }
|
||
- }
|
||
-
|
||
- elem = elem[dir];
|
||
- }
|
||
-
|
||
- checkSet[i] = match;
|
||
- }
|
||
- }
|
||
-}
|
||
-
|
||
-if ( document.documentElement.contains ) {
|
||
- Sizzle.contains = function( a, b ) {
|
||
- return a !== b && (a.contains ? a.contains(b) : true);
|
||
- };
|
||
-
|
||
-} else if ( document.documentElement.compareDocumentPosition ) {
|
||
- Sizzle.contains = function( a, b ) {
|
||
- return !!(a.compareDocumentPosition(b) & 16);
|
||
- };
|
||
-
|
||
-} else {
|
||
- Sizzle.contains = function() {
|
||
- return false;
|
||
- };
|
||
-}
|
||
-
|
||
-Sizzle.isXML = function( elem ) {
|
||
- // documentElement is verified for cases where it doesn't yet exist
|
||
- // (such as loading iframes in IE - #4833)
|
||
- var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
|
||
-
|
||
- return documentElement ? documentElement.nodeName !== "HTML" : false;
|
||
-};
|
||
-
|
||
-var posProcess = function( selector, context, seed ) {
|
||
- var match,
|
||
- tmpSet = [],
|
||
- later = "",
|
||
- root = context.nodeType ? [context] : context;
|
||
-
|
||
- // Position selectors must be done after the filter
|
||
- // And so must :not(positional) so we move all PSEUDOs to the end
|
||
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
|
||
- later += match[0];
|
||
- selector = selector.replace( Expr.match.PSEUDO, "" );
|
||
- }
|
||
-
|
||
- selector = Expr.relative[selector] ? selector + "*" : selector;
|
||
-
|
||
- for ( var i = 0, l = root.length; i < l; i++ ) {
|
||
- Sizzle( selector, root[i], tmpSet, seed );
|
||
- }
|
||
-
|
||
- return Sizzle.filter( later, tmpSet );
|
||
-};
|
||
-
|
||
-// EXPOSE
|
||
-// Override sizzle attribute retrieval
|
||
-Sizzle.attr = jQuery.attr;
|
||
-Sizzle.selectors.attrMap = {};
|
||
-jQuery.find = Sizzle;
|
||
-jQuery.expr = Sizzle.selectors;
|
||
-jQuery.expr[":"] = jQuery.expr.filters;
|
||
-jQuery.unique = Sizzle.uniqueSort;
|
||
-jQuery.text = Sizzle.getText;
|
||
-jQuery.isXMLDoc = Sizzle.isXML;
|
||
-jQuery.contains = Sizzle.contains;
|
||
-
|
||
-
|
||
-})();
|
||
-
|
||
-
|
||
-var runtil = /Until$/,
|
||
- rparentsprev = /^(?:parents|prevUntil|prevAll)/,
|
||
- // Note: This RegExp should be improved, or likely pulled from Sizzle
|
||
- rmultiselector = /,/,
|
||
- isSimple = /^.[^:#\[\.,]*$/,
|
||
- slice = Array.prototype.slice,
|
||
- POS = jQuery.expr.match.POS,
|
||
- // methods guaranteed to produce a unique set when starting from a unique set
|
||
- guaranteedUnique = {
|
||
- children: true,
|
||
- contents: true,
|
||
- next: true,
|
||
- prev: true
|
||
- };
|
||
-
|
||
-jQuery.fn.extend({
|
||
- find: function( selector ) {
|
||
- var self = this,
|
||
- i, l;
|
||
-
|
||
- if ( typeof selector !== "string" ) {
|
||
- return jQuery( selector ).filter(function() {
|
||
- for ( i = 0, l = self.length; i < l; i++ ) {
|
||
- if ( jQuery.contains( self[ i ], this ) ) {
|
||
- return true;
|
||
- }
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- var ret = this.pushStack( "", "find", selector ),
|
||
- length, n, r;
|
||
-
|
||
- for ( i = 0, l = this.length; i < l; i++ ) {
|
||
- length = ret.length;
|
||
- jQuery.find( selector, this[i], ret );
|
||
-
|
||
- if ( i > 0 ) {
|
||
- // Make sure that the results are unique
|
||
- for ( n = length; n < ret.length; n++ ) {
|
||
- for ( r = 0; r < length; r++ ) {
|
||
- if ( ret[r] === ret[n] ) {
|
||
- ret.splice(n--, 1);
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- },
|
||
-
|
||
- has: function( target ) {
|
||
- var targets = jQuery( target );
|
||
- return this.filter(function() {
|
||
- for ( var i = 0, l = targets.length; i < l; i++ ) {
|
||
- if ( jQuery.contains( this, targets[i] ) ) {
|
||
- return true;
|
||
- }
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- not: function( selector ) {
|
||
- return this.pushStack( winnow(this, selector, false), "not", selector);
|
||
- },
|
||
-
|
||
- filter: function( selector ) {
|
||
- return this.pushStack( winnow(this, selector, true), "filter", selector );
|
||
- },
|
||
-
|
||
- is: function( selector ) {
|
||
- return !!selector && (
|
||
- typeof selector === "string" ?
|
||
- // If this is a positional selector, check membership in the returned set
|
||
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
|
||
- POS.test( selector ) ?
|
||
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
|
||
- jQuery.filter( selector, this ).length > 0 :
|
||
- this.filter( selector ).length > 0 );
|
||
- },
|
||
-
|
||
- closest: function( selectors, context ) {
|
||
- var ret = [], i, l, cur = this[0];
|
||
-
|
||
- // Array (deprecated as of jQuery 1.7)
|
||
- if ( jQuery.isArray( selectors ) ) {
|
||
- var level = 1;
|
||
-
|
||
- while ( cur && cur.ownerDocument && cur !== context ) {
|
||
- for ( i = 0; i < selectors.length; i++ ) {
|
||
-
|
||
- if ( jQuery( cur ).is( selectors[ i ] ) ) {
|
||
- ret.push({ selector: selectors[ i ], elem: cur, level: level });
|
||
- }
|
||
- }
|
||
-
|
||
- cur = cur.parentNode;
|
||
- level++;
|
||
- }
|
||
-
|
||
- return ret;
|
||
- }
|
||
-
|
||
- // String
|
||
- var pos = POS.test( selectors ) || typeof selectors !== "string" ?
|
||
- jQuery( selectors, context || this.context ) :
|
||
- 0;
|
||
-
|
||
- for ( i = 0, l = this.length; i < l; i++ ) {
|
||
- cur = this[i];
|
||
-
|
||
- while ( cur ) {
|
||
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
|
||
- ret.push( cur );
|
||
- break;
|
||
-
|
||
- } else {
|
||
- cur = cur.parentNode;
|
||
- if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
|
||
-
|
||
- return this.pushStack( ret, "closest", selectors );
|
||
- },
|
||
-
|
||
- // Determine the position of an element within
|
||
- // the matched set of elements
|
||
- index: function( elem ) {
|
||
-
|
||
- // No argument, return index in parent
|
||
- if ( !elem ) {
|
||
- return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
|
||
- }
|
||
-
|
||
- // index in selector
|
||
- if ( typeof elem === "string" ) {
|
||
- return jQuery.inArray( this[0], jQuery( elem ) );
|
||
- }
|
||
-
|
||
- // Locate the position of the desired element
|
||
- return jQuery.inArray(
|
||
- // If it receives a jQuery object, the first element is used
|
||
- elem.jquery ? elem[0] : elem, this );
|
||
- },
|
||
-
|
||
- add: function( selector, context ) {
|
||
- var set = typeof selector === "string" ?
|
||
- jQuery( selector, context ) :
|
||
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
|
||
- all = jQuery.merge( this.get(), set );
|
||
-
|
||
- return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
|
||
- all :
|
||
- jQuery.unique( all ) );
|
||
- },
|
||
-
|
||
- andSelf: function() {
|
||
- return this.add( this.prevObject );
|
||
- }
|
||
-});
|
||
-
|
||
-// A painfully simple check to see if an element is disconnected
|
||
-// from a document (should be improved, where feasible).
|
||
-function isDisconnected( node ) {
|
||
- return !node || !node.parentNode || node.parentNode.nodeType === 11;
|
||
-}
|
||
-
|
||
-jQuery.each({
|
||
- parent: function( elem ) {
|
||
- var parent = elem.parentNode;
|
||
- return parent && parent.nodeType !== 11 ? parent : null;
|
||
- },
|
||
- parents: function( elem ) {
|
||
- return jQuery.dir( elem, "parentNode" );
|
||
- },
|
||
- parentsUntil: function( elem, i, until ) {
|
||
- return jQuery.dir( elem, "parentNode", until );
|
||
- },
|
||
- next: function( elem ) {
|
||
- return jQuery.nth( elem, 2, "nextSibling" );
|
||
- },
|
||
- prev: function( elem ) {
|
||
- return jQuery.nth( elem, 2, "previousSibling" );
|
||
- },
|
||
- nextAll: function( elem ) {
|
||
- return jQuery.dir( elem, "nextSibling" );
|
||
- },
|
||
- prevAll: function( elem ) {
|
||
- return jQuery.dir( elem, "previousSibling" );
|
||
- },
|
||
- nextUntil: function( elem, i, until ) {
|
||
- return jQuery.dir( elem, "nextSibling", until );
|
||
- },
|
||
- prevUntil: function( elem, i, until ) {
|
||
- return jQuery.dir( elem, "previousSibling", until );
|
||
- },
|
||
- siblings: function( elem ) {
|
||
- return jQuery.sibling( elem.parentNode.firstChild, elem );
|
||
- },
|
||
- children: function( elem ) {
|
||
- return jQuery.sibling( elem.firstChild );
|
||
- },
|
||
- contents: function( elem ) {
|
||
- return jQuery.nodeName( elem, "iframe" ) ?
|
||
- elem.contentDocument || elem.contentWindow.document :
|
||
- jQuery.makeArray( elem.childNodes );
|
||
- }
|
||
-}, function( name, fn ) {
|
||
- jQuery.fn[ name ] = function( until, selector ) {
|
||
- var ret = jQuery.map( this, fn, until );
|
||
-
|
||
- if ( !runtil.test( name ) ) {
|
||
- selector = until;
|
||
- }
|
||
-
|
||
- if ( selector && typeof selector === "string" ) {
|
||
- ret = jQuery.filter( selector, ret );
|
||
- }
|
||
-
|
||
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
|
||
-
|
||
- if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
|
||
- ret = ret.reverse();
|
||
- }
|
||
-
|
||
- return this.pushStack( ret, name, slice.call( arguments ).join(",") );
|
||
- };
|
||
-});
|
||
-
|
||
-jQuery.extend({
|
||
- filter: function( expr, elems, not ) {
|
||
- if ( not ) {
|
||
- expr = ":not(" + expr + ")";
|
||
- }
|
||
-
|
||
- return elems.length === 1 ?
|
||
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
|
||
- jQuery.find.matches(expr, elems);
|
||
- },
|
||
-
|
||
- dir: function( elem, dir, until ) {
|
||
- var matched = [],
|
||
- cur = elem[ dir ];
|
||
-
|
||
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
|
||
- if ( cur.nodeType === 1 ) {
|
||
- matched.push( cur );
|
||
- }
|
||
- cur = cur[dir];
|
||
- }
|
||
- return matched;
|
||
- },
|
||
-
|
||
- nth: function( cur, result, dir, elem ) {
|
||
- result = result || 1;
|
||
- var num = 0;
|
||
-
|
||
- for ( ; cur; cur = cur[dir] ) {
|
||
- if ( cur.nodeType === 1 && ++num === result ) {
|
||
- break;
|
||
- }
|
||
- }
|
||
-
|
||
- return cur;
|
||
- },
|
||
-
|
||
- sibling: function( n, elem ) {
|
||
- var r = [];
|
||
-
|
||
- for ( ; n; n = n.nextSibling ) {
|
||
- if ( n.nodeType === 1 && n !== elem ) {
|
||
- r.push( n );
|
||
- }
|
||
- }
|
||
-
|
||
- return r;
|
||
- }
|
||
-});
|
||
-
|
||
-// Implement the identical functionality for filter and not
|
||
-function winnow( elements, qualifier, keep ) {
|
||
-
|
||
- // Can't pass null or undefined to indexOf in Firefox 4
|
||
- // Set to 0 to skip string check
|
||
- qualifier = qualifier || 0;
|
||
-
|
||
- if ( jQuery.isFunction( qualifier ) ) {
|
||
- return jQuery.grep(elements, function( elem, i ) {
|
||
- var retVal = !!qualifier.call( elem, i, elem );
|
||
- return retVal === keep;
|
||
- });
|
||
-
|
||
- } else if ( qualifier.nodeType ) {
|
||
- return jQuery.grep(elements, function( elem, i ) {
|
||
- return ( elem === qualifier ) === keep;
|
||
- });
|
||
-
|
||
- } else if ( typeof qualifier === "string" ) {
|
||
- var filtered = jQuery.grep(elements, function( elem ) {
|
||
- return elem.nodeType === 1;
|
||
- });
|
||
-
|
||
- if ( isSimple.test( qualifier ) ) {
|
||
- return jQuery.filter(qualifier, filtered, !keep);
|
||
- } else {
|
||
- qualifier = jQuery.filter( qualifier, filtered );
|
||
- }
|
||
- }
|
||
-
|
||
- return jQuery.grep(elements, function( elem, i ) {
|
||
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
|
||
- });
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-function createSafeFragment( document ) {
|
||
- var list = nodeNames.split( "|" ),
|
||
- safeFrag = document.createDocumentFragment();
|
||
-
|
||
- if ( safeFrag.createElement ) {
|
||
- while ( list.length ) {
|
||
- safeFrag.createElement(
|
||
- list.pop()
|
||
- );
|
||
- }
|
||
- }
|
||
- return safeFrag;
|
||
-}
|
||
-
|
||
-var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
|
||
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
|
||
- rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
|
||
- rleadingWhitespace = /^\s+/,
|
||
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
|
||
- rtagName = /<([\w:]+)/,
|
||
- rtbody = /<tbody/i,
|
||
- rhtml = /<|&#?\w+;/,
|
||
- rnoInnerhtml = /<(?:script|style)/i,
|
||
- rnocache = /<(?:script|object|embed|option|style)/i,
|
||
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
|
||
- // checked="checked" or checked
|
||
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
||
- rscriptType = /\/(java|ecma)script/i,
|
||
- rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
|
||
- wrapMap = {
|
||
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
|
||
- legend: [ 1, "<fieldset>", "</fieldset>" ],
|
||
- thead: [ 1, "<table>", "</table>" ],
|
||
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
|
||
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
|
||
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
|
||
- area: [ 1, "<map>", "</map>" ],
|
||
- _default: [ 0, "", "" ]
|
||
- },
|
||
- safeFragment = createSafeFragment( document );
|
||
-
|
||
-wrapMap.optgroup = wrapMap.option;
|
||
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
||
-wrapMap.th = wrapMap.td;
|
||
-
|
||
-// IE can't serialize <link> and <script> tags normally
|
||
-if ( !jQuery.support.htmlSerialize ) {
|
||
- wrapMap._default = [ 1, "div<div>", "</div>" ];
|
||
-}
|
||
-
|
||
-jQuery.fn.extend({
|
||
- text: function( text ) {
|
||
- if ( jQuery.isFunction(text) ) {
|
||
- return this.each(function(i) {
|
||
- var self = jQuery( this );
|
||
-
|
||
- self.text( text.call(this, i, self.text()) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( typeof text !== "object" && text !== undefined ) {
|
||
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
|
||
- }
|
||
-
|
||
- return jQuery.text( this );
|
||
- },
|
||
-
|
||
- wrapAll: function( html ) {
|
||
- if ( jQuery.isFunction( html ) ) {
|
||
- return this.each(function(i) {
|
||
- jQuery(this).wrapAll( html.call(this, i) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( this[0] ) {
|
||
- // The elements to wrap the target around
|
||
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
|
||
-
|
||
- if ( this[0].parentNode ) {
|
||
- wrap.insertBefore( this[0] );
|
||
- }
|
||
-
|
||
- wrap.map(function() {
|
||
- var elem = this;
|
||
-
|
||
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
|
||
- elem = elem.firstChild;
|
||
- }
|
||
-
|
||
- return elem;
|
||
- }).append( this );
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- wrapInner: function( html ) {
|
||
- if ( jQuery.isFunction( html ) ) {
|
||
- return this.each(function(i) {
|
||
- jQuery(this).wrapInner( html.call(this, i) );
|
||
- });
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- var self = jQuery( this ),
|
||
- contents = self.contents();
|
||
-
|
||
- if ( contents.length ) {
|
||
- contents.wrapAll( html );
|
||
-
|
||
- } else {
|
||
- self.append( html );
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- wrap: function( html ) {
|
||
- var isFunction = jQuery.isFunction( html );
|
||
-
|
||
- return this.each(function(i) {
|
||
- jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
|
||
- });
|
||
- },
|
||
-
|
||
- unwrap: function() {
|
||
- return this.parent().each(function() {
|
||
- if ( !jQuery.nodeName( this, "body" ) ) {
|
||
- jQuery( this ).replaceWith( this.childNodes );
|
||
- }
|
||
- }).end();
|
||
- },
|
||
-
|
||
- append: function() {
|
||
- return this.domManip(arguments, true, function( elem ) {
|
||
- if ( this.nodeType === 1 ) {
|
||
- this.appendChild( elem );
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- prepend: function() {
|
||
- return this.domManip(arguments, true, function( elem ) {
|
||
- if ( this.nodeType === 1 ) {
|
||
- this.insertBefore( elem, this.firstChild );
|
||
- }
|
||
- });
|
||
- },
|
||
-
|
||
- before: function() {
|
||
- if ( this[0] && this[0].parentNode ) {
|
||
- return this.domManip(arguments, false, function( elem ) {
|
||
- this.parentNode.insertBefore( elem, this );
|
||
- });
|
||
- } else if ( arguments.length ) {
|
||
- var set = jQuery.clean( arguments );
|
||
- set.push.apply( set, this.toArray() );
|
||
- return this.pushStack( set, "before", arguments );
|
||
- }
|
||
- },
|
||
-
|
||
- after: function() {
|
||
- if ( this[0] && this[0].parentNode ) {
|
||
- return this.domManip(arguments, false, function( elem ) {
|
||
- this.parentNode.insertBefore( elem, this.nextSibling );
|
||
- });
|
||
- } else if ( arguments.length ) {
|
||
- var set = this.pushStack( this, "after", arguments );
|
||
- set.push.apply( set, jQuery.clean(arguments) );
|
||
- return set;
|
||
- }
|
||
- },
|
||
-
|
||
- // keepData is for internal use only--do not document
|
||
- remove: function( selector, keepData ) {
|
||
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
|
||
- if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
|
||
- if ( !keepData && elem.nodeType === 1 ) {
|
||
- jQuery.cleanData( elem.getElementsByTagName("*") );
|
||
- jQuery.cleanData( [ elem ] );
|
||
- }
|
||
-
|
||
- if ( elem.parentNode ) {
|
||
- elem.parentNode.removeChild( elem );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- empty: function() {
|
||
- for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
|
||
- // Remove element nodes and prevent memory leaks
|
||
- if ( elem.nodeType === 1 ) {
|
||
- jQuery.cleanData( elem.getElementsByTagName("*") );
|
||
- }
|
||
-
|
||
- // Remove any remaining nodes
|
||
- while ( elem.firstChild ) {
|
||
- elem.removeChild( elem.firstChild );
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- clone: function( dataAndEvents, deepDataAndEvents ) {
|
||
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
||
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
||
-
|
||
- return this.map( function () {
|
||
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
|
||
- });
|
||
- },
|
||
-
|
||
- html: function( value ) {
|
||
- if ( value === undefined ) {
|
||
- return this[0] && this[0].nodeType === 1 ?
|
||
- this[0].innerHTML.replace(rinlinejQuery, "") :
|
||
- null;
|
||
-
|
||
- // See if we can take a shortcut and just use innerHTML
|
||
- } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
|
||
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
|
||
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
|
||
-
|
||
- value = value.replace(rxhtmlTag, "<$1></$2>");
|
||
-
|
||
- try {
|
||
- for ( var i = 0, l = this.length; i < l; i++ ) {
|
||
- // Remove element nodes and prevent memory leaks
|
||
- if ( this[i].nodeType === 1 ) {
|
||
- jQuery.cleanData( this[i].getElementsByTagName("*") );
|
||
- this[i].innerHTML = value;
|
||
- }
|
||
- }
|
||
-
|
||
- // If using innerHTML throws an exception, use the fallback method
|
||
- } catch(e) {
|
||
- this.empty().append( value );
|
||
- }
|
||
-
|
||
- } else if ( jQuery.isFunction( value ) ) {
|
||
- this.each(function(i){
|
||
- var self = jQuery( this );
|
||
-
|
||
- self.html( value.call(this, i, self.html()) );
|
||
- });
|
||
-
|
||
- } else {
|
||
- this.empty().append( value );
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- replaceWith: function( value ) {
|
||
- if ( this[0] && this[0].parentNode ) {
|
||
- // Make sure that the elements are removed from the DOM before they are inserted
|
||
- // this can help fix replacing a parent with child elements
|
||
- if ( jQuery.isFunction( value ) ) {
|
||
- return this.each(function(i) {
|
||
- var self = jQuery(this), old = self.html();
|
||
- self.replaceWith( value.call( this, i, old ) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( typeof value !== "string" ) {
|
||
- value = jQuery( value ).detach();
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- var next = this.nextSibling,
|
||
- parent = this.parentNode;
|
||
-
|
||
- jQuery( this ).remove();
|
||
-
|
||
- if ( next ) {
|
||
- jQuery(next).before( value );
|
||
- } else {
|
||
- jQuery(parent).append( value );
|
||
- }
|
||
- });
|
||
- } else {
|
||
- return this.length ?
|
||
- this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
|
||
- this;
|
||
- }
|
||
- },
|
||
-
|
||
- detach: function( selector ) {
|
||
- return this.remove( selector, true );
|
||
- },
|
||
-
|
||
- domManip: function( args, table, callback ) {
|
||
- var results, first, fragment, parent,
|
||
- value = args[0],
|
||
- scripts = [];
|
||
-
|
||
- // We can't cloneNode fragments that contain checked, in WebKit
|
||
- if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
|
||
- return this.each(function() {
|
||
- jQuery(this).domManip( args, table, callback, true );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( jQuery.isFunction(value) ) {
|
||
- return this.each(function(i) {
|
||
- var self = jQuery(this);
|
||
- args[0] = value.call(this, i, table ? self.html() : undefined);
|
||
- self.domManip( args, table, callback );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( this[0] ) {
|
||
- parent = value && value.parentNode;
|
||
-
|
||
- // If we're in a fragment, just use that instead of building a new one
|
||
- if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
|
||
- results = { fragment: parent };
|
||
-
|
||
- } else {
|
||
- results = jQuery.buildFragment( args, this, scripts );
|
||
- }
|
||
-
|
||
- fragment = results.fragment;
|
||
-
|
||
- if ( fragment.childNodes.length === 1 ) {
|
||
- first = fragment = fragment.firstChild;
|
||
- } else {
|
||
- first = fragment.firstChild;
|
||
- }
|
||
-
|
||
- if ( first ) {
|
||
- table = table && jQuery.nodeName( first, "tr" );
|
||
-
|
||
- for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
|
||
- callback.call(
|
||
- table ?
|
||
- root(this[i], first) :
|
||
- this[i],
|
||
- // Make sure that we do not leak memory by inadvertently discarding
|
||
- // the original fragment (which might have attached data) instead of
|
||
- // using it; in addition, use the original fragment object for the last
|
||
- // item instead of first because it can end up being emptied incorrectly
|
||
- // in certain situations (Bug #8070).
|
||
- // Fragments from the fragment cache must always be cloned and never used
|
||
- // in place.
|
||
- results.cacheable || ( l > 1 && i < lastIndex ) ?
|
||
- jQuery.clone( fragment, true, true ) :
|
||
- fragment
|
||
- );
|
||
- }
|
||
- }
|
||
-
|
||
- if ( scripts.length ) {
|
||
- jQuery.each( scripts, evalScript );
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- }
|
||
-});
|
||
-
|
||
-function root( elem, cur ) {
|
||
- return jQuery.nodeName(elem, "table") ?
|
||
- (elem.getElementsByTagName("tbody")[0] ||
|
||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
|
||
- elem;
|
||
-}
|
||
-
|
||
-function cloneCopyEvent( src, dest ) {
|
||
-
|
||
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- var type, i, l,
|
||
- oldData = jQuery._data( src ),
|
||
- curData = jQuery._data( dest, oldData ),
|
||
- events = oldData.events;
|
||
-
|
||
- if ( events ) {
|
||
- delete curData.handle;
|
||
- curData.events = {};
|
||
-
|
||
- for ( type in events ) {
|
||
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
|
||
- jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // make the cloned public data object a copy from the original
|
||
- if ( curData.data ) {
|
||
- curData.data = jQuery.extend( {}, curData.data );
|
||
- }
|
||
-}
|
||
-
|
||
-function cloneFixAttributes( src, dest ) {
|
||
- var nodeName;
|
||
-
|
||
- // We do not need to do anything for non-Elements
|
||
- if ( dest.nodeType !== 1 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // clearAttributes removes the attributes, which we don't want,
|
||
- // but also removes the attachEvent events, which we *do* want
|
||
- if ( dest.clearAttributes ) {
|
||
- dest.clearAttributes();
|
||
- }
|
||
-
|
||
- // mergeAttributes, in contrast, only merges back on the
|
||
- // original attributes, not the events
|
||
- if ( dest.mergeAttributes ) {
|
||
- dest.mergeAttributes( src );
|
||
- }
|
||
-
|
||
- nodeName = dest.nodeName.toLowerCase();
|
||
-
|
||
- // IE6-8 fail to clone children inside object elements that use
|
||
- // the proprietary classid attribute value (rather than the type
|
||
- // attribute) to identify the type of content to display
|
||
- if ( nodeName === "object" ) {
|
||
- dest.outerHTML = src.outerHTML;
|
||
-
|
||
- } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
|
||
- // IE6-8 fails to persist the checked state of a cloned checkbox
|
||
- // or radio button. Worse, IE6-7 fail to give the cloned element
|
||
- // a checked appearance if the defaultChecked value isn't also set
|
||
- if ( src.checked ) {
|
||
- dest.defaultChecked = dest.checked = src.checked;
|
||
- }
|
||
-
|
||
- // IE6-7 get confused and end up setting the value of a cloned
|
||
- // checkbox/radio button to an empty string instead of "on"
|
||
- if ( dest.value !== src.value ) {
|
||
- dest.value = src.value;
|
||
- }
|
||
-
|
||
- // IE6-8 fails to return the selected option to the default selected
|
||
- // state when cloning options
|
||
- } else if ( nodeName === "option" ) {
|
||
- dest.selected = src.defaultSelected;
|
||
-
|
||
- // IE6-8 fails to set the defaultValue to the correct value when
|
||
- // cloning other types of input fields
|
||
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
|
||
- dest.defaultValue = src.defaultValue;
|
||
- }
|
||
-
|
||
- // Event data gets referenced instead of copied if the expando
|
||
- // gets copied too
|
||
- dest.removeAttribute( jQuery.expando );
|
||
-}
|
||
-
|
||
-jQuery.buildFragment = function( args, nodes, scripts ) {
|
||
- var fragment, cacheable, cacheresults, doc,
|
||
- first = args[ 0 ];
|
||
-
|
||
- // nodes may contain either an explicit document object,
|
||
- // a jQuery collection or context object.
|
||
- // If nodes[0] contains a valid object to assign to doc
|
||
- if ( nodes && nodes[0] ) {
|
||
- doc = nodes[0].ownerDocument || nodes[0];
|
||
- }
|
||
-
|
||
- // Ensure that an attr object doesn't incorrectly stand in as a document object
|
||
- // Chrome and Firefox seem to allow this to occur and will throw exception
|
||
- // Fixes #8950
|
||
- if ( !doc.createDocumentFragment ) {
|
||
- doc = document;
|
||
- }
|
||
-
|
||
- // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
|
||
- // Cloning options loses the selected state, so don't cache them
|
||
- // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
|
||
- // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
|
||
- // Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
|
||
- if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
|
||
- first.charAt(0) === "<" && !rnocache.test( first ) &&
|
||
- (jQuery.support.checkClone || !rchecked.test( first )) &&
|
||
- (jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
|
||
-
|
||
- cacheable = true;
|
||
-
|
||
- cacheresults = jQuery.fragments[ first ];
|
||
- if ( cacheresults && cacheresults !== 1 ) {
|
||
- fragment = cacheresults;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( !fragment ) {
|
||
- fragment = doc.createDocumentFragment();
|
||
- jQuery.clean( args, doc, fragment, scripts );
|
||
- }
|
||
-
|
||
- if ( cacheable ) {
|
||
- jQuery.fragments[ first ] = cacheresults ? fragment : 1;
|
||
- }
|
||
-
|
||
- return { fragment: fragment, cacheable: cacheable };
|
||
-};
|
||
-
|
||
-jQuery.fragments = {};
|
||
-
|
||
-jQuery.each({
|
||
- appendTo: "append",
|
||
- prependTo: "prepend",
|
||
- insertBefore: "before",
|
||
- insertAfter: "after",
|
||
- replaceAll: "replaceWith"
|
||
-}, function( name, original ) {
|
||
- jQuery.fn[ name ] = function( selector ) {
|
||
- var ret = [],
|
||
- insert = jQuery( selector ),
|
||
- parent = this.length === 1 && this[0].parentNode;
|
||
-
|
||
- if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
|
||
- insert[ original ]( this[0] );
|
||
- return this;
|
||
-
|
||
- } else {
|
||
- for ( var i = 0, l = insert.length; i < l; i++ ) {
|
||
- var elems = ( i > 0 ? this.clone(true) : this ).get();
|
||
- jQuery( insert[i] )[ original ]( elems );
|
||
- ret = ret.concat( elems );
|
||
- }
|
||
-
|
||
- return this.pushStack( ret, name, insert.selector );
|
||
- }
|
||
- };
|
||
-});
|
||
-
|
||
-function getAll( elem ) {
|
||
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
|
||
- return elem.getElementsByTagName( "*" );
|
||
-
|
||
- } else if ( typeof elem.querySelectorAll !== "undefined" ) {
|
||
- return elem.querySelectorAll( "*" );
|
||
-
|
||
- } else {
|
||
- return [];
|
||
- }
|
||
-}
|
||
-
|
||
-// Used in clean, fixes the defaultChecked property
|
||
-function fixDefaultChecked( elem ) {
|
||
- if ( elem.type === "checkbox" || elem.type === "radio" ) {
|
||
- elem.defaultChecked = elem.checked;
|
||
- }
|
||
-}
|
||
-// Finds all inputs and passes them to fixDefaultChecked
|
||
-function findInputs( elem ) {
|
||
- var nodeName = ( elem.nodeName || "" ).toLowerCase();
|
||
- if ( nodeName === "input" ) {
|
||
- fixDefaultChecked( elem );
|
||
- // Skip scripts, get other children
|
||
- } else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
|
||
- jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
|
||
- }
|
||
-}
|
||
-
|
||
-// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
|
||
-function shimCloneNode( elem ) {
|
||
- var div = document.createElement( "div" );
|
||
- safeFragment.appendChild( div );
|
||
-
|
||
- div.innerHTML = elem.outerHTML;
|
||
- return div.firstChild;
|
||
-}
|
||
-
|
||
-jQuery.extend({
|
||
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
||
- var srcElements,
|
||
- destElements,
|
||
- i,
|
||
- // IE<=8 does not properly clone detached, unknown element nodes
|
||
- clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
|
||
- elem.cloneNode( true ) :
|
||
- shimCloneNode( elem );
|
||
-
|
||
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
|
||
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
|
||
- // IE copies events bound via attachEvent when using cloneNode.
|
||
- // Calling detachEvent on the clone will also remove the events
|
||
- // from the original. In order to get around this, we use some
|
||
- // proprietary methods to clear the events. Thanks to MooTools
|
||
- // guys for this hotness.
|
||
-
|
||
- cloneFixAttributes( elem, clone );
|
||
-
|
||
- // Using Sizzle here is crazy slow, so we use getElementsByTagName instead
|
||
- srcElements = getAll( elem );
|
||
- destElements = getAll( clone );
|
||
-
|
||
- // Weird iteration because IE will replace the length property
|
||
- // with an element if you are cloning the body and one of the
|
||
- // elements on the page has a name or id of "length"
|
||
- for ( i = 0; srcElements[i]; ++i ) {
|
||
- // Ensure that the destination node is not null; Fixes #9587
|
||
- if ( destElements[i] ) {
|
||
- cloneFixAttributes( srcElements[i], destElements[i] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Copy the events from the original to the clone
|
||
- if ( dataAndEvents ) {
|
||
- cloneCopyEvent( elem, clone );
|
||
-
|
||
- if ( deepDataAndEvents ) {
|
||
- srcElements = getAll( elem );
|
||
- destElements = getAll( clone );
|
||
-
|
||
- for ( i = 0; srcElements[i]; ++i ) {
|
||
- cloneCopyEvent( srcElements[i], destElements[i] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- srcElements = destElements = null;
|
||
-
|
||
- // Return the cloned set
|
||
- return clone;
|
||
- },
|
||
-
|
||
- clean: function( elems, context, fragment, scripts ) {
|
||
- var checkScriptType;
|
||
-
|
||
- context = context || document;
|
||
-
|
||
- // !context.createElement fails in IE with an error but returns typeof 'object'
|
||
- if ( typeof context.createElement === "undefined" ) {
|
||
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
|
||
- }
|
||
-
|
||
- var ret = [], j;
|
||
-
|
||
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
|
||
- if ( typeof elem === "number" ) {
|
||
- elem += "";
|
||
- }
|
||
-
|
||
- if ( !elem ) {
|
||
- continue;
|
||
- }
|
||
-
|
||
- // Convert html string into DOM nodes
|
||
- if ( typeof elem === "string" ) {
|
||
- if ( !rhtml.test( elem ) ) {
|
||
- elem = context.createTextNode( elem );
|
||
- } else {
|
||
- // Fix "XHTML"-style tags in all browsers
|
||
- elem = elem.replace(rxhtmlTag, "<$1></$2>");
|
||
-
|
||
- // Trim whitespace, otherwise indexOf won't work as expected
|
||
- var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
|
||
- wrap = wrapMap[ tag ] || wrapMap._default,
|
||
- depth = wrap[0],
|
||
- div = context.createElement("div");
|
||
-
|
||
- // Append wrapper element to unknown element safe doc fragment
|
||
- if ( context === document ) {
|
||
- // Use the fragment we've already created for this document
|
||
- safeFragment.appendChild( div );
|
||
- } else {
|
||
- // Use a fragment created with the owner document
|
||
- createSafeFragment( context ).appendChild( div );
|
||
- }
|
||
-
|
||
- // Go to html and back, then peel off extra wrappers
|
||
- div.innerHTML = wrap[1] + elem + wrap[2];
|
||
-
|
||
- // Move to the right depth
|
||
- while ( depth-- ) {
|
||
- div = div.lastChild;
|
||
- }
|
||
-
|
||
- // Remove IE's autoinserted <tbody> from table fragments
|
||
- if ( !jQuery.support.tbody ) {
|
||
-
|
||
- // String was a <table>, *may* have spurious <tbody>
|
||
- var hasBody = rtbody.test(elem),
|
||
- tbody = tag === "table" && !hasBody ?
|
||
- div.firstChild && div.firstChild.childNodes :
|
||
-
|
||
- // String was a bare <thead> or <tfoot>
|
||
- wrap[1] === "<table>" && !hasBody ?
|
||
- div.childNodes :
|
||
- [];
|
||
-
|
||
- for ( j = tbody.length - 1; j >= 0 ; --j ) {
|
||
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
|
||
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // IE completely kills leading whitespace when innerHTML is used
|
||
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
|
||
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
|
||
- }
|
||
-
|
||
- elem = div.childNodes;
|
||
- }
|
||
- }
|
||
-
|
||
- // Resets defaultChecked for any radios and checkboxes
|
||
- // about to be appended to the DOM in IE 6/7 (#8060)
|
||
- var len;
|
||
- if ( !jQuery.support.appendChecked ) {
|
||
- if ( elem[0] && typeof (len = elem.length) === "number" ) {
|
||
- for ( j = 0; j < len; j++ ) {
|
||
- findInputs( elem[j] );
|
||
- }
|
||
- } else {
|
||
- findInputs( elem );
|
||
- }
|
||
- }
|
||
-
|
||
- if ( elem.nodeType ) {
|
||
- ret.push( elem );
|
||
- } else {
|
||
- ret = jQuery.merge( ret, elem );
|
||
- }
|
||
- }
|
||
-
|
||
- if ( fragment ) {
|
||
- checkScriptType = function( elem ) {
|
||
- return !elem.type || rscriptType.test( elem.type );
|
||
- };
|
||
- for ( i = 0; ret[i]; i++ ) {
|
||
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
|
||
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
|
||
-
|
||
- } else {
|
||
- if ( ret[i].nodeType === 1 ) {
|
||
- var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
|
||
-
|
||
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
|
||
- }
|
||
- fragment.appendChild( ret[i] );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- },
|
||
-
|
||
- cleanData: function( elems ) {
|
||
- var data, id,
|
||
- cache = jQuery.cache,
|
||
- special = jQuery.event.special,
|
||
- deleteExpando = jQuery.support.deleteExpando;
|
||
-
|
||
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
|
||
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
|
||
- continue;
|
||
- }
|
||
-
|
||
- id = elem[ jQuery.expando ];
|
||
-
|
||
- if ( id ) {
|
||
- data = cache[ id ];
|
||
-
|
||
- if ( data && data.events ) {
|
||
- for ( var type in data.events ) {
|
||
- if ( special[ type ] ) {
|
||
- jQuery.event.remove( elem, type );
|
||
-
|
||
- // This is a shortcut to avoid jQuery.event.remove's overhead
|
||
- } else {
|
||
- jQuery.removeEvent( elem, type, data.handle );
|
||
- }
|
||
- }
|
||
-
|
||
- // Null the DOM reference to avoid IE6/7/8 leak (#7054)
|
||
- if ( data.handle ) {
|
||
- data.handle.elem = null;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( deleteExpando ) {
|
||
- delete elem[ jQuery.expando ];
|
||
-
|
||
- } else if ( elem.removeAttribute ) {
|
||
- elem.removeAttribute( jQuery.expando );
|
||
- }
|
||
-
|
||
- delete cache[ id ];
|
||
- }
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-function evalScript( i, elem ) {
|
||
- if ( elem.src ) {
|
||
- jQuery.ajax({
|
||
- url: elem.src,
|
||
- async: false,
|
||
- dataType: "script"
|
||
- });
|
||
- } else {
|
||
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
|
||
- }
|
||
-
|
||
- if ( elem.parentNode ) {
|
||
- elem.parentNode.removeChild( elem );
|
||
- }
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var ralpha = /alpha\([^)]*\)/i,
|
||
- ropacity = /opacity=([^)]*)/,
|
||
- // fixed for IE9, see #8346
|
||
- rupper = /([A-Z]|^ms)/g,
|
||
- rnumpx = /^-?\d+(?:px)?$/i,
|
||
- rnum = /^-?\d/,
|
||
- rrelNum = /^([\-+])=([\-+.\de]+)/,
|
||
-
|
||
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
||
- cssWidth = [ "Left", "Right" ],
|
||
- cssHeight = [ "Top", "Bottom" ],
|
||
- curCSS,
|
||
-
|
||
- getComputedStyle,
|
||
- currentStyle;
|
||
-
|
||
-jQuery.fn.css = function( name, value ) {
|
||
- // Setting 'undefined' is a no-op
|
||
- if ( arguments.length === 2 && value === undefined ) {
|
||
- return this;
|
||
- }
|
||
-
|
||
- return jQuery.access( this, name, value, true, function( elem, name, value ) {
|
||
- return value !== undefined ?
|
||
- jQuery.style( elem, name, value ) :
|
||
- jQuery.css( elem, name );
|
||
- });
|
||
-};
|
||
-
|
||
-jQuery.extend({
|
||
- // Add in style property hooks for overriding the default
|
||
- // behavior of getting and setting a style property
|
||
- cssHooks: {
|
||
- opacity: {
|
||
- get: function( elem, computed ) {
|
||
- if ( computed ) {
|
||
- // We should always get a number back from opacity
|
||
- var ret = curCSS( elem, "opacity", "opacity" );
|
||
- return ret === "" ? "1" : ret;
|
||
-
|
||
- } else {
|
||
- return elem.style.opacity;
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- // Exclude the following css properties to add px
|
||
- cssNumber: {
|
||
- "fillOpacity": true,
|
||
- "fontWeight": true,
|
||
- "lineHeight": true,
|
||
- "opacity": true,
|
||
- "orphans": true,
|
||
- "widows": true,
|
||
- "zIndex": true,
|
||
- "zoom": true
|
||
- },
|
||
-
|
||
- // Add in properties whose names you wish to fix before
|
||
- // setting or getting the value
|
||
- cssProps: {
|
||
- // normalize float css property
|
||
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
|
||
- },
|
||
-
|
||
- // Get and set the style property on a DOM Node
|
||
- style: function( elem, name, value, extra ) {
|
||
- // Don't set styles on text and comment nodes
|
||
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Make sure that we're working with the right name
|
||
- var ret, type, origName = jQuery.camelCase( name ),
|
||
- style = elem.style, hooks = jQuery.cssHooks[ origName ];
|
||
-
|
||
- name = jQuery.cssProps[ origName ] || origName;
|
||
-
|
||
- // Check if we're setting a value
|
||
- if ( value !== undefined ) {
|
||
- type = typeof value;
|
||
-
|
||
- // convert relative number strings (+= or -=) to relative numbers. #7345
|
||
- if ( type === "string" && (ret = rrelNum.exec( value )) ) {
|
||
- value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
|
||
- // Fixes bug #9237
|
||
- type = "number";
|
||
- }
|
||
-
|
||
- // Make sure that NaN and null values aren't set. See: #7116
|
||
- if ( value == null || type === "number" && isNaN( value ) ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
|
||
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
|
||
- value += "px";
|
||
- }
|
||
-
|
||
- // If a hook was provided, use that value, otherwise just set the specified value
|
||
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
|
||
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
|
||
- // Fixes bug #5509
|
||
- try {
|
||
- style[ name ] = value;
|
||
- } catch(e) {}
|
||
- }
|
||
-
|
||
- } else {
|
||
- // If a hook was provided get the non-computed value from there
|
||
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
|
||
- return ret;
|
||
- }
|
||
-
|
||
- // Otherwise just get the value from the style object
|
||
- return style[ name ];
|
||
- }
|
||
- },
|
||
-
|
||
- css: function( elem, name, extra ) {
|
||
- var ret, hooks;
|
||
-
|
||
- // Make sure that we're working with the right name
|
||
- name = jQuery.camelCase( name );
|
||
- hooks = jQuery.cssHooks[ name ];
|
||
- name = jQuery.cssProps[ name ] || name;
|
||
-
|
||
- // cssFloat needs a special treatment
|
||
- if ( name === "cssFloat" ) {
|
||
- name = "float";
|
||
- }
|
||
-
|
||
- // If a hook was provided get the computed value from there
|
||
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
|
||
- return ret;
|
||
-
|
||
- // Otherwise, if a way to get the computed value exists, use that
|
||
- } else if ( curCSS ) {
|
||
- return curCSS( elem, name );
|
||
- }
|
||
- },
|
||
-
|
||
- // A method for quickly swapping in/out CSS properties to get correct calculations
|
||
- swap: function( elem, options, callback ) {
|
||
- var old = {};
|
||
-
|
||
- // Remember the old values, and insert the new ones
|
||
- for ( var name in options ) {
|
||
- old[ name ] = elem.style[ name ];
|
||
- elem.style[ name ] = options[ name ];
|
||
- }
|
||
-
|
||
- callback.call( elem );
|
||
-
|
||
- // Revert the old values
|
||
- for ( name in options ) {
|
||
- elem.style[ name ] = old[ name ];
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-// DEPRECATED, Use jQuery.css() instead
|
||
-jQuery.curCSS = jQuery.css;
|
||
-
|
||
-jQuery.each(["height", "width"], function( i, name ) {
|
||
- jQuery.cssHooks[ name ] = {
|
||
- get: function( elem, computed, extra ) {
|
||
- var val;
|
||
-
|
||
- if ( computed ) {
|
||
- if ( elem.offsetWidth !== 0 ) {
|
||
- return getWH( elem, name, extra );
|
||
- } else {
|
||
- jQuery.swap( elem, cssShow, function() {
|
||
- val = getWH( elem, name, extra );
|
||
- });
|
||
- }
|
||
-
|
||
- return val;
|
||
- }
|
||
- },
|
||
-
|
||
- set: function( elem, value ) {
|
||
- if ( rnumpx.test( value ) ) {
|
||
- // ignore negative width and height values #1599
|
||
- value = parseFloat( value );
|
||
-
|
||
- if ( value >= 0 ) {
|
||
- return value + "px";
|
||
- }
|
||
-
|
||
- } else {
|
||
- return value;
|
||
- }
|
||
- }
|
||
- };
|
||
-});
|
||
-
|
||
-if ( !jQuery.support.opacity ) {
|
||
- jQuery.cssHooks.opacity = {
|
||
- get: function( elem, computed ) {
|
||
- // IE uses filters for opacity
|
||
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
|
||
- ( parseFloat( RegExp.$1 ) / 100 ) + "" :
|
||
- computed ? "1" : "";
|
||
- },
|
||
-
|
||
- set: function( elem, value ) {
|
||
- var style = elem.style,
|
||
- currentStyle = elem.currentStyle,
|
||
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
|
||
- filter = currentStyle && currentStyle.filter || style.filter || "";
|
||
-
|
||
- // IE has trouble with opacity if it does not have layout
|
||
- // Force it by setting the zoom level
|
||
- style.zoom = 1;
|
||
-
|
||
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
|
||
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
|
||
-
|
||
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
|
||
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
|
||
- // style.removeAttribute is IE Only, but so apparently is this code path...
|
||
- style.removeAttribute( "filter" );
|
||
-
|
||
- // if there there is no filter style applied in a css rule, we are done
|
||
- if ( currentStyle && !currentStyle.filter ) {
|
||
- return;
|
||
- }
|
||
- }
|
||
-
|
||
- // otherwise, set new filter values
|
||
- style.filter = ralpha.test( filter ) ?
|
||
- filter.replace( ralpha, opacity ) :
|
||
- filter + " " + opacity;
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-jQuery(function() {
|
||
- // This hook cannot be added until DOM ready because the support test
|
||
- // for it is not run until after DOM ready
|
||
- if ( !jQuery.support.reliableMarginRight ) {
|
||
- jQuery.cssHooks.marginRight = {
|
||
- get: function( elem, computed ) {
|
||
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
|
||
- // Work around by temporarily setting element display to inline-block
|
||
- var ret;
|
||
- jQuery.swap( elem, { "display": "inline-block" }, function() {
|
||
- if ( computed ) {
|
||
- ret = curCSS( elem, "margin-right", "marginRight" );
|
||
- } else {
|
||
- ret = elem.style.marginRight;
|
||
- }
|
||
- });
|
||
- return ret;
|
||
- }
|
||
- };
|
||
- }
|
||
-});
|
||
-
|
||
-if ( document.defaultView && document.defaultView.getComputedStyle ) {
|
||
- getComputedStyle = function( elem, name ) {
|
||
- var ret, defaultView, computedStyle;
|
||
-
|
||
- name = name.replace( rupper, "-$1" ).toLowerCase();
|
||
-
|
||
- if ( (defaultView = elem.ownerDocument.defaultView) &&
|
||
- (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
|
||
- ret = computedStyle.getPropertyValue( name );
|
||
- if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
|
||
- ret = jQuery.style( elem, name );
|
||
- }
|
||
- }
|
||
-
|
||
- return ret;
|
||
- };
|
||
-}
|
||
-
|
||
-if ( document.documentElement.currentStyle ) {
|
||
- currentStyle = function( elem, name ) {
|
||
- var left, rsLeft, uncomputed,
|
||
- ret = elem.currentStyle && elem.currentStyle[ name ],
|
||
- style = elem.style;
|
||
-
|
||
- // Avoid setting ret to empty string here
|
||
- // so we don't default to auto
|
||
- if ( ret === null && style && (uncomputed = style[ name ]) ) {
|
||
- ret = uncomputed;
|
||
- }
|
||
-
|
||
- // From the awesome hack by Dean Edwards
|
||
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
|
||
-
|
||
- // If we're not dealing with a regular pixel number
|
||
- // but a number that has a weird ending, we need to convert it to pixels
|
||
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
|
||
-
|
||
- // Remember the original values
|
||
- left = style.left;
|
||
- rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
|
||
-
|
||
- // Put in the new values to get a computed value out
|
||
- if ( rsLeft ) {
|
||
- elem.runtimeStyle.left = elem.currentStyle.left;
|
||
- }
|
||
- style.left = name === "fontSize" ? "1em" : ( ret || 0 );
|
||
- ret = style.pixelLeft + "px";
|
||
-
|
||
- // Revert the changed values
|
||
- style.left = left;
|
||
- if ( rsLeft ) {
|
||
- elem.runtimeStyle.left = rsLeft;
|
||
- }
|
||
- }
|
||
-
|
||
- return ret === "" ? "auto" : ret;
|
||
- };
|
||
-}
|
||
-
|
||
-curCSS = getComputedStyle || currentStyle;
|
||
-
|
||
-function getWH( elem, name, extra ) {
|
||
-
|
||
- // Start with offset property
|
||
- var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
|
||
- which = name === "width" ? cssWidth : cssHeight,
|
||
- i = 0,
|
||
- len = which.length;
|
||
-
|
||
- if ( val > 0 ) {
|
||
- if ( extra !== "border" ) {
|
||
- for ( ; i < len; i++ ) {
|
||
- if ( !extra ) {
|
||
- val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
|
||
- }
|
||
- if ( extra === "margin" ) {
|
||
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
|
||
- } else {
|
||
- val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return val + "px";
|
||
- }
|
||
-
|
||
- // Fall back to computed then uncomputed css if necessary
|
||
- val = curCSS( elem, name, name );
|
||
- if ( val < 0 || val == null ) {
|
||
- val = elem.style[ name ] || 0;
|
||
- }
|
||
- // Normalize "", auto, and prepare for extra
|
||
- val = parseFloat( val ) || 0;
|
||
-
|
||
- // Add padding, border, margin
|
||
- if ( extra ) {
|
||
- for ( ; i < len; i++ ) {
|
||
- val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
|
||
- if ( extra !== "padding" ) {
|
||
- val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
|
||
- }
|
||
- if ( extra === "margin" ) {
|
||
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return val + "px";
|
||
-}
|
||
-
|
||
-if ( jQuery.expr && jQuery.expr.filters ) {
|
||
- jQuery.expr.filters.hidden = function( elem ) {
|
||
- var width = elem.offsetWidth,
|
||
- height = elem.offsetHeight;
|
||
-
|
||
- return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
|
||
- };
|
||
-
|
||
- jQuery.expr.filters.visible = function( elem ) {
|
||
- return !jQuery.expr.filters.hidden( elem );
|
||
- };
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var r20 = /%20/g,
|
||
- rbracket = /\[\]$/,
|
||
- rCRLF = /\r?\n/g,
|
||
- rhash = /#.*$/,
|
||
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
|
||
- rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
|
||
- // #7653, #8125, #8152: local protocol detection
|
||
- rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
|
||
- rnoContent = /^(?:GET|HEAD)$/,
|
||
- rprotocol = /^\/\//,
|
||
- rquery = /\?/,
|
||
- rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
|
||
- rselectTextarea = /^(?:select|textarea)/i,
|
||
- rspacesAjax = /\s+/,
|
||
- rts = /([?&])_=[^&]*/,
|
||
- rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
|
||
-
|
||
- // Keep a copy of the old load method
|
||
- _load = jQuery.fn.load,
|
||
-
|
||
- /* Prefilters
|
||
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
||
- * 2) These are called:
|
||
- * - BEFORE asking for a transport
|
||
- * - AFTER param serialization (s.data is a string if s.processData is true)
|
||
- * 3) key is the dataType
|
||
- * 4) the catchall symbol "*" can be used
|
||
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
||
- */
|
||
- prefilters = {},
|
||
-
|
||
- /* Transports bindings
|
||
- * 1) key is the dataType
|
||
- * 2) the catchall symbol "*" can be used
|
||
- * 3) selection will start with transport dataType and THEN go to "*" if needed
|
||
- */
|
||
- transports = {},
|
||
-
|
||
- // Document location
|
||
- ajaxLocation,
|
||
-
|
||
- // Document location segments
|
||
- ajaxLocParts,
|
||
-
|
||
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
||
- allTypes = ["*/"] + ["*"];
|
||
-
|
||
-// #8138, IE may throw an exception when accessing
|
||
-// a field from window.location if document.domain has been set
|
||
-try {
|
||
- ajaxLocation = location.href;
|
||
-} catch( e ) {
|
||
- // Use the href attribute of an A element
|
||
- // since IE will modify it given document.location
|
||
- ajaxLocation = document.createElement( "a" );
|
||
- ajaxLocation.href = "";
|
||
- ajaxLocation = ajaxLocation.href;
|
||
-}
|
||
-
|
||
-// Segment location into parts
|
||
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
|
||
-
|
||
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
||
-function addToPrefiltersOrTransports( structure ) {
|
||
-
|
||
- // dataTypeExpression is optional and defaults to "*"
|
||
- return function( dataTypeExpression, func ) {
|
||
-
|
||
- if ( typeof dataTypeExpression !== "string" ) {
|
||
- func = dataTypeExpression;
|
||
- dataTypeExpression = "*";
|
||
- }
|
||
-
|
||
- if ( jQuery.isFunction( func ) ) {
|
||
- var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
|
||
- i = 0,
|
||
- length = dataTypes.length,
|
||
- dataType,
|
||
- list,
|
||
- placeBefore;
|
||
-
|
||
- // For each dataType in the dataTypeExpression
|
||
- for ( ; i < length; i++ ) {
|
||
- dataType = dataTypes[ i ];
|
||
- // We control if we're asked to add before
|
||
- // any existing element
|
||
- placeBefore = /^\+/.test( dataType );
|
||
- if ( placeBefore ) {
|
||
- dataType = dataType.substr( 1 ) || "*";
|
||
- }
|
||
- list = structure[ dataType ] = structure[ dataType ] || [];
|
||
- // then we add to the structure accordingly
|
||
- list[ placeBefore ? "unshift" : "push" ]( func );
|
||
- }
|
||
- }
|
||
- };
|
||
-}
|
||
-
|
||
-// Base inspection function for prefilters and transports
|
||
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
|
||
- dataType /* internal */, inspected /* internal */ ) {
|
||
-
|
||
- dataType = dataType || options.dataTypes[ 0 ];
|
||
- inspected = inspected || {};
|
||
-
|
||
- inspected[ dataType ] = true;
|
||
-
|
||
- var list = structure[ dataType ],
|
||
- i = 0,
|
||
- length = list ? list.length : 0,
|
||
- executeOnly = ( structure === prefilters ),
|
||
- selection;
|
||
-
|
||
- for ( ; i < length && ( executeOnly || !selection ); i++ ) {
|
||
- selection = list[ i ]( options, originalOptions, jqXHR );
|
||
- // If we got redirected to another dataType
|
||
- // we try there if executing only and not done already
|
||
- if ( typeof selection === "string" ) {
|
||
- if ( !executeOnly || inspected[ selection ] ) {
|
||
- selection = undefined;
|
||
- } else {
|
||
- options.dataTypes.unshift( selection );
|
||
- selection = inspectPrefiltersOrTransports(
|
||
- structure, options, originalOptions, jqXHR, selection, inspected );
|
||
- }
|
||
- }
|
||
- }
|
||
- // If we're only executing or nothing was selected
|
||
- // we try the catchall dataType if not done already
|
||
- if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
|
||
- selection = inspectPrefiltersOrTransports(
|
||
- structure, options, originalOptions, jqXHR, "*", inspected );
|
||
- }
|
||
- // unnecessary when only executing (prefilters)
|
||
- // but it'll be ignored by the caller in that case
|
||
- return selection;
|
||
-}
|
||
-
|
||
-// A special extend for ajax options
|
||
-// that takes "flat" options (not to be deep extended)
|
||
-// Fixes #9887
|
||
-function ajaxExtend( target, src ) {
|
||
- var key, deep,
|
||
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
||
- for ( key in src ) {
|
||
- if ( src[ key ] !== undefined ) {
|
||
- ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
|
||
- }
|
||
- }
|
||
- if ( deep ) {
|
||
- jQuery.extend( true, target, deep );
|
||
- }
|
||
-}
|
||
-
|
||
-jQuery.fn.extend({
|
||
- load: function( url, params, callback ) {
|
||
- if ( typeof url !== "string" && _load ) {
|
||
- return _load.apply( this, arguments );
|
||
-
|
||
- // Don't do a request if no elements are being requested
|
||
- } else if ( !this.length ) {
|
||
- return this;
|
||
- }
|
||
-
|
||
- var off = url.indexOf( " " );
|
||
- if ( off >= 0 ) {
|
||
- var selector = url.slice( off, url.length );
|
||
- url = url.slice( 0, off );
|
||
- }
|
||
-
|
||
- // Default to a GET request
|
||
- var type = "GET";
|
||
-
|
||
- // If the second parameter was provided
|
||
- if ( params ) {
|
||
- // If it's a function
|
||
- if ( jQuery.isFunction( params ) ) {
|
||
- // We assume that it's the callback
|
||
- callback = params;
|
||
- params = undefined;
|
||
-
|
||
- // Otherwise, build a param string
|
||
- } else if ( typeof params === "object" ) {
|
||
- params = jQuery.param( params, jQuery.ajaxSettings.traditional );
|
||
- type = "POST";
|
||
- }
|
||
- }
|
||
-
|
||
- var self = this;
|
||
-
|
||
- // Request the remote document
|
||
- jQuery.ajax({
|
||
- url: url,
|
||
- type: type,
|
||
- dataType: "html",
|
||
- data: params,
|
||
- // Complete callback (responseText is used internally)
|
||
- complete: function( jqXHR, status, responseText ) {
|
||
- // Store the response as specified by the jqXHR object
|
||
- responseText = jqXHR.responseText;
|
||
- // If successful, inject the HTML into all the matched elements
|
||
- if ( jqXHR.isResolved() ) {
|
||
- // #4825: Get the actual response in case
|
||
- // a dataFilter is present in ajaxSettings
|
||
- jqXHR.done(function( r ) {
|
||
- responseText = r;
|
||
- });
|
||
- // See if a selector was specified
|
||
- self.html( selector ?
|
||
- // Create a dummy div to hold the results
|
||
- jQuery("<div>")
|
||
- // inject the contents of the document in, removing the scripts
|
||
- // to avoid any 'Permission Denied' errors in IE
|
||
- .append(responseText.replace(rscript, ""))
|
||
-
|
||
- // Locate the specified elements
|
||
- .find(selector) :
|
||
-
|
||
- // If not, just inject the full result
|
||
- responseText );
|
||
- }
|
||
-
|
||
- if ( callback ) {
|
||
- self.each( callback, [ responseText, status, jqXHR ] );
|
||
- }
|
||
- }
|
||
- });
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- serialize: function() {
|
||
- return jQuery.param( this.serializeArray() );
|
||
- },
|
||
-
|
||
- serializeArray: function() {
|
||
- return this.map(function(){
|
||
- return this.elements ? jQuery.makeArray( this.elements ) : this;
|
||
- })
|
||
- .filter(function(){
|
||
- return this.name && !this.disabled &&
|
||
- ( this.checked || rselectTextarea.test( this.nodeName ) ||
|
||
- rinput.test( this.type ) );
|
||
- })
|
||
- .map(function( i, elem ){
|
||
- var val = jQuery( this ).val();
|
||
-
|
||
- return val == null ?
|
||
- null :
|
||
- jQuery.isArray( val ) ?
|
||
- jQuery.map( val, function( val, i ){
|
||
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
||
- }) :
|
||
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
||
- }).get();
|
||
- }
|
||
-});
|
||
-
|
||
-// Attach a bunch of functions for handling common AJAX events
|
||
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
|
||
- jQuery.fn[ o ] = function( f ){
|
||
- return this.on( o, f );
|
||
- };
|
||
-});
|
||
-
|
||
-jQuery.each( [ "get", "post" ], function( i, method ) {
|
||
- jQuery[ method ] = function( url, data, callback, type ) {
|
||
- // shift arguments if data argument was omitted
|
||
- if ( jQuery.isFunction( data ) ) {
|
||
- type = type || callback;
|
||
- callback = data;
|
||
- data = undefined;
|
||
- }
|
||
-
|
||
- return jQuery.ajax({
|
||
- type: method,
|
||
- url: url,
|
||
- data: data,
|
||
- success: callback,
|
||
- dataType: type
|
||
- });
|
||
- };
|
||
-});
|
||
-
|
||
-jQuery.extend({
|
||
-
|
||
- getScript: function( url, callback ) {
|
||
- return jQuery.get( url, undefined, callback, "script" );
|
||
- },
|
||
-
|
||
- getJSON: function( url, data, callback ) {
|
||
- return jQuery.get( url, data, callback, "json" );
|
||
- },
|
||
-
|
||
- // Creates a full fledged settings object into target
|
||
- // with both ajaxSettings and settings fields.
|
||
- // If target is omitted, writes into ajaxSettings.
|
||
- ajaxSetup: function( target, settings ) {
|
||
- if ( settings ) {
|
||
- // Building a settings object
|
||
- ajaxExtend( target, jQuery.ajaxSettings );
|
||
- } else {
|
||
- // Extending ajaxSettings
|
||
- settings = target;
|
||
- target = jQuery.ajaxSettings;
|
||
- }
|
||
- ajaxExtend( target, settings );
|
||
- return target;
|
||
- },
|
||
-
|
||
- ajaxSettings: {
|
||
- url: ajaxLocation,
|
||
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
|
||
- global: true,
|
||
- type: "GET",
|
||
- contentType: "application/x-www-form-urlencoded",
|
||
- processData: true,
|
||
- async: true,
|
||
- /*
|
||
- timeout: 0,
|
||
- data: null,
|
||
- dataType: null,
|
||
- username: null,
|
||
- password: null,
|
||
- cache: null,
|
||
- traditional: false,
|
||
- headers: {},
|
||
- */
|
||
-
|
||
- accepts: {
|
||
- xml: "application/xml, text/xml",
|
||
- html: "text/html",
|
||
- text: "text/plain",
|
||
- json: "application/json, text/javascript",
|
||
- "*": allTypes
|
||
- },
|
||
-
|
||
- contents: {
|
||
- xml: /xml/,
|
||
- html: /html/,
|
||
- json: /json/
|
||
- },
|
||
-
|
||
- responseFields: {
|
||
- xml: "responseXML",
|
||
- text: "responseText"
|
||
- },
|
||
-
|
||
- // List of data converters
|
||
- // 1) key format is "source_type destination_type" (a single space in-between)
|
||
- // 2) the catchall symbol "*" can be used for source_type
|
||
- converters: {
|
||
-
|
||
- // Convert anything to text
|
||
- "* text": window.String,
|
||
-
|
||
- // Text to html (true = no transformation)
|
||
- "text html": true,
|
||
-
|
||
- // Evaluate text as a json expression
|
||
- "text json": jQuery.parseJSON,
|
||
-
|
||
- // Parse text as xml
|
||
- "text xml": jQuery.parseXML
|
||
- },
|
||
-
|
||
- // For options that shouldn't be deep extended:
|
||
- // you can add your own custom options here if
|
||
- // and when you create one that shouldn't be
|
||
- // deep extended (see ajaxExtend)
|
||
- flatOptions: {
|
||
- context: true,
|
||
- url: true
|
||
- }
|
||
- },
|
||
-
|
||
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
|
||
- ajaxTransport: addToPrefiltersOrTransports( transports ),
|
||
-
|
||
- // Main method
|
||
- ajax: function( url, options ) {
|
||
-
|
||
- // If url is an object, simulate pre-1.5 signature
|
||
- if ( typeof url === "object" ) {
|
||
- options = url;
|
||
- url = undefined;
|
||
- }
|
||
-
|
||
- // Force options to be an object
|
||
- options = options || {};
|
||
-
|
||
- var // Create the final options object
|
||
- s = jQuery.ajaxSetup( {}, options ),
|
||
- // Callbacks context
|
||
- callbackContext = s.context || s,
|
||
- // Context for global events
|
||
- // It's the callbackContext if one was provided in the options
|
||
- // and if it's a DOM node or a jQuery collection
|
||
- globalEventContext = callbackContext !== s &&
|
||
- ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
|
||
- jQuery( callbackContext ) : jQuery.event,
|
||
- // Deferreds
|
||
- deferred = jQuery.Deferred(),
|
||
- completeDeferred = jQuery.Callbacks( "once memory" ),
|
||
- // Status-dependent callbacks
|
||
- statusCode = s.statusCode || {},
|
||
- // ifModified key
|
||
- ifModifiedKey,
|
||
- // Headers (they are sent all at once)
|
||
- requestHeaders = {},
|
||
- requestHeadersNames = {},
|
||
- // Response headers
|
||
- responseHeadersString,
|
||
- responseHeaders,
|
||
- // transport
|
||
- transport,
|
||
- // timeout handle
|
||
- timeoutTimer,
|
||
- // Cross-domain detection vars
|
||
- parts,
|
||
- // The jqXHR state
|
||
- state = 0,
|
||
- // To know if global events are to be dispatched
|
||
- fireGlobals,
|
||
- // Loop variable
|
||
- i,
|
||
- // Fake xhr
|
||
- jqXHR = {
|
||
-
|
||
- readyState: 0,
|
||
-
|
||
- // Caches the header
|
||
- setRequestHeader: function( name, value ) {
|
||
- if ( !state ) {
|
||
- var lname = name.toLowerCase();
|
||
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
|
||
- requestHeaders[ name ] = value;
|
||
- }
|
||
- return this;
|
||
- },
|
||
-
|
||
- // Raw string
|
||
- getAllResponseHeaders: function() {
|
||
- return state === 2 ? responseHeadersString : null;
|
||
- },
|
||
-
|
||
- // Builds headers hashtable if needed
|
||
- getResponseHeader: function( key ) {
|
||
- var match;
|
||
- if ( state === 2 ) {
|
||
- if ( !responseHeaders ) {
|
||
- responseHeaders = {};
|
||
- while( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
||
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
|
||
- }
|
||
- }
|
||
- match = responseHeaders[ key.toLowerCase() ];
|
||
- }
|
||
- return match === undefined ? null : match;
|
||
- },
|
||
-
|
||
- // Overrides response content-type header
|
||
- overrideMimeType: function( type ) {
|
||
- if ( !state ) {
|
||
- s.mimeType = type;
|
||
- }
|
||
- return this;
|
||
- },
|
||
-
|
||
- // Cancel the request
|
||
- abort: function( statusText ) {
|
||
- statusText = statusText || "abort";
|
||
- if ( transport ) {
|
||
- transport.abort( statusText );
|
||
- }
|
||
- done( 0, statusText );
|
||
- return this;
|
||
- }
|
||
- };
|
||
-
|
||
- // Callback for when everything is done
|
||
- // It is defined here because jslint complains if it is declared
|
||
- // at the end of the function (which would be more logical and readable)
|
||
- function done( status, nativeStatusText, responses, headers ) {
|
||
-
|
||
- // Called once
|
||
- if ( state === 2 ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // State is "done" now
|
||
- state = 2;
|
||
-
|
||
- // Clear timeout if it exists
|
||
- if ( timeoutTimer ) {
|
||
- clearTimeout( timeoutTimer );
|
||
- }
|
||
-
|
||
- // Dereference transport for early garbage collection
|
||
- // (no matter how long the jqXHR object will be used)
|
||
- transport = undefined;
|
||
-
|
||
- // Cache response headers
|
||
- responseHeadersString = headers || "";
|
||
-
|
||
- // Set readyState
|
||
- jqXHR.readyState = status > 0 ? 4 : 0;
|
||
-
|
||
- var isSuccess,
|
||
- success,
|
||
- error,
|
||
- statusText = nativeStatusText,
|
||
- response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
|
||
- lastModified,
|
||
- etag;
|
||
-
|
||
- // If successful, handle type chaining
|
||
- if ( status >= 200 && status < 300 || status === 304 ) {
|
||
-
|
||
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
- if ( s.ifModified ) {
|
||
-
|
||
- if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
|
||
- jQuery.lastModified[ ifModifiedKey ] = lastModified;
|
||
- }
|
||
- if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
|
||
- jQuery.etag[ ifModifiedKey ] = etag;
|
||
- }
|
||
- }
|
||
-
|
||
- // If not modified
|
||
- if ( status === 304 ) {
|
||
-
|
||
- statusText = "notmodified";
|
||
- isSuccess = true;
|
||
-
|
||
- // If we have data
|
||
- } else {
|
||
-
|
||
- try {
|
||
- success = ajaxConvert( s, response );
|
||
- statusText = "success";
|
||
- isSuccess = true;
|
||
- } catch(e) {
|
||
- // We have a parsererror
|
||
- statusText = "parsererror";
|
||
- error = e;
|
||
- }
|
||
- }
|
||
- } else {
|
||
- // We extract error from statusText
|
||
- // then normalize statusText and status for non-aborts
|
||
- error = statusText;
|
||
- if ( !statusText || status ) {
|
||
- statusText = "error";
|
||
- if ( status < 0 ) {
|
||
- status = 0;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Set data for the fake xhr object
|
||
- jqXHR.status = status;
|
||
- jqXHR.statusText = "" + ( nativeStatusText || statusText );
|
||
-
|
||
- // Success/Error
|
||
- if ( isSuccess ) {
|
||
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
|
||
- } else {
|
||
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
|
||
- }
|
||
-
|
||
- // Status-dependent callbacks
|
||
- jqXHR.statusCode( statusCode );
|
||
- statusCode = undefined;
|
||
-
|
||
- if ( fireGlobals ) {
|
||
- globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
|
||
- [ jqXHR, s, isSuccess ? success : error ] );
|
||
- }
|
||
-
|
||
- // Complete
|
||
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
|
||
-
|
||
- if ( fireGlobals ) {
|
||
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
|
||
- // Handle the global AJAX counter
|
||
- if ( !( --jQuery.active ) ) {
|
||
- jQuery.event.trigger( "ajaxStop" );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Attach deferreds
|
||
- deferred.promise( jqXHR );
|
||
- jqXHR.success = jqXHR.done;
|
||
- jqXHR.error = jqXHR.fail;
|
||
- jqXHR.complete = completeDeferred.add;
|
||
-
|
||
- // Status-dependent callbacks
|
||
- jqXHR.statusCode = function( map ) {
|
||
- if ( map ) {
|
||
- var tmp;
|
||
- if ( state < 2 ) {
|
||
- for ( tmp in map ) {
|
||
- statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
|
||
- }
|
||
- } else {
|
||
- tmp = map[ jqXHR.status ];
|
||
- jqXHR.then( tmp, tmp );
|
||
- }
|
||
- }
|
||
- return this;
|
||
- };
|
||
-
|
||
- // Remove hash character (#7531: and string promotion)
|
||
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
|
||
- // We also use the url parameter if available
|
||
- s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
|
||
-
|
||
- // Extract dataTypes list
|
||
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
|
||
-
|
||
- // Determine if a cross-domain request is in order
|
||
- if ( s.crossDomain == null ) {
|
||
- parts = rurl.exec( s.url.toLowerCase() );
|
||
- s.crossDomain = !!( parts &&
|
||
- ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
|
||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
|
||
- ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
|
||
- );
|
||
- }
|
||
-
|
||
- // Convert data if not already a string
|
||
- if ( s.data && s.processData && typeof s.data !== "string" ) {
|
||
- s.data = jQuery.param( s.data, s.traditional );
|
||
- }
|
||
-
|
||
- // Apply prefilters
|
||
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
||
-
|
||
- // If request was aborted inside a prefiler, stop there
|
||
- if ( state === 2 ) {
|
||
- return false;
|
||
- }
|
||
-
|
||
- // We can fire global events as of now if asked to
|
||
- fireGlobals = s.global;
|
||
-
|
||
- // Uppercase the type
|
||
- s.type = s.type.toUpperCase();
|
||
-
|
||
- // Determine if request has content
|
||
- s.hasContent = !rnoContent.test( s.type );
|
||
-
|
||
- // Watch for a new set of requests
|
||
- if ( fireGlobals && jQuery.active++ === 0 ) {
|
||
- jQuery.event.trigger( "ajaxStart" );
|
||
- }
|
||
-
|
||
- // More options handling for requests with no content
|
||
- if ( !s.hasContent ) {
|
||
-
|
||
- // If data is available, append data to url
|
||
- if ( s.data ) {
|
||
- s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
|
||
- // #9682: remove data so that it's not used in an eventual retry
|
||
- delete s.data;
|
||
- }
|
||
-
|
||
- // Get ifModifiedKey before adding the anti-cache parameter
|
||
- ifModifiedKey = s.url;
|
||
-
|
||
- // Add anti-cache in url if needed
|
||
- if ( s.cache === false ) {
|
||
-
|
||
- var ts = jQuery.now(),
|
||
- // try replacing _= if it is there
|
||
- ret = s.url.replace( rts, "$1_=" + ts );
|
||
-
|
||
- // if nothing was replaced, add timestamp to the end
|
||
- s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
|
||
- }
|
||
- }
|
||
-
|
||
- // Set the correct header, if data is being sent
|
||
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
|
||
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
|
||
- }
|
||
-
|
||
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
||
- if ( s.ifModified ) {
|
||
- ifModifiedKey = ifModifiedKey || s.url;
|
||
- if ( jQuery.lastModified[ ifModifiedKey ] ) {
|
||
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
|
||
- }
|
||
- if ( jQuery.etag[ ifModifiedKey ] ) {
|
||
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
|
||
- }
|
||
- }
|
||
-
|
||
- // Set the Accepts header for the server, depending on the dataType
|
||
- jqXHR.setRequestHeader(
|
||
- "Accept",
|
||
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
|
||
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
|
||
- s.accepts[ "*" ]
|
||
- );
|
||
-
|
||
- // Check for headers option
|
||
- for ( i in s.headers ) {
|
||
- jqXHR.setRequestHeader( i, s.headers[ i ] );
|
||
- }
|
||
-
|
||
- // Allow custom headers/mimetypes and early abort
|
||
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
|
||
- // Abort if not done already
|
||
- jqXHR.abort();
|
||
- return false;
|
||
-
|
||
- }
|
||
-
|
||
- // Install callbacks on deferreds
|
||
- for ( i in { success: 1, error: 1, complete: 1 } ) {
|
||
- jqXHR[ i ]( s[ i ] );
|
||
- }
|
||
-
|
||
- // Get transport
|
||
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
||
-
|
||
- // If no transport, we auto-abort
|
||
- if ( !transport ) {
|
||
- done( -1, "No Transport" );
|
||
- } else {
|
||
- jqXHR.readyState = 1;
|
||
- // Send global event
|
||
- if ( fireGlobals ) {
|
||
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
|
||
- }
|
||
- // Timeout
|
||
- if ( s.async && s.timeout > 0 ) {
|
||
- timeoutTimer = setTimeout( function(){
|
||
- jqXHR.abort( "timeout" );
|
||
- }, s.timeout );
|
||
- }
|
||
-
|
||
- try {
|
||
- state = 1;
|
||
- transport.send( requestHeaders, done );
|
||
- } catch (e) {
|
||
- // Propagate exception as error if not done
|
||
- if ( state < 2 ) {
|
||
- done( -1, e );
|
||
- // Simply rethrow otherwise
|
||
- } else {
|
||
- throw e;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return jqXHR;
|
||
- },
|
||
-
|
||
- // Serialize an array of form elements or a set of
|
||
- // key/values into a query string
|
||
- param: function( a, traditional ) {
|
||
- var s = [],
|
||
- add = function( key, value ) {
|
||
- // If value is a function, invoke it and return its value
|
||
- value = jQuery.isFunction( value ) ? value() : value;
|
||
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
|
||
- };
|
||
-
|
||
- // Set traditional to true for jQuery <= 1.3.2 behavior.
|
||
- if ( traditional === undefined ) {
|
||
- traditional = jQuery.ajaxSettings.traditional;
|
||
- }
|
||
-
|
||
- // If an array was passed in, assume that it is an array of form elements.
|
||
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
||
- // Serialize the form elements
|
||
- jQuery.each( a, function() {
|
||
- add( this.name, this.value );
|
||
- });
|
||
-
|
||
- } else {
|
||
- // If traditional, encode the "old" way (the way 1.3.2 or older
|
||
- // did it), otherwise encode params recursively.
|
||
- for ( var prefix in a ) {
|
||
- buildParams( prefix, a[ prefix ], traditional, add );
|
||
- }
|
||
- }
|
||
-
|
||
- // Return the resulting serialization
|
||
- return s.join( "&" ).replace( r20, "+" );
|
||
- }
|
||
-});
|
||
-
|
||
-function buildParams( prefix, obj, traditional, add ) {
|
||
- if ( jQuery.isArray( obj ) ) {
|
||
- // Serialize array item.
|
||
- jQuery.each( obj, function( i, v ) {
|
||
- if ( traditional || rbracket.test( prefix ) ) {
|
||
- // Treat each array item as a scalar.
|
||
- add( prefix, v );
|
||
-
|
||
- } else {
|
||
- // If array item is non-scalar (array or object), encode its
|
||
- // numeric index to resolve deserialization ambiguity issues.
|
||
- // Note that rack (as of 1.0.0) can't currently deserialize
|
||
- // nested arrays properly, and attempting to do so may cause
|
||
- // a server error. Possible fixes are to modify rack's
|
||
- // deserialization algorithm or to provide an option or flag
|
||
- // to force array serialization to be shallow.
|
||
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
|
||
- }
|
||
- });
|
||
-
|
||
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
|
||
- // Serialize object item.
|
||
- for ( var name in obj ) {
|
||
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
||
- }
|
||
-
|
||
- } else {
|
||
- // Serialize scalar item.
|
||
- add( prefix, obj );
|
||
- }
|
||
-}
|
||
-
|
||
-// This is still on the jQuery object... for now
|
||
-// Want to move this to jQuery.ajax some day
|
||
-jQuery.extend({
|
||
-
|
||
- // Counter for holding the number of active queries
|
||
- active: 0,
|
||
-
|
||
- // Last-Modified header cache for next request
|
||
- lastModified: {},
|
||
- etag: {}
|
||
-
|
||
-});
|
||
-
|
||
-/* Handles responses to an ajax request:
|
||
- * - sets all responseXXX fields accordingly
|
||
- * - finds the right dataType (mediates between content-type and expected dataType)
|
||
- * - returns the corresponding response
|
||
- */
|
||
-function ajaxHandleResponses( s, jqXHR, responses ) {
|
||
-
|
||
- var contents = s.contents,
|
||
- dataTypes = s.dataTypes,
|
||
- responseFields = s.responseFields,
|
||
- ct,
|
||
- type,
|
||
- finalDataType,
|
||
- firstDataType;
|
||
-
|
||
- // Fill responseXXX fields
|
||
- for ( type in responseFields ) {
|
||
- if ( type in responses ) {
|
||
- jqXHR[ responseFields[type] ] = responses[ type ];
|
||
- }
|
||
- }
|
||
-
|
||
- // Remove auto dataType and get content-type in the process
|
||
- while( dataTypes[ 0 ] === "*" ) {
|
||
- dataTypes.shift();
|
||
- if ( ct === undefined ) {
|
||
- ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
|
||
- }
|
||
- }
|
||
-
|
||
- // Check if we're dealing with a known content-type
|
||
- if ( ct ) {
|
||
- for ( type in contents ) {
|
||
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
|
||
- dataTypes.unshift( type );
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Check to see if we have a response for the expected dataType
|
||
- if ( dataTypes[ 0 ] in responses ) {
|
||
- finalDataType = dataTypes[ 0 ];
|
||
- } else {
|
||
- // Try convertible dataTypes
|
||
- for ( type in responses ) {
|
||
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
|
||
- finalDataType = type;
|
||
- break;
|
||
- }
|
||
- if ( !firstDataType ) {
|
||
- firstDataType = type;
|
||
- }
|
||
- }
|
||
- // Or just use first one
|
||
- finalDataType = finalDataType || firstDataType;
|
||
- }
|
||
-
|
||
- // If we found a dataType
|
||
- // We add the dataType to the list if needed
|
||
- // and return the corresponding response
|
||
- if ( finalDataType ) {
|
||
- if ( finalDataType !== dataTypes[ 0 ] ) {
|
||
- dataTypes.unshift( finalDataType );
|
||
- }
|
||
- return responses[ finalDataType ];
|
||
- }
|
||
-}
|
||
-
|
||
-// Chain conversions given the request and the original response
|
||
-function ajaxConvert( s, response ) {
|
||
-
|
||
- // Apply the dataFilter if provided
|
||
- if ( s.dataFilter ) {
|
||
- response = s.dataFilter( response, s.dataType );
|
||
- }
|
||
-
|
||
- var dataTypes = s.dataTypes,
|
||
- converters = {},
|
||
- i,
|
||
- key,
|
||
- length = dataTypes.length,
|
||
- tmp,
|
||
- // Current and previous dataTypes
|
||
- current = dataTypes[ 0 ],
|
||
- prev,
|
||
- // Conversion expression
|
||
- conversion,
|
||
- // Conversion function
|
||
- conv,
|
||
- // Conversion functions (transitive conversion)
|
||
- conv1,
|
||
- conv2;
|
||
-
|
||
- // For each dataType in the chain
|
||
- for ( i = 1; i < length; i++ ) {
|
||
-
|
||
- // Create converters map
|
||
- // with lowercased keys
|
||
- if ( i === 1 ) {
|
||
- for ( key in s.converters ) {
|
||
- if ( typeof key === "string" ) {
|
||
- converters[ key.toLowerCase() ] = s.converters[ key ];
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Get the dataTypes
|
||
- prev = current;
|
||
- current = dataTypes[ i ];
|
||
-
|
||
- // If current is auto dataType, update it to prev
|
||
- if ( current === "*" ) {
|
||
- current = prev;
|
||
- // If no auto and dataTypes are actually different
|
||
- } else if ( prev !== "*" && prev !== current ) {
|
||
-
|
||
- // Get the converter
|
||
- conversion = prev + " " + current;
|
||
- conv = converters[ conversion ] || converters[ "* " + current ];
|
||
-
|
||
- // If there is no direct converter, search transitively
|
||
- if ( !conv ) {
|
||
- conv2 = undefined;
|
||
- for ( conv1 in converters ) {
|
||
- tmp = conv1.split( " " );
|
||
- if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
|
||
- conv2 = converters[ tmp[1] + " " + current ];
|
||
- if ( conv2 ) {
|
||
- conv1 = converters[ conv1 ];
|
||
- if ( conv1 === true ) {
|
||
- conv = conv2;
|
||
- } else if ( conv2 === true ) {
|
||
- conv = conv1;
|
||
- }
|
||
- break;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- // If we found no converter, dispatch an error
|
||
- if ( !( conv || conv2 ) ) {
|
||
- jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
|
||
- }
|
||
- // If found converter is not an equivalence
|
||
- if ( conv !== true ) {
|
||
- // Convert with 1 or 2 converters accordingly
|
||
- response = conv ? conv( response ) : conv2( conv1(response) );
|
||
- }
|
||
- }
|
||
- }
|
||
- return response;
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var jsc = jQuery.now(),
|
||
- jsre = /(\=)\?(&|$)|\?\?/i;
|
||
-
|
||
-// Default jsonp settings
|
||
-jQuery.ajaxSetup({
|
||
- jsonp: "callback",
|
||
- jsonpCallback: function() {
|
||
- return jQuery.expando + "_" + ( jsc++ );
|
||
- }
|
||
-});
|
||
-
|
||
-// Detect, normalize options and install callbacks for jsonp requests
|
||
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
|
||
-
|
||
- var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
|
||
- ( typeof s.data === "string" );
|
||
-
|
||
- if ( s.dataTypes[ 0 ] === "jsonp" ||
|
||
- s.jsonp !== false && ( jsre.test( s.url ) ||
|
||
- inspectData && jsre.test( s.data ) ) ) {
|
||
-
|
||
- var responseContainer,
|
||
- jsonpCallback = s.jsonpCallback =
|
||
- jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
|
||
- previous = window[ jsonpCallback ],
|
||
- url = s.url,
|
||
- data = s.data,
|
||
- replace = "$1" + jsonpCallback + "$2";
|
||
-
|
||
- if ( s.jsonp !== false ) {
|
||
- url = url.replace( jsre, replace );
|
||
- if ( s.url === url ) {
|
||
- if ( inspectData ) {
|
||
- data = data.replace( jsre, replace );
|
||
- }
|
||
- if ( s.data === data ) {
|
||
- // Add callback manually
|
||
- url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- s.url = url;
|
||
- s.data = data;
|
||
-
|
||
- // Install callback
|
||
- window[ jsonpCallback ] = function( response ) {
|
||
- responseContainer = [ response ];
|
||
- };
|
||
-
|
||
- // Clean-up function
|
||
- jqXHR.always(function() {
|
||
- // Set callback back to previous value
|
||
- window[ jsonpCallback ] = previous;
|
||
- // Call if it was a function and we have a response
|
||
- if ( responseContainer && jQuery.isFunction( previous ) ) {
|
||
- window[ jsonpCallback ]( responseContainer[ 0 ] );
|
||
- }
|
||
- });
|
||
-
|
||
- // Use data converter to retrieve json after script execution
|
||
- s.converters["script json"] = function() {
|
||
- if ( !responseContainer ) {
|
||
- jQuery.error( jsonpCallback + " was not called" );
|
||
- }
|
||
- return responseContainer[ 0 ];
|
||
- };
|
||
-
|
||
- // force json dataType
|
||
- s.dataTypes[ 0 ] = "json";
|
||
-
|
||
- // Delegate to script
|
||
- return "script";
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-// Install script dataType
|
||
-jQuery.ajaxSetup({
|
||
- accepts: {
|
||
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
|
||
- },
|
||
- contents: {
|
||
- script: /javascript|ecmascript/
|
||
- },
|
||
- converters: {
|
||
- "text script": function( text ) {
|
||
- jQuery.globalEval( text );
|
||
- return text;
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-// Handle cache's special case and global
|
||
-jQuery.ajaxPrefilter( "script", function( s ) {
|
||
- if ( s.cache === undefined ) {
|
||
- s.cache = false;
|
||
- }
|
||
- if ( s.crossDomain ) {
|
||
- s.type = "GET";
|
||
- s.global = false;
|
||
- }
|
||
-});
|
||
-
|
||
-// Bind script tag hack transport
|
||
-jQuery.ajaxTransport( "script", function(s) {
|
||
-
|
||
- // This transport only deals with cross domain requests
|
||
- if ( s.crossDomain ) {
|
||
-
|
||
- var script,
|
||
- head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
|
||
-
|
||
- return {
|
||
-
|
||
- send: function( _, callback ) {
|
||
-
|
||
- script = document.createElement( "script" );
|
||
-
|
||
- script.async = "async";
|
||
-
|
||
- if ( s.scriptCharset ) {
|
||
- script.charset = s.scriptCharset;
|
||
- }
|
||
-
|
||
- script.src = s.url;
|
||
-
|
||
- // Attach handlers for all browsers
|
||
- script.onload = script.onreadystatechange = function( _, isAbort ) {
|
||
-
|
||
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
|
||
-
|
||
- // Handle memory leak in IE
|
||
- script.onload = script.onreadystatechange = null;
|
||
-
|
||
- // Remove the script
|
||
- if ( head && script.parentNode ) {
|
||
- head.removeChild( script );
|
||
- }
|
||
-
|
||
- // Dereference the script
|
||
- script = undefined;
|
||
-
|
||
- // Callback if not abort
|
||
- if ( !isAbort ) {
|
||
- callback( 200, "success" );
|
||
- }
|
||
- }
|
||
- };
|
||
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
|
||
- // This arises when a base node is used (#2709 and #4378).
|
||
- head.insertBefore( script, head.firstChild );
|
||
- },
|
||
-
|
||
- abort: function() {
|
||
- if ( script ) {
|
||
- script.onload( 0, 1 );
|
||
- }
|
||
- }
|
||
- };
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
|
||
- xhrOnUnloadAbort = window.ActiveXObject ? function() {
|
||
- // Abort all pending requests
|
||
- for ( var key in xhrCallbacks ) {
|
||
- xhrCallbacks[ key ]( 0, 1 );
|
||
- }
|
||
- } : false,
|
||
- xhrId = 0,
|
||
- xhrCallbacks;
|
||
-
|
||
-// Functions to create xhrs
|
||
-function createStandardXHR() {
|
||
- try {
|
||
- return new window.XMLHttpRequest();
|
||
- } catch( e ) {}
|
||
-}
|
||
-
|
||
-function createActiveXHR() {
|
||
- try {
|
||
- return new window.ActiveXObject( "Microsoft.XMLHTTP" );
|
||
- } catch( e ) {}
|
||
-}
|
||
-
|
||
-// Create the request object
|
||
-// (This is still attached to ajaxSettings for backward compatibility)
|
||
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
|
||
- /* Microsoft failed to properly
|
||
- * implement the XMLHttpRequest in IE7 (can't request local files),
|
||
- * so we use the ActiveXObject when it is available
|
||
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
|
||
- * we need a fallback.
|
||
- */
|
||
- function() {
|
||
- return !this.isLocal && createStandardXHR() || createActiveXHR();
|
||
- } :
|
||
- // For all other browsers, use the standard XMLHttpRequest object
|
||
- createStandardXHR;
|
||
-
|
||
-// Determine support properties
|
||
-(function( xhr ) {
|
||
- jQuery.extend( jQuery.support, {
|
||
- ajax: !!xhr,
|
||
- cors: !!xhr && ( "withCredentials" in xhr )
|
||
- });
|
||
-})( jQuery.ajaxSettings.xhr() );
|
||
-
|
||
-// Create transport if the browser can provide an xhr
|
||
-if ( jQuery.support.ajax ) {
|
||
-
|
||
- jQuery.ajaxTransport(function( s ) {
|
||
- // Cross domain only allowed if supported through XMLHttpRequest
|
||
- if ( !s.crossDomain || jQuery.support.cors ) {
|
||
-
|
||
- var callback;
|
||
-
|
||
- return {
|
||
- send: function( headers, complete ) {
|
||
-
|
||
- // Get a new xhr
|
||
- var xhr = s.xhr(),
|
||
- handle,
|
||
- i;
|
||
-
|
||
- // Open the socket
|
||
- // Passing null username, generates a login popup on Opera (#2865)
|
||
- if ( s.username ) {
|
||
- xhr.open( s.type, s.url, s.async, s.username, s.password );
|
||
- } else {
|
||
- xhr.open( s.type, s.url, s.async );
|
||
- }
|
||
-
|
||
- // Apply custom fields if provided
|
||
- if ( s.xhrFields ) {
|
||
- for ( i in s.xhrFields ) {
|
||
- xhr[ i ] = s.xhrFields[ i ];
|
||
- }
|
||
- }
|
||
-
|
||
- // Override mime type if needed
|
||
- if ( s.mimeType && xhr.overrideMimeType ) {
|
||
- xhr.overrideMimeType( s.mimeType );
|
||
- }
|
||
-
|
||
- // X-Requested-With header
|
||
- // For cross-domain requests, seeing as conditions for a preflight are
|
||
- // akin to a jigsaw puzzle, we simply never set it to be sure.
|
||
- // (it can always be set on a per-request basis or even using ajaxSetup)
|
||
- // For same-domain requests, won't change header if already provided.
|
||
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
|
||
- headers[ "X-Requested-With" ] = "XMLHttpRequest";
|
||
- }
|
||
-
|
||
- // Need an extra try/catch for cross domain requests in Firefox 3
|
||
- try {
|
||
- for ( i in headers ) {
|
||
- xhr.setRequestHeader( i, headers[ i ] );
|
||
- }
|
||
- } catch( _ ) {}
|
||
-
|
||
- // Do send the request
|
||
- // This may raise an exception which is actually
|
||
- // handled in jQuery.ajax (so no try/catch here)
|
||
- xhr.send( ( s.hasContent && s.data ) || null );
|
||
-
|
||
- // Listener
|
||
- callback = function( _, isAbort ) {
|
||
-
|
||
- var status,
|
||
- statusText,
|
||
- responseHeaders,
|
||
- responses,
|
||
- xml;
|
||
-
|
||
- // Firefox throws exceptions when accessing properties
|
||
- // of an xhr when a network error occured
|
||
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
|
||
- try {
|
||
-
|
||
- // Was never called and is aborted or complete
|
||
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
|
||
-
|
||
- // Only called once
|
||
- callback = undefined;
|
||
-
|
||
- // Do not keep as active anymore
|
||
- if ( handle ) {
|
||
- xhr.onreadystatechange = jQuery.noop;
|
||
- if ( xhrOnUnloadAbort ) {
|
||
- delete xhrCallbacks[ handle ];
|
||
- }
|
||
- }
|
||
-
|
||
- // If it's an abort
|
||
- if ( isAbort ) {
|
||
- // Abort it manually if needed
|
||
- if ( xhr.readyState !== 4 ) {
|
||
- xhr.abort();
|
||
- }
|
||
- } else {
|
||
- status = xhr.status;
|
||
- responseHeaders = xhr.getAllResponseHeaders();
|
||
- responses = {};
|
||
- xml = xhr.responseXML;
|
||
-
|
||
- // Construct response list
|
||
- if ( xml && xml.documentElement /* #4958 */ ) {
|
||
- responses.xml = xml;
|
||
- }
|
||
- responses.text = xhr.responseText;
|
||
-
|
||
- // Firefox throws an exception when accessing
|
||
- // statusText for faulty cross-domain requests
|
||
- try {
|
||
- statusText = xhr.statusText;
|
||
- } catch( e ) {
|
||
- // We normalize with Webkit giving an empty statusText
|
||
- statusText = "";
|
||
- }
|
||
-
|
||
- // Filter status for non standard behaviors
|
||
-
|
||
- // If the request is local and we have data: assume a success
|
||
- // (success with no data won't get notified, that's the best we
|
||
- // can do given current implementations)
|
||
- if ( !status && s.isLocal && !s.crossDomain ) {
|
||
- status = responses.text ? 200 : 404;
|
||
- // IE - #1450: sometimes returns 1223 when it should be 204
|
||
- } else if ( status === 1223 ) {
|
||
- status = 204;
|
||
- }
|
||
- }
|
||
- }
|
||
- } catch( firefoxAccessException ) {
|
||
- if ( !isAbort ) {
|
||
- complete( -1, firefoxAccessException );
|
||
- }
|
||
- }
|
||
-
|
||
- // Call complete if needed
|
||
- if ( responses ) {
|
||
- complete( status, statusText, responses, responseHeaders );
|
||
- }
|
||
- };
|
||
-
|
||
- // if we're in sync mode or it's in cache
|
||
- // and has been retrieved directly (IE6 & IE7)
|
||
- // we need to manually fire the callback
|
||
- if ( !s.async || xhr.readyState === 4 ) {
|
||
- callback();
|
||
- } else {
|
||
- handle = ++xhrId;
|
||
- if ( xhrOnUnloadAbort ) {
|
||
- // Create the active xhrs callbacks list if needed
|
||
- // and attach the unload handler
|
||
- if ( !xhrCallbacks ) {
|
||
- xhrCallbacks = {};
|
||
- jQuery( window ).unload( xhrOnUnloadAbort );
|
||
- }
|
||
- // Add to list of active xhrs callbacks
|
||
- xhrCallbacks[ handle ] = callback;
|
||
- }
|
||
- xhr.onreadystatechange = callback;
|
||
- }
|
||
- },
|
||
-
|
||
- abort: function() {
|
||
- if ( callback ) {
|
||
- callback(0,1);
|
||
- }
|
||
- }
|
||
- };
|
||
- }
|
||
- });
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var elemdisplay = {},
|
||
- iframe, iframeDoc,
|
||
- rfxtypes = /^(?:toggle|show|hide)$/,
|
||
- rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
|
||
- timerId,
|
||
- fxAttrs = [
|
||
- // height animations
|
||
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
|
||
- // width animations
|
||
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
|
||
- // opacity animations
|
||
- [ "opacity" ]
|
||
- ],
|
||
- fxNow;
|
||
-
|
||
-jQuery.fn.extend({
|
||
- show: function( speed, easing, callback ) {
|
||
- var elem, display;
|
||
-
|
||
- if ( speed || speed === 0 ) {
|
||
- return this.animate( genFx("show", 3), speed, easing, callback );
|
||
-
|
||
- } else {
|
||
- for ( var i = 0, j = this.length; i < j; i++ ) {
|
||
- elem = this[ i ];
|
||
-
|
||
- if ( elem.style ) {
|
||
- display = elem.style.display;
|
||
-
|
||
- // Reset the inline display of this element to learn if it is
|
||
- // being hidden by cascaded rules or not
|
||
- if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
|
||
- display = elem.style.display = "";
|
||
- }
|
||
-
|
||
- // Set elements which have been overridden with display: none
|
||
- // in a stylesheet to whatever the default browser style is
|
||
- // for such an element
|
||
- if ( display === "" && jQuery.css(elem, "display") === "none" ) {
|
||
- jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Set the display of most of the elements in a second loop
|
||
- // to avoid the constant reflow
|
||
- for ( i = 0; i < j; i++ ) {
|
||
- elem = this[ i ];
|
||
-
|
||
- if ( elem.style ) {
|
||
- display = elem.style.display;
|
||
-
|
||
- if ( display === "" || display === "none" ) {
|
||
- elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- }
|
||
- },
|
||
-
|
||
- hide: function( speed, easing, callback ) {
|
||
- if ( speed || speed === 0 ) {
|
||
- return this.animate( genFx("hide", 3), speed, easing, callback);
|
||
-
|
||
- } else {
|
||
- var elem, display,
|
||
- i = 0,
|
||
- j = this.length;
|
||
-
|
||
- for ( ; i < j; i++ ) {
|
||
- elem = this[i];
|
||
- if ( elem.style ) {
|
||
- display = jQuery.css( elem, "display" );
|
||
-
|
||
- if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
|
||
- jQuery._data( elem, "olddisplay", display );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // Set the display of the elements in a second loop
|
||
- // to avoid the constant reflow
|
||
- for ( i = 0; i < j; i++ ) {
|
||
- if ( this[i].style ) {
|
||
- this[i].style.display = "none";
|
||
- }
|
||
- }
|
||
-
|
||
- return this;
|
||
- }
|
||
- },
|
||
-
|
||
- // Save the old toggle function
|
||
- _toggle: jQuery.fn.toggle,
|
||
-
|
||
- toggle: function( fn, fn2, callback ) {
|
||
- var bool = typeof fn === "boolean";
|
||
-
|
||
- if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
|
||
- this._toggle.apply( this, arguments );
|
||
-
|
||
- } else if ( fn == null || bool ) {
|
||
- this.each(function() {
|
||
- var state = bool ? fn : jQuery(this).is(":hidden");
|
||
- jQuery(this)[ state ? "show" : "hide" ]();
|
||
- });
|
||
-
|
||
- } else {
|
||
- this.animate(genFx("toggle", 3), fn, fn2, callback);
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- fadeTo: function( speed, to, easing, callback ) {
|
||
- return this.filter(":hidden").css("opacity", 0).show().end()
|
||
- .animate({opacity: to}, speed, easing, callback);
|
||
- },
|
||
-
|
||
- animate: function( prop, speed, easing, callback ) {
|
||
- var optall = jQuery.speed( speed, easing, callback );
|
||
-
|
||
- if ( jQuery.isEmptyObject( prop ) ) {
|
||
- return this.each( optall.complete, [ false ] );
|
||
- }
|
||
-
|
||
- // Do not change referenced properties as per-property easing will be lost
|
||
- prop = jQuery.extend( {}, prop );
|
||
-
|
||
- function doAnimation() {
|
||
- // XXX 'this' does not always have a nodeName when running the
|
||
- // test suite
|
||
-
|
||
- if ( optall.queue === false ) {
|
||
- jQuery._mark( this );
|
||
- }
|
||
-
|
||
- var opt = jQuery.extend( {}, optall ),
|
||
- isElement = this.nodeType === 1,
|
||
- hidden = isElement && jQuery(this).is(":hidden"),
|
||
- name, val, p, e,
|
||
- parts, start, end, unit,
|
||
- method;
|
||
-
|
||
- // will store per property easing and be used to determine when an animation is complete
|
||
- opt.animatedProperties = {};
|
||
-
|
||
- for ( p in prop ) {
|
||
-
|
||
- // property name normalization
|
||
- name = jQuery.camelCase( p );
|
||
- if ( p !== name ) {
|
||
- prop[ name ] = prop[ p ];
|
||
- delete prop[ p ];
|
||
- }
|
||
-
|
||
- val = prop[ name ];
|
||
-
|
||
- // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
|
||
- if ( jQuery.isArray( val ) ) {
|
||
- opt.animatedProperties[ name ] = val[ 1 ];
|
||
- val = prop[ name ] = val[ 0 ];
|
||
- } else {
|
||
- opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
|
||
- }
|
||
-
|
||
- if ( val === "hide" && hidden || val === "show" && !hidden ) {
|
||
- return opt.complete.call( this );
|
||
- }
|
||
-
|
||
- if ( isElement && ( name === "height" || name === "width" ) ) {
|
||
- // Make sure that nothing sneaks out
|
||
- // Record all 3 overflow attributes because IE does not
|
||
- // change the overflow attribute when overflowX and
|
||
- // overflowY are set to the same value
|
||
- opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
|
||
-
|
||
- // Set display property to inline-block for height/width
|
||
- // animations on inline elements that are having width/height animated
|
||
- if ( jQuery.css( this, "display" ) === "inline" &&
|
||
- jQuery.css( this, "float" ) === "none" ) {
|
||
-
|
||
- // inline-level elements accept inline-block;
|
||
- // block-level elements need to be inline with layout
|
||
- if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
|
||
- this.style.display = "inline-block";
|
||
-
|
||
- } else {
|
||
- this.style.zoom = 1;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- if ( opt.overflow != null ) {
|
||
- this.style.overflow = "hidden";
|
||
- }
|
||
-
|
||
- for ( p in prop ) {
|
||
- e = new jQuery.fx( this, opt, p );
|
||
- val = prop[ p ];
|
||
-
|
||
- if ( rfxtypes.test( val ) ) {
|
||
-
|
||
- // Tracks whether to show or hide based on private
|
||
- // data attached to the element
|
||
- method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
|
||
- if ( method ) {
|
||
- jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
|
||
- e[ method ]();
|
||
- } else {
|
||
- e[ val ]();
|
||
- }
|
||
-
|
||
- } else {
|
||
- parts = rfxnum.exec( val );
|
||
- start = e.cur();
|
||
-
|
||
- if ( parts ) {
|
||
- end = parseFloat( parts[2] );
|
||
- unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
|
||
-
|
||
- // We need to compute starting value
|
||
- if ( unit !== "px" ) {
|
||
- jQuery.style( this, p, (end || 1) + unit);
|
||
- start = ( (end || 1) / e.cur() ) * start;
|
||
- jQuery.style( this, p, start + unit);
|
||
- }
|
||
-
|
||
- // If a +=/-= token was provided, we're doing a relative animation
|
||
- if ( parts[1] ) {
|
||
- end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
|
||
- }
|
||
-
|
||
- e.custom( start, end, unit );
|
||
-
|
||
- } else {
|
||
- e.custom( start, val, "" );
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // For JS strict compliance
|
||
- return true;
|
||
- }
|
||
-
|
||
- return optall.queue === false ?
|
||
- this.each( doAnimation ) :
|
||
- this.queue( optall.queue, doAnimation );
|
||
- },
|
||
-
|
||
- stop: function( type, clearQueue, gotoEnd ) {
|
||
- if ( typeof type !== "string" ) {
|
||
- gotoEnd = clearQueue;
|
||
- clearQueue = type;
|
||
- type = undefined;
|
||
- }
|
||
- if ( clearQueue && type !== false ) {
|
||
- this.queue( type || "fx", [] );
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- var index,
|
||
- hadTimers = false,
|
||
- timers = jQuery.timers,
|
||
- data = jQuery._data( this );
|
||
-
|
||
- // clear marker counters if we know they won't be
|
||
- if ( !gotoEnd ) {
|
||
- jQuery._unmark( true, this );
|
||
- }
|
||
-
|
||
- function stopQueue( elem, data, index ) {
|
||
- var hooks = data[ index ];
|
||
- jQuery.removeData( elem, index, true );
|
||
- hooks.stop( gotoEnd );
|
||
- }
|
||
-
|
||
- if ( type == null ) {
|
||
- for ( index in data ) {
|
||
- if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
|
||
- stopQueue( this, data, index );
|
||
- }
|
||
- }
|
||
- } else if ( data[ index = type + ".run" ] && data[ index ].stop ){
|
||
- stopQueue( this, data, index );
|
||
- }
|
||
-
|
||
- for ( index = timers.length; index--; ) {
|
||
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
|
||
- if ( gotoEnd ) {
|
||
-
|
||
- // force the next step to be the last
|
||
- timers[ index ]( true );
|
||
- } else {
|
||
- timers[ index ].saveState();
|
||
- }
|
||
- hadTimers = true;
|
||
- timers.splice( index, 1 );
|
||
- }
|
||
- }
|
||
-
|
||
- // start the next in the queue if the last step wasn't forced
|
||
- // timers currently will call their complete callbacks, which will dequeue
|
||
- // but only if they were gotoEnd
|
||
- if ( !( gotoEnd && hadTimers ) ) {
|
||
- jQuery.dequeue( this, type );
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-// Animations created synchronously will run synchronously
|
||
-function createFxNow() {
|
||
- setTimeout( clearFxNow, 0 );
|
||
- return ( fxNow = jQuery.now() );
|
||
-}
|
||
-
|
||
-function clearFxNow() {
|
||
- fxNow = undefined;
|
||
-}
|
||
-
|
||
-// Generate parameters to create a standard animation
|
||
-function genFx( type, num ) {
|
||
- var obj = {};
|
||
-
|
||
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
|
||
- obj[ this ] = type;
|
||
- });
|
||
-
|
||
- return obj;
|
||
-}
|
||
-
|
||
-// Generate shortcuts for custom animations
|
||
-jQuery.each({
|
||
- slideDown: genFx( "show", 1 ),
|
||
- slideUp: genFx( "hide", 1 ),
|
||
- slideToggle: genFx( "toggle", 1 ),
|
||
- fadeIn: { opacity: "show" },
|
||
- fadeOut: { opacity: "hide" },
|
||
- fadeToggle: { opacity: "toggle" }
|
||
-}, function( name, props ) {
|
||
- jQuery.fn[ name ] = function( speed, easing, callback ) {
|
||
- return this.animate( props, speed, easing, callback );
|
||
- };
|
||
-});
|
||
-
|
||
-jQuery.extend({
|
||
- speed: function( speed, easing, fn ) {
|
||
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
|
||
- complete: fn || !fn && easing ||
|
||
- jQuery.isFunction( speed ) && speed,
|
||
- duration: speed,
|
||
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
|
||
- };
|
||
-
|
||
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
|
||
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
|
||
-
|
||
- // normalize opt.queue - true/undefined/null -> "fx"
|
||
- if ( opt.queue == null || opt.queue === true ) {
|
||
- opt.queue = "fx";
|
||
- }
|
||
-
|
||
- // Queueing
|
||
- opt.old = opt.complete;
|
||
-
|
||
- opt.complete = function( noUnmark ) {
|
||
- if ( jQuery.isFunction( opt.old ) ) {
|
||
- opt.old.call( this );
|
||
- }
|
||
-
|
||
- if ( opt.queue ) {
|
||
- jQuery.dequeue( this, opt.queue );
|
||
- } else if ( noUnmark !== false ) {
|
||
- jQuery._unmark( this );
|
||
- }
|
||
- };
|
||
-
|
||
- return opt;
|
||
- },
|
||
-
|
||
- easing: {
|
||
- linear: function( p, n, firstNum, diff ) {
|
||
- return firstNum + diff * p;
|
||
- },
|
||
- swing: function( p, n, firstNum, diff ) {
|
||
- return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
|
||
- }
|
||
- },
|
||
-
|
||
- timers: [],
|
||
-
|
||
- fx: function( elem, options, prop ) {
|
||
- this.options = options;
|
||
- this.elem = elem;
|
||
- this.prop = prop;
|
||
-
|
||
- options.orig = options.orig || {};
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-jQuery.fx.prototype = {
|
||
- // Simple function for setting a style value
|
||
- update: function() {
|
||
- if ( this.options.step ) {
|
||
- this.options.step.call( this.elem, this.now, this );
|
||
- }
|
||
-
|
||
- ( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
|
||
- },
|
||
-
|
||
- // Get the current size
|
||
- cur: function() {
|
||
- if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
|
||
- return this.elem[ this.prop ];
|
||
- }
|
||
-
|
||
- var parsed,
|
||
- r = jQuery.css( this.elem, this.prop );
|
||
- // Empty strings, null, undefined and "auto" are converted to 0,
|
||
- // complex values such as "rotate(1rad)" are returned as is,
|
||
- // simple values such as "10px" are parsed to Float.
|
||
- return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
|
||
- },
|
||
-
|
||
- // Start an animation from one number to another
|
||
- custom: function( from, to, unit ) {
|
||
- var self = this,
|
||
- fx = jQuery.fx;
|
||
-
|
||
- this.startTime = fxNow || createFxNow();
|
||
- this.end = to;
|
||
- this.now = this.start = from;
|
||
- this.pos = this.state = 0;
|
||
- this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
|
||
-
|
||
- function t( gotoEnd ) {
|
||
- return self.step( gotoEnd );
|
||
- }
|
||
-
|
||
- t.queue = this.options.queue;
|
||
- t.elem = this.elem;
|
||
- t.saveState = function() {
|
||
- if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
|
||
- jQuery._data( self.elem, "fxshow" + self.prop, self.start );
|
||
- }
|
||
- };
|
||
-
|
||
- if ( t() && jQuery.timers.push(t) && !timerId ) {
|
||
- timerId = setInterval( fx.tick, fx.interval );
|
||
- }
|
||
- },
|
||
-
|
||
- // Simple 'show' function
|
||
- show: function() {
|
||
- var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
|
||
-
|
||
- // Remember where we started, so that we can go back to it later
|
||
- this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
|
||
- this.options.show = true;
|
||
-
|
||
- // Begin the animation
|
||
- // Make sure that we start at a small width/height to avoid any flash of content
|
||
- if ( dataShow !== undefined ) {
|
||
- // This show is picking up where a previous hide or show left off
|
||
- this.custom( this.cur(), dataShow );
|
||
- } else {
|
||
- this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
|
||
- }
|
||
-
|
||
- // Start by showing the element
|
||
- jQuery( this.elem ).show();
|
||
- },
|
||
-
|
||
- // Simple 'hide' function
|
||
- hide: function() {
|
||
- // Remember where we started, so that we can go back to it later
|
||
- this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
|
||
- this.options.hide = true;
|
||
-
|
||
- // Begin the animation
|
||
- this.custom( this.cur(), 0 );
|
||
- },
|
||
-
|
||
- // Each step of an animation
|
||
- step: function( gotoEnd ) {
|
||
- var p, n, complete,
|
||
- t = fxNow || createFxNow(),
|
||
- done = true,
|
||
- elem = this.elem,
|
||
- options = this.options;
|
||
-
|
||
- if ( gotoEnd || t >= options.duration + this.startTime ) {
|
||
- this.now = this.end;
|
||
- this.pos = this.state = 1;
|
||
- this.update();
|
||
-
|
||
- options.animatedProperties[ this.prop ] = true;
|
||
-
|
||
- for ( p in options.animatedProperties ) {
|
||
- if ( options.animatedProperties[ p ] !== true ) {
|
||
- done = false;
|
||
- }
|
||
- }
|
||
-
|
||
- if ( done ) {
|
||
- // Reset the overflow
|
||
- if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
|
||
-
|
||
- jQuery.each( [ "", "X", "Y" ], function( index, value ) {
|
||
- elem.style[ "overflow" + value ] = options.overflow[ index ];
|
||
- });
|
||
- }
|
||
-
|
||
- // Hide the element if the "hide" operation was done
|
||
- if ( options.hide ) {
|
||
- jQuery( elem ).hide();
|
||
- }
|
||
-
|
||
- // Reset the properties, if the item has been hidden or shown
|
||
- if ( options.hide || options.show ) {
|
||
- for ( p in options.animatedProperties ) {
|
||
- jQuery.style( elem, p, options.orig[ p ] );
|
||
- jQuery.removeData( elem, "fxshow" + p, true );
|
||
- // Toggle data is no longer needed
|
||
- jQuery.removeData( elem, "toggle" + p, true );
|
||
- }
|
||
- }
|
||
-
|
||
- // Execute the complete function
|
||
- // in the event that the complete function throws an exception
|
||
- // we must ensure it won't be called twice. #5684
|
||
-
|
||
- complete = options.complete;
|
||
- if ( complete ) {
|
||
-
|
||
- options.complete = false;
|
||
- complete.call( elem );
|
||
- }
|
||
- }
|
||
-
|
||
- return false;
|
||
-
|
||
- } else {
|
||
- // classical easing cannot be used with an Infinity duration
|
||
- if ( options.duration == Infinity ) {
|
||
- this.now = t;
|
||
- } else {
|
||
- n = t - this.startTime;
|
||
- this.state = n / options.duration;
|
||
-
|
||
- // Perform the easing function, defaults to swing
|
||
- this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
|
||
- this.now = this.start + ( (this.end - this.start) * this.pos );
|
||
- }
|
||
- // Perform the next step of the animation
|
||
- this.update();
|
||
- }
|
||
-
|
||
- return true;
|
||
- }
|
||
-};
|
||
-
|
||
-jQuery.extend( jQuery.fx, {
|
||
- tick: function() {
|
||
- var timer,
|
||
- timers = jQuery.timers,
|
||
- i = 0;
|
||
-
|
||
- for ( ; i < timers.length; i++ ) {
|
||
- timer = timers[ i ];
|
||
- // Checks the timer has not already been removed
|
||
- if ( !timer() && timers[ i ] === timer ) {
|
||
- timers.splice( i--, 1 );
|
||
- }
|
||
- }
|
||
-
|
||
- if ( !timers.length ) {
|
||
- jQuery.fx.stop();
|
||
- }
|
||
- },
|
||
-
|
||
- interval: 13,
|
||
-
|
||
- stop: function() {
|
||
- clearInterval( timerId );
|
||
- timerId = null;
|
||
- },
|
||
-
|
||
- speeds: {
|
||
- slow: 600,
|
||
- fast: 200,
|
||
- // Default speed
|
||
- _default: 400
|
||
- },
|
||
-
|
||
- step: {
|
||
- opacity: function( fx ) {
|
||
- jQuery.style( fx.elem, "opacity", fx.now );
|
||
- },
|
||
-
|
||
- _default: function( fx ) {
|
||
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
|
||
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
|
||
- } else {
|
||
- fx.elem[ fx.prop ] = fx.now;
|
||
- }
|
||
- }
|
||
- }
|
||
-});
|
||
-
|
||
-// Adds width/height step functions
|
||
-// Do not set anything below 0
|
||
-jQuery.each([ "width", "height" ], function( i, prop ) {
|
||
- jQuery.fx.step[ prop ] = function( fx ) {
|
||
- jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
|
||
- };
|
||
-});
|
||
-
|
||
-if ( jQuery.expr && jQuery.expr.filters ) {
|
||
- jQuery.expr.filters.animated = function( elem ) {
|
||
- return jQuery.grep(jQuery.timers, function( fn ) {
|
||
- return elem === fn.elem;
|
||
- }).length;
|
||
- };
|
||
-}
|
||
-
|
||
-// Try to restore the default display value of an element
|
||
-function defaultDisplay( nodeName ) {
|
||
-
|
||
- if ( !elemdisplay[ nodeName ] ) {
|
||
-
|
||
- var body = document.body,
|
||
- elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
|
||
- display = elem.css( "display" );
|
||
- elem.remove();
|
||
-
|
||
- // If the simple way fails,
|
||
- // get element's real default display by attaching it to a temp iframe
|
||
- if ( display === "none" || display === "" ) {
|
||
- // No iframe to use yet, so create it
|
||
- if ( !iframe ) {
|
||
- iframe = document.createElement( "iframe" );
|
||
- iframe.frameBorder = iframe.width = iframe.height = 0;
|
||
- }
|
||
-
|
||
- body.appendChild( iframe );
|
||
-
|
||
- // Create a cacheable copy of the iframe document on first call.
|
||
- // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
|
||
- // document to it; WebKit & Firefox won't allow reusing the iframe document.
|
||
- if ( !iframeDoc || !iframe.createElement ) {
|
||
- iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
|
||
- iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
|
||
- iframeDoc.close();
|
||
- }
|
||
-
|
||
- elem = iframeDoc.createElement( nodeName );
|
||
-
|
||
- iframeDoc.body.appendChild( elem );
|
||
-
|
||
- display = jQuery.css( elem, "display" );
|
||
- body.removeChild( iframe );
|
||
- }
|
||
-
|
||
- // Store the correct default display
|
||
- elemdisplay[ nodeName ] = display;
|
||
- }
|
||
-
|
||
- return elemdisplay[ nodeName ];
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-var rtable = /^t(?:able|d|h)$/i,
|
||
- rroot = /^(?:body|html)$/i;
|
||
-
|
||
-if ( "getBoundingClientRect" in document.documentElement ) {
|
||
- jQuery.fn.offset = function( options ) {
|
||
- var elem = this[0], box;
|
||
-
|
||
- if ( options ) {
|
||
- return this.each(function( i ) {
|
||
- jQuery.offset.setOffset( this, options, i );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( !elem || !elem.ownerDocument ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- if ( elem === elem.ownerDocument.body ) {
|
||
- return jQuery.offset.bodyOffset( elem );
|
||
- }
|
||
-
|
||
- try {
|
||
- box = elem.getBoundingClientRect();
|
||
- } catch(e) {}
|
||
-
|
||
- var doc = elem.ownerDocument,
|
||
- docElem = doc.documentElement;
|
||
-
|
||
- // Make sure we're not dealing with a disconnected DOM node
|
||
- if ( !box || !jQuery.contains( docElem, elem ) ) {
|
||
- return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
|
||
- }
|
||
-
|
||
- var body = doc.body,
|
||
- win = getWindow(doc),
|
||
- clientTop = docElem.clientTop || body.clientTop || 0,
|
||
- clientLeft = docElem.clientLeft || body.clientLeft || 0,
|
||
- scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
|
||
- scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
|
||
- top = box.top + scrollTop - clientTop,
|
||
- left = box.left + scrollLeft - clientLeft;
|
||
-
|
||
- return { top: top, left: left };
|
||
- };
|
||
-
|
||
-} else {
|
||
- jQuery.fn.offset = function( options ) {
|
||
- var elem = this[0];
|
||
-
|
||
- if ( options ) {
|
||
- return this.each(function( i ) {
|
||
- jQuery.offset.setOffset( this, options, i );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( !elem || !elem.ownerDocument ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- if ( elem === elem.ownerDocument.body ) {
|
||
- return jQuery.offset.bodyOffset( elem );
|
||
- }
|
||
-
|
||
- var computedStyle,
|
||
- offsetParent = elem.offsetParent,
|
||
- prevOffsetParent = elem,
|
||
- doc = elem.ownerDocument,
|
||
- docElem = doc.documentElement,
|
||
- body = doc.body,
|
||
- defaultView = doc.defaultView,
|
||
- prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
|
||
- top = elem.offsetTop,
|
||
- left = elem.offsetLeft;
|
||
-
|
||
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
|
||
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
|
||
- break;
|
||
- }
|
||
-
|
||
- computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
|
||
- top -= elem.scrollTop;
|
||
- left -= elem.scrollLeft;
|
||
-
|
||
- if ( elem === offsetParent ) {
|
||
- top += elem.offsetTop;
|
||
- left += elem.offsetLeft;
|
||
-
|
||
- if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
|
||
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
|
||
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
|
||
- }
|
||
-
|
||
- prevOffsetParent = offsetParent;
|
||
- offsetParent = elem.offsetParent;
|
||
- }
|
||
-
|
||
- if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
|
||
- top += parseFloat( computedStyle.borderTopWidth ) || 0;
|
||
- left += parseFloat( computedStyle.borderLeftWidth ) || 0;
|
||
- }
|
||
-
|
||
- prevComputedStyle = computedStyle;
|
||
- }
|
||
-
|
||
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
|
||
- top += body.offsetTop;
|
||
- left += body.offsetLeft;
|
||
- }
|
||
-
|
||
- if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
|
||
- top += Math.max( docElem.scrollTop, body.scrollTop );
|
||
- left += Math.max( docElem.scrollLeft, body.scrollLeft );
|
||
- }
|
||
-
|
||
- return { top: top, left: left };
|
||
- };
|
||
-}
|
||
-
|
||
-jQuery.offset = {
|
||
-
|
||
- bodyOffset: function( body ) {
|
||
- var top = body.offsetTop,
|
||
- left = body.offsetLeft;
|
||
-
|
||
- if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
|
||
- top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
|
||
- left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
|
||
- }
|
||
-
|
||
- return { top: top, left: left };
|
||
- },
|
||
-
|
||
- setOffset: function( elem, options, i ) {
|
||
- var position = jQuery.css( elem, "position" );
|
||
-
|
||
- // set position first, in-case top/left are set even on static elem
|
||
- if ( position === "static" ) {
|
||
- elem.style.position = "relative";
|
||
- }
|
||
-
|
||
- var curElem = jQuery( elem ),
|
||
- curOffset = curElem.offset(),
|
||
- curCSSTop = jQuery.css( elem, "top" ),
|
||
- curCSSLeft = jQuery.css( elem, "left" ),
|
||
- calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
|
||
- props = {}, curPosition = {}, curTop, curLeft;
|
||
-
|
||
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
|
||
- if ( calculatePosition ) {
|
||
- curPosition = curElem.position();
|
||
- curTop = curPosition.top;
|
||
- curLeft = curPosition.left;
|
||
- } else {
|
||
- curTop = parseFloat( curCSSTop ) || 0;
|
||
- curLeft = parseFloat( curCSSLeft ) || 0;
|
||
- }
|
||
-
|
||
- if ( jQuery.isFunction( options ) ) {
|
||
- options = options.call( elem, i, curOffset );
|
||
- }
|
||
-
|
||
- if ( options.top != null ) {
|
||
- props.top = ( options.top - curOffset.top ) + curTop;
|
||
- }
|
||
- if ( options.left != null ) {
|
||
- props.left = ( options.left - curOffset.left ) + curLeft;
|
||
- }
|
||
-
|
||
- if ( "using" in options ) {
|
||
- options.using.call( elem, props );
|
||
- } else {
|
||
- curElem.css( props );
|
||
- }
|
||
- }
|
||
-};
|
||
-
|
||
-
|
||
-jQuery.fn.extend({
|
||
-
|
||
- position: function() {
|
||
- if ( !this[0] ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- var elem = this[0],
|
||
-
|
||
- // Get *real* offsetParent
|
||
- offsetParent = this.offsetParent(),
|
||
-
|
||
- // Get correct offsets
|
||
- offset = this.offset(),
|
||
- parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
|
||
-
|
||
- // Subtract element margins
|
||
- // note: when an element has margin: auto the offsetLeft and marginLeft
|
||
- // are the same in Safari causing offset.left to incorrectly be 0
|
||
- offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
|
||
- offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
|
||
-
|
||
- // Add offsetParent borders
|
||
- parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
|
||
- parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
|
||
-
|
||
- // Subtract the two offsets
|
||
- return {
|
||
- top: offset.top - parentOffset.top,
|
||
- left: offset.left - parentOffset.left
|
||
- };
|
||
- },
|
||
-
|
||
- offsetParent: function() {
|
||
- return this.map(function() {
|
||
- var offsetParent = this.offsetParent || document.body;
|
||
- while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
|
||
- offsetParent = offsetParent.offsetParent;
|
||
- }
|
||
- return offsetParent;
|
||
- });
|
||
- }
|
||
-});
|
||
-
|
||
-
|
||
-// Create scrollLeft and scrollTop methods
|
||
-jQuery.each( ["Left", "Top"], function( i, name ) {
|
||
- var method = "scroll" + name;
|
||
-
|
||
- jQuery.fn[ method ] = function( val ) {
|
||
- var elem, win;
|
||
-
|
||
- if ( val === undefined ) {
|
||
- elem = this[ 0 ];
|
||
-
|
||
- if ( !elem ) {
|
||
- return null;
|
||
- }
|
||
-
|
||
- win = getWindow( elem );
|
||
-
|
||
- // Return the scroll offset
|
||
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
|
||
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
|
||
- win.document.body[ method ] :
|
||
- elem[ method ];
|
||
- }
|
||
-
|
||
- // Set the scroll offset
|
||
- return this.each(function() {
|
||
- win = getWindow( this );
|
||
-
|
||
- if ( win ) {
|
||
- win.scrollTo(
|
||
- !i ? val : jQuery( win ).scrollLeft(),
|
||
- i ? val : jQuery( win ).scrollTop()
|
||
- );
|
||
-
|
||
- } else {
|
||
- this[ method ] = val;
|
||
- }
|
||
- });
|
||
- };
|
||
-});
|
||
-
|
||
-function getWindow( elem ) {
|
||
- return jQuery.isWindow( elem ) ?
|
||
- elem :
|
||
- elem.nodeType === 9 ?
|
||
- elem.defaultView || elem.parentWindow :
|
||
- false;
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
|
||
-jQuery.each([ "Height", "Width" ], function( i, name ) {
|
||
-
|
||
- var type = name.toLowerCase();
|
||
-
|
||
- // innerHeight and innerWidth
|
||
- jQuery.fn[ "inner" + name ] = function() {
|
||
- var elem = this[0];
|
||
- return elem ?
|
||
- elem.style ?
|
||
- parseFloat( jQuery.css( elem, type, "padding" ) ) :
|
||
- this[ type ]() :
|
||
- null;
|
||
- };
|
||
-
|
||
- // outerHeight and outerWidth
|
||
- jQuery.fn[ "outer" + name ] = function( margin ) {
|
||
- var elem = this[0];
|
||
- return elem ?
|
||
- elem.style ?
|
||
- parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
|
||
- this[ type ]() :
|
||
- null;
|
||
- };
|
||
-
|
||
- jQuery.fn[ type ] = function( size ) {
|
||
- // Get window width or height
|
||
- var elem = this[0];
|
||
- if ( !elem ) {
|
||
- return size == null ? null : this;
|
||
- }
|
||
-
|
||
- if ( jQuery.isFunction( size ) ) {
|
||
- return this.each(function( i ) {
|
||
- var self = jQuery( this );
|
||
- self[ type ]( size.call( this, i, self[ type ]() ) );
|
||
- });
|
||
- }
|
||
-
|
||
- if ( jQuery.isWindow( elem ) ) {
|
||
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
|
||
- // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
|
||
- var docElemProp = elem.document.documentElement[ "client" + name ],
|
||
- body = elem.document.body;
|
||
- return elem.document.compatMode === "CSS1Compat" && docElemProp ||
|
||
- body && body[ "client" + name ] || docElemProp;
|
||
-
|
||
- // Get document width or height
|
||
- } else if ( elem.nodeType === 9 ) {
|
||
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
|
||
- return Math.max(
|
||
- elem.documentElement["client" + name],
|
||
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
|
||
- elem.body["offset" + name], elem.documentElement["offset" + name]
|
||
- );
|
||
-
|
||
- // Get or set width or height on the element
|
||
- } else if ( size === undefined ) {
|
||
- var orig = jQuery.css( elem, type ),
|
||
- ret = parseFloat( orig );
|
||
-
|
||
- return jQuery.isNumeric( ret ) ? ret : orig;
|
||
-
|
||
- // Set the width or height on the element (default to pixels if value is unitless)
|
||
- } else {
|
||
- return this.css( type, typeof size === "string" ? size : size + "px" );
|
||
- }
|
||
- };
|
||
-
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-// Expose jQuery to the global object
|
||
-window.jQuery = window.$ = jQuery;
|
||
-
|
||
-// Expose jQuery as an AMD module, but only for AMD loaders that
|
||
-// understand the issues with loading multiple versions of jQuery
|
||
-// in a page that all might call define(). The loader will indicate
|
||
-// they have special allowances for multiple jQuery versions by
|
||
-// specifying define.amd.jQuery = true. Register as a named module,
|
||
-// since jQuery can be concatenated with other files that may use define,
|
||
-// but not use a proper concatenation script that understands anonymous
|
||
-// AMD modules. A named AMD is safest and most robust way to register.
|
||
-// Lowercase jquery is used because AMD module names are derived from
|
||
-// file names, and jQuery is normally delivered in a lowercase file name.
|
||
-// Do this after creating the global so that if an AMD module wants to call
|
||
-// noConflict to hide this version of jQuery, it will work.
|
||
-if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
|
||
- define( "jquery", [], function () { return jQuery; } );
|
||
-}
|
||
-
|
||
-
|
||
-
|
||
-})( window );
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery-3.6.0.min.js doxygen-1.8.14/jquery/jquery-3.6.0.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery-3.6.0.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery-3.6.0.min.js 2021-06-27 13:30:04.769129978 +0200
|
||
@@ -0,0 +1,2 @@
|
||
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
||
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ba-1.3-hashchange.js doxygen-1.8.14/jquery/jquery.ba-1.3-hashchange.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ba-1.3-hashchange.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ba-1.3-hashchange.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,390 +0,0 @@
|
||
-/*!
|
||
- * jQuery hashchange event - v1.3 - 7/21/2010
|
||
- * http://benalman.com/projects/jquery-hashchange-plugin/
|
||
- *
|
||
- * Copyright (c) 2010 "Cowboy" Ben Alman
|
||
- * Dual licensed under the MIT and GPL licenses.
|
||
- * http://benalman.com/about/license/
|
||
- */
|
||
-
|
||
-// Script: jQuery hashchange event
|
||
-//
|
||
-// *Version: 1.3, Last updated: 7/21/2010*
|
||
-//
|
||
-// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
|
||
-// GitHub - http://github.com/cowboy/jquery-hashchange/
|
||
-// Source - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
|
||
-// (Minified) - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (0.8kb gzipped)
|
||
-//
|
||
-// About: License
|
||
-//
|
||
-// Copyright (c) 2010 "Cowboy" Ben Alman,
|
||
-// Dual licensed under the MIT and GPL licenses.
|
||
-// http://benalman.com/about/license/
|
||
-//
|
||
-// About: Examples
|
||
-//
|
||
-// These working examples, complete with fully commented code, illustrate a few
|
||
-// ways in which this plugin can be used.
|
||
-//
|
||
-// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
|
||
-// document.domain - http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/
|
||
-//
|
||
-// About: Support and Testing
|
||
-//
|
||
-// Information about what version or versions of jQuery this plugin has been
|
||
-// tested with, what browsers it has been tested in, and where the unit tests
|
||
-// reside (so you can test it yourself).
|
||
-//
|
||
-// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
|
||
-// Browsers Tested - Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5,
|
||
-// Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5.
|
||
-// Unit Tests - http://benalman.com/code/projects/jquery-hashchange/unit/
|
||
-//
|
||
-// About: Known issues
|
||
-//
|
||
-// While this jQuery hashchange event implementation is quite stable and
|
||
-// robust, there are a few unfortunate browser bugs surrounding expected
|
||
-// hashchange event-based behaviors, independent of any JavaScript
|
||
-// window.onhashchange abstraction. See the following examples for more
|
||
-// information:
|
||
-//
|
||
-// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
|
||
-// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
|
||
-// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
|
||
-// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
|
||
-//
|
||
-// Also note that should a browser natively support the window.onhashchange
|
||
-// event, but not report that it does, the fallback polling loop will be used.
|
||
-//
|
||
-// About: Release History
|
||
-//
|
||
-// 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more
|
||
-// "removable" for mobile-only development. Added IE6/7 document.title
|
||
-// support. Attempted to make Iframe as hidden as possible by using
|
||
-// techniques from http://www.paciellogroup.com/blog/?p=604. Added
|
||
-// support for the "shortcut" format $(window).hashchange( fn ) and
|
||
-// $(window).hashchange() like jQuery provides for built-in events.
|
||
-// Renamed jQuery.hashchangeDelay to <jQuery.fn.hashchange.delay> and
|
||
-// lowered its default value to 50. Added <jQuery.fn.hashchange.domain>
|
||
-// and <jQuery.fn.hashchange.src> properties plus document-domain.html
|
||
-// file to address access denied issues when setting document.domain in
|
||
-// IE6/7.
|
||
-// 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin
|
||
-// from a page on another domain would cause an error in Safari 4. Also,
|
||
-// IE6/7 Iframe is now inserted after the body (this actually works),
|
||
-// which prevents the page from scrolling when the event is first bound.
|
||
-// Event can also now be bound before DOM ready, but it won't be usable
|
||
-// before then in IE6/7.
|
||
-// 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
|
||
-// where browser version is incorrectly reported as 8.0, despite
|
||
-// inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
|
||
-// 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
|
||
-// window.onhashchange functionality into a separate plugin for users
|
||
-// who want just the basic event & back button support, without all the
|
||
-// extra awesomeness that BBQ provides. This plugin will be included as
|
||
-// part of jQuery BBQ, but also be available separately.
|
||
-
|
||
-(function($,window,undefined){
|
||
- '$:nomunge'; // Used by YUI compressor.
|
||
-
|
||
- // Reused string.
|
||
- var str_hashchange = 'hashchange',
|
||
-
|
||
- // Method / object references.
|
||
- doc = document,
|
||
- fake_onhashchange,
|
||
- special = $.event.special,
|
||
-
|
||
- // Does the browser support window.onhashchange? Note that IE8 running in
|
||
- // IE7 compatibility mode reports true for 'onhashchange' in window, even
|
||
- // though the event isn't supported, so also test document.documentMode.
|
||
- doc_mode = doc.documentMode,
|
||
- supports_onhashchange = 'on' + str_hashchange in window && ( doc_mode === undefined || doc_mode > 7 );
|
||
-
|
||
- // Get location.hash (or what you'd expect location.hash to be) sans any
|
||
- // leading #. Thanks for making this necessary, Firefox!
|
||
- function get_fragment( url ) {
|
||
- url = url || location.href;
|
||
- return '#' + url.replace( /^[^#]*#?(.*)$/, '$1' );
|
||
- };
|
||
-
|
||
- // Method: jQuery.fn.hashchange
|
||
- //
|
||
- // Bind a handler to the window.onhashchange event or trigger all bound
|
||
- // window.onhashchange event handlers. This behavior is consistent with
|
||
- // jQuery's built-in event handlers.
|
||
- //
|
||
- // Usage:
|
||
- //
|
||
- // > jQuery(window).hashchange( [ handler ] );
|
||
- //
|
||
- // Arguments:
|
||
- //
|
||
- // handler - (Function) Optional handler to be bound to the hashchange
|
||
- // event. This is a "shortcut" for the more verbose form:
|
||
- // jQuery(window).bind( 'hashchange', handler ). If handler is omitted,
|
||
- // all bound window.onhashchange event handlers will be triggered. This
|
||
- // is a shortcut for the more verbose
|
||
- // jQuery(window).trigger( 'hashchange' ). These forms are described in
|
||
- // the <hashchange event> section.
|
||
- //
|
||
- // Returns:
|
||
- //
|
||
- // (jQuery) The initial jQuery collection of elements.
|
||
-
|
||
- // Allow the "shortcut" format $(elem).hashchange( fn ) for binding and
|
||
- // $(elem).hashchange() for triggering, like jQuery does for built-in events.
|
||
- $.fn[ str_hashchange ] = function( fn ) {
|
||
- return fn ? this.bind( str_hashchange, fn ) : this.trigger( str_hashchange );
|
||
- };
|
||
-
|
||
- // Property: jQuery.fn.hashchange.delay
|
||
- //
|
||
- // The numeric interval (in milliseconds) at which the <hashchange event>
|
||
- // polling loop executes. Defaults to 50.
|
||
-
|
||
- // Property: jQuery.fn.hashchange.domain
|
||
- //
|
||
- // If you're setting document.domain in your JavaScript, and you want hash
|
||
- // history to work in IE6/7, not only must this property be set, but you must
|
||
- // also set document.domain BEFORE jQuery is loaded into the page. This
|
||
- // property is only applicable if you are supporting IE6/7 (or IE8 operating
|
||
- // in "IE7 compatibility" mode).
|
||
- //
|
||
- // In addition, the <jQuery.fn.hashchange.src> property must be set to the
|
||
- // path of the included "document-domain.html" file, which can be renamed or
|
||
- // modified if necessary (note that the document.domain specified must be the
|
||
- // same in both your main JavaScript as well as in this file).
|
||
- //
|
||
- // Usage:
|
||
- //
|
||
- // jQuery.fn.hashchange.domain = document.domain;
|
||
-
|
||
- // Property: jQuery.fn.hashchange.src
|
||
- //
|
||
- // If, for some reason, you need to specify an Iframe src file (for example,
|
||
- // when setting document.domain as in <jQuery.fn.hashchange.domain>), you can
|
||
- // do so using this property. Note that when using this property, history
|
||
- // won't be recorded in IE6/7 until the Iframe src file loads. This property
|
||
- // is only applicable if you are supporting IE6/7 (or IE8 operating in "IE7
|
||
- // compatibility" mode).
|
||
- //
|
||
- // Usage:
|
||
- //
|
||
- // jQuery.fn.hashchange.src = 'path/to/file.html';
|
||
-
|
||
- $.fn[ str_hashchange ].delay = 50;
|
||
- /*
|
||
- $.fn[ str_hashchange ].domain = null;
|
||
- $.fn[ str_hashchange ].src = null;
|
||
- */
|
||
-
|
||
- // Event: hashchange event
|
||
- //
|
||
- // Fired when location.hash changes. In browsers that support it, the native
|
||
- // HTML5 window.onhashchange event is used, otherwise a polling loop is
|
||
- // initialized, running every <jQuery.fn.hashchange.delay> milliseconds to
|
||
- // see if the hash has changed. In IE6/7 (and IE8 operating in "IE7
|
||
- // compatibility" mode), a hidden Iframe is created to allow the back button
|
||
- // and hash-based history to work.
|
||
- //
|
||
- // Usage as described in <jQuery.fn.hashchange>:
|
||
- //
|
||
- // > // Bind an event handler.
|
||
- // > jQuery(window).hashchange( function(e) {
|
||
- // > var hash = location.hash;
|
||
- // > ...
|
||
- // > });
|
||
- // >
|
||
- // > // Manually trigger the event handler.
|
||
- // > jQuery(window).hashchange();
|
||
- //
|
||
- // A more verbose usage that allows for event namespacing:
|
||
- //
|
||
- // > // Bind an event handler.
|
||
- // > jQuery(window).bind( 'hashchange', function(e) {
|
||
- // > var hash = location.hash;
|
||
- // > ...
|
||
- // > });
|
||
- // >
|
||
- // > // Manually trigger the event handler.
|
||
- // > jQuery(window).trigger( 'hashchange' );
|
||
- //
|
||
- // Additional Notes:
|
||
- //
|
||
- // * The polling loop and Iframe are not created until at least one handler
|
||
- // is actually bound to the 'hashchange' event.
|
||
- // * If you need the bound handler(s) to execute immediately, in cases where
|
||
- // a location.hash exists on page load, via bookmark or page refresh for
|
||
- // example, use jQuery(window).hashchange() or the more verbose
|
||
- // jQuery(window).trigger( 'hashchange' ).
|
||
- // * The event can be bound before DOM ready, but since it won't be usable
|
||
- // before then in IE6/7 (due to the necessary Iframe), recommended usage is
|
||
- // to bind it inside a DOM ready handler.
|
||
-
|
||
- // Override existing $.event.special.hashchange methods (allowing this plugin
|
||
- // to be defined after jQuery BBQ in BBQ's source code).
|
||
- special[ str_hashchange ] = $.extend( special[ str_hashchange ], {
|
||
-
|
||
- // Called only when the first 'hashchange' event is bound to window.
|
||
- setup: function() {
|
||
- // If window.onhashchange is supported natively, there's nothing to do..
|
||
- if ( supports_onhashchange ) { return false; }
|
||
-
|
||
- // Otherwise, we need to create our own. And we don't want to call this
|
||
- // until the user binds to the event, just in case they never do, since it
|
||
- // will create a polling loop and possibly even a hidden Iframe.
|
||
- $( fake_onhashchange.start );
|
||
- },
|
||
-
|
||
- // Called only when the last 'hashchange' event is unbound from window.
|
||
- teardown: function() {
|
||
- // If window.onhashchange is supported natively, there's nothing to do..
|
||
- if ( supports_onhashchange ) { return false; }
|
||
-
|
||
- // Otherwise, we need to stop ours (if possible).
|
||
- $( fake_onhashchange.stop );
|
||
- }
|
||
-
|
||
- });
|
||
-
|
||
- // fake_onhashchange does all the work of triggering the window.onhashchange
|
||
- // event for browsers that don't natively support it, including creating a
|
||
- // polling loop to watch for hash changes and in IE 6/7 creating a hidden
|
||
- // Iframe to enable back and forward.
|
||
- fake_onhashchange = (function(){
|
||
- var self = {},
|
||
- timeout_id,
|
||
-
|
||
- // Remember the initial hash so it doesn't get triggered immediately.
|
||
- last_hash = get_fragment(),
|
||
-
|
||
- fn_retval = function(val){ return val; },
|
||
- history_set = fn_retval,
|
||
- history_get = fn_retval;
|
||
-
|
||
- // Start the polling loop.
|
||
- self.start = function() {
|
||
- timeout_id || poll();
|
||
- };
|
||
-
|
||
- // Stop the polling loop.
|
||
- self.stop = function() {
|
||
- timeout_id && clearTimeout( timeout_id );
|
||
- timeout_id = undefined;
|
||
- };
|
||
-
|
||
- // This polling loop checks every $.fn.hashchange.delay milliseconds to see
|
||
- // if location.hash has changed, and triggers the 'hashchange' event on
|
||
- // window when necessary.
|
||
- function poll() {
|
||
- var hash = get_fragment(),
|
||
- history_hash = history_get( last_hash );
|
||
-
|
||
- if ( hash !== last_hash ) {
|
||
- history_set( last_hash = hash, history_hash );
|
||
-
|
||
- $(window).trigger( str_hashchange );
|
||
-
|
||
- } else if ( history_hash !== last_hash ) {
|
||
- location.href = location.href.replace( /#.*/, '' ) + history_hash;
|
||
- }
|
||
-
|
||
- timeout_id = setTimeout( poll, $.fn[ str_hashchange ].delay );
|
||
- };
|
||
-
|
||
- // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||
- // vvvvvvvvvvvvvvvvvvv REMOVE IF NOT SUPPORTING IE6/7/8 vvvvvvvvvvvvvvvvvvv
|
||
- // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
|
||
- $.browser.msie && !supports_onhashchange && (function(){
|
||
- // Not only do IE6/7 need the "magical" Iframe treatment, but so does IE8
|
||
- // when running in "IE7 compatibility" mode.
|
||
-
|
||
- var iframe,
|
||
- iframe_src;
|
||
-
|
||
- // When the event is bound and polling starts in IE 6/7, create a hidden
|
||
- // Iframe for history handling.
|
||
- self.start = function(){
|
||
- if ( !iframe ) {
|
||
- iframe_src = $.fn[ str_hashchange ].src;
|
||
- iframe_src = iframe_src && iframe_src + get_fragment();
|
||
-
|
||
- // Create hidden Iframe. Attempt to make Iframe as hidden as possible
|
||
- // by using techniques from http://www.paciellogroup.com/blog/?p=604.
|
||
- iframe = $('<iframe tabindex="-1" title="empty"/>').hide()
|
||
-
|
||
- // When Iframe has completely loaded, initialize the history and
|
||
- // start polling.
|
||
- .one( 'load', function(){
|
||
- iframe_src || history_set( get_fragment() );
|
||
- poll();
|
||
- })
|
||
-
|
||
- // Load Iframe src if specified, otherwise nothing.
|
||
- .attr( 'src', iframe_src || 'javascript:0' )
|
||
-
|
||
- // Append Iframe after the end of the body to prevent unnecessary
|
||
- // initial page scrolling (yes, this works).
|
||
- .insertAfter( 'body' )[0].contentWindow;
|
||
-
|
||
- // Whenever `document.title` changes, update the Iframe's title to
|
||
- // prettify the back/next history menu entries. Since IE sometimes
|
||
- // errors with "Unspecified error" the very first time this is set
|
||
- // (yes, very useful) wrap this with a try/catch block.
|
||
- doc.onpropertychange = function(){
|
||
- try {
|
||
- if ( event.propertyName === 'title' ) {
|
||
- iframe.document.title = doc.title;
|
||
- }
|
||
- } catch(e) {}
|
||
- };
|
||
-
|
||
- }
|
||
- };
|
||
-
|
||
- // Override the "stop" method since an IE6/7 Iframe was created. Even
|
||
- // if there are no longer any bound event handlers, the polling loop
|
||
- // is still necessary for back/next to work at all!
|
||
- self.stop = fn_retval;
|
||
-
|
||
- // Get history by looking at the hidden Iframe's location.hash.
|
||
- history_get = function() {
|
||
- return get_fragment( iframe.location.href );
|
||
- };
|
||
-
|
||
- // Set a new history item by opening and then closing the Iframe
|
||
- // document, *then* setting its location.hash. If document.domain has
|
||
- // been set, update that as well.
|
||
- history_set = function( hash, history_hash ) {
|
||
- var iframe_doc = iframe.document,
|
||
- domain = $.fn[ str_hashchange ].domain;
|
||
-
|
||
- if ( hash !== history_hash ) {
|
||
- // Update Iframe with any initial `document.title` that might be set.
|
||
- iframe_doc.title = doc.title;
|
||
-
|
||
- // Opening the Iframe's document after it has been closed is what
|
||
- // actually adds a history entry.
|
||
- iframe_doc.open();
|
||
-
|
||
- // Set document.domain for the Iframe document as well, if necessary.
|
||
- domain && iframe_doc.write( '<script>document.domain="' + domain + '"</script>' );
|
||
-
|
||
- iframe_doc.close();
|
||
-
|
||
- // Update the Iframe's hash, for great justice.
|
||
- iframe.location.hash = hash;
|
||
- }
|
||
- };
|
||
-
|
||
- })();
|
||
- // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
- // ^^^^^^^^^^^^^^^^^^^ REMOVE IF NOT SUPPORTING IE6/7/8 ^^^^^^^^^^^^^^^^^^^
|
||
- // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
-
|
||
- return self;
|
||
- })();
|
||
-
|
||
-})(jQuery,this);
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.powertip-1.2.0.js doxygen-1.8.14/jquery/jquery.powertip-1.2.0.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.powertip-1.2.0.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.powertip-1.2.0.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,1166 +0,0 @@
|
||
-/*!
|
||
- PowerTip - v1.2.0 - 2013-04-03
|
||
- http://stevenbenner.github.com/jquery-powertip/
|
||
- Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
|
||
- Released under MIT license.
|
||
- https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
|
||
-*/
|
||
-(function(factory) {
|
||
- if (typeof define === 'function' && define.amd) {
|
||
- // AMD. Register as an anonymous module.
|
||
- define(['jquery'], factory);
|
||
- } else {
|
||
- // Browser globals
|
||
- factory(jQuery);
|
||
- }
|
||
-}(function($) {
|
||
-
|
||
- // useful private variables
|
||
- var $document = $(document),
|
||
- $window = $(window),
|
||
- $body = $('body');
|
||
-
|
||
- // constants
|
||
- var DATA_DISPLAYCONTROLLER = 'displayController',
|
||
- DATA_HASACTIVEHOVER = 'hasActiveHover',
|
||
- DATA_FORCEDOPEN = 'forcedOpen',
|
||
- DATA_HASMOUSEMOVE = 'hasMouseMove',
|
||
- DATA_MOUSEONTOTIP = 'mouseOnToPopup',
|
||
- DATA_ORIGINALTITLE = 'originalTitle',
|
||
- DATA_POWERTIP = 'powertip',
|
||
- DATA_POWERTIPJQ = 'powertipjq',
|
||
- DATA_POWERTIPTARGET = 'powertiptarget',
|
||
- RAD2DEG = 180 / Math.PI;
|
||
-
|
||
- /**
|
||
- * Session data
|
||
- * Private properties global to all powerTip instances
|
||
- */
|
||
- var session = {
|
||
- isTipOpen: false,
|
||
- isFixedTipOpen: false,
|
||
- isClosing: false,
|
||
- tipOpenImminent: false,
|
||
- activeHover: null,
|
||
- currentX: 0,
|
||
- currentY: 0,
|
||
- previousX: 0,
|
||
- previousY: 0,
|
||
- desyncTimeout: null,
|
||
- mouseTrackingActive: false,
|
||
- delayInProgress: false,
|
||
- windowWidth: 0,
|
||
- windowHeight: 0,
|
||
- scrollTop: 0,
|
||
- scrollLeft: 0
|
||
- };
|
||
-
|
||
- /**
|
||
- * Collision enumeration
|
||
- * @enum {number}
|
||
- */
|
||
- var Collision = {
|
||
- none: 0,
|
||
- top: 1,
|
||
- bottom: 2,
|
||
- left: 4,
|
||
- right: 8
|
||
- };
|
||
-
|
||
- /**
|
||
- * Display hover tooltips on the matched elements.
|
||
- * @param {(Object|string)} opts The options object to use for the plugin, or
|
||
- * the name of a method to invoke on the first matched element.
|
||
- * @param {*=} [arg] Argument for an invoked method (optional).
|
||
- * @return {jQuery} jQuery object for the matched selectors.
|
||
- */
|
||
- $.fn.powerTip = function(opts, arg) {
|
||
- // don't do any work if there were no matched elements
|
||
- if (!this.length) {
|
||
- return this;
|
||
- }
|
||
-
|
||
- // handle api method calls on the plugin, e.g. powerTip('hide')
|
||
- if ($.type(opts) === 'string' && $.powerTip[opts]) {
|
||
- return $.powerTip[opts].call(this, this, arg);
|
||
- }
|
||
-
|
||
- // extend options and instantiate TooltipController
|
||
- var options = $.extend({}, $.fn.powerTip.defaults, opts),
|
||
- tipController = new TooltipController(options);
|
||
-
|
||
- // hook mouse and viewport dimension tracking
|
||
- initTracking();
|
||
-
|
||
- // setup the elements
|
||
- this.each(function elementSetup() {
|
||
- var $this = $(this),
|
||
- dataPowertip = $this.data(DATA_POWERTIP),
|
||
- dataElem = $this.data(DATA_POWERTIPJQ),
|
||
- dataTarget = $this.data(DATA_POWERTIPTARGET),
|
||
- title;
|
||
-
|
||
- // handle repeated powerTip calls on the same element by destroying the
|
||
- // original instance hooked to it and replacing it with this call
|
||
- if ($this.data(DATA_DISPLAYCONTROLLER)) {
|
||
- $.powerTip.destroy($this);
|
||
- }
|
||
-
|
||
- // attempt to use title attribute text if there is no data-powertip,
|
||
- // data-powertipjq or data-powertiptarget. If we do use the title
|
||
- // attribute, delete the attribute so the browser will not show it
|
||
- title = $this.attr('title');
|
||
- if (!dataPowertip && !dataTarget && !dataElem && title) {
|
||
- $this.data(DATA_POWERTIP, title);
|
||
- $this.data(DATA_ORIGINALTITLE, title);
|
||
- $this.removeAttr('title');
|
||
- }
|
||
-
|
||
- // create hover controllers for each element
|
||
- $this.data(
|
||
- DATA_DISPLAYCONTROLLER,
|
||
- new DisplayController($this, options, tipController)
|
||
- );
|
||
- });
|
||
-
|
||
- // attach events to matched elements if the manual options is not enabled
|
||
- if (!options.manual) {
|
||
- this.on({
|
||
- // mouse events
|
||
- 'mouseenter.powertip': function elementMouseEnter(event) {
|
||
- $.powerTip.show(this, event);
|
||
- },
|
||
- 'mouseleave.powertip': function elementMouseLeave() {
|
||
- $.powerTip.hide(this);
|
||
- },
|
||
- // keyboard events
|
||
- 'focus.powertip': function elementFocus() {
|
||
- $.powerTip.show(this);
|
||
- },
|
||
- 'blur.powertip': function elementBlur() {
|
||
- $.powerTip.hide(this, true);
|
||
- },
|
||
- 'keydown.powertip': function elementKeyDown(event) {
|
||
- // close tooltip when the escape key is pressed
|
||
- if (event.keyCode === 27) {
|
||
- $.powerTip.hide(this, true);
|
||
- }
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- return this;
|
||
- };
|
||
-
|
||
- /**
|
||
- * Default options for the powerTip plugin.
|
||
- */
|
||
- $.fn.powerTip.defaults = {
|
||
- fadeInTime: 200,
|
||
- fadeOutTime: 100,
|
||
- followMouse: false,
|
||
- popupId: 'powerTip',
|
||
- intentSensitivity: 7,
|
||
- intentPollInterval: 100,
|
||
- closeDelay: 100,
|
||
- placement: 'n',
|
||
- smartPlacement: false,
|
||
- offset: 10,
|
||
- mouseOnToPopup: false,
|
||
- manual: false
|
||
- };
|
||
-
|
||
- /**
|
||
- * Default smart placement priority lists.
|
||
- * The first item in the array is the highest priority, the last is the lowest.
|
||
- * The last item is also the default, which will be used if all previous options
|
||
- * do not fit.
|
||
- */
|
||
- $.fn.powerTip.smartPlacementLists = {
|
||
- n: ['n', 'ne', 'nw', 's'],
|
||
- e: ['e', 'ne', 'se', 'w', 'nw', 'sw', 'n', 's', 'e'],
|
||
- s: ['s', 'se', 'sw', 'n'],
|
||
- w: ['w', 'nw', 'sw', 'e', 'ne', 'se', 'n', 's', 'w'],
|
||
- nw: ['nw', 'w', 'sw', 'n', 's', 'se', 'nw'],
|
||
- ne: ['ne', 'e', 'se', 'n', 's', 'sw', 'ne'],
|
||
- sw: ['sw', 'w', 'nw', 's', 'n', 'ne', 'sw'],
|
||
- se: ['se', 'e', 'ne', 's', 'n', 'nw', 'se'],
|
||
- 'nw-alt': ['nw-alt', 'n', 'ne-alt', 'sw-alt', 's', 'se-alt', 'w', 'e'],
|
||
- 'ne-alt': ['ne-alt', 'n', 'nw-alt', 'se-alt', 's', 'sw-alt', 'e', 'w'],
|
||
- 'sw-alt': ['sw-alt', 's', 'se-alt', 'nw-alt', 'n', 'ne-alt', 'w', 'e'],
|
||
- 'se-alt': ['se-alt', 's', 'sw-alt', 'ne-alt', 'n', 'nw-alt', 'e', 'w']
|
||
- };
|
||
-
|
||
- /**
|
||
- * Public API
|
||
- */
|
||
- $.powerTip = {
|
||
- /**
|
||
- * Attempts to show the tooltip for the specified element.
|
||
- * @param {jQuery|Element} element The element to open the tooltip for.
|
||
- * @param {jQuery.Event=} event jQuery event for hover intent and mouse
|
||
- * tracking (optional).
|
||
- */
|
||
- show: function apiShowTip(element, event) {
|
||
- if (event) {
|
||
- trackMouse(event);
|
||
- session.previousX = event.pageX;
|
||
- session.previousY = event.pageY;
|
||
- $(element).data(DATA_DISPLAYCONTROLLER).show();
|
||
- } else {
|
||
- $(element).first().data(DATA_DISPLAYCONTROLLER).show(true, true);
|
||
- }
|
||
- return element;
|
||
- },
|
||
-
|
||
- /**
|
||
- * Repositions the tooltip on the element.
|
||
- * @param {jQuery|Element} element The element the tooltip is shown for.
|
||
- */
|
||
- reposition: function apiResetPosition(element) {
|
||
- $(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();
|
||
- return element;
|
||
- },
|
||
-
|
||
- /**
|
||
- * Attempts to close any open tooltips.
|
||
- * @param {(jQuery|Element)=} element The element with the tooltip that
|
||
- * should be closed (optional).
|
||
- * @param {boolean=} immediate Disable close delay (optional).
|
||
- */
|
||
- hide: function apiCloseTip(element, immediate) {
|
||
- if (element) {
|
||
- $(element).first().data(DATA_DISPLAYCONTROLLER).hide(immediate);
|
||
- } else {
|
||
- if (session.activeHover) {
|
||
- session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true);
|
||
- }
|
||
- }
|
||
- return element;
|
||
- },
|
||
-
|
||
- /**
|
||
- * Destroy and roll back any powerTip() instance on the specified element.
|
||
- * @param {jQuery|Element} element The element with the powerTip instance.
|
||
- */
|
||
- destroy: function apiDestroy(element) {
|
||
- $(element).off('.powertip').each(function destroy() {
|
||
- var $this = $(this),
|
||
- dataAttributes = [
|
||
- DATA_ORIGINALTITLE,
|
||
- DATA_DISPLAYCONTROLLER,
|
||
- DATA_HASACTIVEHOVER,
|
||
- DATA_FORCEDOPEN
|
||
- ];
|
||
-
|
||
- if ($this.data(DATA_ORIGINALTITLE)) {
|
||
- $this.attr('title', $this.data(DATA_ORIGINALTITLE));
|
||
- dataAttributes.push(DATA_POWERTIP);
|
||
- }
|
||
-
|
||
- $this.removeData(dataAttributes);
|
||
- });
|
||
- return element;
|
||
- }
|
||
- };
|
||
-
|
||
- // API aliasing
|
||
- $.powerTip.showTip = $.powerTip.show;
|
||
- $.powerTip.closeTip = $.powerTip.hide;
|
||
-
|
||
- /**
|
||
- * Creates a new CSSCoordinates object.
|
||
- * @private
|
||
- * @constructor
|
||
- */
|
||
- function CSSCoordinates() {
|
||
- var me = this;
|
||
-
|
||
- // initialize object properties
|
||
- me.top = 'auto';
|
||
- me.left = 'auto';
|
||
- me.right = 'auto';
|
||
- me.bottom = 'auto';
|
||
-
|
||
- /**
|
||
- * Set a property to a value.
|
||
- * @private
|
||
- * @param {string} property The name of the property.
|
||
- * @param {number} value The value of the property.
|
||
- */
|
||
- me.set = function(property, value) {
|
||
- if ($.isNumeric(value)) {
|
||
- me[property] = Math.round(value);
|
||
- }
|
||
- };
|
||
- }
|
||
-
|
||
- /**
|
||
- * Creates a new tooltip display controller.
|
||
- * @private
|
||
- * @constructor
|
||
- * @param {jQuery} element The element that this controller will handle.
|
||
- * @param {Object} options Options object containing settings.
|
||
- * @param {TooltipController} tipController The TooltipController object for
|
||
- * this instance.
|
||
- */
|
||
- function DisplayController(element, options, tipController) {
|
||
- var hoverTimer = null;
|
||
-
|
||
- /**
|
||
- * Begins the process of showing a tooltip.
|
||
- * @private
|
||
- * @param {boolean=} immediate Skip intent testing (optional).
|
||
- * @param {boolean=} forceOpen Ignore cursor position and force tooltip to
|
||
- * open (optional).
|
||
- */
|
||
- function openTooltip(immediate, forceOpen) {
|
||
- cancelTimer();
|
||
- if (!element.data(DATA_HASACTIVEHOVER)) {
|
||
- if (!immediate) {
|
||
- session.tipOpenImminent = true;
|
||
- hoverTimer = setTimeout(
|
||
- function intentDelay() {
|
||
- hoverTimer = null;
|
||
- checkForIntent();
|
||
- },
|
||
- options.intentPollInterval
|
||
- );
|
||
- } else {
|
||
- if (forceOpen) {
|
||
- element.data(DATA_FORCEDOPEN, true);
|
||
- }
|
||
- tipController.showTip(element);
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- /**
|
||
- * Begins the process of closing a tooltip.
|
||
- * @private
|
||
- * @param {boolean=} disableDelay Disable close delay (optional).
|
||
- */
|
||
- function closeTooltip(disableDelay) {
|
||
- cancelTimer();
|
||
- session.tipOpenImminent = false;
|
||
- if (element.data(DATA_HASACTIVEHOVER)) {
|
||
- element.data(DATA_FORCEDOPEN, false);
|
||
- if (!disableDelay) {
|
||
- session.delayInProgress = true;
|
||
- hoverTimer = setTimeout(
|
||
- function closeDelay() {
|
||
- hoverTimer = null;
|
||
- tipController.hideTip(element);
|
||
- session.delayInProgress = false;
|
||
- },
|
||
- options.closeDelay
|
||
- );
|
||
- } else {
|
||
- tipController.hideTip(element);
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- /**
|
||
- * Checks mouse position to make sure that the user intended to hover on the
|
||
- * specified element before showing the tooltip.
|
||
- * @private
|
||
- */
|
||
- function checkForIntent() {
|
||
- // calculate mouse position difference
|
||
- var xDifference = Math.abs(session.previousX - session.currentX),
|
||
- yDifference = Math.abs(session.previousY - session.currentY),
|
||
- totalDifference = xDifference + yDifference;
|
||
-
|
||
- // check if difference has passed the sensitivity threshold
|
||
- if (totalDifference < options.intentSensitivity) {
|
||
- tipController.showTip(element);
|
||
- } else {
|
||
- // try again
|
||
- session.previousX = session.currentX;
|
||
- session.previousY = session.currentY;
|
||
- openTooltip();
|
||
- }
|
||
- }
|
||
-
|
||
- /**
|
||
- * Cancels active hover timer.
|
||
- * @private
|
||
- */
|
||
- function cancelTimer() {
|
||
- hoverTimer = clearTimeout(hoverTimer);
|
||
- session.delayInProgress = false;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Repositions the tooltip on this element.
|
||
- * @private
|
||
- */
|
||
- function repositionTooltip() {
|
||
- tipController.resetPosition(element);
|
||
- }
|
||
-
|
||
- // expose the methods
|
||
- this.show = openTooltip;
|
||
- this.hide = closeTooltip;
|
||
- this.cancel = cancelTimer;
|
||
- this.resetPosition = repositionTooltip;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Creates a new Placement Calculator.
|
||
- * @private
|
||
- * @constructor
|
||
- */
|
||
- function PlacementCalculator() {
|
||
- /**
|
||
- * Compute the CSS position to display a tooltip at the specified placement
|
||
- * relative to the specified element.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- * @param {string} placement The placement for the tooltip.
|
||
- * @param {number} tipWidth Width of the tooltip element in pixels.
|
||
- * @param {number} tipHeight Height of the tooltip element in pixels.
|
||
- * @param {number} offset Distance to offset tooltips in pixels.
|
||
- * @return {CSSCoordinates} A CSSCoordinates object with the position.
|
||
- */
|
||
- function computePlacementCoords(element, placement, tipWidth, tipHeight, offset) {
|
||
- var placementBase = placement.split('-')[0], // ignore 'alt' for corners
|
||
- coords = new CSSCoordinates(),
|
||
- position;
|
||
-
|
||
- if (isSvgElement(element)) {
|
||
- position = getSvgPlacement(element, placementBase);
|
||
- } else {
|
||
- position = getHtmlPlacement(element, placementBase);
|
||
- }
|
||
-
|
||
- // calculate the appropriate x and y position in the document
|
||
- switch (placement) {
|
||
- case 'n':
|
||
- coords.set('left', position.left - (tipWidth / 2));
|
||
- coords.set('bottom', session.windowHeight - position.top + offset);
|
||
- break;
|
||
- case 'e':
|
||
- coords.set('left', position.left + offset);
|
||
- coords.set('top', position.top - (tipHeight / 2));
|
||
- break;
|
||
- case 's':
|
||
- coords.set('left', position.left - (tipWidth / 2));
|
||
- coords.set('top', position.top + offset);
|
||
- break;
|
||
- case 'w':
|
||
- coords.set('top', position.top - (tipHeight / 2));
|
||
- coords.set('right', session.windowWidth - position.left + offset);
|
||
- break;
|
||
- case 'nw':
|
||
- coords.set('bottom', session.windowHeight - position.top + offset);
|
||
- coords.set('right', session.windowWidth - position.left - 20);
|
||
- break;
|
||
- case 'nw-alt':
|
||
- coords.set('left', position.left);
|
||
- coords.set('bottom', session.windowHeight - position.top + offset);
|
||
- break;
|
||
- case 'ne':
|
||
- coords.set('left', position.left - 20);
|
||
- coords.set('bottom', session.windowHeight - position.top + offset);
|
||
- break;
|
||
- case 'ne-alt':
|
||
- coords.set('bottom', session.windowHeight - position.top + offset);
|
||
- coords.set('right', session.windowWidth - position.left);
|
||
- break;
|
||
- case 'sw':
|
||
- coords.set('top', position.top + offset);
|
||
- coords.set('right', session.windowWidth - position.left - 20);
|
||
- break;
|
||
- case 'sw-alt':
|
||
- coords.set('left', position.left);
|
||
- coords.set('top', position.top + offset);
|
||
- break;
|
||
- case 'se':
|
||
- coords.set('left', position.left - 20);
|
||
- coords.set('top', position.top + offset);
|
||
- break;
|
||
- case 'se-alt':
|
||
- coords.set('top', position.top + offset);
|
||
- coords.set('right', session.windowWidth - position.left);
|
||
- break;
|
||
- }
|
||
-
|
||
- return coords;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Finds the tooltip attachment point in the document for a HTML DOM element
|
||
- * for the specified placement.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- * @param {string} placement The placement for the tooltip.
|
||
- * @return {Object} An object with the top,left position values.
|
||
- */
|
||
- function getHtmlPlacement(element, placement) {
|
||
- var objectOffset = element.offset(),
|
||
- objectWidth = element.outerWidth(),
|
||
- objectHeight = element.outerHeight(),
|
||
- left,
|
||
- top;
|
||
-
|
||
- // calculate the appropriate x and y position in the document
|
||
- switch (placement) {
|
||
- case 'n':
|
||
- left = objectOffset.left + objectWidth / 2;
|
||
- top = objectOffset.top;
|
||
- break;
|
||
- case 'e':
|
||
- left = objectOffset.left + objectWidth;
|
||
- top = objectOffset.top + objectHeight / 2;
|
||
- break;
|
||
- case 's':
|
||
- left = objectOffset.left + objectWidth / 2;
|
||
- top = objectOffset.top + objectHeight;
|
||
- break;
|
||
- case 'w':
|
||
- left = objectOffset.left;
|
||
- top = objectOffset.top + objectHeight / 2;
|
||
- break;
|
||
- case 'nw':
|
||
- left = objectOffset.left;
|
||
- top = objectOffset.top;
|
||
- break;
|
||
- case 'ne':
|
||
- left = objectOffset.left + objectWidth;
|
||
- top = objectOffset.top;
|
||
- break;
|
||
- case 'sw':
|
||
- left = objectOffset.left;
|
||
- top = objectOffset.top + objectHeight;
|
||
- break;
|
||
- case 'se':
|
||
- left = objectOffset.left + objectWidth;
|
||
- top = objectOffset.top + objectHeight;
|
||
- break;
|
||
- }
|
||
-
|
||
- return {
|
||
- top: top,
|
||
- left: left
|
||
- };
|
||
- }
|
||
-
|
||
- /**
|
||
- * Finds the tooltip attachment point in the document for a SVG element for
|
||
- * the specified placement.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- * @param {string} placement The placement for the tooltip.
|
||
- * @return {Object} An object with the top,left position values.
|
||
- */
|
||
- function getSvgPlacement(element, placement) {
|
||
- var svgElement = element.closest('svg')[0],
|
||
- domElement = element[0],
|
||
- point = svgElement.createSVGPoint(),
|
||
- boundingBox = domElement.getBBox(),
|
||
- matrix = domElement.getScreenCTM(),
|
||
- halfWidth = boundingBox.width / 2,
|
||
- halfHeight = boundingBox.height / 2,
|
||
- placements = [],
|
||
- placementKeys = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'],
|
||
- coords,
|
||
- rotation,
|
||
- steps,
|
||
- x;
|
||
-
|
||
- function pushPlacement() {
|
||
- placements.push(point.matrixTransform(matrix));
|
||
- }
|
||
-
|
||
- // get bounding box corners and midpoints
|
||
- point.x = boundingBox.x;
|
||
- point.y = boundingBox.y;
|
||
- pushPlacement();
|
||
- point.x += halfWidth;
|
||
- pushPlacement();
|
||
- point.x += halfWidth;
|
||
- pushPlacement();
|
||
- point.y += halfHeight;
|
||
- pushPlacement();
|
||
- point.y += halfHeight;
|
||
- pushPlacement();
|
||
- point.x -= halfWidth;
|
||
- pushPlacement();
|
||
- point.x -= halfWidth;
|
||
- pushPlacement();
|
||
- point.y -= halfHeight;
|
||
- pushPlacement();
|
||
-
|
||
- // determine rotation
|
||
- if (placements[0].y !== placements[1].y || placements[0].x !== placements[7].x) {
|
||
- rotation = Math.atan2(matrix.b, matrix.a) * RAD2DEG;
|
||
- steps = Math.ceil(((rotation % 360) - 22.5) / 45);
|
||
- if (steps < 1) {
|
||
- steps += 8;
|
||
- }
|
||
- while (steps--) {
|
||
- placementKeys.push(placementKeys.shift());
|
||
- }
|
||
- }
|
||
-
|
||
- // find placement
|
||
- for (x = 0; x < placements.length; x++) {
|
||
- if (placementKeys[x] === placement) {
|
||
- coords = placements[x];
|
||
- break;
|
||
- }
|
||
- }
|
||
-
|
||
- return {
|
||
- top: coords.y + session.scrollTop,
|
||
- left: coords.x + session.scrollLeft
|
||
- };
|
||
- }
|
||
-
|
||
- // expose methods
|
||
- this.compute = computePlacementCoords;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Creates a new tooltip controller.
|
||
- * @private
|
||
- * @constructor
|
||
- * @param {Object} options Options object containing settings.
|
||
- */
|
||
- function TooltipController(options) {
|
||
- var placementCalculator = new PlacementCalculator(),
|
||
- tipElement = $('#' + options.popupId);
|
||
-
|
||
- // build and append tooltip div if it does not already exist
|
||
- if (tipElement.length === 0) {
|
||
- tipElement = $('<div/>', { id: options.popupId });
|
||
- // grab body element if it was not populated when the script loaded
|
||
- // note: this hack exists solely for jsfiddle support
|
||
- if ($body.length === 0) {
|
||
- $body = $('body');
|
||
- }
|
||
- $body.append(tipElement);
|
||
- }
|
||
-
|
||
- // hook mousemove for cursor follow tooltips
|
||
- if (options.followMouse) {
|
||
- // only one positionTipOnCursor hook per tooltip element, please
|
||
- if (!tipElement.data(DATA_HASMOUSEMOVE)) {
|
||
- $document.on('mousemove', positionTipOnCursor);
|
||
- $window.on('scroll', positionTipOnCursor);
|
||
- tipElement.data(DATA_HASMOUSEMOVE, true);
|
||
- }
|
||
- }
|
||
-
|
||
- // if we want to be able to mouse onto the tooltip then we need to attach
|
||
- // hover events to the tooltip that will cancel a close request on hover and
|
||
- // start a new close request on mouseleave
|
||
- if (options.mouseOnToPopup) {
|
||
- tipElement.on({
|
||
- mouseenter: function tipMouseEnter() {
|
||
- // we only let the mouse stay on the tooltip if it is set to let
|
||
- // users interact with it
|
||
- if (tipElement.data(DATA_MOUSEONTOTIP)) {
|
||
- // check activeHover in case the mouse cursor entered the
|
||
- // tooltip during the fadeOut and close cycle
|
||
- if (session.activeHover) {
|
||
- session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel();
|
||
- }
|
||
- }
|
||
- },
|
||
- mouseleave: function tipMouseLeave() {
|
||
- // check activeHover in case the mouse cursor entered the
|
||
- // tooltip during the fadeOut and close cycle
|
||
- if (session.activeHover) {
|
||
- session.activeHover.data(DATA_DISPLAYCONTROLLER).hide();
|
||
- }
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- /**
|
||
- * Gives the specified element the active-hover state and queues up the
|
||
- * showTip function.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- */
|
||
- function beginShowTip(element) {
|
||
- element.data(DATA_HASACTIVEHOVER, true);
|
||
- // show tooltip, asap
|
||
- tipElement.queue(function queueTipInit(next) {
|
||
- showTip(element);
|
||
- next();
|
||
- });
|
||
- }
|
||
-
|
||
- /**
|
||
- * Shows the tooltip, as soon as possible.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- */
|
||
- function showTip(element) {
|
||
- var tipContent;
|
||
-
|
||
- // it is possible, especially with keyboard navigation, to move on to
|
||
- // another element with a tooltip during the queue to get to this point
|
||
- // in the code. if that happens then we need to not proceed or we may
|
||
- // have the fadeout callback for the last tooltip execute immediately
|
||
- // after this code runs, causing bugs.
|
||
- if (!element.data(DATA_HASACTIVEHOVER)) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // if the tooltip is open and we got asked to open another one then the
|
||
- // old one is still in its fadeOut cycle, so wait and try again
|
||
- if (session.isTipOpen) {
|
||
- if (!session.isClosing) {
|
||
- hideTip(session.activeHover);
|
||
- }
|
||
- tipElement.delay(100).queue(function queueTipAgain(next) {
|
||
- showTip(element);
|
||
- next();
|
||
- });
|
||
- return;
|
||
- }
|
||
-
|
||
- // trigger powerTipPreRender event
|
||
- element.trigger('powerTipPreRender');
|
||
-
|
||
- // set tooltip content
|
||
- tipContent = getTooltipContent(element);
|
||
- if (tipContent) {
|
||
- tipElement.empty().append(tipContent);
|
||
- } else {
|
||
- // we have no content to display, give up
|
||
- return;
|
||
- }
|
||
-
|
||
- // trigger powerTipRender event
|
||
- element.trigger('powerTipRender');
|
||
-
|
||
- session.activeHover = element;
|
||
- session.isTipOpen = true;
|
||
-
|
||
- tipElement.data(DATA_MOUSEONTOTIP, options.mouseOnToPopup);
|
||
-
|
||
- // set tooltip position
|
||
- if (!options.followMouse) {
|
||
- positionTipOnElement(element);
|
||
- session.isFixedTipOpen = true;
|
||
- } else {
|
||
- positionTipOnCursor();
|
||
- }
|
||
-
|
||
- // fadein
|
||
- tipElement.fadeIn(options.fadeInTime, function fadeInCallback() {
|
||
- // start desync polling
|
||
- if (!session.desyncTimeout) {
|
||
- session.desyncTimeout = setInterval(closeDesyncedTip, 500);
|
||
- }
|
||
-
|
||
- // trigger powerTipOpen event
|
||
- element.trigger('powerTipOpen');
|
||
- });
|
||
- }
|
||
-
|
||
- /**
|
||
- * Hides the tooltip.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- */
|
||
- function hideTip(element) {
|
||
- // reset session
|
||
- session.isClosing = true;
|
||
- session.activeHover = null;
|
||
- session.isTipOpen = false;
|
||
-
|
||
- // stop desync polling
|
||
- session.desyncTimeout = clearInterval(session.desyncTimeout);
|
||
-
|
||
- // reset element state
|
||
- element.data(DATA_HASACTIVEHOVER, false);
|
||
- element.data(DATA_FORCEDOPEN, false);
|
||
-
|
||
- // fade out
|
||
- tipElement.fadeOut(options.fadeOutTime, function fadeOutCallback() {
|
||
- var coords = new CSSCoordinates();
|
||
-
|
||
- // reset session and tooltip element
|
||
- session.isClosing = false;
|
||
- session.isFixedTipOpen = false;
|
||
- tipElement.removeClass();
|
||
-
|
||
- // support mouse-follow and fixed position tips at the same time by
|
||
- // moving the tooltip to the last cursor location after it is hidden
|
||
- coords.set('top', session.currentY + options.offset);
|
||
- coords.set('left', session.currentX + options.offset);
|
||
- tipElement.css(coords);
|
||
-
|
||
- // trigger powerTipClose event
|
||
- element.trigger('powerTipClose');
|
||
- });
|
||
- }
|
||
-
|
||
- /**
|
||
- * Moves the tooltip to the users mouse cursor.
|
||
- * @private
|
||
- */
|
||
- function positionTipOnCursor() {
|
||
- // to support having fixed tooltips on the same page as cursor tooltips,
|
||
- // where both instances are referencing the same tooltip element, we
|
||
- // need to keep track of the mouse position constantly, but we should
|
||
- // only set the tip location if a fixed tip is not currently open, a tip
|
||
- // open is imminent or active, and the tooltip element in question does
|
||
- // have a mouse-follow using it.
|
||
- if (!session.isFixedTipOpen && (session.isTipOpen || (session.tipOpenImminent && tipElement.data(DATA_HASMOUSEMOVE)))) {
|
||
- // grab measurements
|
||
- var tipWidth = tipElement.outerWidth(),
|
||
- tipHeight = tipElement.outerHeight(),
|
||
- coords = new CSSCoordinates(),
|
||
- collisions,
|
||
- collisionCount;
|
||
-
|
||
- // grab collisions
|
||
- coords.set('top', session.currentY + options.offset);
|
||
- coords.set('left', session.currentX + options.offset);
|
||
- collisions = getViewportCollisions(
|
||
- coords,
|
||
- tipWidth,
|
||
- tipHeight
|
||
- );
|
||
-
|
||
- // handle tooltip view port collisions
|
||
- if (collisions !== Collision.none) {
|
||
- collisionCount = countFlags(collisions);
|
||
- if (collisionCount === 1) {
|
||
- // if there is only one collision (bottom or right) then
|
||
- // simply constrain the tooltip to the view port
|
||
- if (collisions === Collision.right) {
|
||
- coords.set('left', session.windowWidth - tipWidth);
|
||
- } else if (collisions === Collision.bottom) {
|
||
- coords.set('top', session.scrollTop + session.windowHeight - tipHeight);
|
||
- }
|
||
- } else {
|
||
- // if the tooltip has more than one collision then it is
|
||
- // trapped in the corner and should be flipped to get it out
|
||
- // of the users way
|
||
- coords.set('left', session.currentX - tipWidth - options.offset);
|
||
- coords.set('top', session.currentY - tipHeight - options.offset);
|
||
- }
|
||
- }
|
||
-
|
||
- // position the tooltip
|
||
- tipElement.css(coords);
|
||
- }
|
||
- }
|
||
-
|
||
- /**
|
||
- * Sets the tooltip to the correct position relative to the specified target
|
||
- * element. Based on options settings.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- */
|
||
- function positionTipOnElement(element) {
|
||
- var priorityList,
|
||
- finalPlacement;
|
||
-
|
||
- if (options.smartPlacement) {
|
||
- priorityList = $.fn.powerTip.smartPlacementLists[options.placement];
|
||
-
|
||
- // iterate over the priority list and use the first placement option
|
||
- // that does not collide with the view port. if they all collide
|
||
- // then the last placement in the list will be used.
|
||
- $.each(priorityList, function(idx, pos) {
|
||
- // place tooltip and find collisions
|
||
- var collisions = getViewportCollisions(
|
||
- placeTooltip(element, pos),
|
||
- tipElement.outerWidth(),
|
||
- tipElement.outerHeight()
|
||
- );
|
||
-
|
||
- // update the final placement variable
|
||
- finalPlacement = pos;
|
||
-
|
||
- // break if there were no collisions
|
||
- if (collisions === Collision.none) {
|
||
- return false;
|
||
- }
|
||
- });
|
||
- } else {
|
||
- // if we're not going to use the smart placement feature then just
|
||
- // compute the coordinates and do it
|
||
- placeTooltip(element, options.placement);
|
||
- finalPlacement = options.placement;
|
||
- }
|
||
-
|
||
- // add placement as class for CSS arrows
|
||
- tipElement.addClass(finalPlacement);
|
||
- }
|
||
-
|
||
- /**
|
||
- * Sets the tooltip position to the appropriate values to show the tip at
|
||
- * the specified placement. This function will iterate and test the tooltip
|
||
- * to support elastic tooltips.
|
||
- * @private
|
||
- * @param {jQuery} element The element that the tooltip should target.
|
||
- * @param {string} placement The placement for the tooltip.
|
||
- * @return {CSSCoordinates} A CSSCoordinates object with the top, left, and
|
||
- * right position values.
|
||
- */
|
||
- function placeTooltip(element, placement) {
|
||
- var iterationCount = 0,
|
||
- tipWidth,
|
||
- tipHeight,
|
||
- coords = new CSSCoordinates();
|
||
-
|
||
- // set the tip to 0,0 to get the full expanded width
|
||
- coords.set('top', 0);
|
||
- coords.set('left', 0);
|
||
- tipElement.css(coords);
|
||
-
|
||
- // to support elastic tooltips we need to check for a change in the
|
||
- // rendered dimensions after the tooltip has been positioned
|
||
- do {
|
||
- // grab the current tip dimensions
|
||
- tipWidth = tipElement.outerWidth();
|
||
- tipHeight = tipElement.outerHeight();
|
||
-
|
||
- // get placement coordinates
|
||
- coords = placementCalculator.compute(
|
||
- element,
|
||
- placement,
|
||
- tipWidth,
|
||
- tipHeight,
|
||
- options.offset
|
||
- );
|
||
-
|
||
- // place the tooltip
|
||
- tipElement.css(coords);
|
||
- } while (
|
||
- // sanity check: limit to 5 iterations, and...
|
||
- ++iterationCount <= 5 &&
|
||
- // try again if the dimensions changed after placement
|
||
- (tipWidth !== tipElement.outerWidth() || tipHeight !== tipElement.outerHeight())
|
||
- );
|
||
-
|
||
- return coords;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Checks for a tooltip desync and closes the tooltip if one occurs.
|
||
- * @private
|
||
- */
|
||
- function closeDesyncedTip() {
|
||
- var isDesynced = false;
|
||
- // It is possible for the mouse cursor to leave an element without
|
||
- // firing the mouseleave or blur event. This most commonly happens when
|
||
- // the element is disabled under mouse cursor. If this happens it will
|
||
- // result in a desynced tooltip because the tooltip was never asked to
|
||
- // close. So we should periodically check for a desync situation and
|
||
- // close the tip if such a situation arises.
|
||
- if (session.isTipOpen && !session.isClosing && !session.delayInProgress) {
|
||
- // user moused onto another tip or active hover is disabled
|
||
- if (session.activeHover.data(DATA_HASACTIVEHOVER) === false || session.activeHover.is(':disabled')) {
|
||
- isDesynced = true;
|
||
- } else {
|
||
- // hanging tip - have to test if mouse position is not over the
|
||
- // active hover and not over a tooltip set to let the user
|
||
- // interact with it.
|
||
- // for keyboard navigation: this only counts if the element does
|
||
- // not have focus.
|
||
- // for tooltips opened via the api: we need to check if it has
|
||
- // the forcedOpen flag.
|
||
- if (!isMouseOver(session.activeHover) && !session.activeHover.is(':focus') && !session.activeHover.data(DATA_FORCEDOPEN)) {
|
||
- if (tipElement.data(DATA_MOUSEONTOTIP)) {
|
||
- if (!isMouseOver(tipElement)) {
|
||
- isDesynced = true;
|
||
- }
|
||
- } else {
|
||
- isDesynced = true;
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- if (isDesynced) {
|
||
- // close the desynced tip
|
||
- hideTip(session.activeHover);
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- // expose methods
|
||
- this.showTip = beginShowTip;
|
||
- this.hideTip = hideTip;
|
||
- this.resetPosition = positionTipOnElement;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Determine whether a jQuery object is an SVG element
|
||
- * @private
|
||
- * @param {jQuery} element The element to check
|
||
- * @return {boolean} Whether this is an SVG element
|
||
- */
|
||
- function isSvgElement(element) {
|
||
- return window.SVGElement && element[0] instanceof SVGElement;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Initializes the viewport dimension cache and hooks up the mouse position
|
||
- * tracking and viewport dimension tracking events.
|
||
- * Prevents attaching the events more than once.
|
||
- * @private
|
||
- */
|
||
- function initTracking() {
|
||
- if (!session.mouseTrackingActive) {
|
||
- session.mouseTrackingActive = true;
|
||
-
|
||
- // grab the current viewport dimensions on load
|
||
- $(function getViewportDimensions() {
|
||
- session.scrollLeft = $window.scrollLeft();
|
||
- session.scrollTop = $window.scrollTop();
|
||
- session.windowWidth = $window.width();
|
||
- session.windowHeight = $window.height();
|
||
- });
|
||
-
|
||
- // hook mouse move tracking
|
||
- $document.on('mousemove', trackMouse);
|
||
-
|
||
- // hook viewport dimensions tracking
|
||
- $window.on({
|
||
- resize: function trackResize() {
|
||
- session.windowWidth = $window.width();
|
||
- session.windowHeight = $window.height();
|
||
- },
|
||
- scroll: function trackScroll() {
|
||
- var x = $window.scrollLeft(),
|
||
- y = $window.scrollTop();
|
||
- if (x !== session.scrollLeft) {
|
||
- session.currentX += x - session.scrollLeft;
|
||
- session.scrollLeft = x;
|
||
- }
|
||
- if (y !== session.scrollTop) {
|
||
- session.currentY += y - session.scrollTop;
|
||
- session.scrollTop = y;
|
||
- }
|
||
- }
|
||
- });
|
||
- }
|
||
- }
|
||
-
|
||
- /**
|
||
- * Saves the current mouse coordinates to the session object.
|
||
- * @private
|
||
- * @param {jQuery.Event} event The mousemove event for the document.
|
||
- */
|
||
- function trackMouse(event) {
|
||
- session.currentX = event.pageX;
|
||
- session.currentY = event.pageY;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Tests if the mouse is currently over the specified element.
|
||
- * @private
|
||
- * @param {jQuery} element The element to check for hover.
|
||
- * @return {boolean}
|
||
- */
|
||
- function isMouseOver(element) {
|
||
- // use getBoundingClientRect() because jQuery's width() and height()
|
||
- // methods do not work with SVG elements
|
||
- // compute width/height because those properties do not exist on the object
|
||
- // returned by getBoundingClientRect() in older versions of IE
|
||
- var elementPosition = element.offset(),
|
||
- elementBox = element[0].getBoundingClientRect(),
|
||
- elementWidth = elementBox.right - elementBox.left,
|
||
- elementHeight = elementBox.bottom - elementBox.top;
|
||
-
|
||
- return session.currentX >= elementPosition.left &&
|
||
- session.currentX <= elementPosition.left + elementWidth &&
|
||
- session.currentY >= elementPosition.top &&
|
||
- session.currentY <= elementPosition.top + elementHeight;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Fetches the tooltip content from the specified element's data attributes.
|
||
- * @private
|
||
- * @param {jQuery} element The element to get the tooltip content for.
|
||
- * @return {(string|jQuery|undefined)} The text/HTML string, jQuery object, or
|
||
- * undefined if there was no tooltip content for the element.
|
||
- */
|
||
- function getTooltipContent(element) {
|
||
- var tipText = element.data(DATA_POWERTIP),
|
||
- tipObject = element.data(DATA_POWERTIPJQ),
|
||
- tipTarget = element.data(DATA_POWERTIPTARGET),
|
||
- targetElement,
|
||
- content;
|
||
-
|
||
- if (tipText) {
|
||
- if ($.isFunction(tipText)) {
|
||
- tipText = tipText.call(element[0]);
|
||
- }
|
||
- content = tipText;
|
||
- } else if (tipObject) {
|
||
- if ($.isFunction(tipObject)) {
|
||
- tipObject = tipObject.call(element[0]);
|
||
- }
|
||
- if (tipObject.length > 0) {
|
||
- content = tipObject.clone(true, true);
|
||
- }
|
||
- } else if (tipTarget) {
|
||
- targetElement = $('#' + tipTarget);
|
||
- if (targetElement.length > 0) {
|
||
- content = targetElement.html();
|
||
- }
|
||
- }
|
||
-
|
||
- return content;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Finds any viewport collisions that an element (the tooltip) would have if it
|
||
- * were absolutely positioned at the specified coordinates.
|
||
- * @private
|
||
- * @param {CSSCoordinates} coords Coordinates for the element.
|
||
- * @param {number} elementWidth Width of the element in pixels.
|
||
- * @param {number} elementHeight Height of the element in pixels.
|
||
- * @return {number} Value with the collision flags.
|
||
- */
|
||
- function getViewportCollisions(coords, elementWidth, elementHeight) {
|
||
- var viewportTop = session.scrollTop,
|
||
- viewportLeft = session.scrollLeft,
|
||
- viewportBottom = viewportTop + session.windowHeight,
|
||
- viewportRight = viewportLeft + session.windowWidth,
|
||
- collisions = Collision.none;
|
||
-
|
||
- if (coords.top < viewportTop || Math.abs(coords.bottom - session.windowHeight) - elementHeight < viewportTop) {
|
||
- collisions |= Collision.top;
|
||
- }
|
||
- if (coords.top + elementHeight > viewportBottom || Math.abs(coords.bottom - session.windowHeight) > viewportBottom) {
|
||
- collisions |= Collision.bottom;
|
||
- }
|
||
- if (coords.left < viewportLeft || coords.right + elementWidth > viewportRight) {
|
||
- collisions |= Collision.left;
|
||
- }
|
||
- if (coords.left + elementWidth > viewportRight || coords.right < viewportLeft) {
|
||
- collisions |= Collision.right;
|
||
- }
|
||
-
|
||
- return collisions;
|
||
- }
|
||
-
|
||
- /**
|
||
- * Counts the number of bits set on a flags value.
|
||
- * @param {number} value The flags value.
|
||
- * @return {number} The number of bits that have been set.
|
||
- */
|
||
- function countFlags(value) {
|
||
- var count = 0;
|
||
- while (value) {
|
||
- value &= value - 1;
|
||
- count++;
|
||
- }
|
||
- return count;
|
||
- }
|
||
-
|
||
-}));
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.powertip-1.3.1.mod.js doxygen-1.8.14/jquery/jquery.powertip-1.3.1.mod.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.powertip-1.3.1.mod.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.powertip-1.3.1.mod.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,1324 @@
|
||
+/*!
|
||
+ PowerTip v1.3.1 (2018-04-15)
|
||
+ https://stevenbenner.github.io/jquery-powertip/
|
||
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
|
||
+ Released under MIT license.
|
||
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
|
||
+*/
|
||
+(function(root, factory) {
|
||
+ // support loading the plugin via common patterns
|
||
+ if (typeof define === 'function' && define.amd) {
|
||
+ // load the plugin as an amd module
|
||
+ define([ 'jquery' ], factory);
|
||
+ } else if (typeof module === 'object' && module.exports) {
|
||
+ // load the plugin as a commonjs module
|
||
+ module.exports = factory(require('jquery'));
|
||
+ } else {
|
||
+ // load the plugin as a global
|
||
+ factory(root.jQuery);
|
||
+ }
|
||
+}(this, function($) {
|
||
+ // useful private variables
|
||
+ var $document = $(document),
|
||
+ $window = $(window),
|
||
+ $body = $('body');
|
||
+
|
||
+ // constants
|
||
+ var DATA_DISPLAYCONTROLLER = 'displayController',
|
||
+ DATA_HASACTIVEHOVER = 'hasActiveHover',
|
||
+ DATA_FORCEDOPEN = 'forcedOpen',
|
||
+ DATA_HASMOUSEMOVE = 'hasMouseMove',
|
||
+ DATA_MOUSEONTOTIP = 'mouseOnToPopup',
|
||
+ DATA_ORIGINALTITLE = 'originalTitle',
|
||
+ DATA_POWERTIP = 'powertip',
|
||
+ DATA_POWERTIPJQ = 'powertipjq',
|
||
+ DATA_POWERTIPTARGET = 'powertiptarget',
|
||
+ EVENT_NAMESPACE = '.powertip',
|
||
+ RAD2DEG = 180 / Math.PI,
|
||
+ MOUSE_EVENTS = [
|
||
+ 'click',
|
||
+ 'dblclick',
|
||
+ 'mousedown',
|
||
+ 'mouseup',
|
||
+ 'mousemove',
|
||
+ 'mouseover',
|
||
+ 'mouseout',
|
||
+ 'mouseenter',
|
||
+ 'mouseleave',
|
||
+ 'contextmenu'
|
||
+ ];
|
||
+
|
||
+ /**
|
||
+ * Session data
|
||
+ * Private properties global to all powerTip instances
|
||
+ */
|
||
+ var session = {
|
||
+ tooltips: null,
|
||
+ isTipOpen: false,
|
||
+ isFixedTipOpen: false,
|
||
+ isClosing: false,
|
||
+ tipOpenImminent: false,
|
||
+ activeHover: null,
|
||
+ currentX: 0,
|
||
+ currentY: 0,
|
||
+ previousX: 0,
|
||
+ previousY: 0,
|
||
+ desyncTimeout: null,
|
||
+ closeDelayTimeout: null,
|
||
+ mouseTrackingActive: false,
|
||
+ delayInProgress: false,
|
||
+ windowWidth: 0,
|
||
+ windowHeight: 0,
|
||
+ scrollTop: 0,
|
||
+ scrollLeft: 0
|
||
+ };
|
||
+
|
||
+ /**
|
||
+ * Collision enumeration
|
||
+ * @enum {number}
|
||
+ */
|
||
+ var Collision = {
|
||
+ none: 0,
|
||
+ top: 1,
|
||
+ bottom: 2,
|
||
+ left: 4,
|
||
+ right: 8
|
||
+ };
|
||
+
|
||
+ /**
|
||
+ * Display hover tooltips on the matched elements.
|
||
+ * @param {(Object|string)=} opts The options object to use for the plugin, or
|
||
+ * the name of a method to invoke on the first matched element.
|
||
+ * @param {*=} [arg] Argument for an invoked method (optional).
|
||
+ * @return {jQuery} jQuery object for the matched selectors.
|
||
+ */
|
||
+ $.fn.powerTip = function(opts, arg) {
|
||
+ var targetElements = this,
|
||
+ options,
|
||
+ tipController;
|
||
+
|
||
+ // don't do any work if there were no matched elements
|
||
+ if (!targetElements.length) {
|
||
+ return targetElements;
|
||
+ }
|
||
+
|
||
+ // handle api method calls on the plugin, e.g. powerTip('hide')
|
||
+ if ($.type(opts) === 'string' && $.powerTip[opts]) {
|
||
+ return $.powerTip[opts].call(targetElements, targetElements, arg);
|
||
+ }
|
||
+
|
||
+ // extend options
|
||
+ options = $.extend({}, $.fn.powerTip.defaults, opts);
|
||
+
|
||
+ // instantiate the TooltipController for this instance
|
||
+ tipController = new TooltipController(options);
|
||
+
|
||
+ // hook mouse and viewport dimension tracking
|
||
+ initTracking();
|
||
+
|
||
+ // setup the elements
|
||
+ targetElements.each(function elementSetup() {
|
||
+ var $this = $(this),
|
||
+ dataPowertip = $this.data(DATA_POWERTIP),
|
||
+ dataElem = $this.data(DATA_POWERTIPJQ),
|
||
+ dataTarget = $this.data(DATA_POWERTIPTARGET),
|
||
+ title = $this.attr('title');
|
||
+
|
||
+ // attempt to use title attribute text if there is no data-powertip,
|
||
+ // data-powertipjq or data-powertiptarget. If we do use the title
|
||
+ // attribute, delete the attribute so the browser will not show it
|
||
+ if (!dataPowertip && !dataTarget && !dataElem && title) {
|
||
+ $this.data(DATA_POWERTIP, title);
|
||
+ $this.data(DATA_ORIGINALTITLE, title);
|
||
+ $this.removeAttr('title');
|
||
+ }
|
||
+
|
||
+ // create hover controllers for each element
|
||
+ $this.data(
|
||
+ DATA_DISPLAYCONTROLLER,
|
||
+ new DisplayController($this, options, tipController)
|
||
+ );
|
||
+ });
|
||
+
|
||
+ // attach events to matched elements if the manual option is not enabled
|
||
+ if (!options.manual) {
|
||
+ // attach open events
|
||
+ $.each(options.openEvents, function(idx, evt) {
|
||
+ if ($.inArray(evt, options.closeEvents) > -1) {
|
||
+ // event is in both openEvents and closeEvents, so toggle it
|
||
+ targetElements.on(evt + EVENT_NAMESPACE, function elementToggle(event) {
|
||
+ $.powerTip.toggle(this, event);
|
||
+ });
|
||
+ } else {
|
||
+ targetElements.on(evt + EVENT_NAMESPACE, function elementOpen(event) {
|
||
+ $.powerTip.show(this, event);
|
||
+ });
|
||
+ }
|
||
+ });
|
||
+
|
||
+ // attach close events
|
||
+ $.each(options.closeEvents, function(idx, evt) {
|
||
+ if ($.inArray(evt, options.openEvents) < 0) {
|
||
+ targetElements.on(evt + EVENT_NAMESPACE, function elementClose(event) {
|
||
+ // set immediate to true for any event without mouse info
|
||
+ $.powerTip.hide(this, !isMouseEvent(event));
|
||
+ });
|
||
+ }
|
||
+ });
|
||
+
|
||
+ // attach escape key close event
|
||
+ targetElements.on('keydown' + EVENT_NAMESPACE, function elementKeyDown(event) {
|
||
+ // always close tooltip when the escape key is pressed
|
||
+ if (event.keyCode === 27) {
|
||
+ $.powerTip.hide(this, true);
|
||
+ }
|
||
+ });
|
||
+ }
|
||
+
|
||
+ return targetElements;
|
||
+ };
|
||
+
|
||
+ /**
|
||
+ * Default options for the powerTip plugin.
|
||
+ */
|
||
+ $.fn.powerTip.defaults = {
|
||
+ fadeInTime: 200,
|
||
+ fadeOutTime: 100,
|
||
+ followMouse: false,
|
||
+ popupId: 'powerTip',
|
||
+ popupClass: null,
|
||
+ intentSensitivity: 7,
|
||
+ intentPollInterval: 100,
|
||
+ closeDelay: 100,
|
||
+ placement: 'n',
|
||
+ smartPlacement: false,
|
||
+ offset: 10,
|
||
+ mouseOnToPopup: false,
|
||
+ manual: false,
|
||
+ openEvents: [ 'mouseenter', 'focus' ],
|
||
+ closeEvents: [ 'mouseleave', 'blur' ]
|
||
+ };
|
||
+
|
||
+ /**
|
||
+ * Default smart placement priority lists.
|
||
+ * The first item in the array is the highest priority, the last is the lowest.
|
||
+ * The last item is also the default, which will be used if all previous options
|
||
+ * do not fit.
|
||
+ */
|
||
+ $.fn.powerTip.smartPlacementLists = {
|
||
+ n: [ 'n', 'ne', 'nw', 's' ],
|
||
+ e: [ 'e', 'ne', 'se', 'w', 'nw', 'sw', 'n', 's', 'e' ],
|
||
+ s: [ 's', 'se', 'sw', 'n' ],
|
||
+ w: [ 'w', 'nw', 'sw', 'e', 'ne', 'se', 'n', 's', 'w' ],
|
||
+ nw: [ 'nw', 'w', 'sw', 'n', 's', 'se', 'nw' ],
|
||
+ ne: [ 'ne', 'e', 'se', 'n', 's', 'sw', 'ne' ],
|
||
+ sw: [ 'sw', 'w', 'nw', 's', 'n', 'ne', 'sw' ],
|
||
+ se: [ 'se', 'e', 'ne', 's', 'n', 'nw', 'se' ],
|
||
+ 'nw-alt': [ 'nw-alt', 'n', 'ne-alt', 'sw-alt', 's', 'se-alt', 'w', 'e' ],
|
||
+ 'ne-alt': [ 'ne-alt', 'n', 'nw-alt', 'se-alt', 's', 'sw-alt', 'e', 'w' ],
|
||
+ 'sw-alt': [ 'sw-alt', 's', 'se-alt', 'nw-alt', 'n', 'ne-alt', 'w', 'e' ],
|
||
+ 'se-alt': [ 'se-alt', 's', 'sw-alt', 'ne-alt', 'n', 'nw-alt', 'e', 'w' ]
|
||
+ };
|
||
+
|
||
+ /**
|
||
+ * Public API
|
||
+ */
|
||
+ $.powerTip = {
|
||
+ /**
|
||
+ * Attempts to show the tooltip for the specified element.
|
||
+ * @param {jQuery|Element} element The element to open the tooltip for.
|
||
+ * @param {jQuery.Event=} event jQuery event for hover intent and mouse
|
||
+ * tracking (optional).
|
||
+ * @return {jQuery|Element} The original jQuery object or DOM Element.
|
||
+ */
|
||
+ show: function apiShowTip(element, event) {
|
||
+ // if we were given a mouse event then run the hover intent testing,
|
||
+ // otherwise, simply show the tooltip asap
|
||
+ if (isMouseEvent(event)) {
|
||
+ trackMouse(event);
|
||
+ session.previousX = event.pageX;
|
||
+ session.previousY = event.pageY;
|
||
+ $(element).data(DATA_DISPLAYCONTROLLER).show();
|
||
+ } else {
|
||
+ $(element).first().data(DATA_DISPLAYCONTROLLER).show(true, true);
|
||
+ }
|
||
+ return element;
|
||
+ },
|
||
+
|
||
+ /**
|
||
+ * Repositions the tooltip on the element.
|
||
+ * @param {jQuery|Element} element The element the tooltip is shown for.
|
||
+ * @return {jQuery|Element} The original jQuery object or DOM Element.
|
||
+ */
|
||
+ reposition: function apiResetPosition(element) {
|
||
+ $(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();
|
||
+ return element;
|
||
+ },
|
||
+
|
||
+ /**
|
||
+ * Attempts to close any open tooltips.
|
||
+ * @param {(jQuery|Element)=} element The element with the tooltip that
|
||
+ * should be closed (optional).
|
||
+ * @param {boolean=} immediate Disable close delay (optional).
|
||
+ * @return {jQuery|Element|undefined} The original jQuery object or DOM
|
||
+ * Element, if one was specified.
|
||
+ */
|
||
+ hide: function apiCloseTip(element, immediate) {
|
||
+ var displayController;
|
||
+
|
||
+ // set immediate to true when no element is specified
|
||
+ immediate = element ? immediate : true;
|
||
+
|
||
+ // find the relevant display controller
|
||
+ if (element) {
|
||
+ displayController = $(element).first().data(DATA_DISPLAYCONTROLLER);
|
||
+ } else if (session.activeHover) {
|
||
+ displayController = session.activeHover.data(DATA_DISPLAYCONTROLLER);
|
||
+ }
|
||
+
|
||
+ // if found, hide the tip
|
||
+ if (displayController) {
|
||
+ displayController.hide(immediate);
|
||
+ }
|
||
+
|
||
+ return element;
|
||
+ },
|
||
+
|
||
+ /**
|
||
+ * Toggles the tooltip for the specified element. This will open a closed
|
||
+ * tooltip, or close an open tooltip.
|
||
+ * @param {jQuery|Element} element The element with the tooltip that
|
||
+ * should be toggled.
|
||
+ * @param {jQuery.Event=} event jQuery event for hover intent and mouse
|
||
+ * tracking (optional).
|
||
+ * @return {jQuery|Element} The original jQuery object or DOM Element.
|
||
+ */
|
||
+ toggle: function apiToggle(element, event) {
|
||
+ if (session.activeHover && session.activeHover.is(element)) {
|
||
+ // tooltip for element is active, so close it
|
||
+ $.powerTip.hide(element, !isMouseEvent(event));
|
||
+ } else {
|
||
+ // tooltip for element is not active, so open it
|
||
+ $.powerTip.show(element, event);
|
||
+ }
|
||
+ return element;
|
||
+ },
|
||
+
|
||
+ };
|
||
+
|
||
+ // API aliasing
|
||
+ $.powerTip.showTip = $.powerTip.show;
|
||
+ $.powerTip.closeTip = $.powerTip.hide;
|
||
+
|
||
+ /**
|
||
+ * Creates a new CSSCoordinates object.
|
||
+ * @private
|
||
+ * @constructor
|
||
+ */
|
||
+ function CSSCoordinates() {
|
||
+ var me = this;
|
||
+
|
||
+ // initialize object properties
|
||
+ me.top = 'auto';
|
||
+ me.left = 'auto';
|
||
+ me.right = 'auto';
|
||
+ me.bottom = 'auto';
|
||
+
|
||
+ /**
|
||
+ * Set a property to a value.
|
||
+ * @private
|
||
+ * @param {string} property The name of the property.
|
||
+ * @param {number} value The value of the property.
|
||
+ */
|
||
+ me.set = function(property, value) {
|
||
+ if ($.isNumeric(value)) {
|
||
+ me[property] = Math.round(value);
|
||
+ }
|
||
+ };
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Creates a new tooltip display controller.
|
||
+ * @private
|
||
+ * @constructor
|
||
+ * @param {jQuery} element The element that this controller will handle.
|
||
+ * @param {Object} options Options object containing settings.
|
||
+ * @param {TooltipController} tipController The TooltipController object for
|
||
+ * this instance.
|
||
+ */
|
||
+ function DisplayController(element, options, tipController) {
|
||
+ var hoverTimer = null,
|
||
+ myCloseDelay = null;
|
||
+
|
||
+ /**
|
||
+ * Begins the process of showing a tooltip.
|
||
+ * @private
|
||
+ * @param {boolean=} immediate Skip intent testing (optional).
|
||
+ * @param {boolean=} forceOpen Ignore cursor position and force tooltip to
|
||
+ * open (optional).
|
||
+ */
|
||
+ function openTooltip(immediate, forceOpen) {
|
||
+ cancelTimer();
|
||
+ if (!element.data(DATA_HASACTIVEHOVER)) {
|
||
+ if (!immediate) {
|
||
+ session.tipOpenImminent = true;
|
||
+ hoverTimer = setTimeout(
|
||
+ function intentDelay() {
|
||
+ hoverTimer = null;
|
||
+ checkForIntent();
|
||
+ },
|
||
+ options.intentPollInterval
|
||
+ );
|
||
+ } else {
|
||
+ if (forceOpen) {
|
||
+ element.data(DATA_FORCEDOPEN, true);
|
||
+ }
|
||
+ closeAnyDelayed();
|
||
+ tipController.showTip(element);
|
||
+ }
|
||
+ } else {
|
||
+ // cursor left and returned to this element, cancel close
|
||
+ cancelClose();
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Begins the process of closing a tooltip.
|
||
+ * @private
|
||
+ * @param {boolean=} disableDelay Disable close delay (optional).
|
||
+ */
|
||
+ function closeTooltip(disableDelay) {
|
||
+ // if this instance already has a close delay in progress then halt it
|
||
+ if (myCloseDelay) {
|
||
+ myCloseDelay = session.closeDelayTimeout = clearTimeout(myCloseDelay);
|
||
+ session.delayInProgress = false;
|
||
+ }
|
||
+ cancelTimer();
|
||
+ session.tipOpenImminent = false;
|
||
+ if (element.data(DATA_HASACTIVEHOVER)) {
|
||
+ element.data(DATA_FORCEDOPEN, false);
|
||
+ if (!disableDelay) {
|
||
+ session.delayInProgress = true;
|
||
+ session.closeDelayTimeout = setTimeout(
|
||
+ function closeDelay() {
|
||
+ session.closeDelayTimeout = null;
|
||
+ tipController.hideTip(element);
|
||
+ session.delayInProgress = false;
|
||
+ myCloseDelay = null;
|
||
+ },
|
||
+ options.closeDelay
|
||
+ );
|
||
+ // save internal reference close delay id so we can check if the
|
||
+ // active close delay belongs to this instance
|
||
+ myCloseDelay = session.closeDelayTimeout;
|
||
+ } else {
|
||
+ tipController.hideTip(element);
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Checks mouse position to make sure that the user intended to hover on the
|
||
+ * specified element before showing the tooltip.
|
||
+ * @private
|
||
+ */
|
||
+ function checkForIntent() {
|
||
+ // calculate mouse position difference
|
||
+ var xDifference = Math.abs(session.previousX - session.currentX),
|
||
+ yDifference = Math.abs(session.previousY - session.currentY),
|
||
+ totalDifference = xDifference + yDifference;
|
||
+
|
||
+ // check if difference has passed the sensitivity threshold
|
||
+ if (totalDifference < options.intentSensitivity) {
|
||
+ cancelClose();
|
||
+ closeAnyDelayed();
|
||
+ tipController.showTip(element);
|
||
+ } else {
|
||
+ // try again
|
||
+ session.previousX = session.currentX;
|
||
+ session.previousY = session.currentY;
|
||
+ openTooltip();
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Cancels active hover timer.
|
||
+ * @private
|
||
+ * @param {boolean=} stopClose Cancel any active close delay timer.
|
||
+ */
|
||
+ function cancelTimer(stopClose) {
|
||
+ hoverTimer = clearTimeout(hoverTimer);
|
||
+ // cancel the current close delay if the active close delay is for this
|
||
+ // element or the stopClose argument is true
|
||
+ if (session.closeDelayTimeout && myCloseDelay === session.closeDelayTimeout || stopClose) {
|
||
+ cancelClose();
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Cancels any active close delay timer.
|
||
+ * @private
|
||
+ */
|
||
+ function cancelClose() {
|
||
+ session.closeDelayTimeout = clearTimeout(session.closeDelayTimeout);
|
||
+ session.delayInProgress = false;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Asks any tooltips waiting on their close delay to close now.
|
||
+ * @private
|
||
+ */
|
||
+ function closeAnyDelayed() {
|
||
+ // if another element is waiting for its close delay then we should ask
|
||
+ // it to close immediately so we can proceed without unexpected timeout
|
||
+ // code being run during this tooltip's lifecycle
|
||
+ if (session.delayInProgress && session.activeHover && !session.activeHover.is(element)) {
|
||
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Repositions the tooltip on this element.
|
||
+ * @private
|
||
+ */
|
||
+ function repositionTooltip() {
|
||
+ tipController.resetPosition(element);
|
||
+ }
|
||
+
|
||
+ // expose the methods
|
||
+ this.show = openTooltip;
|
||
+ this.hide = closeTooltip;
|
||
+ this.cancel = cancelTimer;
|
||
+ this.resetPosition = repositionTooltip;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Creates a new Placement Calculator.
|
||
+ * @private
|
||
+ * @constructor
|
||
+ */
|
||
+ function PlacementCalculator() {
|
||
+ /**
|
||
+ * Compute the CSS position to display a tooltip at the specified placement
|
||
+ * relative to the specified element.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ * @param {string} placement The placement for the tooltip.
|
||
+ * @param {number} tipWidth Width of the tooltip element in pixels.
|
||
+ * @param {number} tipHeight Height of the tooltip element in pixels.
|
||
+ * @param {number} offset Distance to offset tooltips in pixels.
|
||
+ * @return {CSSCoordinates} A CSSCoordinates object with the position.
|
||
+ */
|
||
+ function computePlacementCoords(element, placement, tipWidth, tipHeight, offset) {
|
||
+ var placementBase = placement.split('-')[0], // ignore 'alt' for corners
|
||
+ coords = new CSSCoordinates(),
|
||
+ position;
|
||
+
|
||
+ if (isSvgElement(element)) {
|
||
+ position = getSvgPlacement(element, placementBase);
|
||
+ } else {
|
||
+ position = getHtmlPlacement(element, placementBase);
|
||
+ }
|
||
+
|
||
+ // calculate the appropriate x and y position in the document
|
||
+ switch (placement) {
|
||
+ case 'n':
|
||
+ coords.set('left', position.left - (tipWidth / 2));
|
||
+ coords.set('bottom', session.windowHeight - position.top + offset);
|
||
+ break;
|
||
+ case 'e':
|
||
+ coords.set('left', position.left + offset);
|
||
+ coords.set('top', position.top - (tipHeight / 2));
|
||
+ break;
|
||
+ case 's':
|
||
+ coords.set('left', position.left - (tipWidth / 2));
|
||
+ coords.set('top', position.top + offset);
|
||
+ break;
|
||
+ case 'w':
|
||
+ coords.set('top', position.top - (tipHeight / 2));
|
||
+ coords.set('right', session.windowWidth - position.left + offset);
|
||
+ break;
|
||
+ case 'nw':
|
||
+ coords.set('bottom', session.windowHeight - position.top + offset);
|
||
+ coords.set('right', session.windowWidth - position.left - 20);
|
||
+ break;
|
||
+ case 'nw-alt':
|
||
+ coords.set('left', position.left);
|
||
+ coords.set('bottom', session.windowHeight - position.top + offset);
|
||
+ break;
|
||
+ case 'ne':
|
||
+ coords.set('left', position.left - 20);
|
||
+ coords.set('bottom', session.windowHeight - position.top + offset);
|
||
+ break;
|
||
+ case 'ne-alt':
|
||
+ coords.set('bottom', session.windowHeight - position.top + offset);
|
||
+ coords.set('right', session.windowWidth - position.left);
|
||
+ break;
|
||
+ case 'sw':
|
||
+ coords.set('top', position.top + offset);
|
||
+ coords.set('right', session.windowWidth - position.left - 20);
|
||
+ break;
|
||
+ case 'sw-alt':
|
||
+ coords.set('left', position.left);
|
||
+ coords.set('top', position.top + offset);
|
||
+ break;
|
||
+ case 'se':
|
||
+ coords.set('left', position.left - 20);
|
||
+ coords.set('top', position.top + offset);
|
||
+ break;
|
||
+ case 'se-alt':
|
||
+ coords.set('top', position.top + offset);
|
||
+ coords.set('right', session.windowWidth - position.left);
|
||
+ break;
|
||
+ }
|
||
+
|
||
+ return coords;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Finds the tooltip attachment point in the document for a HTML DOM element
|
||
+ * for the specified placement.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ * @param {string} placement The placement for the tooltip.
|
||
+ * @return {Object} An object with the top,left position values.
|
||
+ */
|
||
+ function getHtmlPlacement(element, placement) {
|
||
+ var objectOffset = element.offset(),
|
||
+ objectWidth = element.outerWidth(),
|
||
+ objectHeight = element.outerHeight(),
|
||
+ left,
|
||
+ top;
|
||
+
|
||
+ // calculate the appropriate x and y position in the document
|
||
+ switch (placement) {
|
||
+ case 'n':
|
||
+ left = objectOffset.left + objectWidth / 2;
|
||
+ top = objectOffset.top;
|
||
+ break;
|
||
+ case 'e':
|
||
+ left = objectOffset.left + objectWidth;
|
||
+ top = objectOffset.top + objectHeight / 2;
|
||
+ break;
|
||
+ case 's':
|
||
+ left = objectOffset.left + objectWidth / 2;
|
||
+ top = objectOffset.top + objectHeight;
|
||
+ break;
|
||
+ case 'w':
|
||
+ left = objectOffset.left;
|
||
+ top = objectOffset.top + objectHeight / 2;
|
||
+ break;
|
||
+ case 'nw':
|
||
+ left = objectOffset.left;
|
||
+ top = objectOffset.top;
|
||
+ break;
|
||
+ case 'ne':
|
||
+ left = objectOffset.left + objectWidth;
|
||
+ top = objectOffset.top;
|
||
+ break;
|
||
+ case 'sw':
|
||
+ left = objectOffset.left;
|
||
+ top = objectOffset.top + objectHeight;
|
||
+ break;
|
||
+ case 'se':
|
||
+ left = objectOffset.left + objectWidth;
|
||
+ top = objectOffset.top + objectHeight;
|
||
+ break;
|
||
+ }
|
||
+
|
||
+ return {
|
||
+ top: top,
|
||
+ left: left
|
||
+ };
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Finds the tooltip attachment point in the document for a SVG element for
|
||
+ * the specified placement.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ * @param {string} placement The placement for the tooltip.
|
||
+ * @return {Object} An object with the top,left position values.
|
||
+ */
|
||
+ function getSvgPlacement(element, placement) {
|
||
+ var svgElement = element.closest('svg')[0],
|
||
+ domElement = element[0],
|
||
+ point = svgElement.createSVGPoint(),
|
||
+ boundingBox = domElement.getBBox(),
|
||
+ matrix = domElement.getScreenCTM(),
|
||
+ halfWidth = boundingBox.width / 2,
|
||
+ halfHeight = boundingBox.height / 2,
|
||
+ placements = [],
|
||
+ placementKeys = [ 'nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w' ],
|
||
+ coords,
|
||
+ rotation,
|
||
+ steps,
|
||
+ x;
|
||
+
|
||
+ /**
|
||
+ * Transform and append the current points to the placements list.
|
||
+ * @private
|
||
+ */
|
||
+ function pushPlacement() {
|
||
+ placements.push(point.matrixTransform(matrix));
|
||
+ }
|
||
+
|
||
+ // get bounding box corners and midpoints
|
||
+ point.x = boundingBox.x;
|
||
+ point.y = boundingBox.y;
|
||
+ pushPlacement();
|
||
+ point.x += halfWidth;
|
||
+ pushPlacement();
|
||
+ point.x += halfWidth;
|
||
+ pushPlacement();
|
||
+ point.y += halfHeight;
|
||
+ pushPlacement();
|
||
+ point.y += halfHeight;
|
||
+ pushPlacement();
|
||
+ point.x -= halfWidth;
|
||
+ pushPlacement();
|
||
+ point.x -= halfWidth;
|
||
+ pushPlacement();
|
||
+ point.y -= halfHeight;
|
||
+ pushPlacement();
|
||
+
|
||
+ // determine rotation
|
||
+ if (placements[0].y !== placements[1].y || placements[0].x !== placements[7].x) {
|
||
+ rotation = Math.atan2(matrix.b, matrix.a) * RAD2DEG;
|
||
+ steps = Math.ceil(((rotation % 360) - 22.5) / 45);
|
||
+ if (steps < 1) {
|
||
+ steps += 8;
|
||
+ }
|
||
+ while (steps--) {
|
||
+ placementKeys.push(placementKeys.shift());
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // find placement
|
||
+ for (x = 0; x < placements.length; x++) {
|
||
+ if (placementKeys[x] === placement) {
|
||
+ coords = placements[x];
|
||
+ break;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ return {
|
||
+ top: coords.y + session.scrollTop,
|
||
+ left: coords.x + session.scrollLeft
|
||
+ };
|
||
+ }
|
||
+
|
||
+ // expose methods
|
||
+ this.compute = computePlacementCoords;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Creates a new tooltip controller.
|
||
+ * @private
|
||
+ * @constructor
|
||
+ * @param {Object} options Options object containing settings.
|
||
+ */
|
||
+ function TooltipController(options) {
|
||
+ var placementCalculator = new PlacementCalculator(),
|
||
+ tipElement = $('#' + options.popupId);
|
||
+
|
||
+ // build and append tooltip div if it does not already exist
|
||
+ if (tipElement.length === 0) {
|
||
+ tipElement = $('<div/>', { id: options.popupId });
|
||
+ // grab body element if it was not populated when the script loaded
|
||
+ // note: this hack exists solely for jsfiddle support
|
||
+ if ($body.length === 0) {
|
||
+ $body = $('body');
|
||
+ }
|
||
+ $body.append(tipElement);
|
||
+ // remember the tooltip elements that the plugin has created
|
||
+ session.tooltips = session.tooltips ? session.tooltips.add(tipElement) : tipElement;
|
||
+ }
|
||
+
|
||
+ // hook mousemove for cursor follow tooltips
|
||
+ if (options.followMouse) {
|
||
+ // only one positionTipOnCursor hook per tooltip element, please
|
||
+ if (!tipElement.data(DATA_HASMOUSEMOVE)) {
|
||
+ $document.on('mousemove' + EVENT_NAMESPACE, positionTipOnCursor);
|
||
+ $window.on('scroll' + EVENT_NAMESPACE, positionTipOnCursor);
|
||
+ tipElement.data(DATA_HASMOUSEMOVE, true);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Gives the specified element the active-hover state and queues up the
|
||
+ * showTip function.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ */
|
||
+ function beginShowTip(element) {
|
||
+ element.data(DATA_HASACTIVEHOVER, true);
|
||
+ // show tooltip, asap
|
||
+ tipElement.queue(function queueTipInit(next) {
|
||
+ showTip(element);
|
||
+ next();
|
||
+ });
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Shows the tooltip, as soon as possible.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ */
|
||
+ function showTip(element) {
|
||
+ var tipContent;
|
||
+
|
||
+ // it is possible, especially with keyboard navigation, to move on to
|
||
+ // another element with a tooltip during the queue to get to this point
|
||
+ // in the code. if that happens then we need to not proceed or we may
|
||
+ // have the fadeout callback for the last tooltip execute immediately
|
||
+ // after this code runs, causing bugs.
|
||
+ if (!element.data(DATA_HASACTIVEHOVER)) {
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ // if the tooltip is open and we got asked to open another one then the
|
||
+ // old one is still in its fadeOut cycle, so wait and try again
|
||
+ if (session.isTipOpen) {
|
||
+ if (!session.isClosing) {
|
||
+ hideTip(session.activeHover);
|
||
+ }
|
||
+ tipElement.delay(100).queue(function queueTipAgain(next) {
|
||
+ showTip(element);
|
||
+ next();
|
||
+ });
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ // trigger powerTipPreRender event
|
||
+ element.trigger('powerTipPreRender');
|
||
+
|
||
+ // set tooltip content
|
||
+ tipContent = getTooltipContent(element);
|
||
+ if (tipContent) {
|
||
+ tipElement.empty().append(tipContent);
|
||
+ } else {
|
||
+ // we have no content to display, give up
|
||
+ return;
|
||
+ }
|
||
+
|
||
+ // trigger powerTipRender event
|
||
+ element.trigger('powerTipRender');
|
||
+
|
||
+ session.activeHover = element;
|
||
+ session.isTipOpen = true;
|
||
+
|
||
+ tipElement.data(DATA_MOUSEONTOTIP, options.mouseOnToPopup);
|
||
+
|
||
+ // add custom class to tooltip element
|
||
+ tipElement.addClass(options.popupClass);
|
||
+
|
||
+ // set tooltip position
|
||
+ // revert to static placement when the "force open" flag was set because
|
||
+ // that flag means that we do not have accurate mouse position info
|
||
+ if (!options.followMouse || element.data(DATA_FORCEDOPEN)) {
|
||
+ positionTipOnElement(element);
|
||
+ session.isFixedTipOpen = true;
|
||
+ } else {
|
||
+ positionTipOnCursor();
|
||
+ }
|
||
+
|
||
+ // close tooltip when clicking anywhere on the page, with the exception
|
||
+ // of the tooltip's trigger element and any elements that are within a
|
||
+ // tooltip that has 'mouseOnToPopup' option enabled
|
||
+ // always enable this feature when the "force open" flag is set on a
|
||
+ // followMouse tooltip because we reverted to static placement above
|
||
+ if (!element.data(DATA_FORCEDOPEN) && !options.followMouse) {
|
||
+ $document.on('click' + EVENT_NAMESPACE, function documentClick(event) {
|
||
+ var target = event.target;
|
||
+ if (target !== element[0]) {
|
||
+ if (options.mouseOnToPopup) {
|
||
+ if (target !== tipElement[0] && !$.contains(tipElement[0], target)) {
|
||
+ $.powerTip.hide();
|
||
+ }
|
||
+ } else {
|
||
+ $.powerTip.hide();
|
||
+ }
|
||
+ }
|
||
+ });
|
||
+ }
|
||
+
|
||
+ // if we want to be able to mouse on to the tooltip then we need to
|
||
+ // attach hover events to the tooltip that will cancel a close request
|
||
+ // on mouseenter and start a new close request on mouseleave
|
||
+ // only hook these listeners if we're not in manual mode
|
||
+ if (options.mouseOnToPopup && !options.manual) {
|
||
+ tipElement.on('mouseenter' + EVENT_NAMESPACE, function tipMouseEnter() {
|
||
+ // check activeHover in case the mouse cursor entered the
|
||
+ // tooltip during the fadeOut and close cycle
|
||
+ if (session.activeHover) {
|
||
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel();
|
||
+ }
|
||
+ });
|
||
+ tipElement.on('mouseleave' + EVENT_NAMESPACE, function tipMouseLeave() {
|
||
+ // check activeHover in case the mouse cursor left the tooltip
|
||
+ // during the fadeOut and close cycle
|
||
+ if (session.activeHover) {
|
||
+ session.activeHover.data(DATA_DISPLAYCONTROLLER).hide();
|
||
+ }
|
||
+ });
|
||
+ }
|
||
+
|
||
+ // fadein
|
||
+ tipElement.fadeIn(options.fadeInTime, function fadeInCallback() {
|
||
+ // start desync polling
|
||
+ if (!session.desyncTimeout) {
|
||
+ session.desyncTimeout = setInterval(closeDesyncedTip, 500);
|
||
+ }
|
||
+
|
||
+ // trigger powerTipOpen event
|
||
+ element.trigger('powerTipOpen');
|
||
+ });
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Hides the tooltip.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ */
|
||
+ function hideTip(element) {
|
||
+ // reset session
|
||
+ session.isClosing = true;
|
||
+ session.isTipOpen = false;
|
||
+
|
||
+ // stop desync polling
|
||
+ session.desyncTimeout = clearInterval(session.desyncTimeout);
|
||
+
|
||
+ // reset element state
|
||
+ element.data(DATA_HASACTIVEHOVER, false);
|
||
+ element.data(DATA_FORCEDOPEN, false);
|
||
+
|
||
+ // remove document click handler
|
||
+ $document.off('click' + EVENT_NAMESPACE);
|
||
+
|
||
+ // unbind the mouseOnToPopup events if they were set
|
||
+ tipElement.off(EVENT_NAMESPACE);
|
||
+
|
||
+ // fade out
|
||
+ tipElement.fadeOut(options.fadeOutTime, function fadeOutCallback() {
|
||
+ var coords = new CSSCoordinates();
|
||
+
|
||
+ // reset session and tooltip element
|
||
+ session.activeHover = null;
|
||
+ session.isClosing = false;
|
||
+ session.isFixedTipOpen = false;
|
||
+ tipElement.removeClass();
|
||
+
|
||
+ // support mouse-follow and fixed position tips at the same time by
|
||
+ // moving the tooltip to the last cursor location after it is hidden
|
||
+ coords.set('top', session.currentY + options.offset);
|
||
+ coords.set('left', session.currentX + options.offset);
|
||
+ tipElement.css(coords);
|
||
+
|
||
+ // trigger powerTipClose event
|
||
+ element.trigger('powerTipClose');
|
||
+ });
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Moves the tooltip to the users mouse cursor.
|
||
+ * @private
|
||
+ */
|
||
+ function positionTipOnCursor() {
|
||
+ var tipWidth,
|
||
+ tipHeight,
|
||
+ coords,
|
||
+ collisions,
|
||
+ collisionCount;
|
||
+
|
||
+ // to support having fixed tooltips on the same page as cursor tooltips,
|
||
+ // where both instances are referencing the same tooltip element, we
|
||
+ // need to keep track of the mouse position constantly, but we should
|
||
+ // only set the tip location if a fixed tip is not currently open, a tip
|
||
+ // open is imminent or active, and the tooltip element in question does
|
||
+ // have a mouse-follow using it.
|
||
+ if (!session.isFixedTipOpen && (session.isTipOpen || (session.tipOpenImminent && tipElement.data(DATA_HASMOUSEMOVE)))) {
|
||
+ // grab measurements
|
||
+ tipWidth = tipElement.outerWidth();
|
||
+ tipHeight = tipElement.outerHeight();
|
||
+ coords = new CSSCoordinates();
|
||
+
|
||
+ // grab collisions
|
||
+ coords.set('top', session.currentY + options.offset);
|
||
+ coords.set('left', session.currentX + options.offset);
|
||
+ collisions = getViewportCollisions(
|
||
+ coords,
|
||
+ tipWidth,
|
||
+ tipHeight
|
||
+ );
|
||
+
|
||
+ // handle tooltip view port collisions
|
||
+ if (collisions !== Collision.none) {
|
||
+ collisionCount = countFlags(collisions);
|
||
+ if (collisionCount === 1) {
|
||
+ // if there is only one collision (bottom or right) then
|
||
+ // simply constrain the tooltip to the view port
|
||
+ if (collisions === Collision.right) {
|
||
+ coords.set('left', session.scrollLeft + session.windowWidth - tipWidth);
|
||
+ } else if (collisions === Collision.bottom) {
|
||
+ coords.set('top', session.scrollTop + session.windowHeight - tipHeight);
|
||
+ }
|
||
+ } else {
|
||
+ // if the tooltip has more than one collision then it is
|
||
+ // trapped in the corner and should be flipped to get it out
|
||
+ // of the users way
|
||
+ coords.set('left', session.currentX - tipWidth - options.offset);
|
||
+ coords.set('top', session.currentY - tipHeight - options.offset);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // position the tooltip
|
||
+ tipElement.css(coords);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Sets the tooltip to the correct position relative to the specified target
|
||
+ * element. Based on options settings.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ */
|
||
+ function positionTipOnElement(element) {
|
||
+ var priorityList,
|
||
+ finalPlacement;
|
||
+
|
||
+ // when the followMouse option is enabled and the "force open" flag is
|
||
+ // set we revert to static positioning. since the developer may not have
|
||
+ // considered this scenario we should use smart placement
|
||
+ if (options.smartPlacement || (options.followMouse && element.data(DATA_FORCEDOPEN))) {
|
||
+ priorityList = $.fn.powerTip.smartPlacementLists[options.placement];
|
||
+
|
||
+ // iterate over the priority list and use the first placement option
|
||
+ // that does not collide with the view port. if they all collide
|
||
+ // then the last placement in the list will be used.
|
||
+ $.each(priorityList, function(idx, pos) {
|
||
+ // place tooltip and find collisions
|
||
+ var collisions = getViewportCollisions(
|
||
+ placeTooltip(element, pos),
|
||
+ tipElement.outerWidth(),
|
||
+ tipElement.outerHeight()
|
||
+ );
|
||
+
|
||
+ // update the final placement variable
|
||
+ finalPlacement = pos;
|
||
+
|
||
+ // break if there were no collisions
|
||
+ return collisions !== Collision.none;
|
||
+ });
|
||
+ } else {
|
||
+ // if we're not going to use the smart placement feature then just
|
||
+ // compute the coordinates and do it
|
||
+ placeTooltip(element, options.placement);
|
||
+ finalPlacement = options.placement;
|
||
+ }
|
||
+
|
||
+ // add placement as class for CSS arrows
|
||
+ tipElement.removeClass('w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt');
|
||
+ tipElement.addClass(finalPlacement);
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Sets the tooltip position to the appropriate values to show the tip at
|
||
+ * the specified placement. This function will iterate and test the tooltip
|
||
+ * to support elastic tooltips.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element that the tooltip should target.
|
||
+ * @param {string} placement The placement for the tooltip.
|
||
+ * @return {CSSCoordinates} A CSSCoordinates object with the top, left, and
|
||
+ * right position values.
|
||
+ */
|
||
+ function placeTooltip(element, placement) {
|
||
+ var iterationCount = 0,
|
||
+ tipWidth,
|
||
+ tipHeight,
|
||
+ coords = new CSSCoordinates();
|
||
+
|
||
+ // set the tip to 0,0 to get the full expanded width
|
||
+ coords.set('top', 0);
|
||
+ coords.set('left', 0);
|
||
+ tipElement.css(coords);
|
||
+
|
||
+ // to support elastic tooltips we need to check for a change in the
|
||
+ // rendered dimensions after the tooltip has been positioned
|
||
+ do {
|
||
+ // grab the current tip dimensions
|
||
+ tipWidth = tipElement.outerWidth();
|
||
+ tipHeight = tipElement.outerHeight();
|
||
+
|
||
+ // get placement coordinates
|
||
+ coords = placementCalculator.compute(
|
||
+ element,
|
||
+ placement,
|
||
+ tipWidth,
|
||
+ tipHeight,
|
||
+ options.offset
|
||
+ );
|
||
+
|
||
+ // place the tooltip
|
||
+ tipElement.css(coords);
|
||
+ } while (
|
||
+ // sanity check: limit to 5 iterations, and...
|
||
+ ++iterationCount <= 5 &&
|
||
+ // try again if the dimensions changed after placement
|
||
+ (tipWidth !== tipElement.outerWidth() || tipHeight !== tipElement.outerHeight())
|
||
+ );
|
||
+
|
||
+ return coords;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Checks for a tooltip desync and closes the tooltip if one occurs.
|
||
+ * @private
|
||
+ */
|
||
+ function closeDesyncedTip() {
|
||
+ var isDesynced = false,
|
||
+ hasDesyncableCloseEvent = $.grep(
|
||
+ [ 'mouseleave', 'mouseout', 'blur', 'focusout' ],
|
||
+ function(eventType) {
|
||
+ return $.inArray(eventType, options.closeEvents) !== -1;
|
||
+ }
|
||
+ ).length > 0;
|
||
+
|
||
+ // It is possible for the mouse cursor to leave an element without
|
||
+ // firing the mouseleave or blur event. This most commonly happens when
|
||
+ // the element is disabled under mouse cursor. If this happens it will
|
||
+ // result in a desynced tooltip because the tooltip was never asked to
|
||
+ // close. So we should periodically check for a desync situation and
|
||
+ // close the tip if such a situation arises.
|
||
+ if (session.isTipOpen && !session.isClosing && !session.delayInProgress && hasDesyncableCloseEvent) {
|
||
+ if (session.activeHover.data(DATA_HASACTIVEHOVER) === false || session.activeHover.is(':disabled')) {
|
||
+ // user moused onto another tip or active hover is disabled
|
||
+ isDesynced = true;
|
||
+ } else if (!isMouseOver(session.activeHover) && !session.activeHover.is(':focus') && !session.activeHover.data(DATA_FORCEDOPEN)) {
|
||
+ // hanging tip - have to test if mouse position is not over the
|
||
+ // active hover and not over a tooltip set to let the user
|
||
+ // interact with it.
|
||
+ // for keyboard navigation: this only counts if the element does
|
||
+ // not have focus.
|
||
+ // for tooltips opened via the api: we need to check if it has
|
||
+ // the forcedOpen flag.
|
||
+ if (tipElement.data(DATA_MOUSEONTOTIP)) {
|
||
+ if (!isMouseOver(tipElement)) {
|
||
+ isDesynced = true;
|
||
+ }
|
||
+ } else {
|
||
+ isDesynced = true;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ if (isDesynced) {
|
||
+ // close the desynced tip
|
||
+ hideTip(session.activeHover);
|
||
+ }
|
||
+ }
|
||
+ }
|
||
+
|
||
+ // expose methods
|
||
+ this.showTip = beginShowTip;
|
||
+ this.hideTip = hideTip;
|
||
+ this.resetPosition = positionTipOnElement;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Determine whether a jQuery object is an SVG element
|
||
+ * @private
|
||
+ * @param {jQuery} element The element to check
|
||
+ * @return {boolean} Whether this is an SVG element
|
||
+ */
|
||
+ function isSvgElement(element) {
|
||
+ return Boolean(window.SVGElement && element[0] instanceof SVGElement);
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Determines if the specified jQuery.Event object has mouse data.
|
||
+ * @private
|
||
+ * @param {jQuery.Event=} event The jQuery.Event object to test.
|
||
+ * @return {boolean} True if there is mouse data, otherwise false.
|
||
+ */
|
||
+ function isMouseEvent(event) {
|
||
+ return Boolean(event && $.inArray(event.type, MOUSE_EVENTS) > -1 &&
|
||
+ typeof event.pageX === 'number');
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Initializes the viewport dimension cache and hooks up the mouse position
|
||
+ * tracking and viewport dimension tracking events.
|
||
+ * Prevents attaching the events more than once.
|
||
+ * @private
|
||
+ */
|
||
+ function initTracking() {
|
||
+ if (!session.mouseTrackingActive) {
|
||
+ session.mouseTrackingActive = true;
|
||
+
|
||
+ // grab the current viewport dimensions on load
|
||
+ getViewportDimensions();
|
||
+ $(getViewportDimensions);
|
||
+
|
||
+ // hook mouse move tracking
|
||
+ $document.on('mousemove' + EVENT_NAMESPACE, trackMouse);
|
||
+
|
||
+ // hook viewport dimensions tracking
|
||
+ $window.on('resize' + EVENT_NAMESPACE, trackResize);
|
||
+ $window.on('scroll' + EVENT_NAMESPACE, trackScroll);
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Updates the viewport dimensions cache.
|
||
+ * @private
|
||
+ */
|
||
+ function getViewportDimensions() {
|
||
+ session.scrollLeft = $window.scrollLeft();
|
||
+ session.scrollTop = $window.scrollTop();
|
||
+ session.windowWidth = $window.width();
|
||
+ session.windowHeight = $window.height();
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Updates the window size info in the viewport dimensions cache.
|
||
+ * @private
|
||
+ */
|
||
+ function trackResize() {
|
||
+ session.windowWidth = $window.width();
|
||
+ session.windowHeight = $window.height();
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Updates the scroll offset info in the viewport dimensions cache.
|
||
+ * @private
|
||
+ */
|
||
+ function trackScroll() {
|
||
+ var x = $window.scrollLeft(),
|
||
+ y = $window.scrollTop();
|
||
+ if (x !== session.scrollLeft) {
|
||
+ session.currentX += x - session.scrollLeft;
|
||
+ session.scrollLeft = x;
|
||
+ }
|
||
+ if (y !== session.scrollTop) {
|
||
+ session.currentY += y - session.scrollTop;
|
||
+ session.scrollTop = y;
|
||
+ }
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Saves the current mouse coordinates to the session object.
|
||
+ * @private
|
||
+ * @param {jQuery.Event} event The mousemove event for the document.
|
||
+ */
|
||
+ function trackMouse(event) {
|
||
+ session.currentX = event.pageX;
|
||
+ session.currentY = event.pageY;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Tests if the mouse is currently over the specified element.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element to check for hover.
|
||
+ * @return {boolean} True if the mouse is over the element, otherwise false.
|
||
+ */
|
||
+ function isMouseOver(element) {
|
||
+ // use getBoundingClientRect() because jQuery's width() and height()
|
||
+ // methods do not work with SVG elements
|
||
+ // compute width/height because those properties do not exist on the object
|
||
+ // returned by getBoundingClientRect() in older versions of IE
|
||
+ var elementPosition = element.offset(),
|
||
+ elementBox = element[0].getBoundingClientRect(),
|
||
+ elementWidth = elementBox.right - elementBox.left,
|
||
+ elementHeight = elementBox.bottom - elementBox.top;
|
||
+
|
||
+ return session.currentX >= elementPosition.left &&
|
||
+ session.currentX <= elementPosition.left + elementWidth &&
|
||
+ session.currentY >= elementPosition.top &&
|
||
+ session.currentY <= elementPosition.top + elementHeight;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Fetches the tooltip content from the specified element's data attributes.
|
||
+ * @private
|
||
+ * @param {jQuery} element The element to get the tooltip content for.
|
||
+ * @return {(string|jQuery|undefined)} The text/HTML string, jQuery object, or
|
||
+ * undefined if there was no tooltip content for the element.
|
||
+ */
|
||
+ function getTooltipContent(element) {
|
||
+ var tipText = element.data(DATA_POWERTIP),
|
||
+ tipObject = element.data(DATA_POWERTIPJQ),
|
||
+ tipTarget = element.data(DATA_POWERTIPTARGET),
|
||
+ targetElement,
|
||
+ content;
|
||
+
|
||
+ if (tipText) {
|
||
+ if ($.isFunction(tipText)) {
|
||
+ tipText = tipText.call(element[0]);
|
||
+ }
|
||
+ content = tipText;
|
||
+ } else if (tipObject) {
|
||
+ if ($.isFunction(tipObject)) {
|
||
+ tipObject = tipObject.call(element[0]);
|
||
+ }
|
||
+ if (tipObject.length > 0) {
|
||
+ content = tipObject.clone(true, true);
|
||
+ }
|
||
+ } else if (tipTarget) {
|
||
+ targetElement = $('#' + tipTarget);
|
||
+ if (targetElement.length > 0) {
|
||
+ content = targetElement.html();
|
||
+ }
|
||
+ }
|
||
+
|
||
+ return content;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Finds any viewport collisions that an element (the tooltip) would have if it
|
||
+ * were absolutely positioned at the specified coordinates.
|
||
+ * @private
|
||
+ * @param {CSSCoordinates} coords Coordinates for the element.
|
||
+ * @param {number} elementWidth Width of the element in pixels.
|
||
+ * @param {number} elementHeight Height of the element in pixels.
|
||
+ * @return {number} Value with the collision flags.
|
||
+ */
|
||
+ function getViewportCollisions(coords, elementWidth, elementHeight) {
|
||
+ var viewportTop = session.scrollTop,
|
||
+ viewportLeft = session.scrollLeft,
|
||
+ viewportBottom = viewportTop + session.windowHeight,
|
||
+ viewportRight = viewportLeft + session.windowWidth,
|
||
+ collisions = Collision.none;
|
||
+
|
||
+ if (coords.top < viewportTop || Math.abs(coords.bottom - session.windowHeight) - elementHeight < viewportTop) {
|
||
+ collisions |= Collision.top;
|
||
+ }
|
||
+ if (coords.top + elementHeight > viewportBottom || Math.abs(coords.bottom - session.windowHeight) > viewportBottom) {
|
||
+ collisions |= Collision.bottom;
|
||
+ }
|
||
+ if (coords.left < viewportLeft || coords.right + elementWidth > viewportRight) {
|
||
+ collisions |= Collision.left;
|
||
+ }
|
||
+ if (coords.left + elementWidth > viewportRight || coords.right < viewportLeft) {
|
||
+ collisions |= Collision.right;
|
||
+ }
|
||
+
|
||
+ return collisions;
|
||
+ }
|
||
+
|
||
+ /**
|
||
+ * Counts the number of bits set on a flags value.
|
||
+ * @param {number} value The flags value.
|
||
+ * @return {number} The number of bits that have been set.
|
||
+ */
|
||
+ function countFlags(value) {
|
||
+ var count = 0;
|
||
+ while (value) {
|
||
+ value &= value - 1;
|
||
+ count++;
|
||
+ }
|
||
+ return count;
|
||
+ }
|
||
+
|
||
+ // return api for commonjs and amd environments
|
||
+ return $.powerTip;
|
||
+}));
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.powertip-1.3.1.mod.min.js doxygen-1.8.14/jquery/jquery.powertip-1.3.1.mod.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.powertip-1.3.1.mod.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.powertip-1.3.1.mod.min.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,8 @@
|
||
+/*!
|
||
+ PowerTip v1.3.1 (2018-04-15)
|
||
+ https://stevenbenner.github.io/jquery-powertip/
|
||
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
|
||
+ Released under MIT license.
|
||
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
|
||
+*/
|
||
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.scrollTo-1.4.2.js doxygen-1.8.14/jquery/jquery.scrollTo-1.4.2.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.scrollTo-1.4.2.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.scrollTo-1.4.2.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,215 +0,0 @@
|
||
-/**
|
||
- * jQuery.ScrollTo
|
||
- * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
||
- * Dual licensed under MIT and GPL.
|
||
- * Date: 5/25/2009
|
||
- *
|
||
- * @projectDescription Easy element scrolling using jQuery.
|
||
- * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
||
- * Works with jQuery +1.2.6. Tested on FF 2/3, IE 6/7/8, Opera 9.5/6, Safari 3, Chrome 1 on WinXP.
|
||
- *
|
||
- * @author Ariel Flesler
|
||
- * @version 1.4.2
|
||
- *
|
||
- * @id jQuery.scrollTo
|
||
- * @id jQuery.fn.scrollTo
|
||
- * @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.
|
||
- * The different options for target are:
|
||
- * - A number position (will be applied to all axes).
|
||
- * - A string position ('44', '100px', '+=90', etc ) will be applied to all axes
|
||
- * - A jQuery/DOM element ( logically, child of the element to scroll )
|
||
- * - A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )
|
||
- * - A hash { top:x, left:y }, x and y can be any kind of number/string like above.
|
||
-* - A percentage of the container's dimension/s, for example: 50% to go to the middle.
|
||
- * - The string 'max' for go-to-end.
|
||
- * @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead.
|
||
- * @param {Object,Function} settings Optional set of settings or the onAfter callback.
|
||
- * @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.
|
||
- * @option {Number} duration The OVERALL length of the animation.
|
||
- * @option {String} easing The easing method for the animation.
|
||
- * @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.
|
||
- * @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.
|
||
- * @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.
|
||
- * @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.
|
||
- * @option {Function} onAfter Function to be called after the scrolling ends.
|
||
- * @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.
|
||
- * @return {jQuery} Returns the same jQuery object, for chaining.
|
||
- *
|
||
- * @desc Scroll to a fixed position
|
||
- * @example $('div').scrollTo( 340 );
|
||
- *
|
||
- * @desc Scroll relatively to the actual position
|
||
- * @example $('div').scrollTo( '+=340px', { axis:'y' } );
|
||
- *
|
||
- * @dec Scroll using a selector (relative to the scrolled element)
|
||
- * @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );
|
||
- *
|
||
- * @ Scroll to a DOM element (same for jQuery object)
|
||
- * @example var second_child = document.getElementById('container').firstChild.nextSibling;
|
||
- * $('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){
|
||
- * alert('scrolled!!');
|
||
- * }});
|
||
- *
|
||
- * @desc Scroll on both axes, to different values
|
||
- * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
|
||
- */
|
||
-;(function( $ ){
|
||
-
|
||
- var $scrollTo = $.scrollTo = function( target, duration, settings ){
|
||
- $(window).scrollTo( target, duration, settings );
|
||
- };
|
||
-
|
||
- $scrollTo.defaults = {
|
||
- axis:'xy',
|
||
- duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
|
||
- };
|
||
-
|
||
- // Returns the element that needs to be animated to scroll the window.
|
||
- // Kept for backwards compatibility (specially for localScroll & serialScroll)
|
||
- $scrollTo.window = function( scope ){
|
||
- return $(window)._scrollable();
|
||
- };
|
||
-
|
||
- // Hack, hack, hack :)
|
||
- // Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
|
||
- $.fn._scrollable = function(){
|
||
- return this.map(function(){
|
||
- var elem = this,
|
||
- isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
|
||
-
|
||
- if( !isWin )
|
||
- return elem;
|
||
-
|
||
- var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
|
||
-
|
||
- return $.browser.safari || doc.compatMode == 'BackCompat' ?
|
||
- doc.body :
|
||
- doc.documentElement;
|
||
- });
|
||
- };
|
||
-
|
||
- $.fn.scrollTo = function( target, duration, settings ){
|
||
- if( typeof duration == 'object' ){
|
||
- settings = duration;
|
||
- duration = 0;
|
||
- }
|
||
- if( typeof settings == 'function' )
|
||
- settings = { onAfter:settings };
|
||
-
|
||
- if( target == 'max' )
|
||
- target = 9e9;
|
||
-
|
||
- settings = $.extend( {}, $scrollTo.defaults, settings );
|
||
- // Speed is still recognized for backwards compatibility
|
||
- duration = duration || settings.speed || settings.duration;
|
||
- // Make sure the settings are given right
|
||
- settings.queue = settings.queue && settings.axis.length > 1;
|
||
-
|
||
- if( settings.queue )
|
||
- // Let's keep the overall duration
|
||
- duration /= 2;
|
||
- settings.offset = both( settings.offset );
|
||
- settings.over = both( settings.over );
|
||
-
|
||
- return this._scrollable().each(function(){
|
||
- var elem = this,
|
||
- $elem = $(elem),
|
||
- targ = target, toff, attr = {},
|
||
- win = $elem.is('html,body');
|
||
-
|
||
- switch( typeof targ ){
|
||
- // A number will pass the regex
|
||
- case 'number':
|
||
- case 'string':
|
||
- if( /^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ) ){
|
||
- targ = both( targ );
|
||
- // We are done
|
||
- break;
|
||
- }
|
||
- // Relative selector, no break!
|
||
- targ = $(targ,this);
|
||
- case 'object':
|
||
- // DOMElement / jQuery
|
||
- if( targ.is || targ.style )
|
||
- // Get the real position of the target
|
||
- toff = (targ = $(targ)).offset();
|
||
- }
|
||
- $.each( settings.axis.split(''), function( i, axis ){
|
||
- var Pos = axis == 'x' ? 'Left' : 'Top',
|
||
- pos = Pos.toLowerCase(),
|
||
- key = 'scroll' + Pos,
|
||
- old = elem[key],
|
||
- max = $scrollTo.max(elem, axis);
|
||
-
|
||
- if( toff ){// jQuery / DOMElement
|
||
- attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
|
||
-
|
||
- // If it's a dom element, reduce the margin
|
||
- if( settings.margin ){
|
||
- attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
|
||
- attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
|
||
- }
|
||
-
|
||
- attr[key] += settings.offset[pos] || 0;
|
||
-
|
||
- if( settings.over[pos] )
|
||
- // Scroll to a fraction of its width/height
|
||
- attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
|
||
- }else{
|
||
- var val = targ[pos];
|
||
- // Handle percentage values
|
||
- attr[key] = val.slice && val.slice(-1) == '%' ?
|
||
- parseFloat(val) / 100 * max
|
||
- : val;
|
||
- }
|
||
-
|
||
- // Number or 'number'
|
||
- if( /^\d+$/.test(attr[key]) )
|
||
- // Check the limits
|
||
- attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
|
||
-
|
||
- // Queueing axes
|
||
- if( !i && settings.queue ){
|
||
- // Don't waste time animating, if there's no need.
|
||
- if( old != attr[key] )
|
||
- // Intermediate animation
|
||
- animate( settings.onAfterFirst );
|
||
- // Don't animate this axis again in the next iteration.
|
||
- delete attr[key];
|
||
- }
|
||
- });
|
||
-
|
||
- animate( settings.onAfter );
|
||
-
|
||
- function animate( callback ){
|
||
- $elem.animate( attr, duration, settings.easing, callback && function(){
|
||
- callback.call(this, target, settings);
|
||
- });
|
||
- };
|
||
-
|
||
- }).end();
|
||
- };
|
||
-
|
||
- // Max scrolling position, works on quirks mode
|
||
- // It only fails (not too badly) on IE, quirks mode.
|
||
- $scrollTo.max = function( elem, axis ){
|
||
- var Dim = axis == 'x' ? 'Width' : 'Height',
|
||
- scroll = 'scroll'+Dim;
|
||
-
|
||
- if( !$(elem).is('html,body') )
|
||
- return elem[scroll] - $(elem)[Dim.toLowerCase()]();
|
||
-
|
||
- var size = 'client' + Dim,
|
||
- html = elem.ownerDocument.documentElement,
|
||
- body = elem.ownerDocument.body;
|
||
-
|
||
- return Math.max( html[scroll], body[scroll] )
|
||
- - Math.min( html[size] , body[size] );
|
||
-
|
||
- };
|
||
-
|
||
- function both( val ){
|
||
- return typeof val == 'object' ? val : { top:val, left:val };
|
||
- };
|
||
-
|
||
-})( jQuery );
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.scrollTo-2.1.2.min.js doxygen-1.8.14/jquery/jquery.scrollTo-2.1.2.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.scrollTo-2.1.2.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.scrollTo-2.1.2.min.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,7 @@
|
||
+/**
|
||
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
|
||
+ * Licensed under MIT
|
||
+ * @author Ariel Flesler
|
||
+ * @version 2.1.2
|
||
+ */
|
||
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.smartmenus-1.0.0.js doxygen-1.8.14/jquery/jquery.smartmenus-1.0.0.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.smartmenus-1.0.0.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.smartmenus-1.0.0.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,1214 +0,0 @@
|
||
-/*!
|
||
- * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016
|
||
- * http://www.smartmenus.org/
|
||
- *
|
||
- * Copyright Vasil Dinkov, Vadikom Web Ltd.
|
||
- * http://vadikom.com
|
||
- *
|
||
- * Licensed MIT
|
||
- */
|
||
-
|
||
-(function(factory) {
|
||
- if (typeof define === 'function' && define.amd) {
|
||
- // AMD
|
||
- define(['jquery'], factory);
|
||
- } else if (typeof module === 'object' && typeof module.exports === 'object') {
|
||
- // CommonJS
|
||
- module.exports = factory(require('jquery'));
|
||
- } else {
|
||
- // Global jQuery
|
||
- factory(jQuery);
|
||
- }
|
||
-} (function($) {
|
||
-
|
||
- var menuTrees = [],
|
||
- IE = !!window.createPopup, // detect it for the iframe shim
|
||
- mouse = false, // optimize for touch by default - we will detect for mouse input
|
||
- touchEvents = 'ontouchstart' in window, // we use this just to choose between toucn and pointer events, not for touch screen detection
|
||
- mouseDetectionEnabled = false,
|
||
- requestAnimationFrame = window.requestAnimationFrame || function(callback) { return setTimeout(callback, 1000 / 60); },
|
||
- cancelAnimationFrame = window.cancelAnimationFrame || function(id) { clearTimeout(id); };
|
||
-
|
||
- // Handle detection for mouse input (i.e. desktop browsers, tablets with a mouse, etc.)
|
||
- function initMouseDetection(disable) {
|
||
- var eNS = '.smartmenus_mouse';
|
||
- if (!mouseDetectionEnabled && !disable) {
|
||
- // if we get two consecutive mousemoves within 2 pixels from each other and within 300ms, we assume a real mouse/cursor is present
|
||
- // in practice, this seems like impossible to trick unintentianally with a real mouse and a pretty safe detection on touch devices (even with older browsers that do not support touch events)
|
||
- var firstTime = true,
|
||
- lastMove = null;
|
||
- $(document).bind(getEventsNS([
|
||
- ['mousemove', function(e) {
|
||
- var thisMove = { x: e.pageX, y: e.pageY, timeStamp: new Date().getTime() };
|
||
- if (lastMove) {
|
||
- var deltaX = Math.abs(lastMove.x - thisMove.x),
|
||
- deltaY = Math.abs(lastMove.y - thisMove.y);
|
||
- if ((deltaX > 0 || deltaY > 0) && deltaX <= 2 && deltaY <= 2 && thisMove.timeStamp - lastMove.timeStamp <= 300) {
|
||
- mouse = true;
|
||
- // if this is the first check after page load, check if we are not over some item by chance and call the mouseenter handler if yes
|
||
- if (firstTime) {
|
||
- var $a = $(e.target).closest('a');
|
||
- if ($a.is('a')) {
|
||
- $.each(menuTrees, function() {
|
||
- if ($.contains(this.$root[0], $a[0])) {
|
||
- this.itemEnter({ currentTarget: $a[0] });
|
||
- return false;
|
||
- }
|
||
- });
|
||
- }
|
||
- firstTime = false;
|
||
- }
|
||
- }
|
||
- }
|
||
- lastMove = thisMove;
|
||
- }],
|
||
- [touchEvents ? 'touchstart' : 'pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut', function(e) {
|
||
- if (isTouchEvent(e.originalEvent)) {
|
||
- mouse = false;
|
||
- }
|
||
- }]
|
||
- ], eNS));
|
||
- mouseDetectionEnabled = true;
|
||
- } else if (mouseDetectionEnabled && disable) {
|
||
- $(document).unbind(eNS);
|
||
- mouseDetectionEnabled = false;
|
||
- }
|
||
- }
|
||
-
|
||
- function isTouchEvent(e) {
|
||
- return !/^(4|mouse)$/.test(e.pointerType);
|
||
- }
|
||
-
|
||
- // returns a jQuery bind() ready object
|
||
- function getEventsNS(defArr, eNS) {
|
||
- if (!eNS) {
|
||
- eNS = '';
|
||
- }
|
||
- var obj = {};
|
||
- $.each(defArr, function(index, value) {
|
||
- obj[value[0].split(' ').join(eNS + ' ') + eNS] = value[1];
|
||
- });
|
||
- return obj;
|
||
- }
|
||
-
|
||
- $.SmartMenus = function(elm, options) {
|
||
- this.$root = $(elm);
|
||
- this.opts = options;
|
||
- this.rootId = ''; // internal
|
||
- this.accessIdPrefix = '';
|
||
- this.$subArrow = null;
|
||
- this.activatedItems = []; // stores last activated A's for each level
|
||
- this.visibleSubMenus = []; // stores visible sub menus UL's (might be in no particular order)
|
||
- this.showTimeout = 0;
|
||
- this.hideTimeout = 0;
|
||
- this.scrollTimeout = 0;
|
||
- this.clickActivated = false;
|
||
- this.focusActivated = false;
|
||
- this.zIndexInc = 0;
|
||
- this.idInc = 0;
|
||
- this.$firstLink = null; // we'll use these for some tests
|
||
- this.$firstSub = null; // at runtime so we'll cache them
|
||
- this.disabled = false;
|
||
- this.$disableOverlay = null;
|
||
- this.$touchScrollingSub = null;
|
||
- this.cssTransforms3d = 'perspective' in elm.style || 'webkitPerspective' in elm.style;
|
||
- this.wasCollapsible = false;
|
||
- this.init();
|
||
- };
|
||
-
|
||
- $.extend($.SmartMenus, {
|
||
- hideAll: function() {
|
||
- $.each(menuTrees, function() {
|
||
- this.menuHideAll();
|
||
- });
|
||
- },
|
||
- destroy: function() {
|
||
- while (menuTrees.length) {
|
||
- menuTrees[0].destroy();
|
||
- }
|
||
- initMouseDetection(true);
|
||
- },
|
||
- prototype: {
|
||
- init: function(refresh) {
|
||
- var self = this;
|
||
-
|
||
- if (!refresh) {
|
||
- menuTrees.push(this);
|
||
-
|
||
- this.rootId = (new Date().getTime() + Math.random() + '').replace(/\D/g, '');
|
||
- this.accessIdPrefix = 'sm-' + this.rootId + '-';
|
||
-
|
||
- if (this.$root.hasClass('sm-rtl')) {
|
||
- this.opts.rightToLeftSubMenus = true;
|
||
- }
|
||
-
|
||
- // init root (main menu)
|
||
- var eNS = '.smartmenus';
|
||
- this.$root
|
||
- .data('smartmenus', this)
|
||
- .attr('data-smartmenus-id', this.rootId)
|
||
- .dataSM('level', 1)
|
||
- .bind(getEventsNS([
|
||
- ['mouseover focusin', $.proxy(this.rootOver, this)],
|
||
- ['mouseout focusout', $.proxy(this.rootOut, this)],
|
||
- ['keydown', $.proxy(this.rootKeyDown, this)]
|
||
- ], eNS))
|
||
- .delegate('a', getEventsNS([
|
||
- ['mouseenter', $.proxy(this.itemEnter, this)],
|
||
- ['mouseleave', $.proxy(this.itemLeave, this)],
|
||
- ['mousedown', $.proxy(this.itemDown, this)],
|
||
- ['focus', $.proxy(this.itemFocus, this)],
|
||
- ['blur', $.proxy(this.itemBlur, this)],
|
||
- ['click', $.proxy(this.itemClick, this)]
|
||
- ], eNS));
|
||
-
|
||
- // hide menus on tap or click outside the root UL
|
||
- eNS += this.rootId;
|
||
- if (this.opts.hideOnClick) {
|
||
- $(document).bind(getEventsNS([
|
||
- ['touchstart', $.proxy(this.docTouchStart, this)],
|
||
- ['touchmove', $.proxy(this.docTouchMove, this)],
|
||
- ['touchend', $.proxy(this.docTouchEnd, this)],
|
||
- // for Opera Mobile < 11.5, webOS browser, etc. we'll check click too
|
||
- ['click', $.proxy(this.docClick, this)]
|
||
- ], eNS));
|
||
- }
|
||
- // hide sub menus on resize
|
||
- $(window).bind(getEventsNS([['resize orientationchange', $.proxy(this.winResize, this)]], eNS));
|
||
-
|
||
- if (this.opts.subIndicators) {
|
||
- this.$subArrow = $('<span/>').addClass('sub-arrow');
|
||
- if (this.opts.subIndicatorsText) {
|
||
- this.$subArrow.html(this.opts.subIndicatorsText);
|
||
- }
|
||
- }
|
||
-
|
||
- // make sure mouse detection is enabled
|
||
- initMouseDetection();
|
||
- }
|
||
-
|
||
- // init sub menus
|
||
- this.$firstSub = this.$root.find('ul').each(function() { self.menuInit($(this)); }).eq(0);
|
||
-
|
||
- this.$firstLink = this.$root.find('a').eq(0);
|
||
-
|
||
- // find current item
|
||
- if (this.opts.markCurrentItem) {
|
||
- var reDefaultDoc = /(index|default)\.[^#\?\/]*/i,
|
||
- reHash = /#.*/,
|
||
- locHref = window.location.href.replace(reDefaultDoc, ''),
|
||
- locHrefNoHash = locHref.replace(reHash, '');
|
||
- this.$root.find('a').each(function() {
|
||
- var href = this.href.replace(reDefaultDoc, ''),
|
||
- $this = $(this);
|
||
- if (href == locHref || href == locHrefNoHash) {
|
||
- $this.addClass('current');
|
||
- if (self.opts.markCurrentTree) {
|
||
- $this.parentsUntil('[data-smartmenus-id]', 'ul').each(function() {
|
||
- $(this).dataSM('parent-a').addClass('current');
|
||
- });
|
||
- }
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- // save initial state
|
||
- this.wasCollapsible = this.isCollapsible();
|
||
- },
|
||
- destroy: function(refresh) {
|
||
- if (!refresh) {
|
||
- var eNS = '.smartmenus';
|
||
- this.$root
|
||
- .removeData('smartmenus')
|
||
- .removeAttr('data-smartmenus-id')
|
||
- .removeDataSM('level')
|
||
- .unbind(eNS)
|
||
- .undelegate(eNS);
|
||
- eNS += this.rootId;
|
||
- $(document).unbind(eNS);
|
||
- $(window).unbind(eNS);
|
||
- if (this.opts.subIndicators) {
|
||
- this.$subArrow = null;
|
||
- }
|
||
- }
|
||
- this.menuHideAll();
|
||
- var self = this;
|
||
- this.$root.find('ul').each(function() {
|
||
- var $this = $(this);
|
||
- if ($this.dataSM('scroll-arrows')) {
|
||
- $this.dataSM('scroll-arrows').remove();
|
||
- }
|
||
- if ($this.dataSM('shown-before')) {
|
||
- if (self.opts.subMenusMinWidth || self.opts.subMenusMaxWidth) {
|
||
- $this.css({ width: '', minWidth: '', maxWidth: '' }).removeClass('sm-nowrap');
|
||
- }
|
||
- if ($this.dataSM('scroll-arrows')) {
|
||
- $this.dataSM('scroll-arrows').remove();
|
||
- }
|
||
- $this.css({ zIndex: '', top: '', left: '', marginLeft: '', marginTop: '', display: '' });
|
||
- }
|
||
- if (($this.attr('id') || '').indexOf(self.accessIdPrefix) == 0) {
|
||
- $this.removeAttr('id');
|
||
- }
|
||
- })
|
||
- .removeDataSM('in-mega')
|
||
- .removeDataSM('shown-before')
|
||
- .removeDataSM('ie-shim')
|
||
- .removeDataSM('scroll-arrows')
|
||
- .removeDataSM('parent-a')
|
||
- .removeDataSM('level')
|
||
- .removeDataSM('beforefirstshowfired')
|
||
- .removeAttr('role')
|
||
- .removeAttr('aria-hidden')
|
||
- .removeAttr('aria-labelledby')
|
||
- .removeAttr('aria-expanded');
|
||
- this.$root.find('a.has-submenu').each(function() {
|
||
- var $this = $(this);
|
||
- if ($this.attr('id').indexOf(self.accessIdPrefix) == 0) {
|
||
- $this.removeAttr('id');
|
||
- }
|
||
- })
|
||
- .removeClass('has-submenu')
|
||
- .removeDataSM('sub')
|
||
- .removeAttr('aria-haspopup')
|
||
- .removeAttr('aria-controls')
|
||
- .removeAttr('aria-expanded')
|
||
- .closest('li').removeDataSM('sub');
|
||
- if (this.opts.subIndicators) {
|
||
- this.$root.find('span.sub-arrow').remove();
|
||
- }
|
||
- if (this.opts.markCurrentItem) {
|
||
- this.$root.find('a.current').removeClass('current');
|
||
- }
|
||
- if (!refresh) {
|
||
- this.$root = null;
|
||
- this.$firstLink = null;
|
||
- this.$firstSub = null;
|
||
- if (this.$disableOverlay) {
|
||
- this.$disableOverlay.remove();
|
||
- this.$disableOverlay = null;
|
||
- }
|
||
- menuTrees.splice($.inArray(this, menuTrees), 1);
|
||
- }
|
||
- },
|
||
- disable: function(noOverlay) {
|
||
- if (!this.disabled) {
|
||
- this.menuHideAll();
|
||
- // display overlay over the menu to prevent interaction
|
||
- if (!noOverlay && !this.opts.isPopup && this.$root.is(':visible')) {
|
||
- var pos = this.$root.offset();
|
||
- this.$disableOverlay = $('<div class="sm-jquery-disable-overlay"/>').css({
|
||
- position: 'absolute',
|
||
- top: pos.top,
|
||
- left: pos.left,
|
||
- width: this.$root.outerWidth(),
|
||
- height: this.$root.outerHeight(),
|
||
- zIndex: this.getStartZIndex(true),
|
||
- opacity: 0
|
||
- }).appendTo(document.body);
|
||
- }
|
||
- this.disabled = true;
|
||
- }
|
||
- },
|
||
- docClick: function(e) {
|
||
- if (this.$touchScrollingSub) {
|
||
- this.$touchScrollingSub = null;
|
||
- return;
|
||
- }
|
||
- // hide on any click outside the menu or on a menu link
|
||
- if (this.visibleSubMenus.length && !$.contains(this.$root[0], e.target) || $(e.target).is('a')) {
|
||
- this.menuHideAll();
|
||
- }
|
||
- },
|
||
- docTouchEnd: function(e) {
|
||
- if (!this.lastTouch) {
|
||
- return;
|
||
- }
|
||
- if (this.visibleSubMenus.length && (this.lastTouch.x2 === undefined || this.lastTouch.x1 == this.lastTouch.x2) && (this.lastTouch.y2 === undefined || this.lastTouch.y1 == this.lastTouch.y2) && (!this.lastTouch.target || !$.contains(this.$root[0], this.lastTouch.target))) {
|
||
- if (this.hideTimeout) {
|
||
- clearTimeout(this.hideTimeout);
|
||
- this.hideTimeout = 0;
|
||
- }
|
||
- // hide with a delay to prevent triggering accidental unwanted click on some page element
|
||
- var self = this;
|
||
- this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, 350);
|
||
- }
|
||
- this.lastTouch = null;
|
||
- },
|
||
- docTouchMove: function(e) {
|
||
- if (!this.lastTouch) {
|
||
- return;
|
||
- }
|
||
- var touchPoint = e.originalEvent.touches[0];
|
||
- this.lastTouch.x2 = touchPoint.pageX;
|
||
- this.lastTouch.y2 = touchPoint.pageY;
|
||
- },
|
||
- docTouchStart: function(e) {
|
||
- var touchPoint = e.originalEvent.touches[0];
|
||
- this.lastTouch = { x1: touchPoint.pageX, y1: touchPoint.pageY, target: touchPoint.target };
|
||
- },
|
||
- enable: function() {
|
||
- if (this.disabled) {
|
||
- if (this.$disableOverlay) {
|
||
- this.$disableOverlay.remove();
|
||
- this.$disableOverlay = null;
|
||
- }
|
||
- this.disabled = false;
|
||
- }
|
||
- },
|
||
- getClosestMenu: function(elm) {
|
||
- var $closestMenu = $(elm).closest('ul');
|
||
- while ($closestMenu.dataSM('in-mega')) {
|
||
- $closestMenu = $closestMenu.parent().closest('ul');
|
||
- }
|
||
- return $closestMenu[0] || null;
|
||
- },
|
||
- getHeight: function($elm) {
|
||
- return this.getOffset($elm, true);
|
||
- },
|
||
- // returns precise width/height float values
|
||
- getOffset: function($elm, height) {
|
||
- var old;
|
||
- if ($elm.css('display') == 'none') {
|
||
- old = { position: $elm[0].style.position, visibility: $elm[0].style.visibility };
|
||
- $elm.css({ position: 'absolute', visibility: 'hidden' }).show();
|
||
- }
|
||
- var box = $elm[0].getBoundingClientRect && $elm[0].getBoundingClientRect(),
|
||
- val = box && (height ? box.height || box.bottom - box.top : box.width || box.right - box.left);
|
||
- if (!val && val !== 0) {
|
||
- val = height ? $elm[0].offsetHeight : $elm[0].offsetWidth;
|
||
- }
|
||
- if (old) {
|
||
- $elm.hide().css(old);
|
||
- }
|
||
- return val;
|
||
- },
|
||
- getStartZIndex: function(root) {
|
||
- var zIndex = parseInt(this[root ? '$root' : '$firstSub'].css('z-index'));
|
||
- if (!root && isNaN(zIndex)) {
|
||
- zIndex = parseInt(this.$root.css('z-index'));
|
||
- }
|
||
- return !isNaN(zIndex) ? zIndex : 1;
|
||
- },
|
||
- getTouchPoint: function(e) {
|
||
- return e.touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e;
|
||
- },
|
||
- getViewport: function(height) {
|
||
- var name = height ? 'Height' : 'Width',
|
||
- val = document.documentElement['client' + name],
|
||
- val2 = window['inner' + name];
|
||
- if (val2) {
|
||
- val = Math.min(val, val2);
|
||
- }
|
||
- return val;
|
||
- },
|
||
- getViewportHeight: function() {
|
||
- return this.getViewport(true);
|
||
- },
|
||
- getViewportWidth: function() {
|
||
- return this.getViewport();
|
||
- },
|
||
- getWidth: function($elm) {
|
||
- return this.getOffset($elm);
|
||
- },
|
||
- handleEvents: function() {
|
||
- return !this.disabled && this.isCSSOn();
|
||
- },
|
||
- handleItemEvents: function($a) {
|
||
- return this.handleEvents() && !this.isLinkInMegaMenu($a);
|
||
- },
|
||
- isCollapsible: function() {
|
||
- return this.$firstSub.css('position') == 'static';
|
||
- },
|
||
- isCSSOn: function() {
|
||
- return this.$firstLink.css('display') == 'block';
|
||
- },
|
||
- isFixed: function() {
|
||
- var isFixed = this.$root.css('position') == 'fixed';
|
||
- if (!isFixed) {
|
||
- this.$root.parentsUntil('body').each(function() {
|
||
- if ($(this).css('position') == 'fixed') {
|
||
- isFixed = true;
|
||
- return false;
|
||
- }
|
||
- });
|
||
- }
|
||
- return isFixed;
|
||
- },
|
||
- isLinkInMegaMenu: function($a) {
|
||
- return $(this.getClosestMenu($a[0])).hasClass('mega-menu');
|
||
- },
|
||
- isTouchMode: function() {
|
||
- return !mouse || this.opts.noMouseOver || this.isCollapsible();
|
||
- },
|
||
- itemActivate: function($a, focus) {
|
||
- var $ul = $a.closest('ul'),
|
||
- level = $ul.dataSM('level');
|
||
- // if for some reason the parent item is not activated (e.g. this is an API call to activate the item), activate all parent items first
|
||
- if (level > 1 && (!this.activatedItems[level - 2] || this.activatedItems[level - 2][0] != $ul.dataSM('parent-a')[0])) {
|
||
- var self = this;
|
||
- $($ul.parentsUntil('[data-smartmenus-id]', 'ul').get().reverse()).add($ul).each(function() {
|
||
- self.itemActivate($(this).dataSM('parent-a'));
|
||
- });
|
||
- }
|
||
- // hide any visible deeper level sub menus
|
||
- if (!this.isCollapsible() || focus) {
|
||
- this.menuHideSubMenus(!this.activatedItems[level - 1] || this.activatedItems[level - 1][0] != $a[0] ? level - 1 : level);
|
||
- }
|
||
- // save new active item for this level
|
||
- this.activatedItems[level - 1] = $a;
|
||
- if (this.$root.triggerHandler('activate.smapi', $a[0]) === false) {
|
||
- return;
|
||
- }
|
||
- // show the sub menu if this item has one
|
||
- var $sub = $a.dataSM('sub');
|
||
- if ($sub && (this.isTouchMode() || (!this.opts.showOnClick || this.clickActivated))) {
|
||
- this.menuShow($sub);
|
||
- }
|
||
- },
|
||
- itemBlur: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- this.$root.triggerHandler('blur.smapi', $a[0]);
|
||
- },
|
||
- itemClick: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- if (this.$touchScrollingSub && this.$touchScrollingSub[0] == $a.closest('ul')[0]) {
|
||
- this.$touchScrollingSub = null;
|
||
- e.stopPropagation();
|
||
- return false;
|
||
- }
|
||
- if (this.$root.triggerHandler('click.smapi', $a[0]) === false) {
|
||
- return false;
|
||
- }
|
||
- var subArrowClicked = $(e.target).is('span.sub-arrow'),
|
||
- $sub = $a.dataSM('sub'),
|
||
- firstLevelSub = $sub ? $sub.dataSM('level') == 2 : false;
|
||
- // if the sub is not visible
|
||
- if ($sub && !$sub.is(':visible')) {
|
||
- if (this.opts.showOnClick && firstLevelSub) {
|
||
- this.clickActivated = true;
|
||
- }
|
||
- // try to activate the item and show the sub
|
||
- this.itemActivate($a);
|
||
- // if "itemActivate" showed the sub, prevent the click so that the link is not loaded
|
||
- // if it couldn't show it, then the sub menus are disabled with an !important declaration (e.g. via mobile styles) so let the link get loaded
|
||
- if ($sub.is(':visible')) {
|
||
- this.focusActivated = true;
|
||
- return false;
|
||
- }
|
||
- } else if (this.isCollapsible() && subArrowClicked) {
|
||
- this.itemActivate($a);
|
||
- this.menuHide($sub);
|
||
- return false;
|
||
- }
|
||
- if (this.opts.showOnClick && firstLevelSub || $a.hasClass('disabled') || this.$root.triggerHandler('select.smapi', $a[0]) === false) {
|
||
- return false;
|
||
- }
|
||
- },
|
||
- itemDown: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- $a.dataSM('mousedown', true);
|
||
- },
|
||
- itemEnter: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- if (!this.isTouchMode()) {
|
||
- if (this.showTimeout) {
|
||
- clearTimeout(this.showTimeout);
|
||
- this.showTimeout = 0;
|
||
- }
|
||
- var self = this;
|
||
- this.showTimeout = setTimeout(function() { self.itemActivate($a); }, this.opts.showOnClick && $a.closest('ul').dataSM('level') == 1 ? 1 : this.opts.showTimeout);
|
||
- }
|
||
- this.$root.triggerHandler('mouseenter.smapi', $a[0]);
|
||
- },
|
||
- itemFocus: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- // fix (the mousedown check): in some browsers a tap/click produces consecutive focus + click events so we don't need to activate the item on focus
|
||
- if (this.focusActivated && (!this.isTouchMode() || !$a.dataSM('mousedown')) && (!this.activatedItems.length || this.activatedItems[this.activatedItems.length - 1][0] != $a[0])) {
|
||
- this.itemActivate($a, true);
|
||
- }
|
||
- this.$root.triggerHandler('focus.smapi', $a[0]);
|
||
- },
|
||
- itemLeave: function(e) {
|
||
- var $a = $(e.currentTarget);
|
||
- if (!this.handleItemEvents($a)) {
|
||
- return;
|
||
- }
|
||
- if (!this.isTouchMode()) {
|
||
- $a[0].blur();
|
||
- if (this.showTimeout) {
|
||
- clearTimeout(this.showTimeout);
|
||
- this.showTimeout = 0;
|
||
- }
|
||
- }
|
||
- $a.removeDataSM('mousedown');
|
||
- this.$root.triggerHandler('mouseleave.smapi', $a[0]);
|
||
- },
|
||
- menuHide: function($sub) {
|
||
- if (this.$root.triggerHandler('beforehide.smapi', $sub[0]) === false) {
|
||
- return;
|
||
- }
|
||
- $sub.stop(true, true);
|
||
- if ($sub.css('display') != 'none') {
|
||
- var complete = function() {
|
||
- // unset z-index
|
||
- $sub.css('z-index', '');
|
||
- };
|
||
- // if sub is collapsible (mobile view)
|
||
- if (this.isCollapsible()) {
|
||
- if (this.opts.collapsibleHideFunction) {
|
||
- this.opts.collapsibleHideFunction.call(this, $sub, complete);
|
||
- } else {
|
||
- $sub.hide(this.opts.collapsibleHideDuration, complete);
|
||
- }
|
||
- } else {
|
||
- if (this.opts.hideFunction) {
|
||
- this.opts.hideFunction.call(this, $sub, complete);
|
||
- } else {
|
||
- $sub.hide(this.opts.hideDuration, complete);
|
||
- }
|
||
- }
|
||
- // remove IE iframe shim
|
||
- if ($sub.dataSM('ie-shim')) {
|
||
- $sub.dataSM('ie-shim').remove().css({ '-webkit-transform': '', transform: '' });
|
||
- }
|
||
- // deactivate scrolling if it is activated for this sub
|
||
- if ($sub.dataSM('scroll')) {
|
||
- this.menuScrollStop($sub);
|
||
- $sub.css({ 'touch-action': '', '-ms-touch-action': '', '-webkit-transform': '', transform: '' })
|
||
- .unbind('.smartmenus_scroll').removeDataSM('scroll').dataSM('scroll-arrows').hide();
|
||
- }
|
||
- // unhighlight parent item + accessibility
|
||
- $sub.dataSM('parent-a').removeClass('highlighted').attr('aria-expanded', 'false');
|
||
- $sub.attr({
|
||
- 'aria-expanded': 'false',
|
||
- 'aria-hidden': 'true'
|
||
- });
|
||
- var level = $sub.dataSM('level');
|
||
- this.activatedItems.splice(level - 1, 1);
|
||
- this.visibleSubMenus.splice($.inArray($sub, this.visibleSubMenus), 1);
|
||
- this.$root.triggerHandler('hide.smapi', $sub[0]);
|
||
- }
|
||
- },
|
||
- menuHideAll: function() {
|
||
- if (this.showTimeout) {
|
||
- clearTimeout(this.showTimeout);
|
||
- this.showTimeout = 0;
|
||
- }
|
||
- // hide all subs
|
||
- // if it's a popup, this.visibleSubMenus[0] is the root UL
|
||
- var level = this.opts.isPopup ? 1 : 0;
|
||
- for (var i = this.visibleSubMenus.length - 1; i >= level; i--) {
|
||
- this.menuHide(this.visibleSubMenus[i]);
|
||
- }
|
||
- // hide root if it's popup
|
||
- if (this.opts.isPopup) {
|
||
- this.$root.stop(true, true);
|
||
- if (this.$root.is(':visible')) {
|
||
- if (this.opts.hideFunction) {
|
||
- this.opts.hideFunction.call(this, this.$root);
|
||
- } else {
|
||
- this.$root.hide(this.opts.hideDuration);
|
||
- }
|
||
- // remove IE iframe shim
|
||
- if (this.$root.dataSM('ie-shim')) {
|
||
- this.$root.dataSM('ie-shim').remove();
|
||
- }
|
||
- }
|
||
- }
|
||
- this.activatedItems = [];
|
||
- this.visibleSubMenus = [];
|
||
- this.clickActivated = false;
|
||
- this.focusActivated = false;
|
||
- // reset z-index increment
|
||
- this.zIndexInc = 0;
|
||
- this.$root.triggerHandler('hideAll.smapi');
|
||
- },
|
||
- menuHideSubMenus: function(level) {
|
||
- for (var i = this.activatedItems.length - 1; i >= level; i--) {
|
||
- var $sub = this.activatedItems[i].dataSM('sub');
|
||
- if ($sub) {
|
||
- this.menuHide($sub);
|
||
- }
|
||
- }
|
||
- },
|
||
- menuIframeShim: function($ul) {
|
||
- // create iframe shim for the menu
|
||
- if (IE && this.opts.overlapControlsInIE && !$ul.dataSM('ie-shim')) {
|
||
- $ul.dataSM('ie-shim', $('<iframe/>').attr({ src: 'javascript:0', tabindex: -9 })
|
||
- .css({ position: 'absolute', top: 'auto', left: '0', opacity: 0, border: '0' })
|
||
- );
|
||
- }
|
||
- },
|
||
- menuInit: function($ul) {
|
||
- if (!$ul.dataSM('in-mega')) {
|
||
- // mark UL's in mega drop downs (if any) so we can neglect them
|
||
- if ($ul.hasClass('mega-menu')) {
|
||
- $ul.find('ul').dataSM('in-mega', true);
|
||
- }
|
||
- // get level (much faster than, for example, using parentsUntil)
|
||
- var level = 2,
|
||
- par = $ul[0];
|
||
- while ((par = par.parentNode.parentNode) != this.$root[0]) {
|
||
- level++;
|
||
- }
|
||
- // cache stuff for quick access
|
||
- var $a = $ul.prevAll('a').eq(-1);
|
||
- // if the link is nested (e.g. in a heading)
|
||
- if (!$a.length) {
|
||
- $a = $ul.prevAll().find('a').eq(-1);
|
||
- }
|
||
- $a.addClass('has-submenu').dataSM('sub', $ul);
|
||
- $ul.dataSM('parent-a', $a)
|
||
- .dataSM('level', level)
|
||
- .parent().dataSM('sub', $ul);
|
||
- // accessibility
|
||
- var aId = $a.attr('id') || this.accessIdPrefix + (++this.idInc),
|
||
- ulId = $ul.attr('id') || this.accessIdPrefix + (++this.idInc);
|
||
- $a.attr({
|
||
- id: aId,
|
||
- 'aria-haspopup': 'true',
|
||
- 'aria-controls': ulId,
|
||
- 'aria-expanded': 'false'
|
||
- });
|
||
- $ul.attr({
|
||
- id: ulId,
|
||
- 'role': 'group',
|
||
- 'aria-hidden': 'true',
|
||
- 'aria-labelledby': aId,
|
||
- 'aria-expanded': 'false'
|
||
- });
|
||
- // add sub indicator to parent item
|
||
- if (this.opts.subIndicators) {
|
||
- $a[this.opts.subIndicatorsPos](this.$subArrow.clone());
|
||
- }
|
||
- }
|
||
- },
|
||
- menuPosition: function($sub) {
|
||
- var $a = $sub.dataSM('parent-a'),
|
||
- $li = $a.closest('li'),
|
||
- $ul = $li.parent(),
|
||
- level = $sub.dataSM('level'),
|
||
- subW = this.getWidth($sub),
|
||
- subH = this.getHeight($sub),
|
||
- itemOffset = $a.offset(),
|
||
- itemX = itemOffset.left,
|
||
- itemY = itemOffset.top,
|
||
- itemW = this.getWidth($a),
|
||
- itemH = this.getHeight($a),
|
||
- $win = $(window),
|
||
- winX = $win.scrollLeft(),
|
||
- winY = $win.scrollTop(),
|
||
- winW = this.getViewportWidth(),
|
||
- winH = this.getViewportHeight(),
|
||
- horizontalParent = $ul.parent().is('[data-sm-horizontal-sub]') || level == 2 && !$ul.hasClass('sm-vertical'),
|
||
- rightToLeft = this.opts.rightToLeftSubMenus && !$li.is('[data-sm-reverse]') || !this.opts.rightToLeftSubMenus && $li.is('[data-sm-reverse]'),
|
||
- subOffsetX = level == 2 ? this.opts.mainMenuSubOffsetX : this.opts.subMenusSubOffsetX,
|
||
- subOffsetY = level == 2 ? this.opts.mainMenuSubOffsetY : this.opts.subMenusSubOffsetY,
|
||
- x, y;
|
||
- if (horizontalParent) {
|
||
- x = rightToLeft ? itemW - subW - subOffsetX : subOffsetX;
|
||
- y = this.opts.bottomToTopSubMenus ? -subH - subOffsetY : itemH + subOffsetY;
|
||
- } else {
|
||
- x = rightToLeft ? subOffsetX - subW : itemW - subOffsetX;
|
||
- y = this.opts.bottomToTopSubMenus ? itemH - subOffsetY - subH : subOffsetY;
|
||
- }
|
||
- if (this.opts.keepInViewport) {
|
||
- var absX = itemX + x,
|
||
- absY = itemY + y;
|
||
- if (rightToLeft && absX < winX) {
|
||
- x = horizontalParent ? winX - absX + x : itemW - subOffsetX;
|
||
- } else if (!rightToLeft && absX + subW > winX + winW) {
|
||
- x = horizontalParent ? winX + winW - subW - absX + x : subOffsetX - subW;
|
||
- }
|
||
- if (!horizontalParent) {
|
||
- if (subH < winH && absY + subH > winY + winH) {
|
||
- y += winY + winH - subH - absY;
|
||
- } else if (subH >= winH || absY < winY) {
|
||
- y += winY - absY;
|
||
- }
|
||
- }
|
||
- // do we need scrolling?
|
||
- // 0.49 used for better precision when dealing with float values
|
||
- if (horizontalParent && (absY + subH > winY + winH + 0.49 || absY < winY) || !horizontalParent && subH > winH + 0.49) {
|
||
- var self = this;
|
||
- if (!$sub.dataSM('scroll-arrows')) {
|
||
- $sub.dataSM('scroll-arrows', $([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0], $('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]])
|
||
- .bind({
|
||
- mouseenter: function() {
|
||
- $sub.dataSM('scroll').up = $(this).hasClass('scroll-up');
|
||
- self.menuScroll($sub);
|
||
- },
|
||
- mouseleave: function(e) {
|
||
- self.menuScrollStop($sub);
|
||
- self.menuScrollOut($sub, e);
|
||
- },
|
||
- 'mousewheel DOMMouseScroll': function(e) { e.preventDefault(); }
|
||
- })
|
||
- .insertAfter($sub)
|
||
- );
|
||
- }
|
||
- // bind scroll events and save scroll data for this sub
|
||
- var eNS = '.smartmenus_scroll';
|
||
- $sub.dataSM('scroll', {
|
||
- y: this.cssTransforms3d ? 0 : y - itemH,
|
||
- step: 1,
|
||
- // cache stuff for faster recalcs later
|
||
- itemH: itemH,
|
||
- subH: subH,
|
||
- arrowDownH: this.getHeight($sub.dataSM('scroll-arrows').eq(1))
|
||
- })
|
||
- .bind(getEventsNS([
|
||
- ['mouseover', function(e) { self.menuScrollOver($sub, e); }],
|
||
- ['mouseout', function(e) { self.menuScrollOut($sub, e); }],
|
||
- ['mousewheel DOMMouseScroll', function(e) { self.menuScrollMousewheel($sub, e); }]
|
||
- ], eNS))
|
||
- .dataSM('scroll-arrows').css({ top: 'auto', left: '0', marginLeft: x + (parseInt($sub.css('border-left-width')) || 0), width: subW - (parseInt($sub.css('border-left-width')) || 0) - (parseInt($sub.css('border-right-width')) || 0), zIndex: $sub.css('z-index') })
|
||
- .eq(horizontalParent && this.opts.bottomToTopSubMenus ? 0 : 1).show();
|
||
- // when a menu tree is fixed positioned we allow scrolling via touch too
|
||
- // since there is no other way to access such long sub menus if no mouse is present
|
||
- if (this.isFixed()) {
|
||
- $sub.css({ 'touch-action': 'none', '-ms-touch-action': 'none' })
|
||
- .bind(getEventsNS([
|
||
- [touchEvents ? 'touchstart touchmove touchend' : 'pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp', function(e) {
|
||
- self.menuScrollTouch($sub, e);
|
||
- }]
|
||
- ], eNS));
|
||
- }
|
||
- }
|
||
- }
|
||
- $sub.css({ top: 'auto', left: '0', marginLeft: x, marginTop: y - itemH });
|
||
- // IE iframe shim
|
||
- this.menuIframeShim($sub);
|
||
- if ($sub.dataSM('ie-shim')) {
|
||
- $sub.dataSM('ie-shim').css({ zIndex: $sub.css('z-index'), width: subW, height: subH, marginLeft: x, marginTop: y - itemH });
|
||
- }
|
||
- },
|
||
- menuScroll: function($sub, once, step) {
|
||
- var data = $sub.dataSM('scroll'),
|
||
- $arrows = $sub.dataSM('scroll-arrows'),
|
||
- end = data.up ? data.upEnd : data.downEnd,
|
||
- diff;
|
||
- if (!once && data.momentum) {
|
||
- data.momentum *= 0.92;
|
||
- diff = data.momentum;
|
||
- if (diff < 0.5) {
|
||
- this.menuScrollStop($sub);
|
||
- return;
|
||
- }
|
||
- } else {
|
||
- diff = step || (once || !this.opts.scrollAccelerate ? this.opts.scrollStep : Math.floor(data.step));
|
||
- }
|
||
- // hide any visible deeper level sub menus
|
||
- var level = $sub.dataSM('level');
|
||
- if (this.activatedItems[level - 1] && this.activatedItems[level - 1].dataSM('sub') && this.activatedItems[level - 1].dataSM('sub').is(':visible')) {
|
||
- this.menuHideSubMenus(level - 1);
|
||
- }
|
||
- data.y = data.up && end <= data.y || !data.up && end >= data.y ? data.y : (Math.abs(end - data.y) > diff ? data.y + (data.up ? diff : -diff) : end);
|
||
- $sub.add($sub.dataSM('ie-shim')).css(this.cssTransforms3d ? { '-webkit-transform': 'translate3d(0, ' + data.y + 'px, 0)', transform: 'translate3d(0, ' + data.y + 'px, 0)' } : { marginTop: data.y });
|
||
- // show opposite arrow if appropriate
|
||
- if (mouse && (data.up && data.y > data.downEnd || !data.up && data.y < data.upEnd)) {
|
||
- $arrows.eq(data.up ? 1 : 0).show();
|
||
- }
|
||
- // if we've reached the end
|
||
- if (data.y == end) {
|
||
- if (mouse) {
|
||
- $arrows.eq(data.up ? 0 : 1).hide();
|
||
- }
|
||
- this.menuScrollStop($sub);
|
||
- } else if (!once) {
|
||
- if (this.opts.scrollAccelerate && data.step < this.opts.scrollStep) {
|
||
- data.step += 0.2;
|
||
- }
|
||
- var self = this;
|
||
- this.scrollTimeout = requestAnimationFrame(function() { self.menuScroll($sub); });
|
||
- }
|
||
- },
|
||
- menuScrollMousewheel: function($sub, e) {
|
||
- if (this.getClosestMenu(e.target) == $sub[0]) {
|
||
- e = e.originalEvent;
|
||
- var up = (e.wheelDelta || -e.detail) > 0;
|
||
- if ($sub.dataSM('scroll-arrows').eq(up ? 0 : 1).is(':visible')) {
|
||
- $sub.dataSM('scroll').up = up;
|
||
- this.menuScroll($sub, true);
|
||
- }
|
||
- }
|
||
- e.preventDefault();
|
||
- },
|
||
- menuScrollOut: function($sub, e) {
|
||
- if (mouse) {
|
||
- if (!/^scroll-(up|down)/.test((e.relatedTarget || '').className) && ($sub[0] != e.relatedTarget && !$.contains($sub[0], e.relatedTarget) || this.getClosestMenu(e.relatedTarget) != $sub[0])) {
|
||
- $sub.dataSM('scroll-arrows').css('visibility', 'hidden');
|
||
- }
|
||
- }
|
||
- },
|
||
- menuScrollOver: function($sub, e) {
|
||
- if (mouse) {
|
||
- if (!/^scroll-(up|down)/.test(e.target.className) && this.getClosestMenu(e.target) == $sub[0]) {
|
||
- this.menuScrollRefreshData($sub);
|
||
- var data = $sub.dataSM('scroll'),
|
||
- upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
|
||
- $sub.dataSM('scroll-arrows').eq(0).css('margin-top', upEnd).end()
|
||
- .eq(1).css('margin-top', upEnd + this.getViewportHeight() - data.arrowDownH).end()
|
||
- .css('visibility', 'visible');
|
||
- }
|
||
- }
|
||
- },
|
||
- menuScrollRefreshData: function($sub) {
|
||
- var data = $sub.dataSM('scroll'),
|
||
- upEnd = $(window).scrollTop() - $sub.dataSM('parent-a').offset().top - data.itemH;
|
||
- if (this.cssTransforms3d) {
|
||
- upEnd = -(parseFloat($sub.css('margin-top')) - upEnd);
|
||
- }
|
||
- $.extend(data, {
|
||
- upEnd: upEnd,
|
||
- downEnd: upEnd + this.getViewportHeight() - data.subH
|
||
- });
|
||
- },
|
||
- menuScrollStop: function($sub) {
|
||
- if (this.scrollTimeout) {
|
||
- cancelAnimationFrame(this.scrollTimeout);
|
||
- this.scrollTimeout = 0;
|
||
- $sub.dataSM('scroll').step = 1;
|
||
- return true;
|
||
- }
|
||
- },
|
||
- menuScrollTouch: function($sub, e) {
|
||
- e = e.originalEvent;
|
||
- if (isTouchEvent(e)) {
|
||
- var touchPoint = this.getTouchPoint(e);
|
||
- // neglect event if we touched a visible deeper level sub menu
|
||
- if (this.getClosestMenu(touchPoint.target) == $sub[0]) {
|
||
- var data = $sub.dataSM('scroll');
|
||
- if (/(start|down)$/i.test(e.type)) {
|
||
- if (this.menuScrollStop($sub)) {
|
||
- // if we were scrolling, just stop and don't activate any link on the first touch
|
||
- e.preventDefault();
|
||
- this.$touchScrollingSub = $sub;
|
||
- } else {
|
||
- this.$touchScrollingSub = null;
|
||
- }
|
||
- // update scroll data since the user might have zoomed, etc.
|
||
- this.menuScrollRefreshData($sub);
|
||
- // extend it with the touch properties
|
||
- $.extend(data, {
|
||
- touchStartY: touchPoint.pageY,
|
||
- touchStartTime: e.timeStamp
|
||
- });
|
||
- } else if (/move$/i.test(e.type)) {
|
||
- var prevY = data.touchY !== undefined ? data.touchY : data.touchStartY;
|
||
- if (prevY !== undefined && prevY != touchPoint.pageY) {
|
||
- this.$touchScrollingSub = $sub;
|
||
- var up = prevY < touchPoint.pageY;
|
||
- // changed direction? reset...
|
||
- if (data.up !== undefined && data.up != up) {
|
||
- $.extend(data, {
|
||
- touchStartY: touchPoint.pageY,
|
||
- touchStartTime: e.timeStamp
|
||
- });
|
||
- }
|
||
- $.extend(data, {
|
||
- up: up,
|
||
- touchY: touchPoint.pageY
|
||
- });
|
||
- this.menuScroll($sub, true, Math.abs(touchPoint.pageY - prevY));
|
||
- }
|
||
- e.preventDefault();
|
||
- } else { // touchend/pointerup
|
||
- if (data.touchY !== undefined) {
|
||
- if (data.momentum = Math.pow(Math.abs(touchPoint.pageY - data.touchStartY) / (e.timeStamp - data.touchStartTime), 2) * 15) {
|
||
- this.menuScrollStop($sub);
|
||
- this.menuScroll($sub);
|
||
- e.preventDefault();
|
||
- }
|
||
- delete data.touchY;
|
||
- }
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
- menuShow: function($sub) {
|
||
- if (!$sub.dataSM('beforefirstshowfired')) {
|
||
- $sub.dataSM('beforefirstshowfired', true);
|
||
- if (this.$root.triggerHandler('beforefirstshow.smapi', $sub[0]) === false) {
|
||
- return;
|
||
- }
|
||
- }
|
||
- if (this.$root.triggerHandler('beforeshow.smapi', $sub[0]) === false) {
|
||
- return;
|
||
- }
|
||
- $sub.dataSM('shown-before', true)
|
||
- .stop(true, true);
|
||
- if (!$sub.is(':visible')) {
|
||
- // highlight parent item
|
||
- var $a = $sub.dataSM('parent-a');
|
||
- if (this.opts.keepHighlighted || this.isCollapsible()) {
|
||
- $a.addClass('highlighted');
|
||
- }
|
||
- if (this.isCollapsible()) {
|
||
- $sub.removeClass('sm-nowrap').css({ zIndex: '', width: 'auto', minWidth: '', maxWidth: '', top: '', left: '', marginLeft: '', marginTop: '' });
|
||
- } else {
|
||
- // set z-index
|
||
- $sub.css('z-index', this.zIndexInc = (this.zIndexInc || this.getStartZIndex()) + 1);
|
||
- // min/max-width fix - no way to rely purely on CSS as all UL's are nested
|
||
- if (this.opts.subMenusMinWidth || this.opts.subMenusMaxWidth) {
|
||
- $sub.css({ width: 'auto', minWidth: '', maxWidth: '' }).addClass('sm-nowrap');
|
||
- if (this.opts.subMenusMinWidth) {
|
||
- $sub.css('min-width', this.opts.subMenusMinWidth);
|
||
- }
|
||
- if (this.opts.subMenusMaxWidth) {
|
||
- var noMaxWidth = this.getWidth($sub);
|
||
- $sub.css('max-width', this.opts.subMenusMaxWidth);
|
||
- if (noMaxWidth > this.getWidth($sub)) {
|
||
- $sub.removeClass('sm-nowrap').css('width', this.opts.subMenusMaxWidth);
|
||
- }
|
||
- }
|
||
- }
|
||
- this.menuPosition($sub);
|
||
- // insert IE iframe shim
|
||
- if ($sub.dataSM('ie-shim')) {
|
||
- $sub.dataSM('ie-shim').insertBefore($sub);
|
||
- }
|
||
- }
|
||
- var complete = function() {
|
||
- // fix: "overflow: hidden;" is not reset on animation complete in jQuery < 1.9.0 in Chrome when global "box-sizing: border-box;" is used
|
||
- $sub.css('overflow', '');
|
||
- };
|
||
- // if sub is collapsible (mobile view)
|
||
- if (this.isCollapsible()) {
|
||
- if (this.opts.collapsibleShowFunction) {
|
||
- this.opts.collapsibleShowFunction.call(this, $sub, complete);
|
||
- } else {
|
||
- $sub.show(this.opts.collapsibleShowDuration, complete);
|
||
- }
|
||
- } else {
|
||
- if (this.opts.showFunction) {
|
||
- this.opts.showFunction.call(this, $sub, complete);
|
||
- } else {
|
||
- $sub.show(this.opts.showDuration, complete);
|
||
- }
|
||
- }
|
||
- // accessibility
|
||
- $a.attr('aria-expanded', 'true');
|
||
- $sub.attr({
|
||
- 'aria-expanded': 'true',
|
||
- 'aria-hidden': 'false'
|
||
- });
|
||
- // store sub menu in visible array
|
||
- this.visibleSubMenus.push($sub);
|
||
- this.$root.triggerHandler('show.smapi', $sub[0]);
|
||
- }
|
||
- },
|
||
- popupHide: function(noHideTimeout) {
|
||
- if (this.hideTimeout) {
|
||
- clearTimeout(this.hideTimeout);
|
||
- this.hideTimeout = 0;
|
||
- }
|
||
- var self = this;
|
||
- this.hideTimeout = setTimeout(function() {
|
||
- self.menuHideAll();
|
||
- }, noHideTimeout ? 1 : this.opts.hideTimeout);
|
||
- },
|
||
- popupShow: function(left, top) {
|
||
- if (!this.opts.isPopup) {
|
||
- alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');
|
||
- return;
|
||
- }
|
||
- if (this.hideTimeout) {
|
||
- clearTimeout(this.hideTimeout);
|
||
- this.hideTimeout = 0;
|
||
- }
|
||
- this.$root.dataSM('shown-before', true)
|
||
- .stop(true, true);
|
||
- if (!this.$root.is(':visible')) {
|
||
- this.$root.css({ left: left, top: top });
|
||
- // IE iframe shim
|
||
- this.menuIframeShim(this.$root);
|
||
- if (this.$root.dataSM('ie-shim')) {
|
||
- this.$root.dataSM('ie-shim').css({ zIndex: this.$root.css('z-index'), width: this.getWidth(this.$root), height: this.getHeight(this.$root), left: left, top: top }).insertBefore(this.$root);
|
||
- }
|
||
- // show menu
|
||
- var self = this,
|
||
- complete = function() {
|
||
- self.$root.css('overflow', '');
|
||
- };
|
||
- if (this.opts.showFunction) {
|
||
- this.opts.showFunction.call(this, this.$root, complete);
|
||
- } else {
|
||
- this.$root.show(this.opts.showDuration, complete);
|
||
- }
|
||
- this.visibleSubMenus[0] = this.$root;
|
||
- }
|
||
- },
|
||
- refresh: function() {
|
||
- this.destroy(true);
|
||
- this.init(true);
|
||
- },
|
||
- rootKeyDown: function(e) {
|
||
- if (!this.handleEvents()) {
|
||
- return;
|
||
- }
|
||
- switch (e.keyCode) {
|
||
- case 27: // reset on Esc
|
||
- var $activeTopItem = this.activatedItems[0];
|
||
- if ($activeTopItem) {
|
||
- this.menuHideAll();
|
||
- $activeTopItem[0].focus();
|
||
- var $sub = $activeTopItem.dataSM('sub');
|
||
- if ($sub) {
|
||
- this.menuHide($sub);
|
||
- }
|
||
- }
|
||
- break;
|
||
- case 32: // activate item's sub on Space
|
||
- var $target = $(e.target);
|
||
- if ($target.is('a') && this.handleItemEvents($target)) {
|
||
- var $sub = $target.dataSM('sub');
|
||
- if ($sub && !$sub.is(':visible')) {
|
||
- this.itemClick({ currentTarget: e.target });
|
||
- e.preventDefault();
|
||
- }
|
||
- }
|
||
- break;
|
||
- }
|
||
- },
|
||
- rootOut: function(e) {
|
||
- if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
|
||
- return;
|
||
- }
|
||
- if (this.hideTimeout) {
|
||
- clearTimeout(this.hideTimeout);
|
||
- this.hideTimeout = 0;
|
||
- }
|
||
- if (!this.opts.showOnClick || !this.opts.hideOnClick) {
|
||
- var self = this;
|
||
- this.hideTimeout = setTimeout(function() { self.menuHideAll(); }, this.opts.hideTimeout);
|
||
- }
|
||
- },
|
||
- rootOver: function(e) {
|
||
- if (!this.handleEvents() || this.isTouchMode() || e.target == this.$root[0]) {
|
||
- return;
|
||
- }
|
||
- if (this.hideTimeout) {
|
||
- clearTimeout(this.hideTimeout);
|
||
- this.hideTimeout = 0;
|
||
- }
|
||
- },
|
||
- winResize: function(e) {
|
||
- if (!this.handleEvents()) {
|
||
- // we still need to resize the disable overlay if it's visible
|
||
- if (this.$disableOverlay) {
|
||
- var pos = this.$root.offset();
|
||
- this.$disableOverlay.css({
|
||
- top: pos.top,
|
||
- left: pos.left,
|
||
- width: this.$root.outerWidth(),
|
||
- height: this.$root.outerHeight()
|
||
- });
|
||
- }
|
||
- return;
|
||
- }
|
||
- // hide sub menus on resize - on mobile do it only on orientation change
|
||
- if (!('onorientationchange' in window) || e.type == 'orientationchange') {
|
||
- var isCollapsible = this.isCollapsible();
|
||
- // if it was collapsible before resize and still is, don't do it
|
||
- if (!(this.wasCollapsible && isCollapsible)) {
|
||
- if (this.activatedItems.length) {
|
||
- this.activatedItems[this.activatedItems.length - 1][0].blur();
|
||
- }
|
||
- this.menuHideAll();
|
||
- }
|
||
- this.wasCollapsible = isCollapsible;
|
||
- }
|
||
- }
|
||
- }
|
||
- });
|
||
-
|
||
- $.fn.dataSM = function(key, val) {
|
||
- if (val) {
|
||
- return this.data(key + '_smartmenus', val);
|
||
- }
|
||
- return this.data(key + '_smartmenus');
|
||
- }
|
||
-
|
||
- $.fn.removeDataSM = function(key) {
|
||
- return this.removeData(key + '_smartmenus');
|
||
- }
|
||
-
|
||
- $.fn.smartmenus = function(options) {
|
||
- if (typeof options == 'string') {
|
||
- var args = arguments,
|
||
- method = options;
|
||
- Array.prototype.shift.call(args);
|
||
- return this.each(function() {
|
||
- var smartmenus = $(this).data('smartmenus');
|
||
- if (smartmenus && smartmenus[method]) {
|
||
- smartmenus[method].apply(smartmenus, args);
|
||
- }
|
||
- });
|
||
- }
|
||
- var opts = $.extend({}, $.fn.smartmenus.defaults, options);
|
||
- return this.each(function() {
|
||
- new $.SmartMenus(this, opts);
|
||
- });
|
||
- }
|
||
-
|
||
- // default settings
|
||
- $.fn.smartmenus.defaults = {
|
||
- isPopup: false, // is this a popup menu (can be shown via the popupShow/popupHide methods) or a permanent menu bar
|
||
- mainMenuSubOffsetX: 0, // pixels offset from default position
|
||
- mainMenuSubOffsetY: 0, // pixels offset from default position
|
||
- subMenusSubOffsetX: 0, // pixels offset from default position
|
||
- subMenusSubOffsetY: 0, // pixels offset from default position
|
||
- subMenusMinWidth: '10em', // min-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
|
||
- subMenusMaxWidth: '20em', // max-width for the sub menus (any CSS unit) - if set, the fixed width set in CSS will be ignored
|
||
- subIndicators: true, // create sub menu indicators - creates a SPAN and inserts it in the A
|
||
- subIndicatorsPos: 'prepend', // position of the SPAN relative to the menu item content ('prepend', 'append')
|
||
- subIndicatorsText: '+', // [optionally] add text in the SPAN (e.g. '+') (you may want to check the CSS for the sub indicators too)
|
||
- scrollStep: 30, // pixels step when scrolling long sub menus that do not fit in the viewport height
|
||
- scrollAccelerate: true, // accelerate scrolling or use a fixed step
|
||
- showTimeout: 250, // timeout before showing the sub menus
|
||
- hideTimeout: 500, // timeout before hiding the sub menus
|
||
- showDuration: 0, // duration for show animation - set to 0 for no animation - matters only if showFunction:null
|
||
- showFunction: null, // custom function to use when showing a sub menu (the default is the jQuery 'show')
|
||
- // don't forget to call complete() at the end of whatever you do
|
||
- // e.g.: function($ul, complete) { $ul.fadeIn(250, complete); }
|
||
- hideDuration: 0, // duration for hide animation - set to 0 for no animation - matters only if hideFunction:null
|
||
- hideFunction: function($ul, complete) { $ul.fadeOut(200, complete); }, // custom function to use when hiding a sub menu (the default is the jQuery 'hide')
|
||
- // don't forget to call complete() at the end of whatever you do
|
||
- // e.g.: function($ul, complete) { $ul.fadeOut(250, complete); }
|
||
- collapsibleShowDuration:0, // duration for show animation for collapsible sub menus - matters only if collapsibleShowFunction:null
|
||
- collapsibleShowFunction:function($ul, complete) { $ul.slideDown(200, complete); }, // custom function to use when showing a collapsible sub menu
|
||
- // (i.e. when mobile styles are used to make the sub menus collapsible)
|
||
- collapsibleHideDuration:0, // duration for hide animation for collapsible sub menus - matters only if collapsibleHideFunction:null
|
||
- collapsibleHideFunction:function($ul, complete) { $ul.slideUp(200, complete); }, // custom function to use when hiding a collapsible sub menu
|
||
- // (i.e. when mobile styles are used to make the sub menus collapsible)
|
||
- showOnClick: false, // show the first-level sub menus onclick instead of onmouseover (i.e. mimic desktop app menus) (matters only for mouse input)
|
||
- hideOnClick: true, // hide the sub menus on click/tap anywhere on the page
|
||
- noMouseOver: false, // disable sub menus activation onmouseover (i.e. behave like in touch mode - use just mouse clicks) (matters only for mouse input)
|
||
- keepInViewport: true, // reposition the sub menus if needed to make sure they always appear inside the viewport
|
||
- keepHighlighted: true, // keep all ancestor items of the current sub menu highlighted (adds the 'highlighted' class to the A's)
|
||
- markCurrentItem: false, // automatically add the 'current' class to the A element of the item linking to the current URL
|
||
- markCurrentTree: true, // add the 'current' class also to the A elements of all ancestor items of the current item
|
||
- rightToLeftSubMenus: false, // right to left display of the sub menus (check the CSS for the sub indicators' position)
|
||
- bottomToTopSubMenus: false, // bottom to top display of the sub menus
|
||
- overlapControlsInIE: true // make sure sub menus appear on top of special OS controls in IE (i.e. SELECT, OBJECT, EMBED, etc.)
|
||
- };
|
||
-
|
||
- return $;
|
||
-}));
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.smartmenus-1.1.0.min.js doxygen-1.8.14/jquery/jquery.smartmenus-1.1.0.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.smartmenus-1.1.0.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.smartmenus-1.1.0.min.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,3 @@
|
||
+/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
|
||
+ * http://www.smartmenus.org/
|
||
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-0.2.3.touch-punch.js doxygen-1.8.14/jquery/jquery.ui-0.2.3.touch-punch.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-0.2.3.touch-punch.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-0.2.3.touch-punch.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,180 +0,0 @@
|
||
-/*!
|
||
- * jQuery UI Touch Punch 0.2.3
|
||
- *
|
||
- * Copyright 2011–2014, Dave Furfero
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- *
|
||
- * Depends:
|
||
- * jquery.ui.widget.js
|
||
- * jquery.ui.mouse.js
|
||
- */
|
||
-(function ($) {
|
||
-
|
||
- // Detect touch support
|
||
- $.support.touch = 'ontouchend' in document;
|
||
-
|
||
- // Ignore browsers without touch support
|
||
- if (!$.support.touch) {
|
||
- return;
|
||
- }
|
||
-
|
||
- var mouseProto = $.ui.mouse.prototype,
|
||
- _mouseInit = mouseProto._mouseInit,
|
||
- _mouseDestroy = mouseProto._mouseDestroy,
|
||
- touchHandled;
|
||
-
|
||
- /**
|
||
- * Simulate a mouse event based on a corresponding touch event
|
||
- * @param {Object} event A touch event
|
||
- * @param {String} simulatedType The corresponding mouse event
|
||
- */
|
||
- function simulateMouseEvent (event, simulatedType) {
|
||
-
|
||
- // Ignore multi-touch events
|
||
- if (event.originalEvent.touches.length > 1) {
|
||
- return;
|
||
- }
|
||
-
|
||
- event.preventDefault();
|
||
-
|
||
- var touch = event.originalEvent.changedTouches[0],
|
||
- simulatedEvent = document.createEvent('MouseEvents');
|
||
-
|
||
- // Initialize the simulated mouse event using the touch event's coordinates
|
||
- simulatedEvent.initMouseEvent(
|
||
- simulatedType, // type
|
||
- true, // bubbles
|
||
- true, // cancelable
|
||
- window, // view
|
||
- 1, // detail
|
||
- touch.screenX, // screenX
|
||
- touch.screenY, // screenY
|
||
- touch.clientX, // clientX
|
||
- touch.clientY, // clientY
|
||
- false, // ctrlKey
|
||
- false, // altKey
|
||
- false, // shiftKey
|
||
- false, // metaKey
|
||
- 0, // button
|
||
- null // relatedTarget
|
||
- );
|
||
-
|
||
- // Dispatch the simulated event to the target element
|
||
- event.target.dispatchEvent(simulatedEvent);
|
||
- }
|
||
-
|
||
- /**
|
||
- * Handle the jQuery UI widget's touchstart events
|
||
- * @param {Object} event The widget element's touchstart event
|
||
- */
|
||
- mouseProto._touchStart = function (event) {
|
||
-
|
||
- var self = this;
|
||
-
|
||
- // Ignore the event if another widget is already being handled
|
||
- if (touchHandled || !self._mouseCapture(event.originalEvent.changedTouches[0])) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Set the flag to prevent other widgets from inheriting the touch event
|
||
- touchHandled = true;
|
||
-
|
||
- // Track movement to determine if interaction was a click
|
||
- self._touchMoved = false;
|
||
-
|
||
- // Simulate the mouseover event
|
||
- simulateMouseEvent(event, 'mouseover');
|
||
-
|
||
- // Simulate the mousemove event
|
||
- simulateMouseEvent(event, 'mousemove');
|
||
-
|
||
- // Simulate the mousedown event
|
||
- simulateMouseEvent(event, 'mousedown');
|
||
- };
|
||
-
|
||
- /**
|
||
- * Handle the jQuery UI widget's touchmove events
|
||
- * @param {Object} event The document's touchmove event
|
||
- */
|
||
- mouseProto._touchMove = function (event) {
|
||
-
|
||
- // Ignore event if not handled
|
||
- if (!touchHandled) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Interaction was not a click
|
||
- this._touchMoved = true;
|
||
-
|
||
- // Simulate the mousemove event
|
||
- simulateMouseEvent(event, 'mousemove');
|
||
- };
|
||
-
|
||
- /**
|
||
- * Handle the jQuery UI widget's touchend events
|
||
- * @param {Object} event The document's touchend event
|
||
- */
|
||
- mouseProto._touchEnd = function (event) {
|
||
-
|
||
- // Ignore event if not handled
|
||
- if (!touchHandled) {
|
||
- return;
|
||
- }
|
||
-
|
||
- // Simulate the mouseup event
|
||
- simulateMouseEvent(event, 'mouseup');
|
||
-
|
||
- // Simulate the mouseout event
|
||
- simulateMouseEvent(event, 'mouseout');
|
||
-
|
||
- // If the touch interaction did not move, it should trigger a click
|
||
- if (!this._touchMoved) {
|
||
-
|
||
- // Simulate the click event
|
||
- simulateMouseEvent(event, 'click');
|
||
- }
|
||
-
|
||
- // Unset the flag to allow other widgets to inherit the touch event
|
||
- touchHandled = false;
|
||
- };
|
||
-
|
||
- /**
|
||
- * A duck punch of the $.ui.mouse _mouseInit method to support touch events.
|
||
- * This method extends the widget with bound touch event handlers that
|
||
- * translate touch events to mouse events and pass them to the widget's
|
||
- * original mouse event handling methods.
|
||
- */
|
||
- mouseProto._mouseInit = function () {
|
||
-
|
||
- var self = this;
|
||
-
|
||
- // Delegate the touch handlers to the widget's element
|
||
- self.element.bind({
|
||
- touchstart: $.proxy(self, '_touchStart'),
|
||
- touchmove: $.proxy(self, '_touchMove'),
|
||
- touchend: $.proxy(self, '_touchEnd')
|
||
- });
|
||
-
|
||
- // Call the original $.ui.mouse init method
|
||
- _mouseInit.call(self);
|
||
- };
|
||
-
|
||
- /**
|
||
- * Remove the touch event handlers
|
||
- */
|
||
- mouseProto._mouseDestroy = function () {
|
||
-
|
||
- var self = this;
|
||
-
|
||
- // Delegate the touch handlers to the widget's element
|
||
- self.element.unbind({
|
||
- touchstart: $.proxy(self, '_touchStart'),
|
||
- touchmove: $.proxy(self, '_touchMove'),
|
||
- touchend: $.proxy(self, '_touchEnd')
|
||
- });
|
||
-
|
||
- // Call the original $.ui.mouse destroy method
|
||
- _mouseDestroy.call(self);
|
||
- };
|
||
-
|
||
-})(jQuery);
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-1.12.1.min.js doxygen-1.8.14/jquery/jquery.ui-1.12.1.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-1.12.1.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-1.12.1.min.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,7 @@
|
||
+/*! jQuery UI - v1.12.1 - 2019-01-27
|
||
+* http://jqueryui.com
|
||
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
|
||
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||
+
|
||
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
|
||
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.core.js doxygen-1.8.14/jquery/jquery.ui-1.8.18.core.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.core.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-1.8.18.core.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,319 +0,0 @@
|
||
-/*!
|
||
- * jQuery UI 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI
|
||
- */
|
||
-(function( $, undefined ) {
|
||
-
|
||
-// prevent duplicate loading
|
||
-// this is only a problem because we proxy existing functions
|
||
-// and we don't want to double proxy them
|
||
-$.ui = $.ui || {};
|
||
-if ( $.ui.version ) {
|
||
- return;
|
||
-}
|
||
-
|
||
-$.extend( $.ui, {
|
||
- version: "1.8.18",
|
||
-
|
||
- keyCode: {
|
||
- ALT: 18,
|
||
- BACKSPACE: 8,
|
||
- CAPS_LOCK: 20,
|
||
- COMMA: 188,
|
||
- COMMAND: 91,
|
||
- COMMAND_LEFT: 91, // COMMAND
|
||
- COMMAND_RIGHT: 93,
|
||
- CONTROL: 17,
|
||
- DELETE: 46,
|
||
- DOWN: 40,
|
||
- END: 35,
|
||
- ENTER: 13,
|
||
- ESCAPE: 27,
|
||
- HOME: 36,
|
||
- INSERT: 45,
|
||
- LEFT: 37,
|
||
- MENU: 93, // COMMAND_RIGHT
|
||
- NUMPAD_ADD: 107,
|
||
- NUMPAD_DECIMAL: 110,
|
||
- NUMPAD_DIVIDE: 111,
|
||
- NUMPAD_ENTER: 108,
|
||
- NUMPAD_MULTIPLY: 106,
|
||
- NUMPAD_SUBTRACT: 109,
|
||
- PAGE_DOWN: 34,
|
||
- PAGE_UP: 33,
|
||
- PERIOD: 190,
|
||
- RIGHT: 39,
|
||
- SHIFT: 16,
|
||
- SPACE: 32,
|
||
- TAB: 9,
|
||
- UP: 38,
|
||
- WINDOWS: 91 // COMMAND
|
||
- }
|
||
-});
|
||
-
|
||
-// plugins
|
||
-$.fn.extend({
|
||
- propAttr: $.fn.prop || $.fn.attr,
|
||
-
|
||
- _focus: $.fn.focus,
|
||
- focus: function( delay, fn ) {
|
||
- return typeof delay === "number" ?
|
||
- this.each(function() {
|
||
- var elem = this;
|
||
- setTimeout(function() {
|
||
- $( elem ).focus();
|
||
- if ( fn ) {
|
||
- fn.call( elem );
|
||
- }
|
||
- }, delay );
|
||
- }) :
|
||
- this._focus.apply( this, arguments );
|
||
- },
|
||
-
|
||
- scrollParent: function() {
|
||
- var scrollParent;
|
||
- if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
|
||
- scrollParent = this.parents().filter(function() {
|
||
- return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
|
||
- }).eq(0);
|
||
- } else {
|
||
- scrollParent = this.parents().filter(function() {
|
||
- return (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
|
||
- }).eq(0);
|
||
- }
|
||
-
|
||
- return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
|
||
- },
|
||
-
|
||
- zIndex: function( zIndex ) {
|
||
- if ( zIndex !== undefined ) {
|
||
- return this.css( "zIndex", zIndex );
|
||
- }
|
||
-
|
||
- if ( this.length ) {
|
||
- var elem = $( this[ 0 ] ), position, value;
|
||
- while ( elem.length && elem[ 0 ] !== document ) {
|
||
- // Ignore z-index if position is set to a value where z-index is ignored by the browser
|
||
- // This makes behavior of this function consistent across browsers
|
||
- // WebKit always returns auto if the element is positioned
|
||
- position = elem.css( "position" );
|
||
- if ( position === "absolute" || position === "relative" || position === "fixed" ) {
|
||
- // IE returns 0 when zIndex is not specified
|
||
- // other browsers return a string
|
||
- // we ignore the case of nested elements with an explicit value of 0
|
||
- // <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
|
||
- value = parseInt( elem.css( "zIndex" ), 10 );
|
||
- if ( !isNaN( value ) && value !== 0 ) {
|
||
- return value;
|
||
- }
|
||
- }
|
||
- elem = elem.parent();
|
||
- }
|
||
- }
|
||
-
|
||
- return 0;
|
||
- },
|
||
-
|
||
- disableSelection: function() {
|
||
- return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
|
||
- ".ui-disableSelection", function( event ) {
|
||
- event.preventDefault();
|
||
- });
|
||
- },
|
||
-
|
||
- enableSelection: function() {
|
||
- return this.unbind( ".ui-disableSelection" );
|
||
- }
|
||
-});
|
||
-
|
||
-$.each( [ "Width", "Height" ], function( i, name ) {
|
||
- var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
|
||
- type = name.toLowerCase(),
|
||
- orig = {
|
||
- innerWidth: $.fn.innerWidth,
|
||
- innerHeight: $.fn.innerHeight,
|
||
- outerWidth: $.fn.outerWidth,
|
||
- outerHeight: $.fn.outerHeight
|
||
- };
|
||
-
|
||
- function reduce( elem, size, border, margin ) {
|
||
- $.each( side, function() {
|
||
- size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
|
||
- if ( border ) {
|
||
- size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
|
||
- }
|
||
- if ( margin ) {
|
||
- size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
|
||
- }
|
||
- });
|
||
- return size;
|
||
- }
|
||
-
|
||
- $.fn[ "inner" + name ] = function( size ) {
|
||
- if ( size === undefined ) {
|
||
- return orig[ "inner" + name ].call( this );
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- $( this ).css( type, reduce( this, size ) + "px" );
|
||
- });
|
||
- };
|
||
-
|
||
- $.fn[ "outer" + name] = function( size, margin ) {
|
||
- if ( typeof size !== "number" ) {
|
||
- return orig[ "outer" + name ].call( this, size );
|
||
- }
|
||
-
|
||
- return this.each(function() {
|
||
- $( this).css( type, reduce( this, size, true, margin ) + "px" );
|
||
- });
|
||
- };
|
||
-});
|
||
-
|
||
-// selectors
|
||
-function focusable( element, isTabIndexNotNaN ) {
|
||
- var nodeName = element.nodeName.toLowerCase();
|
||
- if ( "area" === nodeName ) {
|
||
- var map = element.parentNode,
|
||
- mapName = map.name,
|
||
- img;
|
||
- if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
|
||
- return false;
|
||
- }
|
||
- img = $( "img[usemap=#" + mapName + "]" )[0];
|
||
- return !!img && visible( img );
|
||
- }
|
||
- return ( /input|select|textarea|button|object/.test( nodeName )
|
||
- ? !element.disabled
|
||
- : "a" == nodeName
|
||
- ? element.href || isTabIndexNotNaN
|
||
- : isTabIndexNotNaN)
|
||
- // the element and all of its ancestors must be visible
|
||
- && visible( element );
|
||
-}
|
||
-
|
||
-function visible( element ) {
|
||
- return !$( element ).parents().andSelf().filter(function() {
|
||
- return $.curCSS( this, "visibility" ) === "hidden" ||
|
||
- $.expr.filters.hidden( this );
|
||
- }).length;
|
||
-}
|
||
-
|
||
-$.extend( $.expr[ ":" ], {
|
||
- data: function( elem, i, match ) {
|
||
- return !!$.data( elem, match[ 3 ] );
|
||
- },
|
||
-
|
||
- focusable: function( element ) {
|
||
- return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) );
|
||
- },
|
||
-
|
||
- tabbable: function( element ) {
|
||
- var tabIndex = $.attr( element, "tabindex" ),
|
||
- isTabIndexNaN = isNaN( tabIndex );
|
||
- return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN );
|
||
- }
|
||
-});
|
||
-
|
||
-// support
|
||
-$(function() {
|
||
- var body = document.body,
|
||
- div = body.appendChild( div = document.createElement( "div" ) );
|
||
-
|
||
- // access offsetHeight before setting the style to prevent a layout bug
|
||
- // in IE 9 which causes the element to continue to take up space even
|
||
- // after it is removed from the DOM (#8026)
|
||
- div.offsetHeight;
|
||
-
|
||
- $.extend( div.style, {
|
||
- minHeight: "100px",
|
||
- height: "auto",
|
||
- padding: 0,
|
||
- borderWidth: 0
|
||
- });
|
||
-
|
||
- $.support.minHeight = div.offsetHeight === 100;
|
||
- $.support.selectstart = "onselectstart" in div;
|
||
-
|
||
- // set display to none to avoid a layout bug in IE
|
||
- // http://dev.jquery.com/ticket/4014
|
||
- body.removeChild( div ).style.display = "none";
|
||
-});
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-
|
||
-// deprecated
|
||
-$.extend( $.ui, {
|
||
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
|
||
- plugin: {
|
||
- add: function( module, option, set ) {
|
||
- var proto = $.ui[ module ].prototype;
|
||
- for ( var i in set ) {
|
||
- proto.plugins[ i ] = proto.plugins[ i ] || [];
|
||
- proto.plugins[ i ].push( [ option, set[ i ] ] );
|
||
- }
|
||
- },
|
||
- call: function( instance, name, args ) {
|
||
- var set = instance.plugins[ name ];
|
||
- if ( !set || !instance.element[ 0 ].parentNode ) {
|
||
- return;
|
||
- }
|
||
-
|
||
- for ( var i = 0; i < set.length; i++ ) {
|
||
- if ( instance.options[ set[ i ][ 0 ] ] ) {
|
||
- set[ i ][ 1 ].apply( instance.element, args );
|
||
- }
|
||
- }
|
||
- }
|
||
- },
|
||
-
|
||
- // will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()
|
||
- contains: function( a, b ) {
|
||
- return document.compareDocumentPosition ?
|
||
- a.compareDocumentPosition( b ) & 16 :
|
||
- a !== b && a.contains( b );
|
||
- },
|
||
-
|
||
- // only used by resizable
|
||
- hasScroll: function( el, a ) {
|
||
-
|
||
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
|
||
- if ( $( el ).css( "overflow" ) === "hidden") {
|
||
- return false;
|
||
- }
|
||
-
|
||
- var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
|
||
- has = false;
|
||
-
|
||
- if ( el[ scroll ] > 0 ) {
|
||
- return true;
|
||
- }
|
||
-
|
||
- // TODO: determine which cases actually cause this to happen
|
||
- // if the element doesn't have the scroll set, see if it's possible to
|
||
- // set the scroll
|
||
- el[ scroll ] = 1;
|
||
- has = ( el[ scroll ] > 0 );
|
||
- el[ scroll ] = 0;
|
||
- return has;
|
||
- },
|
||
-
|
||
- // these are odd functions, fix the API or move into individual plugins
|
||
- isOverAxis: function( x, reference, size ) {
|
||
- //Determines when x coordinate is over "b" element axis
|
||
- return ( x > reference ) && ( x < ( reference + size ) );
|
||
- },
|
||
- isOver: function( y, x, top, left, height, width ) {
|
||
- //Determines when x, y coordinates is over "b" element
|
||
- return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
|
||
- }
|
||
-});
|
||
-
|
||
-})( jQuery );
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.mouse.js doxygen-1.8.14/jquery/jquery.ui-1.8.18.mouse.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.mouse.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-1.8.18.mouse.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,162 +0,0 @@
|
||
-/*!
|
||
- * jQuery UI Mouse 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI/Mouse
|
||
- *
|
||
- * Depends:
|
||
- * jquery.ui.widget.js
|
||
- */
|
||
-(function( $, undefined ) {
|
||
-
|
||
-var mouseHandled = false;
|
||
-$( document ).mouseup( function( e ) {
|
||
- mouseHandled = false;
|
||
-});
|
||
-
|
||
-$.widget("ui.mouse", {
|
||
- options: {
|
||
- cancel: ':input,option',
|
||
- distance: 1,
|
||
- delay: 0
|
||
- },
|
||
- _mouseInit: function() {
|
||
- var self = this;
|
||
-
|
||
- this.element
|
||
- .bind('mousedown.'+this.widgetName, function(event) {
|
||
- return self._mouseDown(event);
|
||
- })
|
||
- .bind('click.'+this.widgetName, function(event) {
|
||
- if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
|
||
- $.removeData(event.target, self.widgetName + '.preventClickEvent');
|
||
- event.stopImmediatePropagation();
|
||
- return false;
|
||
- }
|
||
- });
|
||
-
|
||
- this.started = false;
|
||
- },
|
||
-
|
||
- // TODO: make sure destroying one instance of mouse doesn't mess with
|
||
- // other instances of mouse
|
||
- _mouseDestroy: function() {
|
||
- this.element.unbind('.'+this.widgetName);
|
||
- },
|
||
-
|
||
- _mouseDown: function(event) {
|
||
- // don't let more than one widget handle mouseStart
|
||
- if( mouseHandled ) { return };
|
||
-
|
||
- // we may have missed mouseup (out of window)
|
||
- (this._mouseStarted && this._mouseUp(event));
|
||
-
|
||
- this._mouseDownEvent = event;
|
||
-
|
||
- var self = this,
|
||
- btnIsLeft = (event.which == 1),
|
||
- // event.target.nodeName works around a bug in IE 8 with
|
||
- // disabled inputs (#7620)
|
||
- elIsCancel = (typeof this.options.cancel == "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false);
|
||
- if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) {
|
||
- return true;
|
||
- }
|
||
-
|
||
- this.mouseDelayMet = !this.options.delay;
|
||
- if (!this.mouseDelayMet) {
|
||
- this._mouseDelayTimer = setTimeout(function() {
|
||
- self.mouseDelayMet = true;
|
||
- }, this.options.delay);
|
||
- }
|
||
-
|
||
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
|
||
- this._mouseStarted = (this._mouseStart(event) !== false);
|
||
- if (!this._mouseStarted) {
|
||
- event.preventDefault();
|
||
- return true;
|
||
- }
|
||
- }
|
||
-
|
||
- // Click event may never have fired (Gecko & Opera)
|
||
- if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
|
||
- $.removeData(event.target, this.widgetName + '.preventClickEvent');
|
||
- }
|
||
-
|
||
- // these delegates are required to keep context
|
||
- this._mouseMoveDelegate = function(event) {
|
||
- return self._mouseMove(event);
|
||
- };
|
||
- this._mouseUpDelegate = function(event) {
|
||
- return self._mouseUp(event);
|
||
- };
|
||
- $(document)
|
||
- .bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
|
||
- .bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
|
||
-
|
||
- event.preventDefault();
|
||
-
|
||
- mouseHandled = true;
|
||
- return true;
|
||
- },
|
||
-
|
||
- _mouseMove: function(event) {
|
||
- // IE mouseup check - mouseup happened when mouse was out of window
|
||
- if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
|
||
- return this._mouseUp(event);
|
||
- }
|
||
-
|
||
- if (this._mouseStarted) {
|
||
- this._mouseDrag(event);
|
||
- return event.preventDefault();
|
||
- }
|
||
-
|
||
- if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
|
||
- this._mouseStarted =
|
||
- (this._mouseStart(this._mouseDownEvent, event) !== false);
|
||
- (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
|
||
- }
|
||
-
|
||
- return !this._mouseStarted;
|
||
- },
|
||
-
|
||
- _mouseUp: function(event) {
|
||
- $(document)
|
||
- .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
|
||
- .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);
|
||
-
|
||
- if (this._mouseStarted) {
|
||
- this._mouseStarted = false;
|
||
-
|
||
- if (event.target == this._mouseDownEvent.target) {
|
||
- $.data(event.target, this.widgetName + '.preventClickEvent', true);
|
||
- }
|
||
-
|
||
- this._mouseStop(event);
|
||
- }
|
||
-
|
||
- return false;
|
||
- },
|
||
-
|
||
- _mouseDistanceMet: function(event) {
|
||
- return (Math.max(
|
||
- Math.abs(this._mouseDownEvent.pageX - event.pageX),
|
||
- Math.abs(this._mouseDownEvent.pageY - event.pageY)
|
||
- ) >= this.options.distance
|
||
- );
|
||
- },
|
||
-
|
||
- _mouseDelayMet: function(event) {
|
||
- return this.mouseDelayMet;
|
||
- },
|
||
-
|
||
- // These are placeholder methods, to be overriden by extending plugin
|
||
- _mouseStart: function(event) {},
|
||
- _mouseDrag: function(event) {},
|
||
- _mouseStop: function(event) {},
|
||
- _mouseCapture: function(event) { return true; }
|
||
-});
|
||
-
|
||
-})(jQuery);
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.resizable.js doxygen-1.8.14/jquery/jquery.ui-1.8.18.resizable.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.resizable.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-1.8.18.resizable.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,808 +0,0 @@
|
||
-/*
|
||
- * jQuery UI Resizable 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI/Resizables
|
||
- *
|
||
- * Depends:
|
||
- * jquery.ui.core.js
|
||
- * jquery.ui.mouse.js
|
||
- * jquery.ui.widget.js
|
||
- */
|
||
-(function( $, undefined ) {
|
||
-
|
||
-$.widget("ui.resizable", $.ui.mouse, {
|
||
- widgetEventPrefix: "resize",
|
||
- options: {
|
||
- alsoResize: false,
|
||
- animate: false,
|
||
- animateDuration: "slow",
|
||
- animateEasing: "swing",
|
||
- aspectRatio: false,
|
||
- autoHide: false,
|
||
- containment: false,
|
||
- ghost: false,
|
||
- grid: false,
|
||
- handles: "e,s,se",
|
||
- helper: false,
|
||
- maxHeight: null,
|
||
- maxWidth: null,
|
||
- minHeight: 10,
|
||
- minWidth: 10,
|
||
- zIndex: 1000
|
||
- },
|
||
- _create: function() {
|
||
-
|
||
- var self = this, o = this.options;
|
||
- this.element.addClass("ui-resizable");
|
||
-
|
||
- $.extend(this, {
|
||
- _aspectRatio: !!(o.aspectRatio),
|
||
- aspectRatio: o.aspectRatio,
|
||
- originalElement: this.element,
|
||
- _proportionallyResizeElements: [],
|
||
- _helper: o.helper || o.ghost || o.animate ? o.helper || 'ui-resizable-helper' : null
|
||
- });
|
||
-
|
||
- //Wrap the element if it cannot hold child nodes
|
||
- if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) {
|
||
-
|
||
- //Create a wrapper element and set the wrapper to the new current internal element
|
||
- this.element.wrap(
|
||
- $('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
|
||
- position: this.element.css('position'),
|
||
- width: this.element.outerWidth(),
|
||
- height: this.element.outerHeight(),
|
||
- top: this.element.css('top'),
|
||
- left: this.element.css('left')
|
||
- })
|
||
- );
|
||
-
|
||
- //Overwrite the original this.element
|
||
- this.element = this.element.parent().data(
|
||
- "resizable", this.element.data('resizable')
|
||
- );
|
||
-
|
||
- this.elementIsWrapper = true;
|
||
-
|
||
- //Move margins to the wrapper
|
||
- this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") });
|
||
- this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0});
|
||
-
|
||
- //Prevent Safari textarea resize
|
||
- this.originalResizeStyle = this.originalElement.css('resize');
|
||
- this.originalElement.css('resize', 'none');
|
||
-
|
||
- //Push the actual element to our proportionallyResize internal array
|
||
- this._proportionallyResizeElements.push(this.originalElement.css({ position: 'static', zoom: 1, display: 'block' }));
|
||
-
|
||
- // avoid IE jump (hard set the margin)
|
||
- this.originalElement.css({ margin: this.originalElement.css('margin') });
|
||
-
|
||
- // fix handlers offset
|
||
- this._proportionallyResize();
|
||
-
|
||
- }
|
||
-
|
||
- this.handles = o.handles || (!$('.ui-resizable-handle', this.element).length ? "e,s,se" : { n: '.ui-resizable-n', e: '.ui-resizable-e', s: '.ui-resizable-s', w: '.ui-resizable-w', se: '.ui-resizable-se', sw: '.ui-resizable-sw', ne: '.ui-resizable-ne', nw: '.ui-resizable-nw' });
|
||
- if(this.handles.constructor == String) {
|
||
-
|
||
- if(this.handles == 'all') this.handles = 'n,e,s,w,se,sw,ne,nw';
|
||
- var n = this.handles.split(","); this.handles = {};
|
||
-
|
||
- for(var i = 0; i < n.length; i++) {
|
||
-
|
||
- var handle = $.trim(n[i]), hname = 'ui-resizable-'+handle;
|
||
- var axis = $('<div class="ui-resizable-handle ' + hname + '"></div>');
|
||
-
|
||
- // increase zIndex of sw, se, ne, nw axis
|
||
- //TODO : this modifies original option
|
||
- if(/sw|se|ne|nw/.test(handle)) axis.css({ zIndex: ++o.zIndex });
|
||
-
|
||
- //TODO : What's going on here?
|
||
- if ('se' == handle) {
|
||
- axis.addClass('ui-icon ui-icon-gripsmall-diagonal-se');
|
||
- };
|
||
-
|
||
- //Insert into internal handles object and append to element
|
||
- this.handles[handle] = '.ui-resizable-'+handle;
|
||
- this.element.append(axis);
|
||
- }
|
||
-
|
||
- }
|
||
-
|
||
- this._renderAxis = function(target) {
|
||
-
|
||
- target = target || this.element;
|
||
-
|
||
- for(var i in this.handles) {
|
||
-
|
||
- if(this.handles[i].constructor == String)
|
||
- this.handles[i] = $(this.handles[i], this.element).show();
|
||
-
|
||
- //Apply pad to wrapper element, needed to fix axis position (textarea, inputs, scrolls)
|
||
- if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
|
||
-
|
||
- var axis = $(this.handles[i], this.element), padWrapper = 0;
|
||
-
|
||
- //Checking the correct pad and border
|
||
- padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth();
|
||
-
|
||
- //The padding type i have to apply...
|
||
- var padPos = [ 'padding',
|
||
- /ne|nw|n/.test(i) ? 'Top' :
|
||
- /se|sw|s/.test(i) ? 'Bottom' :
|
||
- /^e$/.test(i) ? 'Right' : 'Left' ].join("");
|
||
-
|
||
- target.css(padPos, padWrapper);
|
||
-
|
||
- this._proportionallyResize();
|
||
-
|
||
- }
|
||
-
|
||
- //TODO: What's that good for? There's not anything to be executed left
|
||
- if(!$(this.handles[i]).length)
|
||
- continue;
|
||
-
|
||
- }
|
||
- };
|
||
-
|
||
- //TODO: make renderAxis a prototype function
|
||
- this._renderAxis(this.element);
|
||
-
|
||
- this._handles = $('.ui-resizable-handle', this.element)
|
||
- .disableSelection();
|
||
-
|
||
- //Matching axis name
|
||
- this._handles.mouseover(function() {
|
||
- if (!self.resizing) {
|
||
- if (this.className)
|
||
- var axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
|
||
- //Axis, default = se
|
||
- self.axis = axis && axis[1] ? axis[1] : 'se';
|
||
- }
|
||
- });
|
||
-
|
||
- //If we want to auto hide the elements
|
||
- if (o.autoHide) {
|
||
- this._handles.hide();
|
||
- $(this.element)
|
||
- .addClass("ui-resizable-autohide")
|
||
- .hover(function() {
|
||
- if (o.disabled) return;
|
||
- $(this).removeClass("ui-resizable-autohide");
|
||
- self._handles.show();
|
||
- },
|
||
- function(){
|
||
- if (o.disabled) return;
|
||
- if (!self.resizing) {
|
||
- $(this).addClass("ui-resizable-autohide");
|
||
- self._handles.hide();
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- //Initialize the mouse interaction
|
||
- this._mouseInit();
|
||
-
|
||
- },
|
||
-
|
||
- destroy: function() {
|
||
-
|
||
- this._mouseDestroy();
|
||
-
|
||
- var _destroy = function(exp) {
|
||
- $(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing")
|
||
- .removeData("resizable").unbind(".resizable").find('.ui-resizable-handle').remove();
|
||
- };
|
||
-
|
||
- //TODO: Unwrap at same DOM position
|
||
- if (this.elementIsWrapper) {
|
||
- _destroy(this.element);
|
||
- var wrapper = this.element;
|
||
- wrapper.after(
|
||
- this.originalElement.css({
|
||
- position: wrapper.css('position'),
|
||
- width: wrapper.outerWidth(),
|
||
- height: wrapper.outerHeight(),
|
||
- top: wrapper.css('top'),
|
||
- left: wrapper.css('left')
|
||
- })
|
||
- ).remove();
|
||
- }
|
||
-
|
||
- this.originalElement.css('resize', this.originalResizeStyle);
|
||
- _destroy(this.originalElement);
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- _mouseCapture: function(event) {
|
||
- var handle = false;
|
||
- for (var i in this.handles) {
|
||
- if ($(this.handles[i])[0] == event.target) {
|
||
- handle = true;
|
||
- }
|
||
- }
|
||
-
|
||
- return !this.options.disabled && handle;
|
||
- },
|
||
-
|
||
- _mouseStart: function(event) {
|
||
-
|
||
- var o = this.options, iniPos = this.element.position(), el = this.element;
|
||
-
|
||
- this.resizing = true;
|
||
- this.documentScroll = { top: $(document).scrollTop(), left: $(document).scrollLeft() };
|
||
-
|
||
- // bugfix for http://dev.jquery.com/ticket/1749
|
||
- if (el.is('.ui-draggable') || (/absolute/).test(el.css('position'))) {
|
||
- el.css({ position: 'absolute', top: iniPos.top, left: iniPos.left });
|
||
- }
|
||
-
|
||
- this._renderProxy();
|
||
-
|
||
- var curleft = num(this.helper.css('left')), curtop = num(this.helper.css('top'));
|
||
-
|
||
- if (o.containment) {
|
||
- curleft += $(o.containment).scrollLeft() || 0;
|
||
- curtop += $(o.containment).scrollTop() || 0;
|
||
- }
|
||
-
|
||
- //Store needed variables
|
||
- this.offset = this.helper.offset();
|
||
- this.position = { left: curleft, top: curtop };
|
||
- this.size = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
|
||
- this.originalSize = this._helper ? { width: el.outerWidth(), height: el.outerHeight() } : { width: el.width(), height: el.height() };
|
||
- this.originalPosition = { left: curleft, top: curtop };
|
||
- this.sizeDiff = { width: el.outerWidth() - el.width(), height: el.outerHeight() - el.height() };
|
||
- this.originalMousePosition = { left: event.pageX, top: event.pageY };
|
||
-
|
||
- //Aspect Ratio
|
||
- this.aspectRatio = (typeof o.aspectRatio == 'number') ? o.aspectRatio : ((this.originalSize.width / this.originalSize.height) || 1);
|
||
-
|
||
- var cursor = $('.ui-resizable-' + this.axis).css('cursor');
|
||
- $('body').css('cursor', cursor == 'auto' ? this.axis + '-resize' : cursor);
|
||
-
|
||
- el.addClass("ui-resizable-resizing");
|
||
- this._propagate("start", event);
|
||
- return true;
|
||
- },
|
||
-
|
||
- _mouseDrag: function(event) {
|
||
-
|
||
- //Increase performance, avoid regex
|
||
- var el = this.helper, o = this.options, props = {},
|
||
- self = this, smp = this.originalMousePosition, a = this.axis;
|
||
-
|
||
- var dx = (event.pageX-smp.left)||0, dy = (event.pageY-smp.top)||0;
|
||
- var trigger = this._change[a];
|
||
- if (!trigger) return false;
|
||
-
|
||
- // Calculate the attrs that will be change
|
||
- var data = trigger.apply(this, [event, dx, dy]), ie6 = $.browser.msie && $.browser.version < 7, csdif = this.sizeDiff;
|
||
-
|
||
- // Put this in the mouseDrag handler since the user can start pressing shift while resizing
|
||
- this._updateVirtualBoundaries(event.shiftKey);
|
||
- if (this._aspectRatio || event.shiftKey)
|
||
- data = this._updateRatio(data, event);
|
||
-
|
||
- data = this._respectSize(data, event);
|
||
-
|
||
- // plugins callbacks need to be called first
|
||
- this._propagate("resize", event);
|
||
-
|
||
- el.css({
|
||
- top: this.position.top + "px", left: this.position.left + "px",
|
||
- width: this.size.width + "px", height: this.size.height + "px"
|
||
- });
|
||
-
|
||
- if (!this._helper && this._proportionallyResizeElements.length)
|
||
- this._proportionallyResize();
|
||
-
|
||
- this._updateCache(data);
|
||
-
|
||
- // calling the user callback at the end
|
||
- this._trigger('resize', event, this.ui());
|
||
-
|
||
- return false;
|
||
- },
|
||
-
|
||
- _mouseStop: function(event) {
|
||
-
|
||
- this.resizing = false;
|
||
- var o = this.options, self = this;
|
||
-
|
||
- if(this._helper) {
|
||
- var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
|
||
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
|
||
- soffsetw = ista ? 0 : self.sizeDiff.width;
|
||
-
|
||
- var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) },
|
||
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
|
||
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
|
||
-
|
||
- if (!o.animate)
|
||
- this.element.css($.extend(s, { top: top, left: left }));
|
||
-
|
||
- self.helper.height(self.size.height);
|
||
- self.helper.width(self.size.width);
|
||
-
|
||
- if (this._helper && !o.animate) this._proportionallyResize();
|
||
- }
|
||
-
|
||
- $('body').css('cursor', 'auto');
|
||
-
|
||
- this.element.removeClass("ui-resizable-resizing");
|
||
-
|
||
- this._propagate("stop", event);
|
||
-
|
||
- if (this._helper) this.helper.remove();
|
||
- return false;
|
||
-
|
||
- },
|
||
-
|
||
- _updateVirtualBoundaries: function(forceAspectRatio) {
|
||
- var o = this.options, pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b;
|
||
-
|
||
- b = {
|
||
- minWidth: isNumber(o.minWidth) ? o.minWidth : 0,
|
||
- maxWidth: isNumber(o.maxWidth) ? o.maxWidth : Infinity,
|
||
- minHeight: isNumber(o.minHeight) ? o.minHeight : 0,
|
||
- maxHeight: isNumber(o.maxHeight) ? o.maxHeight : Infinity
|
||
- };
|
||
-
|
||
- if(this._aspectRatio || forceAspectRatio) {
|
||
- // We want to create an enclosing box whose aspect ration is the requested one
|
||
- // First, compute the "projected" size for each dimension based on the aspect ratio and other dimension
|
||
- pMinWidth = b.minHeight * this.aspectRatio;
|
||
- pMinHeight = b.minWidth / this.aspectRatio;
|
||
- pMaxWidth = b.maxHeight * this.aspectRatio;
|
||
- pMaxHeight = b.maxWidth / this.aspectRatio;
|
||
-
|
||
- if(pMinWidth > b.minWidth) b.minWidth = pMinWidth;
|
||
- if(pMinHeight > b.minHeight) b.minHeight = pMinHeight;
|
||
- if(pMaxWidth < b.maxWidth) b.maxWidth = pMaxWidth;
|
||
- if(pMaxHeight < b.maxHeight) b.maxHeight = pMaxHeight;
|
||
- }
|
||
- this._vBoundaries = b;
|
||
- },
|
||
-
|
||
- _updateCache: function(data) {
|
||
- var o = this.options;
|
||
- this.offset = this.helper.offset();
|
||
- if (isNumber(data.left)) this.position.left = data.left;
|
||
- if (isNumber(data.top)) this.position.top = data.top;
|
||
- if (isNumber(data.height)) this.size.height = data.height;
|
||
- if (isNumber(data.width)) this.size.width = data.width;
|
||
- },
|
||
-
|
||
- _updateRatio: function(data, event) {
|
||
-
|
||
- var o = this.options, cpos = this.position, csize = this.size, a = this.axis;
|
||
-
|
||
- if (isNumber(data.height)) data.width = (data.height * this.aspectRatio);
|
||
- else if (isNumber(data.width)) data.height = (data.width / this.aspectRatio);
|
||
-
|
||
- if (a == 'sw') {
|
||
- data.left = cpos.left + (csize.width - data.width);
|
||
- data.top = null;
|
||
- }
|
||
- if (a == 'nw') {
|
||
- data.top = cpos.top + (csize.height - data.height);
|
||
- data.left = cpos.left + (csize.width - data.width);
|
||
- }
|
||
-
|
||
- return data;
|
||
- },
|
||
-
|
||
- _respectSize: function(data, event) {
|
||
-
|
||
- var el = this.helper, o = this._vBoundaries, pRatio = this._aspectRatio || event.shiftKey, a = this.axis,
|
||
- ismaxw = isNumber(data.width) && o.maxWidth && (o.maxWidth < data.width), ismaxh = isNumber(data.height) && o.maxHeight && (o.maxHeight < data.height),
|
||
- isminw = isNumber(data.width) && o.minWidth && (o.minWidth > data.width), isminh = isNumber(data.height) && o.minHeight && (o.minHeight > data.height);
|
||
-
|
||
- if (isminw) data.width = o.minWidth;
|
||
- if (isminh) data.height = o.minHeight;
|
||
- if (ismaxw) data.width = o.maxWidth;
|
||
- if (ismaxh) data.height = o.maxHeight;
|
||
-
|
||
- var dw = this.originalPosition.left + this.originalSize.width, dh = this.position.top + this.size.height;
|
||
- var cw = /sw|nw|w/.test(a), ch = /nw|ne|n/.test(a);
|
||
-
|
||
- if (isminw && cw) data.left = dw - o.minWidth;
|
||
- if (ismaxw && cw) data.left = dw - o.maxWidth;
|
||
- if (isminh && ch) data.top = dh - o.minHeight;
|
||
- if (ismaxh && ch) data.top = dh - o.maxHeight;
|
||
-
|
||
- // fixing jump error on top/left - bug #2330
|
||
- var isNotwh = !data.width && !data.height;
|
||
- if (isNotwh && !data.left && data.top) data.top = null;
|
||
- else if (isNotwh && !data.top && data.left) data.left = null;
|
||
-
|
||
- return data;
|
||
- },
|
||
-
|
||
- _proportionallyResize: function() {
|
||
-
|
||
- var o = this.options;
|
||
- if (!this._proportionallyResizeElements.length) return;
|
||
- var element = this.helper || this.element;
|
||
-
|
||
- for (var i=0; i < this._proportionallyResizeElements.length; i++) {
|
||
-
|
||
- var prel = this._proportionallyResizeElements[i];
|
||
-
|
||
- if (!this.borderDif) {
|
||
- var b = [prel.css('borderTopWidth'), prel.css('borderRightWidth'), prel.css('borderBottomWidth'), prel.css('borderLeftWidth')],
|
||
- p = [prel.css('paddingTop'), prel.css('paddingRight'), prel.css('paddingBottom'), prel.css('paddingLeft')];
|
||
-
|
||
- this.borderDif = $.map(b, function(v, i) {
|
||
- var border = parseInt(v,10)||0, padding = parseInt(p[i],10)||0;
|
||
- return border + padding;
|
||
- });
|
||
- }
|
||
-
|
||
- if ($.browser.msie && !(!($(element).is(':hidden') || $(element).parents(':hidden').length)))
|
||
- continue;
|
||
-
|
||
- prel.css({
|
||
- height: (element.height() - this.borderDif[0] - this.borderDif[2]) || 0,
|
||
- width: (element.width() - this.borderDif[1] - this.borderDif[3]) || 0
|
||
- });
|
||
-
|
||
- };
|
||
-
|
||
- },
|
||
-
|
||
- _renderProxy: function() {
|
||
-
|
||
- var el = this.element, o = this.options;
|
||
- this.elementOffset = el.offset();
|
||
-
|
||
- if(this._helper) {
|
||
-
|
||
- this.helper = this.helper || $('<div style="overflow:hidden;"></div>');
|
||
-
|
||
- // fix ie6 offset TODO: This seems broken
|
||
- var ie6 = $.browser.msie && $.browser.version < 7, ie6offset = (ie6 ? 1 : 0),
|
||
- pxyoffset = ( ie6 ? 2 : -1 );
|
||
-
|
||
- this.helper.addClass(this._helper).css({
|
||
- width: this.element.outerWidth() + pxyoffset,
|
||
- height: this.element.outerHeight() + pxyoffset,
|
||
- position: 'absolute',
|
||
- left: this.elementOffset.left - ie6offset +'px',
|
||
- top: this.elementOffset.top - ie6offset +'px',
|
||
- zIndex: ++o.zIndex //TODO: Don't modify option
|
||
- });
|
||
-
|
||
- this.helper
|
||
- .appendTo("body")
|
||
- .disableSelection();
|
||
-
|
||
- } else {
|
||
- this.helper = this.element;
|
||
- }
|
||
-
|
||
- },
|
||
-
|
||
- _change: {
|
||
- e: function(event, dx, dy) {
|
||
- return { width: this.originalSize.width + dx };
|
||
- },
|
||
- w: function(event, dx, dy) {
|
||
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
|
||
- return { left: sp.left + dx, width: cs.width - dx };
|
||
- },
|
||
- n: function(event, dx, dy) {
|
||
- var o = this.options, cs = this.originalSize, sp = this.originalPosition;
|
||
- return { top: sp.top + dy, height: cs.height - dy };
|
||
- },
|
||
- s: function(event, dx, dy) {
|
||
- return { height: this.originalSize.height + dy };
|
||
- },
|
||
- se: function(event, dx, dy) {
|
||
- return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
|
||
- },
|
||
- sw: function(event, dx, dy) {
|
||
- return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
|
||
- },
|
||
- ne: function(event, dx, dy) {
|
||
- return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]));
|
||
- },
|
||
- nw: function(event, dx, dy) {
|
||
- return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]));
|
||
- }
|
||
- },
|
||
-
|
||
- _propagate: function(n, event) {
|
||
- $.ui.plugin.call(this, n, [event, this.ui()]);
|
||
- (n != "resize" && this._trigger(n, event, this.ui()));
|
||
- },
|
||
-
|
||
- plugins: {},
|
||
-
|
||
- ui: function() {
|
||
- return {
|
||
- originalElement: this.originalElement,
|
||
- element: this.element,
|
||
- helper: this.helper,
|
||
- position: this.position,
|
||
- size: this.size,
|
||
- originalSize: this.originalSize,
|
||
- originalPosition: this.originalPosition
|
||
- };
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-$.extend($.ui.resizable, {
|
||
- version: "1.8.18"
|
||
-});
|
||
-
|
||
-/*
|
||
- * Resizable Extensions
|
||
- */
|
||
-
|
||
-$.ui.plugin.add("resizable", "alsoResize", {
|
||
-
|
||
- start: function (event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options;
|
||
-
|
||
- var _store = function (exp) {
|
||
- $(exp).each(function() {
|
||
- var el = $(this);
|
||
- el.data("resizable-alsoresize", {
|
||
- width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
|
||
- left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10)
|
||
- });
|
||
- });
|
||
- };
|
||
-
|
||
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
|
||
- if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
|
||
- else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
|
||
- }else{
|
||
- _store(o.alsoResize);
|
||
- }
|
||
- },
|
||
-
|
||
- resize: function (event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;
|
||
-
|
||
- var delta = {
|
||
- height: (self.size.height - os.height) || 0, width: (self.size.width - os.width) || 0,
|
||
- top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
|
||
- },
|
||
-
|
||
- _alsoResize = function (exp, c) {
|
||
- $(exp).each(function() {
|
||
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
|
||
- css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
|
||
-
|
||
- $.each(css, function (i, prop) {
|
||
- var sum = (start[prop]||0) + (delta[prop]||0);
|
||
- if (sum && sum >= 0)
|
||
- style[prop] = sum || null;
|
||
- });
|
||
-
|
||
- el.css(style);
|
||
- });
|
||
- };
|
||
-
|
||
- if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
|
||
- $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
|
||
- }else{
|
||
- _alsoResize(o.alsoResize);
|
||
- }
|
||
- },
|
||
-
|
||
- stop: function (event, ui) {
|
||
- $(this).removeData("resizable-alsoresize");
|
||
- }
|
||
-});
|
||
-
|
||
-$.ui.plugin.add("resizable", "animate", {
|
||
-
|
||
- stop: function(event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options;
|
||
-
|
||
- var pr = self._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
|
||
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
|
||
- soffsetw = ista ? 0 : self.sizeDiff.width;
|
||
-
|
||
- var style = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
|
||
- left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
|
||
- top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
|
||
-
|
||
- self.element.animate(
|
||
- $.extend(style, top && left ? { top: top, left: left } : {}), {
|
||
- duration: o.animateDuration,
|
||
- easing: o.animateEasing,
|
||
- step: function() {
|
||
-
|
||
- var data = {
|
||
- width: parseInt(self.element.css('width'), 10),
|
||
- height: parseInt(self.element.css('height'), 10),
|
||
- top: parseInt(self.element.css('top'), 10),
|
||
- left: parseInt(self.element.css('left'), 10)
|
||
- };
|
||
-
|
||
- if (pr && pr.length) $(pr[0]).css({ width: data.width, height: data.height });
|
||
-
|
||
- // propagating resize, and updating values for each animation step
|
||
- self._updateCache(data);
|
||
- self._propagate("resize", event);
|
||
-
|
||
- }
|
||
- }
|
||
- );
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-$.ui.plugin.add("resizable", "containment", {
|
||
-
|
||
- start: function(event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options, el = self.element;
|
||
- var oc = o.containment, ce = (oc instanceof $) ? oc.get(0) : (/parent/.test(oc)) ? el.parent().get(0) : oc;
|
||
- if (!ce) return;
|
||
-
|
||
- self.containerElement = $(ce);
|
||
-
|
||
- if (/document/.test(oc) || oc == document) {
|
||
- self.containerOffset = { left: 0, top: 0 };
|
||
- self.containerPosition = { left: 0, top: 0 };
|
||
-
|
||
- self.parentData = {
|
||
- element: $(document), left: 0, top: 0,
|
||
- width: $(document).width(), height: $(document).height() || document.body.parentNode.scrollHeight
|
||
- };
|
||
- }
|
||
-
|
||
- // i'm a node, so compute top, left, right, bottom
|
||
- else {
|
||
- var element = $(ce), p = [];
|
||
- $([ "Top", "Right", "Left", "Bottom" ]).each(function(i, name) { p[i] = num(element.css("padding" + name)); });
|
||
-
|
||
- self.containerOffset = element.offset();
|
||
- self.containerPosition = element.position();
|
||
- self.containerSize = { height: (element.innerHeight() - p[3]), width: (element.innerWidth() - p[1]) };
|
||
-
|
||
- var co = self.containerOffset, ch = self.containerSize.height, cw = self.containerSize.width,
|
||
- width = ($.ui.hasScroll(ce, "left") ? ce.scrollWidth : cw ), height = ($.ui.hasScroll(ce) ? ce.scrollHeight : ch);
|
||
-
|
||
- self.parentData = {
|
||
- element: ce, left: co.left, top: co.top, width: width, height: height
|
||
- };
|
||
- }
|
||
- },
|
||
-
|
||
- resize: function(event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options,
|
||
- ps = self.containerSize, co = self.containerOffset, cs = self.size, cp = self.position,
|
||
- pRatio = self._aspectRatio || event.shiftKey, cop = { top:0, left:0 }, ce = self.containerElement;
|
||
-
|
||
- if (ce[0] != document && (/static/).test(ce.css('position'))) cop = co;
|
||
-
|
||
- if (cp.left < (self._helper ? co.left : 0)) {
|
||
- self.size.width = self.size.width + (self._helper ? (self.position.left - co.left) : (self.position.left - cop.left));
|
||
- if (pRatio) self.size.height = self.size.width / o.aspectRatio;
|
||
- self.position.left = o.helper ? co.left : 0;
|
||
- }
|
||
-
|
||
- if (cp.top < (self._helper ? co.top : 0)) {
|
||
- self.size.height = self.size.height + (self._helper ? (self.position.top - co.top) : self.position.top);
|
||
- if (pRatio) self.size.width = self.size.height * o.aspectRatio;
|
||
- self.position.top = self._helper ? co.top : 0;
|
||
- }
|
||
-
|
||
- self.offset.left = self.parentData.left+self.position.left;
|
||
- self.offset.top = self.parentData.top+self.position.top;
|
||
-
|
||
- var woset = Math.abs( (self._helper ? self.offset.left - cop.left : (self.offset.left - cop.left)) + self.sizeDiff.width ),
|
||
- hoset = Math.abs( (self._helper ? self.offset.top - cop.top : (self.offset.top - co.top)) + self.sizeDiff.height );
|
||
-
|
||
- var isParent = self.containerElement.get(0) == self.element.parent().get(0),
|
||
- isOffsetRelative = /relative|absolute/.test(self.containerElement.css('position'));
|
||
-
|
||
- if(isParent && isOffsetRelative) woset -= self.parentData.left;
|
||
-
|
||
- if (woset + self.size.width >= self.parentData.width) {
|
||
- self.size.width = self.parentData.width - woset;
|
||
- if (pRatio) self.size.height = self.size.width / self.aspectRatio;
|
||
- }
|
||
-
|
||
- if (hoset + self.size.height >= self.parentData.height) {
|
||
- self.size.height = self.parentData.height - hoset;
|
||
- if (pRatio) self.size.width = self.size.height * self.aspectRatio;
|
||
- }
|
||
- },
|
||
-
|
||
- stop: function(event, ui){
|
||
- var self = $(this).data("resizable"), o = self.options, cp = self.position,
|
||
- co = self.containerOffset, cop = self.containerPosition, ce = self.containerElement;
|
||
-
|
||
- var helper = $(self.helper), ho = helper.offset(), w = helper.outerWidth() - self.sizeDiff.width, h = helper.outerHeight() - self.sizeDiff.height;
|
||
-
|
||
- if (self._helper && !o.animate && (/relative/).test(ce.css('position')))
|
||
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
|
||
-
|
||
- if (self._helper && !o.animate && (/static/).test(ce.css('position')))
|
||
- $(this).css({ left: ho.left - cop.left - co.left, width: w, height: h });
|
||
-
|
||
- }
|
||
-});
|
||
-
|
||
-$.ui.plugin.add("resizable", "ghost", {
|
||
-
|
||
- start: function(event, ui) {
|
||
-
|
||
- var self = $(this).data("resizable"), o = self.options, cs = self.size;
|
||
-
|
||
- self.ghost = self.originalElement.clone();
|
||
- self.ghost
|
||
- .css({ opacity: .25, display: 'block', position: 'relative', height: cs.height, width: cs.width, margin: 0, left: 0, top: 0 })
|
||
- .addClass('ui-resizable-ghost')
|
||
- .addClass(typeof o.ghost == 'string' ? o.ghost : '');
|
||
-
|
||
- self.ghost.appendTo(self.helper);
|
||
-
|
||
- },
|
||
-
|
||
- resize: function(event, ui){
|
||
- var self = $(this).data("resizable"), o = self.options;
|
||
- if (self.ghost) self.ghost.css({ position: 'relative', height: self.size.height, width: self.size.width });
|
||
- },
|
||
-
|
||
- stop: function(event, ui){
|
||
- var self = $(this).data("resizable"), o = self.options;
|
||
- if (self.ghost && self.helper) self.helper.get(0).removeChild(self.ghost.get(0));
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-$.ui.plugin.add("resizable", "grid", {
|
||
-
|
||
- resize: function(event, ui) {
|
||
- var self = $(this).data("resizable"), o = self.options, cs = self.size, os = self.originalSize, op = self.originalPosition, a = self.axis, ratio = o._aspectRatio || event.shiftKey;
|
||
- o.grid = typeof o.grid == "number" ? [o.grid, o.grid] : o.grid;
|
||
- var ox = Math.round((cs.width - os.width) / (o.grid[0]||1)) * (o.grid[0]||1), oy = Math.round((cs.height - os.height) / (o.grid[1]||1)) * (o.grid[1]||1);
|
||
-
|
||
- if (/^(se|s|e)$/.test(a)) {
|
||
- self.size.width = os.width + ox;
|
||
- self.size.height = os.height + oy;
|
||
- }
|
||
- else if (/^(ne)$/.test(a)) {
|
||
- self.size.width = os.width + ox;
|
||
- self.size.height = os.height + oy;
|
||
- self.position.top = op.top - oy;
|
||
- }
|
||
- else if (/^(sw)$/.test(a)) {
|
||
- self.size.width = os.width + ox;
|
||
- self.size.height = os.height + oy;
|
||
- self.position.left = op.left - ox;
|
||
- }
|
||
- else {
|
||
- self.size.width = os.width + ox;
|
||
- self.size.height = os.height + oy;
|
||
- self.position.top = op.top - oy;
|
||
- self.position.left = op.left - ox;
|
||
- }
|
||
- }
|
||
-
|
||
-});
|
||
-
|
||
-var num = function(v) {
|
||
- return parseInt(v, 10) || 0;
|
||
-};
|
||
-
|
||
-var isNumber = function(value) {
|
||
- return !isNaN(parseInt(value, 10));
|
||
-};
|
||
-
|
||
-})(jQuery);
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.widget.js doxygen-1.8.14/jquery/jquery.ui-1.8.18.widget.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui-1.8.18.widget.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui-1.8.18.widget.js 1970-01-01 01:00:00.000000000 +0100
|
||
@@ -1,272 +0,0 @@
|
||
-/*!
|
||
- * jQuery UI Widget 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI/Widget
|
||
- */
|
||
-(function( $, undefined ) {
|
||
-
|
||
-// jQuery 1.4+
|
||
-if ( $.cleanData ) {
|
||
- var _cleanData = $.cleanData;
|
||
- $.cleanData = function( elems ) {
|
||
- for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
|
||
- try {
|
||
- $( elem ).triggerHandler( "remove" );
|
||
- // http://bugs.jquery.com/ticket/8235
|
||
- } catch( e ) {}
|
||
- }
|
||
- _cleanData( elems );
|
||
- };
|
||
-} else {
|
||
- var _remove = $.fn.remove;
|
||
- $.fn.remove = function( selector, keepData ) {
|
||
- return this.each(function() {
|
||
- if ( !keepData ) {
|
||
- if ( !selector || $.filter( selector, [ this ] ).length ) {
|
||
- $( "*", this ).add( [ this ] ).each(function() {
|
||
- try {
|
||
- $( this ).triggerHandler( "remove" );
|
||
- // http://bugs.jquery.com/ticket/8235
|
||
- } catch( e ) {}
|
||
- });
|
||
- }
|
||
- }
|
||
- return _remove.call( $(this), selector, keepData );
|
||
- });
|
||
- };
|
||
-}
|
||
-
|
||
-$.widget = function( name, base, prototype ) {
|
||
- var namespace = name.split( "." )[ 0 ],
|
||
- fullName;
|
||
- name = name.split( "." )[ 1 ];
|
||
- fullName = namespace + "-" + name;
|
||
-
|
||
- if ( !prototype ) {
|
||
- prototype = base;
|
||
- base = $.Widget;
|
||
- }
|
||
-
|
||
- // create selector for plugin
|
||
- $.expr[ ":" ][ fullName ] = function( elem ) {
|
||
- return !!$.data( elem, name );
|
||
- };
|
||
-
|
||
- $[ namespace ] = $[ namespace ] || {};
|
||
- $[ namespace ][ name ] = function( options, element ) {
|
||
- // allow instantiation without initializing for simple inheritance
|
||
- if ( arguments.length ) {
|
||
- this._createWidget( options, element );
|
||
- }
|
||
- };
|
||
-
|
||
- var basePrototype = new base();
|
||
- // we need to make the options hash a property directly on the new instance
|
||
- // otherwise we'll modify the options hash on the prototype that we're
|
||
- // inheriting from
|
||
-// $.each( basePrototype, function( key, val ) {
|
||
-// if ( $.isPlainObject(val) ) {
|
||
-// basePrototype[ key ] = $.extend( {}, val );
|
||
-// }
|
||
-// });
|
||
- basePrototype.options = $.extend( true, {}, basePrototype.options );
|
||
- $[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
|
||
- namespace: namespace,
|
||
- widgetName: name,
|
||
- widgetEventPrefix: $[ namespace ][ name ].prototype.widgetEventPrefix || name,
|
||
- widgetBaseClass: fullName
|
||
- }, prototype );
|
||
-
|
||
- $.widget.bridge( name, $[ namespace ][ name ] );
|
||
-};
|
||
-
|
||
-$.widget.bridge = function( name, object ) {
|
||
- $.fn[ name ] = function( options ) {
|
||
- var isMethodCall = typeof options === "string",
|
||
- args = Array.prototype.slice.call( arguments, 1 ),
|
||
- returnValue = this;
|
||
-
|
||
- // allow multiple hashes to be passed on init
|
||
- options = !isMethodCall && args.length ?
|
||
- $.extend.apply( null, [ true, options ].concat(args) ) :
|
||
- options;
|
||
-
|
||
- // prevent calls to internal methods
|
||
- if ( isMethodCall && options.charAt( 0 ) === "_" ) {
|
||
- return returnValue;
|
||
- }
|
||
-
|
||
- if ( isMethodCall ) {
|
||
- this.each(function() {
|
||
- var instance = $.data( this, name ),
|
||
- methodValue = instance && $.isFunction( instance[options] ) ?
|
||
- instance[ options ].apply( instance, args ) :
|
||
- instance;
|
||
- // TODO: add this back in 1.9 and use $.error() (see #5972)
|
||
-// if ( !instance ) {
|
||
-// throw "cannot call methods on " + name + " prior to initialization; " +
|
||
-// "attempted to call method '" + options + "'";
|
||
-// }
|
||
-// if ( !$.isFunction( instance[options] ) ) {
|
||
-// throw "no such method '" + options + "' for " + name + " widget instance";
|
||
-// }
|
||
-// var methodValue = instance[ options ].apply( instance, args );
|
||
- if ( methodValue !== instance && methodValue !== undefined ) {
|
||
- returnValue = methodValue;
|
||
- return false;
|
||
- }
|
||
- });
|
||
- } else {
|
||
- this.each(function() {
|
||
- var instance = $.data( this, name );
|
||
- if ( instance ) {
|
||
- instance.option( options || {} )._init();
|
||
- } else {
|
||
- $.data( this, name, new object( options, this ) );
|
||
- }
|
||
- });
|
||
- }
|
||
-
|
||
- return returnValue;
|
||
- };
|
||
-};
|
||
-
|
||
-$.Widget = function( options, element ) {
|
||
- // allow instantiation without initializing for simple inheritance
|
||
- if ( arguments.length ) {
|
||
- this._createWidget( options, element );
|
||
- }
|
||
-};
|
||
-
|
||
-$.Widget.prototype = {
|
||
- widgetName: "widget",
|
||
- widgetEventPrefix: "",
|
||
- options: {
|
||
- disabled: false
|
||
- },
|
||
- _createWidget: function( options, element ) {
|
||
- // $.widget.bridge stores the plugin instance, but we do it anyway
|
||
- // so that it's stored even before the _create function runs
|
||
- $.data( element, this.widgetName, this );
|
||
- this.element = $( element );
|
||
- this.options = $.extend( true, {},
|
||
- this.options,
|
||
- this._getCreateOptions(),
|
||
- options );
|
||
-
|
||
- var self = this;
|
||
- this.element.bind( "remove." + this.widgetName, function() {
|
||
- self.destroy();
|
||
- });
|
||
-
|
||
- this._create();
|
||
- this._trigger( "create" );
|
||
- this._init();
|
||
- },
|
||
- _getCreateOptions: function() {
|
||
- return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];
|
||
- },
|
||
- _create: function() {},
|
||
- _init: function() {},
|
||
-
|
||
- destroy: function() {
|
||
- this.element
|
||
- .unbind( "." + this.widgetName )
|
||
- .removeData( this.widgetName );
|
||
- this.widget()
|
||
- .unbind( "." + this.widgetName )
|
||
- .removeAttr( "aria-disabled" )
|
||
- .removeClass(
|
||
- this.widgetBaseClass + "-disabled " +
|
||
- "ui-state-disabled" );
|
||
- },
|
||
-
|
||
- widget: function() {
|
||
- return this.element;
|
||
- },
|
||
-
|
||
- option: function( key, value ) {
|
||
- var options = key;
|
||
-
|
||
- if ( arguments.length === 0 ) {
|
||
- // don't return a reference to the internal hash
|
||
- return $.extend( {}, this.options );
|
||
- }
|
||
-
|
||
- if (typeof key === "string" ) {
|
||
- if ( value === undefined ) {
|
||
- return this.options[ key ];
|
||
- }
|
||
- options = {};
|
||
- options[ key ] = value;
|
||
- }
|
||
-
|
||
- this._setOptions( options );
|
||
-
|
||
- return this;
|
||
- },
|
||
- _setOptions: function( options ) {
|
||
- var self = this;
|
||
- $.each( options, function( key, value ) {
|
||
- self._setOption( key, value );
|
||
- });
|
||
-
|
||
- return this;
|
||
- },
|
||
- _setOption: function( key, value ) {
|
||
- this.options[ key ] = value;
|
||
-
|
||
- if ( key === "disabled" ) {
|
||
- this.widget()
|
||
- [ value ? "addClass" : "removeClass"](
|
||
- this.widgetBaseClass + "-disabled" + " " +
|
||
- "ui-state-disabled" )
|
||
- .attr( "aria-disabled", value );
|
||
- }
|
||
-
|
||
- return this;
|
||
- },
|
||
-
|
||
- enable: function() {
|
||
- return this._setOption( "disabled", false );
|
||
- },
|
||
- disable: function() {
|
||
- return this._setOption( "disabled", true );
|
||
- },
|
||
-
|
||
- _trigger: function( type, event, data ) {
|
||
- var prop, orig,
|
||
- callback = this.options[ type ];
|
||
-
|
||
- data = data || {};
|
||
- event = $.Event( event );
|
||
- event.type = ( type === this.widgetEventPrefix ?
|
||
- type :
|
||
- this.widgetEventPrefix + type ).toLowerCase();
|
||
- // the original event may come from any element
|
||
- // so we need to reset the target on the new event
|
||
- event.target = this.element[ 0 ];
|
||
-
|
||
- // copy original event properties over to the new event
|
||
- orig = event.originalEvent;
|
||
- if ( orig ) {
|
||
- for ( prop in orig ) {
|
||
- if ( !( prop in event ) ) {
|
||
- event[ prop ] = orig[ prop ];
|
||
- }
|
||
- }
|
||
- }
|
||
-
|
||
- this.element.trigger( event, data );
|
||
-
|
||
- return !( $.isFunction(callback) &&
|
||
- callback.call( this.element[0], event, data ) === false ||
|
||
- event.isDefaultPrevented() );
|
||
- }
|
||
-};
|
||
-
|
||
-})( jQuery );
|
||
diff -Nur doxygen-1.8.14.orig/jquery/jquery.ui.touch-punch-0.2.3.min.js doxygen-1.8.14/jquery/jquery.ui.touch-punch-0.2.3.min.js
|
||
--- doxygen-1.8.14.orig/jquery/jquery.ui.touch-punch-0.2.3.min.js 1970-01-01 01:00:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/jquery.ui.touch-punch-0.2.3.min.js 2020-01-03 23:51:18.000000000 +0100
|
||
@@ -0,0 +1,11 @@
|
||
+/*!
|
||
+ * jQuery UI Touch Punch 0.2.3
|
||
+ *
|
||
+ * Copyright 2011–2014, Dave Furfero
|
||
+ * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
+ *
|
||
+ * Depends:
|
||
+ * jquery.ui.widget.js
|
||
+ * jquery.ui.mouse.js
|
||
+ */
|
||
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/jquery/sass/_sm-dox.scss doxygen-1.8.14/jquery/sass/_sm-dox.scss
|
||
--- doxygen-1.8.14.orig/jquery/sass/_sm-dox.scss 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/sass/_sm-dox.scss 2021-05-26 21:14:06.000000000 +0200
|
||
@@ -217,6 +217,10 @@
|
||
background: $sm-dox__collapsible-toggle-bg;
|
||
@include border-radius($sm-dox__border-radius);
|
||
}
|
||
+ & span.sub-arrow:before {
|
||
+ display: block;
|
||
+ content: '+';
|
||
+ }
|
||
// Change + to - on sub menu expand
|
||
&.highlighted span.sub-arrow:before {
|
||
display: block;
|
||
diff -Nur doxygen-1.8.14.orig/jquery/sm-core-css.css doxygen-1.8.14/jquery/sm-core-css.css
|
||
--- doxygen-1.8.14.orig/jquery/sm-core-css.css 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/jquery/sm-core-css.css 2021-05-28 20:58:49.000000000 +0200
|
||
@@ -8,3 +8,81 @@
|
||
.sm a.disabled{cursor:not-allowed;}
|
||
.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden;}
|
||
.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}
|
||
+
|
||
+.main-menu-btn {
|
||
+ position: relative;
|
||
+ display: inline-block;
|
||
+ width: 36px;
|
||
+ height: 36px;
|
||
+ text-indent: 36px;
|
||
+ margin-left: 8px;
|
||
+ white-space: nowrap;
|
||
+ overflow: hidden;
|
||
+ cursor: pointer;
|
||
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
|
||
+}
|
||
+/* hamburger icon */
|
||
+.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after {
|
||
+ position: absolute;
|
||
+ top: 50%;
|
||
+ left: 2px;
|
||
+ height: 2px;
|
||
+ width: 24px;
|
||
+ background: #666;
|
||
+ -webkit-transition: all 0.25s;
|
||
+ transition: all 0.25s;
|
||
+}
|
||
+.main-menu-btn-icon:before {
|
||
+ content: '';
|
||
+ top: -7px;
|
||
+ left: 0;
|
||
+}
|
||
+.main-menu-btn-icon:after {
|
||
+ content: '';
|
||
+ top: 7px;
|
||
+ left: 0;
|
||
+}
|
||
+/* x icon */
|
||
+#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon {
|
||
+ height: 0;
|
||
+ /*background: transparent;*/
|
||
+}
|
||
+#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before {
|
||
+ top: 0;
|
||
+ -webkit-transform: rotate(-45deg);
|
||
+ transform: rotate(-45deg);
|
||
+}
|
||
+#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after {
|
||
+ top: 0;
|
||
+ -webkit-transform: rotate(45deg);
|
||
+ transform: rotate(45deg);
|
||
+}
|
||
+/* hide menu state checkbox (keep it visible to screen readers) */
|
||
+#main-menu-state {
|
||
+ position: absolute;
|
||
+ width: 1px;
|
||
+ height: 1px;
|
||
+ margin: -1px;
|
||
+ border: 0;
|
||
+ padding: 0;
|
||
+ overflow: hidden;
|
||
+ clip: rect(1px,1px,1px,1px);
|
||
+}
|
||
+/* hide the menu in mobile view */
|
||
+#main-menu-state:not(:checked) ~ #main-menu {
|
||
+ display: none;
|
||
+}
|
||
+#main-menu-state:checked ~ #main-menu {
|
||
+ display: block;
|
||
+}
|
||
+@media (min-width: 768px) {
|
||
+ /* hide the button in desktop view */
|
||
+ .main-menu-btn {
|
||
+ position: absolute;
|
||
+ top: -99999px;
|
||
+ }
|
||
+ /* always show the menu in desktop view */
|
||
+ #main-menu-state:not(:checked) ~ #main-menu {
|
||
+ display: block;
|
||
+ }
|
||
+}
|
||
diff -Nur doxygen-1.8.14.orig/templates/html/jquery.js doxygen-1.8.14/templates/html/jquery.js
|
||
--- doxygen-1.8.14.orig/templates/html/jquery.js 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/templates/html/jquery.js 2021-06-27 13:31:16.000000000 +0200
|
||
@@ -1,99 +1,26 @@
|
||
-/*
|
||
- @licstart The following is the entire license notice for the
|
||
- JavaScript code in this file.
|
||
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
|
||
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
|
||
+/*! jQuery UI - v1.12.1 - 2019-01-27
|
||
+* http://jqueryui.com
|
||
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
|
||
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
||
|
||
- Copyright (C) 1997-2017 by Dimitri van Heesch
|
||
-
|
||
- Permission is hereby granted, free of charge, to any person obtaining
|
||
- a copy of this software and associated documentation files (the
|
||
- "Software"), to deal in the Software without restriction, including
|
||
- without limitation the rights to use, copy, modify, merge, publish,
|
||
- distribute, sublicense, and/or sell copies of the Software, and to
|
||
- permit persons to whom the Software is furnished to do so, subject to
|
||
- the following conditions:
|
||
-
|
||
- The above copyright notice and this permission notice shall be included
|
||
- in all copies or substantial portions of the Software.
|
||
-
|
||
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
-
|
||
- @licend The above is the entire license notice
|
||
- for the JavaScript code in this file
|
||
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
|
||
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
|
||
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
|
||
+ * Licensed under MIT
|
||
+ * @author Ariel Flesler
|
||
+ * @version 2.1.2
|
||
*/
|
||
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
|
||
/*!
|
||
- * jQuery JavaScript Library v1.7.1
|
||
- * http://jquery.com/
|
||
- *
|
||
- * Copyright 2011, John Resig
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * Includes Sizzle.js
|
||
- * http://sizzlejs.com/
|
||
- * Copyright 2011, The Dojo Foundation
|
||
- * Released under the MIT, BSD, and GPL Licenses.
|
||
- *
|
||
- * Date: Mon Nov 21 21:11:03 2011 -0500
|
||
- */
|
||
-(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
|
||
-/*!
|
||
- * Sizzle CSS Selector Engine
|
||
- * Copyright 2011, The Dojo Foundation
|
||
- * Released under the MIT, BSD, and GPL Licenses.
|
||
- * More information: http://sizzlejs.com/
|
||
- */
|
||
-(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*!
|
||
- * jQuery UI 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI
|
||
- */
|
||
-(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!
|
||
- * jQuery UI Widget 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI/Widget
|
||
- */
|
||
-(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!
|
||
- * jQuery UI Mouse 1.8.18
|
||
- *
|
||
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||
- * Dual licensed under the MIT or GPL Version 2 licenses.
|
||
- * http://jquery.org/license
|
||
- *
|
||
- * http://docs.jquery.com/UI/Mouse
|
||
- *
|
||
- * Depends:
|
||
- * jquery.ui.widget.js
|
||
- */
|
||
-(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
|
||
- * jQuery hashchange event - v1.3 - 7/21/2010
|
||
- * http://benalman.com/projects/jquery-hashchange-plugin/
|
||
- *
|
||
- * Copyright (c) 2010 "Cowboy" Ben Alman
|
||
- * Dual licensed under the MIT and GPL licenses.
|
||
- * http://benalman.com/about/license/
|
||
- */
|
||
-(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*!
|
||
- PowerTip - v1.2.0 - 2013-04-03
|
||
- http://stevenbenner.github.com/jquery-powertip/
|
||
- Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
|
||
+ PowerTip v1.3.1 (2018-04-15)
|
||
+ https://stevenbenner.github.io/jquery-powertip/
|
||
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
|
||
Released under MIT license.
|
||
https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
|
||
*/
|
||
-(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));/*!
|
||
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
|
||
* jQuery UI Touch Punch 0.2.3
|
||
*
|
||
* Copyright 2011–2014, Dave Furfero
|
||
@@ -103,13 +30,6 @@
|
||
* jquery.ui.widget.js
|
||
* jquery.ui.mouse.js
|
||
*/
|
||
-(function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return}var d=b.ui.mouse.prototype,f=d._mouseInit,c=d._mouseDestroy,a;function e(h,i){if(h.originalEvent.touches.length>1){return}h.preventDefault();var j=h.originalEvent.changedTouches[0],g=document.createEvent("MouseEvents");g.initMouseEvent(i,true,true,window,1,j.screenX,j.screenY,j.clientX,j.clientY,false,false,false,false,0,null);h.target.dispatchEvent(g)}d._touchStart=function(h){var g=this;if(a||!g._mouseCapture(h.originalEvent.changedTouches[0])){return}a=true;g._touchMoved=false;e(h,"mouseover");e(h,"mousemove");e(h,"mousedown")};d._touchMove=function(g){if(!a){return}this._touchMoved=true;e(g,"mousemove")};d._touchEnd=function(g){if(!a){return}e(g,"mouseup");e(g,"mouseout");if(!this._touchMoved){e(g,"click")}a=false};d._mouseInit=function(){var g=this;g.element.bind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});f.call(g)};d._mouseDestroy=function(){var g=this;g.element.unbind({touchstart:b.proxy(g,"_touchStart"),touchmove:b.proxy(g,"_touchMove"),touchend:b.proxy(g,"_touchEnd")});c.call(g)}})(jQuery);/*!
|
||
- * SmartMenus jQuery Plugin - v1.0.0 - January 27, 2016
|
||
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
|
||
* http://www.smartmenus.org/
|
||
- *
|
||
- * Copyright Vasil Dinkov, Vadikom Web Ltd.
|
||
- * http://vadikom.com
|
||
- *
|
||
- * Licensed MIT
|
||
- */
|
||
-(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof module==="object"&&typeof module.exports==="object"){module.exports=a(require("jquery"))}else{a(jQuery)}}}(function(a){var b=[],e=!!window.createPopup,f=false,d="ontouchstart" in window,h=false,g=window.requestAnimationFrame||function(l){return setTimeout(l,1000/60)},c=window.cancelAnimationFrame||function(l){clearTimeout(l)};function k(m){var n=".smartmenus_mouse";if(!h&&!m){var o=true,l=null;a(document).bind(i([["mousemove",function(s){var t={x:s.pageX,y:s.pageY,timeStamp:new Date().getTime()};if(l){var q=Math.abs(l.x-t.x),p=Math.abs(l.y-t.y);if((q>0||p>0)&&q<=2&&p<=2&&t.timeStamp-l.timeStamp<=300){f=true;if(o){var r=a(s.target).closest("a");if(r.is("a")){a.each(b,function(){if(a.contains(this.$root[0],r[0])){this.itemEnter({currentTarget:r[0]});return false}})}o=false}}}l=t}],[d?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut",function(p){if(j(p.originalEvent)){f=false}}]],n));h=true}else{if(h&&m){a(document).unbind(n);h=false}}}function j(l){return !/^(4|mouse)$/.test(l.pointerType)}function i(l,n){if(!n){n=""}var m={};a.each(l,function(o,p){m[p[0].split(" ").join(n+" ")+n]=p[1]});return m}a.SmartMenus=function(m,l){this.$root=a(m);this.opts=l;this.rootId="";this.accessIdPrefix="";this.$subArrow=null;this.activatedItems=[];this.visibleSubMenus=[];this.showTimeout=0;this.hideTimeout=0;this.scrollTimeout=0;this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.idInc=0;this.$firstLink=null;this.$firstSub=null;this.disabled=false;this.$disableOverlay=null;this.$touchScrollingSub=null;this.cssTransforms3d="perspective" in m.style||"webkitPerspective" in m.style;this.wasCollapsible=false;this.init()};a.extend(a.SmartMenus,{hideAll:function(){a.each(b,function(){this.menuHideAll()})},destroy:function(){while(b.length){b[0].destroy()}k(true)},prototype:{init:function(n){var l=this;if(!n){b.push(this);this.rootId=(new Date().getTime()+Math.random()+"").replace(/\D/g,"");this.accessIdPrefix="sm-"+this.rootId+"-";if(this.$root.hasClass("sm-rtl")){this.opts.rightToLeftSubMenus=true}var r=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).bind(i([["mouseover focusin",a.proxy(this.rootOver,this)],["mouseout focusout",a.proxy(this.rootOut,this)],["keydown",a.proxy(this.rootKeyDown,this)]],r)).delegate("a",i([["mouseenter",a.proxy(this.itemEnter,this)],["mouseleave",a.proxy(this.itemLeave,this)],["mousedown",a.proxy(this.itemDown,this)],["focus",a.proxy(this.itemFocus,this)],["blur",a.proxy(this.itemBlur,this)],["click",a.proxy(this.itemClick,this)]],r));r+=this.rootId;if(this.opts.hideOnClick){a(document).bind(i([["touchstart",a.proxy(this.docTouchStart,this)],["touchmove",a.proxy(this.docTouchMove,this)],["touchend",a.proxy(this.docTouchEnd,this)],["click",a.proxy(this.docClick,this)]],r))}a(window).bind(i([["resize orientationchange",a.proxy(this.winResize,this)]],r));if(this.opts.subIndicators){this.$subArrow=a("<span/>").addClass("sub-arrow");if(this.opts.subIndicatorsText){this.$subArrow.html(this.opts.subIndicatorsText)}}k()}this.$firstSub=this.$root.find("ul").each(function(){l.menuInit(a(this))}).eq(0);this.$firstLink=this.$root.find("a").eq(0);if(this.opts.markCurrentItem){var p=/(index|default)\.[^#\?\/]*/i,m=/#.*/,q=window.location.href.replace(p,""),o=q.replace(m,"");this.$root.find("a").each(function(){var s=this.href.replace(p,""),t=a(this);if(s==q||s==o){t.addClass("current");if(l.opts.markCurrentTree){t.parentsUntil("[data-smartmenus-id]","ul").each(function(){a(this).dataSM("parent-a").addClass("current")})}}})}this.wasCollapsible=this.isCollapsible()},destroy:function(m){if(!m){var n=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").unbind(n).undelegate(n);n+=this.rootId;a(document).unbind(n);a(window).unbind(n);if(this.opts.subIndicators){this.$subArrow=null}}this.menuHideAll();var l=this;this.$root.find("ul").each(function(){var o=a(this);if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}if(o.dataSM("shown-before")){if(l.opts.subMenusMinWidth||l.opts.subMenusMaxWidth){o.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap")}if(o.dataSM("scroll-arrows")){o.dataSM("scroll-arrows").remove()}o.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})}if((o.attr("id")||"").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("ie-shim").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded");this.$root.find("a.has-submenu").each(function(){var o=a(this);if(o.attr("id").indexOf(l.accessIdPrefix)==0){o.removeAttr("id")}}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub");if(this.opts.subIndicators){this.$root.find("span.sub-arrow").remove()}if(this.opts.markCurrentItem){this.$root.find("a.current").removeClass("current")}if(!m){this.$root=null;this.$firstLink=null;this.$firstSub=null;if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}b.splice(a.inArray(this,b),1)}},disable:function(l){if(!this.disabled){this.menuHideAll();if(!l&&!this.opts.isPopup&&this.$root.is(":visible")){var m=this.$root.offset();this.$disableOverlay=a('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:m.top,left:m.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(true),opacity:0}).appendTo(document.body)}this.disabled=true}},docClick:function(l){if(this.$touchScrollingSub){this.$touchScrollingSub=null;return}if(this.visibleSubMenus.length&&!a.contains(this.$root[0],l.target)||a(l.target).is("a")){this.menuHideAll()}},docTouchEnd:function(m){if(!this.lastTouch){return}if(this.visibleSubMenus.length&&(this.lastTouch.x2===undefined||this.lastTouch.x1==this.lastTouch.x2)&&(this.lastTouch.y2===undefined||this.lastTouch.y1==this.lastTouch.y2)&&(!this.lastTouch.target||!a.contains(this.$root[0],this.lastTouch.target))){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},350)}this.lastTouch=null},docTouchMove:function(m){if(!this.lastTouch){return}var l=m.originalEvent.touches[0];this.lastTouch.x2=l.pageX;this.lastTouch.y2=l.pageY},docTouchStart:function(m){var l=m.originalEvent.touches[0];this.lastTouch={x1:l.pageX,y1:l.pageY,target:l.target}},enable:function(){if(this.disabled){if(this.$disableOverlay){this.$disableOverlay.remove();this.$disableOverlay=null}this.disabled=false}},getClosestMenu:function(m){var l=a(m).closest("ul");while(l.dataSM("in-mega")){l=l.parent().closest("ul")}return l[0]||null},getHeight:function(l){return this.getOffset(l,true)},getOffset:function(n,l){var m;if(n.css("display")=="none"){m={position:n[0].style.position,visibility:n[0].style.visibility};n.css({position:"absolute",visibility:"hidden"}).show()}var o=n[0].getBoundingClientRect&&n[0].getBoundingClientRect(),p=o&&(l?o.height||o.bottom-o.top:o.width||o.right-o.left);if(!p&&p!==0){p=l?n[0].offsetHeight:n[0].offsetWidth}if(m){n.hide().css(m)}return p},getStartZIndex:function(l){var m=parseInt(this[l?"$root":"$firstSub"].css("z-index"));if(!l&&isNaN(m)){m=parseInt(this.$root.css("z-index"))}return !isNaN(m)?m:1},getTouchPoint:function(l){return l.touches&&l.touches[0]||l.changedTouches&&l.changedTouches[0]||l},getViewport:function(l){var m=l?"Height":"Width",o=document.documentElement["client"+m],n=window["inner"+m];if(n){o=Math.min(o,n)}return o},getViewportHeight:function(){return this.getViewport(true)},getViewportWidth:function(){return this.getViewport()},getWidth:function(l){return this.getOffset(l)},handleEvents:function(){return !this.disabled&&this.isCSSOn()},handleItemEvents:function(l){return this.handleEvents()&&!this.isLinkInMegaMenu(l)},isCollapsible:function(){return this.$firstSub.css("position")=="static"},isCSSOn:function(){return this.$firstLink.css("display")=="block"},isFixed:function(){var l=this.$root.css("position")=="fixed";if(!l){this.$root.parentsUntil("body").each(function(){if(a(this).css("position")=="fixed"){l=true;return false}})}return l},isLinkInMegaMenu:function(l){return a(this.getClosestMenu(l[0])).hasClass("mega-menu")},isTouchMode:function(){return !f||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(p,l){var n=p.closest("ul"),q=n.dataSM("level");if(q>1&&(!this.activatedItems[q-2]||this.activatedItems[q-2][0]!=n.dataSM("parent-a")[0])){var m=this;a(n.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(n).each(function(){m.itemActivate(a(this).dataSM("parent-a"))})}if(!this.isCollapsible()||l){this.menuHideSubMenus(!this.activatedItems[q-1]||this.activatedItems[q-1][0]!=p[0]?q-1:q)}this.activatedItems[q-1]=p;if(this.$root.triggerHandler("activate.smapi",p[0])===false){return}var o=p.dataSM("sub");if(o&&(this.isTouchMode()||(!this.opts.showOnClick||this.clickActivated))){this.menuShow(o)}},itemBlur:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}this.$root.triggerHandler("blur.smapi",l[0])},itemClick:function(o){var n=a(o.currentTarget);if(!this.handleItemEvents(n)){return}if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==n.closest("ul")[0]){this.$touchScrollingSub=null;o.stopPropagation();return false}if(this.$root.triggerHandler("click.smapi",n[0])===false){return false}var p=a(o.target).is("span.sub-arrow"),m=n.dataSM("sub"),l=m?m.dataSM("level")==2:false;if(m&&!m.is(":visible")){if(this.opts.showOnClick&&l){this.clickActivated=true}this.itemActivate(n);if(m.is(":visible")){this.focusActivated=true;return false}}else{if(this.isCollapsible()&&p){this.itemActivate(n);this.menuHide(m);return false}}if(this.opts.showOnClick&&l||n.hasClass("disabled")||this.$root.triggerHandler("select.smapi",n[0])===false){return false}},itemDown:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}l.dataSM("mousedown",true)},itemEnter:function(n){var m=a(n.currentTarget);if(!this.handleItemEvents(m)){return}if(!this.isTouchMode()){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var l=this;this.showTimeout=setTimeout(function(){l.itemActivate(m)},this.opts.showOnClick&&m.closest("ul").dataSM("level")==1?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",m[0])},itemFocus:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(this.focusActivated&&(!this.isTouchMode()||!l.dataSM("mousedown"))&&(!this.activatedItems.length||this.activatedItems[this.activatedItems.length-1][0]!=l[0])){this.itemActivate(l,true)}this.$root.triggerHandler("focus.smapi",l[0])},itemLeave:function(m){var l=a(m.currentTarget);if(!this.handleItemEvents(l)){return}if(!this.isTouchMode()){l[0].blur();if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}}l.removeDataSM("mousedown");this.$root.triggerHandler("mouseleave.smapi",l[0])},menuHide:function(m){if(this.$root.triggerHandler("beforehide.smapi",m[0])===false){return}m.stop(true,true);if(m.css("display")!="none"){var l=function(){m.css("z-index","")};if(this.isCollapsible()){if(this.opts.collapsibleHideFunction){this.opts.collapsibleHideFunction.call(this,m,l)}else{m.hide(this.opts.collapsibleHideDuration,l)}}else{if(this.opts.hideFunction){this.opts.hideFunction.call(this,m,l)}else{m.hide(this.opts.hideDuration,l)}}if(m.dataSM("ie-shim")){m.dataSM("ie-shim").remove().css({"-webkit-transform":"",transform:""})}if(m.dataSM("scroll")){this.menuScrollStop(m);m.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).unbind(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()}m.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false");m.attr({"aria-expanded":"false","aria-hidden":"true"});var n=m.dataSM("level");this.activatedItems.splice(n-1,1);this.visibleSubMenus.splice(a.inArray(m,this.visibleSubMenus),1);this.$root.triggerHandler("hide.smapi",m[0])}},menuHideAll:function(){if(this.showTimeout){clearTimeout(this.showTimeout);this.showTimeout=0}var m=this.opts.isPopup?1:0;for(var l=this.visibleSubMenus.length-1;l>=m;l--){this.menuHide(this.visibleSubMenus[l])}if(this.opts.isPopup){this.$root.stop(true,true);if(this.$root.is(":visible")){if(this.opts.hideFunction){this.opts.hideFunction.call(this,this.$root)}else{this.$root.hide(this.opts.hideDuration)}if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").remove()}}}this.activatedItems=[];this.visibleSubMenus=[];this.clickActivated=false;this.focusActivated=false;this.zIndexInc=0;this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(n){for(var l=this.activatedItems.length-1;l>=n;l--){var m=this.activatedItems[l].dataSM("sub");if(m){this.menuHide(m)}}},menuIframeShim:function(l){if(e&&this.opts.overlapControlsInIE&&!l.dataSM("ie-shim")){l.dataSM("ie-shim",a("<iframe/>").attr({src:"javascript:0",tabindex:-9}).css({position:"absolute",top:"auto",left:"0",opacity:0,border:"0"}))}},menuInit:function(l){if(!l.dataSM("in-mega")){if(l.hasClass("mega-menu")){l.find("ul").dataSM("in-mega",true)}var q=2,m=l[0];while((m=m.parentNode.parentNode)!=this.$root[0]){q++}var n=l.prevAll("a").eq(-1);if(!n.length){n=l.prevAll().find("a").eq(-1)}n.addClass("has-submenu").dataSM("sub",l);l.dataSM("parent-a",n).dataSM("level",q).parent().dataSM("sub",l);var o=n.attr("id")||this.accessIdPrefix+(++this.idInc),p=l.attr("id")||this.accessIdPrefix+(++this.idInc);n.attr({id:o,"aria-haspopup":"true","aria-controls":p,"aria-expanded":"false"});l.attr({id:p,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"});if(this.opts.subIndicators){n[this.opts.subIndicatorsPos](this.$subArrow.clone())}}},menuPosition:function(K){var r=K.dataSM("parent-a"),D=r.closest("li"),E=D.parent(),l=K.dataSM("level"),t=this.getWidth(K),J=this.getHeight(K),u=r.offset(),o=u.left,m=u.top,q=this.getWidth(r),F=this.getHeight(r),H=a(window),v=H.scrollLeft(),s=H.scrollTop(),z=this.getViewportWidth(),L=this.getViewportHeight(),w=E.parent().is("[data-sm-horizontal-sub]")||l==2&&!E.hasClass("sm-vertical"),B=this.opts.rightToLeftSubMenus&&!D.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&D.is("[data-sm-reverse]"),p=l==2?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,n=l==2?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY,C,A;if(w){C=B?q-t-p:p;A=this.opts.bottomToTopSubMenus?-J-n:F+n}else{C=B?p-t:q-p;A=this.opts.bottomToTopSubMenus?F-n-J:n}if(this.opts.keepInViewport){var N=o+C,M=m+A;if(B&&N<v){C=w?v-N+C:q-p}else{if(!B&&N+t>v+z){C=w?v+z-t-N+C:p-t}}if(!w){if(J<L&&M+J>s+L){A+=s+L-J-M}else{if(J>=L||M<s){A+=s-M}}}if(w&&(M+J>s+L+0.49||M<s)||!w&&J>L+0.49){var G=this;if(!K.dataSM("scroll-arrows")){K.dataSM("scroll-arrows",a([a('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],a('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).bind({mouseenter:function(){K.dataSM("scroll").up=a(this).hasClass("scroll-up");G.menuScroll(K)},mouseleave:function(x){G.menuScrollStop(K);G.menuScrollOut(K,x)},"mousewheel DOMMouseScroll":function(x){x.preventDefault()}}).insertAfter(K))}var I=".smartmenus_scroll";K.dataSM("scroll",{y:this.cssTransforms3d?0:A-F,step:1,itemH:F,subH:J,arrowDownH:this.getHeight(K.dataSM("scroll-arrows").eq(1))}).bind(i([["mouseover",function(x){G.menuScrollOver(K,x)}],["mouseout",function(x){G.menuScrollOut(K,x)}],["mousewheel DOMMouseScroll",function(x){G.menuScrollMousewheel(K,x)}]],I)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:C+(parseInt(K.css("border-left-width"))||0),width:t-(parseInt(K.css("border-left-width"))||0)-(parseInt(K.css("border-right-width"))||0),zIndex:K.css("z-index")}).eq(w&&this.opts.bottomToTopSubMenus?0:1).show();if(this.isFixed()){K.css({"touch-action":"none","-ms-touch-action":"none"}).bind(i([[d?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp",function(x){G.menuScrollTouch(K,x)}]],I))}}}K.css({top:"auto",left:"0",marginLeft:C,marginTop:A-F});this.menuIframeShim(K);if(K.dataSM("ie-shim")){K.dataSM("ie-shim").css({zIndex:K.css("z-index"),width:t,height:J,marginLeft:C,marginTop:A-F})}},menuScroll:function(r,m,n){var p=r.dataSM("scroll"),q=r.dataSM("scroll-arrows"),o=p.up?p.upEnd:p.downEnd,s;if(!m&&p.momentum){p.momentum*=0.92;s=p.momentum;if(s<0.5){this.menuScrollStop(r);return}}else{s=n||(m||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(p.step))}var l=r.dataSM("level");if(this.activatedItems[l-1]&&this.activatedItems[l-1].dataSM("sub")&&this.activatedItems[l-1].dataSM("sub").is(":visible")){this.menuHideSubMenus(l-1)}p.y=p.up&&o<=p.y||!p.up&&o>=p.y?p.y:(Math.abs(o-p.y)>s?p.y+(p.up?s:-s):o);r.add(r.dataSM("ie-shim")).css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+p.y+"px, 0)",transform:"translate3d(0, "+p.y+"px, 0)"}:{marginTop:p.y});if(f&&(p.up&&p.y>p.downEnd||!p.up&&p.y<p.upEnd)){q.eq(p.up?1:0).show()}if(p.y==o){if(f){q.eq(p.up?0:1).hide()}this.menuScrollStop(r)}else{if(!m){if(this.opts.scrollAccelerate&&p.step<this.opts.scrollStep){p.step+=0.2}var t=this;this.scrollTimeout=g(function(){t.menuScroll(r)})}}},menuScrollMousewheel:function(m,n){if(this.getClosestMenu(n.target)==m[0]){n=n.originalEvent;var l=(n.wheelDelta||-n.detail)>0;if(m.dataSM("scroll-arrows").eq(l?0:1).is(":visible")){m.dataSM("scroll").up=l;this.menuScroll(m,true)}}n.preventDefault()},menuScrollOut:function(l,m){if(f){if(!/^scroll-(up|down)/.test((m.relatedTarget||"").className)&&(l[0]!=m.relatedTarget&&!a.contains(l[0],m.relatedTarget)||this.getClosestMenu(m.relatedTarget)!=l[0])){l.dataSM("scroll-arrows").css("visibility","hidden")}}},menuScrollOver:function(n,o){if(f){if(!/^scroll-(up|down)/.test(o.target.className)&&this.getClosestMenu(o.target)==n[0]){this.menuScrollRefreshData(n);var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;n.dataSM("scroll-arrows").eq(0).css("margin-top",l).end().eq(1).css("margin-top",l+this.getViewportHeight()-m.arrowDownH).end().css("visibility","visible")}}},menuScrollRefreshData:function(n){var m=n.dataSM("scroll"),l=a(window).scrollTop()-n.dataSM("parent-a").offset().top-m.itemH;if(this.cssTransforms3d){l=-(parseFloat(n.css("margin-top"))-l)}a.extend(m,{upEnd:l,downEnd:l+this.getViewportHeight()-m.subH})},menuScrollStop:function(l){if(this.scrollTimeout){c(this.scrollTimeout);this.scrollTimeout=0;l.dataSM("scroll").step=1;return true}},menuScrollTouch:function(p,q){q=q.originalEvent;if(j(q)){var m=this.getTouchPoint(q);if(this.getClosestMenu(m.target)==p[0]){var o=p.dataSM("scroll");if(/(start|down)$/i.test(q.type)){if(this.menuScrollStop(p)){q.preventDefault();this.$touchScrollingSub=p}else{this.$touchScrollingSub=null}this.menuScrollRefreshData(p);a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}else{if(/move$/i.test(q.type)){var n=o.touchY!==undefined?o.touchY:o.touchStartY;if(n!==undefined&&n!=m.pageY){this.$touchScrollingSub=p;var l=n<m.pageY;if(o.up!==undefined&&o.up!=l){a.extend(o,{touchStartY:m.pageY,touchStartTime:q.timeStamp})}a.extend(o,{up:l,touchY:m.pageY});this.menuScroll(p,true,Math.abs(m.pageY-n))}q.preventDefault()}else{if(o.touchY!==undefined){if(o.momentum=Math.pow(Math.abs(m.pageY-o.touchStartY)/(q.timeStamp-o.touchStartTime),2)*15){this.menuScrollStop(p);this.menuScroll(p);q.preventDefault()}delete o.touchY}}}}}},menuShow:function(n){if(!n.dataSM("beforefirstshowfired")){n.dataSM("beforefirstshowfired",true);if(this.$root.triggerHandler("beforefirstshow.smapi",n[0])===false){return}}if(this.$root.triggerHandler("beforeshow.smapi",n[0])===false){return}n.dataSM("shown-before",true).stop(true,true);if(!n.is(":visible")){var m=n.dataSM("parent-a");if(this.opts.keepHighlighted||this.isCollapsible()){m.addClass("highlighted")}if(this.isCollapsible()){n.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""})}else{n.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1);if(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth){n.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap");if(this.opts.subMenusMinWidth){n.css("min-width",this.opts.subMenusMinWidth)}if(this.opts.subMenusMaxWidth){var o=this.getWidth(n);n.css("max-width",this.opts.subMenusMaxWidth);if(o>this.getWidth(n)){n.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}}}this.menuPosition(n);if(n.dataSM("ie-shim")){n.dataSM("ie-shim").insertBefore(n)}}var l=function(){n.css("overflow","")};if(this.isCollapsible()){if(this.opts.collapsibleShowFunction){this.opts.collapsibleShowFunction.call(this,n,l)}else{n.show(this.opts.collapsibleShowDuration,l)}}else{if(this.opts.showFunction){this.opts.showFunction.call(this,n,l)}else{n.show(this.opts.showDuration,l)}}m.attr("aria-expanded","true");n.attr({"aria-expanded":"true","aria-hidden":"false"});this.visibleSubMenus.push(n);this.$root.triggerHandler("show.smapi",n[0])}},popupHide:function(l){if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}var m=this;this.hideTimeout=setTimeout(function(){m.menuHideAll()},l?1:this.opts.hideTimeout)},popupShow:function(o,n){if(!this.opts.isPopup){alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.');return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}this.$root.dataSM("shown-before",true).stop(true,true);if(!this.$root.is(":visible")){this.$root.css({left:o,top:n});this.menuIframeShim(this.$root);if(this.$root.dataSM("ie-shim")){this.$root.dataSM("ie-shim").css({zIndex:this.$root.css("z-index"),width:this.getWidth(this.$root),height:this.getHeight(this.$root),left:o,top:n}).insertBefore(this.$root)}var m=this,l=function(){m.$root.css("overflow","")};if(this.opts.showFunction){this.opts.showFunction.call(this,this.$root,l)}else{this.$root.show(this.opts.showDuration,l)}this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(true);this.init(true)},rootKeyDown:function(o){if(!this.handleEvents()){return}switch(o.keyCode){case 27:var m=this.activatedItems[0];if(m){this.menuHideAll();m[0].focus();var n=m.dataSM("sub");if(n){this.menuHide(n)}}break;case 32:var l=a(o.target);if(l.is("a")&&this.handleItemEvents(l)){var n=l.dataSM("sub");if(n&&!n.is(":visible")){this.itemClick({currentTarget:o.target});o.preventDefault()}}break}},rootOut:function(m){if(!this.handleEvents()||this.isTouchMode()||m.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}if(!this.opts.showOnClick||!this.opts.hideOnClick){var l=this;this.hideTimeout=setTimeout(function(){l.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(l){if(!this.handleEvents()||this.isTouchMode()||l.target==this.$root[0]){return}if(this.hideTimeout){clearTimeout(this.hideTimeout);this.hideTimeout=0}},winResize:function(m){if(!this.handleEvents()){if(this.$disableOverlay){var n=this.$root.offset();this.$disableOverlay.css({top:n.top,left:n.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}return}if(!("onorientationchange" in window)||m.type=="orientationchange"){var l=this.isCollapsible();if(!(this.wasCollapsible&&l)){if(this.activatedItems.length){this.activatedItems[this.activatedItems.length-1][0].blur()}this.menuHideAll()}this.wasCollapsible=l}}}});a.fn.dataSM=function(l,m){if(m){return this.data(l+"_smartmenus",m)}return this.data(l+"_smartmenus")};a.fn.removeDataSM=function(l){return this.removeData(l+"_smartmenus")};a.fn.smartmenus=function(m){if(typeof m=="string"){var l=arguments,o=m;Array.prototype.shift.call(l);return this.each(function(){var p=a(this).data("smartmenus");if(p&&p[o]){p[o].apply(p,l)}})}var n=a.extend({},a.fn.smartmenus.defaults,m);return this.each(function(){new a.SmartMenus(this,n)})};a.fn.smartmenus.defaults={isPopup:false,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:true,subIndicatorsPos:"prepend",subIndicatorsText:"+",scrollStep:30,scrollAccelerate:true,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(m,l){m.fadeOut(200,l)},collapsibleShowDuration:0,collapsibleShowFunction:function(m,l){m.slideDown(200,l)},collapsibleHideDuration:0,collapsibleHideFunction:function(m,l){m.slideUp(200,l)},showOnClick:false,hideOnClick:true,noMouseOver:false,keepInViewport:true,keepHighlighted:true,markCurrentItem:false,markCurrentTree:true,rightToLeftSubMenus:false,bottomToTopSubMenus:false,overlapControlsInIE:true};return a}));
|
||
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
|
||
\ No newline at end of file
|
||
diff -Nur doxygen-1.8.14.orig/templates/html/tabs.css doxygen-1.8.14/templates/html/tabs.css
|
||
--- doxygen-1.8.14.orig/templates/html/tabs.css 2017-10-31 20:36:00.000000000 +0100
|
||
+++ doxygen-1.8.14/templates/html/tabs.css 2021-06-27 13:31:16.000000000 +0200
|
||
@@ -1 +1 @@
|
||
-.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
|
||
\ No newline at end of file
|
||
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
|
||
\ No newline at end of file
|