How to use jQuery.isFunction method in Cypress

Best JavaScript code snippet using cypress

Run Cypress automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

load.js

Source: load.js Github

copy
1define(['require', 'jquery', 'data_input/liveHTML', 'data_input/array', 'data_input/HTML', 
2'data_input/JSON', 'data_input/CSV', 'data_input/XML'],function (require) {
3    'use strict';
4    
5    var $, jquery;
6    $ = jquery = require('jquery');
7
8    function getLoadFunction(functionPath) {
9        if (jquery.isFunction(functionPath)) return functionPath;
10        if (typeof functionPath != "string") return null;
11        var functionArray = functionPath.split(".");
12        var fun =  window[functionArray[0]];
13        for (var i = 1; i < functionArray.length; i += 1) {
14            if (functionArray[i] == null) return null;
15            else if (fun != null) fun = fun[functionArray[i]];
16            else return null;
17        }
18        return fun;
19    }
20
21    /**
22     * For each input type there should be a corresponding function labeled
23     * under the caller Name
24     */
25    var typeFunctions = {
26        "liveHTML": require('data_input/liveHTML'),
27        "JSON": require('data_input/JSON'),
28        "array": require('data_input/array'),
29        "HTML": require('data_input/HTML'),
30        "XML": require('data_input/XML'),
31        "CSV": require('data_input/CSV')
32    };
33    
34    /**
35     * Calls the load function on the data produced by the data function
36     * the developer passed in
37     * @param {String} functionPath the name of the function to get the data from
38     * @param {String} dataType The data type the above function returns
39     */
40    function load(functionPath, dataType) {
41        // JSON is default data type
42        if (dataType == null) dataType = 'JSON';
43        var loadFunction = getLoadFunction(functionPath);
44
45        // determines if we can get the data from the elements passed in
46        if (typeFunctions[dataType] == null ||
47            !jquery.isFunction(typeFunctions[dataType]) ||
48            !jquery.isFunction(loadFunction)) return null;
49        // gets the developers data
50        var devData = loadFunction();
51        if (devData == null) return null;
52        // processes the data and returns 
53        return typeFunctions[dataType](devData);
54    }
55
56    return {
57        load: load,
58        loadTypes: function() {
59            return Object.keys(typeFunctions);
60        }
61    };
62});
Full Screen

jquery.zoom.js

Source: jquery.zoom.js Github

