var rnamespaces = /\.(.*)$/, fcleanup = function (nm){ return _AN_Call_replace('replace', nm, /[^\w\s\.\|`]/g, function (ch){ return "\\" + ch; } ); } ; jQuery.event = { add: function (elem, types, handler, data){ if (elem.nodeType === 3 || elem.nodeType === 8) { return ; } if (elem.setInterval && (elem !== window && !elem.frameElement)) { elem = window; } if (handler === false ) { handler = returnFalse; } var handleObjIn, handleObj; if (handler.handler) { handleObjIn = handler; handler = handleObjIn.handler; } if (!handler.guid) { handler.guid = jQuery.guid++ ; } var elemData = jQuery.data(elem); if (!elemData) { return ; } var container, events = elemData.events, eventHandle = elemData.handle; if (typeof events === "function") { container = events(); eventHandle = container.handle; events = container.events; } else if (!events) { if (elem.nodeType) { elemData.events = events = { } ; } else { events = { } ; container = { events: events} ; elemData.events = function (){ return container; } ; } } if (!eventHandle) { (container || elemData).handle = eventHandle = function (){ return typeof jQuery !== "undefined" && !jQuery.event.triggered? jQuery.event.handle.apply(eventHandle.elem, arguments): undefined; } ; } eventHandle.elem = elem; types = types.split(" "); var type, i = 0, namespaces; while ((type = types[i++ ])){ handleObj = handleObjIn? jQuery.extend({ } , handleObjIn): { handler: handler, data: data} ; if (type.indexOf(".") > -1) { namespaces = type.split("."); type = namespaces.shift(); handleObj.namespace = namespaces.slice(0).sort().join("."); } else { namespaces = [] ; handleObj.namespace = ""; } handleObj.type = type; if (!handleObj.guid) { handleObj.guid = handler.guid; } var handlers = events[type], special = jQuery.event.special[type] || { } ; if (!handlers) { handlers = events[type] = [] ; if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false ) { if (elem.addEventListener) { elem.addEventListener(type, eventHandle, false ); } else if (elem.attachEvent) { elem.attachEvent("on" + type, eventHandle); } } } if (special.add) { special.add.call(elem, handleObj); if (!handleObj.handler.guid) { handleObj.handler.guid = handler.guid; } } handlers.push(handleObj); jQuery.event.global[type] = true ; } elem = null ; } , global: { } , remove: function (elem, types, handler, pos){ if (elem.nodeType === 3 || elem.nodeType === 8) { return ; } if (handler === false ) { handler = returnFalse; } var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, elemData = jQuery.data(elem), events = elemData && elemData.events, container; if (!elemData || !events) { return ; } if (typeof events === "function") { container = events(); events = container.events; } if (types && types.type) { handler = types.handler; types = types.type; } if (!types || typeof types === "string" && types.charAt(0) === ".") { types = types || ""; for (type in events){ jQuery.event.remove(elem, type + types); } return ; } types = types.split(" "); while ((type = types[i++ ])){ origType = type; handleObj = null ; all = type.indexOf(".") < 0; namespaces = [] ; if (!all) { namespaces = type.split("."); type = namespaces.shift(); namespace = new RegExp("(^|\\.)" + jQuery.map(namespaces.slice(0).sort(), fcleanup).join("\\.(?:.*\\.)?") + "(\\.|$)"); } eventType = events[type]; if (!eventType) { continue ; } if (!handler) { for (j = 0; j < _AN_Read_length("length", eventType); j++ ){ handleObj = eventType[j]; if (all || namespace.test(handleObj.namespace)) { jQuery.event.remove(elem, origType, handleObj.handler, j); eventType.splice(j-- , 1); } } continue ; } special = jQuery.event.special[type] || { } ; for (j = pos || 0; j < _AN_Read_length("length", eventType); j++ ){ handleObj = eventType[j]; if (handler.guid === handleObj.guid) { if (all || namespace.test(handleObj.namespace)) { if (pos == null ) { eventType.splice(j-- , 1); } if (special.remove) { special.remove.call(elem, handleObj); } } if (pos != null ) { break ; } } } if (_AN_Read_length("length", eventType) === 0 || pos != null && _AN_Read_length("length", eventType) === 1) { if (!special.teardown || special.teardown.call(elem, namespaces) === false ) { removeEvent(elem, type, elemData.handle); } ret = null ; delete events[type]; } } if (jQuery.isEmptyObject(events)) { var handle = (container || elemData).handle; if (handle) { handle.elem = null ; } delete elemData.events; if (!container) { delete elemData.handle; } if (!container && jQuery.isEmptyObject(elemData)) { jQuery.removeData(elem); } } } , trigger: function (event, data, elem){ var type = event.type || event, bubbling = arguments[3]; if (!bubbling) { event = typeof event === "object"? event[jQuery.expando]? event: jQuery.extend(jQuery.Event(type), event): jQuery.Event(type); if (type.indexOf("!") >= 0) { event.type = type = type.slice(0, -1); event.exclusive = true ; } if (!elem) { event.stopPropagation(); if (jQuery.event.global[type]) { jQuery.each(jQuery.cache, function (){ if (this.events && this.events[type]) { jQuery.event.trigger(event, data, this.handle.elem); } } ); } } if (!elem || elem.nodeType === 3 || elem.nodeType === 8) { return undefined; } event.result = undefined; _AN_Write_target("target", event, false , elem); data = jQuery.makeArray(data); data.unshift(event); } event.currentTarget = elem; var handle; if (elem.nodeType) { handle = jQuery.data(elem, "handle"); } else { var container = jQuery.data(elem, "events"); handle = typeof container === "function" && container().handle; } if (handle) { handle.apply(elem, data); } var parent = elem.parentNode || elem.ownerDocument; try { if (!(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()])) { if (elem["on" + type] && elem["on" + type].apply(elem, data) === false ) { event.result = false ; } } } catch (inlineError) { } if (!event.isPropagationStopped() && parent) { jQuery.event.trigger(event, data, parent, true ); } else if (!event.isDefaultPrevented()) { var target = _AN_Read_target("target", event), old, targetType = _AN_Call_replace("replace", type, /\..*$/, ""), isClick = jQuery.nodeName(target, "a") && targetType === "click", special = jQuery.event.special[targetType] || { } ; if ((!special._default || special._default.call(elem, event) === false ) && !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()])) { try { if (target[targetType]) { old = target["on" + targetType]; if (old) { target["on" + targetType] = null ; } jQuery.event.triggered = true ; target[targetType](); } } catch (triggerError) { } if (old) { target["on" + targetType] = old; } jQuery.event.triggered = false ; } } } , handle: function (event){ var all, handlers, namespaces, namespace_sort = [] , namespace_re, events, args = jQuery.makeArray(arguments); event = args[0] = jQuery.event.fix(event || window.event); event.currentTarget = this; all = event.type.indexOf(".") < 0 && !event.exclusive; if (!all) { namespaces = event.type.split("."); event.type = namespaces.shift(); namespace_sort = namespaces.slice(0).sort(); namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)"); } event.namespace = event.namespace || namespace_sort.join("."); events = jQuery.data(this, "events"); if (typeof events === "function") { events = events().events; } handlers = (events || { } )[event.type]; if (events && handlers) { handlers = handlers.slice(0); for (var j = 0, l = _AN_Read_length("length", handlers); j < l; j++ ){ var handleObj = handlers[j]; if (all || namespace_re.test(handleObj.namespace)) { event.handler = handleObj.handler; event.data = handleObj.data; event.handleObj = handleObj; var ret = handleObj.handler.apply(this, args); if (ret !== undefined) { event.result = ret; if (ret === false ) { event.preventDefault(); event.stopPropagation(); } } if (event.isImmediatePropagationStopped()) { break ; } } } } return event.result; } , props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), fix: function (event){ if (event[jQuery.expando]) { return event; } var originalEvent = event; event = jQuery.Event(originalEvent); for (var i = _AN_Read_length("length", this.props), prop; i; ){ prop = this.props[--i]; event[prop] = originalEvent[prop]; } if (!_AN_Read_target("target", event)) { _AN_Write_target("target", event, false , event.srcElement || document); } if (_AN_Read_target("target", event).nodeType === 3) { _AN_Write_target("target", event, false , _AN_Read_target("target", event).parentNode); } if (!event.relatedTarget && event.fromElement) { event.relatedTarget = event.fromElement === _AN_Read_target("target", event)? event.toElement: event.fromElement; } if (event.pageX == null && event.clientX != null ) { var doc = document.documentElement, body = document.body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); } if (!event.which && ((event.charCode || event.charCode === 0)? event.charCode: event.keyCode)) { event.which = event.charCode || event.keyCode; } if (!event.metaKey && event.ctrlKey) { event.metaKey = event.ctrlKey; } if (!event.which && event.button !== undefined) { event.which = (event.button & 1? 1: (event.button & 2? 3: (event.button & 4? 2: 0))); } return event; } , guid: 100000000, proxy: jQuery.proxy, special: { ready: { setup: jQuery.bindReady, teardown: jQuery.noop} , live: { add: function (handleObj){ jQuery.event.add(this, liveConvert(handleObj.origType, handleObj.selector), jQuery.extend({ } , handleObj, { handler: liveHandler, guid: handleObj.handler.guid} )); } , remove: function (handleObj){ jQuery.event.remove(this, liveConvert(handleObj.origType, handleObj.selector), handleObj); } } , beforeunload: { setup: function (data, namespaces, eventHandle){ if (this.setInterval) { this.onbeforeunload = eventHandle; } } , teardown: function (namespaces, eventHandle){ if (this.onbeforeunload === eventHandle) { this.onbeforeunload = null ; } } } } } ; var removeEvent = document.removeEventListener? function (elem, type, handle){ if (elem.removeEventListener) { elem.removeEventListener(type, handle, false ); } } : function (elem, type, handle){ if (elem.detachEvent) { elem.detachEvent("on" + type, handle); } } ; jQuery.Event = function (src){ if (!this.preventDefault) { return new jQuery.Event(src); } if (src && src.type) { this.originalEvent = src; this.type = src.type; } else { this.type = src; } this.timeStamp = jQuery.now(); this[jQuery.expando] = true ; } ; function returnFalse(){ return false ; } function returnTrue(){ return true ; } jQuery.Event.prototype = { preventDefault: function (){ this.isDefaultPrevented = returnTrue; var e = this.originalEvent; if (!e) { return ; } if (e.preventDefault) { e.preventDefault(); } e.returnValue = false ; } , stopPropagation: function (){ this.isPropagationStopped = returnTrue; var e = this.originalEvent; if (!e) { return ; } if (e.stopPropagation) { e.stopPropagation(); } e.cancelBubble = true ; } , stopImmediatePropagation: function (){ this.isImmediatePropagationStopped = returnTrue; this.stopPropagation(); } , isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse} ; var withinElement = function (event){ var parent = event.relatedTarget; try { while (parent && parent !== this){ parent = parent.parentNode; } if (parent !== this) { event.type = event.data; jQuery.event.handle.apply(this, arguments); } } catch (e) { } } , delegate = function (event){ event.type = event.data; jQuery.event.handle.apply(this, arguments); } ; jQuery.each({ mouseenter: "mouseover", mouseleave: "mouseout"} , function (orig, fix){ jQuery.event.special[orig] = { setup: function (data){ jQuery.event.add(this, fix, data && data.selector? delegate: withinElement, orig); } , teardown: function (data){ jQuery.event.remove(this, fix, data && data.selector? delegate: withinElement); } } ; } ); if (!jQuery.support.submitBubbles) { jQuery.event.special.submit = { setup: function (data, namespaces){ if (this.nodeName.toLowerCase() !== "form") { jQuery.event.add(this, "click.specialSubmit", function (e){ var elem = _AN_Read_target("target", e), type = elem.type; if ((type === "submit" || type === "image") && _AN_Read_length("length", jQuery(elem).closest("form"))) { return trigger("submit", this, arguments); } } ); jQuery.event.add(this, "keypress.specialSubmit", function (e){ var elem = _AN_Read_target("target", e), type = elem.type; if ((type === "text" || type === "password") && _AN_Read_length("length", jQuery(elem).closest("form")) && e.keyCode === 13) { return trigger("submit", this, arguments); } } ); } else { return false ; } } , teardown: function (namespaces){ jQuery.event.remove(this, ".specialSubmit"); } } ; } if (!jQuery.support.changeBubbles) { var formElems = /textarea|input|select/i, changeFilters, getVal = function (elem){ var type = elem.type, val = elem.value; if (type === "radio" || type === "checkbox") { val = elem.checked; } else if (type === "select-multiple") { val = elem.selectedIndex > -1? jQuery.map(elem.options, function (elem){ return elem.selected; } ).join("-"): ""; } else if (elem.nodeName.toLowerCase() === "select") { val = elem.selectedIndex; } return val; } , testChange = function testChange(e){ var elem = _AN_Read_target("target", e), data, val; if (!formElems.test(elem.nodeName) || elem.readOnly) { return ; } data = jQuery.data(elem, "_change_data"); val = getVal(elem); if (e.type !== "focusout" || elem.type !== "radio") { jQuery.data(elem, "_change_data", val); } if (data === undefined || val === data) { return ; } if (data != null || val) { e.type = "change"; return jQuery.event.trigger(e, arguments[1], elem); } } ; jQuery.event.special.change = { filters: { focusout: testChange, click: function (e){ var elem = _AN_Read_target("target", e), type = elem.type; if (type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select") { return testChange.call(this, e); } } , keydown: function (e){ var elem = _AN_Read_target("target", e), type = elem.type; if ((e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || type === "select-multiple") { return testChange.call(this, e); } } , beforeactivate: function (e){ var elem = _AN_Read_target("target", e); jQuery.data(elem, "_change_data", getVal(elem)); } } , setup: function (data, namespaces){ if (this.type === "file") { return false ; } for (var type in changeFilters){ jQuery.event.add(this, type + ".specialChange", changeFilters[type]); } return formElems.test(this.nodeName); } , teardown: function (namespaces){ jQuery.event.remove(this, ".specialChange"); return formElems.test(this.nodeName); } } ; changeFilters = jQuery.event.special.change.filters; } function trigger(type, elem, args){ args[0].type = type; return jQuery.event.handle.apply(elem, args); } if (document.addEventListener) { jQuery.each({ focus: "focusin", blur: "focusout"} , function (orig, fix){ jQuery.event.special[fix] = { setup: function (){ this.addEventListener(orig, handler, true ); } , teardown: function (){ this.removeEventListener(orig, handler, true ); } } ; function handler(e){ e = jQuery.event.fix(e); e.type = fix; return jQuery.event.handle.call(this, e); } } ); } jQuery.each(["bind", "one"] , function (i, name){ jQuery.fn[name] = function (type, data, fn){ if (typeof type === "object") { for (var key in type){ this[name](key, data, type[key], fn); } return this; } if (jQuery.isFunction(data) || data === false ) { fn = data; data = undefined; } var handler = name === "one"? jQuery.proxy(fn, function (event){ jQuery(this).unbind(event, handler); return fn.apply(this, arguments); } ): fn; if (type === "unload" && name !== "one") { this.one(type, data, fn); } else { for (var i = 0, l = _AN_Read_length("length", this); i < l; i++ ){ jQuery.event.add(this[i], type, handler, data); } } return this; } ; } ); jQuery.fn.extend({ unbind: function (type, fn){ if (typeof type === "object" && !type.preventDefault) { for (var key in type){ this.unbind(key, type[key]); } } else { for (var i = 0, l = _AN_Read_length("length", this); i < l; i++ ){ jQuery.event.remove(this[i], type, fn); } } return this; } , delegate: function (selector, types, data, fn){ return this.live(types, data, fn, selector); } , undelegate: function (selector, types, fn){ if (_AN_Read_length("length", arguments) === 0) { return this.unbind("live"); } else { return this.die(types, null , fn, selector); } } , trigger: function (type, data){ return this.each(function (){ jQuery.event.trigger(type, data, this); } ); } , triggerHandler: function (type, data){ if (this[0]) { var event = jQuery.Event(type); event.preventDefault(); event.stopPropagation(); jQuery.event.trigger(event, data, this[0]); return event.result; } } , toggle: function (fn){ var args = arguments, i = 1; while (i < _AN_Read_length("length", args)){ jQuery.proxy(fn, args[i++ ]); } return this.click(jQuery.proxy(fn, function (event){ var lastToggle = (jQuery.data(this, "lastToggle" + fn.guid) || 0) % i; jQuery.data(this, "lastToggle" + fn.guid, lastToggle + 1); event.preventDefault(); return args[lastToggle].apply(this, arguments) || false ; } )); } , hover: function (fnOver, fnOut){ return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); } } ); var liveMap = { focus: "focusin", blur: "focusout", mouseenter: "mouseover", mouseleave: "mouseout"} ; jQuery.each(["live", "die"] , function (i, name){ jQuery.fn[name] = function (types, data, fn, origSelector){ var type, i = 0, match, namespaces, preType, selector = origSelector || this.selector, context = origSelector? this: jQuery(this.context); if (jQuery.isFunction(data)) { fn = data; data = undefined; } types = (types || "").split(" "); while ((type = types[i++ ]) != null ){ match = rnamespaces.exec(type); namespaces = ""; if (match) { namespaces = match[0]; type = _AN_Call_replace("replace", type, rnamespaces, ""); } if (type === "hover") { types.push("mouseenter" + namespaces, "mouseleave" + namespaces); continue ; } preType = type; if (type === "focus" || type === "blur") { types.push(liveMap[type] + namespaces); type = type + namespaces; } else { type = (liveMap[type] || type) + namespaces; } if (name === "live") { for (var j = 0, l = _AN_Read_length("length", context); j < l; j++ ){ jQuery.event.add(context[j], "live." + liveConvert(type, selector), { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType} ); } } else { context.unbind("live." + liveConvert(type, selector), fn); } } return this; } ; } ); function liveHandler(event){ var stop, maxLevel, elems = [] , selectors = [] , related, match, handleObj, elem, j, i, l, data, close, namespace, events = jQuery.data(this, "events"); if (typeof events === "function") { events = events().events; } if (event.liveFired === this || !events || !events.live || event.button && event.type === "click") { return ; } if (event.namespace) { namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); } event.liveFired = this; var live = events.live.slice(0); for (j = 0; j < _AN_Read_length("length", live); j++ ){ handleObj = live[j]; if (_AN_Call_replace("replace", handleObj.origType, rnamespaces, "") === event.type) { selectors.push(handleObj.selector); } else { live.splice(j-- , 1); } } match = jQuery(_AN_Read_target("target", event)).closest(selectors, event.currentTarget); for (i = 0, l = _AN_Read_length("length", match); i < l; i++ ){ close = match[i]; for (j = 0; j < _AN_Read_length("length", live); j++ ){ handleObj = live[j]; if (close.selector === handleObj.selector && (!namespace || namespace.test(handleObj.namespace))) { elem = close.elem; related = null ; if (handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave") { event.type = handleObj.preType; related = jQuery(event.relatedTarget).closest(handleObj.selector)[0]; } if (!related || related !== elem) { elems.push({ elem: elem, handleObj: handleObj, level: close.level} ); } } } } for (i = 0, l = _AN_Read_length("length", elems); i < l; i++ ){ match = elems[i]; if (maxLevel && match.level > maxLevel) { break ; } event.currentTarget = match.elem; event.data = match.handleObj.data; event.handleObj = match.handleObj; ret = match.handleObj.origHandler.apply(match.elem, arguments); if (ret === false || event.isPropagationStopped()) { maxLevel = match.level; if (ret === false ) { stop = false ; } } } return stop; } function liveConvert(type, selector){ return (type && type !== "*"? type + ".": "") + _AN_Call_replace("replace", _AN_Call_replace("replace", selector, /\./g, "`"), / /g, "&"); } jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup error").split(" "), function (i, name){ jQuery.fn[name] = function (data, fn){ if (fn == null ) { fn = data; data = null ; } return _AN_Read_length("length", arguments) > 0? this.bind(name, data, fn): this.trigger(name); } ; if (jQuery.attrFn) { jQuery.attrFn[name] = true ; } } ); if (window.attachEvent && !window.addEventListener) { window.attachEvent("onunload", function (){ for (var id in jQuery.cache){ if (jQuery.cache[id].handle) { try { jQuery.event.remove(jQuery.cache[id].handle.elem); } catch (e) { } } } } ); }