diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..966fb07 --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "bower" +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index be4c882..7871be5 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ desktop.ini .anvil *node_modules *npm-debug* -report/ \ No newline at end of file +report/ +bower/ \ No newline at end of file diff --git a/.npmignore b/.npmignore index 99a133d..cbc0b8c 100644 --- a/.npmignore +++ b/.npmignore @@ -12,4 +12,5 @@ header.js .anvil component.json .npmignore -classic-resolver* \ No newline at end of file +classic-resolver* +bower* \ No newline at end of file diff --git a/README.md b/README.md index 8d123b7..57a568c 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,20 @@ There are four main ways you can extend Postal: It's also possible to extend the monitoring of messages passing through Postal by adding a "wire tap". A wire tap is a callback that will get invoked for any published message (even if no actual subscriptions would bind to the message's topic). Wire taps should _not_ be used in lieu of an actual subscription - but instead should be used for diagnostics, logging, forwarding (to a websocket publisher or a local storage wrapper, for example) or other concerns that fall along those lines. This repository used to include a console logging wiretap called postal.diagnostics.js - you can now find it [here in it's own repo](https://github.com/postaljs/postal.diagnostics). This diagnostics wiretap can be configured with filters to limit the firehose of message data to specific channels/topics and more. +## Build, Dependencies, etc. + +* postal depends on [underscore.js](http://underscorejs.org/) +* postal uses [gulp.js](http://gulpjs.com/) for building, running tests and examples. + * To build + * run `npm install` (to install all deps) + * run `npm run build` - then check the lib folder for the output + * To run tests & examples + * To run node-based tests: `npm run test` + * To run browser-based tests & examples: + * run `npm start` + * navigate in your browser to + + ## Can I contribute? Please - by all means! While I hope the API is relatively stable, I'm open to pull requests. (Hint - if you want a feature implemented, a pull request gives it a much higher probability of being included than simply asking me.) As I said, pull requests are most certainly welcome - but please include tests for your additions. Otherwise, it will disappear into the ether. diff --git a/bower.json b/bower.json index 36333d0..b76ff54 100755 --- a/bower.json +++ b/bower.json @@ -1,31 +1,42 @@ { - "name": "postal.js", - "description": "Client-side messaging library.", - "homepage": "https://github.com/postaljs/postal.js", - "keywords": [ - "pub/sub", - "pub", - "sub", - "messaging", - "message", - "bus", - "event", - "eventing", - "mediator", - "broker", - "envelope" - ], - "author": "Jim Cowart ", - "repository": { - "type": "git", - "url": "git://github.com/postaljs/postal.js.git" - }, - "version": "0.8.11", - "main": [ - "lib/postal.min.js", - "lib/postal.js" - ], - "dependencies": { - "underscore": "~1.3.0" - } -} \ No newline at end of file + "name": "postal.js", + "version": "0.8.11", + "description": "Pub/Sub library providing wildcard subscriptions, complex message handling, etc. Works server and client-side.", + "homepage": "https://github.com/postaljs/postal.js", + "keywords": [ + "pub/sub", + "pub", + "sub", + "messaging", + "message", + "bus", + "event", + "eventing", + "mediator", + "broker", + "envelope" + ], + "author": "Jim Cowart ", + "repository": { + "type": "git", + "url": "git://github.com/postaljs/postal.js.git" + }, + "main": [ + "lib/postal.min.js", + "lib/postal.js" + ], + "dependencies": { + "underscore": "~1.5.2" + }, + "devDependencies": { + "jquery": "~1.10.2", + "bootstrap": "~3.0.3", + "expect": "0.1.2", + "mocha": "~1.17.0", + "requirejs": "~2.1.10", + "postal.diagnostics": "~0.7.0" + }, + "resolutions": { + "underscore": "~1.5.2" + } +} diff --git a/example/amd/index.html b/example/amd/index.html index 1cd04b1..2ac0c52 100644 --- a/example/amd/index.html +++ b/example/amd/index.html @@ -4,7 +4,7 @@ Postal Examples (AMD/require.js Lib Format) - +
diff --git a/example/amd/js/libs/jquery/jquery-min.js b/example/amd/js/libs/jquery/jquery-min.js deleted file mode 100644 index c80ae49..0000000 --- a/example/amd/js/libs/jquery/jquery-min.js +++ /dev/null @@ -1,3320 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function ( a, b ) { - function cy( a ) { - return f.isWindow( a ) ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : !1 - } - - function cv( a ) { - if ( !ck[a] ) { - var b = c.body, d = f( "<" + a + ">" ).appendTo( b ), e = d.css( "display" ); - d.remove(); - if ( e === "none" || e === "" ) { - cl || (cl = c.createElement( "iframe" ), cl.frameBorder = cl.width = cl.height = 0), b.appendChild( cl ); - if ( !cm || !cl.createElement ) { - cm = (cl.contentWindow || cl.contentDocument).document, cm.write( (c.compatMode === "CSS1Compat" ? "" : "") + "" ), cm.close(); - } - d = cm.createElement( a ), cm.body.appendChild( d ), e = f.css( d, "display" ), b.removeChild( cl ) - } - ck[a] = e - } - return ck[a] - } - - function cu( a, b ) { - var c = {}; - f.each( cq.concat.apply( [], cq.slice( 0, b ) ), function () { - c[this] = a - } ); - return c - } - - function ct() { - cr = b - } - - function cs() { - setTimeout( ct, 0 ); - return cr = f.now() - } - - function cj() { - try { - return new a.ActiveXObject( "Microsoft.XMLHTTP" ) - } catch ( b ) { - } - } - - function ci() { - try { - return new a.XMLHttpRequest - } catch ( b ) { - } - } - - function cc( a, c ) { - a.dataFilter && (c = a.dataFilter( c, a.dataType )); - var d = a.dataTypes, e = {}, g, h, i = d.length, j, k = d[0], l, m, n, o, p; - for ( g = 1; g < i; g++ ) { - if ( g === 1 ) { - for ( h in a.converters ) { - typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]); - } - } - l = k, k = d[g]; - if ( k === "*" ) { - k = l; - } else if ( l !== "*" && l !== k ) { - m = l + " " + k, n = e[m] || e["* " + k]; - if ( !n ) { - p = b; - for ( o in e ) { - j = o.split( " " ); - if ( j[0] === l || j[0] === "*" ) { - p = e[j[1] + " " + k]; - if ( p ) { - o = e[o], o === !0 ? n = p : p === !0 && (n = o); - break - } - } - } - } - !n && !p && f.error( "No conversion from " + m.replace( " ", " to " ) ), n !== !0 && (c = n ? n( c ) : p( o( c ) )) - } - } - return c - } - - function cb( a, c, d ) { - var e = a.contents, f = a.dataTypes, g = a.responseFields, h, i, j, k; - for ( i in g ) { - i in d && (c[g[i]] = d[i]); - } - while ( f[0] === "*" ) { - f.shift(), h === b && (h = a.mimeType || c.getResponseHeader( "content-type" )); - } - if ( h ) { - for ( i in e ) { - if ( e[i] && e[i].test( h ) ) { - f.unshift( i ); - break - } - } - } - if ( f[0]in d ) { - j = f[0]; - } else { - for ( i in d ) { - if ( !f[0] || a.converters[i + " " + f[0]] ) { - j = i; - break - } - k || (k = i) - } - j = j || k - } - if ( j ) { - j !== f[0] && f.unshift( j ); - return d[j] - } - } - - function ca( a, b, c, d ) { - if ( f.isArray( b ) ) { - f.each( b, function ( b, e ) { - c || bE.test( a ) ? d( a, e ) : ca( a + "[" + (typeof e == "object" || f.isArray( e ) ? b : "") + "]", e, c, d ) - } ); - } else if ( !c && b != null && typeof b == "object" ) { - for ( var e in b ) { - ca( a + "[" + e + "]", b[e], c, d ); - } - } else { - d( a, b ) - } - } - - function b_( a, c ) { - var d, e, g = f.ajaxSettings.flatOptions || {}; - for ( d in c ) { - c[d] !== b && ((g[d] ? a : e || (e = {}))[d] = c[d]); - } - e && f.extend( !0, a, e ) - } - - function b$( a, c, d, e, f, g ) { - f = f || c.dataTypes[0], g = g || {}, g[f] = !0; - var h = a[f], i = 0, j = h ? h.length : 0, k = a === bT, l; - for ( ; i < j && (k || !l); i++ ) { - l = h[i]( c, d, e ), typeof l == "string" && (!k || g[l] ? l = b : (c.dataTypes.unshift( l ), l = b$( a, c, d, e, l, g ))); - } - (k || !l) && !g["*"] && (l = b$( a, c, d, e, "*", g )); - return l - } - - function bZ( a ) { - return function ( b, c ) { - typeof b != "string" && (c = b, b = "*"); - if ( f.isFunction( c ) ) { - var d = b.toLowerCase().split( bP ), e = 0, g = d.length, h, i, j; - for ( ; e < g; e++ ) { - h = d[e], j = /^\+/.test( h ), j && (h = h.substr( 1 ) || "*"), i = a[h] = a[h] || [], i[j ? "unshift" : "push"]( c ) - } - } - } - } - - function bC( a, b, c ) { - var d = b === "width" ? a.offsetWidth : a.offsetHeight, e = b === "width" ? bx : by, g = 0, h = e.length; - if ( d > 0 ) { - if ( c !== "border" ) { - for ( ; g < h; g++ ) { - c || (d -= parseFloat( f.css( a, "padding" + e[g] ) ) || 0), c === "margin" ? d += parseFloat( f.css( a, c + e[g] ) ) || 0 : d -= parseFloat( f.css( a, "border" + e[g] + "Width" ) ) || 0; - } - } - return d + "px" - } - d = bz( a, b, b ); - if ( d < 0 || d == null ) { - d = a.style[b] || 0; - } - d = parseFloat( d ) || 0; - if ( c ) { - for ( ; g < h; g++ ) { - d += parseFloat( f.css( a, "padding" + e[g] ) ) || 0, c !== "padding" && (d += parseFloat( f.css( a, "border" + e[g] + "Width" ) ) || 0), c === "margin" && (d += parseFloat( f.css( a, c + e[g] ) ) || 0); - } - } - return d + "px" - } - - function bp( a, b ) { - b.src ? f.ajax( {url : b.src, async : !1, dataType : "script"} ) : f.globalEval( (b.text || b.textContent || b.innerHTML || "").replace( bf, "/*$0*/" ) ), b.parentNode && b.parentNode.removeChild( b ) - } - - function bo( a ) { - var b = c.createElement( "div" ); - bh.appendChild( b ), b.innerHTML = a.outerHTML; - return b.firstChild - } - - function bn( a ) { - var b = (a.nodeName || "").toLowerCase(); - b === "input" ? bm( a ) : b !== "script" && typeof a.getElementsByTagName != "undefined" && f.grep( a.getElementsByTagName( "input" ), bm ) - } - - function bm( a ) { - if ( a.type === "checkbox" || a.type === "radio" ) { - a.defaultChecked = a.checked - } - } - - function bl( a ) { - return typeof a.getElementsByTagName != "undefined" ? a.getElementsByTagName( "*" ) : typeof a.querySelectorAll != "undefined" ? a.querySelectorAll( "*" ) : [] - } - - function bk( a, b ) { - var c; - if ( b.nodeType === 1 ) { - b.clearAttributes && b.clearAttributes(), b.mergeAttributes && b.mergeAttributes( a ), c = b.nodeName.toLowerCase(); - if ( c === "object" ) { - b.outerHTML = a.outerHTML; - } else if ( c !== "input" || a.type !== "checkbox" && a.type !== "radio" ) { - if ( c === "option" ) { - b.selected = a.defaultSelected; - } else if ( c === "input" || c === "textarea" ) { - b.defaultValue = a.defaultValue - } - } else { - a.checked && (b.defaultChecked = b.checked = a.checked), b.value !== a.value && (b.value = a.value); - } - b.removeAttribute( f.expando ) - } - } - - function bj( a, b ) { - if ( b.nodeType === 1 && !!f.hasData( a ) ) { - var c, d, e, g = f._data( a ), h = f._data( b, g ), i = g.events; - if ( i ) { - delete h.handle, h.events = {}; - for ( c in i ) { - for ( d = 0, e = i[c].length; d < e; d++ ) { - f.event.add( b, c + (i[c][d].namespace ? "." : "") + i[c][d].namespace, i[c][d], i[c][d].data ) - } - } - } - h.data && (h.data = f.extend( {}, h.data )) - } - } - - function bi( a, b ) { - return f.nodeName( a, "table" ) ? a.getElementsByTagName( "tbody" )[0] || a.appendChild( a.ownerDocument.createElement( "tbody" ) ) : a - } - - function U( a ) { - var b = V.split( "|" ), c = a.createDocumentFragment(); - if ( c.createElement ) { - while ( b.length ) { - c.createElement( b.pop() ); - } - } - return c - } - - function T( a, b, c ) { - b = b || 0; - if ( f.isFunction( b ) ) { - return f.grep( a, function ( a, d ) { - var e = !!b.call( a, d, a ); - return e === c - } ); - } - if ( b.nodeType ) { - return f.grep( a, function ( a, d ) { - return a === b === c - } ); - } - if ( typeof b == "string" ) { - var d = f.grep( a, function ( a ) { - return a.nodeType === 1 - } ); - if ( O.test( b ) ) { - return f.filter( b, d, !c ); - } - b = f.filter( b, d ) - } - return f.grep( a, function ( a, d ) { - return f.inArray( a, b ) >= 0 === c - } ) - } - - function S( a ) { - return!a || !a.parentNode || a.parentNode.nodeType === 11 - } - - function K() { - return!0 - } - - function J() { - return!1 - } - - function n( a, b, c ) { - var d = b + "defer", e = b + "queue", g = b + "mark", h = f._data( a, d ); - h && (c === "queue" || !f._data( a, e )) && (c === "mark" || !f._data( a, g )) && setTimeout( function () { - !f._data( a, e ) && !f._data( a, g ) && (f.removeData( a, d, !0 ), h.fire()) - }, 0 ) - } - - function m( a ) { - for ( var b in a ) { - if ( b === "data" && f.isEmptyObject( a[b] ) ) { - continue; - } - if ( b !== "toJSON" ) { - return!1 - } - } - return!0 - } - - function l( a, c, d ) { - if ( d === b && a.nodeType === 1 ) { - var e = "data-" + c.replace( k, "-$1" ).toLowerCase(); - d = a.getAttribute( e ); - if ( typeof d == "string" ) { - try { - d = d === "true" ? !0 : d === "false" ? !1 : d === "null" ? null : f.isNumeric( d ) ? parseFloat( d ) : j.test( d ) ? f.parseJSON( d ) : d - } catch ( g ) { - } - f.data( a, c, d ) - } else { - d = b - } - } - return d - } - - function h( a ) { - var b = g[a] = {}, c, d; - a = a.split( /\s+/ ); - for ( c = 0, d = a.length; c < d; c++ ) { - b[a[c]] = !0; - } - return b - } - - var c = a.document, d = a.navigator, e = a.location, f = function () { - function J() { - if ( !e.isReady ) { - try { - c.documentElement.doScroll( "left" ) - } catch ( a ) { - setTimeout( J, 1 ); - return - } - e.ready() - } - } - - var e = function ( a, b ) { - return new e.fn.init( a, b, h ) - }, f = a.jQuery, g = a.$, h, i = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, j = /\S/, k = /^\s+/, l = /\s+$/, m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, n = /^[\],:{}\s]*$/, o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, q = /(?:^|:|,)(?:\s*\[)+/g, r = /(webkit)[ \/]([\w.]+)/, s = /(opera)(?:.*version)?[ \/]([\w.]+)/, t = /(msie) ([\w.]+)/, u = /(mozilla)(?:.*? rv:([\w.]+))?/, v = /-([a-z]|[0-9])/ig, w = /^-ms-/, x = function ( a, b ) { - return(b + "").toUpperCase() - }, y = d.userAgent, z, A, B, C = Object.prototype.toString, D = Object.prototype.hasOwnProperty, E = Array.prototype.push, F = Array.prototype.slice, G = String.prototype.trim, H = Array.prototype.indexOf, I = {}; - e.fn = e.prototype = {constructor : e, init : function ( a, d, f ) { - var g, h, j, k; - if ( !a ) { - return this; - } - if ( a.nodeType ) { - this.context = this[0] = a, this.length = 1; - return this - } - if ( a === "body" && !d && c.body ) { - this.context = c, this[0] = c.body, this.selector = a, this.length = 1; - return this - } - if ( typeof a == "string" ) { - a.charAt( 0 ) !== "<" || a.charAt( a.length - 1 ) !== ">" || a.length < 3 ? g = i.exec( a ) : g = [null, a, null]; - if ( g && (g[1] || !d) ) { - if ( g[1] ) { - d = d instanceof e ? d[0] : d, k = d ? d.ownerDocument || d : c, j = m.exec( a ), j ? e.isPlainObject( d ) ? (a = [c.createElement( j[1] )], e.fn.attr.call( a, d, !0 )) : a = [k.createElement( j[1] )] : (j = e.buildFragment( [g[1]], [k] ), a = (j.cacheable ? e.clone( j.fragment ) : j.fragment).childNodes); - return e.merge( this, a ) - } - h = c.getElementById( g[2] ); - if ( h && h.parentNode ) { - if ( h.id !== g[2] ) { - return f.find( a ); - } - this.length = 1, this[0] = h - } - this.context = c, this.selector = a; - return this - } - return!d || d.jquery ? (d || f).find( a ) : this.constructor( d ).find( a ) - } - if ( e.isFunction( a ) ) { - return f.ready( a ); - } - a.selector !== b && (this.selector = a.selector, this.context = a.context); - return e.makeArray( a, this ) - }, selector : "", jquery : "1.7.1", length : 0, size : function () { - return this.length - }, toArray : function () { - return F.call( this, 0 ) - }, get : function ( a ) { - return a == null ? this.toArray() : a < 0 ? this[this.length + a] : this[a] - }, pushStack : function ( a, b, c ) { - var d = this.constructor(); - e.isArray( a ) ? E.apply( d, a ) : e.merge( d, a ), d.prevObject = this, d.context = this.context, b === "find" ? d.selector = this.selector + (this.selector ? " " : "") + c : b && (d.selector = this.selector + "." + b + "(" + c + ")"); - return d - }, each : function ( a, b ) { - return e.each( this, a, b ) - }, ready : function ( a ) { - e.bindReady(), A.add( a ); - return this - }, eq : function ( a ) { - a = +a; - return a === -1 ? this.slice( a ) : this.slice( a, a + 1 ) - }, first : function () { - return this.eq( 0 ) - }, last : function () { - return this.eq( -1 ) - }, slice : function () { - return this.pushStack( F.apply( this, arguments ), "slice", F.call( arguments ).join( "," ) ) - }, map : function ( a ) { - return this.pushStack( e.map( this, function ( b, c ) { - return a.call( b, c, b ) - } ) ) - }, end : function () { - return this.prevObject || this.constructor( null ) - }, push : E, sort : [].sort, splice : [].splice}, e.fn.init.prototype = e.fn, e.extend = e.fn.extend = function () { - var a, c, d, f, g, h, i = arguments[0] || {}, j = 1, k = arguments.length, l = !1; - typeof i == "boolean" && (l = i, i = arguments[1] || {}, j = 2), typeof i != "object" && !e.isFunction( i ) && (i = {}), k === j && (i = this, --j); - for ( ; j < k; j++ ) { - if ( (a = arguments[j]) != null ) { - for ( c in a ) { - d = i[c], f = a[c]; - if ( i === f ) { - continue; - } - l && f && (e.isPlainObject( f ) || (g = e.isArray( f ))) ? (g ? (g = !1, h = d && e.isArray( d ) ? d : []) : h = d && e.isPlainObject( d ) ? d : {}, i[c] = e.extend( l, h, f )) : f !== b && (i[c] = f) - } - } - } - return i - }, e.extend( {noConflict : function ( b ) { - a.$ === e && (a.$ = g), b && a.jQuery === e && (a.jQuery = f); - return e - }, isReady : !1, readyWait : 1, holdReady : function ( a ) { - a ? e.readyWait++ : e.ready( !0 ) - }, ready : function ( a ) { - if ( a === !0 && !--e.readyWait || a !== !0 && !e.isReady ) { - if ( !c.body ) { - return setTimeout( e.ready, 1 ); - } - e.isReady = !0; - if ( a !== !0 && --e.readyWait > 0 ) { - return; - } - A.fireWith( c, [e] ), e.fn.trigger && e( c ).trigger( "ready" ).off( "ready" ) - } - }, bindReady : function () { - if ( !A ) { - A = e.Callbacks( "once memory" ); - if ( c.readyState === "complete" ) { - return setTimeout( e.ready, 1 ); - } - if ( c.addEventListener ) { - c.addEventListener( "DOMContentLoaded", B, !1 ), a.addEventListener( "load", e.ready, !1 ); - } else if ( c.attachEvent ) { - c.attachEvent( "onreadystatechange", B ), a.attachEvent( "onload", e.ready ); - var b = !1; - try { - b = a.frameElement == null - } catch ( d ) { - } - c.documentElement.doScroll && b && J() - } - } - }, isFunction : function ( a ) { - return e.type( a ) === "function" - }, isArray : Array.isArray || function ( a ) { - return e.type( a ) === "array" - }, isWindow : function ( a ) { - return a && typeof a == "object" && "setInterval"in a - }, isNumeric : function ( a ) { - return!isNaN( parseFloat( a ) ) && isFinite( a ) - }, type : function ( a ) { - return a == null ? String( a ) : I[C.call( a )] || "object" - }, isPlainObject : function ( a ) { - if ( !a || e.type( a ) !== "object" || a.nodeType || e.isWindow( a ) ) { - return!1; - } - try { - if ( a.constructor && !D.call( a, "constructor" ) && !D.call( a.constructor.prototype, "isPrototypeOf" ) ) { - return!1 - } - } catch ( c ) { - return!1 - } - var d; - for ( d in a ) { - ; - } - return d === b || D.call( a, d ) - }, isEmptyObject : function ( a ) { - for ( var b in a ) { - return!1; - } - return!0 - }, error : function ( a ) { - throw new Error( a ) - }, parseJSON : function ( b ) { - if ( typeof b != "string" || !b ) { - return null; - } - b = e.trim( b ); - if ( a.JSON && a.JSON.parse ) { - return a.JSON.parse( b ); - } - if ( n.test( b.replace( o, "@" ).replace( p, "]" ).replace( q, "" ) ) ) { - return(new Function( "return " + b ))(); - } - e.error( "Invalid JSON: " + b ) - }, parseXML : function ( c ) { - var d, f; - try { - a.DOMParser ? (f = new DOMParser, d = f.parseFromString( c, "text/xml" )) : (d = new ActiveXObject( "Microsoft.XMLDOM" ), d.async = "false", d.loadXML( c )) - } catch ( g ) { - d = b - } - (!d || !d.documentElement || d.getElementsByTagName( "parsererror" ).length) && e.error( "Invalid XML: " + c ); - return d - }, noop : function () { - }, globalEval : function ( b ) { - b && j.test( b ) && (a.execScript || function ( b ) { - a.eval.call( a, b ) - })( b ) - }, camelCase : function ( a ) { - return a.replace( w, "ms-" ).replace( v, x ) - }, nodeName : function ( a, b ) { - return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase() - }, each : function ( a, c, d ) { - var f, g = 0, h = a.length, i = h === b || e.isFunction( a ); - if ( d ) { - if ( i ) { - for ( f in a ) { - if ( c.apply( a[f], d ) === !1 ) { - break - } - } - } else { - for ( ; g < h; ) { - if ( c.apply( a[g++], d ) === !1 ) { - break - } - } - } - } else if ( i ) { - for ( f in a ) { - if ( c.call( a[f], f, a[f] ) === !1 ) { - break - } - } - } else { - for ( ; g < h; ) { - if ( c.call( a[g], g, a[g++] ) === !1 ) { - break; - } - } - } - return a - }, trim : G ? function ( a ) { - return a == null ? "" : G.call( a ) - } : function ( a ) { - return a == null ? "" : (a + "").replace( k, "" ).replace( l, "" ) - }, makeArray : function ( a, b ) { - var c = b || []; - if ( a != null ) { - var d = e.type( a ); - a.length == null || d === "string" || d === "function" || d === "regexp" || e.isWindow( a ) ? E.call( c, a ) : e.merge( c, a ) - } - return c - }, inArray : function ( a, b, c ) { - var d; - if ( b ) { - if ( H ) { - return H.call( b, a, c ); - } - d = b.length, c = c ? c < 0 ? Math.max( 0, d + c ) : c : 0; - for ( ; c < d; c++ ) { - if ( c in b && b[c] === a ) { - return c - } - } - } - return-1 - }, merge : function ( a, c ) { - var d = a.length, e = 0; - if ( typeof c.length == "number" ) { - for ( var f = c.length; e < f; e++ ) { - a[d++] = c[e]; - } - } else { - while ( c[e] !== b ) { - a[d++] = c[e++]; - } - } - a.length = d; - return a - }, grep : function ( a, b, c ) { - var d = [], e; - c = !!c; - for ( var f = 0, g = a.length; f < g; f++ ) { - e = !!b( a[f], f ), c !== e && d.push( a[f] ); - } - return d - }, map : function ( a, c, d ) { - var f, g, h = [], i = 0, j = a.length, k = a instanceof e || j !== b && typeof j == "number" && (j > 0 && a[0] && a[j - 1] || j === 0 || e.isArray( a )); - if ( k ) { - for ( ; i < j; i++ ) { - f = c( a[i], i, d ), f != null && (h[h.length] = f); - } - } else { - for ( g in a ) { - f = c( a[g], g, d ), f != null && (h[h.length] = f); - } - } - return h.concat.apply( [], h ) - }, guid : 1, proxy : function ( a, c ) { - if ( typeof c == "string" ) { - var d = a[c]; - c = a, a = d - } - if ( !e.isFunction( a ) ) { - return b; - } - var f = F.call( arguments, 2 ), g = function () { - return a.apply( c, f.concat( F.call( arguments ) ) ) - }; - g.guid = a.guid = a.guid || g.guid || e.guid++; - return g - }, access : function ( a, c, d, f, g, h ) { - var i = a.length; - if ( typeof c == "object" ) { - for ( var j in c ) { - e.access( a, j, c[j], f, g, d ); - } - return a - } - if ( d !== b ) { - f = !h && f && e.isFunction( d ); - for ( var k = 0; k < i; k++ ) { - g( a[k], c, f ? d.call( a[k], k, g( a[k], c ) ) : d, h ); - } - return a - } - return i ? g( a[0], c ) : b - }, now : function () { - return(new Date).getTime() - }, uaMatch : function ( a ) { - a = a.toLowerCase(); - var b = r.exec( a ) || s.exec( a ) || t.exec( a ) || a.indexOf( "compatible" ) < 0 && u.exec( a ) || []; - return{browser : b[1] || "", version : b[2] || "0"} - }, sub : function () { - function a( b, c ) { - return new a.fn.init( b, c ) - } - - e.extend( !0, a, this ), a.superclass = this, a.fn = a.prototype = this(), a.fn.constructor = a, a.sub = this.sub, a.fn.init = function ( d, f ) { - f && f instanceof e && !(f instanceof a) && (f = a( f )); - return e.fn.init.call( this, d, f, b ) - }, a.fn.init.prototype = a.fn; - var b = a( c ); - return a - }, browser : {}} ), e.each( "Boolean Number String Function Array Date RegExp Object".split( " " ), function ( a, b ) { - I["[object " + b + "]"] = b.toLowerCase() - } ), z = e.uaMatch( y ), z.browser && (e.browser[z.browser] = !0, e.browser.version = z.version), e.browser.webkit && (e.browser.safari = !0), j.test( " " ) && (k = /^[\s\xA0]+/, l = /[\s\xA0]+$/), h = e( c ), c.addEventListener ? B = function () { - c.removeEventListener( "DOMContentLoaded", B, !1 ), e.ready() - } : c.attachEvent && (B = function () { - c.readyState === "complete" && (c.detachEvent( "onreadystatechange", B ), e.ready()) - }); - return e - }(), g = {}; - f.Callbacks = function ( a ) { - a = a ? g[a] || h( a ) : {}; - var c = [], d = [], e, i, j, k, l, m = function ( b ) { - var d, e, g, h, i; - for ( d = 0, e = b.length; d < e; d++ ) { - g = b[d], h = f.type( g ), h === "array" ? m( g ) : h === "function" && (!a.unique || !o.has( g )) && c.push( g ) - } - }, n = function ( b, f ) { - f = f || [], e = !a.memory || [b, f], i = !0, l = j || 0, j = 0, k = c.length; - for ( ; c && l < k; l++ ) { - if ( c[l].apply( b, f ) === !1 && a.stopOnFalse ) { - e = !0; - break - } - } - i = !1, c && (a.once ? e === !0 ? o.disable() : c = [] : d && d.length && (e = d.shift(), o.fireWith( e[0], e[1] ))) - }, o = {add : function () { - if ( c ) { - var a = c.length; - m( arguments ), i ? k = c.length : e && e !== !0 && (j = a, n( e[0], e[1] )) - } - return this - }, remove : function () { - if ( c ) { - var b = arguments, d = 0, e = b.length; - for ( ; d < e; d++ ) { - for ( var f = 0; f < c.length; f++ ) { - if ( b[d] === c[f] ) { - i && f <= k && (k--, f <= l && l--), c.splice( f--, 1 ); - if ( a.unique ) { - break - } - } - } - } - } - return this - }, has : function ( a ) { - if ( c ) { - var b = 0, d = c.length; - for ( ; b < d; b++ ) { - if ( a === c[b] ) { - return!0 - } - } - } - return!1 - }, empty : function () { - c = []; - return this - }, disable : function () { - c = d = e = b; - return this - }, disabled : function () { - return!c - }, lock : function () { - d = b, (!e || e === !0) && o.disable(); - return this - }, locked : function () { - return!d - }, fireWith : function ( b, c ) { - d && (i ? a.once || d.push( [b, c] ) : (!a.once || !e) && n( b, c )); - return this - }, fire : function () { - o.fireWith( this, arguments ); - return this - }, fired : function () { - return!!e - }}; - return o - }; - var i = [].slice; - f.extend( {Deferred : function ( a ) { - var b = f.Callbacks( "once memory" ), c = f.Callbacks( "once memory" ), d = f.Callbacks( "memory" ), e = "pending", g = {resolve : b, reject : c, notify : d}, h = {done : b.add, fail : c.add, progress : d.add, state : function () { - return e - }, isResolved : b.fired, isRejected : c.fired, then : function ( a, b, c ) { - i.done( a ).fail( b ).progress( c ); - return this - }, always : function () { - i.done.apply( i, arguments ).fail.apply( i, arguments ); - return this - }, pipe : function ( a, b, c ) { - return f.Deferred( - function ( d ) { - f.each( {done : [a, "resolve"], fail : [b, "reject"], progress : [c, "notify"]}, function ( a, b ) { - var c = b[0], e = b[1], g; - f.isFunction( c ) ? i[a]( function () { - g = c.apply( this, arguments ), g && f.isFunction( g.promise ) ? g.promise().then( d.resolve, d.reject, d.notify ) : d[e + "With"]( this === i ? d : this, [g] ) - } ) : i[a]( d[e] ) - } ) - } ).promise() - }, promise : function ( a ) { - if ( a == null ) { - a = h; - } else { - for ( var b in h ) { - a[b] = h[b]; - } - } - return a - }}, i = h.promise( {} ), j; - for ( j in g ) { - i[j] = g[j].fire, i[j + "With"] = g[j].fireWith; - } - i.done( - function () { - e = "resolved" - }, c.disable, d.lock ).fail( function () { - e = "rejected" - }, b.disable, d.lock ), a && a.call( i, i ); - return i - }, when : function ( a ) { - function m( a ) { - return function ( b ) { - e[a] = arguments.length > 1 ? i.call( arguments, 0 ) : b, j.notifyWith( k, e ) - } - } - - function l( a ) { - return function ( c ) { - b[a] = arguments.length > 1 ? i.call( arguments, 0 ) : c, --g || j.resolveWith( j, b ) - } - } - - var b = i.call( arguments, 0 ), c = 0, d = b.length, e = Array( d ), g = d, h = d, j = d <= 1 && a && f.isFunction( a.promise ) ? a : f.Deferred(), k = j.promise(); - if ( d > 1 ) { - for ( ; c < d; c++ ) { - b[c] && b[c].promise && f.isFunction( b[c].promise ) ? b[c].promise().then( l( c ), j.reject, m( c ) ) : --g; - } - g || j.resolveWith( j, b ) - } else { - j !== a && j.resolveWith( j, d ? [a] : [] ); - } - return k - }} ), f.support = function () { - var b, d, e, g, h, i, j, k, l, m, n, o, p, q = c.createElement( "div" ), r = c.documentElement; - q.setAttribute( "className", "t" ), q.innerHTML = "
a", d = q.getElementsByTagName( "*" ), e = q.getElementsByTagName( "a" )[0]; - if ( !d || !d.length || !e ) { - return{}; - } - g = c.createElement( "select" ), h = g.appendChild( c.createElement( "option" ) ), i = q.getElementsByTagName( "input" )[0], b = {leadingWhitespace : q.firstChild.nodeType === 3, tbody : !q.getElementsByTagName( "tbody" ).length, htmlSerialize : !!q.getElementsByTagName( "link" ).length, style : /top/.test( e.getAttribute( "style" ) ), hrefNormalized : e.getAttribute( "href" ) === "/a", opacity : /^0.55/.test( e.style.opacity ), cssFloat : !!e.style.cssFloat, checkOn : i.value === "on", optSelected : h.selected, getSetAttribute : q.className !== "t", enctype : !!c.createElement( "form" ).enctype, html5Clone : c.createElement( "nav" ).cloneNode( !0 ).outerHTML !== "<:nav>", submitBubbles : !0, changeBubbles : !0, focusinBubbles : !1, deleteExpando : !0, noCloneEvent : !0, inlineBlockNeedsLayout : !1, shrinkWrapBlocks : !1, reliableMarginRight : !0}, i.checked = !0, b.noCloneChecked = i.cloneNode( !0 ).checked, g.disabled = !0, b.optDisabled = !h.disabled; - try { - delete q.test - } catch ( s ) { - b.deleteExpando = !1 - } - !q.addEventListener && q.attachEvent && q.fireEvent && (q.attachEvent( "onclick", function () { - b.noCloneEvent = !1 - } ), q.cloneNode( !0 ).fireEvent( "onclick" )), i = c.createElement( "input" ), i.value = "t", i.setAttribute( "type", "radio" ), b.radioValue = i.value === "t", i.setAttribute( "checked", "checked" ), q.appendChild( i ), k = c.createDocumentFragment(), k.appendChild( q.lastChild ), b.checkClone = k.cloneNode( !0 ).cloneNode( !0 ).lastChild.checked, b.appendChecked = i.checked, k.removeChild( i ), k.appendChild( q ), q.innerHTML = "", a.getComputedStyle && (j = c.createElement( "div" ), j.style.width = "0", j.style.marginRight = "0", q.style.width = "2px", q.appendChild( j ), b.reliableMarginRight = (parseInt( (a.getComputedStyle( j, null ) || {marginRight : 0}).marginRight, 10 ) || 0) === 0); - if ( q.attachEvent ) { - for ( o in{submit : 1, change : 1, focusin : 1} ) { - n = "on" + o, p = n in q, p || (q.setAttribute( n, "return;" ), p = typeof q[n] == "function"), b[o + "Bubbles"] = p; - } - } - k.removeChild( q ), k = g = h = j = q = i = null, f( function () { - var a, d, e, g, h, i, j, k, m, n, o, r = c.getElementsByTagName( "body" )[0]; - !r || (j = 1, k = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;", m = "visibility:hidden;border:0;", n = "style='" + k + "border:5px solid #000;padding:0;'", o = "
" + "" + "
", a = c.createElement( "div" ), a.style.cssText = m + "width:0;height:0;position:static;top:0;margin-top:" + j + "px", r.insertBefore( a, r.firstChild ), q = c.createElement( "div" ), a.appendChild( q ), q.innerHTML = "
t
", l = q.getElementsByTagName( "td" ), p = l[0].offsetHeight === 0, l[0].style.display = "", l[1].style.display = "none", b.reliableHiddenOffsets = p && l[0].offsetHeight === 0, q.innerHTML = "", q.style.width = q.style.paddingLeft = "1px", f.boxModel = b.boxModel = q.offsetWidth === 2, typeof q.style.zoom != "undefined" && (q.style.display = "inline", q.style.zoom = 1, b.inlineBlockNeedsLayout = q.offsetWidth === 2, q.style.display = "", q.innerHTML = "
", b.shrinkWrapBlocks = q.offsetWidth !== 2), q.style.cssText = k + m, q.innerHTML = o, d = q.firstChild, e = d.firstChild, h = d.nextSibling.firstChild.firstChild, i = {doesNotAddBorder : e.offsetTop !== 5, doesAddBorderForTableAndCells : h.offsetTop === 5}, e.style.position = "fixed", e.style.top = "20px", i.fixedPosition = e.offsetTop === 20 || e.offsetTop === 15, e.style.position = e.style.top = "", d.style.overflow = "hidden", d.style.position = "relative", i.subtractsBorderForOverflowNotVisible = e.offsetTop === -5, i.doesNotIncludeMarginInBodyOffset = r.offsetTop !== j, r.removeChild( a ), q = a = null, f.extend( b, i )) - } ); - return b - }(); - var j = /^(?:\{.*\}|\[.*\])$/, k = /([A-Z])/g; - f.extend( {cache : {}, uuid : 0, expando : "jQuery" + (f.fn.jquery + Math.random()).replace( /\D/g, "" ), noData : {embed : !0, object : "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", applet : !0}, hasData : function ( a ) { - a = a.nodeType ? f.cache[a[f.expando]] : a[f.expando]; - return!!a && !m( a ) - }, data : function ( a, c, d, e ) { - if ( !!f.acceptData( a ) ) { - var g, h, i, j = f.expando, k = typeof c == "string", l = a.nodeType, m = l ? f.cache : a, n = l ? a[j] : a[j] && j, o = c === "events"; - if ( (!n || !m[n] || !o && !e && !m[n].data) && k && d === b ) { - return; - } - n || (l ? a[j] = n = ++f.uuid : n = j), m[n] || (m[n] = {}, l || (m[n].toJSON = f.noop)); - if ( typeof c == "object" || typeof c == "function" ) { - e ? m[n] = f.extend( m[n], c ) : m[n].data = f.extend( m[n].data, c ); - } - g = h = m[n], e || (h.data || (h.data = {}), h = h.data), d !== b && (h[f.camelCase( c )] = d); - if ( o && !h[c] ) { - return g.events; - } - k ? (i = h[c], i == null && (i = h[f.camelCase( c )])) : i = h; - return i - } - }, removeData : function ( a, b, c ) { - if ( !!f.acceptData( a ) ) { - var d, e, g, h = f.expando, i = a.nodeType, j = i ? f.cache : a, k = i ? a[h] : h; - if ( !j[k] ) { - return; - } - if ( b ) { - d = c ? j[k] : j[k].data; - if ( d ) { - f.isArray( b ) || (b in d ? b = [b] : (b = f.camelCase( b ), b in d ? b = [b] : b = b.split( " " ))); - for ( e = 0, g = b.length; e < g; e++ ) { - delete d[b[e]]; - } - if ( !(c ? m : f.isEmptyObject)( d ) ) { - return - } - } - } - if ( !c ) { - delete j[k].data; - if ( !m( j[k] ) ) { - return - } - } - f.support.deleteExpando || !j.setInterval ? delete j[k] : j[k] = null, i && (f.support.deleteExpando ? delete a[h] : a.removeAttribute ? a.removeAttribute( h ) : a[h] = null) - } - }, _data : function ( a, b, c ) { - return f.data( a, b, c, !0 ) - }, acceptData : function ( a ) { - if ( a.nodeName ) { - var b = f.noData[a.nodeName.toLowerCase()]; - if ( b ) { - return b !== !0 && a.getAttribute( "classid" ) === b - } - } - return!0 - }} ), f.fn.extend( {data : function ( a, c ) { - var d, e, g, h = null; - if ( typeof a == "undefined" ) { - if ( this.length ) { - h = f.data( this[0] ); - if ( this[0].nodeType === 1 && !f._data( this[0], "parsedAttrs" ) ) { - e = this[0].attributes; - for ( var i = 0, j = e.length; i < j; i++ ) { - g = e[i].name, g.indexOf( "data-" ) === 0 && (g = f.camelCase( g.substring( 5 ) ), l( this[0], g, h[g] )); - } - f._data( this[0], "parsedAttrs", !0 ) - } - } - return h - } - if ( typeof a == "object" ) { - return this.each( function () { - f.data( this, a ) - } ); - } - d = a.split( "." ), d[1] = d[1] ? "." + d[1] : ""; - if ( c === b ) { - h = this.triggerHandler( "getData" + d[1] + "!", [d[0]] ), h === b && this.length && (h = f.data( this[0], a ), h = l( this[0], a, h )); - return h === b && d[1] ? this.data( d[0] ) : h - } - return this.each( function () { - var b = f( this ), e = [d[0], c]; - b.triggerHandler( "setData" + d[1] + "!", e ), f.data( this, a, c ), b.triggerHandler( "changeData" + d[1] + "!", e ) - } ) - }, removeData : function ( a ) { - return this.each( function () { - f.removeData( this, a ) - } ) - }} ), f.extend( {_mark : function ( a, b ) { - a && (b = (b || "fx") + "mark", f._data( a, b, (f._data( a, b ) || 0) + 1 )) - }, _unmark : function ( a, b, c ) { - a !== !0 && (c = b, b = a, a = !1); - if ( b ) { - c = c || "fx"; - var d = c + "mark", e = a ? 0 : (f._data( b, d ) || 1) - 1; - e ? f._data( b, d, e ) : (f.removeData( b, d, !0 ), n( b, c, "mark" )) - } - }, queue : function ( a, b, c ) { - var d; - if ( a ) { - b = (b || "fx") + "queue", d = f._data( a, b ), c && (!d || f.isArray( c ) ? d = f._data( a, b, f.makeArray( c ) ) : d.push( c )); - return d || [] - } - }, dequeue : function ( a, b ) { - b = b || "fx"; - var c = f.queue( a, b ), d = c.shift(), e = {}; - d === "inprogress" && (d = c.shift()), d && (b === "fx" && c.unshift( "inprogress" ), f._data( a, b + ".run", e ), d.call( a, function () { - f.dequeue( a, b ) - }, e )), c.length || (f.removeData( a, b + "queue " + b + ".run", !0 ), n( a, b, "queue" )) - }} ), f.fn.extend( {queue : function ( a, c ) { - typeof a != "string" && (c = a, a = "fx"); - if ( c === b ) { - return f.queue( this[0], a ); - } - return this.each( function () { - var b = f.queue( this, a, c ); - a === "fx" && b[0] !== "inprogress" && f.dequeue( this, a ) - } ) - }, dequeue : function ( a ) { - return this.each( function () { - f.dequeue( this, a ) - } ) - }, delay : function ( a, b ) { - a = f.fx ? f.fx.speeds[a] || a : a, b = b || "fx"; - return this.queue( b, function ( b, c ) { - var d = setTimeout( b, a ); - c.stop = function () { - clearTimeout( d ) - } - } ) - }, clearQueue : function ( a ) { - return this.queue( a || "fx", [] ) - }, promise : function ( a, c ) { - function m() { - --h || d.resolveWith( e, [e] ) - } - - typeof a != "string" && (c = a, a = b), a = a || "fx"; - var d = f.Deferred(), e = this, g = e.length, h = 1, i = a + "defer", j = a + "queue", k = a + "mark", l; - while ( g-- ) { - if ( l = f.data( e[g], i, b, !0 ) || (f.data( e[g], j, b, !0 ) || f.data( e[g], k, b, !0 )) && f.data( e[g], i, f.Callbacks( "once memory" ), !0 ) ) { - h++, l.add( m ); - } - } - m(); - return d.promise() - }} ); - var o = /[\n\t\r]/g, p = /\s+/, q = /\r/g, r = /^(?:button|input)$/i, s = /^(?:button|input|object|select|textarea)$/i, t = /^a(?:rea)?$/i, u = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, v = f.support.getSetAttribute, w, x, y; - f.fn.extend( {attr : function ( a, b ) { - return f.access( this, a, b, !0, f.attr ) - }, removeAttr : function ( a ) { - return this.each( function () { - f.removeAttr( this, a ) - } ) - }, prop : function ( a, b ) { - return f.access( this, a, b, !0, f.prop ) - }, removeProp : function ( a ) { - a = f.propFix[a] || a; - return this.each( function () { - try { - this[a] = b, delete this[a] - } catch ( c ) { - } - } ) - }, addClass : function ( a ) { - var b, c, d, e, g, h, i; - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - f( this ).addClass( a.call( this, b, this.className ) ) - } ); - } - if ( a && typeof a == "string" ) { - b = a.split( p ); - for ( c = 0, d = this.length; c < d; c++ ) { - e = this[c]; - if ( e.nodeType === 1 ) { - if ( !e.className && b.length === 1 ) { - e.className = a; - } else { - g = " " + e.className + " "; - for ( h = 0, i = b.length; h < i; h++ ) { - ~g.indexOf( " " + b[h] + " " ) || (g += b[h] + " "); - } - e.className = f.trim( g ) - } - } - } - } - return this - }, removeClass : function ( a ) { - var c, d, e, g, h, i, j; - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - f( this ).removeClass( a.call( this, b, this.className ) ) - } ); - } - if ( a && typeof a == "string" || a === b ) { - c = (a || "").split( p ); - for ( d = 0, e = this.length; d < e; d++ ) { - g = this[d]; - if ( g.nodeType === 1 && g.className ) { - if ( a ) { - h = (" " + g.className + " ").replace( o, " " ); - for ( i = 0, j = c.length; i < j; i++ ) { - h = h.replace( " " + c[i] + " ", " " ); - } - g.className = f.trim( h ) - } else { - g.className = "" - } - } - } - } - return this - }, toggleClass : function ( a, b ) { - var c = typeof a, d = typeof b == "boolean"; - if ( f.isFunction( a ) ) { - return this.each( function ( c ) { - f( this ).toggleClass( a.call( this, c, this.className, b ), b ) - } ); - } - return this.each( function () { - if ( c === "string" ) { - var e, g = 0, h = f( this ), i = b, j = a.split( p ); - while ( e = j[g++] ) { - i = d ? i : !h.hasClass( e ), h[i ? "addClass" : "removeClass"]( e ) - } - } else if ( c === "undefined" || c === "boolean" ) { - this.className && f._data( this, "__className__", this.className ), this.className = this.className || a === !1 ? "" : f._data( this, "__className__" ) || "" - } - } ) - }, hasClass : function ( a ) { - var b = " " + a + " ", c = 0, d = this.length; - for ( ; c < d; c++ ) { - if ( this[c].nodeType === 1 && (" " + this[c].className + " ").replace( o, " " ).indexOf( b ) > -1 ) { - return!0; - } - } - return!1 - }, val : function ( a ) { - var c, d, e, g = this[0]; - { - if ( !!arguments.length ) { - e = f.isFunction( a ); - return this.each( function ( d ) { - var g = f( this ), h; - if ( this.nodeType === 1 ) { - e ? h = a.call( this, d, g.val() ) : h = a, h == null ? h = "" : typeof h == "number" ? h += "" : f.isArray( h ) && (h = f.map( h, function ( a ) { - return a == null ? "" : a + "" - } )), c = f.valHooks[this.nodeName.toLowerCase()] || f.valHooks[this.type]; - if ( !c || !("set"in c) || c.set( this, h, "value" ) === b ) { - this.value = h - } - } - } ) - } - if ( g ) { - c = f.valHooks[g.nodeName.toLowerCase()] || f.valHooks[g.type]; - if ( c && "get"in c && (d = c.get( g, "value" )) !== b ) { - return d; - } - d = g.value; - return typeof d == "string" ? d.replace( q, "" ) : d == null ? "" : d - } - } - }} ), f.extend( {valHooks : {option : {get : function ( a ) { - var b = a.attributes.value; - return!b || b.specified ? a.value : a.text - }}, select : {get : function ( a ) { - var b, c, d, e, g = a.selectedIndex, h = [], i = a.options, j = a.type === "select-one"; - if ( g < 0 ) { - return null; - } - c = j ? g : 0, d = j ? g + 1 : i.length; - for ( ; c < d; c++ ) { - e = i[c]; - if ( e.selected && (f.support.optDisabled ? !e.disabled : e.getAttribute( "disabled" ) === null) && (!e.parentNode.disabled || !f.nodeName( e.parentNode, "optgroup" )) ) { - b = f( e ).val(); - if ( j ) { - return b; - } - h.push( b ) - } - } - if ( j && !h.length && i.length ) { - return f( i[g] ).val(); - } - return h - }, set : function ( a, b ) { - var c = f.makeArray( b ); - f( a ).find( "option" ).each( function () { - this.selected = f.inArray( f( this ).val(), c ) >= 0 - } ), c.length || (a.selectedIndex = -1); - return c - }}}, attrFn : {val : !0, css : !0, html : !0, text : !0, data : !0, width : !0, height : !0, offset : !0}, attr : function ( a, c, d, e ) { - var g, h, i, j = a.nodeType; - if ( !!a && j !== 3 && j !== 8 && j !== 2 ) { - if ( e && c in f.attrFn ) { - return f( a )[c]( d ); - } - if ( typeof a.getAttribute == "undefined" ) { - return f.prop( a, c, d ); - } - i = j !== 1 || !f.isXMLDoc( a ), i && (c = c.toLowerCase(), h = f.attrHooks[c] || (u.test( c ) ? x : w)); - if ( d !== b ) { - if ( d === null ) { - f.removeAttr( a, c ); - return - } - if ( h && "set"in h && i && (g = h.set( a, d, c )) !== b ) { - return g; - } - a.setAttribute( c, "" + d ); - return d - } - if ( h && "get"in h && i && (g = h.get( a, c )) !== null ) { - return g; - } - g = a.getAttribute( c ); - return g === null ? b : g - } - }, removeAttr : function ( a, b ) { - var c, d, e, g, h = 0; - if ( b && a.nodeType === 1 ) { - d = b.toLowerCase().split( p ), g = d.length; - for ( ; h < g; h++ ) { - e = d[h], e && (c = f.propFix[e] || e, f.attr( a, e, "" ), a.removeAttribute( v ? e : c ), u.test( e ) && c in a && (a[c] = !1)) - } - } - }, attrHooks : {type : {set : function ( a, b ) { - if ( r.test( a.nodeName ) && a.parentNode ) { - f.error( "type property can't be changed" ); - } else if ( !f.support.radioValue && b === "radio" && f.nodeName( a, "input" ) ) { - var c = a.value; - a.setAttribute( "type", b ), c && (a.value = c); - return b - } - }}, value : {get : function ( a, b ) { - if ( w && f.nodeName( a, "button" ) ) { - return w.get( a, b ); - } - return b in a ? a.value : null - }, set : function ( a, b, c ) { - if ( w && f.nodeName( a, "button" ) ) { - return w.set( a, b, c ); - } - a.value = b - }}}, 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 ( a, c, d ) { - var e, g, h, i = a.nodeType; - if ( !!a && i !== 3 && i !== 8 && i !== 2 ) { - h = i !== 1 || !f.isXMLDoc( a ), h && (c = f.propFix[c] || c, g = f.propHooks[c]); - return d !== b ? g && "set"in g && (e = g.set( a, d, c )) !== b ? e : a[c] = d : g && "get"in g && (e = g.get( a, c )) !== null ? e : a[c] - } - }, propHooks : {tabIndex : {get : function ( a ) { - var c = a.getAttributeNode( "tabindex" ); - return c && c.specified ? parseInt( c.value, 10 ) : s.test( a.nodeName ) || t.test( a.nodeName ) && a.href ? 0 : b - }}}} ), f.attrHooks.tabindex = f.propHooks.tabIndex, x = {get : function ( a, c ) { - var d, e = f.prop( a, c ); - return e === !0 || typeof e != "boolean" && (d = a.getAttributeNode( c )) && d.nodeValue !== !1 ? c.toLowerCase() : b - }, set : function ( a, b, c ) { - var d; - b === !1 ? f.removeAttr( a, c ) : (d = f.propFix[c] || c, d in a && (a[d] = !0), a.setAttribute( c, c.toLowerCase() )); - return c - }}, v || (y = {name : !0, id : !0}, w = f.valHooks.button = {get : function ( a, c ) { - var d; - d = a.getAttributeNode( c ); - return d && (y[c] ? d.nodeValue !== "" : d.specified) ? d.nodeValue : b - }, set : function ( a, b, d ) { - var e = a.getAttributeNode( d ); - e || (e = c.createAttribute( d ), a.setAttributeNode( e )); - return e.nodeValue = b + "" - }}, f.attrHooks.tabindex.set = w.set, f.each( ["width", "height"], function ( a, b ) { - f.attrHooks[b] = f.extend( f.attrHooks[b], {set : function ( a, c ) { - if ( c === "" ) { - a.setAttribute( b, "auto" ); - return c - } - }} ) - } ), f.attrHooks.contenteditable = {get : w.get, set : function ( a, b, c ) { - b === "" && (b = "false"), w.set( a, b, c ) - }}), f.support.hrefNormalized || f.each( ["href", "src", "width", "height"], function ( a, c ) { - f.attrHooks[c] = f.extend( f.attrHooks[c], {get : function ( a ) { - var d = a.getAttribute( c, 2 ); - return d === null ? b : d - }} ) - } ), f.support.style || (f.attrHooks.style = {get : function ( a ) { - return a.style.cssText.toLowerCase() || b - }, set : function ( a, b ) { - return a.style.cssText = "" + b - }}), f.support.optSelected || (f.propHooks.selected = f.extend( f.propHooks.selected, {get : function ( a ) { - var b = a.parentNode; - b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex); - return null - }} )), f.support.enctype || (f.propFix.enctype = "encoding"), f.support.checkOn || f.each( ["radio", "checkbox"], function () { - f.valHooks[this] = {get : function ( a ) { - return a.getAttribute( "value" ) === null ? "on" : a.value - }} - } ), f.each( ["radio", "checkbox"], function () { - f.valHooks[this] = f.extend( f.valHooks[this], {set : function ( a, b ) { - if ( f.isArray( b ) ) { - return a.checked = f.inArray( f( a ).val(), b ) >= 0 - } - }} ) - } ); - var z = /^(?:textarea|input|select)$/i, A = /^([^\.]*)?(?:\.(.+))?$/, B = /\bhover(\.\S+)?\b/, C = /^key/, D = /^(?:mouse|contextmenu)|click/, E = /^(?:focusinfocus|focusoutblur)$/, F = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, G = function ( a ) { - var b = F.exec( a ); - b && (b[1] = (b[1] || "").toLowerCase(), b[3] = b[3] && new RegExp( "(?:^|\\s)" + b[3] + "(?:\\s|$)" )); - return b - }, H = function ( a, b ) { - var c = a.attributes || {}; - return(!b[1] || a.nodeName.toLowerCase() === b[1]) && (!b[2] || (c.id || {}).value === b[2]) && (!b[3] || b[3].test( (c["class"] || {}).value )) - }, I = function ( a ) { - return f.event.special.hover ? a : a.replace( B, "mouseenter$1 mouseleave$1" ) - }; - f.event = {add : function ( a, c, d, e, g ) { - var h, i, j, k, l, m, n, o, p, q, r, s; - if ( !(a.nodeType === 3 || a.nodeType === 8 || !c || !d || !(h = f._data( a ))) ) { - d.handler && (p = d, d = p.handler), d.guid || (d.guid = f.guid++), j = h.events, j || (h.events = j = {}), i = h.handle, i || (h.handle = i = function ( a ) { - return typeof f != "undefined" && (!a || f.event.triggered !== a.type) ? f.event.dispatch.apply( i.elem, arguments ) : b - }, i.elem = a), c = f.trim( I( c ) ).split( " " ); - for ( k = 0; k < c.length; k++ ) { - l = A.exec( c[k] ) || [], m = l[1], n = (l[2] || "").split( "." ).sort(), s = f.event.special[m] || {}, m = (g ? s.delegateType : s.bindType) || m, s = f.event.special[m] || {}, o = f.extend( {type : m, origType : l[1], data : e, handler : d, guid : d.guid, selector : g, quick : G( g ), namespace : n.join( "." )}, p ), r = j[m]; - if ( !r ) { - r = j[m] = [], r.delegateCount = 0; - if ( !s.setup || s.setup.call( a, e, n, i ) === !1 ) { - a.addEventListener ? a.addEventListener( m, i, !1 ) : a.attachEvent && a.attachEvent( "on" + m, i ) - } - } - s.add && (s.add.call( a, o ), o.handler.guid || (o.handler.guid = d.guid)), g ? r.splice( r.delegateCount++, 0, o ) : r.push( o ), f.event.global[m] = !0 - } - a = null - } - }, global : {}, remove : function ( a, b, c, d, e ) { - var g = f.hasData( a ) && f._data( a ), h, i, j, k, l, m, n, o, p, q, r, s; - if ( !!g && !!(o = g.events) ) { - b = f.trim( I( b || "" ) ).split( " " ); - for ( h = 0; h < b.length; h++ ) { - i = A.exec( b[h] ) || [], j = k = i[1], l = i[2]; - if ( !j ) { - for ( j in o ) { - f.event.remove( a, j + b[h], c, d, !0 ); - } - continue - } - p = f.event.special[j] || {}, j = (d ? p.delegateType : p.bindType) || j, r = o[j] || [], m = r.length, l = l ? new RegExp( "(^|\\.)" + l.split( "." ).sort().join( "\\.(?:.*\\.)?" ) + "(\\.|$)" ) : null; - for ( n = 0; n < r.length; n++ ) { - s = r[n], (e || k === s.origType) && (!c || c.guid === s.guid) && (!l || l.test( s.namespace )) && (!d || d === s.selector || d === "**" && s.selector) && (r.splice( n--, 1 ), s.selector && r.delegateCount--, p.remove && p.remove.call( a, s )); - } - r.length === 0 && m !== r.length && ((!p.teardown || p.teardown.call( a, l ) === !1) && f.removeEvent( a, j, g.handle ), delete o[j]) - } - f.isEmptyObject( o ) && (q = g.handle, q && (q.elem = null), f.removeData( a, ["events", "handle"], !0 )) - } - }, customEvent : {getData : !0, setData : !0, changeData : !0}, trigger : function ( c, d, e, g ) { - if ( !e || e.nodeType !== 3 && e.nodeType !== 8 ) { - var h = c.type || c, i = [], j, k, l, m, n, o, p, q, r, s; - if ( E.test( h + f.event.triggered ) ) { - return; - } - h.indexOf( "!" ) >= 0 && (h = h.slice( 0, -1 ), k = !0), h.indexOf( "." ) >= 0 && (i = h.split( "." ), h = i.shift(), i.sort()); - if ( (!e || f.event.customEvent[h]) && !f.event.global[h] ) { - return; - } - c = typeof c == "object" ? c[f.expando] ? c : new f.Event( h, c ) : new f.Event( h ), c.type = h, c.isTrigger = !0, c.exclusive = k, c.namespace = i.join( "." ), c.namespace_re = c.namespace ? new RegExp( "(^|\\.)" + i.join( "\\.(?:.*\\.)?" ) + "(\\.|$)" ) : null, o = h.indexOf( ":" ) < 0 ? "on" + h : ""; - if ( !e ) { - j = f.cache; - for ( l in j ) { - j[l].events && j[l].events[h] && f.event.trigger( c, d, j[l].handle.elem, !0 ); - } - return - } - c.result = b, c.target || (c.target = e), d = d != null ? f.makeArray( d ) : [], d.unshift( c ), p = f.event.special[h] || {}; - if ( p.trigger && p.trigger.apply( e, d ) === !1 ) { - return; - } - r = [ - [e, p.bindType || h] - ]; - if ( !g && !p.noBubble && !f.isWindow( e ) ) { - s = p.delegateType || h, m = E.test( s + h ) ? e : e.parentNode, n = null; - for ( ; m; m = m.parentNode ) { - r.push( [m, s] ), n = m; - } - n && n === e.ownerDocument && r.push( [n.defaultView || n.parentWindow || a, s] ) - } - for ( l = 0; l < r.length && !c.isPropagationStopped(); l++ ) { - m = r[l][0], c.type = r[l][1], q = (f._data( m, "events" ) || {})[c.type] && f._data( m, "handle" ), q && q.apply( m, d ), q = o && m[o], q && f.acceptData( m ) && q.apply( m, d ) === !1 && c.preventDefault(); - } - c.type = h, !g && !c.isDefaultPrevented() && (!p._default || p._default.apply( e.ownerDocument, d ) === !1) && (h !== "click" || !f.nodeName( e, "a" )) && f.acceptData( e ) && o && e[h] && (h !== "focus" && h !== "blur" || c.target.offsetWidth !== 0) && !f.isWindow( e ) && (n = e[o], n && (e[o] = null), f.event.triggered = h, e[h](), f.event.triggered = b, n && (e[o] = n)); - return c.result - } - }, dispatch : function ( c ) { - c = f.event.fix( c || a.event ); - var d = (f._data( this, "events" ) || {})[c.type] || [], e = d.delegateCount, g = [].slice.call( arguments, 0 ), h = !c.exclusive && !c.namespace, i = [], j, k, l, m, n, o, p, q, r, s, t; - g[0] = c, c.delegateTarget = this; - if ( e && !c.target.disabled && (!c.button || c.type !== "click") ) { - m = f( this ), m.context = this.ownerDocument || this; - for ( l = c.target; l != this; l = l.parentNode || this ) { - o = {}, q = [], m[0] = l; - for ( j = 0; j < e; j++ ) { - r = d[j], s = r.selector, o[s] === b && (o[s] = r.quick ? H( l, r.quick ) : m.is( s )), o[s] && q.push( r ); - } - q.length && i.push( {elem : l, matches : q} ) - } - } - d.length > e && i.push( {elem : this, matches : d.slice( e )} ); - for ( j = 0; j < i.length && !c.isPropagationStopped(); j++ ) { - p = i[j], c.currentTarget = p.elem; - for ( k = 0; k < p.matches.length && !c.isImmediatePropagationStopped(); k++ ) { - r = p.matches[k]; - if ( h || !c.namespace && !r.namespace || c.namespace_re && c.namespace_re.test( r.namespace ) ) { - c.data = r.data, c.handleObj = r, n = ((f.event.special[r.origType] || {}).handle || r.handler).apply( p.elem, g ), n !== b && (c.result = n, n === !1 && (c.preventDefault(), c.stopPropagation())) - } - } - } - return c.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 ( a, b ) { - a.which == null && (a.which = b.charCode != null ? b.charCode : b.keyCode); - return a - }}, mouseHooks : {props : "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split( " " ), filter : function ( a, d ) { - var e, f, g, h = d.button, i = d.fromElement; - a.pageX == null && d.clientX != null && (e = a.target.ownerDocument || c, f = e.documentElement, g = e.body, a.pageX = d.clientX + (f && f.scrollLeft || g && g.scrollLeft || 0) - (f && f.clientLeft || g && g.clientLeft || 0), a.pageY = d.clientY + (f && f.scrollTop || g && g.scrollTop || 0) - (f && f.clientTop || g && g.clientTop || 0)), !a.relatedTarget && i && (a.relatedTarget = i === a.target ? d.toElement : i), !a.which && h !== b && (a.which = h & 1 ? 1 : h & 2 ? 3 : h & 4 ? 2 : 0); - return a - }}, fix : function ( a ) { - if ( a[f.expando] ) { - return a; - } - var d, e, g = a, h = f.event.fixHooks[a.type] || {}, i = h.props ? this.props.concat( h.props ) : this.props; - a = f.Event( g ); - for ( d = i.length; d; ) { - e = i[--d], a[e] = g[e]; - } - a.target || (a.target = g.srcElement || c), a.target.nodeType === 3 && (a.target = a.target.parentNode), a.metaKey === b && (a.metaKey = a.ctrlKey); - return h.filter ? h.filter( a, g ) : a - }, special : {ready : {setup : f.bindReady}, load : {noBubble : !0}, focus : {delegateType : "focusin"}, blur : {delegateType : "focusout"}, beforeunload : {setup : function ( a, b, c ) { - f.isWindow( this ) && (this.onbeforeunload = c) - }, teardown : function ( a, b ) { - this.onbeforeunload === b && (this.onbeforeunload = null) - }}}, simulate : function ( a, b, c, d ) { - var e = f.extend( new f.Event, c, {type : a, isSimulated : !0, originalEvent : {}} ); - d ? f.event.trigger( e, null, b ) : f.event.dispatch.call( b, e ), e.isDefaultPrevented() && c.preventDefault() - }}, f.event.handle = f.event.dispatch, f.removeEvent = c.removeEventListener ? function ( a, b, c ) { - a.removeEventListener && a.removeEventListener( b, c, !1 ) - } : function ( a, b, c ) { - a.detachEvent && a.detachEvent( "on" + b, c ) - }, f.Event = function ( a, b ) { - if ( !(this instanceof f.Event) ) { - return new f.Event( a, b ); - } - a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault() ? K : J) : this.type = a, b && f.extend( this, b ), this.timeStamp = a && a.timeStamp || f.now(), this[f.expando] = !0 - }, f.Event.prototype = {preventDefault : function () { - this.isDefaultPrevented = K; - var a = this.originalEvent; - !a || (a.preventDefault ? a.preventDefault() : a.returnValue = !1) - }, stopPropagation : function () { - this.isPropagationStopped = K; - var a = this.originalEvent; - !a || (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0) - }, stopImmediatePropagation : function () { - this.isImmediatePropagationStopped = K, this.stopPropagation() - }, isDefaultPrevented : J, isPropagationStopped : J, isImmediatePropagationStopped : J}, f.each( {mouseenter : "mouseover", mouseleave : "mouseout"}, function ( a, b ) { - f.event.special[a] = {delegateType : b, bindType : b, handle : function ( a ) { - var c = this, d = a.relatedTarget, e = a.handleObj, g = e.selector, h; - if ( !d || d !== c && !f.contains( c, d ) ) { - a.type = e.origType, h = e.handler.apply( this, arguments ), a.type = b; - } - return h - }} - } ), f.support.submitBubbles || (f.event.special.submit = {setup : function () { - if ( f.nodeName( this, "form" ) ) { - return!1; - } - f.event.add( this, "click._submit keypress._submit", function ( a ) { - var c = a.target, d = f.nodeName( c, "input" ) || f.nodeName( c, "button" ) ? c.form : b; - d && !d._submit_attached && (f.event.add( d, "submit._submit", function ( a ) { - this.parentNode && !a.isTrigger && f.event.simulate( "submit", this.parentNode, a, !0 ) - } ), d._submit_attached = !0) - } ) - }, teardown : function () { - if ( f.nodeName( this, "form" ) ) { - return!1; - } - f.event.remove( this, "._submit" ) - }}), f.support.changeBubbles || (f.event.special.change = {setup : function () { - if ( z.test( this.nodeName ) ) { - if ( this.type === "checkbox" || this.type === "radio" ) { - f.event.add( this, "propertychange._change", function ( a ) { - a.originalEvent.propertyName === "checked" && (this._just_changed = !0) - } ), f.event.add( this, "click._change", function ( a ) { - this._just_changed && !a.isTrigger && (this._just_changed = !1, f.event.simulate( "change", this, a, !0 )) - } ); - } - return!1 - } - f.event.add( this, "beforeactivate._change", function ( a ) { - var b = a.target; - z.test( b.nodeName ) && !b._change_attached && (f.event.add( b, "change._change", function ( a ) { - this.parentNode && !a.isSimulated && !a.isTrigger && f.event.simulate( "change", this.parentNode, a, !0 ) - } ), b._change_attached = !0) - } ) - }, handle : function ( a ) { - var b = a.target; - if ( this !== b || a.isSimulated || a.isTrigger || b.type !== "radio" && b.type !== "checkbox" ) { - return a.handleObj.handler.apply( this, arguments ) - } - }, teardown : function () { - f.event.remove( this, "._change" ); - return z.test( this.nodeName ) - }}), f.support.focusinBubbles || f.each( {focus : "focusin", blur : "focusout"}, function ( a, b ) { - var d = 0, e = function ( a ) { - f.event.simulate( b, a.target, f.event.fix( a ), !0 ) - }; - f.event.special[b] = {setup : function () { - d++ === 0 && c.addEventListener( a, e, !0 ) - }, teardown : function () { - --d === 0 && c.removeEventListener( a, e, !0 ) - }} - } ), f.fn.extend( {on : function ( a, c, d, e, g ) { - var h, i; - if ( typeof a == "object" ) { - typeof c != "string" && (d = c, c = b); - for ( i in a ) { - this.on( i, c, d, a[i], g ); - } - return this - } - d == null && e == null ? (e = c, d = c = b) : e == null && (typeof c == "string" ? (e = d, d = b) : (e = d, d = c, c = b)); - if ( e === !1 ) { - e = J; - } else if ( !e ) { - return this; - } - g === 1 && (h = e, e = function ( a ) { - f().off( a ); - return h.apply( this, arguments ) - }, e.guid = h.guid || (h.guid = f.guid++)); - return this.each( function () { - f.event.add( this, a, e, d, c ) - } ) - }, one : function ( a, b, c, d ) { - return this.on.call( this, a, b, c, d, 1 ) - }, off : function ( a, c, d ) { - if ( a && a.preventDefault && a.handleObj ) { - var e = a.handleObj; - f( a.delegateTarget ).off( e.namespace ? e.type + "." + e.namespace : e.type, e.selector, e.handler ); - return this - } - if ( typeof a == "object" ) { - for ( var g in a ) { - this.off( g, c, a[g] ); - } - return this - } - if ( c === !1 || typeof c == "function" ) { - d = c, c = b; - } - d === !1 && (d = J); - return this.each( function () { - f.event.remove( this, a, d, c ) - } ) - }, bind : function ( a, b, c ) { - return this.on( a, null, b, c ) - }, unbind : function ( a, b ) { - return this.off( a, null, b ) - }, live : function ( a, b, c ) { - f( this.context ).on( a, this.selector, b, c ); - return this - }, die : function ( a, b ) { - f( this.context ).off( a, this.selector || "**", b ); - return this - }, delegate : function ( a, b, c, d ) { - return this.on( b, a, c, d ) - }, undelegate : function ( a, b, c ) { - return arguments.length == 1 ? this.off( a, "**" ) : this.off( b, a, c ) - }, trigger : function ( a, b ) { - return this.each( function () { - f.event.trigger( a, b, this ) - } ) - }, triggerHandler : function ( a, b ) { - if ( this[0] ) { - return f.event.trigger( a, b, this[0], !0 ) - } - }, toggle : function ( a ) { - var b = arguments, c = a.guid || f.guid++, d = 0, e = function ( c ) { - var e = (f._data( this, "lastToggle" + a.guid ) || 0) % d; - f._data( this, "lastToggle" + a.guid, e + 1 ), c.preventDefault(); - return b[e].apply( this, arguments ) || !1 - }; - e.guid = c; - while ( d < b.length ) { - b[d++].guid = c; - } - return this.click( e ) - }, hover : function ( a, b ) { - return this.mouseenter( a ).mouseleave( b || a ) - }} ), f.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 ( a, b ) { - f.fn[b] = function ( a, c ) { - c == null && (c = a, a = null); - return arguments.length > 0 ? this.on( b, null, a, c ) : this.trigger( b ) - }, f.attrFn && (f.attrFn[b] = !0), C.test( b ) && (f.event.fixHooks[b] = f.event.keyHooks), D.test( b ) && (f.event.fixHooks[b] = f.event.mouseHooks) - } ), function () { - function x( a, b, c, e, f, g ) { - for ( var h = 0, i = e.length; h < i; h++ ) { - var j = e[h]; - if ( j ) { - var k = !1; - j = j[a]; - while ( j ) { - if ( j[d] === c ) { - k = e[j.sizset]; - break - } - if ( j.nodeType === 1 ) { - g || (j[d] = c, j.sizset = h); - if ( typeof b != "string" ) { - if ( j === b ) { - k = !0; - break - } - } else if ( m.filter( b, [j] ).length > 0 ) { - k = j; - break - } - } - j = j[a] - } - e[h] = k - } - } - } - - function w( a, b, c, e, f, g ) { - for ( var h = 0, i = e.length; h < i; h++ ) { - var j = e[h]; - if ( j ) { - var k = !1; - j = j[a]; - while ( j ) { - if ( j[d] === c ) { - k = e[j.sizset]; - break - } - j.nodeType === 1 && !g && (j[d] = c, j.sizset = h); - if ( j.nodeName.toLowerCase() === b ) { - k = j; - break - } - j = j[a] - } - e[h] = k - } - } - } - - var a = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, d = "sizcache" + (Math.random() + "").replace( ".", "" ), e = 0, g = Object.prototype.toString, h = !1, i = !0, j = /\\/g, k = /\r\n/g, l = /\W/; - [0, 0].sort( function () { - i = !1; - return 0 - } ); - var m = function ( b, d, e, f ) { - e = e || [], d = d || c; - var h = d; - if ( d.nodeType !== 1 && d.nodeType !== 9 ) { - return[]; - } - if ( !b || typeof b != "string" ) { - return e; - } - var i, j, k, l, n, q, r, t, u = !0, v = m.isXML( d ), w = [], x = b; - do { - a.exec( "" ), i = a.exec( x ); - if ( i ) { - x = i[3], w.push( i[1] ); - if ( i[2] ) { - l = i[3]; - break - } - } - } while ( i ); - if ( w.length > 1 && p.exec( b ) ) { - if ( w.length === 2 && o.relative[w[0]] ) { - j = y( w[0] + w[1], d, f ); - } else { - j = o.relative[w[0]] ? [d] : m( w.shift(), d ); - while ( w.length ) { - b = w.shift(), o.relative[b] && (b += w.shift()), j = y( b, j, f ) - } - } - } else { - !f && w.length > 1 && d.nodeType === 9 && !v && o.match.ID.test( w[0] ) && !o.match.ID.test( w[w.length - 1] ) && (n = m.find( w.shift(), d, v ), d = n.expr ? m.filter( n.expr, n.set )[0] : n.set[0]); - if ( d ) { - n = f ? {expr : w.pop(), set : s( f )} : m.find( w.pop(), w.length === 1 && (w[0] === "~" || w[0] === "+") && d.parentNode ? d.parentNode : d, v ), j = n.expr ? m.filter( n.expr, n.set ) : n.set, w.length > 0 ? k = s( j ) : u = !1; - while ( w.length ) { - q = w.pop(), r = q, o.relative[q] ? r = w.pop() : q = "", r == null && (r = d), o.relative[q]( k, r, v ) - } - } else { - k = w = [] - } - } - k || (k = j), k || m.error( q || b ); - if ( g.call( k ) === "[object Array]" ) { - if ( !u ) { - e.push.apply( e, k ); - } else if ( d && d.nodeType === 1 ) { - for ( t = 0; k[t] != null; t++ ) { - k[t] && (k[t] === !0 || k[t].nodeType === 1 && m.contains( d, k[t] )) && e.push( j[t] ); - } - } else { - for ( t = 0; k[t] != null; t++ ) { - k[t] && k[t].nodeType === 1 && e.push( j[t] ); - } - } - } else { - s( k, e ); - } - l && (m( l, h, e, f ), m.uniqueSort( e )); - return e - }; - m.uniqueSort = function ( a ) { - if ( u ) { - h = i, a.sort( u ); - if ( h ) { - for ( var b = 1; b < a.length; b++ ) { - a[b] === a[b - 1] && a.splice( b--, 1 ) - } - } - } - return a - }, m.matches = function ( a, b ) { - return m( a, null, null, b ) - }, m.matchesSelector = function ( a, b ) { - return m( b, null, null, [a] ).length > 0 - }, m.find = function ( a, b, c ) { - var d, e, f, g, h, i; - if ( !a ) { - return[]; - } - for ( e = 0, f = o.order.length; e < f; e++ ) { - h = o.order[e]; - if ( g = o.leftMatch[h].exec( a ) ) { - i = g[1], g.splice( 1, 1 ); - if ( i.substr( i.length - 1 ) !== "\\" ) { - g[1] = (g[1] || "").replace( j, "" ), d = o.find[h]( g, b, c ); - if ( d != null ) { - a = a.replace( o.match[h], "" ); - break - } - } - } - } - d || (d = typeof b.getElementsByTagName != "undefined" ? b.getElementsByTagName( "*" ) : []); - return{set : d, expr : a} - }, m.filter = function ( a, c, d, e ) { - var f, g, h, i, j, k, l, n, p, q = a, r = [], s = c, t = c && c[0] && m.isXML( c[0] ); - while ( a && c.length ) { - for ( h in o.filter ) { - if ( (f = o.leftMatch[h].exec( a )) != null && f[2] ) { - k = o.filter[h], l = f[1], g = !1, f.splice( 1, 1 ); - if ( l.substr( l.length - 1 ) === "\\" ) { - continue; - } - s === r && (r = []); - if ( o.preFilter[h] ) { - f = o.preFilter[h]( f, s, d, r, e, t ); - if ( !f ) { - g = i = !0; - } else if ( f === !0 ) { - continue - } - } - if ( f ) { - for ( n = 0; (j = s[n]) != null; n++ ) { - j && (i = k( j, f, n, s ), p = e ^ i, d && i != null ? p ? g = !0 : s[n] = !1 : p && (r.push( j ), g = !0)); - } - } - if ( i !== b ) { - d || (s = r), a = a.replace( o.match[h], "" ); - if ( !g ) { - return[]; - } - break - } - } - } - if ( a === q ) { - if ( g == null ) { - m.error( a ); - } else { - break; - } - } - q = a - } - return s - }, m.error = function ( a ) { - throw new Error( "Syntax error, unrecognized expression: " + a ) - }; - var n = m.getText = function ( a ) { - var b, c, d = a.nodeType, e = ""; - if ( d ) { - if ( d === 1 || d === 9 ) { - if ( typeof a.textContent == "string" ) { - return a.textContent; - } - if ( typeof a.innerText == "string" ) { - return a.innerText.replace( k, "" ); - } - for ( a = a.firstChild; a; a = a.nextSibling ) { - e += n( a ) - } - } else if ( d === 3 || d === 4 ) { - return a.nodeValue - } - } else { - for ( b = 0; c = a[b]; b++ ) { - c.nodeType !== 8 && (e += n( c )); - } - } - return e - }, o = m.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 ( a ) { - return a.getAttribute( "href" ) - }, type : function ( a ) { - return a.getAttribute( "type" ) - }}, relative : {"+" : function ( a, b ) { - var c = typeof b == "string", d = c && !l.test( b ), e = c && !d; - d && (b = b.toLowerCase()); - for ( var f = 0, g = a.length, h; f < g; f++ ) { - if ( h = a[f] ) { - while ( (h = h.previousSibling) && h.nodeType !== 1 ) { - ; - } - a[f] = e || h && h.nodeName.toLowerCase() === b ? h || !1 : h === b - } - } - e && m.filter( b, a, !0 ) - }, ">" : function ( a, b ) { - var c, d = typeof b == "string", e = 0, f = a.length; - if ( d && !l.test( b ) ) { - b = b.toLowerCase(); - for ( ; e < f; e++ ) { - c = a[e]; - if ( c ) { - var g = c.parentNode; - a[e] = g.nodeName.toLowerCase() === b ? g : !1 - } - } - } else { - for ( ; e < f; e++ ) { - c = a[e], c && (a[e] = d ? c.parentNode : c.parentNode === b); - } - d && m.filter( b, a, !0 ) - } - }, "" : function ( a, b, c ) { - var d, f = e++, g = x; - typeof b == "string" && !l.test( b ) && (b = b.toLowerCase(), d = b, g = w), g( "parentNode", b, f, a, d, c ) - }, "~" : function ( a, b, c ) { - var d, f = e++, g = x; - typeof b == "string" && !l.test( b ) && (b = b.toLowerCase(), d = b, g = w), g( "previousSibling", b, f, a, d, c ) - }}, find : {ID : function ( a, b, c ) { - if ( typeof b.getElementById != "undefined" && !c ) { - var d = b.getElementById( a[1] ); - return d && d.parentNode ? [d] : [] - } - }, NAME : function ( a, b ) { - if ( typeof b.getElementsByName != "undefined" ) { - var c = [], d = b.getElementsByName( a[1] ); - for ( var e = 0, f = d.length; e < f; e++ ) { - d[e].getAttribute( "name" ) === a[1] && c.push( d[e] ); - } - return c.length === 0 ? null : c - } - }, TAG : function ( a, b ) { - if ( typeof b.getElementsByTagName != "undefined" ) { - return b.getElementsByTagName( a[1] ) - } - }}, preFilter : {CLASS : function ( a, b, c, d, e, f ) { - a = " " + a[1].replace( j, "" ) + " "; - if ( f ) { - return a; - } - for ( var g = 0, h; (h = b[g]) != null; g++ ) { - h && (e ^ (h.className && (" " + h.className + " ").replace( /[\t\n\r]/g, " " ).indexOf( a ) >= 0) ? c || d.push( h ) : c && (b[g] = !1)); - } - return!1 - }, ID : function ( a ) { - return a[1].replace( j, "" ) - }, TAG : function ( a, b ) { - return a[1].replace( j, "" ).toLowerCase() - }, CHILD : function ( a ) { - if ( a[1] === "nth" ) { - a[2] || m.error( a[0] ), a[2] = a[2].replace( /^\+|\s*/g, "" ); - var b = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( a[2] === "even" && "2n" || a[2] === "odd" && "2n+1" || !/\D/.test( a[2] ) && "0n+" + a[2] || a[2] ); - a[2] = b[1] + (b[2] || 1) - 0, a[3] = b[3] - 0 - } else { - a[2] && m.error( a[0] ); - } - a[0] = e++; - return a - }, ATTR : function ( a, b, c, d, e, f ) { - var g = a[1] = a[1].replace( j, "" ); - !f && o.attrMap[g] && (a[1] = o.attrMap[g]), a[4] = (a[4] || a[5] || "").replace( j, "" ), a[2] === "~=" && (a[4] = " " + a[4] + " "); - return a - }, PSEUDO : function ( b, c, d, e, f ) { - if ( b[1] === "not" ) { - if ( (a.exec( b[3] ) || "").length > 1 || /^\w/.test( b[3] ) ) { - b[3] = m( b[3], null, null, c ); - } else { - var g = m.filter( b[3], c, d, !0 ^ f ); - d || e.push.apply( e, g ); - return!1 - } - } else if ( o.match.POS.test( b[0] ) || o.match.CHILD.test( b[0] ) ) { - return!0; - } - return b - }, POS : function ( a ) { - a.unshift( !0 ); - return a - }}, filters : {enabled : function ( a ) { - return a.disabled === !1 && a.type !== "hidden" - }, disabled : function ( a ) { - return a.disabled === !0 - }, checked : function ( a ) { - return a.checked === !0 - }, selected : function ( a ) { - a.parentNode && a.parentNode.selectedIndex; - return a.selected === !0 - }, parent : function ( a ) { - return!!a.firstChild - }, empty : function ( a ) { - return!a.firstChild - }, has : function ( a, b, c ) { - return!!m( c[3], a ).length - }, header : function ( a ) { - return/h\d/i.test( a.nodeName ) - }, text : function ( a ) { - var b = a.getAttribute( "type" ), c = a.type; - return a.nodeName.toLowerCase() === "input" && "text" === c && (b === c || b === null) - }, radio : function ( a ) { - return a.nodeName.toLowerCase() === "input" && "radio" === a.type - }, checkbox : function ( a ) { - return a.nodeName.toLowerCase() === "input" && "checkbox" === a.type - }, file : function ( a ) { - return a.nodeName.toLowerCase() === "input" && "file" === a.type - }, password : function ( a ) { - return a.nodeName.toLowerCase() === "input" && "password" === a.type - }, submit : function ( a ) { - var b = a.nodeName.toLowerCase(); - return(b === "input" || b === "button") && "submit" === a.type - }, image : function ( a ) { - return a.nodeName.toLowerCase() === "input" && "image" === a.type - }, reset : function ( a ) { - var b = a.nodeName.toLowerCase(); - return(b === "input" || b === "button") && "reset" === a.type - }, button : function ( a ) { - var b = a.nodeName.toLowerCase(); - return b === "input" && "button" === a.type || b === "button" - }, input : function ( a ) { - return/input|select|textarea|button/i.test( a.nodeName ) - }, focus : function ( a ) { - return a === a.ownerDocument.activeElement - }}, setFilters : {first : function ( a, b ) { - return b === 0 - }, last : function ( a, b, c, d ) { - return b === d.length - 1 - }, even : function ( a, b ) { - return b % 2 === 0 - }, odd : function ( a, b ) { - return b % 2 === 1 - }, lt : function ( a, b, c ) { - return b < c[3] - 0 - }, gt : function ( a, b, c ) { - return b > c[3] - 0 - }, nth : function ( a, b, c ) { - return c[3] - 0 === b - }, eq : function ( a, b, c ) { - return c[3] - 0 === b - }}, filter : {PSEUDO : function ( a, b, c, d ) { - var e = b[1], f = o.filters[e]; - if ( f ) { - return f( a, c, b, d ); - } - if ( e === "contains" ) { - return(a.textContent || a.innerText || n( [a] ) || "").indexOf( b[3] ) >= 0; - } - if ( e === "not" ) { - var g = b[3]; - for ( var h = 0, i = g.length; h < i; h++ ) { - if ( g[h] === a ) { - return!1; - } - } - return!0 - } - m.error( e ) - }, CHILD : function ( a, b ) { - var c, e, f, g, h, i, j, k = b[1], l = a; - switch ( k ) { - case"only": - case"first": - while ( l = l.previousSibling ) { - if ( l.nodeType === 1 ) { - return!1; - } - } - if ( k === "first" ) { - return!0; - } - l = a; - case"last": - while ( l = l.nextSibling ) { - if ( l.nodeType === 1 ) { - return!1; - } - } - return!0; - case"nth": - c = b[2], e = b[3]; - if ( c === 1 && e === 0 ) { - return!0; - } - f = b[0], g = a.parentNode; - if ( g && (g[d] !== f || !a.nodeIndex) ) { - i = 0; - for ( l = g.firstChild; l; l = l.nextSibling ) { - l.nodeType === 1 && (l.nodeIndex = ++i); - } - g[d] = f - } - j = a.nodeIndex - e; - return c === 0 ? j === 0 : j % c === 0 && j / c >= 0 - } - }, ID : function ( a, b ) { - return a.nodeType === 1 && a.getAttribute( "id" ) === b - }, TAG : function ( a, b ) { - return b === "*" && a.nodeType === 1 || !!a.nodeName && a.nodeName.toLowerCase() === b - }, CLASS : function ( a, b ) { - return(" " + (a.className || a.getAttribute( "class" )) + " ").indexOf( b ) > -1 - }, ATTR : function ( a, b ) { - var c = b[1], d = m.attr ? m.attr( a, c ) : o.attrHandle[c] ? o.attrHandle[c]( a ) : a[c] != null ? a[c] : a.getAttribute( c ), e = d + "", f = b[2], g = b[4]; - return d == null ? f === "!=" : !f && m.attr ? d != null : f === "=" ? e === g : f === "*=" ? e.indexOf( g ) >= 0 : f === "~=" ? (" " + e + " ").indexOf( g ) >= 0 : g ? f === "!=" ? e !== g : f === "^=" ? e.indexOf( g ) === 0 : f === "$=" ? e.substr( e.length - g.length ) === g : f === "|=" ? e === g || e.substr( 0, g.length + 1 ) === g + "-" : !1 : e && d !== !1 - }, POS : function ( a, b, c, d ) { - var e = b[2], f = o.setFilters[e]; - if ( f ) { - return f( a, c, b, d ) - } - }}}, p = o.match.POS, q = function ( a, b ) { - return"\\" + (b - 0 + 1) - }; - for ( var r in o.match ) { - o.match[r] = new RegExp( o.match[r].source + /(?![^\[]*\])(?![^\(]*\))/.source ), o.leftMatch[r] = new RegExp( /(^(?:.|\r|\n)*?)/.source + o.match[r].source.replace( /\\(\d+)/g, q ) ); - } - var s = function ( a, b ) { - a = Array.prototype.slice.call( a, 0 ); - if ( b ) { - b.push.apply( b, a ); - return b - } - return a - }; - try { - Array.prototype.slice.call( c.documentElement.childNodes, 0 )[0].nodeType - } catch ( t ) { - s = function ( a, b ) { - var c = 0, d = b || []; - if ( g.call( a ) === "[object Array]" ) { - Array.prototype.push.apply( d, a ); - } else if ( typeof a.length == "number" ) { - for ( var e = a.length; c < e; c++ ) { - d.push( a[c] ); - } - } else { - for ( ; a[c]; c++ ) { - d.push( a[c] ); - } - } - return d - } - } - var u, v; - c.documentElement.compareDocumentPosition ? u = function ( a, b ) { - if ( a === b ) { - h = !0; - return 0 - } - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - return a.compareDocumentPosition( b ) & 4 ? -1 : 1 - } : (u = function ( a, b ) { - if ( a === b ) { - h = !0; - return 0 - } - if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - var c, d, e = [], f = [], g = a.parentNode, i = b.parentNode, j = g; - if ( g === i ) { - return v( a, b ); - } - if ( !g ) { - return-1; - } - if ( !i ) { - return 1; - } - while ( j ) { - e.unshift( j ), j = j.parentNode; - } - j = i; - while ( j ) { - f.unshift( j ), j = j.parentNode; - } - c = e.length, d = f.length; - for ( var k = 0; k < c && k < d; k++ ) { - if ( e[k] !== f[k] ) { - return v( e[k], f[k] ); - } - } - return k === c ? v( a, f[k], -1 ) : v( e[k], b, 1 ) - }, v = function ( a, b, c ) { - if ( a === b ) { - return c; - } - var d = a.nextSibling; - while ( d ) { - if ( d === b ) { - return-1; - } - d = d.nextSibling - } - return 1 - }), function () { - var a = c.createElement( "div" ), d = "script" + (new Date).getTime(), e = c.documentElement; - a.innerHTML = "", e.insertBefore( a, e.firstChild ), c.getElementById( d ) && (o.find.ID = function ( a, c, d ) { - if ( typeof c.getElementById != "undefined" && !d ) { - var e = c.getElementById( a[1] ); - return e ? e.id === a[1] || typeof e.getAttributeNode != "undefined" && e.getAttributeNode( "id" ).nodeValue === a[1] ? [e] : b : [] - } - }, o.filter.ID = function ( a, b ) { - var c = typeof a.getAttributeNode != "undefined" && a.getAttributeNode( "id" ); - return a.nodeType === 1 && c && c.nodeValue === b - }), e.removeChild( a ), e = a = null - }(), function () { - var a = c.createElement( "div" ); - a.appendChild( c.createComment( "" ) ), a.getElementsByTagName( "*" ).length > 0 && (o.find.TAG = function ( a, b ) { - var c = b.getElementsByTagName( a[1] ); - if ( a[1] === "*" ) { - var d = []; - for ( var e = 0; c[e]; e++ ) { - c[e].nodeType === 1 && d.push( c[e] ); - } - c = d - } - return c - }), a.innerHTML = "", a.firstChild && typeof a.firstChild.getAttribute != "undefined" && a.firstChild.getAttribute( "href" ) !== "#" && (o.attrHandle.href = function ( a ) { - return a.getAttribute( "href", 2 ) - }), a = null - }(), c.querySelectorAll && function () { - var a = m, b = c.createElement( "div" ), d = "__sizzle__"; - b.innerHTML = "

"; - if ( !b.querySelectorAll || b.querySelectorAll( ".TEST" ).length !== 0 ) { - m = function ( b, e, f, g ) { - e = e || c; - if ( !g && !m.isXML( e ) ) { - var h = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( b ); - if ( h && (e.nodeType === 1 || e.nodeType === 9) ) { - if ( h[1] ) { - return s( e.getElementsByTagName( b ), f ); - } - if ( h[2] && o.find.CLASS && e.getElementsByClassName ) { - return s( e.getElementsByClassName( h[2] ), f ) - } - } - if ( e.nodeType === 9 ) { - if ( b === "body" && e.body ) { - return s( [e.body], f ); - } - if ( h && h[3] ) { - var i = e.getElementById( h[3] ); - if ( !i || !i.parentNode ) { - return s( [], f ); - } - if ( i.id === h[3] ) { - return s( [i], f ) - } - } - try { - return s( e.querySelectorAll( b ), f ) - } catch ( j ) { - } - } else if ( e.nodeType === 1 && e.nodeName.toLowerCase() !== "object" ) { - var k = e, l = e.getAttribute( "id" ), n = l || d, p = e.parentNode, q = /^\s*[+~]/.test( b ); - l ? n = n.replace( /'/g, "\\$&" ) : e.setAttribute( "id", n ), q && p && (e = e.parentNode); - try { - if ( !q || p ) { - return s( e.querySelectorAll( "[id='" + n + "'] " + b ), f ) - } - } catch ( r ) { - } finally { - l || k.removeAttribute( "id" ) - } - } - } - return a( b, e, f, g ) - }; - for ( var e in a ) { - m[e] = a[e]; - } - b = null - } - }(), function () { - var a = c.documentElement, b = a.matchesSelector || a.mozMatchesSelector || a.webkitMatchesSelector || a.msMatchesSelector; - if ( b ) { - var d = !b.call( c.createElement( "div" ), "div" ), e = !1; - try { - b.call( c.documentElement, "[test!='']:sizzle" ) - } catch ( f ) { - e = !0 - } - m.matchesSelector = function ( a, c ) { - c = c.replace( /\=\s*([^'"\]]*)\s*\]/g, "='$1']" ); - if ( !m.isXML( a ) ) { - try { - if ( e || !o.match.PSEUDO.test( c ) && !/!=/.test( c ) ) { - var f = b.call( a, c ); - if ( f || !d || a.document && a.document.nodeType !== 11 ) { - return f - } - } - } catch ( g ) { - } - } - return m( c, null, null, [a] ).length > 0 - } - } - }(), function () { - var a = c.createElement( "div" ); - a.innerHTML = "
"; - if ( !!a.getElementsByClassName && a.getElementsByClassName( "e" ).length !== 0 ) { - a.lastChild.className = "e"; - if ( a.getElementsByClassName( "e" ).length === 1 ) { - return; - } - o.order.splice( 1, 0, "CLASS" ), o.find.CLASS = function ( a, b, c ) { - if ( typeof b.getElementsByClassName != "undefined" && !c ) { - return b.getElementsByClassName( a[1] ) - } - }, a = null - } - }(), c.documentElement.contains ? m.contains = function ( a, b ) { - return a !== b && (a.contains ? a.contains( b ) : !0) - } : c.documentElement.compareDocumentPosition ? m.contains = function ( a, b ) { - return!!(a.compareDocumentPosition( b ) & 16) - } : m.contains = function () { - return!1 - }, m.isXML = function ( a ) { - var b = (a ? a.ownerDocument || a : 0).documentElement; - return b ? b.nodeName !== "HTML" : !1 - }; - var y = function ( a, b, c ) { - var d, e = [], f = "", g = b.nodeType ? [b] : b; - while ( d = o.match.PSEUDO.exec( a ) ) { - f += d[0], a = a.replace( o.match.PSEUDO, "" ); - } - a = o.relative[a] ? a + "*" : a; - for ( var h = 0, i = g.length; h < i; h++ ) { - m( a, g[h], e, c ); - } - return m.filter( f, e ) - }; - m.attr = f.attr, m.selectors.attrMap = {}, f.find = m, f.expr = m.selectors, f.expr[":"] = f.expr.filters, f.unique = m.uniqueSort, f.text = m.getText, f.isXMLDoc = m.isXML, f.contains = m.contains - }(); - var L = /Until$/, M = /^(?:parents|prevUntil|prevAll)/, N = /,/, O = /^.[^:#\[\.,]*$/, P = Array.prototype.slice, Q = f.expr.match.POS, R = {children : !0, contents : !0, next : !0, prev : !0}; - f.fn.extend( {find : function ( a ) { - var b = this, c, d; - if ( typeof a != "string" ) { - return f( a ).filter( function () { - for ( c = 0, d = b.length; c < d; c++ ) { - if ( f.contains( b[c], this ) ) { - return!0 - } - } - } ); - } - var e = this.pushStack( "", "find", a ), g, h, i; - for ( c = 0, d = this.length; c < d; c++ ) { - g = e.length, f.find( a, this[c], e ); - if ( c > 0 ) { - for ( h = g; h < e.length; h++ ) { - for ( i = 0; i < g; i++ ) { - if ( e[i] === e[h] ) { - e.splice( h--, 1 ); - break - } - } - } - } - } - return e - }, has : function ( a ) { - var b = f( a ); - return this.filter( function () { - for ( var a = 0, c = b.length; a < c; a++ ) { - if ( f.contains( this, b[a] ) ) { - return!0 - } - } - } ) - }, not : function ( a ) { - return this.pushStack( T( this, a, !1 ), "not", a ) - }, filter : function ( a ) { - return this.pushStack( T( this, a, !0 ), "filter", a ) - }, is : function ( a ) { - return!!a && (typeof a == "string" ? Q.test( a ) ? f( a, this.context ).index( this[0] ) >= 0 : f.filter( a, this ).length > 0 : this.filter( a ).length > 0) - }, closest : function ( a, b ) { - var c = [], d, e, g = this[0]; - if ( f.isArray( a ) ) { - var h = 1; - while ( g && g.ownerDocument && g !== b ) { - for ( d = 0; d < a.length; d++ ) { - f( g ).is( a[d] ) && c.push( {selector : a[d], elem : g, level : h} ); - } - g = g.parentNode, h++ - } - return c - } - var i = Q.test( a ) || typeof a != "string" ? f( a, b || this.context ) : 0; - for ( d = 0, e = this.length; d < e; d++ ) { - g = this[d]; - while ( g ) { - if ( i ? i.index( g ) > -1 : f.find.matchesSelector( g, a ) ) { - c.push( g ); - break - } - g = g.parentNode; - if ( !g || !g.ownerDocument || g === b || g.nodeType === 11 ) { - break - } - } - } - c = c.length > 1 ? f.unique( c ) : c; - return this.pushStack( c, "closest", a ) - }, index : function ( a ) { - if ( !a ) { - return this[0] && this[0].parentNode ? this.prevAll().length : -1; - } - if ( typeof a == "string" ) { - return f.inArray( this[0], f( a ) ); - } - return f.inArray( a.jquery ? a[0] : a, this ) - }, add : function ( a, b ) { - var c = typeof a == "string" ? f( a, b ) : f.makeArray( a && a.nodeType ? [a] : a ), d = f.merge( this.get(), c ); - return this.pushStack( S( c[0] ) || S( d[0] ) ? d : f.unique( d ) ) - }, andSelf : function () { - return this.add( this.prevObject ) - }} ), f.each( {parent : function ( a ) { - var b = a.parentNode; - return b && b.nodeType !== 11 ? b : null - }, parents : function ( a ) { - return f.dir( a, "parentNode" ) - }, parentsUntil : function ( a, b, c ) { - return f.dir( a, "parentNode", c ) - }, next : function ( a ) { - return f.nth( a, 2, "nextSibling" ) - }, prev : function ( a ) { - return f.nth( a, 2, "previousSibling" ) - }, nextAll : function ( a ) { - return f.dir( a, "nextSibling" ) - }, prevAll : function ( a ) { - return f.dir( a, "previousSibling" ) - }, nextUntil : function ( a, b, c ) { - return f.dir( a, "nextSibling", c ) - }, prevUntil : function ( a, b, c ) { - return f.dir( a, "previousSibling", c ) - }, siblings : function ( a ) { - return f.sibling( a.parentNode.firstChild, a ) - }, children : function ( a ) { - return f.sibling( a.firstChild ) - }, contents : function ( a ) { - return f.nodeName( a, "iframe" ) ? a.contentDocument || a.contentWindow.document : f.makeArray( a.childNodes ) - }}, function ( a, b ) { - f.fn[a] = function ( c, d ) { - var e = f.map( this, b, c ); - L.test( a ) || (d = c), d && typeof d == "string" && (e = f.filter( d, e )), e = this.length > 1 && !R[a] ? f.unique( e ) : e, (this.length > 1 || N.test( d )) && M.test( a ) && (e = e.reverse()); - return this.pushStack( e, a, P.call( arguments ).join( "," ) ) - } - } ), f.extend( {filter : function ( a, b, c ) { - c && (a = ":not(" + a + ")"); - return b.length === 1 ? f.find.matchesSelector( b[0], a ) ? [b[0]] : [] : f.find.matches( a, b ) - }, dir : function ( a, c, d ) { - var e = [], g = a[c]; - while ( g && g.nodeType !== 9 && (d === b || g.nodeType !== 1 || !f( g ).is( d )) ) { - g.nodeType === 1 && e.push( g ), g = g[c]; - } - return e - }, nth : function ( a, b, c, d ) { - b = b || 1; - var e = 0; - for ( ; a; a = a[c] ) { - if ( a.nodeType === 1 && ++e === b ) { - break; - } - } - return a - }, sibling : function ( a, b ) { - var c = []; - for ( ; a; a = a.nextSibling ) { - a.nodeType === 1 && a !== b && c.push( a ); - } - return c - }} ); - var V = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", W = / jQuery\d+="(?:\d+|null)"/g, X = /^\s+/, Y = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, Z = /<([\w:]+)/, $ = /", ""], legend : [1, "
", "
"], thead : [1, "", "
"], tr : [2, "", "
"], td : [3, "", "
"], col : [2, "", "
"], area : [1, "", ""], _default : [0, "", ""]}, bh = U( c ); - bg.optgroup = bg.option, bg.tbody = bg.tfoot = bg.colgroup = bg.caption = bg.thead, bg.th = bg.td, f.support.htmlSerialize || (bg._default = [1, "div
", "
"]), f.fn.extend( {text : function ( a ) { - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - var c = f( this ); - c.text( a.call( this, b, c.text() ) ) - } ); - } - if ( typeof a != "object" && a !== b ) { - return this.empty().append( (this[0] && this[0].ownerDocument || c).createTextNode( a ) ); - } - return f.text( this ) - }, wrapAll : function ( a ) { - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - f( this ).wrapAll( a.call( this, b ) ) - } ); - } - if ( this[0] ) { - var b = f( a, this[0].ownerDocument ).eq( 0 ).clone( !0 ); - this[0].parentNode && b.insertBefore( this[0] ), b.map( - function () { - var a = this; - while ( a.firstChild && a.firstChild.nodeType === 1 ) { - a = a.firstChild; - } - return a - } ).append( this ) - } - return this - }, wrapInner : function ( a ) { - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - f( this ).wrapInner( a.call( this, b ) ) - } ); - } - return this.each( function () { - var b = f( this ), c = b.contents(); - c.length ? c.wrapAll( a ) : b.append( a ) - } ) - }, wrap : function ( a ) { - var b = f.isFunction( a ); - return this.each( function ( c ) { - f( this ).wrapAll( b ? a.call( this, c ) : a ) - } ) - }, unwrap : function () { - return this.parent().each( - function () { - f.nodeName( this, "body" ) || f( this ).replaceWith( this.childNodes ) - } ).end() - }, append : function () { - return this.domManip( arguments, !0, function ( a ) { - this.nodeType === 1 && this.appendChild( a ) - } ) - }, prepend : function () { - return this.domManip( arguments, !0, function ( a ) { - this.nodeType === 1 && this.insertBefore( a, this.firstChild ) - } ) - }, before : function () { - if ( this[0] && this[0].parentNode ) { - return this.domManip( arguments, !1, function ( a ) { - this.parentNode.insertBefore( a, this ) - } ); - } - if ( arguments.length ) { - var a = f.clean( arguments ); - a.push.apply( a, this.toArray() ); - return this.pushStack( a, "before", arguments ) - } - }, after : function () { - if ( this[0] && this[0].parentNode ) { - return this.domManip( arguments, !1, function ( a ) { - this.parentNode.insertBefore( a, this.nextSibling ) - } ); - } - if ( arguments.length ) { - var a = this.pushStack( this, "after", arguments ); - a.push.apply( a, f.clean( arguments ) ); - return a - } - }, remove : function ( a, b ) { - for ( var c = 0, d; (d = this[c]) != null; c++ ) { - if ( !a || f.filter( a, [d] ).length ) { - !b && d.nodeType === 1 && (f.cleanData( d.getElementsByTagName( "*" ) ), f.cleanData( [d] )), d.parentNode && d.parentNode.removeChild( d ); - } - } - return this - }, empty : function () { - for ( var a = 0, b; (b = this[a]) != null; a++ ) { - b.nodeType === 1 && f.cleanData( b.getElementsByTagName( "*" ) ); - while ( b.firstChild ) { - b.removeChild( b.firstChild ) - } - } - return this - }, clone : function ( a, b ) { - a = a == null ? !1 : a, b = b == null ? a : b; - return this.map( function () { - return f.clone( this, a, b ) - } ) - }, html : function ( a ) { - if ( a === b ) { - return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace( W, "" ) : null; - } - if ( typeof a == "string" && !ba.test( a ) && (f.support.leadingWhitespace || !X.test( a )) && !bg[(Z.exec( a ) || ["", ""])[1].toLowerCase()] ) { - a = a.replace( Y, "<$1>" ); - try { - for ( var c = 0, d = this.length; c < d; c++ ) { - this[c].nodeType === 1 && (f.cleanData( this[c].getElementsByTagName( "*" ) ), this[c].innerHTML = a) - } - } catch ( e ) { - this.empty().append( a ) - } - } else { - f.isFunction( a ) ? this.each( function ( b ) { - var c = f( this ); - c.html( a.call( this, b, c.html() ) ) - } ) : this.empty().append( a ); - } - return this - }, replaceWith : function ( a ) { - if ( this[0] && this[0].parentNode ) { - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - var c = f( this ), d = c.html(); - c.replaceWith( a.call( this, b, d ) ) - } ); - } - typeof a != "string" && (a = f( a ).detach()); - return this.each( function () { - var b = this.nextSibling, c = this.parentNode; - f( this ).remove(), b ? f( b ).before( a ) : f( c ).append( a ) - } ) - } - return this.length ? this.pushStack( f( f.isFunction( a ) ? a() : a ), "replaceWith", a ) : this - }, detach : function ( a ) { - return this.remove( a, !0 ) - }, domManip : function ( a, c, d ) { - var e, g, h, i, j = a[0], k = []; - if ( !f.support.checkClone && arguments.length === 3 && typeof j == "string" && bd.test( j ) ) { - return this.each( function () { - f( this ).domManip( a, c, d, !0 ) - } ); - } - if ( f.isFunction( j ) ) { - return this.each( function ( e ) { - var g = f( this ); - a[0] = j.call( this, e, c ? g.html() : b ), g.domManip( a, c, d ) - } ); - } - if ( this[0] ) { - i = j && j.parentNode, f.support.parentNode && i && i.nodeType === 11 && i.childNodes.length === this.length ? e = {fragment : i} : e = f.buildFragment( a, this, k ), h = e.fragment, h.childNodes.length === 1 ? g = h = h.firstChild : g = h.firstChild; - if ( g ) { - c = c && f.nodeName( g, "tr" ); - for ( var l = 0, m = this.length, n = m - 1; l < m; l++ ) { - d.call( c ? bi( this[l], g ) : this[l], e.cacheable || m > 1 && l < n ? f.clone( h, !0, !0 ) : h ) - } - } - k.length && f.each( k, bp ) - } - return this - }} ), f.buildFragment = function ( a, b, d ) { - var e, g, h, i, j = a[0]; - b && b[0] && (i = b[0].ownerDocument || b[0]), i.createDocumentFragment || (i = c), a.length === 1 && typeof j == "string" && j.length < 512 && i === c && j.charAt( 0 ) === "<" && !bb.test( j ) && (f.support.checkClone || !bd.test( j )) && (f.support.html5Clone || !bc.test( j )) && (g = !0, h = f.fragments[j], h && h !== 1 && (e = h)), e || (e = i.createDocumentFragment(), f.clean( a, i, e, d )), g && (f.fragments[j] = h ? e : 1); - return{fragment : e, cacheable : g} - }, f.fragments = {}, f.each( {appendTo : "append", prependTo : "prepend", insertBefore : "before", insertAfter : "after", replaceAll : "replaceWith"}, function ( a, b ) { - f.fn[a] = function ( c ) { - var d = [], e = f( c ), g = this.length === 1 && this[0].parentNode; - if ( g && g.nodeType === 11 && g.childNodes.length === 1 && e.length === 1 ) { - e[b]( this[0] ); - return this - } - for ( var h = 0, i = e.length; h < i; h++ ) { - var j = (h > 0 ? this.clone( !0 ) : this).get(); - f( e[h] )[b]( j ), d = d.concat( j ) - } - return this.pushStack( d, a, e.selector ) - } - } ), f.extend( {clone : function ( a, b, c ) { - var d, e, g, h = f.support.html5Clone || !bc.test( "<" + a.nodeName ) ? a.cloneNode( !0 ) : bo( a ); - if ( (!f.support.noCloneEvent || !f.support.noCloneChecked) && (a.nodeType === 1 || a.nodeType === 11) && !f.isXMLDoc( a ) ) { - bk( a, h ), d = bl( a ), e = bl( h ); - for ( g = 0; d[g]; ++g ) { - e[g] && bk( d[g], e[g] ) - } - } - if ( b ) { - bj( a, h ); - if ( c ) { - d = bl( a ), e = bl( h ); - for ( g = 0; d[g]; ++g ) { - bj( d[g], e[g] ) - } - } - } - d = e = null; - return h - }, clean : function ( a, b, d, e ) { - var g; - b = b || c, typeof b.createElement == "undefined" && (b = b.ownerDocument || b[0] && b[0].ownerDocument || c); - var h = [], i; - for ( var j = 0, k; (k = a[j]) != null; j++ ) { - typeof k == "number" && (k += ""); - if ( !k ) { - continue; - } - if ( typeof k == "string" ) { - if ( !_.test( k ) ) { - k = b.createTextNode( k ); - } else { - k = k.replace( Y, "<$1>" ); - var l = (Z.exec( k ) || ["", ""])[1].toLowerCase(), m = bg[l] || bg._default, n = m[0], o = b.createElement( "div" ); - b === c ? bh.appendChild( o ) : U( b ).appendChild( o ), o.innerHTML = m[1] + k + m[2]; - while ( n-- ) { - o = o.lastChild; - } - if ( !f.support.tbody ) { - var p = $.test( k ), q = l === "table" && !p ? o.firstChild && o.firstChild.childNodes : m[1] === "" && !p ? o.childNodes : []; - for ( i = q.length - 1; i >= 0; --i ) { - f.nodeName( q[i], "tbody" ) && !q[i].childNodes.length && q[i].parentNode.removeChild( q[i] ) - } - } - !f.support.leadingWhitespace && X.test( k ) && o.insertBefore( b.createTextNode( X.exec( k )[0] ), o.firstChild ), k = o.childNodes - } - } - var r; - if ( !f.support.appendChecked ) { - if ( k[0] && typeof (r = k.length) == "number" ) { - for ( i = 0; i < r; i++ ) { - bn( k[i] ); - } - } else { - bn( k ); - } - } - k.nodeType ? h.push( k ) : h = f.merge( h, k ) - } - if ( d ) { - g = function ( a ) { - return!a.type || be.test( a.type ) - }; - for ( j = 0; h[j]; j++ ) { - if ( e && f.nodeName( h[j], "script" ) && (!h[j].type || h[j].type.toLowerCase() === "text/javascript") ) { - e.push( h[j].parentNode ? h[j].parentNode.removeChild( h[j] ) : h[j] ); - } else { - if ( h[j].nodeType === 1 ) { - var s = f.grep( h[j].getElementsByTagName( "script" ), g ); - h.splice.apply( h, [j + 1, 0].concat( s ) ) - } - d.appendChild( h[j] ) - } - } - } - return h - }, cleanData : function ( a ) { - var b, c, d = f.cache, e = f.event.special, g = f.support.deleteExpando; - for ( var h = 0, i; (i = a[h]) != null; h++ ) { - if ( i.nodeName && f.noData[i.nodeName.toLowerCase()] ) { - continue; - } - c = i[f.expando]; - if ( c ) { - b = d[c]; - if ( b && b.events ) { - for ( var j in b.events ) { - e[j] ? f.event.remove( i, j ) : f.removeEvent( i, j, b.handle ); - } - b.handle && (b.handle.elem = null) - } - g ? delete i[f.expando] : i.removeAttribute && i.removeAttribute( f.expando ), delete d[c] - } - } - }} ); - var bq = /alpha\([^)]*\)/i, br = /opacity=([^)]*)/, bs = /([A-Z]|^ms)/g, bt = /^-?\d+(?:px)?$/i, bu = /^-?\d/, bv = /^([\-+])=([\-+.\de]+)/, bw = {position : "absolute", visibility : "hidden", display : "block"}, bx = ["Left", "Right"], by = ["Top", "Bottom"], bz, bA, bB; - f.fn.css = function ( a, c ) { - if ( arguments.length === 2 && c === b ) { - return this; - } - return f.access( this, a, c, !0, function ( a, c, d ) { - return d !== b ? f.style( a, c, d ) : f.css( a, c ) - } ) - }, f.extend( {cssHooks : {opacity : {get : function ( a, b ) { - if ( b ) { - var c = bz( a, "opacity", "opacity" ); - return c === "" ? "1" : c - } - return a.style.opacity - }}}, cssNumber : {fillOpacity : !0, fontWeight : !0, lineHeight : !0, opacity : !0, orphans : !0, widows : !0, zIndex : !0, zoom : !0}, cssProps : {"float" : f.support.cssFloat ? "cssFloat" : "styleFloat"}, style : function ( a, c, d, e ) { - if ( !!a && a.nodeType !== 3 && a.nodeType !== 8 && !!a.style ) { - var g, h, i = f.camelCase( c ), j = a.style, k = f.cssHooks[i]; - c = f.cssProps[i] || i; - if ( d === b ) { - if ( k && "get"in k && (g = k.get( a, !1, e )) !== b ) { - return g; - } - return j[c] - } - h = typeof d, h === "string" && (g = bv.exec( d )) && (d = +(g[1] + 1) * +g[2] + parseFloat( f.css( a, c ) ), h = "number"); - if ( d == null || h === "number" && isNaN( d ) ) { - return; - } - h === "number" && !f.cssNumber[i] && (d += "px"); - if ( !k || !("set"in k) || (d = k.set( a, d )) !== b ) { - try { - j[c] = d - } catch ( l ) { - } - } - } - }, css : function ( a, c, d ) { - var e, g; - c = f.camelCase( c ), g = f.cssHooks[c], c = f.cssProps[c] || c, c === "cssFloat" && (c = "float"); - if ( g && "get"in g && (e = g.get( a, !0, d )) !== b ) { - return e; - } - if ( bz ) { - return bz( a, c ) - } - }, swap : function ( a, b, c ) { - var d = {}; - for ( var e in b ) { - d[e] = a.style[e], a.style[e] = b[e]; - } - c.call( a ); - for ( e in b ) { - a.style[e] = d[e] - } - }} ), f.curCSS = f.css, f.each( ["height", "width"], function ( a, b ) { - f.cssHooks[b] = {get : function ( a, c, d ) { - var e; - if ( c ) { - if ( a.offsetWidth !== 0 ) { - return bC( a, b, d ); - } - f.swap( a, bw, function () { - e = bC( a, b, d ) - } ); - return e - } - }, set : function ( a, b ) { - if ( !bt.test( b ) ) { - return b; - } - b = parseFloat( b ); - if ( b >= 0 ) { - return b + "px" - } - }} - } ), f.support.opacity || (f.cssHooks.opacity = {get : function ( a, b ) { - return br.test( (b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "" ) ? parseFloat( RegExp.$1 ) / 100 + "" : b ? "1" : "" - }, set : function ( a, b ) { - var c = a.style, d = a.currentStyle, e = f.isNumeric( b ) ? "alpha(opacity=" + b * 100 + ")" : "", g = d && d.filter || c.filter || ""; - c.zoom = 1; - if ( b >= 1 && f.trim( g.replace( bq, "" ) ) === "" ) { - c.removeAttribute( "filter" ); - if ( d && !d.filter ) { - return - } - } - c.filter = bq.test( g ) ? g.replace( bq, e ) : g + " " + e - }}), f( function () { - f.support.reliableMarginRight || (f.cssHooks.marginRight = {get : function ( a, b ) { - var c; - f.swap( a, {display : "inline-block"}, function () { - b ? c = bz( a, "margin-right", "marginRight" ) : c = a.style.marginRight - } ); - return c - }}) - } ), c.defaultView && c.defaultView.getComputedStyle && (bA = function ( a, b ) { - var c, d, e; - b = b.replace( bs, "-$1" ).toLowerCase(), (d = a.ownerDocument.defaultView) && (e = d.getComputedStyle( a, null )) && (c = e.getPropertyValue( b ), c === "" && !f.contains( a.ownerDocument.documentElement, a ) && (c = f.style( a, b ))); - return c - }), c.documentElement.currentStyle && (bB = function ( a, b ) { - var c, d, e, f = a.currentStyle && a.currentStyle[b], g = a.style; - f === null && g && (e = g[b]) && (f = e), !bt.test( f ) && bu.test( f ) && (c = g.left, d = a.runtimeStyle && a.runtimeStyle.left, d && (a.runtimeStyle.left = a.currentStyle.left), g.left = b === "fontSize" ? "1em" : f || 0, f = g.pixelLeft + "px", g.left = c, d && (a.runtimeStyle.left = d)); - return f === "" ? "auto" : f - }), bz = bA || bB, f.expr && f.expr.filters && (f.expr.filters.hidden = function ( a ) { - var b = a.offsetWidth, c = a.offsetHeight; - return b === 0 && c === 0 || !f.support.reliableHiddenOffsets && (a.style && a.style.display || f.css( a, "display" )) === "none" - }, f.expr.filters.visible = function ( a ) { - return!f.expr.filters.hidden( a ) - }); - var bD = /%20/g, bE = /\[\]$/, bF = /\r?\n/g, bG = /#.*$/, bH = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, bI = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, bJ = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, bK = /^(?:GET|HEAD)$/, bL = /^\/\//, bM = /\?/, bN = /)<[^<]*)*<\/script>/gi, bO = /^(?:select|textarea)/i, bP = /\s+/, bQ = /([?&])_=[^&]*/, bR = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, bS = f.fn.load, bT = {}, bU = {}, bV, bW, bX = ["*/"] + ["*"]; - try { - bV = e.href - } catch ( bY ) { - bV = c.createElement( "a" ), bV.href = "", bV = bV.href - } - bW = bR.exec( bV.toLowerCase() ) || [], f.fn.extend( {load : function ( a, c, d ) { - if ( typeof a != "string" && bS ) { - return bS.apply( this, arguments ); - } - if ( !this.length ) { - return this; - } - var e = a.indexOf( " " ); - if ( e >= 0 ) { - var g = a.slice( e, a.length ); - a = a.slice( 0, e ) - } - var h = "GET"; - c && (f.isFunction( c ) ? (d = c, c = b) : typeof c == "object" && (c = f.param( c, f.ajaxSettings.traditional ), h = "POST")); - var i = this; - f.ajax( {url : a, type : h, dataType : "html", data : c, complete : function ( a, b, c ) { - c = a.responseText, a.isResolved() && (a.done( function ( a ) { - c = a - } ), i.html( g ? f( "
" ).append( c.replace( bN, "" ) ).find( g ) : c )), d && i.each( d, [c, b, a] ) - }} ); - return this - }, serialize : function () { - return f.param( this.serializeArray() ) - }, serializeArray : function () { - return this.map( - function () { - return this.elements ? f.makeArray( this.elements ) : this - } ).filter( - function () { - return this.name && !this.disabled && (this.checked || bO.test( this.nodeName ) || bI.test( this.type )) - } ).map( - function ( a, b ) { - var c = f( this ).val(); - return c == null ? null : f.isArray( c ) ? f.map( c, function ( a, c ) { - return{name : b.name, value : a.replace( bF, "\r\n" )} - } ) : {name : b.name, value : c.replace( bF, "\r\n" )} - } ).get() - }} ), f.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function ( a, b ) { - f.fn[b] = function ( a ) { - return this.on( b, a ) - } - } ), f.each( ["get", "post"], function ( a, c ) { - f[c] = function ( a, d, e, g ) { - f.isFunction( d ) && (g = g || e, e = d, d = b); - return f.ajax( {type : c, url : a, data : d, success : e, dataType : g} ) - } - } ), f.extend( {getScript : function ( a, c ) { - return f.get( a, b, c, "script" ) - }, getJSON : function ( a, b, c ) { - return f.get( a, b, c, "json" ) - }, ajaxSetup : function ( a, b ) { - b ? b_( a, f.ajaxSettings ) : (b = a, a = f.ajaxSettings), b_( a, b ); - return a - }, ajaxSettings : {url : bV, isLocal : bJ.test( bW[1] ), global : !0, type : "GET", contentType : "application/x-www-form-urlencoded", processData : !0, async : !0, accepts : {xml : "application/xml, text/xml", html : "text/html", text : "text/plain", json : "application/json, text/javascript", "*" : bX}, contents : {xml : /xml/, html : /html/, json : /json/}, responseFields : {xml : "responseXML", text : "responseText"}, converters : {"* text" : a.String, "text html" : !0, "text json" : f.parseJSON, "text xml" : f.parseXML}, flatOptions : {context : !0, url : !0}}, ajaxPrefilter : bZ( bT ), ajaxTransport : bZ( bU ), ajax : function ( a, c ) { - function w( a, c, l, m ) { - if ( s !== 2 ) { - s = 2, q && clearTimeout( q ), p = b, n = m || "", v.readyState = a > 0 ? 4 : 0; - var o, r, u, w = c, x = l ? cb( d, v, l ) : b, y, z; - if ( a >= 200 && a < 300 || a === 304 ) { - if ( d.ifModified ) { - if ( y = v.getResponseHeader( "Last-Modified" ) ) { - f.lastModified[k] = y; - } - if ( z = v.getResponseHeader( "Etag" ) ) { - f.etag[k] = z - } - } - if ( a === 304 ) { - w = "notmodified", o = !0; - } else { - try { - r = cc( d, x ), w = "success", o = !0 - } catch ( A ) { - w = "parsererror", u = A - } - } - } else { - u = w; - if ( !w || a ) { - w = "error", a < 0 && (a = 0) - } - } - v.status = a, v.statusText = "" + (c || w), o ? h.resolveWith( e, [r, w, v] ) : h.rejectWith( e, [v, w, u] ), v.statusCode( j ), j = b, t && g.trigger( "ajax" + (o ? "Success" : "Error"), [v, d, o ? r : u] ), i.fireWith( e, [v, w] ), t && (g.trigger( "ajaxComplete", [v, d] ), --f.active || f.event.trigger( "ajaxStop" )) - } - } - - typeof a == "object" && (c = a, a = b), c = c || {}; - var d = f.ajaxSetup( {}, c ), e = d.context || d, g = e !== d && (e.nodeType || e instanceof f) ? f( e ) : f.event, h = f.Deferred(), i = f.Callbacks( "once memory" ), j = d.statusCode || {}, k, l = {}, m = {}, n, o, p, q, r, s = 0, t, u, v = {readyState : 0, setRequestHeader : function ( a, b ) { - if ( !s ) { - var c = a.toLowerCase(); - a = m[c] = m[c] || a, l[a] = b - } - return this - }, getAllResponseHeaders : function () { - return s === 2 ? n : null - }, getResponseHeader : function ( a ) { - var c; - if ( s === 2 ) { - if ( !o ) { - o = {}; - while ( c = bH.exec( n ) ) { - o[c[1].toLowerCase()] = c[2] - } - } - c = o[a.toLowerCase()] - } - return c === b ? null : c - }, overrideMimeType : function ( a ) { - s || (d.mimeType = a); - return this - }, abort : function ( a ) { - a = a || "abort", p && p.abort( a ), w( 0, a ); - return this - }}; - h.promise( v ), v.success = v.done, v.error = v.fail, v.complete = i.add, v.statusCode = function ( a ) { - if ( a ) { - var b; - if ( s < 2 ) { - for ( b in a ) { - j[b] = [j[b], a[b]]; - } - } else { - b = a[v.status], v.then( b, b ) - } - } - return this - }, d.url = ((a || d.url) + "").replace( bG, "" ).replace( bL, bW[1] + "//" ), d.dataTypes = f.trim( d.dataType || "*" ).toLowerCase().split( bP ), d.crossDomain == null && (r = bR.exec( d.url.toLowerCase() ), d.crossDomain = !(!r || r[1] == bW[1] && r[2] == bW[2] && (r[3] || (r[1] === "http:" ? 80 : 443)) == (bW[3] || (bW[1] === "http:" ? 80 : 443)))), d.data && d.processData && typeof d.data != "string" && (d.data = f.param( d.data, d.traditional )), b$( bT, d, c, v ); - if ( s === 2 ) { - return!1; - } - t = d.global, d.type = d.type.toUpperCase(), d.hasContent = !bK.test( d.type ), t && f.active++ === 0 && f.event.trigger( "ajaxStart" ); - if ( !d.hasContent ) { - d.data && (d.url += (bM.test( d.url ) ? "&" : "?") + d.data, delete d.data), k = d.url; - if ( d.cache === !1 ) { - var x = f.now(), y = d.url.replace( bQ, "$1_=" + x ); - d.url = y + (y === d.url ? (bM.test( d.url ) ? "&" : "?") + "_=" + x : "") - } - } - (d.data && d.hasContent && d.contentType !== !1 || c.contentType) && v.setRequestHeader( "Content-Type", d.contentType ), d.ifModified && (k = k || d.url, f.lastModified[k] && v.setRequestHeader( "If-Modified-Since", f.lastModified[k] ), f.etag[k] && v.setRequestHeader( "If-None-Match", f.etag[k] )), v.setRequestHeader( "Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + (d.dataTypes[0] !== "*" ? ", " + bX + "; q=0.01" : "") : d.accepts["*"] ); - for ( u in d.headers ) { - v.setRequestHeader( u, d.headers[u] ); - } - if ( d.beforeSend && (d.beforeSend.call( e, v, d ) === !1 || s === 2) ) { - v.abort(); - return!1 - } - for ( u in{success : 1, error : 1, complete : 1} ) { - v[u]( d[u] ); - } - p = b$( bU, d, c, v ); - if ( !p ) { - w( -1, "No Transport" ); - } else { - v.readyState = 1, t && g.trigger( "ajaxSend", [v, d] ), d.async && d.timeout > 0 && (q = setTimeout( function () { - v.abort( "timeout" ) - }, d.timeout )); - try { - s = 1, p.send( l, w ) - } catch ( z ) { - if ( s < 2 ) { - w( -1, z ); - } else { - throw z - } - } - } - return v - }, param : function ( a, c ) { - var d = [], e = function ( a, b ) { - b = f.isFunction( b ) ? b() : b, d[d.length] = encodeURIComponent( a ) + "=" + encodeURIComponent( b ) - }; - c === b && (c = f.ajaxSettings.traditional); - if ( f.isArray( a ) || a.jquery && !f.isPlainObject( a ) ) { - f.each( a, function () { - e( this.name, this.value ) - } ); - } else { - for ( var g in a ) { - ca( g, a[g], c, e ); - } - } - return d.join( "&" ).replace( bD, "+" ) - }} ), f.extend( {active : 0, lastModified : {}, etag : {}} ); - var cd = f.now(), ce = /(\=)\?(&|$)|\?\?/i; - f.ajaxSetup( {jsonp : "callback", jsonpCallback : function () { - return f.expando + "_" + cd++ - }} ), f.ajaxPrefilter( "json jsonp", function ( b, c, d ) { - var e = b.contentType === "application/x-www-form-urlencoded" && typeof b.data == "string"; - if ( b.dataTypes[0] === "jsonp" || b.jsonp !== !1 && (ce.test( b.url ) || e && ce.test( b.data )) ) { - var g, h = b.jsonpCallback = f.isFunction( b.jsonpCallback ) ? b.jsonpCallback() : b.jsonpCallback, i = a[h], j = b.url, k = b.data, l = "$1" + h + "$2"; - b.jsonp !== !1 && (j = j.replace( ce, l ), b.url === j && (e && (k = k.replace( ce, l )), b.data === k && (j += (/\?/.test( j ) ? "&" : "?") + b.jsonp + "=" + h))), b.url = j, b.data = k, a[h] = function ( a ) { - g = [a] - }, d.always( function () { - a[h] = i, g && f.isFunction( i ) && a[h]( g[0] ) - } ), b.converters["script json"] = function () { - g || f.error( h + " was not called" ); - return g[0] - }, b.dataTypes[0] = "json"; - return"script" - } - } ), f.ajaxSetup( {accepts : {script : "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"}, contents : {script : /javascript|ecmascript/}, converters : {"text script" : function ( a ) { - f.globalEval( a ); - return a - }}} ), f.ajaxPrefilter( "script", function ( a ) { - a.cache === b && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1) - } ), f.ajaxTransport( "script", function ( a ) { - if ( a.crossDomain ) { - var d, e = c.head || c.getElementsByTagName( "head" )[0] || c.documentElement; - return{send : function ( f, g ) { - d = c.createElement( "script" ), d.async = "async", a.scriptCharset && (d.charset = a.scriptCharset), d.src = a.url, d.onload = d.onreadystatechange = function ( a, c ) { - if ( c || !d.readyState || /loaded|complete/.test( d.readyState ) ) { - d.onload = d.onreadystatechange = null, e && d.parentNode && e.removeChild( d ), d = b, c || g( 200, "success" ) - } - }, e.insertBefore( d, e.firstChild ) - }, abort : function () { - d && d.onload( 0, 1 ) - }} - } - } ); - var cf = a.ActiveXObject ? function () { - for ( var a in ch ) { - ch[a]( 0, 1 ) - } - } : !1, cg = 0, ch; - f.ajaxSettings.xhr = a.ActiveXObject ? function () { - return!this.isLocal && ci() || cj() - } : ci, function ( a ) { - f.extend( f.support, {ajax : !!a, cors : !!a && "withCredentials"in a} ) - }( f.ajaxSettings.xhr() ), f.support.ajax && f.ajaxTransport( function ( c ) { - if ( !c.crossDomain || f.support.cors ) { - var d; - return{send : function ( e, g ) { - var h = c.xhr(), i, j; - c.username ? h.open( c.type, c.url, c.async, c.username, c.password ) : h.open( c.type, c.url, c.async ); - if ( c.xhrFields ) { - for ( j in c.xhrFields ) { - h[j] = c.xhrFields[j]; - } - } - c.mimeType && h.overrideMimeType && h.overrideMimeType( c.mimeType ), !c.crossDomain && !e["X-Requested-With"] && (e["X-Requested-With"] = "XMLHttpRequest"); - try { - for ( j in e ) { - h.setRequestHeader( j, e[j] ) - } - } catch ( k ) { - } - h.send( c.hasContent && c.data || null ), d = function ( a, e ) { - var j, k, l, m, n; - try { - if ( d && (e || h.readyState === 4) ) { - d = b, i && (h.onreadystatechange = f.noop, cf && delete ch[i]); - if ( e ) { - h.readyState !== 4 && h.abort(); - } else { - j = h.status, l = h.getAllResponseHeaders(), m = {}, n = h.responseXML, n && n.documentElement && (m.xml = n), m.text = h.responseText; - try { - k = h.statusText - } catch ( o ) { - k = "" - } - !j && c.isLocal && !c.crossDomain ? j = m.text ? 200 : 404 : j === 1223 && (j = 204) - } - } - } catch ( p ) { - e || g( -1, p ) - } - m && g( j, k, m, l ) - }, !c.async || h.readyState === 4 ? d() : (i = ++cg, cf && (ch || (ch = {}, f( a ).unload( cf )), ch[i] = d), h.onreadystatechange = d) - }, abort : function () { - d && d( 0, 1 ) - }} - } - } ); - var ck = {}, cl, cm, cn = /^(?:toggle|show|hide)$/, co = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, cp, cq = [ - ["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], - ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], - ["opacity"] - ], cr; - f.fn.extend( {show : function ( a, b, c ) { - var d, e; - if ( a || a === 0 ) { - return this.animate( cu( "show", 3 ), a, b, c ); - } - for ( var g = 0, h = this.length; g < h; g++ ) { - d = this[g], d.style && (e = d.style.display, !f._data( d, "olddisplay" ) && e === "none" && (e = d.style.display = ""), e === "" && f.css( d, "display" ) === "none" && f._data( d, "olddisplay", cv( d.nodeName ) )); - } - for ( g = 0; g < h; g++ ) { - d = this[g]; - if ( d.style ) { - e = d.style.display; - if ( e === "" || e === "none" ) { - d.style.display = f._data( d, "olddisplay" ) || "" - } - } - } - return this - }, hide : function ( a, b, c ) { - if ( a || a === 0 ) { - return this.animate( cu( "hide", 3 ), a, b, c ); - } - var d, e, g = 0, h = this.length; - for ( ; g < h; g++ ) { - d = this[g], d.style && (e = f.css( d, "display" ), e !== "none" && !f._data( d, "olddisplay" ) && f._data( d, "olddisplay", e )); - } - for ( g = 0; g < h; g++ ) { - this[g].style && (this[g].style.display = "none"); - } - return this - }, _toggle : f.fn.toggle, toggle : function ( a, b, c ) { - var d = typeof a == "boolean"; - f.isFunction( a ) && f.isFunction( b ) ? this._toggle.apply( this, arguments ) : a == null || d ? this.each( function () { - var b = d ? a : f( this ).is( ":hidden" ); - f( this )[b ? "show" : "hide"]() - } ) : this.animate( cu( "toggle", 3 ), a, b, c ); - return this - }, fadeTo : function ( a, b, c, d ) { - return this.filter( ":hidden" ).css( "opacity", 0 ).show().end().animate( {opacity : b}, a, c, d ) - }, animate : function ( a, b, c, d ) { - function g() { - e.queue === !1 && f._mark( this ); - var b = f.extend( {}, e ), c = this.nodeType === 1, d = c && f( this ).is( ":hidden" ), g, h, i, j, k, l, m, n, o; - b.animatedProperties = {}; - for ( i in a ) { - g = f.camelCase( i ), i !== g && (a[g] = a[i], delete a[i]), h = a[g], f.isArray( h ) ? (b.animatedProperties[g] = h[1], h = a[g] = h[0]) : b.animatedProperties[g] = b.specialEasing && b.specialEasing[g] || b.easing || "swing"; - if ( h === "hide" && d || h === "show" && !d ) { - return b.complete.call( this ); - } - c && (g === "height" || g === "width") && (b.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], f.css( this, "display" ) === "inline" && f.css( this, "float" ) === "none" && (!f.support.inlineBlockNeedsLayout || cv( this.nodeName ) === "inline" ? this.style.display = "inline-block" : this.style.zoom = 1)) - } - b.overflow != null && (this.style.overflow = "hidden"); - for ( i in a ) { - j = new f.fx( this, b, i ), h = a[i], cn.test( h ) ? (o = f._data( this, "toggle" + i ) || (h === "toggle" ? d ? "show" : "hide" : 0), o ? (f._data( this, "toggle" + i, o === "show" ? "hide" : "show" ), j[o]()) : j[h]()) : (k = co.exec( h ), l = j.cur(), k ? (m = parseFloat( k[2] ), n = k[3] || (f.cssNumber[i] ? "" : "px"), n !== "px" && (f.style( this, i, (m || 1) + n ), l = (m || 1) / j.cur() * l, f.style( this, i, l + n )), k[1] && (m = (k[1] === "-=" ? -1 : 1) * m + l), j.custom( l, m, n )) : j.custom( l, h, "" )); - } - return!0 - } - - var e = f.speed( b, c, d ); - if ( f.isEmptyObject( a ) ) { - return this.each( e.complete, [!1] ); - } - a = f.extend( {}, a ); - return e.queue === !1 ? this.each( g ) : this.queue( e.queue, g ) - }, stop : function ( a, c, d ) { - typeof a != "string" && (d = c, c = a, a = b), c && a !== !1 && this.queue( a || "fx", [] ); - return this.each( function () { - function h( a, b, c ) { - var e = b[c]; - f.removeData( a, c, !0 ), e.stop( d ) - } - - var b, c = !1, e = f.timers, g = f._data( this ); - d || f._unmark( !0, this ); - if ( a == null ) { - for ( b in g ) { - g[b] && g[b].stop && b.indexOf( ".run" ) === b.length - 4 && h( this, g, b ); - } - } else { - g[b = a + ".run"] && g[b].stop && h( this, g, b ); - } - for ( b = e.length; b--; ) { - e[b].elem === this && (a == null || e[b].queue === a) && (d ? e[b]( !0 ) : e[b].saveState(), c = !0, e.splice( b, 1 )); - } - (!d || !c) && f.dequeue( this, a ) - } ) - }} ), f.each( {slideDown : cu( "show", 1 ), slideUp : cu( "hide", 1 ), slideToggle : cu( "toggle", 1 ), fadeIn : {opacity : "show"}, fadeOut : {opacity : "hide"}, fadeToggle : {opacity : "toggle"}}, function ( a, b ) { - f.fn[a] = function ( a, c, d ) { - return this.animate( b, a, c, d ) - } - } ), f.extend( {speed : function ( a, b, c ) { - var d = a && typeof a == "object" ? f.extend( {}, a ) : {complete : c || !c && b || f.isFunction( a ) && a, duration : a, easing : c && b || b && !f.isFunction( b ) && b}; - d.duration = f.fx.off ? 0 : typeof d.duration == "number" ? d.duration : d.duration in f.fx.speeds ? f.fx.speeds[d.duration] : f.fx.speeds._default; - if ( d.queue == null || d.queue === !0 ) { - d.queue = "fx"; - } - d.old = d.complete, d.complete = function ( a ) { - f.isFunction( d.old ) && d.old.call( this ), d.queue ? f.dequeue( this, d.queue ) : a !== !1 && f._unmark( this ) - }; - return d - }, easing : {linear : function ( a, b, c, d ) { - return c + d * a - }, swing : function ( a, b, c, d ) { - return(-Math.cos( a * Math.PI ) / 2 + .5) * d + c - }}, timers : [], fx : function ( a, b, c ) { - this.options = b, this.elem = a, this.prop = c, b.orig = b.orig || {} - }} ), f.fx.prototype = {update : function () { - this.options.step && this.options.step.call( this.elem, this.now, this ), (f.fx.step[this.prop] || f.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 a, b = f.css( this.elem, this.prop ); - return isNaN( a = parseFloat( b ) ) ? !b || b === "auto" ? 0 : b : a - }, custom : function ( a, c, d ) { - function h( a ) { - return e.step( a ) - } - - var e = this, g = f.fx; - this.startTime = cr || cs(), this.end = c, this.now = this.start = a, this.pos = this.state = 0, this.unit = d || this.unit || (f.cssNumber[this.prop] ? "" : "px"), h.queue = this.options.queue, h.elem = this.elem, h.saveState = function () { - e.options.hide && f._data( e.elem, "fxshow" + e.prop ) === b && f._data( e.elem, "fxshow" + e.prop, e.start ) - }, h() && f.timers.push( h ) && !cp && (cp = setInterval( g.tick, g.interval )) - }, show : function () { - var a = f._data( this.elem, "fxshow" + this.prop ); - this.options.orig[this.prop] = a || f.style( this.elem, this.prop ), this.options.show = !0, a !== b ? this.custom( this.cur(), a ) : this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() ), f( this.elem ).show() - }, hide : function () { - this.options.orig[this.prop] = f._data( this.elem, "fxshow" + this.prop ) || f.style( this.elem, this.prop ), this.options.hide = !0, this.custom( this.cur(), 0 ) - }, step : function ( a ) { - var b, c, d, e = cr || cs(), g = !0, h = this.elem, i = this.options; - if ( a || e >= i.duration + this.startTime ) { - this.now = this.end, this.pos = this.state = 1, this.update(), i.animatedProperties[this.prop] = !0; - for ( b in i.animatedProperties ) { - i.animatedProperties[b] !== !0 && (g = !1); - } - if ( g ) { - i.overflow != null && !f.support.shrinkWrapBlocks && f.each( ["", "X", "Y"], function ( a, b ) { - h.style["overflow" + b] = i.overflow[a] - } ), i.hide && f( h ).hide(); - if ( i.hide || i.show ) { - for ( b in i.animatedProperties ) { - f.style( h, b, i.orig[b] ), f.removeData( h, "fxshow" + b, !0 ), f.removeData( h, "toggle" + b, !0 ); - } - } - d = i.complete, d && (i.complete = !1, d.call( h )) - } - return!1 - } - i.duration == Infinity ? this.now = e : (c = e - this.startTime, this.state = c / i.duration, this.pos = f.easing[i.animatedProperties[this.prop]]( this.state, c, 0, 1, i.duration ), this.now = this.start + (this.end - this.start) * this.pos), this.update(); - return!0 - }}, f.extend( f.fx, {tick : function () { - var a, b = f.timers, c = 0; - for ( ; c < b.length; c++ ) { - a = b[c], !a() && b[c] === a && b.splice( c--, 1 ); - } - b.length || f.fx.stop() - }, interval : 13, stop : function () { - clearInterval( cp ), cp = null - }, speeds : {slow : 600, fast : 200, _default : 400}, step : {opacity : function ( a ) { - f.style( a.elem, "opacity", a.now ) - }, _default : function ( a ) { - a.elem.style && a.elem.style[a.prop] != null ? a.elem.style[a.prop] = a.now + a.unit : a.elem[a.prop] = a.now - }}} ), f.each( ["width", "height"], function ( a, b ) { - f.fx.step[b] = function ( a ) { - f.style( a.elem, b, Math.max( 0, a.now ) + a.unit ) - } - } ), f.expr && f.expr.filters && (f.expr.filters.animated = function ( a ) { - return f.grep( f.timers, - function ( b ) { - return a === b.elem - } ).length - }); - var cw = /^t(?:able|d|h)$/i, cx = /^(?:body|html)$/i; - "getBoundingClientRect"in c.documentElement ? f.fn.offset = function ( a ) { - var b = this[0], c; - if ( a ) { - return this.each( function ( b ) { - f.offset.setOffset( this, a, b ) - } ); - } - if ( !b || !b.ownerDocument ) { - return null; - } - if ( b === b.ownerDocument.body ) { - return f.offset.bodyOffset( b ); - } - try { - c = b.getBoundingClientRect() - } catch ( d ) { - } - var e = b.ownerDocument, g = e.documentElement; - if ( !c || !f.contains( g, b ) ) { - return c ? {top : c.top, left : c.left} : {top : 0, left : 0}; - } - var h = e.body, i = cy( e ), j = g.clientTop || h.clientTop || 0, k = g.clientLeft || h.clientLeft || 0, l = i.pageYOffset || f.support.boxModel && g.scrollTop || h.scrollTop, m = i.pageXOffset || f.support.boxModel && g.scrollLeft || h.scrollLeft, n = c.top + l - j, o = c.left + m - k; - return{top : n, left : o} - } : f.fn.offset = function ( a ) { - var b = this[0]; - if ( a ) { - return this.each( function ( b ) { - f.offset.setOffset( this, a, b ) - } ); - } - if ( !b || !b.ownerDocument ) { - return null; - } - if ( b === b.ownerDocument.body ) { - return f.offset.bodyOffset( b ); - } - var c, d = b.offsetParent, e = b, g = b.ownerDocument, h = g.documentElement, i = g.body, j = g.defaultView, k = j ? j.getComputedStyle( b, null ) : b.currentStyle, l = b.offsetTop, m = b.offsetLeft; - while ( (b = b.parentNode) && b !== i && b !== h ) { - if ( f.support.fixedPosition && k.position === "fixed" ) { - break; - } - c = j ? j.getComputedStyle( b, null ) : b.currentStyle, l -= b.scrollTop, m -= b.scrollLeft, b === d && (l += b.offsetTop, m += b.offsetLeft, f.support.doesNotAddBorder && (!f.support.doesAddBorderForTableAndCells || !cw.test( b.nodeName )) && (l += parseFloat( c.borderTopWidth ) || 0, m += parseFloat( c.borderLeftWidth ) || 0), e = d, d = b.offsetParent), f.support.subtractsBorderForOverflowNotVisible && c.overflow !== "visible" && (l += parseFloat( c.borderTopWidth ) || 0, m += parseFloat( c.borderLeftWidth ) || 0), k = c - } - if ( k.position === "relative" || k.position === "static" ) { - l += i.offsetTop, m += i.offsetLeft; - } - f.support.fixedPosition && k.position === "fixed" && (l += Math.max( h.scrollTop, i.scrollTop ), m += Math.max( h.scrollLeft, i.scrollLeft )); - return{top : l, left : m} - }, f.offset = {bodyOffset : function ( a ) { - var b = a.offsetTop, c = a.offsetLeft; - f.support.doesNotIncludeMarginInBodyOffset && (b += parseFloat( f.css( a, "marginTop" ) ) || 0, c += parseFloat( f.css( a, "marginLeft" ) ) || 0); - return{top : b, left : c} - }, setOffset : function ( a, b, c ) { - var d = f.css( a, "position" ); - d === "static" && (a.style.position = "relative"); - var e = f( a ), g = e.offset(), h = f.css( a, "top" ), i = f.css( a, "left" ), j = (d === "absolute" || d === "fixed") && f.inArray( "auto", [h, i] ) > -1, k = {}, l = {}, m, n; - j ? (l = e.position(), m = l.top, n = l.left) : (m = parseFloat( h ) || 0, n = parseFloat( i ) || 0), f.isFunction( b ) && (b = b.call( a, c, g )), b.top != null && (k.top = b.top - g.top + m), b.left != null && (k.left = b.left - g.left + n), "using"in b ? b.using.call( a, k ) : e.css( k ) - }}, f.fn.extend( {position : function () { - if ( !this[0] ) { - return null; - } - var a = this[0], b = this.offsetParent(), c = this.offset(), d = cx.test( b[0].nodeName ) ? {top : 0, left : 0} : b.offset(); - c.top -= parseFloat( f.css( a, "marginTop" ) ) || 0, c.left -= parseFloat( f.css( a, "marginLeft" ) ) || 0, d.top += parseFloat( f.css( b[0], "borderTopWidth" ) ) || 0, d.left += parseFloat( f.css( b[0], "borderLeftWidth" ) ) || 0; - return{top : c.top - d.top, left : c.left - d.left} - }, offsetParent : function () { - return this.map( function () { - var a = this.offsetParent || c.body; - while ( a && !cx.test( a.nodeName ) && f.css( a, "position" ) === "static" ) { - a = a.offsetParent; - } - return a - } ) - }} ), f.each( ["Left", "Top"], function ( a, c ) { - var d = "scroll" + c; - f.fn[d] = function ( c ) { - var e, g; - if ( c === b ) { - e = this[0]; - if ( !e ) { - return null; - } - g = cy( e ); - return g ? "pageXOffset"in g ? g[a ? "pageYOffset" : "pageXOffset"] : f.support.boxModel && g.document.documentElement[d] || g.document.body[d] : e[d] - } - return this.each( function () { - g = cy( this ), g ? g.scrollTo( a ? f( g ).scrollLeft() : c, a ? c : f( g ).scrollTop() ) : this[d] = c - } ) - } - } ), f.each( ["Height", "Width"], function ( a, c ) { - var d = c.toLowerCase(); - f.fn["inner" + c] = function () { - var a = this[0]; - return a ? a.style ? parseFloat( f.css( a, d, "padding" ) ) : this[d]() : null - }, f.fn["outer" + c] = function ( a ) { - var b = this[0]; - return b ? b.style ? parseFloat( f.css( b, d, a ? "margin" : "border" ) ) : this[d]() : null - }, f.fn[d] = function ( a ) { - var e = this[0]; - if ( !e ) { - return a == null ? null : this; - } - if ( f.isFunction( a ) ) { - return this.each( function ( b ) { - var c = f( this ); - c[d]( a.call( this, b, c[d]() ) ) - } ); - } - if ( f.isWindow( e ) ) { - var g = e.document.documentElement["client" + c], h = e.document.body; - return e.document.compatMode === "CSS1Compat" && g || h && h["client" + c] || g - } - if ( e.nodeType === 9 ) { - return Math.max( e.documentElement["client" + c], e.body["scroll" + c], e.documentElement["scroll" + c], e.body["offset" + c], e.documentElement["offset" + c] ); - } - if ( a === b ) { - var i = f.css( e, d ), j = parseFloat( i ); - return f.isNumeric( j ) ? j : i - } - return this.css( d, typeof a == "string" ? a : a + "px" ) - } - } ), a.jQuery = a.$ = f, typeof define == "function" && define.amd && define.amd.jQuery && define( "jquery", [], function () { - return f - } ) -})( window ); \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.diagnostics.js b/example/amd/js/libs/postal/postal.diagnostics.js deleted file mode 100644 index 168df84..0000000 --- a/example/amd/js/libs/postal/postal.diagnostics.js +++ /dev/null @@ -1,89 +0,0 @@ -// This is the amd module version of postal.diagnostics.js -// If you need the standard lib version, go to http://github.com/ifandelse/postal.js -define( [ "postal", "underscore" ], function ( postal, _, undefined ) { - - var filters = [], - applyFilter = function ( filter, env ) { - var match = 0, possible = 0; - _.each( filter, function ( item, key ) { - if ( env[key] ) { - possible++; - if ( _.isRegExp( item ) && item.test( env[key] ) ) { - match++; - } - else if ( _.isObject( env[key] ) && !_.isArray( env[key] ) ) { - if ( applyFilter( item, env[key] ) ) { - match++; - } - } - else { - if ( _.isEqual( env[key], item ) ) { - match++; - } - } - } - } ); - return match === possible; - }; - - // this returns a callback that, if invoked, removes the wireTap - var wireTap = postal.addWireTap( function ( data, envelope ) { - if ( !filters.length || _.any( filters, function ( filter ) { - return applyFilter( filter, envelope ); - } ) ) { - if ( !JSON ) { - throw "This browser or environment does not provide JSON support"; - } - try { - console.log( JSON.stringify( envelope ) ); - } - catch ( exception ) { - try { - var env = _.extend( {}, envelope ); - delete env.data; - console.log( JSON.stringify( env ) + "\n\t" + "JSON.stringify Error: " + exception.message ); - } - catch ( ex ) { - console.log( "Unable to parse data to JSON: " + exception ); - } - } - } - } ); - - postal.diagnostics = postal.diagnostics || {}; - - postal.diagnostics.console = { - clearFilters : function () { - filters = []; - }, - removeFilter : function ( filter ) { - filters = _.filter( filters, function ( item ) { - return !_.isEqual( item, filter ); - } ); - }, - addFilter : function ( constraint ) { - if ( !_.isArray( constraint ) ) { - constraint = [ constraint ]; - } - _.each( constraint, function ( item ) { - if ( filters.length === 0 || !_.any( filters, function ( filter ) { - return _.isEqual( filter, item ); - } ) ) { - filters.push( item ); - } - } ); - - }, - getCurrentFilters : function () { - return filters; - }, - removeWireTap : function () { - if ( wireTap ) { - wireTap(); - } - } - }; - - - -} ); \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.diagnostics.min.js b/example/amd/js/libs/postal/postal.diagnostics.min.js deleted file mode 100644 index 46a5dc2..0000000 --- a/example/amd/js/libs/postal/postal.diagnostics.min.js +++ /dev/null @@ -1 +0,0 @@ -define(["postal","underscore"],function(a,b,c){var d=[],e=function(a,c){var d=0,f=0;return b.each(a,function(a,g){c[g]&&(f++,b.isRegExp(a)&&a.test(c[g])?d++:b.isObject(c[g])&&!b.isArray(c[g])?e(a,c[g])&&d++:b.isEqual(c[g],a)&&d++)}),d===f},f=a.addWireTap(function(a,c){if(!d.length||b.any(d,function(a){return e(a,c)})){if(!JSON)throw"This browser or environment does not provide JSON support";try{console.log(JSON.stringify(c))}catch(f){try{var g=b.extend({},c);delete g.data,console.log(JSON.stringify(g)+"\n "+"JSON.stringify Error: "+f.message)}catch(h){console.log("Unable to parse data to JSON: "+f)}}}});a.diagnostics=a.diagnostics||{},a.diagnostics.console={clearFilters:function(){d=[]},removeFilter:function(a){d=b.filter(d,function(c){return!b.isEqual(c,a)})},addFilter:function(a){b.isArray(a)||(a=[a]),b.each(a,function(a){(d.length===0||!b.any(d,function(c){return b.isEqual(c,a)}))&&d.push(a)})},getCurrentFilters:function(){return d},removeWireTap:function(){f&&f()}}}) \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.js b/example/amd/js/libs/postal/postal.js deleted file mode 100644 index 275067c..0000000 --- a/example/amd/js/libs/postal/postal.js +++ /dev/null @@ -1,457 +0,0 @@ -/** - * postal - Pub/Sub library providing wildcard subscriptions, complex message handling, etc. Works server and client-side. - * Author: Jim Cowart (http://freshbrewedcode.com/jimcowart) - * Version: v0.8.11 - * Url: http://github.com/postaljs/postal.js - * License(s): MIT, GPL - */ - -(function (root, factory) { - if (typeof module === "object" && module.exports) { - // Node, or CommonJS-Like environments - module.exports = function (_) { - _ = _ || require("underscore"); - return factory(_); - }; - } else if (typeof define === "function" && define.amd) { - // AMD. Register as an anonymous module. - define(["underscore"], function (_) { - return factory(_, root); - }); - } else { - // Browser globals - root.postal = factory(root._, root); - } -}(this, function (_, global, undefined) { - - var postal; - - - var ConsecutiveDistinctPredicate = function () { - var previous; - return function (data) { - var eq = false; - if (_.isString(data)) { - eq = data === previous; - previous = data; - } - else { - eq = _.isEqual(data, previous); - previous = _.clone(data); - } - return !eq; - }; - }; - - var DistinctPredicate = function () { - var previous = []; - - return function (data) { - var isDistinct = !_.any(previous, function (p) { - if (_.isObject(data) || _.isArray(data)) { - return _.isEqual(data, p); - } - return data === p; - }); - if (isDistinct) { - previous.push(data); - } - return isDistinct; - }; - }; - - var ChannelDefinition = function (channelName) { - this.channel = channelName || postal.configuration.DEFAULT_CHANNEL; - }; - - ChannelDefinition.prototype.subscribe = function () { - return arguments.length === 1 ? new SubscriptionDefinition(this.channel, arguments[0].topic, arguments[0].callback) : new SubscriptionDefinition(this.channel, arguments[0], arguments[1]); - }; - - ChannelDefinition.prototype.publish = function () { - var envelope = arguments.length === 1 ? (Object.prototype.toString.call(arguments[0]) === "[object String]" ? { - topic: arguments[0] - } : arguments[0]) : { - topic: arguments[0], - data: arguments[1] - }; - envelope.channel = this.channel; - return postal.configuration.bus.publish(envelope); - }; - - - var SubscriptionDefinition = function (channel, topic, callback) { - if (arguments.length !== 3) { - throw new Error("You must provide a channel, topic and callback when creating a SubscriptionDefinition instance."); - } - if (topic.length === 0) { - throw new Error("Topics cannot be empty"); - } - this.channel = channel; - this.topic = topic; - this.callback = callback; - this.constraints = []; - this.context = null; - postal.configuration.bus.publish({ - channel: postal.configuration.SYSTEM_CHANNEL, - topic: "subscription.created", - data: { - event: "subscription.created", - channel: channel, - topic: topic - } - }); - postal.configuration.bus.subscribe(this); - }; - - SubscriptionDefinition.prototype = { - unsubscribe: function () { - if (!this.inactive) { - this.inactive = true; - postal.configuration.bus.unsubscribe(this); - postal.configuration.bus.publish({ - channel: postal.configuration.SYSTEM_CHANNEL, - topic: "subscription.removed", - data: { - event: "subscription.removed", - channel: this.channel, - topic: this.topic - } - }); - } - }, - - defer: function () { - var self = this; - var fn = this.callback; - this.callback = function (data, env) { - setTimeout(function () { - fn.call(self.context, data, env); - }, 0); - }; - return this; - }, - - disposeAfter: function (maxCalls) { - if (_.isNaN(maxCalls) || maxCalls <= 0) { - throw "The value provided to disposeAfter (maxCalls) must be a number greater than zero."; - } - var self = this; - var fn = this.callback; - var dispose = _.after(maxCalls, _.bind(function () { - this.unsubscribe(); - }, this)); - - this.callback = function () { - fn.apply(self.context, arguments); - dispose(); - }; - return this; - }, - - distinctUntilChanged: function () { - this.withConstraint(new ConsecutiveDistinctPredicate()); - return this; - }, - - distinct: function () { - this.withConstraint(new DistinctPredicate()); - return this; - }, - - once: function () { - this.disposeAfter(1); - return this; - }, - - withConstraint: function (predicate) { - if (!_.isFunction(predicate)) { - throw "Predicate constraint must be a function"; - } - this.constraints.push(predicate); - return this; - }, - - withConstraints: function (predicates) { - var self = this; - if (_.isArray(predicates)) { - _.each(predicates, function (predicate) { - self.withConstraint(predicate); - }); - } - return self; - }, - - withContext: function (context) { - this.context = context; - return this; - }, - - withDebounce: function (milliseconds, immediate) { - if (_.isNaN(milliseconds)) { - throw "Milliseconds must be a number"; - } - var fn = this.callback; - this.callback = _.debounce(fn, milliseconds, !! immediate); - return this; - }, - - withDelay: function (milliseconds) { - if (_.isNaN(milliseconds)) { - throw "Milliseconds must be a number"; - } - var self = this; - var fn = this.callback; - this.callback = function (data, env) { - setTimeout(function () { - fn.call(self.context, data, env); - }, milliseconds); - }; - return this; - }, - - withThrottle: function (milliseconds) { - if (_.isNaN(milliseconds)) { - throw "Milliseconds must be a number"; - } - var fn = this.callback; - this.callback = _.throttle(fn, milliseconds); - return this; - }, - - subscribe: function (callback) { - this.callback = callback; - return this; - } - }; - - var bindingsResolver = { - cache: {}, - regex: {}, - - compare: function (binding, topic) { - var pattern, rgx, prevSegment, result = (this.cache[topic] && this.cache[topic][binding]); - if (typeof result !== "undefined") { - return result; - } - if (!(rgx = this.regex[binding])) { - pattern = "^" + _.map(binding.split("."), function (segment) { - var res = ""; - if ( !! prevSegment) { - res = prevSegment !== "#" ? "\\.\\b" : "\\b"; - } - if (segment === "#") { - res += "[\\s\\S]*"; - } else if (segment === "*") { - res += "[^.]+"; - } else { - res += segment; - } - prevSegment = segment; - return res; - }).join("") + "$"; - rgx = this.regex[binding] = new RegExp(pattern); - } - this.cache[topic] = this.cache[topic] || {}; - this.cache[topic][binding] = result = rgx.test(topic); - return result; - }, - - reset: function () { - this.cache = {}; - this.regex = {}; - } - }; - - var fireSub = function (subDef, envelope) { - if (!subDef.inactive && postal.configuration.resolver.compare(subDef.topic, envelope.topic)) { - if (_.all(subDef.constraints, function (constraint) { - return constraint.call(subDef.context, envelope.data, envelope); - })) { - if (typeof subDef.callback === "function") { - subDef.callback.call(subDef.context, envelope.data, envelope); - } - } - } - }; - - var pubInProgress = 0; - var unSubQueue = []; - var clearUnSubQueue = function () { - while (unSubQueue.length) { - localBus.unsubscribe(unSubQueue.shift()); - } - }; - - var localBus = { - addWireTap: function (callback) { - var self = this; - self.wireTaps.push(callback); - return function () { - var idx = self.wireTaps.indexOf(callback); - if (idx !== -1) { - self.wireTaps.splice(idx, 1); - } - }; - }, - - publish: function (envelope) { - ++pubInProgress; - envelope.timeStamp = new Date(); - _.each(this.wireTaps, function (tap) { - tap(envelope.data, envelope); - }); - if (this.subscriptions[envelope.channel]) { - _.each(this.subscriptions[envelope.channel], function (subscribers) { - var idx = 0, - len = subscribers.length, - subDef; - while (idx < len) { - if (subDef = subscribers[idx++]) { - fireSub(subDef, envelope); - } - } - }); - } - if (--pubInProgress === 0) { - clearUnSubQueue(); - } - return envelope; - }, - - reset: function () { - if (this.subscriptions) { - _.each(this.subscriptions, function (channel) { - _.each(channel, function (topic) { - while (topic.length) { - topic.pop().unsubscribe(); - } - }); - }); - this.subscriptions = {}; - } - }, - - subscribe: function (subDef) { - var channel = this.subscriptions[subDef.channel], - subs; - if (!channel) { - channel = this.subscriptions[subDef.channel] = {}; - } - subs = this.subscriptions[subDef.channel][subDef.topic]; - if (!subs) { - subs = this.subscriptions[subDef.channel][subDef.topic] = []; - } - subs.push(subDef); - return subDef; - }, - - subscriptions: {}, - - wireTaps: [], - - unsubscribe: function (config) { - if (pubInProgress) { - unSubQueue.push(config); - return; - } - if (this.subscriptions[config.channel][config.topic]) { - var len = this.subscriptions[config.channel][config.topic].length, - idx = 0; - while (idx < len) { - if (this.subscriptions[config.channel][config.topic][idx] === config) { - this.subscriptions[config.channel][config.topic].splice(idx, 1); - break; - } - idx += 1; - } - } - } - }; - - - postal = { - configuration: { - bus: localBus, - resolver: bindingsResolver, - DEFAULT_CHANNEL: "/", - SYSTEM_CHANNEL: "postal" - }, - - ChannelDefinition: ChannelDefinition, - SubscriptionDefinition: SubscriptionDefinition, - - channel: function (channelName) { - return new ChannelDefinition(channelName); - }, - - subscribe: function (options) { - return new SubscriptionDefinition(options.channel || postal.configuration.DEFAULT_CHANNEL, options.topic, options.callback); - }, - - publish: function (envelope) { - envelope.channel = envelope.channel || postal.configuration.DEFAULT_CHANNEL; - return postal.configuration.bus.publish(envelope); - }, - - addWireTap: function (callback) { - return this.configuration.bus.addWireTap(callback); - }, - - linkChannels: function (sources, destinations) { - var result = []; - sources = !_.isArray(sources) ? [sources] : sources; - destinations = !_.isArray(destinations) ? [destinations] : destinations; - _.each(sources, function (source) { - var sourceTopic = source.topic || "#"; - _.each(destinations, function (destination) { - var destChannel = destination.channel || postal.configuration.DEFAULT_CHANNEL; - result.push( - postal.subscribe({ - channel: source.channel || postal.configuration.DEFAULT_CHANNEL, - topic: sourceTopic, - callback: function (data, env) { - var newEnv = _.clone(env); - newEnv.topic = _.isFunction(destination.topic) ? destination.topic(env.topic) : destination.topic || env.topic; - newEnv.channel = destChannel; - newEnv.data = data; - postal.publish(newEnv); - } - })); - }); - }); - return result; - }, - - utils: { - getSubscribersFor: function () { - var channel = arguments[0], - tpc = arguments[1]; - if (arguments.length === 1) { - channel = arguments[0].channel || postal.configuration.DEFAULT_CHANNEL; - tpc = arguments[0].topic; - } - if (postal.configuration.bus.subscriptions[channel] && Object.prototype.hasOwnProperty.call(postal.configuration.bus.subscriptions[channel], tpc)) { - return postal.configuration.bus.subscriptions[channel][tpc]; - } - return []; - }, - - reset: function () { - postal.configuration.bus.reset(); - postal.configuration.resolver.reset(); - } - } - }; - localBus.subscriptions[postal.configuration.SYSTEM_CHANNEL] = {}; - - - if (global && Object.prototype.hasOwnProperty.call(global, "__postalReady__") && _.isArray(global.__postalReady__)) { - while (global.__postalReady__.length) { - global.__postalReady__.shift().onReady(postal); - } - } - - - return postal; -})); \ No newline at end of file diff --git a/example/amd/js/libs/postal/postal.min.js b/example/amd/js/libs/postal/postal.min.js deleted file mode 100644 index 88db6ab..0000000 --- a/example/amd/js/libs/postal/postal.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * postal - Pub/Sub library providing wildcard subscriptions, complex message handling, etc. Works server and client-side. - * Author: Jim Cowart (http://freshbrewedcode.com/jimcowart) - * Version: v0.8.11 - * Url: http://github.com/postaljs/postal.js - * License(s): MIT, GPL - */ -(function(t,n){"object"==typeof module&&module.exports?module.exports=function(t){return t=t||require("underscore"),n(t)}:"function"==typeof define&&define.amd?define(["underscore"],function(i){return n(i,t)}):t.postal=n(t._,t)})(this,function(t,n){var i,s=function(){var n;return function(i){var s=!1;return t.isString(i)?(s=i===n,n=i):(s=t.isEqual(i,n),n=t.clone(i)),!s}},e=function(){var n=[];return function(i){var s=!t.any(n,function(n){return t.isObject(i)||t.isArray(i)?t.isEqual(i,n):i===n});return s&&n.push(i),s}},c=function(t){this.channel=t||i.configuration.DEFAULT_CHANNEL};c.prototype.subscribe=function(){return 1===arguments.length?new r(this.channel,arguments[0].topic,arguments[0].callback):new r(this.channel,arguments[0],arguments[1])},c.prototype.publish=function(){var t=1===arguments.length?"[object String]"===Object.prototype.toString.call(arguments[0])?{topic:arguments[0]}:arguments[0]:{topic:arguments[0],data:arguments[1]};return t.channel=this.channel,i.configuration.bus.publish(t)};var r=function(t,n,s){if(3!==arguments.length)throw new Error("You must provide a channel, topic and callback when creating a SubscriptionDefinition instance.");if(0===n.length)throw new Error("Topics cannot be empty");this.channel=t,this.topic=n,this.callback=s,this.constraints=[],this.context=null,i.configuration.bus.publish({channel:i.configuration.SYSTEM_CHANNEL,topic:"subscription.created",data:{event:"subscription.created",channel:t,topic:n}}),i.configuration.bus.subscribe(this)};r.prototype={unsubscribe:function(){this.inactive||(this.inactive=!0,i.configuration.bus.unsubscribe(this),i.configuration.bus.publish({channel:i.configuration.SYSTEM_CHANNEL,topic:"subscription.removed",data:{event:"subscription.removed",channel:this.channel,topic:this.topic}}))},defer:function(){var t=this,n=this.callback;return this.callback=function(i,s){setTimeout(function(){n.call(t.context,i,s)},0)},this},disposeAfter:function(n){if(t.isNaN(n)||0>=n)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";var i=this,s=this.callback,e=t.after(n,t.bind(function(){this.unsubscribe()},this));return this.callback=function(){s.apply(i.context,arguments),e()},this},distinctUntilChanged:function(){return this.withConstraint(new s),this},distinct:function(){return this.withConstraint(new e),this},once:function(){return this.disposeAfter(1),this},withConstraint:function(n){if(!t.isFunction(n))throw"Predicate constraint must be a function";return this.constraints.push(n),this},withConstraints:function(n){var i=this;return t.isArray(n)&&t.each(n,function(t){i.withConstraint(t)}),i},withContext:function(t){return this.context=t,this},withDebounce:function(n,i){if(t.isNaN(n))throw"Milliseconds must be a number";var s=this.callback;return this.callback=t.debounce(s,n,!!i),this},withDelay:function(n){if(t.isNaN(n))throw"Milliseconds must be a number";var i=this,s=this.callback;return this.callback=function(t,e){setTimeout(function(){s.call(i.context,t,e)},n)},this},withThrottle:function(n){if(t.isNaN(n))throw"Milliseconds must be a number";var i=this.callback;return this.callback=t.throttle(i,n),this},subscribe:function(t){return this.callback=t,this}};var o={cache:{},regex:{},compare:function(n,i){var s,e,c,r=this.cache[i]&&this.cache[i][n];return"undefined"!=typeof r?r:((e=this.regex[n])||(s="^"+t.map(n.split("."),function(t){var n="";return c&&(n="#"!==c?"\\.\\b":"\\b"),n+="#"===t?"[\\s\\S]*":"*"===t?"[^.]+":t,c=t,n}).join("")+"$",e=this.regex[n]=new RegExp(s)),this.cache[i]=this.cache[i]||{},this.cache[i][n]=r=e.test(i),r)},reset:function(){this.cache={},this.regex={}}},a=function(n,s){!n.inactive&&i.configuration.resolver.compare(n.topic,s.topic)&&t.all(n.constraints,function(t){return t.call(n.context,s.data,s)})&&"function"==typeof n.callback&&n.callback.call(n.context,s.data,s)},u=0,h=[],l=function(){for(;h.length;)f.unsubscribe(h.shift())},f={addWireTap:function(t){var n=this;return n.wireTaps.push(t),function(){var i=n.wireTaps.indexOf(t);-1!==i&&n.wireTaps.splice(i,1)}},publish:function(n){return++u,n.timeStamp=new Date,t.each(this.wireTaps,function(t){t(n.data,n)}),this.subscriptions[n.channel]&&t.each(this.subscriptions[n.channel],function(t){for(var i,s=0,e=t.length;e>s;)(i=t[s++])&&a(i,n)}),0===--u&&l(),n},reset:function(){this.subscriptions&&(t.each(this.subscriptions,function(n){t.each(n,function(t){for(;t.length;)t.pop().unsubscribe()})}),this.subscriptions={})},subscribe:function(t){var n,i=this.subscriptions[t.channel];return i||(i=this.subscriptions[t.channel]={}),n=this.subscriptions[t.channel][t.topic],n||(n=this.subscriptions[t.channel][t.topic]=[]),n.push(t),t},subscriptions:{},wireTaps:[],unsubscribe:function(t){if(u)return void h.push(t);if(this.subscriptions[t.channel][t.topic])for(var n=this.subscriptions[t.channel][t.topic].length,i=0;n>i;){if(this.subscriptions[t.channel][t.topic][i]===t){this.subscriptions[t.channel][t.topic].splice(i,1);break}i+=1}}};if(i={configuration:{bus:f,resolver:o,DEFAULT_CHANNEL:"/",SYSTEM_CHANNEL:"postal"},ChannelDefinition:c,SubscriptionDefinition:r,channel:function(t){return new c(t)},subscribe:function(t){return new r(t.channel||i.configuration.DEFAULT_CHANNEL,t.topic,t.callback)},publish:function(t){return t.channel=t.channel||i.configuration.DEFAULT_CHANNEL,i.configuration.bus.publish(t)},addWireTap:function(t){return this.configuration.bus.addWireTap(t)},linkChannels:function(n,s){var e=[];return n=t.isArray(n)?n:[n],s=t.isArray(s)?s:[s],t.each(n,function(n){var c=n.topic||"#";t.each(s,function(s){var r=s.channel||i.configuration.DEFAULT_CHANNEL;e.push(i.subscribe({channel:n.channel||i.configuration.DEFAULT_CHANNEL,topic:c,callback:function(n,e){var c=t.clone(e);c.topic=t.isFunction(s.topic)?s.topic(e.topic):s.topic||e.topic,c.channel=r,c.data=n,i.publish(c)}}))})}),e},utils:{getSubscribersFor:function(){var t=arguments[0],n=arguments[1];return 1===arguments.length&&(t=arguments[0].channel||i.configuration.DEFAULT_CHANNEL,n=arguments[0].topic),i.configuration.bus.subscriptions[t]&&Object.prototype.hasOwnProperty.call(i.configuration.bus.subscriptions[t],n)?i.configuration.bus.subscriptions[t][n]:[]},reset:function(){i.configuration.bus.reset(),i.configuration.resolver.reset()}}},f.subscriptions[i.configuration.SYSTEM_CHANNEL]={},n&&Object.prototype.hasOwnProperty.call(n,"__postalReady__")&&t.isArray(n.__postalReady__))for(;n.__postalReady__.length;)n.__postalReady__.shift().onReady(i);return i}); \ No newline at end of file diff --git a/example/amd/js/libs/require/require.js b/example/amd/js/libs/require/require.js deleted file mode 100644 index edc08bb..0000000 --- a/example/amd/js/libs/require/require.js +++ /dev/null @@ -1,621 +0,0 @@ -/* - RequireJS 1.0.2 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - Available via the MIT or new BSD license. - see: http://github.com/jrburke/requirejs for details - */ -var requirejs, require, define; -(function () { - function J( a ) { - return M.call( a ) === "[object Function]" - } - - function E( a ) { - return M.call( a ) === "[object Array]" - } - - function Z( a, c, h ) { - for ( var k in c ) { - if ( !(k in K) && (!(k in a) || h) ) { - a[k] = c[k]; - } - } - return d - } - - function N( a, c, d ) { - a = Error( c + "\nhttp://requirejs.org/docs/errors.html#" + a ); - if ( d ) { - a.originalError = d; - } - return a - } - - function $( a, c, d ) { - var k, j, q; - for ( k = 0; q = c[k]; k++ ) { - q = typeof q === "string" ? {name : q} : q; - j = q.location; - if ( d && (!j || j.indexOf( "/" ) !== 0 && j.indexOf( ":" ) === -1) ) { - j = d + "/" + (j || q.name); - } - a[q.name] = {name : q.name, location : j || - q.name, main : (q.main || "main").replace( ea, "" ).replace( aa, "" )} - } - } - - function V( a, c ) { - a.holdReady ? a.holdReady( c ) : c ? a.readyWait += 1 : a.ready( !0 ) - } - - function fa( a ) { - function c( b, l ) { - var f, a; - if ( b && b.charAt( 0 ) === "." ) { - if ( l ) { - p.pkgs[l] ? l = [l] : (l = l.split( "/" ), l = l.slice( 0, l.length - 1 )); - f = b = l.concat( b.split( "/" ) ); - var c; - for ( a = 0; c = f[a]; a++ ) { - if ( c === "." ) { - f.splice( a, 1 ), a -= 1; - } else if ( c === ".." ) { - if ( a === 1 && (f[2] === ".." || f[0] === "..") ) { - break; - } else { - a > 0 && (f.splice( a - 1, 2 ), a -= 2); - } - } - } - a = p.pkgs[f = b[0]]; - b = b.join( "/" ); - a && b === f + "/" + a.main && (b = f) - } else { - b.indexOf( "./" ) === - 0 && (b = b.substring( 2 )); - } - } - return b - } - - function h( b, l ) { - var f = b ? b.indexOf( "!" ) : -1, a = null, d = l ? l.name : null, i = b, e, h; - f !== -1 && (a = b.substring( 0, f ), b = b.substring( f + 1, b.length )); - a && (a = c( a, d )); - b && (a ? e = (f = m[a]) && f.normalize ? f.normalize( b, function ( b ) { - return c( b, d ) - } ) : c( b, d ) : (e = c( b, d ), h = E[e], h || (h = g.nameToUrl( e, null, l ), E[e] = h))); - return{prefix : a, name : e, parentMap : l, url : h, originalName : i, fullName : a ? a + "!" + (e || "") : e} - } - - function k() { - var b = !0, l = p.priorityWait, f, a; - if ( l ) { - for ( a = 0; f = l[a]; a++ ) { - if ( !s[f] ) { - b = !1; - break - } - } - b && delete p.priorityWait - } - return b - } - - function j( b, l, f ) { - return function () { - var a = ga.call( arguments, 0 ), c; - if ( f && J( c = a[a.length - 1] ) ) { - c.__requireJsBuild = !0; - } - a.push( l ); - return b.apply( null, a ) - } - } - - function q( b, l ) { - var a = j( g.require, b, l ); - Z( a, {nameToUrl : j( g.nameToUrl, b ), toUrl : j( g.toUrl, b ), defined : j( g.requireDefined, b ), specified : j( g.requireSpecified, b ), isBrowser : d.isBrowser} ); - return a - } - - function o( b ) { - var l, a, c, C = b.callback, i = b.map, e = i.fullName, ba = b.deps; - c = b.listeners; - if ( C && J( C ) ) { - if ( p.catchError.define ) { - try { - a = d.execCb( e, b.callback, ba, m[e] ) - } catch ( k ) { - l = k - } - } else { - a = - d.execCb( e, b.callback, ba, m[e] ); - } - if ( e ) { - (C = b.cjsModule) && C.exports !== void 0 && C.exports !== m[e] ? a = m[e] = b.cjsModule.exports : a === void 0 && b.usingExports ? a = m[e] : (m[e] = a, F[e] && (Q[e] = !0)) - } - } else { - e && (a = m[e] = C, F[e] && (Q[e] = !0)); - } - if ( D[b.id] ) { - delete D[b.id], b.isDone = !0, g.waitCount -= 1, g.waitCount === 0 && (I = []); - } - delete R[e]; - if ( d.onResourceLoad && !b.placeholder ) { - d.onResourceLoad( g, i, b.depArray ); - } - if ( l ) { - return a = (e ? h( e ).url : "") || l.fileName || l.sourceURL, c = l.moduleTree, l = N( "defineerror", 'Error evaluating module "' + e + '" at location "' + - a + '":\n' + l + "\nfileName:" + a + "\nlineNumber: " + (l.lineNumber || l.line), l ), l.moduleName = e, l.moduleTree = c, d.onError( l ); - } - for ( l = 0; C = c[l]; l++ ) { - C( a ) - } - } - - function r( b, a ) { - return function ( f ) { - b.depDone[a] || (b.depDone[a] = !0, b.deps[a] = f, b.depCount -= 1, b.depCount || o( b )) - } - } - - function u( b, a ) { - var f = a.map, c = f.fullName, h = f.name, i = L[b] || (L[b] = m[b]), e; - if ( !a.loading ) { - a.loading = !0, e = function ( b ) { - a.callback = function () { - return b - }; - o( a ); - s[a.id] = !0; - w() - }, e.fromText = function ( b, a ) { - var l = O; - s[b] = !1; - g.scriptCount += 1; - g.fake[b] = !0; - l && (O = !1); - d.exec( a ); - l && (O = !0); - g.completeLoad( b ) - }, c in m ? e( m[c] ) : i.load( h, q( f.parentMap, !0 ), e, p ) - } - } - - function v( b ) { - D[b.id] || (D[b.id] = b, I.push( b ), g.waitCount += 1) - } - - function B( b ) { - this.listeners.push( b ) - } - - function t( b, a ) { - var f = b.fullName, c = b.prefix, d = c ? L[c] || (L[c] = m[c]) : null, i, e; - f && (i = R[f]); - if ( !i && (e = !0, i = {id : (c && !d ? M++ + "__p@:" : "") + (f || "__r@" + M++), map : b, depCount : 0, depDone : [], depCallbacks : [], deps : [], listeners : [], add : B}, y[i.id] = !0, f && (!c || L[c])) ) { - R[f] = i; - } - c && !d ? (f = t( h( c ), !0 ), f.add( function () { - var a = h( b.originalName, b.parentMap ), a = t( a, - !0 ); - i.placeholder = !0; - a.add( function ( b ) { - i.callback = function () { - return b - }; - o( i ) - } ) - } )) : e && a && (s[i.id] = !1, g.paused.push( i ), v( i )); - return i - } - - function x( b, a, f, c ) { - var b = h( b, c ), d = b.name, i = b.fullName, e = t( b ), k = e.id, j = e.deps, n; - if ( i ) { - if ( i in m || s[k] === !0 || i === "jquery" && p.jQuery && p.jQuery !== f().fn.jquery ) { - return; - } - y[k] = !0; - s[k] = !0; - i === "jquery" && f && S( f() ) - } - e.depArray = a; - e.callback = f; - for ( f = 0; f < a.length; f++ ) { - if ( k = a[f] ) { - k = h( k, d ? b : c ), n = k.fullName, a[f] = n, n === "require" ? j[f] = q( b ) : n === "exports" ? (j[f] = m[i] = {}, e.usingExports = !0) : n === - "module" ? e.cjsModule = j[f] = {id : d, uri : d ? g.nameToUrl( d, null, c ) : void 0, exports : m[i]} : n in m && !(n in D) && (!(i in F) || i in F && Q[n]) ? j[f] = m[n] : (i in F && (F[n] = !0, delete m[n], T[k.url] = !1), e.depCount += 1, e.depCallbacks[f] = r( e, f ), t( k, !0 ).add( e.depCallbacks[f] )); - } - } - e.depCount ? v( e ) : o( e ) - } - - function n( b ) { - x.apply( null, b ) - } - - function z( b, a ) { - if ( !b.isDone ) { - var c = b.map.fullName, d = b.depArray, g, i, e, k; - if ( c ) { - if ( a[c] ) { - return m[c]; - } - a[c] = !0 - } - if ( d ) { - for ( g = 0; g < d.length; g++ ) { - if ( i = d[g] ) { - if ( (e = h( i ).prefix) && (k = D[e]) && z( k, a ), (e = D[i]) && !e.isDone && - s[i] ) { - i = z( e, a ), b.depCallbacks[g]( i ); - } - } - } - } - return c ? m[c] : void 0 - } - } - - function A() { - var b = p.waitSeconds * 1E3, a = b && g.startTime + b < (new Date).getTime(), b = "", c = !1, h = !1, j; - if ( !(g.pausedCount > 0) ) { - if ( p.priorityWait ) { - if ( k() ) { - w(); - } else { - return; - } - } - for ( j in s ) { - if ( !(j in K) && (c = !0, !s[j]) ) { - if ( a ) { - b += j + " "; - } else { - h = !0; - break - } - } - } - if ( c || g.waitCount ) { - if ( a && b ) { - return j = N( "timeout", "Load timeout for modules: " + b ), j.requireType = "timeout", j.requireModules = b, d.onError( j ); - } - if ( h || g.scriptCount ) { - if ( (G || ca) && !W ) { - W = setTimeout( function () { - W = 0; - A() - }, 50 ) - } - } else { - if ( g.waitCount ) { - for ( H = - 0; b = I[H]; H++ ) { - z( b, {} ); - } - g.paused.length && w(); - X < 5 && (X += 1, A()) - } - X = 0; - d.checkReadyState() - } - } - } - } - - var g, w, p = {waitSeconds : 7, baseUrl : "./", paths : {}, pkgs : {}, catchError : {}}, P = [], y = {require : !0, exports : !0, module : !0}, E = {}, m = {}, s = {}, D = {}, I = [], T = {}, M = 0, R = {}, L = {}, F = {}, Q = {}, Y = 0; - S = function ( b ) { - if ( !g.jQuery && (b = b || (typeof jQuery !== "undefined" ? jQuery : null)) && !(p.jQuery && b.fn.jquery !== p.jQuery) && ("holdReady"in b || "readyWait"in b) ) { - if ( g.jQuery = b, n( ["jquery", [], function () { - return jQuery - }] ), g.scriptCount ) { - V( b, !0 ), g.jQueryIncremented = - !0 - } - } - }; - w = function () { - var b, a, c, h, j, i; - Y += 1; - if ( g.scriptCount <= 0 ) { - g.scriptCount = 0; - } - for ( ; P.length; ) { - if ( b = P.shift(), b[0] === null ) { - return d.onError( N( "mismatch", "Mismatched anonymous define() module: " + b[b.length - 1] ) ); - } else { - n( b ); - } - } - if ( !p.priorityWait || k() ) { - for ( ; g.paused.length; ) { - j = g.paused; - g.pausedCount += j.length; - g.paused = []; - for ( h = 0; b = j[h]; h++ ) { - a = b.map, c = a.url, i = a.fullName, a.prefix ? u( a.prefix, b ) : !T[c] && !s[i] && (d.load( g, i, c ), c.indexOf( "empty:" ) !== 0 && (T[c] = !0)); - } - g.startTime = (new Date).getTime(); - g.pausedCount -= j.length - } - } - Y === - 1 && A(); - Y -= 1 - }; - g = {contextName : a, config : p, defQueue : P, waiting : D, waitCount : 0, specified : y, loaded : s, urlMap : E, urlFetched : T, scriptCount : 0, defined : m, paused : [], pausedCount : 0, plugins : L, needFullExec : F, fake : {}, fullExec : Q, managerCallbacks : R, makeModuleMap : h, normalize : c, configure : function ( b ) { - var a, c, d; - b.baseUrl && b.baseUrl.charAt( b.baseUrl.length - 1 ) !== "/" && (b.baseUrl += "/"); - a = p.paths; - d = p.pkgs; - Z( p, b, !0 ); - if ( b.paths ) { - for ( c in b.paths ) { - c in K || (a[c] = b.paths[c]); - } - p.paths = a - } - if ( (a = b.packagePaths) || b.packages ) { - if ( a ) { - for ( c in a ) { - c in - K || $( d, a[c], c ); - } - } - b.packages && $( d, b.packages ); - p.pkgs = d - } - if ( b.priority ) { - c = g.requireWait, g.requireWait = !1, g.takeGlobalQueue(), w(), g.require( b.priority ), w(), g.requireWait = c, p.priorityWait = b.priority; - } - if ( b.deps || b.callback ) { - g.require( b.deps || [], b.callback ) - } - }, requireDefined : function ( b, a ) { - return h( b, a ).fullName in m - }, requireSpecified : function ( b, a ) { - return h( b, a ).fullName in y - }, require : function ( b, c, f ) { - if ( typeof b === "string" ) { - if ( J( c ) ) { - return d.onError( N( "requireargs", "Invalid require call" ) ); - } - if ( d.get ) { - return d.get( g, - b, c ); - } - c = h( b, c ); - b = c.fullName; - return!(b in m) ? d.onError( N( "notloaded", "Module name '" + c.fullName + "' has not been loaded yet for context: " + a ) ) : m[b] - } - (b && b.length || c) && x( null, b, c, f ); - if ( !g.requireWait ) { - for ( ; !g.scriptCount && g.paused.length; ) { - g.takeGlobalQueue(), w(); - } - } - return g.require - }, takeGlobalQueue : function () { - U.length && (ha.apply( g.defQueue, [g.defQueue.length - 1, 0].concat( U ) ), U = []) - }, completeLoad : function ( b ) { - var a; - for ( g.takeGlobalQueue(); P.length; ) { - if ( a = P.shift(), a[0] === null ) { - a[0] = b; - break - } else if ( a[0] === b ) { - break; - } - else { - n( a ), a = null; - } - } - a ? n( a ) : n( [b, [], b === "jquery" && typeof jQuery !== "undefined" ? function () { - return jQuery - } : null] ); - S(); - d.isAsync && (g.scriptCount -= 1); - w(); - d.isAsync || (g.scriptCount -= 1) - }, toUrl : function ( a, c ) { - var d = a.lastIndexOf( "." ), h = null; - d !== -1 && (h = a.substring( d, a.length ), a = a.substring( 0, d )); - return g.nameToUrl( a, h, c ) - }, nameToUrl : function ( a, h, f ) { - var j, k, i, e, m = g.config, a = c( a, f && f.fullName ); - if ( d.jsExtRegExp.test( a ) ) { - h = a + (h ? h : ""); - } else { - j = m.paths; - k = m.pkgs; - f = a.split( "/" ); - for ( e = f.length; e > 0; e-- ) { - if ( i = f.slice( 0, e ).join( "/" ), - j[i] ) { - f.splice( 0, e, j[i] ); - break - } else if ( i = k[i] ) { - a = a === i.name ? i.location + "/" + i.main : i.location; - f.splice( 0, e, a ); - break - } - } - h = f.join( "/" ) + (h || ".js"); - h = (h.charAt( 0 ) === "/" || h.match( /^\w+:/ ) ? "" : m.baseUrl) + h - } - return m.urlArgs ? h + ((h.indexOf( "?" ) === -1 ? "?" : "&") + m.urlArgs) : h - }}; - g.jQueryCheck = S; - g.resume = w; - return g - } - - function ia() { - var a, c, d; - if ( n && n.readyState === "interactive" ) { - return n; - } - a = document.getElementsByTagName( "script" ); - for ( c = a.length - 1; c > -1 && (d = a[c]); c-- ) { - if ( d.readyState === "interactive" ) { - return n = d; - } - } - return null - } - - var ja = - /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg, ka = /require\(\s*["']([^'"\s]+)["']\s*\)/g, ea = /^\.\//, aa = /\.js$/, M = Object.prototype.toString, r = Array.prototype, ga = r.slice, ha = r.splice, G = !!(typeof window !== "undefined" && navigator && document), ca = !G && typeof importScripts !== "undefined", la = G && navigator.platform === "PLAYSTATION 3" ? /^complete$/ : /^(complete|loaded)$/, da = typeof opera !== "undefined" && opera.toString() === "[object Opera]", K = {}, t = {}, U = [], n = null, X = 0, O = !1, d, r = {}, I, v, x, y, u, z, A, H, B, S, W; - if ( typeof define === "undefined" ) { - if ( typeof requirejs !== - "undefined" ) { - if ( J( requirejs ) ) { - return; - } else { - r = requirejs, requirejs = void 0; - } - } - typeof require !== "undefined" && !J( require ) && (r = require, require = void 0); - d = requirejs = function ( a, c, d ) { - var k = "_", j; - !E( a ) && typeof a !== "string" && (j = a, E( c ) ? (a = c, c = d) : a = []); - if ( j && j.context ) { - k = j.context; - } - d = t[k] || (t[k] = fa( k )); - j && d.configure( j ); - return d.require( a, c ) - }; - d.config = function ( a ) { - return d( a ) - }; - require || (require = d); - d.toUrl = function ( a ) { - return t._.toUrl( a ) - }; - d.version = "1.0.2"; - d.jsExtRegExp = /^\/|:|\?|\.js$/; - v = d.s = {contexts : t, skipAsync : {}}; - if ( d.isAsync = - d.isBrowser = G ) { - if ( x = v.head = document.getElementsByTagName( "head" )[0], y = document.getElementsByTagName( "base" )[0] ) { - x = v.head = y.parentNode; - } - } - d.onError = function ( a ) { - throw a; - }; - d.load = function ( a, c, h ) { - d.resourcesReady( !1 ); - a.scriptCount += 1; - d.attach( h, a, c ); - if ( a.jQuery && !a.jQueryIncremented ) { - V( a.jQuery, !0 ), a.jQueryIncremented = !0 - } - }; - define = function ( a, c, d ) { - var k, j; - typeof a !== "string" && (d = c, c = a, a = null); - E( c ) || (d = c, c = []); - !c.length && J( d ) && d.length && (d.toString().replace( ja, "" ).replace( ka, function ( a, d ) { - c.push( d ) - } ), c = (d.length === - 1 ? ["require"] : ["require", "exports", "module"]).concat( c )); - if ( O && (k = I || ia()) ) { - a || (a = k.getAttribute( "data-requiremodule" )), j = t[k.getAttribute( "data-requirecontext" )]; - } - (j ? j.defQueue : U).push( [a, c, d] ) - }; - define.amd = {multiversion : !0, plugins : !0, jQuery : !0}; - d.exec = function ( a ) { - return eval( a ) - }; - d.execCb = function ( a, c, d, k ) { - return c.apply( k, d ) - }; - d.addScriptToDom = function ( a ) { - I = a; - y ? x.insertBefore( a, y ) : x.appendChild( a ); - I = null - }; - d.onScriptLoad = function ( a ) { - var c = a.currentTarget || a.srcElement, h; - if ( a.type === "load" || c && la.test( c.readyState ) ) { - n = - null, a = c.getAttribute( "data-requirecontext" ), h = c.getAttribute( "data-requiremodule" ), t[a].completeLoad( h ), c.detachEvent && !da ? c.detachEvent( "onreadystatechange", d.onScriptLoad ) : c.removeEventListener( "load", d.onScriptLoad, !1 ) - } - }; - d.attach = function ( a, c, h, k, j, n ) { - var o; - if ( G ) { - return k = k || d.onScriptLoad, o = c && c.config && c.config.xhtml ? document.createElementNS( "http://www.w3.org/1999/xhtml", "html:script" ) : document.createElement( "script" ), o.type = j || "text/javascript", o.charset = "utf-8", o.async = !v.skipAsync[a], c && o.setAttribute( "data-requirecontext", - c.contextName ), o.setAttribute( "data-requiremodule", h ), o.attachEvent && !da ? (O = !0, n ? o.onreadystatechange = function () { - if ( o.readyState === "loaded" ) { - o.onreadystatechange = null, o.attachEvent( "onreadystatechange", k ), n( o ) - } - } : o.attachEvent( "onreadystatechange", k )) : o.addEventListener( "load", k, !1 ), o.src = a, n || d.addScriptToDom( o ), o; - } else { - ca && (importScripts( a ), c.completeLoad( h )); - } - return null - }; - if ( G ) { - u = document.getElementsByTagName( "script" ); - for ( H = u.length - 1; H > -1 && (z = u[H]); H-- ) { - if ( !x ) { - x = z.parentNode; - } - if ( A = z.getAttribute( "data-main" ) ) { - if ( !r.baseUrl ) { - u = - A.split( "/" ), z = u.pop(), u = u.length ? u.join( "/" ) + "/" : "./", r.baseUrl = u, A = z.replace( aa, "" ); - } - r.deps = r.deps ? r.deps.concat( A ) : [A]; - break - } - } - } - d.checkReadyState = function () { - var a = v.contexts, c; - for ( c in a ) { - if ( !(c in K) && a[c].waitCount ) { - return; - } - } - d.resourcesReady( !0 ) - }; - d.resourcesReady = function ( a ) { - var c, h; - d.resourcesDone = a; - if ( d.resourcesDone ) { - for ( h in a = v.contexts, a ) { - if ( !(h in K) && (c = a[h], c.jQueryIncremented) ) { - V( c.jQuery, !1 ), c.jQueryIncremented = !1 - } - } - } - }; - d.pageLoaded = function () { - if ( document.readyState !== "complete" ) { - document.readyState = - "complete" - } - }; - if ( G && document.addEventListener && !document.readyState ) { - document.readyState = "loading", window.addEventListener( "load", d.pageLoaded, !1 ); - } - d( r ); - if ( d.isAsync && typeof setTimeout !== "undefined" ) { - B = v.contexts[r.context || "_"], B.requireWait = !0, setTimeout( function () { - B.requireWait = !1; - B.takeGlobalQueue(); - B.jQueryCheck(); - B.scriptCount || B.resume(); - d.checkReadyState() - }, 0 ) - } - } -})(); diff --git a/example/amd/js/libs/underscore/underscore-min.js b/example/amd/js/libs/underscore/underscore-min.js deleted file mode 100644 index 9bd5f31..0000000 --- a/example/amd/js/libs/underscore/underscore-min.js +++ /dev/null @@ -1,695 +0,0 @@ -// Underscore.js 1.2.2 -// (c) 2011 Jeremy Ashkenas, DocumentCloud Inc. -// Underscore is freely distributable under the MIT license. -// Portions of Underscore are inspired or borrowed from Prototype, -// Oliver Steele's Functional, and John Resig's Micro-Templating. -// For all details and documentation: -// http://documentcloud.github.com/underscore -(function () { - function r( a, c, d ) { - if ( a === c ) { - return a !== 0 || 1 / a == 1 / c; - } - if ( a == null || c == null ) { - return a === c; - } - if ( a._chain ) { - a = a._wrapped; - } - if ( c._chain ) { - c = c._wrapped; - } - if ( b.isFunction( a.isEqual ) ) { - return a.isEqual( c ); - } - if ( b.isFunction( c.isEqual ) ) { - return c.isEqual( a ); - } - var e = l.call( a ); - if ( e != l.call( c ) ) { - return false; - } - switch ( e ) { - case "[object String]": - return String( a ) == String( c ); - case "[object Number]": - return a = +a, c = +c, a != a ? c != c : a == 0 ? 1 / a == 1 / c : a == c; - case "[object Date]": - case "[object Boolean]": - return+a == +c; - case "[object RegExp]": - return a.source == - c.source && a.global == c.global && a.multiline == c.multiline && a.ignoreCase == c.ignoreCase - } - if ( typeof a != "object" || typeof c != "object" ) { - return false; - } - for ( var f = d.length; f--; ) { - if ( d[f] == a ) { - return true; - } - } - d.push( a ); - var f = 0, g = true; - if ( e == "[object Array]" ) { - if ( f = a.length, g = f == c.length ) { - for ( ; f--; ) { - if ( !(g = f in a == f in c && r( a[f], c[f], d )) ) { - break - } - } - } - } else { - if ( "constructor"in a != "constructor"in c || a.constructor != c.constructor ) { - return false; - } - for ( var h in a ) { - if ( m.call( a, h ) && (f++, !(g = m.call( c, h ) && r( a[h], c[h], d ))) ) { - break; - } - } - if ( g ) { - for ( h in c ) { - if ( m.call( c, - h ) && !f-- ) { - break; - } - } - g = !f - } - } - d.pop(); - return g - } - - var s = this, F = s._, o = {}, k = Array.prototype, p = Object.prototype, i = k.slice, G = k.unshift, l = p.toString, m = p.hasOwnProperty, v = k.forEach, w = k.map, x = k.reduce, y = k.reduceRight, z = k.filter, A = k.every, B = k.some, q = k.indexOf, C = k.lastIndexOf, p = Array.isArray, H = Object.keys, t = Function.prototype.bind, b = function ( a ) { - return new n( a ) - }; - if ( typeof exports !== "undefined" ) { - if ( typeof module !== "undefined" && module.exports ) { - exports = module.exports = b; - } - exports._ = b - } else { - typeof define === "function" && define.amd ? - define( "underscore", function () { - return b - } ) : s._ = b; - } - b.VERSION = "1.2.2"; - var j = b.each = b.forEach = function ( a, c, b ) { - if ( a != null ) { - if ( v && a.forEach === v ) { - a.forEach( c, b ); - } else if ( a.length === +a.length ) { - for ( var e = 0, f = a.length; e < f; e++ ) { - if ( e in a && c.call( b, a[e], e, a ) === o ) { - break - } - } - } else { - for ( e in a ) { - if ( m.call( a, e ) && c.call( b, a[e], e, a ) === o ) { - break - } - } - } - } - }; - b.map = function ( a, c, b ) { - var e = []; - if ( a == null ) { - return e; - } - if ( w && a.map === w ) { - return a.map( c, b ); - } - j( a, function ( a, g, h ) { - e[e.length] = c.call( b, a, g, h ) - } ); - return e - }; - b.reduce = b.foldl = b.inject = function ( a, c, d, e ) { - var f = - d !== void 0; - a == null && (a = []); - if ( x && a.reduce === x ) { - return e && (c = b.bind( c, e )), f ? a.reduce( c, d ) : a.reduce( c ); - } - j( a, function ( a, b, i ) { - f ? d = c.call( e, d, a, b, i ) : (d = a, f = true) - } ); - if ( !f ) { - throw new TypeError( "Reduce of empty array with no initial value" ); - } - return d - }; - b.reduceRight = b.foldr = function ( a, c, d, e ) { - a == null && (a = []); - if ( y && a.reduceRight === y ) { - return e && (c = b.bind( c, e )), d !== void 0 ? a.reduceRight( c, d ) : a.reduceRight( c ); - } - a = (b.isArray( a ) ? a.slice() : b.toArray( a )).reverse(); - return b.reduce( a, c, d, e ) - }; - b.find = b.detect = function ( a, c, b ) { - var e; - D( a, function ( a, g, h ) { - if ( c.call( b, a, g, h ) ) { - return e = a, true - } - } ); - return e - }; - b.filter = b.select = function ( a, c, b ) { - var e = []; - if ( a == null ) { - return e; - } - if ( z && a.filter === z ) { - return a.filter( c, b ); - } - j( a, function ( a, g, h ) { - c.call( b, a, g, h ) && (e[e.length] = a) - } ); - return e - }; - b.reject = function ( a, c, b ) { - var e = []; - if ( a == null ) { - return e; - } - j( a, function ( a, g, h ) { - c.call( b, a, g, h ) || (e[e.length] = a) - } ); - return e - }; - b.every = b.all = function ( a, c, b ) { - var e = true; - if ( a == null ) { - return e; - } - if ( A && a.every === A ) { - return a.every( c, b ); - } - j( a, function ( a, g, h ) { - if ( !(e = e && c.call( b, a, g, h )) ) { - return o - } - } ); - return e - }; - var D = b.some = b.any = function ( a, c, d ) { - var c = c || b.identity, e = false; - if ( a == null ) { - return e; - } - if ( B && a.some === B ) { - return a.some( c, d ); - } - j( a, function ( a, b, h ) { - if ( e || (e = c.call( d, a, b, h )) ) { - return o - } - } ); - return!!e - }; - b.include = b.contains = function ( a, c ) { - var b = false; - if ( a == null ) { - return b; - } - return q && a.indexOf === q ? a.indexOf( c ) != -1 : b = D( a, function ( a ) { - return a === c - } ) - }; - b.invoke = function ( a, c ) { - var d = i.call( arguments, 2 ); - return b.map( a, function ( a ) { - return(c.call ? c || a : a[c]).apply( a, d ) - } ) - }; - b.pluck = function ( a, c ) { - return b.map( a, function ( a ) { - return a[c] - } ) - }; - b.max = function ( a, c, d ) { - if ( !c && b.isArray( a ) ) { - return Math.max.apply( Math, a ); - } - if ( !c && b.isEmpty( a ) ) { - return-Infinity; - } - var e = {computed : -Infinity}; - j( a, function ( a, b, h ) { - b = c ? c.call( d, a, b, h ) : a; - b >= e.computed && (e = {value : a, computed : b}) - } ); - return e.value - }; - b.min = function ( a, c, d ) { - if ( !c && b.isArray( a ) ) { - return Math.min.apply( Math, a ); - } - if ( !c && b.isEmpty( a ) ) { - return Infinity; - } - var e = {computed : Infinity}; - j( a, function ( a, b, h ) { - b = c ? c.call( d, a, b, h ) : a; - b < e.computed && (e = {value : a, computed : b}) - } ); - return e.value - }; - b.shuffle = function ( a ) { - var c = [], b; - j( a, function ( a, f ) { - f == 0 ? c[0] = a : (b = Math.floor( Math.random() * (f + 1) ), c[f] = c[b], c[b] = a) - } ); - return c - }; - b.sortBy = function ( a, c, d ) { - return b.pluck( b.map( a, - function ( a, b, g ) { - return{value : a, criteria : c.call( d, a, b, g )} - } ).sort( function ( a, c ) { - var b = a.criteria, d = c.criteria; - return b < d ? -1 : b > d ? 1 : 0 - } ), "value" ) - }; - b.groupBy = function ( a, c ) { - var d = {}, e = b.isFunction( c ) ? c : function ( a ) { - return a[c] - }; - j( a, function ( a, c ) { - var b = e( a, c ); - (d[b] || (d[b] = [])).push( a ) - } ); - return d - }; - b.sortedIndex = function ( a, c, d ) { - d || (d = b.identity); - for ( var e = 0, f = a.length; e < - f; ) { - var g = e + f >> 1; - d( a[g] ) < d( c ) ? e = g + 1 : f = g - } - return e - }; - b.toArray = function ( a ) { - return!a ? [] : a.toArray ? a.toArray() : b.isArray( a ) ? i.call( a ) : b.isArguments( a ) ? i.call( a ) : b.values( a ) - }; - b.size = function ( a ) { - return b.toArray( a ).length - }; - b.first = b.head = function ( a, b, d ) { - return b != null && !d ? i.call( a, 0, b ) : a[0] - }; - b.initial = function ( a, b, d ) { - return i.call( a, 0, a.length - (b == null || d ? 1 : b) ) - }; - b.last = function ( a, b, d ) { - return b != null && !d ? i.call( a, Math.max( a.length - b, 0 ) ) : a[a.length - 1] - }; - b.rest = b.tail = function ( a, b, d ) { - return i.call( a, b == null || - d ? 1 : b ) - }; - b.compact = function ( a ) { - return b.filter( a, function ( a ) { - return!!a - } ) - }; - b.flatten = function ( a, c ) { - return b.reduce( a, function ( a, e ) { - if ( b.isArray( e ) ) { - return a.concat( c ? e : b.flatten( e ) ); - } - a[a.length] = e; - return a - }, [] ) - }; - b.without = function ( a ) { - return b.difference( a, i.call( arguments, 1 ) ) - }; - b.uniq = b.unique = function ( a, c, d ) { - var d = d ? b.map( a, d ) : a, e = []; - b.reduce( d, function ( d, g, h ) { - if ( 0 == h || (c === true ? b.last( d ) != g : !b.include( d, g )) ) { - d[d.length] = g, e[e.length] = a[h]; - } - return d - }, [] ); - return e - }; - b.union = function () { - return b.uniq( b.flatten( arguments, - true ) ) - }; - b.intersection = b.intersect = function ( a ) { - var c = i.call( arguments, 1 ); - return b.filter( b.uniq( a ), function ( a ) { - return b.every( c, function ( c ) { - return b.indexOf( c, a ) >= 0 - } ) - } ) - }; - b.difference = function ( a, c ) { - return b.filter( a, function ( a ) { - return!b.include( c, a ) - } ) - }; - b.zip = function () { - for ( var a = i.call( arguments ), c = b.max( b.pluck( a, "length" ) ), d = Array( c ), e = 0; e < c; e++ ) { - d[e] = b.pluck( a, "" + e ); - } - return d - }; - b.indexOf = function ( a, c, d ) { - if ( a == null ) { - return-1; - } - var e; - if ( d ) { - return d = b.sortedIndex( a, c ), a[d] === c ? d : -1; - } - if ( q && a.indexOf === q ) { - return a.indexOf( c ); - } - for ( d = 0, e = a.length; d < e; d++ ) { - if ( a[d] === c ) { - return d; - } - } - return-1 - }; - b.lastIndexOf = function ( a, b ) { - if ( a == null ) { - return-1; - } - if ( C && a.lastIndexOf === C ) { - return a.lastIndexOf( b ); - } - for ( var d = a.length; d--; ) { - if ( a[d] === b ) { - return d; - } - } - return-1 - }; - b.range = function ( a, b, d ) { - arguments.length <= 1 && (b = a || 0, a = 0); - for ( var d = arguments[2] || 1, e = Math.max( Math.ceil( (b - a) / d ), 0 ), f = 0, g = Array( e ); f < e; ) { - g[f++] = a, a += d; - } - return g - }; - var E = function () { - }; - b.bind = function ( a, c ) { - var d, e; - if ( a.bind === t && t ) { - return t.apply( a, i.call( arguments, 1 ) ); - } - if ( !b.isFunction( a ) ) { - throw new TypeError; - } - e = i.call( arguments, 2 ); - return d = function () { - if ( !(this instanceof d) ) { - return a.apply( c, e.concat( i.call( arguments ) ) ); - } - E.prototype = a.prototype; - var b = new E, g = a.apply( b, e.concat( i.call( arguments ) ) ); - return Object( g ) === g ? g : b - } - }; - b.bindAll = function ( a ) { - var c = i.call( arguments, 1 ); - c.length == 0 && (c = b.functions( a )); - j( c, function ( c ) { - a[c] = b.bind( a[c], a ) - } ); - return a - }; - b.memoize = function ( a, c ) { - var d = {}; - c || (c = b.identity); - return function () { - var b = c.apply( this, arguments ); - return m.call( d, b ) ? d[b] : d[b] = a.apply( this, arguments ) - } - }; - b.delay = - function ( a, b ) { - var d = i.call( arguments, 2 ); - return setTimeout( function () { - return a.apply( a, d ) - }, b ) - }; - b.defer = function ( a ) { - return b.delay.apply( b, [a, 1].concat( i.call( arguments, 1 ) ) ) - }; - b.throttle = function ( a, c ) { - var d, e, f, g, h, i = b.debounce( function () { - h = g = false - }, c ); - return function () { - d = this; - e = arguments; - var b; - f || (f = setTimeout( function () { - f = null; - h && a.apply( d, e ); - i() - }, c )); - g ? h = true : a.apply( d, e ); - i(); - g = true - } - }; - b.debounce = function ( a, b ) { - var d; - return function () { - var e = this, f = arguments; - clearTimeout( d ); - d = setTimeout( function () { - d = - null; - a.apply( e, f ) - }, b ) - } - }; - b.once = function ( a ) { - var b = false, d; - return function () { - if ( b ) { - return d; - } - b = true; - return d = a.apply( this, arguments ) - } - }; - b.wrap = function ( a, b ) { - return function () { - var d = [a].concat( i.call( arguments ) ); - return b.apply( this, d ) - } - }; - b.compose = function () { - var a = i.call( arguments ); - return function () { - for ( var b = i.call( arguments ), d = a.length - 1; d >= 0; d-- ) { - b = [a[d].apply( this, b )]; - } - return b[0] - } - }; - b.after = function ( a, b ) { - return a <= 0 ? b() : function () { - if ( --a < 1 ) { - return b.apply( this, arguments ) - } - } - }; - b.keys = H || function ( a ) { - if ( a !== - Object( a ) ) { - throw new TypeError( "Invalid object" ); - } - var b = [], d; - for ( d in a ) { - m.call( a, d ) && (b[b.length] = d); - } - return b - }; - b.values = function ( a ) { - return b.map( a, b.identity ) - }; - b.functions = b.methods = function ( a ) { - var c = [], d; - for ( d in a ) { - b.isFunction( a[d] ) && c.push( d ); - } - return c.sort() - }; - b.extend = function ( a ) { - j( i.call( arguments, 1 ), function ( b ) { - for ( var d in b ) { - b[d] !== void 0 && (a[d] = b[d]) - } - } ); - return a - }; - b.defaults = function ( a ) { - j( i.call( arguments, 1 ), function ( b ) { - for ( var d in b ) { - a[d] == null && (a[d] = b[d]) - } - } ); - return a - }; - b.clone = function ( a ) { - return!b.isObject( a ) ? - a : b.isArray( a ) ? a.slice() : b.extend( {}, a ) - }; - b.tap = function ( a, b ) { - b( a ); - return a - }; - b.isEqual = function ( a, b ) { - return r( a, b, [] ) - }; - b.isEmpty = function ( a ) { - if ( b.isArray( a ) || b.isString( a ) ) { - return a.length === 0; - } - for ( var c in a ) { - if ( m.call( a, c ) ) { - return false; - } - } - return true - }; - b.isElement = function ( a ) { - return!!(a && a.nodeType == 1) - }; - b.isArray = p || function ( a ) { - return l.call( a ) == "[object Array]" - }; - b.isObject = function ( a ) { - return a === Object( a ) - }; - b.isArguments = l.call( arguments ) == "[object Arguments]" ? function ( a ) { - return l.call( a ) == "[object Arguments]" - } : - function ( a ) { - return!(!a || !m.call( a, "callee" )) - }; - b.isFunction = function ( a ) { - return l.call( a ) == "[object Function]" - }; - b.isString = function ( a ) { - return l.call( a ) == "[object String]" - }; - b.isNumber = function ( a ) { - return l.call( a ) == "[object Number]" - }; - b.isNaN = function ( a ) { - return a !== a - }; - b.isBoolean = function ( a ) { - return a === true || a === false || l.call( a ) == "[object Boolean]" - }; - b.isDate = function ( a ) { - return l.call( a ) == "[object Date]" - }; - b.isRegExp = function ( a ) { - return l.call( a ) == "[object RegExp]" - }; - b.isNull = function ( a ) { - return a === null - }; - b.isUndefined = function ( a ) { - return a === void 0 - }; - b.noConflict = function () { - s._ = F; - return this - }; - b.identity = function ( a ) { - return a - }; - b.times = function ( a, b, d ) { - for ( var e = 0; e < a; e++ ) { - b.call( d, e ) - } - }; - b.escape = function ( a ) { - return("" + a).replace( /&/g, "&" ).replace( //g, ">" ).replace( /"/g, """ ).replace( /'/g, "'" ).replace( /\//g, "/" ) - }; - b.mixin = function ( a ) { - j( b.functions( a ), function ( c ) { - I( c, b[c] = a[c] ) - } ) - }; - var J = 0; - b.uniqueId = function ( a ) { - var b = J++; - return a ? a + b : b - }; - b.templateSettings = {evaluate : /<%([\s\S]+?)%>/g, - interpolate : /<%=([\s\S]+?)%>/g, escape : /<%-([\s\S]+?)%>/g}; - b.template = function ( a, c ) { - var d = b.templateSettings, d = "var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('" + a.replace( /\\/g, "\\\\" ).replace( /'/g, "\\'" ).replace( d.escape, - function ( a, b ) { - return"',_.escape(" + b.replace( /\\'/g, "'" ) + "),'" - } ).replace( d.interpolate, - function ( a, b ) { - return"'," + b.replace( /\\'/g, "'" ) + ",'" - } ).replace( d.evaluate || null, - function ( a, b ) { - return"');" + b.replace( /\\'/g, "'" ).replace( /[\r\n\t]/g, " " ) + ";__p.push('" - } ).replace( /\r/g, - "\\r" ).replace( /\n/g, "\\n" ).replace( /\t/g, "\\t" ) + "');}return __p.join('');", e = new Function( "obj", "_", d ); - return c ? e( c, b ) : function ( a ) { - return e( a, b ) - } - }; - var n = function ( a ) { - this._wrapped = a - }; - b.prototype = n.prototype; - var u = function ( a, c ) { - return c ? b( a ).chain() : a - }, I = function ( a, c ) { - n.prototype[a] = function () { - var a = i.call( arguments ); - G.call( a, this._wrapped ); - return u( c.apply( b, a ), this._chain ) - } - }; - b.mixin( b ); - j( "pop,push,reverse,shift,sort,splice,unshift".split( "," ), function ( a ) { - var b = k[a]; - n.prototype[a] = function () { - b.apply( this._wrapped, - arguments ); - return u( this._wrapped, this._chain ) - } - } ); - j( ["concat", "join", "slice"], function ( a ) { - var b = k[a]; - n.prototype[a] = function () { - return u( b.apply( this._wrapped, arguments ), this._chain ) - } - } ); - n.prototype.chain = function () { - this._chain = true; - return this - }; - n.prototype.value = function () { - return this._wrapped - } -}).call( this ); diff --git a/example/amd/js/main.js b/example/amd/js/main.js index b546819..dd8ffdc 100644 --- a/example/amd/js/main.js +++ b/example/amd/js/main.js @@ -1,10 +1,15 @@ require.config( { paths : { - underscore : "libs/underscore/underscore-min", - postal : "libs/postal/postal", - postaldiags : "libs/postal/postal.diagnostics", - jquery : "libs/jquery/jquery-min" - } + underscore : "../../../bower/underscore/underscore-min", + postal : "../../../lib/postal", + postaldiags : "../../../bower/postal.diagnostics/lib/postal.diagnostics", + jquery : "../../../bower/jquery/jquery.min" + }, + shim : { + underscore: { + exports: "_" + } + } } ); require( [ "jquery" ], function ( $ ) { diff --git a/example/standard/index.html b/example/standard/index.html index 82407d6..e8080e9 100644 --- a/example/standard/index.html +++ b/example/standard/index.html @@ -4,10 +4,10 @@ Postal Examples (Standard Lib Format) - - - - + + + + diff --git a/example/standard/js/jquery-1.7.1.js b/example/standard/js/jquery-1.7.1.js deleted file mode 100644 index ff54c7c..0000000 --- a/example/standard/js/jquery-1.7.1.js +++ /dev/null @@ -1,9262 +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 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 = "
a"; - - 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>", - - // 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 = "
" + - "" + - "
"; - - 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 = "
t
"; - 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 = "
"; - 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 = ""; - - // 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 = ""; - - 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 = "

"; - - // 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 = "
"; - - // 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 = /", "" ], - legend : [ 1, "
", "
" ], - thead : [ 1, "", "
" ], - tr : [ 2, "", "
" ], - td : [ 3, "", "
" ], - col : [ 2, "", "
" ], - area : [ 1, "", "" ], - _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 and - + +