copy
1/*!
2	Zoom 1.7.21
3	license: MIT
4	http://www.jacklmoore.com/zoom
5*/
6(function (ymqJquery) {
7	var defaults = {
8		url: false,
9		callback: false,
10		target: false,
11		duration: 120,
12		on: 'mouseover', // other options: grab, click, toggle
13		touch: true, // enables a touch fallback
14		onZoomIn: false,
15		onZoomOut: false,
16		magnify: 1
17	};
18
19	// Core Zoom Logic, independent of event listeners.
20	ymqJquery.zoom = function(target, source, img, magnify) {
21		var targetHeight,
22			targetWidth,
23			sourceHeight,
24			sourceWidth,
25			xRatio,
26			yRatio,
27			offset,
28			$target = ymqJquery(target),
29			position = $target.css('position'),
30			$source = ymqJquery(source);
31
32		// The parent element needs positioning so that the zoomed element can be correctly positioned within.
33		target.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';
34		target.style.overflow = 'hidden';
35		img.style.width = img.style.height = '';
36
37		ymqJquery(img)
38			.addClass('zoomImg')
39			.css({
40				position: 'absolute',
41				top: 0,
42				left: 0,
43				opacity: 0,
44				width: img.width * magnify,
45				height: img.height * magnify,
46				border: 'none',
47				maxWidth: 'none',
48				maxHeight: 'none'
49			})
50			.appendTo(target);
51
52		return {
53			init: function() {
54				targetWidth = $target.outerWidth();
55				targetHeight = $target.outerHeight();
56
57				if (source === target) {
58					sourceWidth = targetWidth;
59					sourceHeight = targetHeight;
60				} else {
61					sourceWidth = $source.outerWidth();
62					sourceHeight = $source.outerHeight();
63				}
64
65				xRatio = (img.width - targetWidth) / sourceWidth;
66				yRatio = (img.height - targetHeight) / sourceHeight;
67
68				offset = $source.offset();
69			},
70			move: function (e) {
71				var left = (e.pageX - offset.left),
72					top = (e.pageY - offset.top);
73
74				top = Math.max(Math.min(top, sourceHeight), 0);
75				left = Math.max(Math.min(left, sourceWidth), 0);
76
77				img.style.left = (left * -xRatio) + 'px';
78				img.style.top = (top * -yRatio) + 'px';
79			}
80		};
81	};
82
83	ymqJquery.fn.zoom = function (options) {
84		return this.each(function () {
85			var
86			settings = ymqJquery.extend({}, defaults, options || {}),
87			//target will display the zoomed image
88			target = settings.target && ymqJquery(settings.target)[0] || this,
89			//source will provide zoom location info (thumbnail)
90			source = this,
91			$source = ymqJquery(source),
92			img = document.createElement('img'),
93			$img = ymqJquery(img),
94			mousemove = 'mousemove.zoom',
95			clicked = false,
96			touched = false;
97
98			// If a url wasn't specified, look for an image element.
99			if (!settings.url) {
100				var srcElement = source.querySelector('img');
101				if (srcElement) {
102					settings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;
103				}
104				if (!settings.url) {
105					return;
106				}
107			}
108
109			$source.one('zoom.destroy', function(position, overflow){
110				$source.off(".zoom");
111				target.style.position = position;
112				target.style.overflow = overflow;
113				img.onload = null;
114				$img.remove();
115			}.bind(this, target.style.position, target.style.overflow));
116
117			img.onload = function () {
118				var zoom = ymqJquery.zoom(target, source, img, settings.magnify);
119
120				function start(e) {
121					zoom.init();
122					zoom.move(e);
123
124					// Skip the fade-in for IE8 and lower since it chokes on fading-in
125					// and changing position based on mousemovement at the same time.
126					$img.stop()
127					.fadeTo(ymqJquery.support.opacity ? settings.duration : 0, 1, ymqJquery.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false);
128				}
129
130				function stop() {
131					$img.stop()
132					.fadeTo(settings.duration, 0, ymqJquery.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false);
133				}
134
135				// Mouse events
136				if (settings.on === 'grab') {
137					$source
138						.on('mousedown.zoom',
139							function (e) {
140								if (e.which === 1) {
141									ymqJquery(document).one('mouseup.zoom',
142										function () {
143											stop();
144
145											ymqJquery(document).off(mousemove, zoom.move);
146										}
147									);
148
149									start(e);
150
151									ymqJquery(document).on(mousemove, zoom.move);
152
153									e.preventDefault();
154								}
155							}
156						);
157				} else if (settings.on === 'click') {
158					$source.on('click.zoom',
159						function (e) {
160							if (clicked) {
161								// bubble the event up to the document to trigger the unbind.
162								return;
163							} else {
164								clicked = true;
165								start(e);
166								ymqJquery(document).on(mousemove, zoom.move);
167								ymqJquery(document).one('click.zoom',
168									function () {
169										stop();
170										clicked = false;
171										ymqJquery(document).off(mousemove, zoom.move);
172									}
173								);
174								return false;
175							}
176						}
177					);
178				} else if (settings.on === 'toggle') {
179					$source.on('click.zoom',
180						function (e) {
181							if (clicked) {
182								stop();
183							} else {
184								start(e);
185							}
186							clicked = !clicked;
187						}
188					);
189				} else if (settings.on === 'mouseover') {
190					zoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.
191
192					$source
193						.on('mouseenter.zoom', start)
194						.on('mouseleave.zoom', stop)
195						.on(mousemove, zoom.move);
196				}
197
198				// Touch fallback
199				if (settings.touch) {
200					$source
201						.on('touchstart.zoom', function (e) {
202							e.preventDefault();
203							if (touched) {
204								touched = false;
205								stop();
206							} else {
207								touched = true;
208								start( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
209							}
210						})
211						.on('touchmove.zoom', function (e) {
212							e.preventDefault();
213							zoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
214						})
215						.on('touchend.zoom', function (e) {
216							e.preventDefault();
217							if (touched) {
218								touched = false;
219								stop();
220							}
221						});
222				}
223				
224				if (ymqJquery.isFunction(settings.callback)) {
225					settings.callback.call(img);
226				}
227			};
228
229			img.setAttribute('role', 'presentation');
230			img.alt = '';
231			img.src = settings.url;
232		});
233	};
234
235	ymqJquery.fn.zoom.defaults = defaults;
236}(window.ymqJquery));
237
Full Screen

PagingTag.js

Source: PagingTag.js Github

copy
1/*
2 * jQuery 1.2.3 - New Wave Javascript
3 *
4 * Copyright (c) 2008 John Resig (jQuery.com)
5 * Dual licensed under the MIT (MIT-LICENSE.txt)
6 * and GPL (GPL-LICENSE.txt) licenses.
7 *
8 * $Date: 2009/01/16 08:55:34 $
9 * $Rev: 4663 $
10 */
11////////////////////////////////////////////////////////
12/*
13 * PagingTag 2.0.2
14 *
15 * Copyright (c) 2014 [email protected]
16 *
17 * 2014-11-24
18 */
19var PageRegionTag, PagingTag; !
20function() {
21    function evalScript(a, b) {
22        b.src ? _jquery_.ajax({
23            url: b.src,
24            async: !1,
25            dataType: "script"
26        }) : _jquery_.globalEval(b.text || b.textContent || b.innerHTML || ""),
27        b.parentNode && b.parentNode.removeChild(b)
28    }
29    function bindReady() {
30        if (!readyBound) {
31            if (readyBound = !0, document.addEventListener && !_jquery_.browser.opera && document.addEventListener("DOMContentLoaded", _jquery_.ready, !1), _jquery_.browser.msie && window == top &&
32            function() {
33                if (!_jquery_.isReady) {
34                    try {
35                        document.documentElement.doScroll("left")
36                    } catch(a) {
37                        return setTimeout(arguments.callee, 0),
38                        void 0
39                    }
40                    _jquery_.ready()
41                }
42            } (), _jquery_.browser.opera && document.addEventListener("DOMContentLoaded",
43            function() {
44                if (!_jquery_.isReady) {
45                    for (var a = 0; a < document.styleSheets.length; a++) if (document.styleSheets[a].disabled) return setTimeout(arguments.callee, 0),
46                    void 0;
47                    _jquery_.ready()
48                }
49            },
50            !1), _jquery_.browser.safari) {
51                var a; !
52                function() {
53                    return _jquery_.isReady ? void 0 : "loaded" != document.readyState && "complete" != document.readyState ? (setTimeout(arguments.callee, 0), void 0) : (void 0 === a && (a = _jquery_("style, link[rel=stylesheet]").length), document.styleSheets.length != a ? (setTimeout(arguments.callee, 0), void 0) : (_jquery_.ready(), void 0))
54                } ()
55            }
56            _jquery_.event.add(window, "load", _jquery_.ready)
57        }
58    }
59    var expando, uuid, windowData, exclude, userAgent, styleFloat, chars, quickChild, quickID, quickClass, readyBound, withinElement, jsc, queue, _jquery_ = window._jquery_ = function(a, b) {
60        return new _jquery_.prototype.init(a, b)
61    },
62    quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,
63    isSimple = /^.[^:#\[\.]*$/;
64    _jquery_.fn = _jquery_.prototype = {
65        init: function(a, b) {
66            var c, d;
67            if (a = a || document, a.nodeType) return this[0] = a,
68            this.length = 1,
69            this;
70            if ("string" == typeof a) {
71                if (c = quickExpr.exec(a), !c || !c[1] && b) return new _jquery_(b).find(a);
72                if (c[1]) a = _jquery_.clean([c[1]], b);
73                else {
74                    if (d = document.getElementById(c[3])) return d.id != c[3] ? _jquery_().find(a) : (this[0] = d, this.length = 1, this);
75                    a = []
76                }
77            } else if (_jquery_.isFunction(a)) return new _jquery_(document)[_jquery_.fn.ready ? "ready": "load"](a);
78            return this.setArray(a.constructor == Array && a || (a._jquery_ || a.length && a != window && !a.nodeType && void 0 != a[0] && a[0].nodeType) && _jquery_.makeArray(a) || [a])
79        },
80        _jquery_: "1.2.3",
81        size: function() {
82            return this.length
83        },
84        length: 0,
85        get: function(a) {
86            return void 0 == a ? _jquery_.makeArray(this) : this[a]
87        },
88        pushStack: function(a) {
89            var b = _jquery_(a);
90            return b.prevObject = this,
91            b
92        },
93        setArray: function(a) {
94            return this.length = 0,
95            Array.prototype.push.apply(this, a),
96            this
97        },
98        each: function(a, b) {
99            return _jquery_.each(this, a, b)
100        },
101        index: function(a) {
102            var b = -1;
103            return this.each(function(c) {
104                this == a && (b = c)
105            }),
106            b
107        },
108        attr: function(a, b, c) {
109            var d = a;
110            if (a.constructor == String) {
111                if (void 0 == b) return this.length && _jquery_[c || "attr"](this[0], a) || void 0;
112                d = {},
113                d[a] = b
114            }
115            return this.each(function(b) {
116                for (a in d) _jquery_.attr(c ? this.style: this, a, _jquery_.prop(this, d[a], c, b, a))
117            })
118        },
119        css: function(a, b) {
120            return ("width" == a || "height" == a) && parseFloat(b) < 0 && (b = void 0),
121            this.attr(a, b, "curCSS")
122        },
123        text: function(a) {
124            if ("object" != typeof a && null != a) return this.empty().append((this[0] && this[0].ownerDocument || document).createTextNode(a));
125            var b = "";
126            return _jquery_.each(a || this,
127            function() {
128                _jquery_.each(this.childNodes,
129                function() {
130                    8 != this.nodeType && (b += 1 != this.nodeType ? this.nodeValue: _jquery_.fn.text([this]))
131                })
132            }),
133            b
134        },
135        wrapAll: function(a) {
136            return this[0] && _jquery_(a, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {
137                for (var a = this; a.firstChild;) a = a.firstChild;
138                return a
139            }).append(this),
140            this
141        },
142        wrapInner: function(a) {
143            return this.each(function() {
144                _jquery_(this).contents().wrapAll(a)
145            })
146        },
147        wrap: function(a) {
148            return this.each(function() {
149                _jquery_(this).wrapAll(a)
150            })
151        },
152        append: function() {
153            return this.domManip(arguments, !0, !1,
154            function(a) {
155                1 == this.nodeType && this.appendChild(a)
156            })
157        },
158        prepend: function() {
159            return this.domManip(arguments, !0, !0,
160            function(a) {
161                1 == this.nodeType && this.insertBefore(a, this.firstChild)
162            })
163        },
164        before: function() {
165            return this.domManip(arguments, !1, !1,
166            function(a) {
167                this.parentNode.insertBefore(a, this)
168            })
169        },
170        after: function() {
171            return this.domManip(arguments, !1, !0,
172            function(a) {
173                this.parentNode.insertBefore(a, this.nextSibling)
174            })
175        },
176        end: function() {
177            return this.prevObject || _jquery_([])
178        },
179        find: function(a) {
180            var b = _jquery_.map(this,
181            function(b) {
182                return _jquery_.find(a, b)
183            });
184            return this.pushStack(/[^+>] [^+>]/.test(a) || a.indexOf("..") > -1 ? _jquery_.unique(b) : b)
185        },
186        clone: function(a) {
187            var b = this.map(function() {
188                if (_jquery_.browser.msie && !_jquery_.isXMLDoc(this)) {
189                    var a = this.cloneNode(!0),
190                    b = document.createElement("div");
191                    return b.appendChild(a),
192                    _jquery_.clean([b.innerHTML])[0]
193                }
194                return this.cloneNode(!0)
195            }),
196            c = b.find("*").andSelf().each(function() {
197                void 0 != this[expando] && (this[expando] = null)
198            });
199            return a === !0 && this.find("*").andSelf().each(function(a) {
200                var b, d, e;
201                if (3 != this.nodeType) {
202                    b = _jquery_.data(this, "events");
203                    for (d in b) for (e in b[d]) _jquery_.event.add(c[a], d, b[d][e], b[d][e].data)
204                }
205            }),
206            b
207        },
208        filter: function(a) {
209            return this.pushStack(_jquery_.isFunction(a) && _jquery_.grep(this,
210            function(b, c) {
211                return a.call(b, c)
212            }) || _jquery_.multiFilter(a, this))
213        },
214        not: function(a) {
215            if (a.constructor == String) {
216                if (isSimple.test(a)) return this.pushStack(_jquery_.multiFilter(a, this, !0));
217                a = _jquery_.multiFilter(a, this)
218            }
219            var b = a.length && void 0 !== a[a.length - 1] && !a.nodeType;
220            return this.filter(function() {
221                return b ? _jquery_.inArray(this, a) < 0 : this != a
222            })
223        },
224        add: function(a) {
225            return a ? this.pushStack(_jquery_.merge(this.get(), a.constructor == String ? _jquery_(a).get() : void 0 == a.length || a.nodeName && !_jquery_.nodeName(a, "form") ? [a] : a)) : this
226        },
227        is: function(a) {
228            return a ? _jquery_.multiFilter(a, this).length > 0 : !1
229        },
230        hasClass: function(a) {
231            return this.is("." + a)
232        },
233        val: function(a) {
234            var b, c, d, e, f, g, h, i;
235            if (void 0 == a) {
236                if (this.length) {
237                    if (b = this[0], _jquery_.nodeName(b, "select")) {
238                        if (c = b.selectedIndex, d = [], e = b.options, f = "select-one" == b.type, 0 > c) return null;
239                        for (g = f ? c: 0, h = f ? c + 1 : e.length; h > g; g++) if (i = e[g], i.selected) {
240                            if (a = _jquery_.browser.msie && !i.attributes.value.specified ? i.text: i.value, f) return a;
241                            d.push(a)
242                        }
243                        return d
244                    }
245                    return (this[0].value || "").replace(/\r/g, "")
246                }
247                return void 0
248            }
249            return this.each(function() {
250                if (1 == this.nodeType) if (a.constructor == Array && /radio|checkbox/.test(this.type)) this.checked = _jquery_.inArray(this.value, a) >= 0 || _jquery_.inArray(this.name, a) >= 0;
251                else if (_jquery_.nodeName(this, "select")) {
252                    var b = a.constructor == Array ? a: [a];
253                    _jquery_("option", this).each(function() {
254                        this.selected = _jquery_.inArray(this.value, b) >= 0 || _jquery_.inArray(this.text, b) >= 0
255                    }),
256                    b.length || (this.selectedIndex = -1)
257                } else this.value = a
258            })
259        },
260        html: function(a) {
261            return void 0 == a ? this.length ? this[0].innerHTML: null: this.empty().append(a)
262        },
263        replaceWith: function(a) {
264            return this.after(a).remove()
265        },
266        eq: function(a) {
267            return this.slice(a, a + 1)
268        },
269        slice: function() {
270            return this.pushStack(Array.prototype.slice.apply(this, arguments))
271        },
272        map: function(a) {
273            return this.pushStack(_jquery_.map(this,
274            function(b, c) {
275                return a.call(b, c, b)
276            }))
277        },
278        andSelf: function() {
279            return this.add(this.prevObject)
280        },
281        data: function(a, b) {
282            var d, c = a.split(".");
283            return c[1] = c[1] ? "." + c[1] : "",
284            null == b ? (d = this.triggerHandler("getData" + c[1] + "!", [c[0]]), void 0 == d && this.length && (d = _jquery_.data(this[0], a)), null == d && c[1] ? this.data(c[0]) : d) : this.trigger("setData" + c[1] + "!", [c[0], b]).each(function() {
285                _jquery_.data(this, a, b)
286            })
287        },
288        removeData: function(a) {
289            return this.each(function() {
290                _jquery_.removeData(this, a)
291            })
292        },
293        domManip: function(a, b, c, d) {
294            var f, e = this.length > 1;
295            return this.each(function() {
296                var g, h;
297                f || (f = _jquery_.clean(a, this.ownerDocument), c && f.reverse()),
298                g = this,
299                b && _jquery_.nodeName(this, "table") && _jquery_.nodeName(f[0], "tr") && (g = this.getElementsByTagName("tbody")[0] || this.appendChild(this.ownerDocument.createElement("tbody"))),
300                h = _jquery_([]),
301                _jquery_.each(f,
302                function() {
303                    var a = e ? _jquery_(this).clone(!0)[0] : this;
304                    _jquery_.nodeName(a, "script") ? h = h.add(a) : (1 == a.nodeType && (h = h.add(_jquery_("script", a).remove())), d.call(g, a))
305                }),
306                h.each(evalScript)
307            })
308        }
309    },
310    _jquery_.prototype.init.prototype = _jquery_.prototype,
311    _jquery_.extend = _jquery_.fn.extend = function() {
312        var e, f, a = arguments[0] || {},
313        b = 1,
314        c = arguments.length,
315        d = !1;
316        for (a.constructor == Boolean && (d = a, a = arguments[1] || {},
317        b = 2), "object" != typeof a && "function" != typeof a && (a = {}), 1 == c && (a = this, b = 0); c > b; b++) if (null != (e = arguments[b])) for (f in e) a !== e[f] && (d && e[f] && "object" == typeof e[f] && a[f] && !e[f].nodeType ? a[f] = _jquery_.extend(a[f], e[f]) : void 0 != e[f] && (a[f] = e[f]));
318        return a
319    },
320    expando = "_jquery_" + (new Date).getTime(),
321    uuid = 0,
322    windowData = {},
323    exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
324    _jquery_.extend({
325        noConflict: function() {
326            return _jquery_
327        },
328        isFunction: function(a) {
329            return !! a && "string" != typeof a && !a.nodeName && a.constructor != Array && /function/i.test(a + "")
330        },
331        isXMLDoc: function(a) {
332            return a.documentElement && !a.body || a.tagName && a.ownerDocument && !a.ownerDocument.body
333        },
334        globalEval: function(a) {
335            if (a = _jquery_.trim(a)) {
336                var b = document.getElementsByTagName("head")[0] || document.documentElement,
337                c = document.createElement("script");
338                c.type = "text/javascript",
339                _jquery_.browser.msie ? c.text = a: c.appendChild(document.createTextNode(a)),
340                b.appendChild(c),
341                b.removeChild(c)
342            }
343        },
344        nodeName: function(a, b) {
345            return a.nodeName && a.nodeName.toUpperCase() == b.toUpperCase()
346        },
347        cache: {},
348        data: function(a, b, c) {
349            a = a == window ? windowData: a;
350            var d = a[expando];
351            return d || (d = a[expando] = ++uuid),
352            b && !_jquery_.cache[d] && (_jquery_.cache[d] = {}),
353            void 0 != c && (_jquery_.cache[d][b] = c),
354            b ? _jquery_.cache[d][b] : d
355        },
356        removeData: function(a, b) {
357            a = a == window ? windowData: a;
358            var c = a[expando];
359            if (b) {
360                if (_jquery_.cache[c]) {
361                    delete _jquery_.cache[c][b],
362                    b = "";
363                    for (b in _jquery_.cache[c]) break;
364                    b || _jquery_.removeData(a)
365                }
366            } else {
367                try {
368                    delete a[expando]
369                } catch(d) {
370                    a.removeAttribute && a.removeAttribute(expando)
371                }
372                delete _jquery_.cache[c]
373            }
374        },
375        each: function(a, b, c) {
376            var d, e, f, g;
377            if (c) if (void 0 == a.length) {
378                for (d in a) if (b.apply(a[d], c) === !1) break
379            } else for (e = 0, f = a.length; f > e && b.apply(a[e], c) !== !1; e++);
380            else if (void 0 == a.length) {
381                for (d in a) if (b.call(a[d], d, a[d]) === !1) break
382            } else for (e = 0, f = a.length, g = a[0]; f > e && b.call(g, e, g) !== !1; g = a[++e]);
383            return a
384        },
385        prop: function(a, b, c, d, e) {
386            return _jquery_.isFunction(b) && (b = b.call(a, d)),
387            b && b.constructor == Number && "curCSS" == c && !exclude.test(e) ? b + "px": b
388        },
389        className: {
390            add: function(a, b) {
391                _jquery_.each((b || "").split(/\s+/),
392                function(b, c) {
393                    1 != a.nodeType || _jquery_.className.has(a.className, c) || (a.className += (a.className ? " ": "") + c)
394                })
395            },
396            remove: function(a, b) {
397                1 == a.nodeType && (a.className = void 0 != b ? _jquery_.grep(a.className.split(/\s+/),
398                function(a) {
399                    return ! _jquery_.className.has(b, a)
400                }).join(" ") : "")
401            },
402            has: function(a, b) {
403                return _jquery_.inArray(b, (a.className || a).toString().split(/\s+/)) > -1
404            }
405        },
406        swap: function(a, b, c) {
407            var e, d = {};
408            for (e in b) d[e] = a.style[e],
409            a.style[e] = b[e];
410            c.call(a);
411            for (e in b) a.style[e] = d[e]
412        },
413        css: function(a, b, c) {
414            function g() {
415                d = "width" == b ? a.offsetWidth: a.offsetHeight;
416                var c = 0,
417                e = 0;
418                _jquery_.each(f,
419                function() {
420                    c += parseFloat(_jquery_.curCSS(a, "padding" + this, !0)) || 0,
421                    e += parseFloat(_jquery_.curCSS(a, "border" + this + "Width", !0)) || 0
422                }),
423                d -= Math.round(c + e)
424            }
425            if ("width" == b || "height" == b) {
426                var d, e = {
427                    position: "absolute",
428                    visibility: "hidden",
429                    display: "block"
430                },
431                f = "width" == b ? ["Left", "Right"] : ["Top", "Bottom"];
432                return _jquery_(a).is(":visible") ? g() : _jquery_.swap(a, e, g),
433                Math.max(0, d)
434            }
435            return _jquery_.curCSS(a, b, c)
436        },
437        curCSS: function(a, b, c) {
438            function e(a) {
439                if (!_jquery_.browser.safari) return ! 1;
440                var b = document.defaultView.getComputedStyle(a, null);
441                return ! b || "" == b.getPropertyValue("color")
442            }
443            var d, f, g, h, i, j, k, l, m, n;
444            if ("opacity" == b && _jquery_.browser.msie) return d = _jquery_.attr(a.style, "opacity"),
445            "" == d ? "1": d;
446            if (_jquery_.browser.opera && "display" == b && (f = a.style.outline, a.style.outline = "0 solid black", a.style.outline = f), b.match(/float/i) && (b = styleFloat), !c && a.style && a.style[b]) d = a.style[b];
447            else if (document.defaultView && document.defaultView.getComputedStyle) {
448                if (b.match(/float/i) && (b = "float"), b = b.replace(/([A-Z])/g, "-$1").toLowerCase(), g = document.defaultView.getComputedStyle(a, null), g && !e(a)) d = g.getPropertyValue(b);
449                else {
450                    for (h = [], i = [], j = a; j && e(j); j = j.parentNode) i.unshift(j);
451                    for (k = 0; k < i.length; k++) e(i[k]) && (h[k] = i[k].style.display, i[k].style.display = "block");
452                    for (d = "display" == b && null != h[i.length - 1] ? "none": g && g.getPropertyValue(b) || "", k = 0; k < h.length; k++) null != h[k] && (i[k].style.display = h[k])
453                }
454                "opacity" == b && "" == d && (d = "1")
455            } else a.currentStyle && (l = b.replace(/\-(\w)/g,
456            function(a, b) {
457                return b.toUpperCase()
458            }), d = a.currentStyle[b] || a.currentStyle[l], !/^\d+(px)?$/i.test(d) && /^\d/.test(d) && (m = a.style.left, n = a.runtimeStyle.left, a.runtimeStyle.left = a.currentStyle.left, a.style.left = d || 0, d = a.style.pixelLeft + "px", a.style.left = m, a.runtimeStyle.left = n));
459            return d
460        },
461        clean: function(a, b) {
462            var c = [];
463            return b = b || document,
464            "undefined" == typeof b.createElement && (b = b.ownerDocument || b[0] && b[0].ownerDocument || document),
465            _jquery_.each(a,
466            function(a, d) {
467                var e, f, g, h, i;
468                if (d) {
469                    if (d.constructor == Number && (d = d.toString()), "string" == typeof d) {
470                        for (d = d.replace(/(<(\w+)[^>]*?)\/>/g,
471                        function(a, b, c) {
472                            return c.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? a: b + "></" + c + ">"
473                        }), e = _jquery_.trim(d).toLowerCase(), f = b.createElement("div"), g = !e.indexOf("<opt") && [1, "<select multiple='multiple'>", "</select>"] || !e.indexOf("<leg") && [1, "<fieldset>", "</fieldset>"] || e.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "<table>", "</table>"] || !e.indexOf("<tr") && [2, "<table><tbody>", "</tbody></table>"] || (!e.indexOf("<td") || !e.indexOf("<th")) && [3, "<table><tbody><tr>", "</tr></tbody></table>"] || !e.indexOf("<col") && [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] || _jquery_.browser.msie && [1, "div<div>", "</div>"] || [0, "", ""], f.innerHTML = g[1] + d + g[2]; g[0]--;) f = f.lastChild;
474                        if (_jquery_.browser.msie) {
475                            for (h = !e.indexOf("<table") && e.indexOf("<tbody") < 0 ? f.firstChild && f.firstChild.childNodes: "<table>" == g[1] && e.indexOf("<tbody") < 0 ? f.childNodes: [], i = h.length - 1; i >= 0; --i) _jquery_.nodeName(h[i], "tbody") && !h[i].childNodes.length && h[i].parentNode.removeChild(h[i]);
476                            /^\s/.test(d) && f.insertBefore(b.createTextNode(d.match(/^\s*/)[0]), f.firstChild)
477                        }
478                        d = _jquery_.makeArray(f.childNodes)
479                    } (0 !== d.length || _jquery_.nodeName(d, "form") || _jquery_.nodeName(d, "select")) && (void 0 == d[0] || _jquery_.nodeName(d, "form") || d.options ? c.push(d) : c = _jquery_.merge(c, d))
480                }
481            }),
482            c
483        },
484        attr: function(a, b, c) {
485            if (!a || 3 == a.nodeType || 8 == a.nodeType) return void 0;
486            var d = _jquery_.isXMLDoc(a) ? {}: _jquery_.props;
487            if ("selected" == b && _jquery_.browser.safari && a.parentNode.selectedIndex, d[b]) return void 0 != c && (a[d[b]] = c),
488            a[d[b]];
489            if (_jquery_.browser.msie && "style" == b) return _jquery_.attr(a.style, "cssText", c);
490            if (void 0 == c && _jquery_.browser.msie && _jquery_.nodeName(a, "form") && ("action" == b || "method" == b)) return a.getAttributeNode(b).nodeValue;
491            if (a.tagName) {
492                if (void 0 != c) {
493                    if ("type" == b && _jquery_.nodeName(a, "input") && a.parentNode) throw "type property can't be changed";
494                    a.setAttribute(b, "" + c)
495                }
496                return _jquery_.browser.msie && /href|src/.test(b) && !_jquery_.isXMLDoc(a) ? a.getAttribute(b, 2) : a.getAttribute(b)
497            }
498            return "opacity" == b && _jquery_.browser.msie ? (void 0 != c && (a.zoom = 1, a.filter = (a.filter || "").replace(/alpha\([^)]*\)/, "") + ("NaN" == parseFloat(c).toString() ? "": "alpha(opacity=" + 100 * c + ")")), a.filter && a.filter.indexOf("opacity=") >= 0 ? (parseFloat(a.filter.match(/opacity=([^)]*)/)[1]) / 100).toString() : "") : (b = b.replace(/-([a-z])/gi,
499            function(a, b) {
500                return b.toUpperCase()
501            }), void 0 != c && (a[b] = c), a[b])
502        },
503        trim: function(a) {
504            return (a || "").replace(/^\s+|\s+$/g, "")
505        },
506        makeArray: function(a) {
507            var c, d, b = [];
508            if ("array" != typeof a) for (c = 0, d = a.length; d > c; c++) b.push(a[c]);
509            else b = a.slice(0);
510            return b
511        },
512        inArray: function(a, b) {
513            for (var c = 0,
514            d = b.length; d > c; c++) if (b[c] == a) return c;
515            return - 1
516        },
517        merge: function(a, b) {
518            var c;
519            if (_jquery_.browser.msie) for (c = 0; b[c]; c++) 8 != b[c].nodeType && a.push(b[c]);
520            else for (c = 0; b[c]; c++) a.push(b[c]);
521            return a
522        },
523        unique: function(a) {
524            var d, e, f, b = [],
525            c = {};
526            try {
527                for (d = 0, e = a.length; e > d; d++) f = _jquery_.data(a[d]),
528                c[f] || (c[f] = !0, b.push(a[d]))
529            } catch(g) {
530                b = a
531            }
532            return b
533        },
534        grep: function(a, b, c) {
535            var e, f, d = [];
536            for (e = 0, f = a.length; f > e; e++)(!c && b(a[e], e) || c && !b(a[e], e)) && d.push(a[e]);
537            return d
538        },
539        map: function(a, b) {
540            var d, e, f, c = [];
541            for (d = 0, e = a.length; e > d; d++) f = b(a[d], d),
542            null !== f && void 0 != f && (f.constructor != Array && (f = [f]), c = c.concat(f));
543            return c
544        }
545    }),
546    userAgent = navigator.userAgent.toLowerCase(),
547    _jquery_.browser = {
548        version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
549        safari: /webkit/.test(userAgent),
550        opera: /opera/.test(userAgent),
551        msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
552        mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
553    },
554    styleFloat = _jquery_.browser.msie ? "styleFloat": "cssFloat",
555    _jquery_.extend({
556        boxModel: !_jquery_.browser.msie || "CSS1Compat" == document.compatMode,
557        props: {
558            "for": "htmlFor",
559            "class": "className",
560            "float": styleFloat,
561            cssFloat: styleFloat,
562            styleFloat: styleFloat,
563            innerHTML: "innerHTML",
564            className: "className",
565            value: "value",
566            disabled: "disabled",
567            checked: "checked",
568            readonly: "readOnly",
569            selected: "selected",
570            maxlength: "maxLength",
571            selectedIndex: "selectedIndex",
572            defaultValue: "defaultValue",
573            tagName: "tagName",
574            nodeName: "nodeName"
575        }
576    }),
577    _jquery_.each({
578        parent: function(a) {
579            return a.parentNode
580        },
581        parents: function(a) {
582            return _jquery_.dir(a, "parentNode")
583        },
584        next: function(a) {
585            return _jquery_.nth(a, 2, "nextSibling")
586        },
587        prev: function(a) {
588            return _jquery_.nth(a, 2, "previousSibling")
589        },
590        nextAll: function(a) {
591            return _jquery_.dir(a, "nextSibling")
592        },
593        prevAll: function(a) {
594            return _jquery_.dir(a, "previousSibling")
595        },
596        siblings: function(a) {
597            return _jquery_.sibling(a.parentNode.firstChild, a)
598        },
599        children: function(a) {
600            return _jquery_.sibling(a.firstChild)
601        },
602        contents: function(a) {
603            return _jquery_.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document: _jquery_.makeArray(a.childNodes)
604        }
605    },
606    function(a, b) {
607        _jquery_.fn[a] = function(a) {
608            var c = _jquery_.map(this, b);
609            return a && "string" == typeof a && (c = _jquery_.multiFilter(a, c)),
610            this.pushStack(_jquery_.unique(c))
611        }
612    }),
613    _jquery_.each({
614        appendTo: "append",
615        prependTo: "prepend",
616        insertBefore: "before",
617        insertAfter: "after",
618        replaceAll: "replaceWith"
619    },
620    function(a, b) {
621        _jquery_.fn[a] = function() {
622            var a = arguments;
623            return this.each(function() {
624                for (var c = 0,
625                d = a.length; d > c; c++) _jquery_(a[c])[b](this)
626            })
627        }
628    }),
629    _jquery_.each({
630        removeAttr: function(a) {
631            _jquery_.attr(this, a, ""),
632            1 == this.nodeType && this.removeAttribute(a)
633        },
634        addClass: function(a) {
635            _jquery_.className.add(this, a)
636        },
637        removeClass: function(a) {
638            _jquery_.className.remove(this, a)
639        },
640        toggleClass: function(a) {
641            _jquery_.className[_jquery_.className.has(this, a) ? "remove": "add"](this, a)
642        },
643        remove: function(a) { (!a || _jquery_.filter(a, [this]).r.length) && (_jquery_("*", this).add(this).each(function() {
644                _jquery_.event.remove(this),
645                _jquery_.removeData(this)
646            }), this.parentNode && this.parentNode.removeChild(this))
647        },
648        empty: function() {
649            for (_jquery_(">*", this).remove(); this.firstChild;) this.removeChild(this.firstChild)
650        }
651    },
652    function(a, b) {
653        _jquery_.fn[a] = function() {
654            return this.each(b, arguments)
655        }
656    }),
657    _jquery_.each(["Height", "Width"],
658    function(a, b) {
659        var c = b.toLowerCase();
660        _jquery_.fn[c] = function(a) {
661            return this[0] == window ? _jquery_.browser.opera && document.body["client" + b] || _jquery_.browser.safari && window["inner" + b] || "CSS1Compat" == document.compatMode && document.documentElement["client" + b] || document.body["client" + b] : this[0] == document ? Math.max(Math.max(document.body["scroll" + b], document.documentElement["scroll" + b]), Math.max(document.body["offset" + b], document.documentElement["offset" + b])) : void 0 == a ? this.length ? _jquery_.css(this[0], c) : null: this.css(c, a.constructor == String ? a: a + "px")
662        }
663    }),
664    chars = _jquery_.browser.safari && parseInt(_jquery_.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)": "(?:[\\wĨ-￿*_-]|\\\\.)",
665    quickChild = new RegExp("^>\\s*(" + chars + "+)"),
666    quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
667    quickClass = new RegExp("^([#.]?)(" + chars + "*)"),
668    _jquery_.extend({
669        expr: {
670            "": function(a, b, c) {
671                return "*" == c[2] || _jquery_.nodeName(a, c[2])
672            },
673            "#": function(a, b, c) {
674                return a.getAttribute("id") == c[2]
675            },
676            ":": {
677                lt: function(a, b, c) {
678                    return b < c[3] - 0
679                },
680                gt: function(a, b, c) {
681                    return b > c[3] - 0
682                },
683                nth: function(a, b, c) {
684                    return c[3] - 0 == b
685                },
686                eq: function(a, b, c) {
687                    return c[3] - 0 == b
688                },
689                first: function(a, b) {
690                    return 0 == b
691                },
692                last: function(a, b, c, d) {
693                    return b == d.length - 1
694                },
695                even: function(a, b) {
696                    return 0 == b % 2
697                },
698                odd: function(a, b) {
699                    return b % 2
700                },
701                "first-child": function(a) {
702                    return a.parentNode.getElementsByTagName("*")[0] == a
703                },
704                "last-child": function(a) {
705                    return _jquery_.nth(a.parentNode.lastChild, 1, "previousSibling") == a
706                },
707                "only-child": function(a) {
708                    return ! _jquery_.nth(a.parentNode.lastChild, 2, "previousSibling")
709                },
710                parent: function(a) {
711                    return a.firstChild
712                },
713                empty: function(a) {
714                    return ! a.firstChild
715                },
716                contains: function(a, b, c) {
717                    return (a.textContent || a.innerText || _jquery_(a).text() || "").indexOf(c[3]) >= 0
718                },
719                visible: function(a) {
720                    return "hidden" != a.type && "none" != _jquery_.css(a, "display") && "hidden" != _jquery_.css(a, "visibility")
721                },
722                hidden: function(a) {
723                    return "hidden" == a.type || "none" == _jquery_.css(a, "display") || "hidden" == _jquery_.css(a, "visibility")
724                },
725                enabled: function(a) {
726                    return ! a.disabled
727                },
728                disabled: function(a) {
729                    return a.disabled
730                },
731                checked: function(a) {
732                    return a.checked
733                },
734                selected: function(a) {
735                    return a.selected || _jquery_.attr(a, "selected")
736                },
737                text: function(a) {
738                    return "text" == a.type
739                },
740                radio: function(a) {
741                    return "radio" == a.type
742                },
743                checkbox: function(a) {
744                    return "checkbox" == a.type
745                },
746                file: function(a) {
747                    return "file" == a.type
748                },
749                password: function(a) {
750                    return "password" == a.type
751                },
752                submit: function(a) {
753                    return "submit" == a.type
754                },
755                image: function(a) {
756                    return "image" == a.type
757                },
758                reset: function(a) {
759                    return "reset" == a.type
760                },
761                button: function(a) {
762                    return "button" == a.type || _jquery_.nodeName(a, "button")
763                },
764                input: function(a) {
765                    return /input|select|textarea|button/i.test(a.nodeName)
766                },
767                has: function(a, b, c) {
768                    return _jquery_.find(c[3], a).length
769                },
770                header: function(a) {
771                    return /h\d/i.test(a.nodeName)
772                },
773                animated: function(a) {
774                    return _jquery_.grep(_jquery_.timers,
775                    function(b) {
776                        return a == b.elem
777                    }).length
778                }
779            }
780        },
781        parse: [/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/, /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/, new RegExp("^([:.#]*)(" + chars + "+)")],
782        multiFilter: function(a, b, c) {
783            for (var d, f, e = []; a && a != d;) d = a,
784            f = _jquery_.filter(a, b, c),
785            a = f.t.replace(/^\s*,\s*/, ""),
786            e = c ? b = f.r: _jquery_.merge(e, f.r);
787            return e
788        },
789        find: function(a, b) {
790            var e, f, c, d, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w;
791            if ("string" != typeof a) return [a];
792            if (b && 1 != b.nodeType && 9 != b.nodeType) return [];
793            for (b = b || document, c = [b], d = []; a && e != a;) {
794                if (g = [], e = a, a = _jquery_.trim(a), h = !1, i = quickChild, j = i.exec(a)) {
795                    for (f = j[1].toUpperCase(), k = 0; c[k]; k++) for (l = c[k].firstChild; l; l = l.nextSibling) 1 != l.nodeType || "*" != f && l.nodeName.toUpperCase() != f || g.push(l);
796                    if (c = g, a = a.replace(i, ""), 0 == a.indexOf(" ")) continue;
797                    h = !0
798                } else if (i = /^([>+~])\s*(\w*)/i, null != (j = i.exec(a))) {
799                    for (g = [], m = {},
800                    f = j[2].toUpperCase(), j = j[1], n = 0, o = c.length; o > n; n++) for (p = "~" == j || "+" == j ? c[n].nextSibling: c[n].firstChild; p; p = p.nextSibling) if (1 == p.nodeType) {
801                        if (q = _jquery_.data(p), "~" == j && m[q]) break;
802                        if (f && p.nodeName.toUpperCase() != f || ("~" == j && (m[q] = !0), g.push(p)), "+" == j) break
803                    }
804                    c = g,
805                    a = _jquery_.trim(a.replace(i, "")),
806                    h = !0
807                }
808                if (a && !h) if (a.indexOf(",")) {
809                    if (r = quickID, j = r.exec(a), j ? j = [0, j[2], j[3], j[1]] : (r = quickClass, j = r.exec(a)), j[2] = j[2].replace(/\\/g, ""), s = c[c.length - 1], "#" == j[1] && s && s.getElementById && !_jquery_.isXMLDoc(s)) t = s.getElementById(j[2]),
810                    (_jquery_.browser.msie || _jquery_.browser.opera) && t && "string" == typeof t.id && t.id != j[2] && (t = _jquery_('[@id="' + j[2] + '"]', s)[0]),
811                    c = g = !t || j[3] && !_jquery_.nodeName(t, j[3]) ? [] : [t];
812                    else {
813                        for (k = 0; c[k]; k++) u = "#" == j[1] && j[3] ? j[3] : "" != j[1] || "" == j[0] ? "*": j[2],
814                        "*" == u && "object" == c[k].nodeName.toLowerCase() && (u = "param"),
815                        g = _jquery_.merge(g, c[k].getElementsByTagName(u));
816                        if ("." == j[1] && (g = _jquery_.classFilter(g, j[2])), "#" == j[1]) {
817                            for (v = [], k = 0; g[k]; k++) if (g[k].getAttribute("id") == j[2]) {
818                                v = [g[k]];
819                                break
820                            }
821                            g = v
822                        }
823                        c = g
824                    }
825                    a = a.replace(r, "")
826                } else b == c[0] && c.shift(),
827                d = _jquery_.merge(d, c),
828                g = c = [b],
829                a = " " + a.substr(1, a.length);
830                a && (w = _jquery_.filter(a, g), c = g = w.r, a = _jquery_.trim(w.t))
831            }
832            return a && (c = []),
833            c && b == c[0] && c.shift(),
834            d = _jquery_.merge(d, c)
835        },
836        classFilter: function(a, b, c) {
837            var d, e, f;
838            for (b = " " + b + " ", d = [], e = 0; a[e]; e++) f = (" " + a[e].className + " ").indexOf(b) >= 0,
839            (!c && f || c && !f) && d.push(a[e]);
840            return d
841        },
842        filter: function(t, r, not) {
843            for (var last, p, m, i, tmp, type, rl, a, z, merge, test, first, node, parentNode, id, c, n, add, fn; t && t != last;) {
844                for (last = t, p = _jquery_.parse, i = 0; p[i]; i++) if (m = p[i].exec(t)) {
845                    t = t.substring(m[0].length),
846                    m[2] = m[2].replace(/\\/g, "");
847                    break
848                }
849                if (!m) break;
850                if (":" == m[1] && "not" == m[2]) r = isSimple.test(m[3]) ? _jquery_.filter(m[3], r, !0).r: _jquery_(r).not(m[3]);
851                else if ("." == m[1]) r = _jquery_.classFilter(r, m[2], not);
852                else if ("[" == m[1]) {
853                    for (tmp = [], type = m[3], i = 0, rl = r.length; rl > i; i++) a = r[i],
854                    z = a[_jquery_.props[m[2]] || m[2]],
855                    (null == z || /href|src|selected/.test(m[2])) && (z = _jquery_.attr(a, m[2]) || ""),
856                    ("" == type && !!z || "=" == type && z == m[5] || "!=" == type && z != m[5] || "^=" == type && z && !z.indexOf(m[5]) || "$=" == type && z.substr(z.length - m[5].length) == m[5] || ("*=" == type || "~=" == type) && z.indexOf(m[5]) >= 0) ^ not && tmp.push(a);
857                    r = tmp
858                } else if (":" == m[1] && "nth-child" == m[2]) {
859                    for (merge = {},
860                    tmp = [], test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec("even" == m[3] && "2n" || "odd" == m[3] && "2n+1" || !/\D/.test(m[3]) && "0n+" + m[3] || m[3]), first = test[1] + (test[2] || 1) - 0, last = test[3] - 0, i = 0, rl = r.length; rl > i; i++) {
861                        if (node = r[i], parentNode = node.parentNode, id = _jquery_.data(parentNode), !merge[id]) {
862                            for (c = 1, n = parentNode.firstChild; n; n = n.nextSibling) 1 == n.nodeType && (n.nodeIndex = c++);
863                            merge[id] = !0
864                        }
865                        add = !1,
866                        0 == first ? node.nodeIndex == last && (add = !0) : 0 == (node.nodeIndex - last) % first && (node.nodeIndex - last) / first >= 0 && (add = !0),
867                        add ^ not && tmp.push(node)
868                    }
869                    r = tmp
870                } else fn = _jquery_.expr[m[1]],
871                "object" == typeof fn && (fn = fn[m[2]]),
872                "string" == typeof fn && (fn = eval("false||function(a,i){return " + fn + ";}")),
873                r = _jquery_.grep(r,
874                function(a, b) {
875                    return fn(a, b, m, r)
876                },
877                not)
878            }
879            return {
880                r: r,
881                t: t
882            }
883        },
884        dir: function(a, b) {
885            for (var c = [], d = a[b]; d && d != document;) 1 == d.nodeType && c.push(d),
886            d = d[b];
887            return c
888        },
889        nth: function(a, b, c) {
890            b = b || 1;
891            for (var e = 0; a && (1 != a.nodeType || ++e != b); a = a[c]);
892            return a
893        },
894        sibling: function(a, b) {
895            for (var c = []; a; a = a.nextSibling) 1 != a.nodeType || b && a == b || c.push(a);
896            return c
897        }
898    }),
899    _jquery_.event = {
900        add: function(a, b, c, d) {
901            var e, f, g;
902            3 != a.nodeType && 8 != a.nodeType && (_jquery_.browser.msie && void 0 != a.setInterval && (a = window), c.guid || (c.guid = this.guid++), void 0 != d && (e = c, c = function() {
903                return e.apply(this, arguments)
904            },
905            c.data = d, c.guid = e.guid), f = _jquery_.data(a, "events") || _jquery_.data(a, "events", {}), g = _jquery_.data(a, "handle") || _jquery_.data(a, "handle",
906            function() {
907                var a;
908                return "undefined" == typeof _jquery_ || _jquery_.event.triggered ? a: a = _jquery_.event.handle.apply(arguments.callee.elem, arguments)
909            }), g.elem = a, _jquery_.each(b.split(/\s+/),
910            function(b, d) {
911                var h, e = d.split(".");
912                d = e[0],
913                c.type = e[1],
914                h = f[d],
915                h || (h = f[d] = {},
916                _jquery_.event.special[d] && _jquery_.event.special[d].setup.call(a) !== !1 || (a.addEventListener ? a.addEventListener(d, g, !1) : a.attachEvent && a.attachEvent("on" + d, g))),
917                h[c.guid] = c,
918                _jquery_.event.global[d] = !0
919            }), a = null)
920        },
921        guid: 1,
922        global: {},
923        remove: function(a, b, c) {
924            var e, d, g, h;
925            if (3 != a.nodeType && 8 != a.nodeType && (d = _jquery_.data(a, "events"))) {
926                if (void 0 == b || "string" == typeof b && "." == b.charAt(0)) for (g in d) this.remove(a, g + (b || ""));
927                else b.type && (c = b.handler, b = b.type),
928                _jquery_.each(b.split(/\s+/),
929                function(b, f) {
930                    var g = f.split(".");
931                    if (f = g[0], d[f]) {
932                        if (c) delete d[f][c.guid];
933                        else for (c in d[f]) g[1] && d[f][c].type != g[1] || delete d[f][c];
934                        for (e in d[f]) break;
935                        e || (_jquery_.event.special[f] && _jquery_.event.special[f].teardown.call(a) !== !1 || (a.removeEventListener ? a.removeEventListener(f, _jquery_.data(a, "handle"), !1) : a.detachEvent && a.detachEvent("on" + f, _jquery_.data(a, "handle"))), e = null, delete d[f])
936                    }
937                });
938                for (e in d) break;
939                e || (h = _jquery_.data(a, "handle"), h && (h.elem = null), _jquery_.removeData(a, "events"), _jquery_.removeData(a, "handle"))
940            }
941        },
942        trigger: function(a, b, c, d, e) {
943            var f, g, h, i, j;
944            if (b = _jquery_.makeArray(b || []), a.indexOf("!") >= 0 && (a = a.slice(0, -1), f = !0), c) {
945                if (3 == c.nodeType || 8 == c.nodeType) return void 0;
946                if (i = _jquery_.isFunction(c[a] || null), j = !b[0] || !b[0].preventDefault, j && b.unshift(this.fix({
947                    type: a,
948                    target: c
949                })), b[0].type = a, f && (b[0].exclusive = !0), _jquery_.isFunction(_jquery_.data(c, "handle")) && (g = _jquery_.data(c, "handle").apply(c, b)), !i && c["on" + a] && c["on" + a].apply(c, b) === !1 && (g = !1), j && b.shift(), e && _jquery_.isFunction(e) && (h = e.apply(c, null == g ? b: b.concat(g)), void 0 !== h && (g = h)), i && d !== !1 && g !== !1 && (!_jquery_.nodeName(c, "a") || "click" != a)) {
950                    this.triggered = !0;
951                    try {
952                        c[a]()
953                    } catch(k) {}
954                }
955                this.triggered = !1
956            } else this.global[a] && _jquery_("*").add([window, document]).trigger(a, b);
957            return g
958        },
959        handle: function(a) {
960            var b, c, d, e, f, g, h;
961            a = _jquery_.event.fix(a || window.event || {}),
962            c = a.type.split("."),
963            a.type = c[0],
964            d = _jquery_.data(this, "events") && _jquery_.data(this, "events")[a.type],
965            e = Array.prototype.slice.call(arguments, 1),
966            e.unshift(a);
967            for (f in d) g = d[f],
968            e[0].handler = g,
969            e[0].data = g.data,
970            (!c[1] && !a.exclusive || g.type == c[1]) && (h = g.apply(this, e), b !== !1 && (b = h), h === !1 && (a.preventDefault(), a.stopPropagation()));
971            return _jquery_.browser.msie && (a.target = a.preventDefault = a.stopPropagation = a.handler = a.data = null),
972            b
973        },
974        fix: function(a) {
975            var c, d, b = a;
976            return a = _jquery_.extend({},
977            b),
978            a.preventDefault = function() {
979                b.preventDefault && b.preventDefault(),
980                b.returnValue = !1
981            },
982            a.stopPropagation = function() {
983                b.stopPropagation && b.stopPropagation(),
984                b.cancelBubble = !0
985            },
986            a.target || (a.target = a.srcElement || document),
987            3 == a.target.nodeType && (a.target = b.target.parentNode),
988            !a.relatedTarget && a.fromElement && (a.relatedTarget = a.fromElement == a.target ? a.toElement: a.fromElement),
989            null == a.pageX && null != a.clientX && (c = document.documentElement, d = document.body, a.pageX = a.clientX + (c && c.scrollLeft || d && d.scrollLeft || 0) - (c.clientLeft || 0), a.pageY = a.clientY + (c && c.scrollTop || d && d.scrollTop || 0) - (c.clientTop || 0)),
990            !a.which && (a.charCode || 0 === a.charCode ? a.charCode: a.keyCode) && (a.which = a.charCode || a.keyCode),
991            !a.metaKey && a.ctrlKey && (a.metaKey = a.ctrlKey),
992            !a.which && a.button && (a.which = 1 & a.button ? 1 : 2 & a.button ? 3 : 4 & a.button ? 2 : 0),
993            a
994        },
995        special: {
996            ready: {
997                setup: function() {
998                    bindReady()
999                },
1000                teardown: function() {}
1001            },
1002            mouseenter: {
1003                setup: function() {
1004                    return _jquery_.browser.msie ? !1 : (_jquery_(this).bind("mouseover", _jquery_.event.special.mouseenter.handler), !0)
1005                },
1006                teardown: function() {
1007                    return _jquery_.browser.msie ? !1 : (_jquery_(this).unbind("mouseover", _jquery_.event.special.mouseenter.handler), !0)
1008                },
1009                handler: function(a) {
1010                    return withinElement(a, this) ? !0 : (arguments[0].type = "mouseenter", _jquery_.event.handle.apply(this, arguments))
1011                }
1012            },
1013            mouseleave: {
1014                setup: function() {
1015                    return _jquery_.browser.msie ? !1 : (_jquery_(this).bind("mouseout", _jquery_.event.special.mouseleave.handler), !0)
1016                },
1017                teardown: function() {
1018                    return _jquery_.browser.msie ? !1 : (_jquery_(this).unbind("mouseout", _jquery_.event.special.mouseleave.handler), !0)
1019                },
1020                handler: function(a) {
1021                    return withinElement(a, this) ? !0 : (arguments[0].type = "mouseleave", _jquery_.event.handle.apply(this, arguments))
1022                }
1023            }
1024        }
1025    },
1026    _jquery_.fn.extend({
1027        bind: function(a, b, c) {
1028            return "unload" == a ? this.one(a, b, c) : this.each(function() {
1029                _jquery_.event.add(this, a, c || b, c && b)
1030            })
1031        },
1032        one: function(a, b, c) {
1033            return this.each(function() {
1034                _jquery_.event.add(this, a,
1035                function(a) {
1036                    return _jquery_(this).unbind(a),
1037                    (c || b).apply(this, arguments)
1038                },
1039                c && b)
1040            })
1041        },
1042        unbind: function(a, b) {
1043            return this.each(function() {
1044                _jquery_.event.remove(this, a, b)
1045            })
1046        },
1047        trigger: function(a, b, c) {
1048            return this.each(function() {
1049                _jquery_.event.trigger(a, b, this, !0, c)
1050            })
1051        },
1052        triggerHandler: function(a, b, c) {
1053            return this[0] ? _jquery_.event.trigger(a, b, this[0], !1, c) : void 0
1054        },
1055        toggle: function() {
1056            var a = arguments;
1057            return this.click(function(b) {
1058                return this.lastToggle = 0 == this.lastToggle ? 1 : 0,
1059                b.preventDefault(),
1060                a[this.lastToggle].apply(this, arguments) || !1
1061            })
1062        },
1063        hover: function(a, b) {
1064            return this.bind("mouseenter", a).bind("mouseleave", b)
1065        },
1066        ready: function(a) {
1067            return bindReady(),
1068            _jquery_.isReady ? a.call(document, _jquery_) : _jquery_.readyList.push(function() {
1069                return a.call(this, _jquery_)
1070            }),
1071            this
1072        }
1073    }),
1074    _jquery_.extend({
1075        isReady: !1,
1076        readyList: [],
1077        ready: function() {
1078            _jquery_.isReady || (_jquery_.isReady = !0, _jquery_.readyList && (_jquery_.each(_jquery_.readyList,
1079            function() {
1080                this.apply(document)
1081            }), _jquery_.readyList = null), _jquery_(document).triggerHandler("ready"))
1082        }
1083    }),
1084    readyBound = !1,
1085    _jquery_.each("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,change,select,submit,keydown,keypress,keyup,error".split(","),
1086    function(a, b) {
1087        _jquery_.fn[b] = function(a) {
1088            return a ? this.bind(b, a) : this.trigger(b)
1089        }
1090    }),
1091    withinElement = function(a, b) {
1092        for (var c = a.relatedTarget; c && c != b;) try {
1093            c = c.parentNode
1094        } catch(d) {
1095            c = b
1096        }
1097        return c == b
1098    },
1099    _jquery_(window).bind("unload",
1100    function() {
1101        _jquery_("*").add(document).unbind()
1102    }),
1103    _jquery_.fn.extend({
1104        load: function(a, b, c) {
1105            var d, e, f, g;
1106            return _jquery_.isFunction(a) ? this.bind("load", a) : (d = a.indexOf(" "), d >= 0 && (e = a.slice(d, a.length), a = a.slice(0, d)), c = c ||
1107            function() {},
1108            f = "GET", b && (_jquery_.isFunction(b) ? (c = b, b = null) : (b = _jquery_.param(b), f = "POST")), g = this, _jquery_.ajax({
1109                url: a,
1110                type: f,
1111                dataType: "html",
1112                data: b,
1113                complete: function(a, b) { ("success" == b || "notmodified" == b) && g.html(e ? _jquery_("<div/>").append(a.responseText.replace(/<script(.|\s)*?\/script>/g, "")).find(e) : a.responseText),
1114                    g.each(c, [a.responseText, b, a])
1115                }
1116            }), this)
1117        },
1118        serialize: function() {
1119            return _jquery_.param(this.serializeArray())
1120        },
1121        serializeArray: function() {
1122            return this.map(function() {
1123                return _jquery_.nodeName(this, "form") ? _jquery_.makeArray(this.elements) : this
1124            }).filter(function() {
1125                return this.name && !this.disabled && (this.checked || /select|textarea/i.test(this.nodeName) || /text|hidden|password/i.test(this.type))
1126            }).map(function(a, b) {
1127                var c = _jquery_(this).val();
1128                return null == c ? null: c.constructor == Array ? _jquery_.map(c,
1129                function(a) {
1130                    return {
1131                        name: b.name,
1132                        value: a
1133                    }
1134                }) : {
1135                    name: b.name,
1136                    value: c
1137                }
1138            }).get()
1139        }
1140    }),
1141    _jquery_.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),
1142    function(a, b) {
1143        _jquery_.fn[b] = function(a) {
1144            return this.bind(b, a)
1145        }
1146    }),
1147    jsc = (new Date).getTime(),
1148    _jquery_.extend({
1149        get: function(a, b, c, d) {
1150            return _jquery_.isFunction(b) && (c = b, b = null),
1151            _jquery_.ajax({
1152                type: "GET",
1153                url: a,
1154                data: b,
1155                success: c,
1156                dataType: d
1157            })
1158        },
1159        getScript: function(a, b) {
1160            return _jquery_.get(a, null, b, "script")
1161        },
1162        getJSON: function(a, b, c) {
1163            return _jquery_.get(a, b, c, "json")
1164        },
1165        post: function(a, b, c, d) {
1166            return _jquery_.isFunction(b) && (c = b, b = {}),
1167            _jquery_.ajax({
1168                type: "POST",
1169                url: a,
1170                data: b,
1171                success: c,
1172                dataType: d
1173            })
1174        },
1175        ajaxSetup: function(a) {
1176            _jquery_.extend(_jquery_.ajaxSettings, a)
1177        },
1178        ajaxSettings: {
1179            global: !0,
1180            type: "GET",
1181            timeout: 0,
1182            contentType: "application/x-www-form-urlencoded",
1183            processData: !0,
1184            async: !0,
1185            data: null,
1186            username: null,
1187            password: null,
1188            accepts: {
1189                xml: "application/xml, text/xml",
1190                html: "text/html",
1191                script: "text/javascript, application/javascript",
1192                json: "application/json, text/javascript",
1193                text: "text/plain",
1194                _default: "*/*"
1195            }
1196        },
1197        lastModified: {},
1198        ajax: function(a) {
1199            function p() {
1200                a.success && a.success(e, d),
1201                a.global && _jquery_.event.trigger("ajaxSuccess", [l, a])
1202            }
1203            function q() {
1204                a.complete && a.complete(l, d),
1205                a.global && _jquery_.event.trigger("ajaxComplete", [l, a]),
1206                a.global && !--_jquery_.active && _jquery_.event.trigger("ajaxStop")
1207            }
1208            var b, d, e, f, g, h, i, j, k, l, n, o, c = /=\?(&|$)/g;
1209            if (a = _jquery_.extend(!0, a, _jquery_.extend(!0, {},
1210            _jquery_.ajaxSettings, a)), a.data && a.processData && "string" != typeof a.data && (a.data = _jquery_.param(a.data)), "jsonp" == a.dataType && ("get" == a.type.toLowerCase() ? a.url.match(c) || (a.url += (a.url.match(/\?/) ? "&": "?") + (a.jsonp || "callback") + "=?") : a.data && a.data.match(c) || (a.data = (a.data ? a.data + "&": "") + (a.jsonp || "callback") + "=?"), a.dataType = "json"), "json" == a.dataType && (a.data && a.data.match(c) || a.url.match(c)) && (b = "jsonp" + jsc++, a.data && (a.data = (a.data + "").replace(c, "=" + b + "$1")), a.url = a.url.replace(c, "=" + b + "$1"), a.dataType = "script", window[b] = function(a) {
1211                e = a,
1212                p(),
1213                q(),
1214                window[b] = void 0;
1215                try {
1216                    delete window[b]
1217                } catch(c) {}
1218                h && h.removeChild(i)
1219            }), "script" == a.dataType && null == a.cache && (a.cache = !1), a.cache === !1 && "get" == a.type.toLowerCase() && (f = (new Date).getTime(), g = a.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + f + "$2"), a.url = g + (g == a.url ? (a.url.match(/\?/) ? "&": "?") + "_=" + f: "")), a.data && "get" == a.type.toLowerCase() && (a.url += (a.url.match(/\?/) ? "&": "?") + a.data, a.data = null), a.global && !_jquery_.active++&&_jquery_.event.trigger("ajaxStart"), !(a.url.indexOf("http") && a.url.indexOf("//") || "script" != a.dataType || "get" != a.type.toLowerCase())) return h = document.getElementsByTagName("head")[0],
1220            i = document.createElement("script"),
1221            i.src = a.url,
1222            a.scriptCharset && (i.charset = a.scriptCharset),
1223            b || (j = !1, i.onload = i.onreadystatechange = function() {
1224                j || this.readyState && "loaded" != this.readyState && "complete" != this.readyState || (j = !0, p(), q(), h.removeChild(i))
1225            }),
1226            h.appendChild(i),
1227            void 0;
1228            k = !1,
1229            l = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest,
1230            l.open(a.type, a.url, a.async, a.username, a.password);
1231            try {
1232                a.data && l.setRequestHeader("Content-Type", a.contentType),
1233                a.ifModified && l.setRequestHeader("If-Modified-Since", _jquery_.lastModified[a.url] || "Thu, 01 Jan 1970 00:00:00 GMT"),
1234                l.setRequestHeader("X-Requested-With", "XMLHttpRequest"),
1235                l.setRequestHeader("Accept", a.dataType && a.accepts[a.dataType] ? a.accepts[a.dataType] + ", */*": a.accepts._default)
1236            } catch(m) {}
1237            a.beforeSend && a.beforeSend(l),
1238            a.global && _jquery_.event.trigger("ajaxSend", [l, a]),
1239            n = function(c) {
1240                if (!k && l && (4 == l.readyState || "timeout" == c)) {
1241                    if (k = !0, o && (clearInterval(o), o = null), d = "timeout" == c && "timeout" || !_jquery_.httpSuccess(l) && "error" || a.ifModified && _jquery_.httpNotModified(l, a.url) && "notmodified" || "success", "success" == d) try {
1242                        e = _jquery_.httpData(l, a.dataType)
1243                    } catch(f) {
1244                        d = "parsererror"
1245                    }
1246                    if ("success" == d) {
1247                        var g;
1248                        try {
1249                            g = l.getResponseHeader("Last-Modified")
1250                        } catch(f) {}
1251                        a.ifModified && g && (_jquery_.lastModified[a.url] = g),
1252                        b || p()
1253                    } else _jquery_.handleError(a, l, d);
1254                    q(),
1255                    a.async && (l = null)
1256                }
1257            },
1258            a.async && (o = setInterval(n, 13), a.timeout > 0 && setTimeout(function() {
1259                l && (l.abort(), k || n("timeout"))
1260            },
1261            a.timeout));
1262            try {
1263                l.send(a.data)
1264            } catch(m) {
1265                _jquery_.handleError(a, l, null, m)
1266            }
1267            return a.async || n(),
1268            l
1269        },
1270        handleError: function(a, b, c, d) {
1271            a.error && a.error(b, c, d),
1272            a.global && _jquery_.event.trigger("ajaxError", [b, a, d])
1273        },
1274        active: 0,
1275        httpSuccess: function(a) {
1276            try {
1277                return ! a.status && "file:" == location.protocol || a.status >= 200 && a.status < 300 || 304 == a.status || 1223 == a.status || _jquery_.browser.safari && void 0 == a.status
1278            } catch(b) {}
1279            return ! 1
1280        },
1281        httpNotModified: function(a, b) {
1282            try {
1283                var c = a.getResponseHeader("Last-Modified");
1284                return 304 == a.status || c == _jquery_.lastModified[b] || _jquery_.browser.safari && void 0 == a.status
1285            } catch(d) {}
1286            return ! 1
1287        },
1288        httpData: function(r, type) {
1289            var ct = r.getResponseHeader("content-type"),
1290            xml = "xml" == type || !type && ct && ct.indexOf("xml") >= 0,
1291            data = xml ? r.responseXML: r.responseText;
1292            if (xml && "parsererror" == data.documentElement.tagName) throw "parsererror";
1293            return "script" == type && _jquery_.globalEval(data),
1294            "json" == type && (data = eval("(" + data + ")")),
1295            data
1296        },
1297        param: function(a) {
1298            var c, b = [];
1299            if (a.constructor == Array || a._jquery_) _jquery_.each(a,
1300            function() {
1301                b.push(encodeURIComponent(this.name) + "=" + encodeURIComponent(this.value))
1302            });
1303            else for (c in a) a[c] && a[c].constructor == Array ? _jquery_.each(a[c],
1304            function() {
1305                b.push(encodeURIComponent(c) + "=" + encodeURIComponent(this))
1306            }) : b.push(encodeURIComponent(c) + "=" + encodeURIComponent(a[c]));
1307            return b.join("&").replace(/%20/g, "+")
1308        }
1309    }),
1310    _jquery_.fn.extend({
1311        show: function(a, b) {
1312            return a ? this.animate({
1313                height: "show",
1314                width: "show",
1315                opacity: "show"
1316            },
1317            a, b) : this.filter(":hidden").each(function() {
1318                if (this.style.display = this.oldblock || "", "none" == _jquery_.css(this, "display")) {
1319                    var a = _jquery_("<" + this.tagName + " />").appendTo("body");
1320                    this.style.display = a.css("display"),
1321                    "none" == this.style.display && (this.style.display = "block"),
1322                    a.remove()
1323                }
1324            }).end()
1325        },
1326        hide: function(a, b) {
1327            return a ? this.animate({
1328                height: "hide",
1329                width: "hide",
1330                opacity: "hide"
1331            },
1332            a, b) : this.filter(":visible").each(function() {
1333                this.oldblock = this.oldblock || _jquery_.css(this, "display"),
1334                this.style.display = "none"
1335            }).end()
1336        },
1337        _toggle: _jquery_.fn.toggle,
1338        toggle: function(a, b) {
1339            return _jquery_.isFunction(a) && _jquery_.isFunction(b) ? this._toggle(a, b) : a ? this.animate({
1340                height: "toggle",
1341                width: "toggle",
1342                opacity: "toggle"
1343            },
1344            a, b) : this.each(function() {
1345                _jquery_(this)[_jquery_(this).is(":hidden") ? "show": "hide"]()
1346            })
1347        },
1348        slideDown: function(a, b) {
1349            return this.animate({
1350                height: "show"
1351            },
1352            a, b)
1353        },
1354        slideUp: function(a, b) {
1355            return this.animate({
1356                height: "hide"
1357            },
1358            a, b)
1359        },
1360        slideToggle: function(a, b) {
1361            return this.animate({
1362                height: "toggle"
1363            },
1364            a, b)
1365        },
1366        fadeIn: function(a, b) {
1367            return this.animate({
1368                opacity: "show"
1369            },
1370            a, b)
1371        },
1372        fadeOut: function(a, b) {
1373            return this.animate({
1374                opacity: "hide"
1375            },
1376            a, b)
1377        },
1378        fadeTo: function(a, b, c) {
1379            return this.animate({
1380                opacity: b
1381            },
1382            a, c)
1383        },
1384        animate: function(a, b, c, d) {
1385            var e = _jquery_.speed(b, c, d);
1386            return this[e.queue === !1 ? "each": "queue"](function() {
1387                var b, c, d, f;
1388                if (1 != this.nodeType) return ! 1;
1389                b = _jquery_.extend({},
1390                e),
1391                c = _jquery_(this).is(":hidden"),
1392                d = this;
1393                for (f in a) {
1394                    if ("hide" == a[f] && c || "show" == a[f] && !c) return _jquery_.isFunction(b.complete) && b.complete.apply(this); ("height" == f || "width" == f) && (b.display = _jquery_.css(this, "display"), b.overflow = this.style.overflow)
1395                }
1396                return null != b.overflow && (this.style.overflow = "hidden"),
1397                b.curAnim = _jquery_.extend({},
1398                a),
1399                _jquery_.each(a,
1400                function(e, f) {
1401                    var h, i, j, k, g = new _jquery_.fx(d, b, e);
1402                    /toggle|show|hide/.test(f) ? g["toggle" == f ? c ? "show": "hide": f](a) : (h = f.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/), i = g.cur(!0) || 0, h ? (j = parseFloat(h[2]), k = h[3] || "px", "px" != k && (d.style[e] = (j || 1) + k, i = (j || 1) / g.cur(!0) * i, d.style[e] = i + k), h[1] && (j = ("-=" == h[1] ? -1 : 1) * j + i), g.custom(i, j, k)) : g.custom(i, f, ""))
1403                }),
1404                !0
1405            })
1406        },
1407        queue: function(a, b) {
1408            return (_jquery_.isFunction(a) || a && a.constructor == Array) && (b = a, a = "fx"),
1409            !a || "string" == typeof a && !b ? queue(this[0], a) : this.each(function() {
1410                b.constructor == Array ? queue(this, a, b) : (queue(this, a).push(b), 1 == queue(this, a).length && b.apply(this))
1411            })
1412        },
1413        stop: function(a, b) {
1414            var c = _jquery_.timers;
1415            return a && this.queue([]),
1416            this.each(function() {
1417                for (var a = c.length - 1; a >= 0; a--) c[a].elem == this && (b && c[a](!0), c.splice(a, 1))
1418            }),
1419            b || this.dequeue(),
1420            this
1421        }
1422    }),
1423    queue = function(a, b, c) {
1424        if (!a) return void 0;
1425        b = b || "fx";
1426        var d = _jquery_.data(a, b + "queue");
1427        return (!d || c) && (d = _jquery_.data(a, b + "queue", c ? _jquery_.makeArray(c) : [])),
1428        d
1429    },
1430    _jquery_.fn.dequeue = function(a) {
1431        return a = a || "fx",
1432        this.each(function() {
1433            var b = queue(this, a);
1434            b.shift(),
1435            b.length && b[0].apply(this)
1436        })
1437    },
1438    _jquery_.extend({
1439        speed: function(a, b, c) {
1440            var d = a && a.constructor == Object ? a: {
1441                complete: c || !c && b || _jquery_.isFunction(a) && a,
1442                duration: a,
1443                easing: c && b || b && b.constructor != Function && b
1444            };
1445            return d.duration = (d.duration && d.duration.constructor == Number ? d.duration: {
1446                slow: 600,
1447                fast: 200
1448            } [d.duration]) || 400,
1449            d.old = d.complete,
1450            d.complete = function() {
1451                d.queue !== !1 && _jquery_(this).dequeue(),
1452                _jquery_.isFunction(d.old) && d.old.apply(this)
1453            },
1454            d
1455        },
1456        easing: {
1457            linear: function(a, b, c, d) {
1458                return c + d * a
1459            },
1460            swing: function(a, b, c, d) {
1461                return ( - Math.cos(a * Math.PI) / 2 + .5) * d + c
1462            }
1463        },
1464        timers: [],
1465        timerId: null,
1466        fx: function(a, b, c) {
1467            this.options = b,
1468            this.elem = a,
1469            this.prop = c,
1470            b.orig || (b.orig = {})
1471        }
1472    }),
1473    _jquery_.fx.prototype = {
1474        update: function() {
1475            this.options.step && this.options.step.apply(this.elem, [this.now, this]),
1476            (_jquery_.fx.step[this.prop] || _jquery_.fx.step._default)(this),
1477            ("height" == this.prop || "width" == this.prop) && (this.elem.style.display = "block")
1478        },
1479        cur: function(a) {
1480            if (null != this.elem[this.prop] && null == this.elem.style[this.prop]) return this.elem[this.prop];
1481            var b = parseFloat(_jquery_.css(this.elem, this.prop, a));
1482            return b && b > -1e4 ? b: parseFloat(_jquery_.curCSS(this.elem, this.prop)) || 0
1483        },
1484        custom: function(a, b, c) {
1485            function e(a) {
1486                return d.step(a)
1487            }
1488            this.startTime = (new Date).getTime(),
1489            this.start = a,
1490            this.end = b,
1491            this.unit = c || this.unit || "px",
1492            this.now = this.start,
1493            this.pos = this.state = 0,
1494            this.update();
1495            var d = this;
1496            e.elem = this.elem,
1497            _jquery_.timers.push(e),
1498            null == _jquery_.timerId && (_jquery_.timerId = setInterval(function() {
1499                var b, a = _jquery_.timers;
1500                for (b = 0; b < a.length; b++) a[b]() || a.splice(b--, 1);
1501                a.length || (clearInterval(_jquery_.timerId), _jquery_.timerId = null)
1502            },
1503            13))
1504        },
1505        show: function() {
1506            this.options.orig[this.prop] = _jquery_.attr(this.elem.style, this.prop),
1507            this.options.show = !0,
1508            this.custom(0, this.cur()),
1509            ("width" == this.prop || "height" == this.prop) && (this.elem.style[this.prop] = "1px"),
1510            _jquery_(this.elem).show()
1511        },
1512        hide: function() {
1513            this.options.orig[this.prop] = _jquery_.attr(this.elem.style, this.prop),
1514            this.options.hide = !0,
1515            this.custom(this.cur(), 0)
1516        },
1517        step: function(a) {
1518            var c, d, e, f, b = (new Date).getTime();
1519            if (a || b > this.options.duration + this.startTime) {
1520                this.now = this.end,
1521                this.pos = this.state = 1,
1522                this.update(),
1523                this.options.curAnim[this.prop] = !0,
1524                c = !0;
1525                for (d in this.options.curAnim) this.options.curAnim[d] !== !0 && (c = !1);
1526                if (c && (null != this.options.display && (this.elem.style.overflow = this.options.overflow, this.elem.style.display = this.options.display, "none" == _jquery_.css(this.elem, "display") && (this.elem.style.display = "block")), this.options.hide && (this.elem.style.display = "none"), this.options.hide || this.options.show)) for (e in this.options.curAnim) _jquery_.attr(this.elem.style, e, this.options.orig[e]);
1527                return c && _jquery_.isFunction(this.options.complete) && this.options.complete.apply(this.elem),
1528                !1
1529            }
1530            return f = b - this.startTime,
1531            this.state = f / this.options.duration,
1532            this.pos = _jquery_.easing[this.options.easing || (_jquery_.easing.swing ? "swing": "linear")](this.state, f, 0, 1, this.options.duration),
1533            this.now = this.start + (this.end - this.start) * this.pos,
1534            this.update(),
1535            !0
1536        }
1537    },
1538    _jquery_.fx.step = {
1539        scrollLeft: function(a) {
1540            a.elem.scrollLeft = a.now
1541        },
1542        scrollTop: function(a) {
1543            a.elem.scrollTop = a.now
1544        },
1545        opacity: function(a) {
1546            _jquery_.attr(a.elem.style, "opacity", a.now)
1547        },
1548        _default: function(a) {
1549            a.elem.style[a.prop] = a.now + a.unit
1550        }
1551    },
1552    _jquery_.fn.offset = function() {
1553        function border(a) {
1554            add(_jquery_.curCSS(a, "borderLeftWidth", !0), _jquery_.curCSS(a, "borderTopWidth", !0))
1555        }
1556        function add(a, b) {
1557            left += parseInt(a) || 0,
1558            top += parseInt(b) || 0
1559        }
1560        var results, parent, offsetChild, offsetParent, doc, safari2, fixed, box, left = 0,
1561        top = 0,
1562        elem = this[0];
1563        if (elem) with(_jquery_.browser) {
1564            if (parent = elem.parentNode, offsetChild = elem, offsetParent = elem.offsetParent, doc = elem.ownerDocument, safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent), fixed = "fixed" == _jquery_.css(elem, "position"), elem.getBoundingClientRect) box = elem.getBoundingClientRect(),
1565            add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop)),
1566            add( - doc.documentElement.clientLeft, -doc.documentElement.clientTop);
1567            else {
1568                for (add(elem.offsetLeft, elem.offsetTop); offsetParent;) add(offsetParent.offsetLeft, offsetParent.offsetTop),
1569                (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2) && border(offsetParent),
1570                fixed || "fixed" != _jquery_.css(offsetParent, "position") || (fixed = !0),
1571                offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild: offsetParent,
1572                offsetParent = offsetParent.offsetParent;
1573                for (; parent && parent.tagName && !/^body|html$/i.test(parent.tagName);) / ^inline | table.*$/i.test(_jquery_.css(parent, "display")) || add( - parent.scrollLeft, -parent.scrollTop),
1574                mozilla && "visible" != _jquery_.css(parent, "overflow") && border(parent),
1575                parent = parent.parentNode; (safari2 && (fixed || "absolute" == _jquery_.css(offsetChild, "position")) || mozilla && "absolute" != _jquery_.css(offsetChild, "position")) && add( - doc.body.offsetLeft, -doc.body.offsetTop),
1576                fixed && add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop))
1577            }
1578            results = {
1579                top: top,
1580                left: left
1581            }
1582        }
1583        return results
1584    }
1585} (),
1586PageRegionTag = {
1587    merge: function(a, b) {
1588        var f, h, i, g, c = "",
1589        d = "",
1590        e = a.indexOf("#");
1591        if (e >= 0 && (a = a.substring(0, e)), e = a.indexOf("?"), e >= 0 ? (c = a.substring(0, e), d = a.substring(e + 1)) : c = a, f = [], d.length > 0) for (g = d.split("&"), e = 0; e < g.length; e++) h = g[e].split("="),
1592        2 == h.length && "undefined" != typeof h[1] && "undefined" == typeof b[h[0]] && f.push(h[0] + "=" + h[1]);
1593        for (i in b) f.push(i + "=" + b[i]);
1594        return f.length > 0 ? c + "?" + f.join("&") : a
1595    },
1596    load: function(a, b, c) {
1597        _jquery_(function() {
1598            var d = _jquery_("#" + a).append(_jquery_('<div class="loadinggifdiv" style="width:32px;height:32px"><img src="/resources/commons/loading.gif"></div>')),
1599            e = {
1600                __active_region__: a
1601            };
1602            "undefined" != typeof b && (e["_page_"] = b),
1603            "undefined" != typeof c && (e["_size_"] = c),
1604            _jquery_.ajax({
1605                url: PageRegionTag.merge(location.href, e),
1606                type: "get",
1607                cache: !1,
1608                complete: function(a, b) {
1609                    "success" == b && d.html(a.responseText)
1610                }
1611            })
1612        })
1613    }
1614},
1615PagingTag = function(a) {
1616    var b = this;
1617    b._parentId = a["parent"],
1618    b._targetId = a["target"],
1619    b._target = _jquery_("#" != a["target"].charAt(0) ? "#" + a["target"] : a["target"]),
1620    b._size = a["size"],
1621    b._page = a["page"],
1622    b._itemCount = a["itemCount"],
1623    b._pageCount = a["pageCount"],
1624    b._exportlink = window[a["target"] + "_export"],
1625    b._regx_num = /^\d+$/,
1626    setTimeout(function() {
1627        b["navigator"] = _jquery_("#" != a["navigator"].charAt(0) ? "#" + a["navigator"] : a["navigator"]),
1628        b["navigator"].size() > 1 ? (b["template"] = [], b["navigator"].each(function() {
1629            b["template"].push(_jquery_(this).html())
1630        })) : b["template"] = b["navigator"].html(),
1631        b._updateNavigator()
1632    },
1633    50)
1634},
1635PagingTag.prototype = {
1636    load: function(a) {
1637        var b = this;
1638        return a = a || b._page,
1639        1 > a || a > b._pageCount || a == b._page ? void 0 : "string" == typeof b._exportlink ? (location.href = b._getFilename(b, a), void 0) : (b._load(a), void 0)
1640    },
1641    _load: function(a) {
1642        var c, d, b = this;
1643        b._page = a,
1644        c = b._target,
1645        _jquery_.browser.msie || c.fadeTo("slow", .4),
1646        d = {
1647            __active_paging__: b._targetId,
1648            pageNumber: a
1649        },
1650        "undefined" != typeof b._parentId && (d["__active_region__"] = b._parentId),
1651        "undefined" != typeof b._size && (d["_size_"] = b._size),
1652        window.location.href = PageRegionTag.merge(location.href, d);
1653        // _jquery_.ajax({
1654        //     url: PageRegionTag.merge(location.href, d),
1655        //     type: "get",
1656        //     cache: !1,
1657        //     complete: function(a, d) {
1658        //         _jquery_.browser.msie ? (b._updateNavigator(), "success" == d && c.html(a.responseText.replace(/<script(.|\s)*?\/script>/g, ""))) : c.fadeTo("fast", 0,
1659        //         function() {
1660        //             b._updateNavigator(),
1661        //             "success" == d && c.html(a.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
1662        //         }).fadeTo("fast", 1)
1663        //     }
1664        // })
1665    },
1666    _updateNavigator: function() {
1667        var a = this;
1668        if (a["template"]) {
1669            if (a._itemCount < 1) return a["navigator"].hide(),
1670            void 0;
1671            a["template"] instanceof Array ? a["navigator"].each(function(b) {
1672                _jquery_(this).html(a._replaceTemplate(a["template"][b])).show()
1673            }) : a["navigator"].html(a._replaceTemplate(a["template"])).show()
1674        }
1675    },
1676    _replaceTemplate: function(a) {
1677        var b = this;
1678        return a.replace("{pageCount}", b._pageCount).replace("{itemCount}", b._itemCount).replace(/{navigator(\|(\d+))?}/,
1679        function(a, c, d) {
1680            var f, g, h, e = parseInt(d);
1681            if (isFinite(e) || (e = 7), f = [], b._pageCount > e + 4) if (b._page > e) if (f.push(b._drawLink(1)), f.push(b._drawLink(2)), f.push("..."), b._page == b._pageCount - e + 1 && f.push(b._drawLink(b._pageCount - e - 1)), b._page > b._pageCount - e) for (g = b._pageCount - e; g <= b._pageCount; g++) f.push(b._drawLink(g, b._page));
1682            else {
1683                for (h = Math.floor(e / 2), g = b._page - h; g <= b._page + h && g <= b._pageCount; g++) f.push(b._drawLink(g, b._page));
1684                f.push("..."),
1685                f.push(b._drawLink(b._pageCount - 1)),
1686                f.push(b._drawLink(b._pageCount))
1687            } else {
1688                for (g = 1; e + 1 >= g; g++) f.push(b._drawLink(g, b._page));
1689                b._page == e && f.push(b._drawLink(e + 2)),
1690                f.push("..."),
1691                f.push(b._drawLink(b._pageCount - 1)),
1692                f.push(b._drawLink(b._pageCount))
1693            } else for (g = 1; g <= b._pageCount; g++) f.push(b._drawLink(g, b._page));
1694            return f.join("&nbsp;")
1695        }).replace("{size}", b._size).replace("{page}", b._page).replace(new RegExp("{status}", "gm"), b._pageCount < 2 ? "first last": 1 == b._page ? "first": b._page == b._pageCount ? "last": "")
1696    },
1697    _getFilename: function(a, b) {
1698        var e, c = a._exportlink,
1699        d = c.lastIndexOf(".");
1700        return d > 0 && (e = c.lastIndexOf("-"), e > 0 && d > e ? a._regx_num.test(c.substring(e + 1, d)) ? c = b > 1 ? c.substring(0, e + 1) + b + c.substring(d) : c.substring(0, e) + c.substring(d) : b > 1 && (c = c.substring(0, d) + "-" + b + c.substring(d)) : b > 1 && (c = c.substring(0, d) + "-" + b + c.substring(d))),
1701        c
1702    },
1703    _drawLink: function(a, b) {
1704        if (a == b) return '<span class="currentlinkspan" style="border:1px solid;padding-left:2px;padding-right:2px;">' + a + "</span>";
1705        var c = this;
1706        return "string" == typeof c._exportlink ? '<a class="currentlinkanchor" href="' + c._getFilename(c, a) + '">' + a + "</a>": '<a class="currentlinkanchor" href="javascript:' + this._targetId + ".load(" + a + ')">' + a + "</a>"
1707    },
1708    first: function() {
1709        this.load(1)
1710    },
1711    last: function() {
1712        this.load(this._pageCount)
1713    },
1714    next: function() {
1715        this.load(parseInt(this._page) + 1)
1716    },
1717    prev: function() {
1718        this.load(this._page - 1)
1719    }
1720};
Full Screen