diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 9b38e1ca4..decaa7cb2 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -44,26 +44,22 @@ - - ..\packages\Unity.2.0\lib\20\Microsoft.Practices.ServiceLocation.dll + + ..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll - - ..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.dll - - - ..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Configuration.dll - - - ..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Interception.dll + + False + ..\packages\Unity.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.dll - - ..\packages\Unity.2.0\lib\20\Microsoft.Practices.Unity.Interception.Configuration.dll + + False + ..\packages\Unity.2.1.505.0\lib\NET35\Microsoft.Practices.Unity.Configuration.dll ..\packages\Moq.4.0.10827\lib\NET40\Moq.dll - - ..\packages\Ninject.2.2.1.0\lib\.NetFramework 4.0\Ninject.dll + + ..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll False diff --git a/NzbDrone.Core.Test/packages.config b/NzbDrone.Core.Test/packages.config index ab2b754f0..f05ab1fef 100644 --- a/NzbDrone.Core.Test/packages.config +++ b/NzbDrone.Core.Test/packages.config @@ -1,8 +1,9 @@  - - + + + \ No newline at end of file diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 45c335654..d188be0dd 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -130,8 +130,7 @@ ..\Libraries\Exceptioneer.WindowsFormsClient.dll - False - ..\packages\Ninject.2.2.1.0\lib\.NetFramework 4.0\Ninject.dll + ..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll False diff --git a/NzbDrone.Core/packages.config b/NzbDrone.Core/packages.config index d12bccace..3d0555548 100644 --- a/NzbDrone.Core/packages.config +++ b/NzbDrone.Core/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj index 92abe0e24..0e1e6caf0 100644 --- a/NzbDrone.Web/NzbDrone.Web.csproj +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -55,8 +55,7 @@ True - False - ..\packages\Ninject.2.2.1.0\lib\.NetFramework 4.0\Ninject.dll + ..\packages\Ninject.2.2.1.4\lib\net40-Full\Ninject.dll ..\packages\Ninject.MVC3.2.2.2.0\lib\net40-Full\Ninject.Web.Mvc.dll @@ -659,9 +658,9 @@ - - - + + + diff --git a/NzbDrone.Web/Scripts/jquery-1.5.2.min.js b/NzbDrone.Web/Scripts/jquery-1.5.2.min.js deleted file mode 100644 index f78f96a12..000000000 --- a/NzbDrone.Web/Scripts/jquery-1.5.2.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Mar 31 15:28:23 2011 -0400 - */ -(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/jquery-1.5.2-vsdoc.js b/NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js similarity index 88% rename from NzbDrone.Web/Scripts/jquery-1.5.2-vsdoc.js rename to NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js index 1952947b8..87ccbc7fc 100644 --- a/NzbDrone.Web/Scripts/jquery-1.5.2-vsdoc.js +++ b/NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js @@ -1,14 +1,14 @@ -/* +/* * This file has been generated to support Visual Studio IntelliSense. * You should not use this file at runtime inside the browser--it is only * intended to be used only for design-time IntelliSense. Please use the * standard jQuery library for all production use. * -* Comment version: 1.5.2 +* Comment version: 1.6.1 */ /*! -* jQuery JavaScript Library v1.5.2 +* jQuery JavaScript Library v1.6.1 * http://jquery.com/ * * Distributed in whole under the terms of the MIT @@ -77,10 +77,37 @@ jQuery.Deferred = function( func ) { deferred.done( doneCallbacks ).fail( failCallbacks ); return this; }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, fail: failDeferred.done, rejectWith: failDeferred.resolveWith, reject: failDeferred.resolve, isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { @@ -96,7 +123,7 @@ jQuery.Deferred = function( func ) { } return obj; } - } ); + }); // Make sure only one callback list will be used deferred.done( failDeferred.cancel ).fail( deferred.cancel ); // Unexpose cancel @@ -107,11 +134,11 @@ jQuery.Deferred = function( func ) { } return deferred; }; -jQuery.Event = function( src ) { +jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !this.preventDefault ) { - return new jQuery.Event( src ); + return new jQuery.Event( src, props ); } // Event object @@ -129,6 +156,11 @@ jQuery.Event = function( src ) { this.type = src; } + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + // timeStamp is buggy for some events on Firefox(#3843) // So we won't rely on the native value this.timeStamp = jQuery.now(); @@ -222,6 +254,32 @@ jQuery._data = function( elem, name, data ) { return jQuery.data( elem, name, data, true ); }; +jQuery._mark = function( elem, type ) { + + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }; +jQuery._unmark = function( force, elem, type ) { + + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }; jQuery.acceptData = function( elem ) { if ( elem.nodeName ) { @@ -304,6 +362,7 @@ jQuery.ajax = function( url, options ) { ifModifiedKey, // Headers (they are sent all at once) requestHeaders = {}, + requestHeadersNames = {}, // Response headers responseHeadersString, responseHeaders, @@ -327,7 +386,9 @@ jQuery.ajax = function( url, options ) { // Caches the header setRequestHeader: function( name, value ) { if ( !state ) { - requestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value; + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; } return this; }, @@ -575,24 +636,27 @@ jQuery.ajax = function( url, options ) { // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - requestHeaders[ "Content-Type" ] = s.contentType; + jqXHR.setRequestHeader( "Content-Type", s.contentType ); } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { ifModifiedKey = ifModifiedKey || s.url; if ( jQuery.lastModified[ ifModifiedKey ] ) { - requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ]; + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); } if ( jQuery.etag[ ifModifiedKey ] ) { - requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ]; + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); } } // Set the Accepts header for the server, depending on the dataType - requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : - s.accepts[ "*" ]; + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : + s.accepts[ "*" ] + ); // Check for headers option for ( i in s.headers ) { @@ -648,6 +712,16 @@ jQuery.ajax = function( url, options ) { return jqXHR; }; jQuery.ajaxPrefilter = function( dataTypeExpression, func ) { +/// +/// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). +/// +/// +/// An optional string containing one or more space-separated dataTypes +/// +/// +/// A handler to set default values for future Ajax requests. +/// +/// if ( typeof dataTypeExpression !== "string" ) { @@ -749,113 +823,71 @@ jQuery.ajaxTransport = function( dataTypeExpression, func ) { }; jQuery.attr = function( elem, name, value, pass ) { + var nType = elem.nodeType; + // don't get/set attributes on text, comment and attribute nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) { + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { return undefined; } if ( pass && name in jQuery.attrFn ) { - return jQuery(elem)[name](value); + return jQuery( elem )[ name ]( value ); } - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), - // Whether we are setting (or getting) - set = value !== undefined; - - // Try to normalize/fix the name - name = notxml && jQuery.props[ name ] || name; - - // Only do all the following if this is a node (faster for style) - if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); - - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - - // If applicable, access the attribute via the DOM 0 way - // 'in' checks fail in Blackberry 4.7 #6931 - if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } - if ( value === null ) { - if ( elem.nodeType === 1 ) { - elem.removeAttribute( name ); - } + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - } else { - elem[ name ] = value; - } - } + // Normalize the name if needed + name = notxml && jQuery.attrFix[ name ] || name; - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; - } + hooks = jQuery.attrHooks[ name ]; - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) && + (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } + hooks = boolHook; - return elem[ name ]; + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + hooks = formHook; } + } - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; - } + if ( value !== undefined ) { - return elem.style.cssText; - } + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; - if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { elem.setAttribute( name, "" + value ); + return value; } - // Ensure that missing attributes return undefined - // Blackberry 4.7 returns "" from getAttribute #6938 - if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) { - return undefined; - } + } else if ( hooks && "get" in hooks && notxml ) { + return hooks.get( elem, name ); + + } else { - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); + ret = elem.getAttribute( name ); // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; - } - // Handle everything which isn't a DOM element node - if ( set ) { - elem[ name ] = value; + return ret === null ? + undefined : + ret; } - return elem[ name ]; }; +jQuery.attrFix = { "tabindex": 'tabIndex' }; jQuery.attrFn = { "val": true, "css": true, "html": true, @@ -888,6 +920,9 @@ jQuery.attrFn = { "val": true, "keypress": true, "keyup": true, "error": true }; +jQuery.attrHooks = { "type": {}, +"tabIndex": {}, +"value": {} }; jQuery.bindReady = function() { if ( readyList ) { @@ -915,7 +950,7 @@ jQuery.bindReady = function() { } else if ( document.attachEvent ) { // ensure firing before onload, // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", DOMContentLoaded); + document.attachEvent( "onreadystatechange", DOMContentLoaded ); // A fallback to window.onload, that will always work window.attachEvent( "onload", jQuery.ready ); @@ -949,11 +984,10 @@ jQuery.buildFragment = function( args, nodes, scripts ) { args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) { cacheable = true; + cacheresults = jQuery.fragments[ args[0] ]; - if ( cacheresults ) { - if ( cacheresults !== 1 ) { - fragment = cacheresults; - } + if ( cacheresults && cacheresults !== 1 ) { + fragment = cacheresults; } } @@ -975,6 +1009,8 @@ jQuery.camelCase = function( string ) { }; jQuery.clean = function( elems, context, fragment, scripts ) { + var checkScriptType; + context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' @@ -982,7 +1018,7 @@ jQuery.clean = function( elems, context, fragment, scripts ) { context = context.ownerDocument || context[0] && context[0].ownerDocument || document; } - var ret = []; + var ret = [], j; for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { if ( typeof elem === "number" ) { @@ -994,54 +1030,67 @@ jQuery.clean = function( elems, context, fragment, scripts ) { } // Convert html string into DOM nodes - if ( typeof elem === "string" && !rhtml.test( elem ) ) { - elem = context.createTextNode( elem ); - - } else if ( typeof elem === "string" ) { - // Fix "XHTML"-style tags in all browsers - elem = elem.replace(rxhtmlTag, "<$1>"); + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); - // Trim whitespace, otherwise indexOf won't work as expected - var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), - wrap = wrapMap[ tag ] || wrapMap._default, - depth = wrap[0], - div = context.createElement("div"); + // Trim whitespace, otherwise indexOf won't work as expected + var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), + wrap = wrapMap[ tag ] || wrapMap._default, + depth = wrap[0], + div = context.createElement("div"); - // Go to html and back, then peel off extra wrappers - div.innerHTML = wrap[1] + elem + wrap[2]; + // Go to html and back, then peel off extra wrappers + div.innerHTML = wrap[1] + elem + wrap[2]; - // Move to the right depth - while ( depth-- ) { - div = div.lastChild; - } + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { - // String was a , *may* have spurious - var hasBody = rtbody.test(elem), - tbody = tag === "table" && !hasBody ? - div.firstChild && div.firstChild.childNodes : + // String was a
, *may* have spurious + var hasBody = rtbody.test(elem), + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : - // String was a bare or - wrap[1] === "
" && !hasBody ? - div.childNodes : - []; + // String was a bare or + wrap[1] === "
" && !hasBody ? + div.childNodes : + []; - for ( var j = tbody.length - 1; j >= 0 ; --j ) { - if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { - tbody[ j ].parentNode.removeChild( tbody[ j ] ); + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } } } - } + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } - // IE completely kills leading whitespace when innerHTML is used - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + elem = div.childNodes; } + } - elem = div.childNodes; + // Resets defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + var len; + if ( !jQuery.support.appendChecked ) { + if ( elem[0] && typeof (len = elem.length) === "number" ) { + for ( j = 0; j < len; j++ ) { + findInputs( elem[j] ); + } + } else { + findInputs( elem ); + } } if ( elem.nodeType ) { @@ -1052,13 +1101,18 @@ jQuery.clean = function( elems, context, fragment, scripts ) { } if ( fragment ) { + checkScriptType = function( elem ) { + return !elem.type || rscriptType.test( elem.type ); + }; for ( i = 0; ret[i]; i++ ) { if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); } else { if ( ret[i].nodeType === 1 ) { - ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) ); + var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType ); + + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); } fragment.appendChild( ret[i] ); } @@ -1156,7 +1210,7 @@ jQuery.clone = function( elem, dataAndEvents, deepDataAndEvents ) { // Return the cloned set return clone; -}; + }; jQuery.contains = function( a, b ) { /// /// Check to see if a DOM node is within another DOM node. @@ -1173,11 +1227,17 @@ jQuery.contains = function( a, b ) { }; jQuery.css = function( elem, name, extra ) { + var ret, hooks; + // Make sure that we're working with the right name - var ret, origName = jQuery.camelCase( name ), - hooks = jQuery.cssHooks[ origName ]; + name = jQuery.camelCase( name ); + hooks = jQuery.cssHooks[ name ]; + name = jQuery.cssProps[ name ] || name; - name = jQuery.cssProps[ origName ] || origName; + // cssFloat needs a special treatment + if ( name === "cssFloat" ) { + name = "float"; + } // If a hook was provided get the computed value from there if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { @@ -1185,7 +1245,7 @@ jQuery.css = function( elem, name, extra ) { // Otherwise, if a way to get the computed value exists, use that } else if ( curCSS ) { - return curCSS( elem, name, origName ); + return curCSS( elem, name ); } }; jQuery.cssHooks = { "opacity": {}, @@ -1195,15 +1255,23 @@ jQuery.cssNumber = { "zIndex": true, "fontWeight": true, "opacity": true, "zoom": true, -"lineHeight": true }; +"lineHeight": true, +"widows": true, +"orphans": true }; jQuery.cssProps = { "float": 'cssFloat' }; jQuery.curCSS = function( elem, name, extra ) { + var ret, hooks; + // Make sure that we're working with the right name - var ret, origName = jQuery.camelCase( name ), - hooks = jQuery.cssHooks[ origName ]; + name = jQuery.camelCase( name ); + hooks = jQuery.cssHooks[ name ]; + name = jQuery.cssProps[ name ] || name; - name = jQuery.cssProps[ origName ] || origName; + // cssFloat needs a special treatment + if ( name === "cssFloat" ) { + name = "float"; + } // If a hook was provided get the computed value from there if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { @@ -1211,12 +1279,12 @@ jQuery.curCSS = function( elem, name, extra ) { // Otherwise, if a way to get the computed value exists, use that } else if ( curCSS ) { - return curCSS( elem, name, origName ); + return curCSS( elem, name ); } }; jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { /// -/// 1: Store arbitrary data associated with the specified element. +/// 1: Store arbitrary data associated with the specified element. Returns the value that was set. /// 1.1 - jQuery.data(element, key, value) /// 2: Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. /// 2.1 - jQuery.data(element, key) @@ -1231,7 +1299,7 @@ jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { /// /// The new data value. /// -/// +/// if ( !jQuery.acceptData( elem ) ) { return; @@ -1302,7 +1370,7 @@ jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { } if ( data !== undefined ) { - thisCache[ name ] = data; + thisCache[ jQuery.camelCase( name ) ] = data; } // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should @@ -1312,7 +1380,7 @@ jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { return thisCache[ internalKey ] && thisCache[ internalKey ].events; } - return getByName ? thisCache[ name ] : thisCache; + return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; }; jQuery.dequeue = function( elem, type ) { /// @@ -1329,7 +1397,8 @@ jQuery.dequeue = function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), - fn = queue.shift(); + fn = queue.shift(), + defer; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { @@ -1350,6 +1419,7 @@ jQuery.dequeue = function( elem, type ) { if ( !queue.length ) { jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); } }; jQuery.dir = function( elem, dir, until ) { @@ -1379,7 +1449,7 @@ jQuery.each = function( object, callback, args ) { var name, i = 0, length = object.length, - isObj = length === undefined || jQuery.isFunction(object); + isObj = length === undefined || jQuery.isFunction( object ); if ( args ) { if ( isObj ) { @@ -1405,8 +1475,11 @@ jQuery.each = function( object, callback, args ) { } } } else { - for ( var value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } } } @@ -1425,6 +1498,7 @@ jQuery.error = function( msg ) { }; jQuery.etag = {}; jQuery.event = { "global": {}, +"customEvent": {}, "props": ['altKey','attrChange','attrName','bubbles','button','cancelable','charCode','clientX','clientY','ctrlKey','currentTarget','data','detail','eventPhase','fromElement','handler','keyCode','layerX','layerY','metaKey','newValue','offsetX','offsetY','pageX','pageY','prevValue','relatedNode','relatedTarget','screenX','screenY','shiftKey','srcElement','target','toElement','view','wheelDelta','which'], "guid": 100000000, "special": {}, @@ -1619,7 +1693,7 @@ jQuery.find = function( query, context, extra, seed ) { return oldSizzle(query, context, extra, seed); }; jQuery.fn = { "selector": '', -"jquery": '1.5.2', +"jquery": '1.6.1', "length": 0 }; jQuery.fragments = {}; jQuery.fx = function( elem, options, prop ) { @@ -1628,9 +1702,7 @@ jQuery.fx = function( elem, options, prop ) { this.elem = elem; this.prop = prop; - if ( !options.orig ) { - options.orig = {}; - } + options.orig = options.orig || {}; }; jQuery.get = function( url, data, callback, type ) { /// @@ -1702,22 +1774,13 @@ jQuery.globalEval = function( data ) { /// The JavaScript code to execute. /// - if ( data && rnotwhite.test(data) ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement, - script = document.createElement( "script" ); - - if ( jQuery.support.scriptEval() ) { - script.appendChild( document.createTextNode( data ) ); - } else { - script.text = data; - } - - // Use insertBefore instead of appendChild to circumvent an IE6 bug. - // This arises when a base node is used (#2709). - head.insertBefore( script, head.firstChild ); - head.removeChild( script ); + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); } }; jQuery.grep = function( elems, callback, inv ) { @@ -1763,6 +1826,21 @@ jQuery.hasData = function( elem ) { return !!elem && !isEmptyDataObject( elem ); }; +jQuery.holdReady = function( hold ) { +/// +/// Holds or releases the execution of jQuery's ready event. +/// +/// +/// Indicates whether the ready hold is being requested or released +/// +/// + + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }; jQuery.inArray = function( elem, array ) { /// /// Search for a specified value within an array and return its index (or -1 if not found). @@ -1775,7 +1853,18 @@ jQuery.inArray = function( elem, array ) { /// /// - return indexOf.call( array, elem ); + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; }; jQuery.isEmptyObject = function( obj ) { /// @@ -1881,7 +1970,7 @@ jQuery.makeArray = function( array, results ) { // The extra typeof function check is to prevent crashes // in Safari 2 (See: #3039) // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type(array); + var type = jQuery.type( array ); if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { push.call( ret, array ); @@ -1894,25 +1983,42 @@ jQuery.makeArray = function( array, results ) { }; jQuery.map = function( elems, callback, arg ) { /// -/// Translate all items in an array or array-like object to another array of items. +/// Translate all items in an array or object to new array of items. +/// 1 - jQuery.map(array, callback(elementOfArray, indexInArray)) +/// 2 - jQuery.map(arrayOrObject, callback( value, indexOrKey )) /// /// /// The Array to translate. /// /// -/// The function to process each item against. The first argument to the function is the list item, the second argument is the index in array The function can return any value. this will be the global window object. +/// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. /// /// - var ret = [], value; + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, length = elems.length; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); - if ( value != null ) { - ret[ ret.length ] = value; + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } } } @@ -1958,9 +2064,11 @@ jQuery.noConflict = function( deep ) { /// /// - window.$ = _$; + if ( window.$ === jQuery ) { + window.$ = _$; + } - if ( deep ) { + if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } @@ -2032,7 +2140,7 @@ jQuery.param = function( a, traditional ) { // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); - } ); + }); } else { // If traditional, encode the "old" way (the way 1.3.2 or older @@ -2061,20 +2169,21 @@ jQuery.parseJSON = function( data ) { // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test(data.replace(rvalidescape, "@") - .replace(rvalidtokens, "]") - .replace(rvalidbraces, "")) ) { + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { - // Try to use the native JSON parser first - return window.JSON && window.JSON.parse ? - window.JSON.parse( data ) : - (new Function("return " + data))(); + return (new Function( "return " + data ))(); - } else { - jQuery.error( "Invalid JSON: " + data ); } + jQuery.error( "Invalid JSON: " + data ); }; jQuery.parseXML = function( data , xml , tmp ) { /// @@ -2135,17 +2244,54 @@ jQuery.post = function( url, data, callback, type ) { dataType: type }); }; -jQuery.props = { "for": 'htmlFor', -"class": 'className', +jQuery.prop = function( elem, name, value ) { + + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Try to normalize/fix the name + name = notxml && jQuery.propFix[ name ] || name; + + hooks = jQuery.propHooks[ name ]; + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { + return elem[ name ]; + } + } + }; +jQuery.propFix = { "tabindex": 'tabIndex', "readonly": 'readOnly', +"for": 'htmlFor', +"class": 'className', "maxlength": 'maxLength', "cellspacing": 'cellSpacing', +"cellpadding": 'cellPadding', "rowspan": 'rowSpan', "colspan": 'colSpan', -"tabindex": 'tabIndex', "usemap": 'useMap', -"frameborder": 'frameBorder' }; -jQuery.proxy = function( fn, proxy, thisObject ) { +"frameborder": 'frameBorder', +"contenteditable": 'contentEditable' }; +jQuery.propHooks = { "selected": {} }; +jQuery.proxy = function( fn, context ) { /// /// Takes a function and returns a new one that will always have a particular context. /// 1 - jQuery.proxy(function, context) @@ -2154,35 +2300,32 @@ jQuery.proxy = function( fn, proxy, thisObject ) { /// /// The function whose context will be changed. /// -/// +/// /// The object to which the context (this) of the function should be set. /// /// - if ( arguments.length === 2 ) { - if ( typeof proxy === "string" ) { - thisObject = fn; - fn = thisObject[ proxy ]; - proxy = undefined; + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } - } else if ( proxy && !jQuery.isFunction( proxy ) ) { - thisObject = proxy; - proxy = undefined; - } + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; } - if ( !proxy && fn ) { + // Simulated bind + var args = slice.call( arguments, 2 ), proxy = function() { - return fn.apply( thisObject || this, arguments ); + return fn.apply( context, args.concat( slice.call( arguments ) ) ); }; - } // Set the guid of unique handler to the same of original handler, so it can be removed - if ( fn ) { - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - } + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - // So proxy can be declared as an argument return proxy; }; jQuery.queue = function( elem, type, data ) { @@ -2204,36 +2347,24 @@ jQuery.queue = function( elem, type, data ) { /// /// - if ( !elem ) { - return; - } - - type = (type || "fx") + "queue"; - var q = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } return q || []; } - - if ( !q || jQuery.isArray(data) ) { - q = jQuery._data( elem, type, jQuery.makeArray(data) ); - - } else { - q.push( data ); - } - - return q; }; jQuery.ready = function( wait ) { - // A third-party is pushing the ready event forwards - if ( wait === true ) { - jQuery.readyWait--; - } - - // Make sure that the DOM is not already loaded - if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). if ( !document.body ) { return setTimeout( jQuery.ready, 1 ); @@ -2257,6 +2388,26 @@ jQuery.ready = function( wait ) { } }; jQuery.readyWait = 0; +jQuery.removeAttr = function( elem, name ) { + + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }; jQuery.removeData = function( elem, name, pvt /* Internal Use Only */ ) { /// /// Remove a previously-stored piece of data. @@ -2384,10 +2535,13 @@ jQuery.speed = function( speed, easing, fn ) { // Queueing opt.old = opt.complete; - opt.complete = function() { + opt.complete = function( noUnmark ) { if ( opt.queue !== false ) { - jQuery(this).dequeue(); + jQuery.dequeue( this ); + } else if ( noUnmark !== false ) { + jQuery._unmark( this ); } + if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } @@ -2403,20 +2557,27 @@ jQuery.style = function( elem, name, value, extra ) { } // Make sure that we're working with the right name - var ret, origName = jQuery.camelCase( name ), + var ret, type, origName = jQuery.camelCase( name ), style = elem.style, hooks = jQuery.cssHooks[ origName ]; name = jQuery.cssProps[ origName ] || origName; // Check if we're setting a value if ( value !== undefined ) { + type = typeof value; + // Make sure that NaN and null values aren't set. See: #7116 - if ( typeof value === "number" && isNaN( value ) || value == null ) { + if ( type === "number" && isNaN( value ) || value == null ) { return; } + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && rrelNum.test( value ) ) { + value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); + } + // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) { + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { value += "px"; } @@ -2445,24 +2606,24 @@ jQuery.sub = function() { /// /// - function jQuerySubclass( selector, context ) { - return new jQuerySubclass.fn.init( selector, context ); + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); } - jQuery.extend( true, jQuerySubclass, this ); - jQuerySubclass.superclass = this; - jQuerySubclass.fn = jQuerySubclass.prototype = this(); - jQuerySubclass.fn.constructor = jQuerySubclass; - jQuerySubclass.subclass = this.subclass; - jQuerySubclass.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) { - context = jQuerySubclass(context); + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); } - return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass ); + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); }; - jQuerySubclass.fn.init.prototype = jQuerySubclass.fn; - var rootjQuerySubclass = jQuerySubclass(document); - return jQuerySubclass; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; }; jQuery.support = { "leadingWhitespace": true, "tbody": true, @@ -2473,18 +2634,22 @@ jQuery.support = { "leadingWhitespace": true, "cssFloat": true, "checkOn": true, "optSelected": false, +"getSetAttribute": true, +"submitBubbles": true, +"changeBubbles": true, +"focusinBubbles": true, "deleteExpando": true, -"optDisabled": true, -"checkClone": true, "noCloneEvent": true, -"noCloneChecked": false, -"boxModel": true, "inlineBlockNeedsLayout": false, "shrinkWrapBlocks": false, -"reliableHiddenOffsets": true, "reliableMarginRight": true, -"submitBubbles": true, -"changeBubbles": true, +"noCloneChecked": false, +"optDisabled": true, +"radioValue": false, +"checkClone": , +"appendChecked": true, +"boxModel": true, +"reliableHiddenOffsets": true, "ajax": true, "cors": false }; jQuery.swap = function( elem, options, callback ) { @@ -2586,6 +2751,10 @@ jQuery.unique = function( results ) { return results; }; jQuery.uuid = 0; +jQuery.valHooks = { "option": {}, +"select": {}, +"radio": {}, +"checkbox": {} }; jQuery.when = function( firstParam ) { /// /// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. @@ -2705,24 +2874,27 @@ jQuery.prototype._toggle = function( fn ) { // Save reference to arguments for access in closure var args = arguments, - i = 1; + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; while ( i < args.length ) { - jQuery.proxy( fn, args[ i++ ] ); + args[ i++ ].guid = guid; } - return this.click( jQuery.proxy( fn, function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - })); + return this.click( toggler ); }; jQuery.prototype.add = function( selector, context ) { /// @@ -2742,7 +2914,7 @@ jQuery.prototype.add = function( selector, context ) { var set = typeof selector === "string" ? jQuery( selector, context ) : - jQuery.makeArray( selector ), + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), all = jQuery.merge( this.get(), set ); return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? @@ -2760,15 +2932,15 @@ jQuery.prototype.addClass = function( value ) { /// /// - if ( jQuery.isFunction(value) ) { + if ( jQuery.isFunction( value ) ) { return this.each(function(i) { var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class")) ); + self.addClass( value.call(this, i, self.attr("class") || "") ); }); } if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspaces ); + var classNames = (value || "").split( rspace ); for ( var i = 0, l = this.length; i < l; i++ ) { var elem = this[i]; @@ -2915,32 +3087,54 @@ jQuery.prototype.animate = function( prop, speed, easing, callback ) { var optall = jQuery.speed(speed, easing, callback); if ( jQuery.isEmptyObject( prop ) ) { - return this.each( optall.complete ); + return this.each( optall.complete, [ false ] ); } + // Do not change referenced properties as per-property easing will be lost + prop = jQuery.extend( {}, prop ); + return this[ optall.queue === false ? "each" : "queue" ](function() { // XXX 'this' does not always have a nodeName when running the // test suite - var opt = jQuery.extend({}, optall), p, + if ( optall.queue === false ) { + jQuery._mark( this ); + } + + var opt = jQuery.extend( {}, optall ), isElement = this.nodeType === 1, hidden = isElement && jQuery(this).is(":hidden"), - self = this; + name, val, p, + display, e, + parts, start, end, unit; + + // will store per property easing and be used to determine when an animation is complete + opt.animatedProperties = {}; for ( p in prop ) { - var name = jQuery.camelCase( p ); + // property name normalization + name = jQuery.camelCase( p ); if ( p !== name ) { prop[ name ] = prop[ p ]; delete prop[ p ]; - p = name; } - if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) { - return opt.complete.call(this); + val = prop[ name ]; + + // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) + if ( jQuery.isArray( val ) ) { + opt.animatedProperties[ name ] = val[ 1 ]; + val = prop[ name ] = val[ 0 ]; + } else { + opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; } - if ( isElement && ( p === "height" || p === "width" ) ) { + if ( val === "hide" && hidden || val === "show" && !hidden ) { + return opt.complete.call( this ); + } + + if ( isElement && ( name === "height" || name === "width" ) ) { // Make sure that nothing sneaks out // Record all 3 overflow attributes because IE does not // change the overflow attribute when overflowX and @@ -2956,7 +3150,7 @@ jQuery.prototype.animate = function( prop, speed, easing, callback ) { this.style.display = "inline-block"; } else { - var display = defaultDisplay(this.nodeName); + display = defaultDisplay( this.nodeName ); // inline-level elements accept inline-block; // block-level elements need to be inline with layout @@ -2970,44 +3164,37 @@ jQuery.prototype.animate = function( prop, speed, easing, callback ) { } } } - - if ( jQuery.isArray( prop[p] ) ) { - // Create (if needed) and add to specialEasing - (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1]; - prop[p] = prop[p][0]; - } } if ( opt.overflow != null ) { this.style.overflow = "hidden"; } - opt.curAnim = jQuery.extend({}, prop); - - jQuery.each( prop, function( name, val ) { - var e = new jQuery.fx( self, opt, name ); + for ( p in prop ) { + e = new jQuery.fx( this, opt, p ); + val = prop[ p ]; if ( rfxtypes.test(val) ) { - e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop ); + e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); } else { - var parts = rfxnum.exec(val), - start = e.cur(); + parts = rfxnum.exec( val ); + start = e.cur(); if ( parts ) { - var end = parseFloat( parts[2] ), - unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" ); + end = parseFloat( parts[2] ); + unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" ) { - jQuery.style( self, name, (end || 1) + unit); + jQuery.style( this, p, (end || 1) + unit); start = ((end || 1) / e.cur()) * start; - jQuery.style( self, name, start + unit); + jQuery.style( this, p, start + unit); } // If a +=/-= token was provided, we're doing a relative animation if ( parts[1] ) { - end = ((parts[1] === "-=" ? -1 : 1) * end) + start; + end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; } e.custom( start, end, unit ); @@ -3016,7 +3203,7 @@ jQuery.prototype.animate = function( prop, speed, easing, callback ) { e.custom( start, val, "" ); } } - }); + } // For JS strict compliance return true; @@ -3130,6 +3317,8 @@ jQuery.prototype.bind = function( type, data, fn ) { /// /// + var handler; + // Handle object literals if ( typeof type === "object" ) { for ( var key in type ) { @@ -3138,15 +3327,20 @@ jQuery.prototype.bind = function( type, data, fn ) { return this; } - if ( jQuery.isFunction( data ) || data === false ) { + if ( arguments.length === 2 || 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 ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } if ( type === "unload" && name !== "one" ) { this.one( type, data, fn ); @@ -3299,7 +3493,9 @@ jQuery.prototype.closest = function( selectors, context ) { /// /// 1: Get the first ancestor element that matches the selector, beginning at the current element and progressing up through the DOM tree. /// 1.1 - closest(selector) -/// 1.2 - closest(selector, context) +/// 1.2 - closest(selector, context) +/// 1.3 - closest(jQuery object) +/// 1.4 - closest(element) /// 2: Gets an array of all the elements and selectors matched against the current element up through the DOM tree. /// 2.1 - closest(selectors, context) /// @@ -3312,7 +3508,8 @@ jQuery.prototype.closest = function( selectors, context ) { /// var ret = [], i, l, cur = this[0]; - + + // Array if ( jQuery.isArray( selectors ) ) { var match, selector, matches = {}, @@ -3322,8 +3519,8 @@ jQuery.prototype.closest = function( selectors, context ) { for ( i = 0, l = selectors.length; i < l; i++ ) { selector = selectors[i]; - if ( !matches[selector] ) { - matches[selector] = jQuery.expr.match.POS.test( selector ) ? + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? jQuery( selector, context || this.context ) : selector; } @@ -3331,9 +3528,9 @@ jQuery.prototype.closest = function( selectors, context ) { while ( cur && cur.ownerDocument && cur !== context ) { for ( selector in matches ) { - match = matches[selector]; + match = matches[ selector ]; - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { ret.push({ selector: selector, elem: cur, level: level }); } } @@ -3346,8 +3543,10 @@ jQuery.prototype.closest = function( selectors, context ) { return ret; } - var pos = POS.test( selectors ) ? - jQuery( selectors, context || this.context ) : null; + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; for ( i = 0, l = this.length; i < l; i++ ) { cur = this[i]; @@ -3359,14 +3558,14 @@ jQuery.prototype.closest = function( selectors, context ) { } else { cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context ) { + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { break; } } } } - ret = ret.length > 1 ? jQuery.unique(ret) : ret; + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; return this.pushStack( ret, "closest", selectors ); }; @@ -3456,12 +3655,13 @@ jQuery.prototype.data = function( key, value ) { data = jQuery.data( this[0] ); if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; + var attr = this[0].attributes, name; for ( var i = 0, l = attr.length; i < l; i++ ) { name = attr[i].name; if ( name.indexOf( "data-" ) === 0 ) { - name = name.substr( 5 ); + name = jQuery.camelCase( name.substring(5) ); + dataAttr( this[0], name, data[ name ] ); } } @@ -3624,8 +3824,16 @@ jQuery.prototype.die = function( types, data, fn, origSelector /* Internal Use O return this; } - if ( jQuery.isFunction( data ) ) { - fn = data; + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; data = undefined; } @@ -3647,7 +3855,7 @@ jQuery.prototype.die = function( types, data, fn, origSelector /* Internal Use O preType = type; - if ( type === "focus" || type === "blur" ) { + if ( liveMap[ type ] ) { types.push( liveMap[ type ] + namespaces ); type = type + namespaces; @@ -3975,24 +4183,40 @@ jQuery.prototype.filter = function( selector ) { }; jQuery.prototype.find = function( selector ) { /// -/// Get the descendants of each element in the current set of matched elements, filtered by a selector. +/// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. +/// 1 - find(selector) +/// 2 - find(jQuery object) +/// 3 - find(element) /// /// /// A string containing a selector expression to match elements against. /// /// + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + var ret = this.pushStack( "", "find", selector ), - length = 0; + length, n, r; - for ( var i = 0, l = this.length; i < l; i++ ) { + for ( i = 0, l = this.length; i < l; i++ ) { length = ret.length; jQuery.find( selector, this[i], ret ); if ( i > 0 ) { // Make sure that the results are unique - for ( var n = length; n < ret.length; n++ ) { - for ( var r = 0; r < length; r++ ) { + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { if ( ret[r] === ret[n] ) { ret.splice(n--, 1); break; @@ -4214,17 +4438,21 @@ jQuery.prototype.hide = function( speed, easing, callback ) { } else { for ( var i = 0, j = this.length; i < j; i++ ) { - var display = jQuery.css( this[i], "display" ); + if ( this[i].style ) { + var display = jQuery.css( this[i], "display" ); - if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { - jQuery._data( this[i], "olddisplay", display ); + if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { + jQuery._data( this[i], "olddisplay", display ); + } } } // Set the display of the elements in a second loop // to avoid the constant reflow for ( i = 0; i < j; i++ ) { - this[i].style.display = "none"; + if ( this[i].style ) { + this[i].style.display = "none"; + } } return this; @@ -4342,7 +4570,7 @@ jQuery.prototype.init = function( selector, context, rootjQuery ) { if ( selector === "body" && !context && document.body ) { this.context = document; this[0] = document.body; - this.selector = "body"; + this.selector = selector; this.length = 1; return this; } @@ -4350,7 +4578,13 @@ jQuery.prototype.init = function( selector, context, rootjQuery ) { // Handle HTML strings if ( typeof selector === "string" ) { // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { @@ -4502,14 +4736,20 @@ jQuery.prototype.insertBefore = function( selector ) { }; jQuery.prototype.is = function( selector ) { /// -/// Check the current matched set of elements against a selector and return true if at least one of these elements matches the selector. +/// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. +/// 1 - is(selector) +/// 2 - is(function(index)) +/// 3 - is(jQuery object) +/// 4 - is(element) /// /// /// A string containing a selector expression to match elements against. /// /// - return !!selector && jQuery.filter( selector, this ).length > 0; + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); }; jQuery.prototype.keydown = function( data, fn ) { /// @@ -4622,8 +4862,16 @@ jQuery.prototype.live = function( types, data, fn, origSelector /* Internal Use return this; } - if ( jQuery.isFunction( data ) ) { - fn = data; + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; data = undefined; } @@ -4645,7 +4893,7 @@ jQuery.prototype.live = function( types, data, fn, origSelector /* Internal Use preType = type; - if ( type === "focus" || type === "blur" ) { + if ( liveMap[ type ] ) { types.push( liveMap[ type ] + namespaces ); type = type + namespaces; @@ -5133,6 +5381,8 @@ jQuery.prototype.one = function( type, data, fn ) { /// /// + var handler; + // Handle object literals if ( typeof type === "object" ) { for ( var key in type ) { @@ -5141,15 +5391,20 @@ jQuery.prototype.one = function( type, data, fn ) { return this; } - if ( jQuery.isFunction( data ) || data === false ) { + if ( arguments.length === 2 || 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 ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } if ( type === "unload" && name !== "one" ) { this.one( type, data, fn ); @@ -5462,6 +5717,67 @@ jQuery.prototype.prevUntil = function( until, selector ) { return this.pushStack( ret, name, args.join(",") ); }; +jQuery.prototype.promise = function( type, object ) { +/// +/// Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. +/// +/// +/// The type of queue that needs to be observed. +/// +/// +/// Object onto which the promise methods have to be attached +/// +/// + + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + }; +jQuery.prototype.prop = function( name, value ) { +/// +/// 1: Get the value of a property for the first element in the set of matched elements. +/// 1.1 - prop(propertyName) +/// 2: Set one or more properties for the set of matched elements. +/// 2.1 - prop(propertyName, value) +/// 2.2 - prop(map) +/// 2.3 - prop(propertyName, function(index, oldPropertyValue)) +/// +/// +/// The name of the property to set. +/// +/// +/// A value to set for the property. +/// +/// + + return jQuery.access( this, name, value, true, jQuery.prop ); + }; jQuery.prototype.pushStack = function( elems, name, selector ) { /// /// Add a collection of DOM elements onto the jQuery stack. @@ -5527,7 +5843,7 @@ jQuery.prototype.queue = function( type, data ) { if ( data === undefined ) { return jQuery.queue( this[0], type ); } - return this.each(function( i ) { + return this.each(function() { var queue = jQuery.queue( this, type, data ); if ( type === "fx" && queue[0] !== "inprogress" ) { @@ -5576,7 +5892,7 @@ jQuery.prototype.remove = function( selector, keepData ) { return this; }; -jQuery.prototype.removeAttr = function( name, fn ) { +jQuery.prototype.removeAttr = function( name ) { /// /// Remove an attribute from each element in the set of matched elements. /// @@ -5585,11 +5901,8 @@ jQuery.prototype.removeAttr = function( name, fn ) { /// /// - return this.each(function(){ - jQuery.attr( this, name, "" ); - if ( this.nodeType === 1 ) { - this.removeAttribute( name ); - } + return this.each(function() { + jQuery.removeAttr( this, name ); }); }; jQuery.prototype.removeClass = function( value ) { @@ -5599,7 +5912,7 @@ jQuery.prototype.removeClass = function( value ) { /// 2 - removeClass(function(index, class)) /// /// -/// A class name to be removed from the class attribute of each matched element. +/// One or more space-separated classes to be removed from the class attribute of each matched element. /// /// @@ -5611,7 +5924,7 @@ jQuery.prototype.removeClass = function( value ) { } if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split( rspaces ); + var classNames = (value || "").split( rspace ); for ( var i = 0, l = this.length; i < l; i++ ) { var elem = this[i]; @@ -5646,6 +5959,27 @@ jQuery.prototype.removeData = function( key ) { jQuery.removeData( this, key ); }); }; +jQuery.prototype.removeProp = function( name ) { +/// +/// Remove a property for the set of matched elements. +/// +/// +/// The name of the property to set. +/// +/// +/// A value to set for the property. +/// +/// + + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }; jQuery.prototype.replaceAll = function( selector ) { /// /// Replace each target element with the set of matched elements. @@ -5764,7 +6098,7 @@ jQuery.prototype.scroll = function( data, fn ) { this.bind( name, data, fn ) : this.trigger( name ); }; -jQuery.prototype.scrollLeft = function(val) { +jQuery.prototype.scrollLeft = function( val ) { /// /// 1: Get the current horizontal position of the scroll bar for the first element in the set of matched elements. /// 1.1 - scrollLeft() @@ -5776,28 +6110,15 @@ jQuery.prototype.scrollLeft = function(val) { /// /// - var elem = this[0], win; + var elem, win; - if ( !elem ) { - return null; - } - - if ( val !== undefined ) { - // Set the scroll offset - return this.each(function() { - win = getWindow( this ); + if ( val === undefined ) { + elem = this[ 0 ]; - if ( win ) { - win.scrollTo( - !i ? val : jQuery(win).scrollLeft(), - i ? val : jQuery(win).scrollTop() - ); + if ( !elem ) { + return null; + } - } else { - this[ method ] = val; - } - }); - } else { win = getWindow( elem ); // Return the scroll offset @@ -5806,8 +6127,23 @@ jQuery.prototype.scrollLeft = function(val) { win.document.body[ method ] : elem[ method ]; } + + // Set the scroll offset + return this.each(function() { + win = getWindow( this ); + + if ( win ) { + win.scrollTo( + !i ? val : jQuery( win ).scrollLeft(), + i ? val : jQuery( win ).scrollTop() + ); + + } else { + this[ method ] = val; + } + }); }; -jQuery.prototype.scrollTop = function(val) { +jQuery.prototype.scrollTop = function( val ) { /// /// 1: Get the current vertical position of the scroll bar for the first element in the set of matched elements. /// 1.1 - scrollTop() @@ -5819,28 +6155,15 @@ jQuery.prototype.scrollTop = function(val) { /// /// - var elem = this[0], win; - - if ( !elem ) { - return null; - } + var elem, win; - if ( val !== undefined ) { - // Set the scroll offset - return this.each(function() { - win = getWindow( this ); + if ( val === undefined ) { + elem = this[ 0 ]; - if ( win ) { - win.scrollTo( - !i ? val : jQuery(win).scrollLeft(), - i ? val : jQuery(win).scrollTop() - ); + if ( !elem ) { + return null; + } - } else { - this[ method ] = val; - } - }); - } else { win = getWindow( elem ); // Return the scroll offset @@ -5849,6 +6172,21 @@ jQuery.prototype.scrollTop = function(val) { win.document.body[ method ] : elem[ method ]; } + + // Set the scroll offset + return this.each(function() { + win = getWindow( this ); + + if ( win ) { + win.scrollTo( + !i ? val : jQuery( win ).scrollLeft(), + i ? val : jQuery( win ).scrollTop() + ); + + } else { + this[ method ] = val; + } + }); }; jQuery.prototype.select = function( data, fn ) { /// @@ -5934,19 +6272,22 @@ jQuery.prototype.show = function( speed, easing, callback ) { } else { for ( var i = 0, j = this.length; i < j; i++ ) { elem = this[i]; - display = elem.style.display; - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { - display = elem.style.display = ""; - } + if ( elem.style ) { + display = elem.style.display; + + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { + display = elem.style.display = ""; + } - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { - jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { + jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + } } } @@ -5954,10 +6295,13 @@ jQuery.prototype.show = function( speed, easing, callback ) { // to avoid the constant reflow for ( i = 0; i < j; i++ ) { elem = this[i]; - display = elem.style.display; - if ( display === "" || display === "none" ) { - elem.style.display = jQuery._data(elem, "olddisplay") || ""; + if ( elem.style ) { + display = elem.style.display; + + if ( display === "" || display === "none" ) { + elem.style.display = jQuery._data(elem, "olddisplay") || ""; + } } } @@ -6088,15 +6432,18 @@ jQuery.prototype.stop = function( clearQueue, gotoEnd ) { /// /// - var timers = jQuery.timers; - if ( clearQueue ) { this.queue([]); } this.each(function() { - // go in reverse order so anything added to the queue during the loop is ignored - for ( var i = timers.length - 1; i >= 0; i-- ) { + var timers = jQuery.timers, + i = timers.length; + // clear marker counters if we know they won't be + if ( !gotoEnd ) { + jQuery._unmark( true, this ); + } + while ( i-- ) { if ( timers[i].elem === this ) { if (gotoEnd) { // force the next step to be the last @@ -6243,7 +6590,7 @@ jQuery.prototype.toggleClass = function( value, stateVal ) { i = 0, self = jQuery( this ), state = stateVal, - classNames = value.split( rspaces ); + classNames = value.split( rspace ); while ( (className = classNames[ i++ ]) ) { // check each className given, space seperated list @@ -6293,11 +6640,7 @@ jQuery.prototype.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; + return jQuery.event.trigger( type, data, this[0], true ); } }; jQuery.prototype.unbind = function( type, fn ) { @@ -6335,7 +6678,8 @@ jQuery.prototype.undelegate = function( selector, types, fn ) { /// 1 - undelegate() /// 2 - undelegate(selector, eventType) /// 3 - undelegate(selector, eventType, handler) -/// 4 - undelegate(selector, events) +/// 4 - undelegate(selector, events) +/// 5 - undelegate(namespace) /// /// /// A selector which will be used to filter the event results. @@ -6349,7 +6693,7 @@ jQuery.prototype.undelegate = function( selector, types, fn ) { /// if ( arguments.length === 0 ) { - return this.unbind( "live" ); + return this.unbind( "live" ); } else { return this.die( types, null, fn, selector ); @@ -6403,82 +6747,36 @@ jQuery.prototype.val = function( value ) { /// /// + var hooks, ret, + elem = this[0]; + if ( !arguments.length ) { - var elem = this[0]; - if ( elem ) { - if ( jQuery.nodeName( elem, "option" ) ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery(option).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - return values; + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; } - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - } - - // Everything else, we just grab the value return (elem.value || "").replace(rreturn, ""); - } return undefined; } - var isFunction = jQuery.isFunction(value); + var isFunction = jQuery.isFunction( value ); - return this.each(function(i) { - var self = jQuery(this), val = value; + return this.each(function( i ) { + var self = jQuery(this), val; if ( this.nodeType !== 1 ) { return; } if ( isFunction ) { - val = value.call(this, i, self.val()); + val = value.call( this, i, self.val() ); + } else { + val = value; } // Treat null/undefined as ""; convert numbers to string @@ -6486,27 +6784,16 @@ jQuery.prototype.val = function( value ) { val = ""; } else if ( typeof val === "number" ) { val += ""; - } else if ( jQuery.isArray(val) ) { - val = jQuery.map(val, function (value) { + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { return value == null ? "" : value + ""; }); } - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { - this.checked = jQuery.inArray( self.val(), val ) >= 0; - - } else if ( jQuery.nodeName( this, "select" ) ) { - var values = jQuery.makeArray(val); + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - jQuery( "option", this ).each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - this.selectedIndex = -1; - } - - } else { + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { this.value = val; } }); @@ -6611,7 +6898,7 @@ jQuery.prototype.wrapAll = function( html ) { } return elem; - }).append(this); + }).append( this ); } return this; diff --git a/NzbDrone.Web/Scripts/jquery-1.5.2.js b/NzbDrone.Web/Scripts/jquery-1.6.1.js similarity index 79% rename from NzbDrone.Web/Scripts/jquery-1.5.2.js rename to NzbDrone.Web/Scripts/jquery-1.6.1.js index ae0234d2b..5d5a1d58e 100644 --- a/NzbDrone.Web/Scripts/jquery-1.5.2.js +++ b/NzbDrone.Web/Scripts/jquery-1.6.1.js @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v1.5.2 + * jQuery JavaScript Library v1.6.1 * http://jquery.com/ * * Copyright 2011, John Resig @@ -11,12 +11,14 @@ * Copyright 2011, The Dojo Foundation * Released under the MIT, BSD, and GPL Licenses. * - * Date: Thu Mar 31 15:28:23 2011 -0400 + * Date: Thu May 12 15:04:36 2011 -0400 */ (function( window, undefined ) { // Use the correct document accordingly with window argument (sandbox) -var document = window.document; +var document = window.document, + navigator = window.navigator, + location = window.location; var jQuery = (function() { // Define a local copy of jQuery @@ -36,7 +38,7 @@ var jQuery = function( selector, context ) { // A simple way to check for HTML strings or ID strings // (both of which we optimize for) - quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/, + quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, // Check if a string has a non-whitespace character in it rnotwhite = /\S/, @@ -107,7 +109,7 @@ jQuery.fn = jQuery.prototype = { if ( selector === "body" && !context && document.body ) { this.context = document; this[0] = document.body; - this.selector = "body"; + this.selector = selector; this.length = 1; return this; } @@ -115,7 +117,13 @@ jQuery.fn = jQuery.prototype = { // Handle HTML strings if ( typeof selector === "string" ) { // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { @@ -196,7 +204,7 @@ jQuery.fn = jQuery.prototype = { selector: "", // The current version of jQuery being used - jquery: "1.5.2", + jquery: "1.6.1", // The default length of a jQuery object is 0 length: 0, @@ -372,9 +380,11 @@ jQuery.extend = jQuery.fn.extend = function() { jQuery.extend({ noConflict: function( deep ) { - window.$ = _$; + if ( window.$ === jQuery ) { + window.$ = _$; + } - if ( deep ) { + if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } @@ -388,15 +398,19 @@ jQuery.extend({ // the ready event fires. See #6781 readyWait: 1, - // Handle when the DOM is ready - ready: function( wait ) { - // A third-party is pushing the ready event forwards - if ( wait === true ) { - jQuery.readyWait--; + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); } + }, - // Make sure that the DOM is not already loaded - if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) { + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). if ( !document.body ) { return setTimeout( jQuery.ready, 1 ); @@ -446,7 +460,7 @@ jQuery.extend({ } else if ( document.attachEvent ) { // ensure firing before onload, // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", DOMContentLoaded); + document.attachEvent( "onreadystatechange", DOMContentLoaded ); // A fallback to window.onload, that will always work window.attachEvent( "onload", jQuery.ready ); @@ -534,20 +548,21 @@ jQuery.extend({ // Make sure leading/trailing whitespace is removed (IE can't handle it) data = jQuery.trim( data ); + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test(data.replace(rvalidescape, "@") - .replace(rvalidtokens, "]") - .replace(rvalidbraces, "")) ) { + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { - // Try to use the native JSON parser first - return window.JSON && window.JSON.parse ? - window.JSON.parse( data ) : - (new Function("return " + data))(); + return (new Function( "return " + data ))(); - } else { - jQuery.error( "Invalid JSON: " + data ); } + jQuery.error( "Invalid JSON: " + data ); }, // Cross-browser xml parsing @@ -574,24 +589,17 @@ jQuery.extend({ noop: function() {}, - // Evalulates a script in a global context + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { - if ( data && rnotwhite.test(data) ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement, - script = document.createElement( "script" ); - - if ( jQuery.support.scriptEval() ) { - script.appendChild( document.createTextNode( data ) ); - } else { - script.text = data; - } - - // Use insertBefore instead of appendChild to circumvent an IE6 bug. - // This arises when a base node is used (#2709). - head.insertBefore( script, head.firstChild ); - head.removeChild( script ); + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); } }, @@ -603,7 +611,7 @@ jQuery.extend({ each: function( object, callback, args ) { var name, i = 0, length = object.length, - isObj = length === undefined || jQuery.isFunction(object); + isObj = length === undefined || jQuery.isFunction( object ); if ( args ) { if ( isObj ) { @@ -629,8 +637,11 @@ jQuery.extend({ } } } else { - for ( var value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } } } @@ -661,7 +672,7 @@ jQuery.extend({ // The extra typeof function check is to prevent crashes // in Safari 2 (See: #3039) // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type(array); + var type = jQuery.type( array ); if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { push.call( ret, array ); @@ -674,8 +685,9 @@ jQuery.extend({ }, inArray: function( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); + + if ( indexOf ) { + return indexOf.call( array, elem ); } for ( var i = 0, length = array.length; i < length; i++ ) { @@ -725,15 +737,30 @@ jQuery.extend({ // arg is for internal usage only map: function( elems, callback, arg ) { - var ret = [], value; + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, length = elems.length; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); - if ( value != null ) { - ret[ ret.length ] = value; + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } } } @@ -744,31 +771,30 @@ jQuery.extend({ // A global GUID counter for objects guid: 1, - proxy: function( fn, proxy, thisObject ) { - if ( arguments.length === 2 ) { - if ( typeof proxy === "string" ) { - thisObject = fn; - fn = thisObject[ proxy ]; - proxy = undefined; + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } - } else if ( proxy && !jQuery.isFunction( proxy ) ) { - thisObject = proxy; - proxy = undefined; - } + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; } - if ( !proxy && fn ) { + // Simulated bind + var args = slice.call( arguments, 2 ), proxy = function() { - return fn.apply( thisObject || this, arguments ); + return fn.apply( context, args.concat( slice.call( arguments ) ) ); }; - } // Set the guid of unique handler to the same of original handler, so it can be removed - if ( fn ) { - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - } + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - // So proxy can be declared as an argument return proxy; }, @@ -820,24 +846,24 @@ jQuery.extend({ }, sub: function() { - function jQuerySubclass( selector, context ) { - return new jQuerySubclass.fn.init( selector, context ); + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); } - jQuery.extend( true, jQuerySubclass, this ); - jQuerySubclass.superclass = this; - jQuerySubclass.fn = jQuerySubclass.prototype = this(); - jQuerySubclass.fn.constructor = jQuerySubclass; - jQuerySubclass.subclass = this.subclass; - jQuerySubclass.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySubclass) ) { - context = jQuerySubclass(context); + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); } - return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass ); + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); }; - jQuerySubclass.fn.init.prototype = jQuerySubclass.fn; - var rootjQuerySubclass = jQuerySubclass(document); - return jQuerySubclass; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; }, browser: {} @@ -859,12 +885,6 @@ if ( jQuery.browser.webkit ) { jQuery.browser.safari = true; } -if ( indexOf ) { - jQuery.inArray = function( elem, array ) { - return indexOf.call( array, elem ); - }; -} - // IE doesn't match non-breaking spaces with \s if ( rnotwhite.test( "\xA0" ) ) { trimLeft = /^[\s\xA0]+/; @@ -917,7 +937,7 @@ return jQuery; var // Promise methods - promiseMethods = "then done fail isResolved isRejected promise".split( " " ), + promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), // Static reference to slice sliceDeferred = [].slice; @@ -1016,10 +1036,37 @@ jQuery.extend({ deferred.done( doneCallbacks ).fail( failCallbacks ); return this; }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, fail: failDeferred.done, rejectWith: failDeferred.resolveWith, reject: failDeferred.resolve, isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { @@ -1035,7 +1082,7 @@ jQuery.extend({ } return obj; } - } ); + }); // Make sure only one callback list will be used deferred.done( failDeferred.cancel ).fail( deferred.cancel ); // Unexpose cancel @@ -1087,46 +1134,62 @@ jQuery.extend({ +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + bodyStyle, + tds, + events, + eventName, + i, + isSupported; -(function() { - - jQuery.support = {}; - - var div = document.createElement("div"); - - div.style.display = "none"; - div.innerHTML = "
a"; + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
a"; - var all = div.getElementsByTagName("*"), - a = div.getElementsByTagName("a")[0], - select = document.createElement("select"), - opt = select.appendChild( document.createElement("option") ), - input = div.getElementsByTagName("input")[0]; + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; // Can't get basic test support if ( !all || !all.length || !a ) { - return; + return {}; } - jQuery.support = { + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, + leadingWhitespace: ( div.firstChild.nodeType === 3 ), // Make sure that tbody elements aren't automatically inserted // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, + tbody: !div.getElementsByTagName( "tbody" ).length, // Make sure that link elements get serialized correctly by innerHTML // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, + htmlSerialize: !!div.getElementsByTagName( "link" ).length, // Get the style information from getAttribute - // (IE uses .cssText insted) - style: /red/.test( a.getAttribute("style") ), + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), // Make sure that URLs aren't manipulated // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), // Make sure that element opacity exists // (IE uses filter instead) @@ -1140,188 +1203,183 @@ jQuery.extend({ // Make sure that if no value is specified for a checkbox // that it defaults to "on". // (WebKit defaults to "" instead) - checkOn: input.value === "on", + checkOn: ( input.value === "on" ), // Make sure that a selected-by-default option has a working selected property. // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) optSelected: opt.selected, + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, deleteExpando: true, - optDisabled: false, - checkClone: false, noCloneEvent: true, - noCloneChecked: true, - boxModel: null, inlineBlockNeedsLayout: false, shrinkWrapBlocks: false, - reliableHiddenOffsets: true, reliableMarginRight: true }; + // Make sure checked status is properly cloned input.checked = true; - jQuery.support.noCloneChecked = input.cloneNode( true ).checked; + support.noCloneChecked = input.cloneNode( true ).checked; // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as diabled) + // (WebKit marks them as disabled) select.disabled = true; - jQuery.support.optDisabled = !opt.disabled; - - var _scriptEval = null; - jQuery.support.scriptEval = function() { - if ( _scriptEval === null ) { - var root = document.documentElement, - script = document.createElement("script"), - id = "script" + jQuery.now(); - - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) - try { - script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); - } catch(e) {} - - root.insertBefore( script, root.firstChild ); - - if ( window[ id ] ) { - _scriptEval = true; - delete window[ id ]; - } else { - _scriptEval = false; - } - - root.removeChild( script ); - } - - return _scriptEval; - }; + support.optDisabled = !opt.disabled; // Test to see if it's possible to delete an expando from an element // Fails in Internet Explorer try { delete div.test; - - } catch(e) { - jQuery.support.deleteExpando = false; + } catch( e ) { + support.deleteExpando = false; } if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent("onclick", function click() { + div.attachEvent( "onclick", function click() { // Cloning a node shouldn't copy over any // bound event handlers (IE does this) - jQuery.support.noCloneEvent = false; - div.detachEvent("onclick", click); + support.noCloneEvent = false; + div.detachEvent( "onclick", click ); }); - div.cloneNode(true).fireEvent("onclick"); + div.cloneNode( true ).fireEvent( "onclick" ); } - div = document.createElement("div"); - div.innerHTML = ""; + // Check if a radio maintains it's value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; - var fragment = document.createDocumentFragment(); + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); fragment.appendChild( div.firstChild ); // WebKit doesn't clone checked state correctly in fragments - jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; // Figure out if the W3C box model works as expected - // document.body must exist before we can do this - jQuery(function() { - var div = document.createElement("div"), - body = document.getElementsByTagName("body")[0]; + div.style.width = div.style.paddingLeft = "1px"; + + // We use our own, invisible, body + body = document.createElement( "body" ); + bodyStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + // Set background to avoid IE crashes when removing (#9028) + background: "none" + }; + for ( i in bodyStyle ) { + body.style[ i ] = bodyStyle[ i ]; + } + body.appendChild( div ); + documentElement.insertBefore( body, documentElement.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } - // Frameset documents with no body should not run this code - if ( !body ) { - return; - } + div.innerHTML = "
t
"; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } - div.style.width = div.style.paddingLeft = "1px"; - body.appendChild( div ); - jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2; - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
"; - jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2; - } - - div.innerHTML = "
t
"; - var tds = div.getElementsByTagName("td"); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0; - - tds[0].style.display = ""; - tds[1].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0; - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - div.style.width = "1px"; - div.style.marginRight = "0"; - jQuery.support.reliableMarginRight = ( parseInt(document.defaultView.getComputedStyle(div, null).marginRight, 10) || 0 ) === 0; - } - - body.removeChild( div ).style.display = "none"; - div = tds = null; - }); + // Remove the body element we added + body.innerHTML = ""; + documentElement.removeChild( body ); // Technique from Juriy Zaytsev // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - var eventSupported = function( eventName ) { - var el = document.createElement("div"); - eventName = "on" + eventName; - - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( !el.attachEvent ) { - return true; + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; } + } - var isSupported = (eventName in el); - if ( !isSupported ) { - el.setAttribute(eventName, "return;"); - isSupported = typeof el[eventName] === "function"; - } - return isSupported; - }; + return support; +})(); - jQuery.support.submitBubbles = eventSupported("submit"); - jQuery.support.changeBubbles = eventSupported("change"); +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; - // release memory in IE - div = all = a = null; -})(); -var rbrace = /^(?:\{.*\}|\[.*\])$/; +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; jQuery.extend({ cache: {}, @@ -1418,7 +1476,7 @@ jQuery.extend({ } if ( data !== undefined ) { - thisCache[ name ] = data; + thisCache[ jQuery.camelCase( name ) ] = data; } // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should @@ -1428,7 +1486,7 @@ jQuery.extend({ return thisCache[ internalKey ] && thisCache[ internalKey ].events; } - return getByName ? thisCache[ name ] : thisCache; + return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; }, removeData: function( elem, name, pvt /* Internal Use Only */ ) { @@ -1544,12 +1602,13 @@ jQuery.fn.extend({ data = jQuery.data( this[0] ); if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; + var attr = this[0].attributes, name; for ( var i = 0, l = attr.length; i < l; i++ ) { name = attr[i].name; if ( name.indexOf( "data-" ) === 0 ) { - name = name.substr( 5 ); + name = jQuery.camelCase( name.substring(5) ); + dataAttr( this[0], name, data[ name ] ); } } @@ -1603,7 +1662,9 @@ function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { - data = elem.getAttribute( "data-" + key ); + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { @@ -1642,35 +1703,76 @@ function isEmptyDataObject( obj ) { -jQuery.extend({ - queue: function( elem, type, data ) { - if ( !elem ) { - return; - } +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery.data( elem, deferDataKey, undefined, true ); + if ( defer && + ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && + ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery.data( elem, queueDataKey, undefined, true ) && + !jQuery.data( elem, markDataKey, undefined, true ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.resolve(); + } + }, 0 ); + } +} - type = (type || "fx") + "queue"; - var q = jQuery._data( elem, type ); +jQuery.extend({ - // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { - return q || []; + _mark: function( elem, type ) { + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); } + }, - if ( !q || jQuery.isArray(data) ) { - q = jQuery._data( elem, type, jQuery.makeArray(data) ); - - } else { - q.push( data ); + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } } + }, - return q; + queue: function( elem, type, data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), - fn = queue.shift(); + fn = queue.shift(), + defer; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { @@ -1691,6 +1793,7 @@ jQuery.extend({ if ( !queue.length ) { jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); } } }); @@ -1705,7 +1808,7 @@ jQuery.fn.extend({ if ( data === undefined ) { return jQuery.queue( this[0], type ); } - return this.each(function( i ) { + return this.each(function() { var queue = jQuery.queue( this, type, data ); if ( type === "fx" && queue[0] !== "inprogress" ) { @@ -1718,7 +1821,6 @@ jQuery.fn.extend({ jQuery.dequeue( this, type ); }); }, - // Based off of the plugin by Clint Helfers, with permission. // http://blindsignals.com/index.php/2009/07/jquery-delay/ delay: function( time, type ) { @@ -1732,9 +1834,41 @@ jQuery.fn.extend({ }, time ); }); }, - clearQueue: function( type ) { return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); } }); @@ -1742,51 +1876,51 @@ jQuery.fn.extend({ var rclass = /[\n\t\r]/g, - rspaces = /\s+/, + rspace = /\s+/, rreturn = /\r/g, - rspecialurl = /^(?:href|src|style)$/, rtype = /^(?:button|input)$/i, rfocusable = /^(?:button|input|object|select|textarea)$/i, rclickable = /^a(?:rea)?$/i, - rradiocheck = /^(?:radio|checkbox)$/i; - -jQuery.props = { - "for": "htmlFor", - "class": "className", - readonly: "readOnly", - maxlength: "maxLength", - cellspacing: "cellSpacing", - rowspan: "rowSpan", - colspan: "colSpan", - tabindex: "tabIndex", - usemap: "useMap", - frameborder: "frameBorder" -}; + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + rinvalidChar = /\:/, + formHook, boolHook; jQuery.fn.extend({ attr: function( name, value ) { return jQuery.access( this, name, value, true, jQuery.attr ); }, - removeAttr: function( name, fn ) { - return this.each(function(){ - jQuery.attr( this, name, "" ); - if ( this.nodeType === 1 ) { - this.removeAttribute( name ); - } + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} }); }, addClass: function( value ) { - if ( jQuery.isFunction(value) ) { + if ( jQuery.isFunction( value ) ) { return this.each(function(i) { var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class")) ); + self.addClass( value.call(this, i, self.attr("class") || "") ); }); } if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspaces ); + var classNames = (value || "").split( rspace ); for ( var i = 0, l = this.length; i < l; i++ ) { var elem = this[i]; @@ -1822,7 +1956,7 @@ jQuery.fn.extend({ } if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split( rspaces ); + var classNames = (value || "").split( rspace ); for ( var i = 0, l = this.length; i < l; i++ ) { var elem = this[i]; @@ -1863,7 +1997,7 @@ jQuery.fn.extend({ i = 0, self = jQuery( this ), state = stateVal, - classNames = value.split( rspaces ); + classNames = value.split( rspace ); while ( (className = classNames[ i++ ]) ) { // check each className given, space seperated list @@ -1895,82 +2029,36 @@ jQuery.fn.extend({ }, val: function( value ) { + var hooks, ret, + elem = this[0]; + if ( !arguments.length ) { - var elem = this[0]; - if ( elem ) { - if ( jQuery.nodeName( elem, "option" ) ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery(option).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; } - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - } - - // Everything else, we just grab the value return (elem.value || "").replace(rreturn, ""); - } return undefined; } - var isFunction = jQuery.isFunction(value); + var isFunction = jQuery.isFunction( value ); - return this.each(function(i) { - var self = jQuery(this), val = value; + return this.each(function( i ) { + var self = jQuery(this), val; if ( this.nodeType !== 1 ) { return; } if ( isFunction ) { - val = value.call(this, i, self.val()); + val = value.call( this, i, self.val() ); + } else { + val = value; } // Treat null/undefined as ""; convert numbers to string @@ -1978,34 +2066,89 @@ jQuery.fn.extend({ val = ""; } else if ( typeof val === "number" ) { val += ""; - } else if ( jQuery.isArray(val) ) { - val = jQuery.map(val, function (value) { + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { return value == null ? "" : value + ""; }); } - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { - this.checked = jQuery.inArray( self.val(), val ) >= 0; + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - } else if ( jQuery.nodeName( this, "select" ) ) { - var values = jQuery.makeArray(val); + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, - jQuery( "option", this ).each(function() { + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; }); if ( !values.length ) { - this.selectedIndex = -1; + elem.selectedIndex = -1; } - - } else { - this.value = val; + return values; } - }); - } -}); + } + }, -jQuery.extend({ attrFn: { val: true, css: true, @@ -2016,124 +2159,345 @@ jQuery.extend({ height: true, offset: true }, - + + attrFix: { + // Always normalize to ensure hook usage + tabindex: "tabIndex" + }, + attr: function( elem, name, value, pass ) { + var nType = elem.nodeType; + // don't get/set attributes on text, comment and attribute nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || elem.nodeType === 2 ) { + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { return undefined; } if ( pass && name in jQuery.attrFn ) { - return jQuery(elem)[name](value); + return jQuery( elem )[ name ]( value ); } - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), - // Whether we are setting (or getting) - set = value !== undefined; + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } - // Try to normalize/fix the name - name = notxml && jQuery.props[ name ] || name; + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + name = notxml && jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; - // Only do all the following if this is a node (faster for style) + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) && + (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + hooks = formHook; + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml ) { + return hooks.get( elem, name ); + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, name ) { + var propName; if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); - - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; } + return value; } } + }, + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabIndex"); - // If applicable, access the attribute via the DOM 0 way - // 'in' checks fail in Blackberry 4.7 #6931 - if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + }, - if ( value === null ) { - if ( elem.nodeType === 1 ) { - elem.removeAttribute( name ); - } + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var nType = elem.nodeType; - } else { - elem[ name ] = value; - } - } + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; - } + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); + // Try to normalize/fix the name + name = notxml && jQuery.propFix[ name ] || name; + + hooks = jQuery.propHooks[ name ]; - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { return elem[ name ]; } + } + }, + + propHooks: {} +}); - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + return elem[ jQuery.propFix[ name ] || name ] ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = value; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// Use the value property for back compat +// Use the formHook for button elements in IE6/7 (#1954) +jQuery.attrHooks.value = { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return elem.value; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !jQuery.support.getSetAttribute ) { + + // propFix is more comprehensive and contains all fixes + jQuery.attrFix = jQuery.propFix; + + // Use this for any attribute on a form in IE6/7 + formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Check form objects in IE (multiple bugs related) + // Only use nodeValue if the attribute node exists on the form + var ret = elem.getAttributeNode( name ); + if ( ret ) { + ret.nodeValue = value; + return value; + } + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; } + } + }); + }); +} + - return elem.style.cssText; +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; } + }); + }); +} - if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 - elem.setAttribute( name, "" + value ); +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return (elem.style.cssText = "" + value); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } } + } + }); +} - // Ensure that missing attributes return undefined - // Blackberry 4.7 returns "" from getAttribute #6938 - if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) { - return undefined; +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); } - - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; - } - // Handle everything which isn't a DOM element node - if ( set ) { - elem[ name ] = value; } - return elem[ name ]; - } + }); }); -var rnamespaces = /\.(.*)$/, +var hasOwn = Object.prototype.hasOwnProperty, + rnamespaces = /\.(.*)$/, rformElems = /^(?:textarea|input|select)$/i, rperiod = /\./g, - rspace = / /g, + rspaces = / /g, rescape = /[^\w\s.|`]/g, fcleanup = function( nm ) { return nm.replace(rescape, "\\$&"); @@ -2153,17 +2517,6 @@ jQuery.event = { return; } - // TODO :: Use a try/catch until it's safe to pull this out (likely 1.6) - // Minor release fix for bug #8018 - try { - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) { - elem = window; - } - } - catch ( e ) {} - if ( handler === false ) { handler = returnFalse; } else if ( !handler ) { @@ -2201,9 +2554,9 @@ jQuery.event = { if ( !eventHandle ) { elemData.handle = eventHandle = function( e ) { - // Handle the second event of a trigger and when - // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined; }; @@ -2273,7 +2626,7 @@ jQuery.event = { // Add the function to the element's handler list handlers.push( handleObj ); - // Keep track of which events have been used, for global triggering + // Keep track of which events have been used, for event optimization jQuery.event.global[ type ] = true; } @@ -2406,182 +2759,185 @@ jQuery.event = { } } }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, - // bubbling is internal - trigger: function( event, data, elem /*, bubbling */ ) { + trigger: function( event, data, elem, onlyHandlers ) { // Event object or event type var type = event.type || event, - bubbling = arguments[3]; + namespaces = [], + exclusive; - if ( !bubbling ) { - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - jQuery.extend( jQuery.Event(type), event ) : - // Just the event type (string) - jQuery.Event(type); + if ( type.indexOf("!") >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } - if ( type.indexOf("!") >= 0 ) { - event.type = type = type.slice(0, -1); - event.exclusive = true; - } + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } - // Handle a global trigger - if ( !elem ) { - // Don't bubble custom events when global (to avoid too much overhead) - event.stopPropagation(); - - // Only trigger if we've ever bound an event for it - if ( jQuery.event.global[ type ] ) { - // XXX This code smells terrible. event.js should not be directly - // inspecting the data cache - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - } - } + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } - // Handle triggering a single element + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); - // don't do events on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + event.stopPropagation(); + } - // Clean up in case it is reused - event.result = undefined; - event.target = elem; + // Handle a global trigger + if ( !elem ) { + // TODO: Stop taunting the data cache; remove global events and always attach to document + jQuery.each( jQuery.cache, function() { + // internalKey variable is just used to make it easier to find + // and potentially change this stuff later; currently it just + // points to jQuery.expando + var internalKey = jQuery.expando, + internalCache = this[ internalKey ]; + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { + jQuery.event.trigger( event, data, internalCache.handle.elem ); + } + }); + return; + } - // Clone the incoming data, if any - data = jQuery.makeArray( data ); - data.unshift( event ); + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; } - event.currentTarget = elem; + // Clean up the event in case it is being reused + event.result = undefined; + event.target = elem; - // Trigger the event, it is assumed that "handle" is a function - var handle = jQuery._data( elem, "handle" ); + // Clone any incoming data and prepend the event, creating the handler arg list + data = data ? jQuery.makeArray( data ) : []; + data.unshift( event ); - if ( handle ) { - handle.apply( elem, data ); - } + var cur = elem, + // IE doesn't like method names with a colon (#3533, #8272) + ontype = type.indexOf(":") < 0 ? "on" + type : ""; - var parent = elem.parentNode || elem.ownerDocument; + // Fire event on the current element, then bubble up the DOM tree + do { + var handle = jQuery._data( cur, "handle" ); - // Trigger an inline bound script - try { - if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { - if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) { - event.result = false; - event.preventDefault(); - } + event.currentTarget = cur; + if ( handle ) { + handle.apply( cur, data ); } - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (inlineError) {} + // Trigger an inline bound script + if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { + event.result = false; + event.preventDefault(); + } - if ( !event.isPropagationStopped() && parent ) { - jQuery.event.trigger( event, data, parent, true ); + // Bubble up to document, then to window + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while ( cur && !event.isPropagationStopped() ); - } else if ( !event.isDefaultPrevented() ) { + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { var old, - target = event.target, - targetType = type.replace( rnamespaces, "" ), - isClick = jQuery.nodeName( target, "a" ) && targetType === "click", - special = jQuery.event.special[ targetType ] || {}; + special = jQuery.event.special[ type ] || {}; - if ( (!special._default || special._default.call( elem, event ) === false) && - !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { + if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction)() check here because IE6/7 fails that test. + // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. try { - if ( target[ targetType ] ) { - // Make sure that we don't accidentally re-trigger the onFOO events - old = target[ "on" + targetType ]; + if ( ontype && elem[ type ] ) { + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; if ( old ) { - target[ "on" + targetType ] = null; + elem[ ontype ] = null; } - jQuery.event.triggered = event.type; - target[ targetType ](); + jQuery.event.triggered = type; + elem[ type ](); } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (triggerError) {} + } catch ( ieError ) {} if ( old ) { - target[ "on" + targetType ] = old; + elem[ ontype ] = old; } jQuery.event.triggered = undefined; } } + + return event.result; }, handle: function( event ) { - var all, handlers, namespaces, namespace_re, events, - namespace_sort = [], - args = jQuery.makeArray( arguments ); - - event = args[0] = jQuery.event.fix( event || window.event ); + event = jQuery.event.fix( event || window.event ); + // Snapshot the handlers list since a called handler may add/remove events. + var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), + run_all = !event.exclusive && !event.namespace, + args = Array.prototype.slice.call( arguments, 0 ); + + // Use the fix-ed Event rather than the (read-only) native event + args[0] = event; event.currentTarget = this; - // Namespaced event handlers - 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"); - - handlers = (events || {})[ event.type ]; - - if ( events && handlers ) { - // Clone the handlers to prevent manipulation - handlers = handlers.slice(0); - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Filter the functions by class - if ( all || namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - 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(); - } + for ( var j = 0, l = handlers.length; j < l; j++ ) { + var handleObj = handlers[ j ]; + + // Triggered event must 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event. + if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + 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; - } + if ( event.isImmediatePropagationStopped() ) { + break; } } } - return event.result; }, @@ -2620,8 +2976,9 @@ jQuery.event = { // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && event.clientX != null ) { - var doc = document.documentElement, - body = document.body; + var eventDocument = event.target.ownerDocument || document, + doc = eventDocument.documentElement, + body = eventDocument.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); @@ -2700,10 +3057,10 @@ jQuery.removeEvent = document.removeEventListener ? } }; -jQuery.Event = function( src ) { +jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !this.preventDefault ) { - return new jQuery.Event( src ); + return new jQuery.Event( src, props ); } // Event object @@ -2721,6 +3078,11 @@ jQuery.Event = function( src ) { this.type = src; } + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + // timeStamp is buggy for some events on Firefox(#3843) // So we won't rely on the native value this.timeStamp = jQuery.now(); @@ -2785,6 +3147,9 @@ var withinElement = function( event ) { // Check if mouse(over|out) are still within the same parent element var parent = event.relatedTarget; + // set the correct event type + event.type = event.data; + // Firefox sometimes assigns relatedTarget a XUL element // which we cannot access the parentNode property of try { @@ -2794,15 +3159,13 @@ var withinElement = function( event ) { if ( parent && parent !== document && !parent.parentNode ) { return; } + // Traverse up the tree while ( parent && parent !== this ) { parent = parent.parentNode; } if ( parent !== this ) { - // set the correct event type - event.type = event.data; - // handle event if we actually just moused on to a non sub-element jQuery.event.handle.apply( this, arguments ); } @@ -2838,7 +3201,7 @@ if ( !jQuery.support.submitBubbles ) { jQuery.event.special.submit = { setup: function( data, namespaces ) { - if ( this.nodeName && this.nodeName.toLowerCase() !== "form" ) { + if ( !jQuery.nodeName( this, "form" ) ) { jQuery.event.add(this, "click.specialSubmit", function( e ) { var elem = e.target, type = elem.type; @@ -2887,7 +3250,7 @@ if ( !jQuery.support.changeBubbles ) { }).join("-") : ""; - } else if ( elem.nodeName.toLowerCase() === "select" ) { + } else if ( jQuery.nodeName( elem, "select" ) ) { val = elem.selectedIndex; } @@ -2927,9 +3290,9 @@ if ( !jQuery.support.changeBubbles ) { beforedeactivate: testChange, click: function( e ) { - var elem = e.target, type = elem.type; + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { + if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { testChange.call( this, e ); } }, @@ -2937,9 +3300,9 @@ if ( !jQuery.support.changeBubbles ) { // Change has to be called before submit // Keydown will be called before keypress, which is used in submit-event delegation keydown: function( e ) { - var elem = e.target, type = elem.type; + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || + if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || type === "select-multiple" ) { testChange.call( this, e ); @@ -2996,12 +3359,12 @@ function trigger( type, elem, args ) { } // Create "bubbling" focus and blur events -if ( document.addEventListener ) { +if ( !jQuery.support.focusinBubbles ) { jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - + // Attach a single capturing handler while someone wants focusin/focusout var attaches = 0; - + jQuery.event.special[ fix ] = { setup: function() { if ( attaches++ === 0 ) { @@ -3031,6 +3394,8 @@ if ( document.addEventListener ) { jQuery.each(["bind", "one"], function( i, name ) { jQuery.fn[ name ] = function( type, data, fn ) { + var handler; + // Handle object literals if ( typeof type === "object" ) { for ( var key in type ) { @@ -3039,15 +3404,20 @@ jQuery.each(["bind", "one"], function( i, name ) { return this; } - if ( jQuery.isFunction( data ) || data === false ) { + if ( arguments.length === 2 || 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 ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } if ( type === "unload" && name !== "one" ) { this.one( type, data, fn ); @@ -3085,7 +3455,7 @@ jQuery.fn.extend({ undelegate: function( selector, types, fn ) { if ( arguments.length === 0 ) { - return this.unbind( "live" ); + return this.unbind( "live" ); } else { return this.die( types, null, fn, selector ); @@ -3100,35 +3470,34 @@ jQuery.fn.extend({ 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; + return jQuery.event.trigger( type, data, this[0], true ); } }, toggle: function( fn ) { // Save reference to arguments for access in closure var args = arguments, - i = 1; + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; while ( i < args.length ) { - jQuery.proxy( fn, args[ i++ ] ); + args[ i++ ].guid = guid; } - return this.click( jQuery.proxy( fn, function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - })); + return this.click( toggler ); }, hover: function( fnOver, fnOut ) { @@ -3157,8 +3526,16 @@ jQuery.each(["live", "die"], function( i, name ) { return this; } - if ( jQuery.isFunction( data ) ) { - fn = data; + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; data = undefined; } @@ -3180,7 +3557,7 @@ jQuery.each(["live", "die"], function( i, name ) { preType = type; - if ( type === "focus" || type === "blur" ) { + if ( liveMap[ type ] ) { types.push( liveMap[ type ] + namespaces ); type = type + namespaces; @@ -3251,6 +3628,11 @@ function liveHandler( event ) { if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { event.type = handleObj.preType; related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; + + // Make sure not to accidentally match a child element with the same selector + if ( related && jQuery.contains( elem, related ) ) { + related = elem; + } } if ( !related || related !== elem ) { @@ -3289,7 +3671,7 @@ function liveHandler( event ) { } function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&"); + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); } jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + @@ -3314,6 +3696,7 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl }); + /*! * Sizzle CSS Selector Engine * Copyright 2011, The Dojo Foundation @@ -3941,42 +4324,50 @@ var Expr = Sizzle.selectors = { var attr = elem.getAttribute( "type" ), type = elem.type; // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) // use getAttribute instead to test this case - return "text" === type && ( attr === type || attr === null ); + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); }, radio: function( elem ) { - return "radio" === elem.type; + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; }, checkbox: function( elem ) { - return "checkbox" === elem.type; + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; }, file: function( elem ) { - return "file" === elem.type; + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; }, + password: function( elem ) { - return "password" === elem.type; + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; }, submit: function( elem ) { - return "submit" === elem.type; + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; }, image: function( elem ) { - return "image" === elem.type; + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; }, reset: function( elem ) { - return "reset" === elem.type; + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; }, button: function( elem ) { - return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; }, input: function( elem ) { return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; } }, setFilters: { @@ -4229,6 +4620,16 @@ if ( document.documentElement.compareDocumentPosition ) { } else { sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + var al, bl, ap = [], bp = [], @@ -4236,13 +4637,8 @@ if ( document.documentElement.compareDocumentPosition ) { bup = b.parentNode, cur = aup; - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - // If the nodes are siblings (or identical) we can do a quick check - } else if ( aup === bup ) { + if ( aup === bup ) { return siblingCheck( a, b ); // If no parents were found then the nodes are disconnected @@ -4739,17 +5135,30 @@ var runtil = /Until$/, jQuery.fn.extend({ find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + var ret = this.pushStack( "", "find", selector ), - length = 0; + length, n, r; - for ( var i = 0, l = this.length; i < l; i++ ) { + for ( i = 0, l = this.length; i < l; i++ ) { length = ret.length; jQuery.find( selector, this[i], ret ); if ( i > 0 ) { // Make sure that the results are unique - for ( var n = length; n < ret.length; n++ ) { - for ( var r = 0; r < length; r++ ) { + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { if ( ret[r] === ret[n] ) { ret.splice(n--, 1); break; @@ -4782,12 +5191,15 @@ jQuery.fn.extend({ }, is: function( selector ) { - return !!selector && jQuery.filter( selector, this ).length > 0; + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); }, closest: function( selectors, context ) { var ret = [], i, l, cur = this[0]; - + + // Array if ( jQuery.isArray( selectors ) ) { var match, selector, matches = {}, @@ -4797,8 +5209,8 @@ jQuery.fn.extend({ for ( i = 0, l = selectors.length; i < l; i++ ) { selector = selectors[i]; - if ( !matches[selector] ) { - matches[selector] = jQuery.expr.match.POS.test( selector ) ? + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? jQuery( selector, context || this.context ) : selector; } @@ -4806,9 +5218,9 @@ jQuery.fn.extend({ while ( cur && cur.ownerDocument && cur !== context ) { for ( selector in matches ) { - match = matches[selector]; + match = matches[ selector ]; - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { ret.push({ selector: selector, elem: cur, level: level }); } } @@ -4821,8 +5233,10 @@ jQuery.fn.extend({ return ret; } - var pos = POS.test( selectors ) ? - jQuery( selectors, context || this.context ) : null; + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; for ( i = 0, l = this.length; i < l; i++ ) { cur = this[i]; @@ -4834,14 +5248,14 @@ jQuery.fn.extend({ } else { cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context ) { + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { break; } } } } - ret = ret.length > 1 ? jQuery.unique(ret) : ret; + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; return this.pushStack( ret, "closest", selectors ); }, @@ -4864,7 +5278,7 @@ jQuery.fn.extend({ add: function( selector, context ) { var set = typeof selector === "string" ? jQuery( selector, context ) : - jQuery.makeArray( selector ), + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), all = jQuery.merge( this.get(), set ); return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? @@ -5002,6 +5416,11 @@ jQuery.extend({ // Implement the identical functionality for filter and not function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep(elements, function( elem, i ) { var retVal = !!qualifier.call( elem, i, elem ); @@ -5042,6 +5461,8 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, rnocache = /<(?:script|object|embed|option|style)/i, // checked="checked" or checked rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*", "" ], legend: [ 1, "
", "
" ], @@ -5102,7 +5523,7 @@ jQuery.fn.extend({ } return elem; - }).append(this); + }).append( this ); } return this; @@ -5410,21 +5831,27 @@ function cloneCopyEvent( src, dest ) { } } -function cloneFixAttributes(src, dest) { +function cloneFixAttributes( src, dest ) { + var nodeName; + // We do not need to do anything for non-Elements if ( dest.nodeType !== 1 ) { return; } - var nodeName = dest.nodeName.toLowerCase(); - // clearAttributes removes the attributes, which we don't want, // but also removes the attachEvent events, which we *do* want - dest.clearAttributes(); + if ( dest.clearAttributes ) { + dest.clearAttributes(); + } // mergeAttributes, in contrast, only merges back on the // original attributes, not the events - dest.mergeAttributes(src); + if ( dest.mergeAttributes ) { + dest.mergeAttributes( src ); + } + + nodeName = dest.nodeName.toLowerCase(); // IE6-8 fail to clone children inside object elements that use // the proprietary classid attribute value (rather than the type @@ -5474,11 +5901,10 @@ jQuery.buildFragment = function( args, nodes, scripts ) { args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) { cacheable = true; + cacheresults = jQuery.fragments[ args[0] ]; - if ( cacheresults ) { - if ( cacheresults !== 1 ) { - fragment = cacheresults; - } + if ( cacheresults && cacheresults !== 1 ) { + fragment = cacheresults; } } @@ -5527,7 +5953,7 @@ jQuery.each({ function getAll( elem ) { if ( "getElementsByTagName" in elem ) { return elem.getElementsByTagName( "*" ); - + } else if ( "querySelectorAll" in elem ) { return elem.querySelectorAll( "*" ); @@ -5536,6 +5962,21 @@ function getAll( elem ) { } } +// Used in clean, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( elem.type === "checkbox" || elem.type === "radio" ) { + elem.defaultChecked = elem.checked; + } +} +// Finds all inputs and passes them to fixDefaultChecked +function findInputs( elem ) { + if ( jQuery.nodeName( elem, "input" ) ) { + fixDefaultChecked( elem ); + } else if ( elem.getElementsByTagName ) { + jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); + } +} + jQuery.extend({ clone: function( elem, dataAndEvents, deepDataAndEvents ) { var clone = elem.cloneNode(true), @@ -5582,8 +6023,11 @@ jQuery.extend({ // Return the cloned set return clone; -}, + }, + clean: function( elems, context, fragment, scripts ) { + var checkScriptType; + context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' @@ -5591,7 +6035,7 @@ jQuery.extend({ context = context.ownerDocument || context[0] && context[0].ownerDocument || document; } - var ret = []; + var ret = [], j; for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { if ( typeof elem === "number" ) { @@ -5603,54 +6047,67 @@ jQuery.extend({ } // Convert html string into DOM nodes - if ( typeof elem === "string" && !rhtml.test( elem ) ) { - elem = context.createTextNode( elem ); - - } else if ( typeof elem === "string" ) { - // Fix "XHTML"-style tags in all browsers - elem = elem.replace(rxhtmlTag, "<$1>"); + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); - // Trim whitespace, otherwise indexOf won't work as expected - var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), - wrap = wrapMap[ tag ] || wrapMap._default, - depth = wrap[0], - div = context.createElement("div"); + // Trim whitespace, otherwise indexOf won't work as expected + var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), + wrap = wrapMap[ tag ] || wrapMap._default, + depth = wrap[0], + div = context.createElement("div"); - // Go to html and back, then peel off extra wrappers - div.innerHTML = wrap[1] + elem + wrap[2]; + // Go to html and back, then peel off extra wrappers + div.innerHTML = wrap[1] + elem + wrap[2]; - // Move to the right depth - while ( depth-- ) { - div = div.lastChild; - } + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { - // String was a , *may* have spurious - var hasBody = rtbody.test(elem), - tbody = tag === "table" && !hasBody ? - div.firstChild && div.firstChild.childNodes : + // String was a
, *may* have spurious + var hasBody = rtbody.test(elem), + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : - // String was a bare or - wrap[1] === "
" && !hasBody ? - div.childNodes : - []; + // String was a bare or + wrap[1] === "
" && !hasBody ? + div.childNodes : + []; - for ( var j = tbody.length - 1; j >= 0 ; --j ) { - if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { - tbody[ j ].parentNode.removeChild( tbody[ j ] ); + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } } } - } + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } - // IE completely kills leading whitespace when innerHTML is used - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + elem = div.childNodes; } + } - elem = div.childNodes; + // Resets defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + var len; + if ( !jQuery.support.appendChecked ) { + if ( elem[0] && typeof (len = elem.length) === "number" ) { + for ( j = 0; j < len; j++ ) { + findInputs( elem[j] ); + } + } else { + findInputs( elem ); + } } if ( elem.nodeType ) { @@ -5661,13 +6118,18 @@ jQuery.extend({ } if ( fragment ) { + checkScriptType = function( elem ) { + return !elem.type || rscriptType.test( elem.type ); + }; for ( i = 0; ret[i]; i++ ) { if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); } else { if ( ret[i].nodeType === 1 ) { - ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) ); + var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType ); + + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); } fragment.appendChild( ret[i] ); } @@ -5729,7 +6191,7 @@ function evalScript( i, elem ) { dataType: "script" }); } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); + jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) ); } if ( elem.parentNode ) { @@ -5747,6 +6209,8 @@ var ralpha = /alpha\([^)]*\)/i, rupper = /([A-Z]|^ms)/g, rnumpx = /^-?\d+(?:px)?$/i, rnum = /^-?\d/, + rrelNum = /^[+\-]=/, + rrelNumFilter = /[^+\-\.\de]+/g, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssWidth = [ "Left", "Right" ], @@ -5797,7 +6261,9 @@ jQuery.extend({ "fontWeight": true, "opacity": true, "zoom": true, - "lineHeight": true + "lineHeight": true, + "widows": true, + "orphans": true }, // Add in properties whose names you wish to fix before @@ -5815,20 +6281,27 @@ jQuery.extend({ } // Make sure that we're working with the right name - var ret, origName = jQuery.camelCase( name ), + var ret, type, origName = jQuery.camelCase( name ), style = elem.style, hooks = jQuery.cssHooks[ origName ]; name = jQuery.cssProps[ origName ] || origName; // Check if we're setting a value if ( value !== undefined ) { + type = typeof value; + // Make sure that NaN and null values aren't set. See: #7116 - if ( typeof value === "number" && isNaN( value ) || value == null ) { + if ( type === "number" && isNaN( value ) || value == null ) { return; } + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && rrelNum.test( value ) ) { + value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); + } + // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) { + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { value += "px"; } @@ -5853,11 +6326,17 @@ jQuery.extend({ }, css: function( elem, name, extra ) { + var ret, hooks; + // Make sure that we're working with the right name - var ret, origName = jQuery.camelCase( name ), - hooks = jQuery.cssHooks[ origName ]; + name = jQuery.camelCase( name ); + hooks = jQuery.cssHooks[ name ]; + name = jQuery.cssProps[ name ] || name; - name = jQuery.cssProps[ origName ] || origName; + // cssFloat needs a special treatment + if ( name === "cssFloat" ) { + name = "float"; + } // If a hook was provided get the computed value from there if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { @@ -5865,7 +6344,7 @@ jQuery.extend({ // Otherwise, if a way to get the computed value exists, use that } else if ( curCSS ) { - return curCSS( elem, name, origName ); + return curCSS( elem, name ); } }, @@ -5956,27 +6435,28 @@ if ( !jQuery.support.opacity ) { jQuery.cssHooks.opacity = { get: function( elem, computed ) { // IE uses filters for opacity - return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ? - (parseFloat(RegExp.$1) / 100) + "" : + return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? + ( parseFloat( RegExp.$1 ) / 100 ) + "" : computed ? "1" : ""; }, set: function( elem, value ) { - var style = elem.style; + var style = elem.style, + currentStyle = elem.currentStyle; // IE has trouble with opacity if it does not have layout // Force it by setting the zoom level style.zoom = 1; // Set the alpha filter to set the opacity - var opacity = jQuery.isNaN(value) ? + var opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")", - filter = style.filter || ""; + filter = currentStyle && currentStyle.filter || style.filter || ""; - style.filter = ralpha.test(filter) ? - filter.replace(ralpha, opacity) : - style.filter + ' ' + opacity; + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; } }; } @@ -6004,7 +6484,7 @@ jQuery(function() { }); if ( document.defaultView && document.defaultView.getComputedStyle ) { - getComputedStyle = function( elem, newName, name ) { + getComputedStyle = function( elem, name ) { var ret, defaultView, computedStyle; name = name.replace( rupper, "-$1" ).toLowerCase(); @@ -6115,10 +6595,6 @@ var r20 = /%20/g, rselectTextarea = /^(?:select|textarea)/i, rspacesAjax = /\s+/, rts = /([?&])_=[^&]*/, - rucHeaders = /(^|\-)([a-z])/g, - rucHeadersFunc = function( _, $1, $2 ) { - return $1 + $2.toUpperCase(); - }, rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, // Keep a copy of the old load method @@ -6149,9 +6625,9 @@ var r20 = /%20/g, ajaxLocParts; // #8138, IE may throw an exception when accessing -// a field from document.location if document.domain has been set +// a field from window.location if document.domain has been set try { - ajaxLocation = document.location.href; + ajaxLocation = location.href; } catch( e ) { // Use the href attribute of an A element // since IE will modify it given document.location @@ -6199,7 +6675,7 @@ function addToPrefiltersOrTransports( structure ) { }; } -//Base inspection function for prefilters and transports +// Base inspection function for prefilters and transports function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, dataType /* internal */, inspected /* internal */ ) { @@ -6348,7 +6824,7 @@ jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".sp jQuery.fn[ o ] = function( f ){ return this.bind( o, f ); }; -} ); +}); jQuery.each( [ "get", "post" ], function( i, method ) { jQuery[ method ] = function( url, data, callback, type ) { @@ -6367,7 +6843,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { dataType: type }); }; -} ); +}); jQuery.extend({ @@ -6493,6 +6969,7 @@ jQuery.extend({ ifModifiedKey, // Headers (they are sent all at once) requestHeaders = {}, + requestHeadersNames = {}, // Response headers responseHeadersString, responseHeaders, @@ -6516,7 +6993,9 @@ jQuery.extend({ // Caches the header setRequestHeader: function( name, value ) { if ( !state ) { - requestHeaders[ name.toLowerCase().replace( rucHeaders, rucHeadersFunc ) ] = value; + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; } return this; }, @@ -6764,24 +7243,27 @@ jQuery.extend({ // Set the correct header, if data is being sent if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - requestHeaders[ "Content-Type" ] = s.contentType; + jqXHR.setRequestHeader( "Content-Type", s.contentType ); } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. if ( s.ifModified ) { ifModifiedKey = ifModifiedKey || s.url; if ( jQuery.lastModified[ ifModifiedKey ] ) { - requestHeaders[ "If-Modified-Since" ] = jQuery.lastModified[ ifModifiedKey ]; + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); } if ( jQuery.etag[ ifModifiedKey ] ) { - requestHeaders[ "If-None-Match" ] = jQuery.etag[ ifModifiedKey ]; + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); } } // Set the Accepts header for the server, depending on the dataType - requestHeaders.Accept = s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : - s.accepts[ "*" ]; + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : + s.accepts[ "*" ] + ); // Check for headers option for ( i in s.headers ) { @@ -6857,7 +7339,7 @@ jQuery.extend({ // Serialize the form elements jQuery.each( a, function() { add( this.name, this.value ); - } ); + }); } else { // If traditional, encode the "old" way (the way 1.3.2 or older @@ -6873,7 +7355,7 @@ jQuery.extend({ }); function buildParams( prefix, obj, traditional, add ) { - if ( jQuery.isArray( obj ) && obj.length ) { + if ( jQuery.isArray( obj ) ) { // Serialize array item. jQuery.each( obj, function( i, v ) { if ( traditional || rbracket.test( prefix ) ) { @@ -6893,16 +7375,9 @@ function buildParams( prefix, obj, traditional, add ) { }); } else if ( !traditional && obj != null && typeof obj === "object" ) { - // If we see an array here, it is empty and should be treated as an empty - // object - if ( jQuery.isArray( obj ) || jQuery.isEmptyObject( obj ) ) { - add( prefix, "" ); - // Serialize object item. - } else { - for ( var name in obj ) { - buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); - } + for ( var name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); } } else { @@ -7095,13 +7570,12 @@ jQuery.ajaxSetup({ // Detect, normalize options and install callbacks for jsonp requests jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { - var dataIsString = ( typeof s.data === "string" ); + var inspectData = s.contentType === "application/x-www-form-urlencoded" && + ( typeof s.data === "string" ); if ( s.dataTypes[ 0 ] === "jsonp" || - originalSettings.jsonpCallback || - originalSettings.jsonp != null || s.jsonp !== false && ( jsre.test( s.url ) || - dataIsString && jsre.test( s.data ) ) ) { + inspectData && jsre.test( s.data ) ) ) { var responseContainer, jsonpCallback = s.jsonpCallback = @@ -7109,20 +7583,12 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { previous = window[ jsonpCallback ], url = s.url, data = s.data, - replace = "$1" + jsonpCallback + "$2", - cleanUp = function() { - // Set callback back to previous value - window[ jsonpCallback ] = previous; - // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( previous ) ) { - window[ jsonpCallback ]( responseContainer[ 0 ] ); - } - }; + replace = "$1" + jsonpCallback + "$2"; if ( s.jsonp !== false ) { url = url.replace( jsre, replace ); if ( s.url === url ) { - if ( dataIsString ) { + if ( inspectData ) { data = data.replace( jsre, replace ); } if ( s.data === data ) { @@ -7140,8 +7606,15 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { responseContainer = [ response ]; }; - // Install cleanUp function - jqXHR.then( cleanUp, cleanUp ); + // Clean-up function + jqXHR.always(function() { + // Set callback back to previous value + window[ jsonpCallback ] = previous; + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( previous ) ) { + window[ jsonpCallback ]( responseContainer[ 0 ] ); + } + }); // Use data converter to retrieve json after script execution s.converters["script json"] = function() { @@ -7157,7 +7630,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { // Delegate to script return "script"; } -} ); +}); @@ -7187,7 +7660,7 @@ jQuery.ajaxPrefilter( "script", function( s ) { s.type = "GET"; s.global = false; } -} ); +}); // Bind script tag hack transport jQuery.ajaxTransport( "script", function(s) { @@ -7215,7 +7688,7 @@ jQuery.ajaxTransport( "script", function(s) { // Attach handlers for all browsers script.onload = script.onreadystatechange = function( _, isAbort ) { - if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) { + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { // Handle memory leak in IE script.onload = script.onreadystatechange = null; @@ -7246,27 +7719,20 @@ jQuery.ajaxTransport( "script", function(s) { } }; } -} ); - - +}); -var // #5280: next active xhr id and list of active xhrs' callbacks - xhrId = jQuery.now(), - xhrCallbacks, - // XHR used to determine supports properties - testXHR; -// #5280: Internet Explorer will keep connections alive if we don't abort on unload -function xhrOnUnloadAbort() { - jQuery( window ).unload(function() { +var // #5280: Internet Explorer will keep connections alive if we don't abort on unload + xhrOnUnloadAbort = window.ActiveXObject ? function() { // Abort all pending requests for ( var key in xhrCallbacks ) { xhrCallbacks[ key ]( 0, 1 ); } - }); -} + } : false, + xhrId = 0, + xhrCallbacks; // Functions to create xhrs function createStandardXHR() { @@ -7296,15 +7762,13 @@ jQuery.ajaxSettings.xhr = window.ActiveXObject ? // For all other browsers, use the standard XMLHttpRequest object createStandardXHR; -// Test if we can create an xhr object -testXHR = jQuery.ajaxSettings.xhr(); -jQuery.support.ajax = !!testXHR; - -// Does this browser support crossDomain XHR requests -jQuery.support.cors = testXHR && ( "withCredentials" in testXHR ); - -// No need for the temporary xhr anymore -testXHR = undefined; +// Determine support properties +(function( xhr ) { + jQuery.extend( jQuery.support, { + ajax: !!xhr, + cors: !!xhr && ( "withCredentials" in xhr ) + }); +})( jQuery.ajaxSettings.xhr() ); // Create transport if the browser can provide an xhr if ( jQuery.support.ajax ) { @@ -7387,7 +7851,9 @@ if ( jQuery.support.ajax ) { // Do not keep as active anymore if ( handle ) { xhr.onreadystatechange = jQuery.noop; - delete xhrCallbacks[ handle ]; + if ( xhrOnUnloadAbort ) { + delete xhrCallbacks[ handle ]; + } } // If it's an abort @@ -7448,15 +7914,18 @@ if ( jQuery.support.ajax ) { if ( !s.async || xhr.readyState === 4 ) { callback(); } else { - // Create the active xhrs callbacks list if needed - // and attach the unload handler - if ( !xhrCallbacks ) { - xhrCallbacks = {}; - xhrOnUnloadAbort(); + handle = ++xhrId; + if ( xhrOnUnloadAbort ) { + // Create the active xhrs callbacks list if needed + // and attach the unload handler + if ( !xhrCallbacks ) { + xhrCallbacks = {}; + jQuery( window ).unload( xhrOnUnloadAbort ); + } + // Add to list of active xhrs callbacks + xhrCallbacks[ handle ] = callback; } - // Add to list of active xhrs callbacks - handle = xhrId++; - xhr.onreadystatechange = xhrCallbacks[ handle ] = callback; + xhr.onreadystatechange = callback; } }, @@ -7474,6 +7943,7 @@ if ( jQuery.support.ajax ) { var elemdisplay = {}, + iframe, iframeDoc, rfxtypes = /^(?:toggle|show|hide)$/, rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, timerId, @@ -7484,7 +7954,11 @@ var elemdisplay = {}, [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], // opacity animations [ "opacity" ] - ]; + ], + fxNow, + requestAnimationFrame = window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame; jQuery.fn.extend({ show: function( speed, easing, callback ) { @@ -7496,19 +7970,22 @@ jQuery.fn.extend({ } else { for ( var i = 0, j = this.length; i < j; i++ ) { elem = this[i]; - display = elem.style.display; - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { - display = elem.style.display = ""; - } + if ( elem.style ) { + display = elem.style.display; + + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { + display = elem.style.display = ""; + } - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { - jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { + jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + } } } @@ -7516,10 +7993,13 @@ jQuery.fn.extend({ // to avoid the constant reflow for ( i = 0; i < j; i++ ) { elem = this[i]; - display = elem.style.display; - if ( display === "" || display === "none" ) { - elem.style.display = jQuery._data(elem, "olddisplay") || ""; + if ( elem.style ) { + display = elem.style.display; + + if ( display === "" || display === "none" ) { + elem.style.display = jQuery._data(elem, "olddisplay") || ""; + } } } @@ -7533,17 +8013,21 @@ jQuery.fn.extend({ } else { for ( var i = 0, j = this.length; i < j; i++ ) { - var display = jQuery.css( this[i], "display" ); + if ( this[i].style ) { + var display = jQuery.css( this[i], "display" ); - if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { - jQuery._data( this[i], "olddisplay", display ); + if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { + jQuery._data( this[i], "olddisplay", display ); + } } } // Set the display of the elements in a second loop // to avoid the constant reflow for ( i = 0; i < j; i++ ) { - this[i].style.display = "none"; + if ( this[i].style ) { + this[i].style.display = "none"; + } } return this; @@ -7581,32 +8065,54 @@ jQuery.fn.extend({ var optall = jQuery.speed(speed, easing, callback); if ( jQuery.isEmptyObject( prop ) ) { - return this.each( optall.complete ); + return this.each( optall.complete, [ false ] ); } + // Do not change referenced properties as per-property easing will be lost + prop = jQuery.extend( {}, prop ); + return this[ optall.queue === false ? "each" : "queue" ](function() { // XXX 'this' does not always have a nodeName when running the // test suite - var opt = jQuery.extend({}, optall), p, + if ( optall.queue === false ) { + jQuery._mark( this ); + } + + var opt = jQuery.extend( {}, optall ), isElement = this.nodeType === 1, hidden = isElement && jQuery(this).is(":hidden"), - self = this; + name, val, p, + display, e, + parts, start, end, unit; + + // will store per property easing and be used to determine when an animation is complete + opt.animatedProperties = {}; for ( p in prop ) { - var name = jQuery.camelCase( p ); + // property name normalization + name = jQuery.camelCase( p ); if ( p !== name ) { prop[ name ] = prop[ p ]; delete prop[ p ]; - p = name; } - if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) { - return opt.complete.call(this); + val = prop[ name ]; + + // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) + if ( jQuery.isArray( val ) ) { + opt.animatedProperties[ name ] = val[ 1 ]; + val = prop[ name ] = val[ 0 ]; + } else { + opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; + } + + if ( val === "hide" && hidden || val === "show" && !hidden ) { + return opt.complete.call( this ); } - if ( isElement && ( p === "height" || p === "width" ) ) { + if ( isElement && ( name === "height" || name === "width" ) ) { // Make sure that nothing sneaks out // Record all 3 overflow attributes because IE does not // change the overflow attribute when overflowX and @@ -7622,7 +8128,7 @@ jQuery.fn.extend({ this.style.display = "inline-block"; } else { - var display = defaultDisplay(this.nodeName); + display = defaultDisplay( this.nodeName ); // inline-level elements accept inline-block; // block-level elements need to be inline with layout @@ -7636,44 +8142,37 @@ jQuery.fn.extend({ } } } - - if ( jQuery.isArray( prop[p] ) ) { - // Create (if needed) and add to specialEasing - (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1]; - prop[p] = prop[p][0]; - } } if ( opt.overflow != null ) { this.style.overflow = "hidden"; } - opt.curAnim = jQuery.extend({}, prop); - - jQuery.each( prop, function( name, val ) { - var e = new jQuery.fx( self, opt, name ); + for ( p in prop ) { + e = new jQuery.fx( this, opt, p ); + val = prop[ p ]; if ( rfxtypes.test(val) ) { - e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop ); + e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); } else { - var parts = rfxnum.exec(val), - start = e.cur(); + parts = rfxnum.exec( val ); + start = e.cur(); if ( parts ) { - var end = parseFloat( parts[2] ), - unit = parts[3] || ( jQuery.cssNumber[ name ] ? "" : "px" ); + end = parseFloat( parts[2] ); + unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); // We need to compute starting value if ( unit !== "px" ) { - jQuery.style( self, name, (end || 1) + unit); + jQuery.style( this, p, (end || 1) + unit); start = ((end || 1) / e.cur()) * start; - jQuery.style( self, name, start + unit); + jQuery.style( this, p, start + unit); } // If a +=/-= token was provided, we're doing a relative animation if ( parts[1] ) { - end = ((parts[1] === "-=" ? -1 : 1) * end) + start; + end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; } e.custom( start, end, unit ); @@ -7682,7 +8181,7 @@ jQuery.fn.extend({ e.custom( start, val, "" ); } } - }); + } // For JS strict compliance return true; @@ -7690,15 +8189,18 @@ jQuery.fn.extend({ }, stop: function( clearQueue, gotoEnd ) { - var timers = jQuery.timers; - if ( clearQueue ) { this.queue([]); } this.each(function() { - // go in reverse order so anything added to the queue during the loop is ignored - for ( var i = timers.length - 1; i >= 0; i-- ) { + var timers = jQuery.timers, + i = timers.length; + // clear marker counters if we know they won't be + if ( !gotoEnd ) { + jQuery._unmark( true, this ); + } + while ( i-- ) { if ( timers[i].elem === this ) { if (gotoEnd) { // force the next step to be the last @@ -7720,6 +8222,17 @@ jQuery.fn.extend({ }); +// Animations created synchronously will run synchronously +function createFxNow() { + setTimeout( clearFxNow, 0 ); + return ( fxNow = jQuery.now() ); +} + +function clearFxNow() { + fxNow = undefined; +} + +// Generate parameters to create a standard animation function genFx( type, num ) { var obj = {}; @@ -7758,10 +8271,13 @@ jQuery.extend({ // Queueing opt.old = opt.complete; - opt.complete = function() { + opt.complete = function( noUnmark ) { if ( opt.queue !== false ) { - jQuery(this).dequeue(); + jQuery.dequeue( this ); + } else if ( noUnmark !== false ) { + jQuery._unmark( this ); } + if ( jQuery.isFunction( opt.old ) ) { opt.old.call( this ); } @@ -7786,9 +8302,7 @@ jQuery.extend({ this.elem = elem; this.prop = prop; - if ( !options.orig ) { - options.orig = {}; - } + options.orig = options.orig || {}; } }); @@ -7820,9 +8334,10 @@ jQuery.fx.prototype = { // Start an animation from one number to another custom: function( from, to, unit ) { var self = this, - fx = jQuery.fx; + fx = jQuery.fx, + raf; - this.startTime = jQuery.now(); + this.startTime = fxNow || createFxNow(); this.start = from; this.end = to; this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" ); @@ -7836,7 +8351,20 @@ jQuery.fx.prototype = { t.elem = this.elem; if ( t() && jQuery.timers.push(t) && !timerId ) { - timerId = setInterval(fx.tick, fx.interval); + // Use requestAnimationFrame instead of setInterval if available + if ( requestAnimationFrame ) { + timerId = 1; + raf = function() { + // When timerId gets set to null at any point, this stops + if ( timerId ) { + requestAnimationFrame( raf ); + fx.tick(); + } + }; + requestAnimationFrame( raf ); + } else { + timerId = setInterval( fx.tick, fx.interval ); + } } }, @@ -7867,60 +8395,64 @@ jQuery.fx.prototype = { // Each step of an animation step: function( gotoEnd ) { - var t = jQuery.now(), done = true; + var t = fxNow || createFxNow(), + done = true, + elem = this.elem, + options = this.options, + i, n; - if ( gotoEnd || t >= this.options.duration + this.startTime ) { + if ( gotoEnd || t >= options.duration + this.startTime ) { this.now = this.end; this.pos = this.state = 1; this.update(); - this.options.curAnim[ this.prop ] = true; + options.animatedProperties[ this.prop ] = true; - for ( var i in this.options.curAnim ) { - if ( this.options.curAnim[i] !== true ) { + for ( i in options.animatedProperties ) { + if ( options.animatedProperties[i] !== true ) { done = false; } } if ( done ) { // Reset the overflow - if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) { - var elem = this.elem, - options = this.options; + if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) { jQuery.each( [ "", "X", "Y" ], function (index, value) { elem.style[ "overflow" + value ] = options.overflow[index]; - } ); + }); } // Hide the element if the "hide" operation was done - if ( this.options.hide ) { - jQuery(this.elem).hide(); + if ( options.hide ) { + jQuery(elem).hide(); } // Reset the properties, if the item has been hidden or shown - if ( this.options.hide || this.options.show ) { - for ( var p in this.options.curAnim ) { - jQuery.style( this.elem, p, this.options.orig[p] ); + if ( options.hide || options.show ) { + for ( var p in options.animatedProperties ) { + jQuery.style( elem, p, options.orig[p] ); } } // Execute the complete function - this.options.complete.call( this.elem ); + options.complete.call( elem ); } return false; } else { - var n = t - this.startTime; - this.state = n / this.options.duration; - - // Perform the easing function, defaults to swing - var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop]; - var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear"); - this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration); - this.now = this.start + ((this.end - this.start) * this.pos); + // classical easing cannot be used with an Infinity duration + if ( options.duration == Infinity ) { + this.now = t; + } else { + n = t - this.startTime; + this.state = n / options.duration; + // Perform the easing function, defaults to swing + this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration ); + this.now = this.start + ((this.end - this.start) * this.pos); + } // Perform the next step of the animation this.update(); } @@ -7931,9 +8463,7 @@ jQuery.fx.prototype = { jQuery.extend( jQuery.fx, { tick: function() { - var timers = jQuery.timers; - - for ( var i = 0; i < timers.length; i++ ) { + for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) { if ( !timers[i]() ) { timers.splice(i--, 1); } @@ -7981,17 +8511,45 @@ if ( jQuery.expr && jQuery.expr.filters ) { }; } +// Try to restore the default display value of an element function defaultDisplay( nodeName ) { + if ( !elemdisplay[ nodeName ] ) { - var elem = jQuery("<" + nodeName + ">").appendTo("body"), - display = elem.css("display"); + + var elem = jQuery( "<" + nodeName + ">" ).appendTo( "body" ), + display = elem.css( "display" ); elem.remove(); + // If the simple way fails, + // get element's real default display by attaching it to a temp iframe if ( display === "none" || display === "" ) { - display = "block"; + // No iframe to use yet, so create it + if ( !iframe ) { + iframe = document.createElement( "iframe" ); + iframe.frameBorder = iframe.width = iframe.height = 0; + } + + document.body.appendChild( iframe ); + + // Create a cacheable copy of the iframe document on first call. + // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake html + // document to it, Webkit & Firefox won't allow reusing the iframe document + if ( !iframeDoc || !iframe.createElement ) { + iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; + iframeDoc.write( "" ); + } + + elem = iframeDoc.createElement( nodeName ); + + iframeDoc.body.appendChild( elem ); + + display = jQuery.css( elem, "display" ); + + document.body.removeChild( iframe ); } + // Store the correct default display elemdisplay[ nodeName ] = display; } @@ -8181,17 +8739,19 @@ jQuery.offset = { curOffset = curElem.offset(), curCSSTop = jQuery.css( elem, "top" ), curCSSLeft = jQuery.css( elem, "left" ), - calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1, + calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, props = {}, curPosition = {}, curTop, curLeft; // need to be able to calculate position if either top or left is auto and position is either absolute or fixed if ( calculatePosition ) { curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; } - curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0; - curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0; - if ( jQuery.isFunction( options ) ) { options = options.call( elem, i, curOffset ); } @@ -8260,29 +8820,16 @@ jQuery.fn.extend({ jQuery.each( ["Left", "Top"], function( i, name ) { var method = "scroll" + name; - jQuery.fn[ method ] = function(val) { - var elem = this[0], win; - - if ( !elem ) { - return null; - } + jQuery.fn[ method ] = function( val ) { + var elem, win; - if ( val !== undefined ) { - // Set the scroll offset - return this.each(function() { - win = getWindow( this ); + if ( val === undefined ) { + elem = this[ 0 ]; - if ( win ) { - win.scrollTo( - !i ? val : jQuery(win).scrollLeft(), - i ? val : jQuery(win).scrollTop() - ); + if ( !elem ) { + return null; + } - } else { - this[ method ] = val; - } - }); - } else { win = getWindow( elem ); // Return the scroll offset @@ -8291,6 +8838,21 @@ jQuery.each( ["Left", "Top"], function( i, name ) { win.document.body[ method ] : elem[ method ]; } + + // Set the scroll offset + return this.each(function() { + win = getWindow( this ); + + if ( win ) { + win.scrollTo( + !i ? val : jQuery( win ).scrollLeft(), + i ? val : jQuery( win ).scrollTop() + ); + + } else { + this[ method ] = val; + } + }); }; }); diff --git a/NzbDrone.Web/Scripts/jquery-1.6.1.min.js b/NzbDrone.Web/Scripts/jquery-1.6.1.min.js new file mode 100644 index 000000000..b2ac1747f --- /dev/null +++ b/NzbDrone.Web/Scripts/jquery-1.6.1.min.js @@ -0,0 +1,18 @@ +/*! + * jQuery JavaScript Library v1.6.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu May 12 15:04:36 2011 -0400 + */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem +)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/NzbDrone.Web/packages.config b/NzbDrone.Web/packages.config index 95e02c9f5..bd4c3b3b6 100644 --- a/NzbDrone.Web/packages.config +++ b/NzbDrone.Web/packages.config @@ -1,12 +1,12 @@  - - - - + + + + \ No newline at end of file diff --git a/NzbDrone.sln b/NzbDrone.sln index 2413f6864..bdc2469f6 100644 --- a/NzbDrone.sln +++ b/NzbDrone.sln @@ -131,4 +131,7 @@ Global {5270F048-E580-486C-B14C-E5B9F6E539D4} = {CE083327-EB44-44F2-ACC7-A0A0ECB8B87D} {D58C68E4-D789-40F7-9078-C9F587D4363C} = {CE083327-EB44-44F2-ACC7-A0A0ECB8B87D} EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35 + EndGlobalSection EndGlobal diff --git a/packages/CommonServiceLocator.1.0/CommonServiceLocator.1.0.nupkg b/packages/CommonServiceLocator.1.0/CommonServiceLocator.1.0.nupkg new file mode 100644 index 000000000..a81045f04 Binary files /dev/null and b/packages/CommonServiceLocator.1.0/CommonServiceLocator.1.0.nupkg differ diff --git a/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.XML b/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.XML new file mode 100644 index 000000000..6c6f2fe62 --- /dev/null +++ b/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.XML @@ -0,0 +1,280 @@ + + + + Microsoft.Practices.ServiceLocation + + + + + The standard exception thrown when a ServiceLocator has an error in resolving an object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + + The message that describes the error. + + + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + + + The error message that explains the reason for the exception. + + + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class with serialized data. + + + The that holds the serialized object data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + The parameter is null. + + + The class name is null or is zero (0). + + + + + The generic Service Locator interface. This interface is used + to retrieve services (instances identified by type and optional + name) from a container. + + + + + Get an instance of the given . + + Type of object requested. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + Get an instance of the given . + + Type of object requested. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Activation error occured while trying to get all instances of type {0}. + + + + + Looks up a localized string similar to Activation error occured while trying to get instance of type {0}, key "{1}". + + + + + This class provides the ambient container for this application. If your + framework defines such an ambient container, use ServiceLocator.Current + to get it. + + + + + Set the delegate that is used to retrieve the current container. + + Delegate that, when called, will return + the current ambient container. + + + + The current ambient container. + + + + + This class is a helper that provides a default implementation + for most of the methods of . + + + + + Implementation of . + + The requested service. + if there is an error in resolving the service instance. + The requested object. + + + + Get an instance of the given . + + Type of object requested. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + Get an instance of the given . + + Type of object requested. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + When implemented by inheriting classes, this method will do the actual work of resolving + the requested service instance. + + Type of instance requested. + Name of registered service you want. May be null. + The requested service instance. + + + + When implemented by inheriting classes, this method will do the actual work of + resolving all the requested service instances. + + Type of service requested. + Sequence of service instance objects. + + + + Format the exception message for use in an + that occurs while resolving a single service. + + The actual exception thrown by the implementation. + Type of service requested. + Name requested. + The formatted exception message string. + + + + Format the exception message for use in an + that occurs while resolving multiple service instances. + + The actual exception thrown by the implementation. + Type of service requested. + The formatted exception message string. + + + + This delegate type is used to provide a method that will + return the current container. Used with the + static accessor class. + + An . + + + diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll b/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.dll similarity index 100% rename from packages/Unity.2.0/lib/20/Microsoft.Practices.ServiceLocation.dll rename to packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.dll diff --git a/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.pdb b/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.pdb new file mode 100644 index 000000000..0df5fe3fb Binary files /dev/null and b/packages/CommonServiceLocator.1.0/lib/NET35/Microsoft.Practices.ServiceLocation.pdb differ diff --git a/packages/CommonServiceLocator.1.0/lib/SL30/Microsoft.Practices.ServiceLocation.XML b/packages/CommonServiceLocator.1.0/lib/SL30/Microsoft.Practices.ServiceLocation.XML new file mode 100644 index 000000000..6c6f2fe62 --- /dev/null +++ b/packages/CommonServiceLocator.1.0/lib/SL30/Microsoft.Practices.ServiceLocation.XML @@ -0,0 +1,280 @@ + + + + Microsoft.Practices.ServiceLocation + + + + + The standard exception thrown when a ServiceLocator has an error in resolving an object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + + The message that describes the error. + + + + + Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. + + + The error message that explains the reason for the exception. + + + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + + Initializes a new instance of the class with serialized data. + + + The that holds the serialized object data about the exception being thrown. + + + The that contains contextual information about the source or destination. + + + The parameter is null. + + + The class name is null or is zero (0). + + + + + The generic Service Locator interface. This interface is used + to retrieve services (instances identified by type and optional + name) from a container. + + + + + Get an instance of the given . + + Type of object requested. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + Get an instance of the given . + + Type of object requested. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Activation error occured while trying to get all instances of type {0}. + + + + + Looks up a localized string similar to Activation error occured while trying to get instance of type {0}, key "{1}". + + + + + This class provides the ambient container for this application. If your + framework defines such an ambient container, use ServiceLocator.Current + to get it. + + + + + Set the delegate that is used to retrieve the current container. + + Delegate that, when called, will return + the current ambient container. + + + + The current ambient container. + + + + + This class is a helper that provides a default implementation + for most of the methods of . + + + + + Implementation of . + + The requested service. + if there is an error in resolving the service instance. + The requested object. + + + + Get an instance of the given . + + Type of object requested. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is an error resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + Get an instance of the given . + + Type of object requested. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get an instance of the given named . + + Type of object requested. + Name the object was registered with. + if there is are errors resolving + the service instance. + The requested service instance. + + + + Get all instances of the given currently + registered in the container. + + Type of object requested. + if there is are errors resolving + the service instance. + A sequence of instances of the requested . + + + + When implemented by inheriting classes, this method will do the actual work of resolving + the requested service instance. + + Type of instance requested. + Name of registered service you want. May be null. + The requested service instance. + + + + When implemented by inheriting classes, this method will do the actual work of + resolving all the requested service instances. + + Type of service requested. + Sequence of service instance objects. + + + + Format the exception message for use in an + that occurs while resolving a single service. + + The actual exception thrown by the implementation. + Type of service requested. + Name requested. + The formatted exception message string. + + + + Format the exception message for use in an + that occurs while resolving multiple service instances. + + The actual exception thrown by the implementation. + Type of service requested. + The formatted exception message string. + + + + This delegate type is used to provide a method that will + return the current container. Used with the + static accessor class. + + An . + + + diff --git a/packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll b/packages/CommonServiceLocator.1.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll similarity index 100% rename from packages/Unity.2.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll rename to packages/CommonServiceLocator.1.0/lib/SL30/Microsoft.Practices.ServiceLocation.dll diff --git a/packages/Ninject.2.2.1.0/Ninject.2.2.1.0.nupkg b/packages/Ninject.2.2.1.0/Ninject.2.2.1.0.nupkg deleted file mode 100644 index 1cdf30c66..000000000 Binary files a/packages/Ninject.2.2.1.0/Ninject.2.2.1.0.nupkg and /dev/null differ diff --git a/packages/Ninject.2.2.1.4/Ninject.2.2.1.4.nupkg b/packages/Ninject.2.2.1.4/Ninject.2.2.1.4.nupkg new file mode 100644 index 000000000..8e06be52e Binary files /dev/null and b/packages/Ninject.2.2.1.4/Ninject.2.2.1.4.nupkg differ diff --git a/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.dll b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.dll new file mode 100644 index 000000000..c12e773c1 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.pdb new file mode 100644 index 000000000..72099f6d1 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.xml b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.xml new file mode 100644 index 000000000..59289bfb1 --- /dev/null +++ b/packages/Ninject.2.2.1.4/lib/net35-Client/Ninject.xml @@ -0,0 +1,4646 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Stores the objects that were activated + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Stores the objects that were activated + + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + An object that is prunealble. + + + + + Removes instances from the cache which should no longer be re-used. + + + + + The objects that were activated as reference equal weak references. + + + + + The objects that were activated as reference equal weak references. + + + + + Initializes a new instance of the class. + + The cache pruner. + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + Prunes this instance. + + + + + Removes all dead objects. + + The objects collection to be freed of dead objects. + + + + Gets the activated object count. + + The activated object count. + + + + Gets the deactivated object count. + + The deactivated object count. + + + + Tracks instances for re-use in certain scopes. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Contains all cached instances. + This is a dictionary of scopes to a multimap for bindings to cache entries. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets all entries for a binding withing the selected scope. + + The bindings. + All bindings of a binding. + + + + Gets all cache entries. + + Returns all cache entries. + + + + Forgets the specified cache entries. + + The cache entries. + + + + Forgets the specified entry. + + The entry. + + + + Gets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + An entry in the cache. + + + + + Initializes a new instance of the class. + + The context. + The instance reference. + + + + Gets the context of the instance. + + The context. + + + + Gets the instance reference. + + The instance reference. + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + The caches that are being pruned. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified pruneable based on the rules of the pruner. + + The pruneable that will be pruned. + + + + Stops pruning. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Adds all activated instances to the activation cache. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The activation cache. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Gets or sets the settings. + + The ninject settings. + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + The activation cache. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Provides meaningful exception messages. + + + + + Generates a message saying that modules without names are not supported. + + The exception message. + + + + Generates a message saying that a module with the same name is already loaded. + + The new module. + The existing module. + The exception message. + + + + Generates a message saying that no module has been loaded with the specified name. + + The module name. + The exception message. + + + + Generates a message saying that the binding could not be uniquely resolved. + + The request. + The exception message. + + + + Generates a message saying that the binding could not be resolved on the specified request. + + The request. + The exception message. + + + + Generates a message saying that the specified context has cyclic dependencies. + + The context. + The exception message. + + + + Generates a message saying that an invalid attribute type is used in the binding condition. + + The binding. + Name of the method. + The type. + The exception message. + + + + Generates a message saying that no constructors are available on the specified context. + + The context. + The exception message. + + + + Generates a message saying that no constructors are available for the given component. + + The component. + The implementation. + The exception message. + + + + Generates a message saying that the specified component is not registered. + + The component. + The exception message. + + + + Generates a message saying that the specified property could not be resolved on the specified request. + + The request. + The property name. + The exception message. + + + + Generates a message saying that the provider on the specified context returned null. + + The context. + The exception message. + + + + Provides extension methods for string formatting + + + + + Formats the activation path into a meaningful string representation. + + The request to be formatted. + The activation path formatted as string. + + + + Formats the given binding into a meaningful string representation. + + The binding to be formatted. + The context. + The binding formatted as string + + + + Formats the specified request into a meaningful string representation. + + The request to be formatted. + The request formatted as string. + + + + Formats the specified target into a meaningful string representation.. + + The target to be formatted. + The target formatted as string. + + + + Formats the specified type into a meaningful string representation.. + + The type to be formatted. + The type formatted as string. + + + + Extensions for MemberInfo + + + + + Determines whether the specified member has attribute. + + The type of the attribute. + The member. + + true if the specified member has attribute; otherwise, false. + + + + + Determines whether the specified member has attribute. + + The member. + The type of the attribute. + + true if the specified member has attribute; otherwise, false. + + + + + Gets the property info from its declared tpe. + + The member info. + The property definition. + The flags. + The property info from the declared type of the property. + + + + Determines whether the specified property info is private. + + The property info. + + true if the specified property info is private; otherwise, false. + + + + + Gets the custom attributes. + This version is able to get custom attributes for properties from base types even if the property is none public. + + The member. + Type of the attribute. + if set to true [inherited]. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Weak reference that can be used in collections. It is equal to the + object it references and has the same hash code. + + + + + Initializes a new instance of the class. + + The target. + + + + Initializes a new instance of the class. + + The target. + if set to true [track resurrection]. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets a value indicating whether this instance is alive. + + true if this instance is alive; otherwise, false. + + + + Gets or sets the target of this weak reference. + + The targe of this weak reference. + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains logic about which bindings to use for a given service request + when other attempts have failed. + + + + + Returns any bindings from the specified collection that match the specified request. + + The multimap of all registered bindings. + The request in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Provides a root for the fluent syntax associated with an . + + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Gets the value that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + The value that is to be injected. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + true if null is allowed as injected value otherwise false. + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Lock used when adding missing bindings. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Returns an IComparer that is used to determine resolution precedence. + + An IComparer that is used to determine resolution precedence. + + + + Returns a predicate that can determine if a given IBinding matches the request. + + The request/ + A predicate that can determine if a given IBinding matches the request. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Attempts to handle a missing binding for a request. + + The request. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + + true if null is allowed as injected value otherwise false. + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/packages/Ninject.2.2.1.0/lib/.NetFramework 3.5/Ninject.dll b/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.dll similarity index 98% rename from packages/Ninject.2.2.1.0/lib/.NetFramework 3.5/Ninject.dll rename to packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.dll index 1a3daf8bf..7264dc255 100644 Binary files a/packages/Ninject.2.2.1.0/lib/.NetFramework 3.5/Ninject.dll and b/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.pdb new file mode 100644 index 000000000..abf91116e Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.0/lib/.NetFramework 3.5/Ninject.xml b/packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.xml similarity index 100% rename from packages/Ninject.2.2.1.0/lib/.NetFramework 3.5/Ninject.xml rename to packages/Ninject.2.2.1.4/lib/net35-Full/Ninject.xml diff --git a/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.dll b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.dll new file mode 100644 index 000000000..083528ccb Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.pdb new file mode 100644 index 000000000..46d08cc59 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.xml b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.xml new file mode 100644 index 000000000..2a7ad161f --- /dev/null +++ b/packages/Ninject.2.2.1.4/lib/net40-Client/Ninject.xml @@ -0,0 +1,4641 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Stores the objects that were activated + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Stores the objects that were activated + + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + An object that is prunealble. + + + + + Removes instances from the cache which should no longer be re-used. + + + + + The objects that were activated as reference equal weak references. + + + + + The objects that were activated as reference equal weak references. + + + + + Initializes a new instance of the class. + + The cache pruner. + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + Prunes this instance. + + + + + Removes all dead objects. + + The objects collection to be freed of dead objects. + + + + Gets the activated object count. + + The activated object count. + + + + Gets the deactivated object count. + + The deactivated object count. + + + + Tracks instances for re-use in certain scopes. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Contains all cached instances. + This is a dictionary of scopes to a multimap for bindings to cache entries. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets all entries for a binding withing the selected scope. + + The bindings. + All bindings of a binding. + + + + Gets all cache entries. + + Returns all cache entries. + + + + Forgets the specified cache entries. + + The cache entries. + + + + Forgets the specified entry. + + The entry. + + + + Gets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + An entry in the cache. + + + + + Initializes a new instance of the class. + + The context. + The instance reference. + + + + Gets the context of the instance. + + The context. + + + + Gets the instance reference. + + The instance reference. + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + The caches that are being pruned. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified pruneable based on the rules of the pruner. + + The pruneable that will be pruned. + + + + Stops pruning. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Adds all activated instances to the activation cache. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The activation cache. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Gets or sets the settings. + + The ninject settings. + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + The activation cache. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Provides meaningful exception messages. + + + + + Generates a message saying that modules without names are not supported. + + The exception message. + + + + Generates a message saying that a module with the same name is already loaded. + + The new module. + The existing module. + The exception message. + + + + Generates a message saying that no module has been loaded with the specified name. + + The module name. + The exception message. + + + + Generates a message saying that the binding could not be uniquely resolved. + + The request. + The exception message. + + + + Generates a message saying that the binding could not be resolved on the specified request. + + The request. + The exception message. + + + + Generates a message saying that the specified context has cyclic dependencies. + + The context. + The exception message. + + + + Generates a message saying that an invalid attribute type is used in the binding condition. + + The binding. + Name of the method. + The type. + The exception message. + + + + Generates a message saying that no constructors are available on the specified context. + + The context. + The exception message. + + + + Generates a message saying that no constructors are available for the given component. + + The component. + The implementation. + The exception message. + + + + Generates a message saying that the specified component is not registered. + + The component. + The exception message. + + + + Generates a message saying that the specified property could not be resolved on the specified request. + + The request. + The property name. + The exception message. + + + + Generates a message saying that the provider on the specified context returned null. + + The context. + The exception message. + + + + Provides extension methods for string formatting + + + + + Formats the activation path into a meaningful string representation. + + The request to be formatted. + The activation path formatted as string. + + + + Formats the given binding into a meaningful string representation. + + The binding to be formatted. + The context. + The binding formatted as string + + + + Formats the specified request into a meaningful string representation. + + The request to be formatted. + The request formatted as string. + + + + Formats the specified target into a meaningful string representation.. + + The target to be formatted. + The target formatted as string. + + + + Formats the specified type into a meaningful string representation.. + + The type to be formatted. + The type formatted as string. + + + + Extensions for MemberInfo + + + + + Determines whether the specified member has attribute. + + The type of the attribute. + The member. + + true if the specified member has attribute; otherwise, false. + + + + + Determines whether the specified member has attribute. + + The member. + The type of the attribute. + + true if the specified member has attribute; otherwise, false. + + + + + Gets the property info from its declared tpe. + + The member info. + The property definition. + The flags. + The property info from the declared type of the property. + + + + Determines whether the specified property info is private. + + The property info. + + true if the specified property info is private; otherwise, false. + + + + + Gets the custom attributes. + This version is able to get custom attributes for properties from base types even if the property is none public. + + The member. + Type of the attribute. + if set to true [inherited]. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Weak reference that can be used in collections. It is equal to the + object it references and has the same hash code. + + + + + Initializes a new instance of the class. + + The target. + + + + Initializes a new instance of the class. + + The target. + if set to true [track resurrection]. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets a value indicating whether this instance is alive. + + true if this instance is alive; otherwise, false. + + + + Gets or sets the target of this weak reference. + + The targe of this weak reference. + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains logic about which bindings to use for a given service request + when other attempts have failed. + + + + + Returns any bindings from the specified collection that match the specified request. + + The multimap of all registered bindings. + The request in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Gets the value that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + The value that is to be injected. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + true if null is allowed as injected value otherwise false. + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Lock used when adding missing bindings. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Returns an IComparer that is used to determine resolution precedence. + + An IComparer that is used to determine resolution precedence. + + + + Returns a predicate that can determine if a given IBinding matches the request. + + The request/ + A predicate that can determine if a given IBinding matches the request. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Attempts to handle a missing binding for a request. + + The request. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + + true if null is allowed as injected value otherwise false. + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.dll b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.dll new file mode 100644 index 000000000..147bac0d3 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.pdb new file mode 100644 index 000000000..688f7f44b Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.xml b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.xml new file mode 100644 index 000000000..338b1a58b --- /dev/null +++ b/packages/Ninject.2.2.1.4/lib/net40-Full/Ninject.xml @@ -0,0 +1,4686 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Stores the objects that were activated + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Stores the objects that were activated + + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + An object that is prunealble. + + + + + Removes instances from the cache which should no longer be re-used. + + + + + The objects that were activated as reference equal weak references. + + + + + The objects that were activated as reference equal weak references. + + + + + Initializes a new instance of the class. + + The cache pruner. + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + Prunes this instance. + + + + + Removes all dead objects. + + The objects collection to be freed of dead objects. + + + + Gets the activated object count. + + The activated object count. + + + + Gets the deactivated object count. + + The deactivated object count. + + + + Tracks instances for re-use in certain scopes. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Contains all cached instances. + This is a dictionary of scopes to a multimap for bindings to cache entries. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets all entries for a binding withing the selected scope. + + The bindings. + All bindings of a binding. + + + + Gets all cache entries. + + Returns all cache entries. + + + + Forgets the specified cache entries. + + The cache entries. + + + + Forgets the specified entry. + + The entry. + + + + Gets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + An entry in the cache. + + + + + Initializes a new instance of the class. + + The context. + The instance reference. + + + + Gets the context of the instance. + + The context. + + + + Gets the instance reference. + + The instance reference. + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + The caches that are being pruned. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified pruneable based on the rules of the pruner. + + The pruneable that will be pruned. + + + + Stops pruning. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Adds all activated instances to the activation cache. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The activation cache. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Gets or sets the settings. + + The ninject settings. + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + The activation cache. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Provides meaningful exception messages. + + + + + Generates a message saying that modules without names are not supported. + + The exception message. + + + + Generates a message saying that a module with the same name is already loaded. + + The new module. + The existing module. + The exception message. + + + + Generates a message saying that no module has been loaded with the specified name. + + The module name. + The exception message. + + + + Generates a message saying that the binding could not be uniquely resolved. + + The request. + The exception message. + + + + Generates a message saying that the binding could not be resolved on the specified request. + + The request. + The exception message. + + + + Generates a message saying that the specified context has cyclic dependencies. + + The context. + The exception message. + + + + Generates a message saying that an invalid attribute type is used in the binding condition. + + The binding. + Name of the method. + The type. + The exception message. + + + + Generates a message saying that no constructors are available on the specified context. + + The context. + The exception message. + + + + Generates a message saying that no constructors are available for the given component. + + The component. + The implementation. + The exception message. + + + + Generates a message saying that the specified component is not registered. + + The component. + The exception message. + + + + Generates a message saying that the specified property could not be resolved on the specified request. + + The request. + The property name. + The exception message. + + + + Generates a message saying that the provider on the specified context returned null. + + The context. + The exception message. + + + + Provides extension methods for string formatting + + + + + Formats the activation path into a meaningful string representation. + + The request to be formatted. + The activation path formatted as string. + + + + Formats the given binding into a meaningful string representation. + + The binding to be formatted. + The context. + The binding formatted as string + + + + Formats the specified request into a meaningful string representation. + + The request to be formatted. + The request formatted as string. + + + + Formats the specified target into a meaningful string representation.. + + The target to be formatted. + The target formatted as string. + + + + Formats the specified type into a meaningful string representation.. + + The type to be formatted. + The type formatted as string. + + + + Extensions for MemberInfo + + + + + Determines whether the specified member has attribute. + + The type of the attribute. + The member. + + true if the specified member has attribute; otherwise, false. + + + + + Determines whether the specified member has attribute. + + The member. + The type of the attribute. + + true if the specified member has attribute; otherwise, false. + + + + + Gets the property info from its declared tpe. + + The member info. + The property definition. + The flags. + The property info from the declared type of the property. + + + + Determines whether the specified property info is private. + + The property info. + + true if the specified property info is private; otherwise, false. + + + + + Gets the custom attributes. + This version is able to get custom attributes for properties from base types even if the property is none public. + + The member. + Type of the attribute. + if set to true [inherited]. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Weak reference that can be used in collections. It is equal to the + object it references and has the same hash code. + + + + + Initializes a new instance of the class. + + The target. + + + + Initializes a new instance of the class. + + The target. + if set to true [track resurrection]. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets a value indicating whether this instance is alive. + + true if this instance is alive; otherwise, false. + + + + Gets or sets the target of this weak reference. + + The targe of this weak reference. + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + Gets the callback for request scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors for members via s. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + Loads modules from compiled assemblies. + + + + + Loads modules at runtime by searching external files. + + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets the file extensions that the plugin understands how to load. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads modules from the specified files. + + The names of the files to load modules from. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + Gets the file extensions that the plugin understands how to load. + + + + + Finds modules defined in external files. + + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + Automatically finds and loads modules from assemblies. + + + + + Initializes a new instance of the class. + + The kernel into which modules will be loaded. + + + + Loads any modules found in the files that match the specified patterns. + + The patterns to search. + + + + Gets or sets the kernel into which modules will be loaded. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains logic about which bindings to use for a given service request + when other attempts have failed. + + + + + Returns any bindings from the specified collection that match the specified request. + + The multimap of all registered bindings. + The request in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used within the same + HTTP request. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Gets the value that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + The value that is to be injected. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The kernel. + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The kernel. + The assemblies to search. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + Initializes a new instance of the class. + + The serialized object data. + The serialization context. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + true if null is allowed as injected value otherwise false. + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Lock used when adding missing bindings. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Loads modules from the files that match the specified pattern(s). + + The file patterns (i.e. "*.dll", "modules/*.rb") to match. + + + + Loads modules defined in the specified assemblies. + + The assemblies to search. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Returns an IComparer that is used to determine resolution precedence. + + An IComparer that is used to determine resolution precedence. + + + + Returns a predicate that can determine if a given IBinding matches the request. + + The request/ + A predicate that can determine if a given IBinding matches the request. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Attempts to handle a missing binding for a request. + + The request. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the kernel should automatically load extensions at startup. + + + + + Gets or sets the path that should be searched for extensions. + + + + + Gets a value indicating whether Ninject should use reflection-based injection instead of + the (usually faster) lightweight code generation system. + + + + + Gets a value indicating whether Ninject should inject non public members. + + + + + Gets a value indicating whether Ninject should inject private properties of base classes. + + + Activating this setting has an impact on the performance. It is recomended not + to use this feature and use constructor injection instead. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + + true if null is allowed as injected value otherwise false. + + + + + Provides callbacks to more aggressively collect objects scoped to HTTP requests. + + + + + Initializes the module. + + The whose instances will be managed. + + + + Start managing instances for the specified kernel. + + The kernel. + + + + Stops managing instances for the specified kernel. + + The kernel. + + + + Deactivates instances owned by the current . + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 3.0/Ninject.dll b/packages/Ninject.2.2.1.4/lib/sl2/Ninject.dll similarity index 98% rename from packages/Ninject.2.2.1.0/lib/Silverlight 3.0/Ninject.dll rename to packages/Ninject.2.2.1.4/lib/sl2/Ninject.dll index 3873e6d3d..b976a6ede 100644 Binary files a/packages/Ninject.2.2.1.0/lib/Silverlight 3.0/Ninject.dll and b/packages/Ninject.2.2.1.4/lib/sl2/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/sl2/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/sl2/Ninject.pdb new file mode 100644 index 000000000..7be7cfcb6 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/sl2/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 2.0/Ninject.xml b/packages/Ninject.2.2.1.4/lib/sl2/Ninject.xml similarity index 100% rename from packages/Ninject.2.2.1.0/lib/Silverlight 2.0/Ninject.xml rename to packages/Ninject.2.2.1.4/lib/sl2/Ninject.xml diff --git a/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.dll b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.dll new file mode 100644 index 000000000..ad7cde27a Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.pdb new file mode 100644 index 000000000..1b8d8e1ac Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.xml b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.xml new file mode 100644 index 000000000..37e8563db --- /dev/null +++ b/packages/Ninject.2.2.1.4/lib/sl3-wp/Ninject.xml @@ -0,0 +1,4439 @@ + + + + Ninject + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + An object that notifies when it is disposed. + + + + + An object that can report whether or not it is disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases resources held by the object. + + + + + Releases resources before the object is reclaimed by garbage collection. + + + + + Gets a value indicating whether this instance is disposed. + + + + + A block used for deterministic disposal of activated instances. When the block is + disposed, all instances activated via it will be deactivated. + + + + + Provides a path to resolve instances. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + An object that fires an event when it is disposed. + + + + + Occurs when the object is disposed. + + + + + Initializes a new instance of the class. + + The parent resolution root. + + + + Releases resources held by the object. + + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Gets or sets the parent resolution root (usually the kernel). + + + + + Occurs when the object is disposed. + + + + + Stores the objects that were activated + + + + + A component that contributes to the internals of Ninject. + + + + + A component that contributes to the internals of Ninject. + + + + + Gets or sets the settings. + + + + + Gets or sets the settings. + + + + + Stores the objects that were activated + + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + An object that is prunealble. + + + + + Removes instances from the cache which should no longer be re-used. + + + + + The objects that were activated as reference equal weak references. + + + + + The objects that were activated as reference equal weak references. + + + + + Initializes a new instance of the class. + + The cache pruner. + + + + Clears the cache. + + + + + Adds an activated instance. + + The instance to be added. + + + + Adds an deactivated instance. + + The instance to be added. + + + + Determines whether the specified instance is activated. + + The instance. + + true if the specified instance is activated; otherwise, false. + + + + + Determines whether the specified instance is deactivated. + + The instance. + + true if the specified instance is deactivated; otherwise, false. + + + + + Prunes this instance. + + + + + Removes all dead objects. + + The objects collection to be freed of dead objects. + + + + Gets the activated object count. + + The activated object count. + + + + Gets the deactivated object count. + + The deactivated object count. + + + + Tracks instances for re-use in certain scopes. + + + + + Tracks instances for re-use in certain scopes. + + + + + Stores the specified instance in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets the number of entries currently stored in the cache. + + + + + Contains all cached instances. + This is a dictionary of scopes to a multimap for bindings to cache entries. + + + + + Initializes a new instance of the class. + + The pipeline component. + The cache pruner component. + + + + Releases resources held by the object. + + + + + + Stores the specified context in the cache. + + The context to store. + The instance reference. + + + + Tries to retrieve an instance to re-use in the specified context. + + The context that is being activated. + The instance for re-use, or if none has been stored. + + + + Deactivates and releases the specified instance from the cache. + + The instance to release. + if the instance was found and released; otherwise . + + + + Removes instances from the cache which should no longer be re-used. + + + + + Immediately deactivates and removes all instances in the cache that are owned by + the specified scope. + + The scope whose instances should be deactivated. + + + + Immediately deactivates and removes all instances in the cache, regardless of scope. + + + + + Gets all entries for a binding withing the selected scope. + + The bindings. + All bindings of a binding. + + + + Gets all cache entries. + + Returns all cache entries. + + + + Forgets the specified cache entries. + + The cache entries. + + + + Forgets the specified entry. + + The entry. + + + + Gets the pipeline component. + + + + + Gets the number of entries currently stored in the cache. + + + + + An entry in the cache. + + + + + Initializes a new instance of the class. + + The context. + The instance reference. + + + + Gets the context of the instance. + + The context. + + + + Gets the instance reference. + + The instance reference. + + + + Uses a and some magic to poll + the garbage collector to see if it has run. + + + + + Prunes instances from an based on environmental information. + + + + + Starts pruning the specified cache based on the rules of the pruner. + + The cache that will be pruned. + + + + Stops pruning. + + + + + The caches that are being pruned. + + + + + Releases resources held by the object. + + + + + Starts pruning the specified pruneable based on the rules of the pruner. + + The pruneable that will be pruned. + + + + Stops pruning. + + + + + A provider that delegates to a callback method to create instances. + + The type of instances the provider creates. + + + + A simple abstract provider for instances of a specific type. + + The type of instances the provider creates. + + + + Creates instances of services. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Initializes a new instance of the CallbackProvider<T> class. + + The callback method that will be called to create instances. + + + + Invokes the callback method to create an instance. + + The context. + The created instance. + + + + Gets the callback method used by the provider. + + + + + A provider that always returns the same constant value. + + The type of value that is returned. + + + + Initializes a new instance of the ConstantProvider<T> class. + + The value that the provider should return. + + + + Creates an instance within the specified context. + + The context. + The constant value this provider returns. + + + + Gets the value that the provider will return. + + + + + The standard provider for types, which activates instances via a . + + + + + Initializes a new instance of the class. + + The type (or prototype) of instances the provider creates. + The planner component. + The selector component. + + + + Creates an instance within the specified context. + + The context. + The created instance. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the implementation type that the provider will activate an instance of + for the specified service. + + The service in question. + The implementation type that will be activated. + + + + Gets a callback that creates an instance of the + for the specified type. + + The prototype the provider instance will create. + The created callback. + + + + Gets the type (or prototype) of instances the provider creates. + + + + + Gets or sets the planner component. + + + + + Gets or sets the selector component. + + + + + Adds all activated instances to the activation cache. + + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The activation cache. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Gets or sets the settings. + + The ninject settings. + + + + Contributes to a , and is called during the activation + and deactivation of an instance. + + + + + Contributes to the activation of the instance in the specified context. + + The context. + A reference to the instance being activated. + + + + Contributes to the deactivation of the instance in the specified context. + + The context. + A reference to the instance being deactivated. + + + + Executes actions defined on the binding during activation and deactivation. + + + + + Calls the activation actions defined on the binding. + + The context. + A reference to the instance being activated. + + + + Calls the deactivation actions defined on the binding. + + The context. + A reference to the instance being deactivated. + + + + During deactivation, disposes instances that implement . + + + + + Disposes the specified instance. + + The context. + A reference to the instance being deactivated. + + + + During activation, initializes instances that implement . + + + + + Initializes the specified instance. + + The context. + A reference to the instance being activated. + + + + Injects methods on an instance during activation. + + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Injects properties on an instance during activation. + + + + + Initializes a new instance of the class. + + The injector factory component. + + + + Injects values into the properties as described by s + contained in the plan. + + The context. + A reference to the instance being activated. + + + + Applies user supplied override values to instance properties. + + The context. + A reference to the instance being activated. + The parameter ovverride value accessors. + + + + Gets the value to inject into the specified target. + + The context. + The target. + The value to inject into the specified target. + + + + Gets the injector factory component. + + + + + Starts instances that implement during activation, + and stops them during deactivation. + + + + + Starts the specified instance. + + The context. + A reference to the instance being activated. + + + + Stops the specified instance. + + The context. + A reference to the instance being deactivated. + + + + Contains information about the activation of a single instance. + + + + + Contains information about the activation of a single instance. + + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Resolves this instance for this context. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Initializes a new instance of the class. + + The kernel managing the resolution. + The context's request. + The context's binding. + The cache component. + The planner component. + The pipeline component. + + + + Gets the scope for the context that "owns" the instance activated therein. + + The object that acts as the scope. + + + + Gets the provider that should be used to create the instance for this context. + + The provider that should be used. + + + + Resolves the instance associated with this hook. + + The resolved instance. + + + + Gets the kernel that is driving the activation. + + + + + Gets the request. + + + + + Gets the binding. + + + + + Gets or sets the activation plan. + + + + + Gets the parameters that were passed to manipulate the activation process. + + + + + Gets the generic arguments for the request, if any. + + + + + Gets a value indicating whether the request involves inferred generic arguments. + + + + + Gets or sets the cache component. + + + + + Gets or sets the planner component. + + + + + Gets or sets the pipeline component. + + + + + Holds an instance during activation or after it has been cached. + + + + + Returns a value indicating whether the instance is of the specified type. + + The type in question. + if the instance is of the specified type, otherwise . + + + + Returns the instance as the specified type. + + The requested type. + The instance. + + + + Executes the specified action if the instance if of the specified type. + + The type in question. + The action to execute. + + + + Gets or sets the instance. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Determines whether the specified binding satisfies the constraint defined on this request. + + The binding. + True if the binding satisfies the constraint; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request should return a unique result. + + + + + Drives the activation (injection, etc.) of an instance. + + + + + The activation cache. + + + + + Initializes a new instance of the class. + + The strategies to execute during activation and deactivation. + The activation cache. + + + + Activates the instance in the specified context. + + The context. + The instance reference. + + + + Deactivates the instance in the specified context. + + The context. + The instance reference. + + + + Gets the strategies that contribute to the activation and deactivation processes. + + + + + Describes the request for a service resolution. + + + + + Initializes a new instance of the class. + + The service that was requested. + The constraint that will be applied to filter the bindings used for the request. + The parameters that affect the resolution. + The scope callback, if an external scope was specified. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + + + + Initializes a new instance of the class. + + The parent context. + The service that was requested. + The target that will receive the injection. + The scope callback, if an external scope was specified. + + + + Determines whether the specified binding satisfies the constraints defined on this request. + + The binding. + True if the binding satisfies the constraints; otherwise false. + + + + Gets the scope if one was specified in the request. + + The object that acts as the scope. + + + + Creates a child request. + + The service that is being requested. + The context in which the request was made. + The target that will receive the injection. + The child request. + + + + Gets the service that was requested. + + + + + Gets the parent request. + + + + + Gets the parent context. + + + + + Gets the target that will receive the injection, if any. + + + + + Gets the constraint that will be applied to filter the bindings used for the request. + + + + + Gets the parameters that affect the resolution. + + + + + Gets the stack of bindings which have been activated by either this request or its ancestors. + + + + + Gets the recursive depth at which this request occurs. + + + + + Gets or sets value indicating whether the request is optional. + + + + + Gets or sets value indicating whether the request is for a single service. + + + + + Gets the callback that resolves the scope for the request, if an external scope was provided. + + + + + Defines a constraint on the decorated member. + + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Indicates that the decorated member should be injected. + + + + + Indicates that the decorated member should only be injected using binding(s) registered + with the specified name. + + + + + Initializes a new instance of the class. + + The name of the binding(s) to use. + + + + Determines whether the specified binding metadata matches the constraint. + + The metadata in question. + True if the metadata matches; otherwise false. + + + + Gets the binding name. + + + + + Indicates that the decorated member represents an optional dependency. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + An internal container that manages and resolves components that contribute to Ninject. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component's type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Releases resources held by the object. + + + + + Registers a component in the container. + + The component type. + The component's implementation type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Removes all registrations for the specified component. + + The component type. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets one instance of the specified component. + + The component type. + The instance of the component. + + + + Gets all available instances of the specified component. + + The component type. + A series of instances of the specified component. + + + + Gets or sets the kernel that owns the component container. + + + + + Provides meaningful exception messages. + + + + + Generates a message saying that modules without names are not supported. + + The exception message. + + + + Generates a message saying that a module with the same name is already loaded. + + The new module. + The existing module. + The exception message. + + + + Generates a message saying that no module has been loaded with the specified name. + + The module name. + The exception message. + + + + Generates a message saying that the binding could not be uniquely resolved. + + The request. + The exception message. + + + + Generates a message saying that the binding could not be resolved on the specified request. + + The request. + The exception message. + + + + Generates a message saying that the specified context has cyclic dependencies. + + The context. + The exception message. + + + + Generates a message saying that an invalid attribute type is used in the binding condition. + + The binding. + Name of the method. + The type. + The exception message. + + + + Generates a message saying that no constructors are available on the specified context. + + The context. + The exception message. + + + + Generates a message saying that no constructors are available for the given component. + + The component. + The implementation. + The exception message. + + + + Generates a message saying that the specified component is not registered. + + The component. + The exception message. + + + + Generates a message saying that the specified property could not be resolved on the specified request. + + The request. + The property name. + The exception message. + + + + Generates a message saying that the provider on the specified context returned null. + + The context. + The exception message. + + + + Provides extension methods for string formatting + + + + + Formats the activation path into a meaningful string representation. + + The request to be formatted. + The activation path formatted as string. + + + + Formats the given binding into a meaningful string representation. + + The binding to be formatted. + The context. + The binding formatted as string + + + + Formats the specified request into a meaningful string representation. + + The request to be formatted. + The request formatted as string. + + + + Formats the specified target into a meaningful string representation.. + + The target to be formatted. + The target formatted as string. + + + + Formats the specified type into a meaningful string representation.. + + The type to be formatted. + The type formatted as string. + + + + Extensions for MemberInfo + + + + + Determines whether the specified member has attribute. + + The type of the attribute. + The member. + + true if the specified member has attribute; otherwise, false. + + + + + Determines whether the specified member has attribute. + + The member. + The type of the attribute. + + true if the specified member has attribute; otherwise, false. + + + + + Gets the property info from its declared tpe. + + The member info. + The property definition. + The flags. + The property info from the declared type of the property. + + + + Determines whether the specified property info is private. + + The property info. + + true if the specified property info is private; otherwise, false. + + + + + Gets the custom attributes. + This version is able to get custom attributes for properties from base types even if the property is none public. + + The member. + Type of the attribute. + if set to true [inherited]. + + + + + Represents a future value. + + The type of value. + + + + Initializes a new instance of the Future<T> class. + + The callback that will be triggered to read the value. + + + + Gets the value from the future. + + The future. + The future value. + + + + Gets the value, resolving it if necessary. + + + + + Gets the callback that will be called to resolve the value. + + + + + Indicates the object has a reference to a . + + + + + Gets the binding. + + + + + Indicates that the object has a reference to an . + + + + + Gets the kernel. + + + + + A data structure that contains multiple values for a each key. + + The type of key. + The type of value. + + + + Adds the specified value for the specified key. + + The key. + The value. + + + + Removes the specified value for the specified key. + + The key. + The value. + True if such a value existed and was removed; otherwise false. + + + + Removes all values for the specified key. + + The key. + True if any such values existed; otherwise false. + + + + Removes all values. + + + + + Determines whether the multimap contains any values for the specified key. + + The key. + True if the multimap has one or more values for the specified key; otherwise, false. + + + + Determines whether the multimap contains the specified value for the specified key. + + The key. + The value. + True if the multimap contains such a value; otherwise, false. + + + + Returns an enumerator that iterates through a the multimap. + + An object that can be used to iterate through the multimap. + + + + Gets the collection of values stored under the specified key. + + The key. + + + + Gets the collection of keys. + + + + + Gets the collection of collections of values. + + + + + Weak reference that can be used in collections. It is equal to the + object it references and has the same hash code. + + + + + Initializes a new instance of the class. + + The target. + + + + Initializes a new instance of the class. + + The target. + if set to true [track resurrection]. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + The parameter is null. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets a value indicating whether this instance is alive. + + true if this instance is alive; otherwise, false. + + + + Gets or sets the target of this weak reference. + + The targe of this weak reference. + + + + Defines the style of request (single or multi-injection, whether it is optional, etc.) + + + + + Indicates a request for a single instance of a service. + + + + + Indicates a request for multiple instances of a service. + + + + + Indicates that null should be returned (instead of throwing) if the service cannot be resolved. + + + + + Scope callbacks for standard scopes. + + + + + Gets the callback for transient scope. + + + + + Gets the callback for singleton scope. + + + + + Gets the callback for thread scope. + + + + + A delegate that can inject values into a constructor. + + + + + Creates injectors from members. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A delegate that can inject values into a method. + + + + + A delegate that can inject values into a property. + + + + + Creates injectors from members via reflective invocation. + + + + + Gets or creates an injector for the specified constructor. + + The constructor. + The created injector. + + + + Gets or creates an injector for the specified property. + + The property. + The created injector. + + + + Gets or creates an injector for the specified method. + + The method. + The created injector. + + + + A pluggable unit that can be loaded into an . + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Gets the module's name. + + + + + A loadable unit that defines bindings for your application. + + + + + Provides a path to register bindings. + + + + + Provides a path to register bindings. + + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding from the service to itself. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Declares a binding for the specified service. + + The service to bind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Removes any existing bindings for the specified service, and declares a new one. + + The service to re-bind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Initializes a new instance of the class. + + + + + Called when the module is loaded into a kernel. + + The kernel that is loading the module. + + + + Called when the module is unloaded from a kernel. + + The kernel that is unloading the module. + + + + Loads the module into the kernel. + + + + + Unloads the module from the kernel. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Gets the kernel that the module is loaded into. + + + + + Gets the module's name. Only a single module with a given name can be loaded at one time. + + + + + Gets the bindings that were registered by the module. + + + + + Overrides the injected value of a constructor argument. + + + + + Modifies an activation process in some way. + + + + + Modifies an activation process in some way. + + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Initializes a new instance of the class. + + The name of the parameter. + The value of the parameter. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Initializes a new instance of the class. + + The name of the parameter. + The callback that will be triggered to get the parameter's value. + Whether the parameter should be inherited into child requests. + + + + Gets the value for the parameter within the specified context. + + The context. + The target. + The value for the parameter. + + + + Determines whether the object equals the specified object. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Serves as a hash function for a particular type. + + A hash code for the object. + + + + Indicates whether the current object is equal to another object of the same type. + + An object to compare with this object. + True if the objects are equal; otherwise false + + + + Gets the name of the parameter. + + + + + Gets a value indicating whether the parameter should be inherited into child requests. + + + + + Gets or sets the callback that will be triggered to get the parameter's value. + + + + + Initializes a new instance of the class. + + The name of the argument to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the argument to override. + The callback to invoke to get the value that should be injected. + + + + Overrides the injected value of a property. + + + + + Initializes a new instance of the class. + + The name of the property to override. + The value to inject into the property. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Initializes a new instance of the class. + + The name of the property to override. + The callback to invoke to get the value that should be injected. + + + + Contains logic about which bindings to use for a given service request. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains logic about which bindings to use for a given service request + when other attempts have failed. + + + + + Returns any bindings from the specified collection that match the specified request. + + The multimap of all registered bindings. + The request in question. + The series of matching bindings. + + + + Resolves bindings for open generic types. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Resolves bindings that have been registered directly for the service. + + + + + Returns any bindings from the specified collection that match the specified service. + + The multimap of all registered bindings. + The service in question. + The series of matching bindings. + + + + Contains information about a service registration. + + + + + Contains information about a service registration. + + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the condition defined on the binding, + if one was defined. + + The request. + True if the request satisfies the condition; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + + + + Initializes a new instance of the class. + + The service that is controlled by the binding. + The binding's metadata container. + + + + Gets the provider for the binding. + + The context. + The provider to use. + + + + Gets the scope for the binding, if any. + + The context. + The object that will act as the scope, or if the service is transient. + + + + Determines whether the specified request satisfies the conditions defined on this binding. + + The request. + True if the request satisfies the conditions; otherwise false. + + + + Gets the service type that is controlled by the binding. + + + + + Gets the binding's metadata. + + + + + Gets or sets a value indicating whether the binding was implicitly registered. + + + + + Gets a value indicating whether the binding has a condition associated with it. + + + + + Gets or sets the type of target for the binding. + + + + + Gets or sets the condition defined for the binding. + + + + + Gets or sets the callback that returns the provider that should be used by the binding. + + + + + Gets or sets the callback that returns the object that will act as the binding's scope. + + + + + Gets the parameters defined for the binding. + + + + + Gets the actions that should be called after instances are activated via the binding. + + + + + Gets the actions that should be called before instances are deactivated via the binding. + + + + + Provides a root for the fluent syntax associated with an . + + + + + Used to define the target of a binding. + + The service being bound. + + + + Used to define a basic binding syntax builder. + + + + + A hack to hide methods defined on for IntelliSense + on fluent interfaces. Credit to Daniel Cazzulino. + + + + + + + + + + + + + + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Used to set the condition, scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to define the conditions under which a binding should be used. + + The service being bound. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Used to define the scope in which instances activated via a binding should be re-used. + + The service being bound. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Used to define the name of a binding. + + The service being bound. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Used to add additional information to a binding. + + The service being bound. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Used to add additional actions to be performed during activation or deactivation of instances via a binding. + + The service being bound. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Used to set the scope, name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to set the name, or add additional information or actions to a binding. + + The service being bound. + + + + Used to add additional information or actions to a binding. + + The service being bound. + + + + Initializes a new instance of the BindingBuilder<T> class. + + The binding to build. + The kernel. + + + + Indicates that the service should be self-bound. + + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to the specified implementation type. + + The implementation type. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to an instance of the specified provider type. + The instance will be activated via the kernel when an instance of the service is activated. + + The type of provider to activate. + + + + Indicates that the service should be bound to the specified provider. + + The provider. + + + + Indicates that the service should be bound to the specified callback method. + + The method. + + + + Indicates that the service should be bound to the specified constant value. + + The constant value. + + + + Indicates that the binding should be used only for requests that support the specified condition. + + The condition. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only for injections on the specified type. + + The type. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the class being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the member being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the target being injected has + an attribute of the specified type. + + The type of attribute. + + + + Indicates that the binding should be used only when the service is being requested + by a service bound with the specified name. + + The name to expect. + + + + Indicates that the binding should be registered with the specified name. Names are not + necessarily unique; multiple bindings for a given service may be registered with the same name. + + The name to give the binding. + + + + Indicates that only a single instance of the binding should be created, and then + should be re-used for all subsequent requests. + + + + + Indicates that instances activated via the binding should not be re-used, nor have + their lifecycle managed by Ninject. + + + + + Indicates that instances activated via the binding should be re-used within the same thread. + + + + + Indicates that instances activated via the binding should be re-used as long as the object + returned by the provided callback remains alive (that is, has not been garbage collected). + + The callback that returns the scope. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified constructor argument should be overridden with the specified value. + + The name of the argument to override. + The callback to invoke to get the value for the argument. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Indicates that the specified property should be injected with the specified value. + + The name of the property to override. + The callback to invoke to get the value for the property. + + + + Adds a custom parameter to the binding. + + The parameter. + + + + Sets the value of a piece of metadata on the binding. + + The metadata key. + The metadata value. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are activated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Indicates that the specified callback should be invoked when instances are deactivated. + + The action callback. + + + + Provides a root for the fluent syntax associated with an . + + + + + Gets the binding being built. + + + + + Gets the kernel. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Additional information available about a binding, which can be used in constraints + to select bindings to use in activation. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Determines whether a piece of metadata with the specified key has been defined. + + The metadata key. + True if such a piece of metadata exists; otherwise, false. + + + + Gets the value of metadata defined with the specified key, cast to the specified type. + + The type of value to expect. + The metadata key. + The metadata value. + + + + Gets the value of metadata defined with the specified key. + + The metadata key. + The value to return if the binding has no metadata set with the specified key. + The metadata value, or the default value if none was set. + + + + Sets the value of a piece of metadata. + + The metadata key. + The metadata value. + + + + Gets or sets the binding's name. + + + + + Describes the target of a binding. + + + + + Indicates that the binding is from a type to itself. + + + + + Indicates that the binding is from one type to another. + + + + + Indicates that the binding is from a type to a provider. + + + + + Indicates that the binding is from a type to a callback method. + + + + + Indicates that the binding is from a type to a constant value. + + + + + Describes the injection of a constructor. + + + + + Describes the injection of a method or constructor. + + + + + A piece of information used in an . (Just a marker.) + + + + + Initializes a new instance of the MethodInjectionDirectiveBase<TMethod, TInjector> class. + + The method this directive represents. + The injector that will be triggered. + + + + Creates targets for the parameters of the method. + + The method. + The targets for the method's parameters. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the targets for the directive. + + + + + Initializes a new instance of the class. + + The constructor described by the directive. + The injector that will be triggered. + + + + The base .ctor definition. + + + + + Describes the injection of a method. + + + + + Initializes a new instance of the class. + + The method described by the directive. + The injector that will be triggered. + + + + Describes the injection of a property. + + + + + Initializes a new instance of the class. + + The member the directive describes. + The injector that will be triggered. + + + + Creates a target for the property. + + The property. + The target for the property. + + + + Gets or sets the injector that will be triggered. + + + + + Gets or sets the injection target for the directive. + + + + + Adds a directive to plans indicating which constructor should be injected during activation. + + + + + Contributes to the generation of a . + + + + + Contributes to the specified plan. + + The plan that is being generated. + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for the constructor + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which methods should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each method + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Adds directives to plans indicating which properties should be injected during activation. + + + + + Initializes a new instance of the class. + + The selector component. + The injector factory component. + + + + Adds a to the plan for each property + that should be injected. + + The plan that is being generated. + + + + Gets the selector component. + + + + + Gets the injector factory component. + + + + + Represents a site on a type where a value will be injected. + + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the type of the target. + + + + + Gets the name of the target. + + + + + Gets the member that contains the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Represents an injection target for a . + + + + + Represents a site on a type where a value can be injected. + + The type of site this represents. + + + + Initializes a new instance of the Target<T> class. + + The member that contains the target. + The site represented by the target. + + + + Returns an array of custom attributes of a specified type defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes of the specified type. + + + + Returns an array of custom attributes defined on the target. + + Whether to look up the hierarchy chain for inherited custom attributes. + An array of custom attributes. + + + + Returns a value indicating whether an attribute of the specified type is defined on the target. + + The type of attribute to search for. + Whether to look up the hierarchy chain for inherited custom attributes. + True if such an attribute is defined; otherwise false. + + + + Resolves a value for the target within the specified parent context. + + The parent context. + The resolved value. + + + + Gets the value(s) that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + A series of values that are available for injection. + + + + Gets the value that should be injected into the target. + + The service that the target is requesting. + The parent context in which the target is being injected. + The value that is to be injected. + + + + Reads whether the target represents an optional dependency. + + if it is optional; otherwise . + + + + Reads the resolution constraint from target. + + The resolution constraint. + + + + Gets the member that contains the target. + + + + + Gets or sets the site (property, parameter, etc.) represented by the target. + + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Gets the constraint defined on the target. + + + + + Gets a value indicating whether the target represents an optional dependency. + + + + + Initializes a new instance of the class. + + The method that defines the parameter. + The parameter that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Represents an injection target for a . + + + + + Initializes a new instance of the class. + + The property that this target represents. + + + + Gets the name of the target. + + + + + Gets the type of the target. + + + + + Describes the means by which a type should be activated. + + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Generates plans for how to activate instances. + + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Describes the means by which a type should be activated. + + + + + Initializes a new instance of the class. + + The type the plan describes. + + + + Adds the specified directive to the plan. + + The directive. + + + + Determines whether the plan contains one or more directives of the specified type. + + The type of directive. + True if the plan has one or more directives of the type; otherwise, false. + + + + Gets the first directive of the specified type from the plan. + + The type of directive. + The first directive, or if no matching directives exist. + + + + Gets all directives of the specified type that exist in the plan. + + The type of directive. + A series of directives of the specified type. + + + + Gets the type that the plan describes. + + + + + Gets the directives defined in the plan. + + + + + Generates plans for how to activate instances. + + + + + Initializes a new instance of the class. + + The strategies to execute during planning. + + + + Gets or creates an activation plan for the specified type. + + The type for which a plan should be created. + The type's activation plan. + + + + Creates an empty plan for the specified type. + + The type for which a plan should be created. + The created plan. + + + + Gets the strategies that contribute to the planning process. + + + + + Generates scores for constructors, to determine which is the best one to call during activation. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Scores constructors by either looking for the existence of an injection marker + attribute, or by counting the number of parameters. + + + + + Gets the score for the specified constructor. + + The injection context. + The constructor. + The constructor's score. + + + + Determines whether members should be injected during activation by checking + if they are decorated with an injection marker attribute. + + + + + Returns a value indicating whether the specified member should be injected. + + The member in question. + True if the member should be injected; otherwise false. + + + + Selects members for injection. + + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the heuristics used to determine which members should be injected. + + + + + Selects members for injection. + + + + + Initializes a new instance of the class. + + The constructor scorer. + The injection heuristics. + + + + Selects the constructor to call on the specified type, by using the constructor scorer. + + The type. + The selected constructor, or if none were available. + + + + Selects properties that should be injected. + + The type. + A series of the selected properties. + + + + Selects methods that should be injected. + + The type. + A series of the selected methods. + + + + Gets or sets the constructor scorer. + + + + + Gets the property injection heuristics. + + + + + Extension methods that enhance module loading. + + + + + Creates a new instance of the module and loads it into the kernel. + + The type of the module. + The kernel. + + + + Loads the module(s) into the kernel. + + The kernel. + The modules to load. + + + + Extensions that enhance resolution of services. + + + + + Gets an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The service to resolve. + The resolution root. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The service to resolve. + The resolution root. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The service to resolve. + The resolution root. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service. + + + + Gets an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service. + + + + Tries to get an instance of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Tries to get an instance of the specified service by using the first binding that matches the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the binding. + The parameters to pass to the request. + An instance of the service, or if no implementation was available. + + + + Gets all available instances of the specified service. + + The resolution root. + The service to resolve. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service using bindings registered with the specified name. + + The resolution root. + The service to resolve. + The name of the binding. + The parameters to pass to the request. + A series of instances of the service. + + + + Gets all instances of the specified service by using the bindings that match the specified constraint. + + The resolution root. + The service to resolve. + The constraint to apply to the bindings. + The parameters to pass to the request. + A series of instances of the service. + + + + Indicates that an error occured during activation of an instance. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The exception message. + + + + Initializes a new instance of the class. + + The exception message. + The inner exception. + + + + A service that requires initialization after it is activated. + + + + + Initializes the instance. Called during activation. + + + + + A super-factory that can create objects of all kinds, following hints provided by s. + + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets the attribute that indicates that a member should be injected. + + + + + Gets the interval at which the cache should be pruned. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + true if null is allowed as injected value otherwise false. + + + + A service that is started when activated, and stopped when deactivated. + + + + + Starts this instance. Called during activation. + + + + + Stops this instance. Called during deactivation. + + + + + The base implementation of an . + + + + + Lock used when adding missing bindings. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The component container to use. + The configuration to use. + The modules to load into the kernel. + + + + Releases resources held by the object. + + + + + Unregisters all bindings for the specified service. + + The service to unbind. + + + + Registers the specified binding. + + The binding to add. + + + + Unregisters the specified binding. + + The binding to remove. + + + + Determines whether a module with the specified name has been loaded in the kernel. + + The name of the module. + True if the specified module has been loaded; otherwise, false. + + + + Gets the modules that have been loaded into the kernel. + + A series of loaded modules. + + + + Loads the module(s) into the kernel. + + The modules to load. + + + + Unloads the plugin with the specified name. + + The plugin's name. + + + + Injects the specified existing instance, without managing its lifecycle. + + The instance to inject. + The parameters to pass to the request. + + + + Deactivates and releases the specified instance if it is currently managed by Ninject. + + The instance to release. + if the instance was found and released; otherwise . + + + + Determines whether the specified request can be resolved. + + The request. + True if the request can be resolved; otherwise, false. + + + + Resolves instances for the specified request. The instances are not actually resolved + until a consumer iterates over the enumerator. + + The request to resolve. + An enumerator of instances that match the request. + + + + Creates a request for the specified service. + + The service that is being requested. + The constraint to apply to the bindings to determine if they match the request. + The parameters to pass to the resolution. + True if the request is optional; otherwise, false. + True if the request should return a unique result; otherwise, false. + The created request. + + + + Begins a new activation block, which can be used to deterministically dispose resolved instances. + + The new activation block. + + + + Gets the bindings registered for the specified service. + + The service in question. + A series of bindings that are registered for the service. + + + + Returns an IComparer that is used to determine resolution precedence. + + An IComparer that is used to determine resolution precedence. + + + + Returns a predicate that can determine if a given IBinding matches the request. + + The request/ + A predicate that can determine if a given IBinding matches the request. + + + + Creates a new builder for the specified binding. + + The type restriction to apply to the binding builder. + The binding that will be built. + The created builder. + + + + Adds components to the kernel during startup. + + + + + Attempts to handle a missing binding for a service. + + The service. + True if the missing binding can be handled; otherwise false. + + + + Attempts to handle a missing binding for a request. + + The request. + True if the missing binding can be handled; otherwise false. + + + + Returns a value indicating whether the specified service is self-bindable. + + The service. + if the type is self-bindable; otherwise . + + + + Creates a context for the specified request and binding. + + The request. + The binding. + The created context. + + + + Gets the kernel settings. + + + + + Gets the component container, which holds components that contribute to Ninject. + + + + + Contains configuration options for Ninject. + + + + + Gets the value for the specified key. + + The type of value to return. + The setting's key. + The value to return if no setting is available. + The value, or the default value if none was found. + + + + Sets the value for the specified key. + + The setting's key. + The setting's value. + + + + Gets or sets the attribute that indicates that a member should be injected. + + + + + Gets or sets the interval at which the GC should be polled. + + + + + Gets or sets a value indicating whether the activation cache is disabled. + If the activation cache is disabled less memory is used. But in some cases + instances are activated or deactivated multiple times. e.g. in the following scenario: + Bind{A}().ToSelf(); + Bind{IA}().ToMethod(ctx => kernel.Get{IA}(); + + + true if activation cache is disabled; otherwise, false. + + + + + Gets or sets a value indicating whether Null is a valid value for injection. + By defualt this is disabled and whenever a provider returns null an eception is thrown. + + + true if null is allowed as injected value otherwise false. + + + + + The standard implementation of a kernel. + + + + + Initializes a new instance of the class. + + The modules to load into the kernel. + + + + Initializes a new instance of the class. + + The configuration to use. + The modules to load into the kernel. + + + + Adds components to the kernel during startup. + + + + diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 2.0/Ninject.dll b/packages/Ninject.2.2.1.4/lib/sl3/Ninject.dll similarity index 98% rename from packages/Ninject.2.2.1.0/lib/Silverlight 2.0/Ninject.dll rename to packages/Ninject.2.2.1.4/lib/sl3/Ninject.dll index fef05e04a..be215dd4a 100644 Binary files a/packages/Ninject.2.2.1.0/lib/Silverlight 2.0/Ninject.dll and b/packages/Ninject.2.2.1.4/lib/sl3/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/sl3/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/sl3/Ninject.pdb new file mode 100644 index 000000000..565434c19 Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/sl3/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 3.0/Ninject.xml b/packages/Ninject.2.2.1.4/lib/sl3/Ninject.xml similarity index 100% rename from packages/Ninject.2.2.1.0/lib/Silverlight 3.0/Ninject.xml rename to packages/Ninject.2.2.1.4/lib/sl3/Ninject.xml diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 4.0/Ninject.dll b/packages/Ninject.2.2.1.4/lib/sl4/Ninject.dll similarity index 98% rename from packages/Ninject.2.2.1.0/lib/Silverlight 4.0/Ninject.dll rename to packages/Ninject.2.2.1.4/lib/sl4/Ninject.dll index b23fadc2f..f36390af0 100644 Binary files a/packages/Ninject.2.2.1.0/lib/Silverlight 4.0/Ninject.dll and b/packages/Ninject.2.2.1.4/lib/sl4/Ninject.dll differ diff --git a/packages/Ninject.2.2.1.4/lib/sl4/Ninject.pdb b/packages/Ninject.2.2.1.4/lib/sl4/Ninject.pdb new file mode 100644 index 000000000..65f62e73b Binary files /dev/null and b/packages/Ninject.2.2.1.4/lib/sl4/Ninject.pdb differ diff --git a/packages/Ninject.2.2.1.0/lib/Silverlight 4.0/Ninject.xml b/packages/Ninject.2.2.1.4/lib/sl4/Ninject.xml similarity index 100% rename from packages/Ninject.2.2.1.0/lib/Silverlight 4.0/Ninject.xml rename to packages/Ninject.2.2.1.4/lib/sl4/Ninject.xml diff --git a/packages/Unity.2.0/Unity.2.0.nupkg b/packages/Unity.2.0/Unity.2.0.nupkg deleted file mode 100644 index db3f48942..000000000 Binary files a/packages/Unity.2.0/Unity.2.0.nupkg and /dev/null differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll b/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll deleted file mode 100644 index 15ec9b8b4..000000000 Binary files a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.dll and /dev/null differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.xml b/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.xml deleted file mode 100644 index c8d919d28..000000000 --- a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.Configuration.xml +++ /dev/null @@ -1,716 +0,0 @@ - - - - Microsoft.Practices.Unity.Interception.Configuration - - - - - Configuration element that lets you specify additional interfaces - to add when this type is intercepted. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Return the set of s that are needed - to configure the container according to this configuration element. - - Container that is being configured. - Type that is being registered. - Type that is being mapped to. - Name this registration is under. - One or more objects that should be - applied to the container registration. - - - - Type of interface to add. - - - - - Each element must have a unique key, which is generated by the subclasses. - - - - - Configuration element representing a call handler. - - - - - Base class for the two children of the Policy element: - MatchingRuleElement and CallHandlerElement. - - - - These configuration elements have a required "name" attribute, an optional "type" attribute, and - optional child elements <lifetime> and <injection> - - - Elements without a value for the type attribute can only have a value for the name attribute, and - indicate that the represented handler or rule is configured elsewhere and that a reference to - the given name must be added to the policy to be resolved, while elements with a value for the type - attribute indicate how the represented handler or rule should be built and can optionally specify - lifetime management and injection configuration. - - - This element is similar to the , except that it does not provide - an extension point for arbitrary configuration. - - - - - - Reads XML from the configuration file. - - The that reads from the configuration file. - true to serialize only the collection key properties; otherwise, false. - The element to read is locked. - - or - - An attribute of the current node is not recognized. - - or - - The lock status of the current node cannot be determined. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Name of this item - - - - - Type that implements this matching rule or call handler. - - - - - Injection members that control how this item is created. - - - - - Lifetime manager for this item. - - - - - A collection of s for configuration. - - - - - Gets the element key for a specified configuration element when overridden in a derived class. - - - An that acts as the key for the specified . - - The to return the key for. - - - - - Causes the configuration system to throw an exception. - - - true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. - - The name of the unrecognized element. - An input stream that reads XML from the configuration file. - The element specified in is the <clear> element. - starts with the reserved prefix "config" or "lock". - - - - - Retrieve a call handler element from the collection by name. - - Name to look up. - The rule, or null if not in the collection. - - - - The <default> element that appears inside an <interceptor> element. - - - - - Base class for the default and key elements that can occur - inside the <interceptor> element. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Actually register the interceptor against this type. - - Container to configure. - interceptor to register. - - - - Type name that this interceptor will be registered for. - - - - - Return the type object that is resolved from the property. - - The type object. - - - - Actually register the interceptor against this type. - - Container to configure. - interceptor to register. - - - - Configuration elmement for specifying - interception behaviors for a type. - - - - - Reads XML from the configuration file. - - The that reads from the configuration file. - true to serialize only the collection key properties; otherwise, false. - The element to read is locked. - - or - - An attribute of the current node is not recognized. - - or - - The lock status of the current node cannot be determined. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Return the set of s that are needed - to configure the container according to this configuration element. - - Container that is being configured. - Type that is being registered. - Type that is being mapped to. - Name this registration is under. - One or more objects that should be - applied to the container registration. - - - - Type of behavior to add. - - - - - Name of behavior to resolve. - - - - - Should this behavior be configured as a default behavior for this type, or - specifically for this type/name pair only? - - - - - Each element must have a unique key, which is generated by the subclasses. - - - - - Section extension class used to add the elements needed to configure - Unity interception to the configuration schema. - - - - - Add the extensions to the section via the context. - - Context object that can be used to add elements and aliases. - - - - A configuration element that contains the top-level container configuration - information for interception - handler policies and global interceptor definitions. - - - - - Gets a value indicating whether an unknown element is encountered during deserialization. - - - true when an unknown element is encountered while deserializing; otherwise, false. - - The name of the unknown subelement. - The being used for deserialization. - The element identified by is locked. - - or - - One or more of the element's attributes is locked. - - or - - is unrecognized, or the element has an unrecognized attribute. - - or - - The element has a Boolean attribute with an invalid value. - - or - - An attempt was made to deserialize a property more than once. - - or - - An attempt was made to deserialize a property that is not a valid member of the element. - - or - - The element cannot contain a CDATA or text element. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Apply this element's configuration to the given . - - Container to configure. - - - - Policies defined for this container. - - - - - Configuration element that lets you configure - what interceptor to use for a type. - - - - - Initialize a new . - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Return the set of s that are needed - to configure the container according to this configuration element. - - Container that is being configured. - Type that is being registered. - Type that is being mapped to. - Name this registration is under. - One or more objects that should be - applied to the container registration. - - - - Type name for the interceptor to apply. - - - - - Name to use when resolving interceptors from the container. - - - - - Should this interceptor be registered as the default for the contained - type, or only for this particular type/name pair? - - - - - Each element must have a unique key, which is generated by the subclasses. - - - - - A collection of objects as shown - in configuration. - - - - - When overridden in a derived class, creates a new . - - - A new . - - - - - Gets the element key for a specified configuration element when overridden in a derived class. - - - An that acts as the key for the specified . - - The to return the key for. - - - - - Configuration element that provides a top-level element for - configuration interceptors for types in a container. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Apply this element's configuration to the given . - - Container to configure. - - - - The various child elements that are contained in this element. - - - - - Configuration element that represents the configuration for - a specific interceptor, as presented in the config file inside - the <interceptors> element. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Gets a value indicating whether an unknown element is encountered during deserialization. - - - true when an unknown element is encountered while deserializing; otherwise, false. - - The name of the unknown subelement. - The being used for deserialization. - The element identified by is locked. - - or - - One or more of the element's attributes is locked. - - or - - is unrecognized, or the element has an unrecognized attribute. - - or - - The element has a Boolean attribute with an invalid value. - - or - - An attempt was made to deserialize a property more than once. - - or - - An attempt was made to deserialize a property that is not a valid member of the element. - - or - - The element cannot contain a CDATA or text element. - - - - - Type of interceptor to configure. - - - - - The types that this interceptor will be registered against. - - - - - Any value passed to the type converter. - - - - - Type converter to use to create the interceptor, if any. - - - - - A collection of objects - as stored in configuration. - - - - - Gets the element key for a specified configuration element when overridden in a derived class. - - - An that acts as the key for the specified . - - The to return the key for. - - - - - The <key> element that occurs inside an <interceptor> element - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Actually register the interceptor against this type. - - Container to configure. - interceptor to register. - - - - Name registration should be under. To register under the default, leave blank. - - - - - A configuration element representing a matching rule. - - - - - A collection of s for configuration. - - - - - Gets the element key for a specified configuration element when overridden in a derived class. - - - An that acts as the key for the specified . - - The to return the key for. - - - - - Causes the configuration system to throw an exception. - - - true if the unrecognized element was deserialized successfully; otherwise, false. The default is false. - - The name of the unrecognized element. - An input stream that reads XML from the configuration file. - The element specified in is the <clear> element. - starts with the reserved prefix "config" or "lock". - - - - - Retrieve a matching rule element from the collection by name. - - Name to look up. - The rule, or null if not in the collection. - - - - Configuration element for building up an interception policy. - - - - - Gets a value indicating whether an unknown element is encountered during deserialization. - - - true when an unknown element is encountered while deserializing; otherwise, false. - - The name of the unknown subelement. - The being used for deserialization. - The element identified by is locked. - - or - - One or more of the element's attributes is locked. - - or - - is unrecognized, or the element has an unrecognized attribute. - - or - - The element has a Boolean attribute with an invalid value. - - or - - An attempt was made to deserialize a property more than once. - - or - - An attempt was made to deserialize a property that is not a valid member of the element. - - or - - The element cannot contain a CDATA or text element. - - - - - Write the contents of this element to the given . - - The caller of this method has already written the start element tag before - calling this method, so deriving classes only need to write the element content, not - the start or end tags. - Writer to send XML content to. - - - - Name of this policy. - - - - - Matching rules for this policy. - - - - - Call handlers for this policy. - - - - - A collection of in the configuration. - - - - - Gets the element key for a specified configuration element when overridden in a derived class. - - - An that acts as the key for the specified . - - The to return the key for. - - - - - Indexer to retrieve policy element objects by name. - - Name of policy to get. - The element. - - - - A shortcut element to enable the policy injection behavior. - - - - - Return the set of s that are needed - to configure the container according to this configuration element. - - Container that is being configured. - Type that is being registered. - Type that is being mapped to. - Name this registration is under. - One or more objects that should be - applied to the container registration. - - - - Each element must have a unique key, which is generated by the subclasses. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to The abstract type InterceptorRegistrationElement cannot be created. Please create a concrete instance.. - - - - - Looks up a localized string similar to The <injection/> element is not allowed on element named '{0}' because it doesn't have a type attribute.. - - - - - Looks up a localized string similar to The <lifetime/> element is not allowed on element named '{0}' because it doesn't have a type attribute.. - - - - - Looks up a localized string similar to The type name or alias {0} could not be resolved. Please check your configuration file and verify this type name.. - - - - - Looks up a localized string similar to Cannot create instance of type {0} with a default constructor.. - - - - - Looks up a localized string similar to The type name {0} resolved to type {1} is not compatible with the required type {2}.. - - - - - Looks up a localized string similar to The type {0} could not be resolved to a valid type. Please double check your configuration.. - - - - - Looks up a localized string similar to The interception behavior element must have at least one of the 'name' or 'type' attributes.. - - - - diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll b/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll deleted file mode 100644 index 28b3c0e82..000000000 Binary files a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.dll and /dev/null differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.xml b/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.xml deleted file mode 100644 index c282fc211..000000000 --- a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Interception.xml +++ /dev/null @@ -1,3460 +0,0 @@ - - - - Microsoft.Practices.Unity.Interception - - - - - Stores information about a single to be an additional interface for an intercepted object and - configures a container accordingly. - - - - - Stores information about a an intercepted object and configures a container accordingly. - - - - - Initializes a new instance of the with a - . - - A descriptor representing the interception behavior to use. - when is - . - when is not an interface. - - - - - Add policies to the to configure the container to use the represented - as an additional interface for the supplied parameters. - - Interface being registered. - Type to register. - Name used to resolve the type object. - Policy list to add policies to. - - - - Stores information about a single to be an additional interface for an intercepted object and - configures a container accordingly. - - The interface. - - - - Initializes a new instance of the . - - - - - An injection member that lets you specify behaviors that should - apply to all instances of a type in the container regardless - of what name it's resolved under. - - - - - Base class for injection members that allow you to add - interception behaviors. - - - - - Initializes a new instance of the with a - . - - The interception behavior to use. - - - - Initializes a new instance of the with a - given type/name pair. - - Type of behavior to - - - - - Initializes a new instance of the with a - given behavior type. - - Type of behavior to - - - - Add policies to the to configure the container to use the represented - for the supplied parameters. - - Interface being registered. - Type to register. - Name used to resolve the type object. - Policy list to add policies to. - - - - Get the list of behaviors for the current type so that it can be added to. - - Policy list. - Implementation type to set behaviors for. - Name type is registered under. - An instance of . - - - - Create a new that will - supply the given interception behavior to the container. - - Behavior to apply to this type. - - - - Create a new that will - resolve the given type/name pair to get the behavior. - - Type of behavior. - Name for behavior registration. - - - - Create a new that will - resolve the given type to get the behavior. - - Type of behavior. - - - - Get the list of behaviors for the current type so that it can be added to. - - Policy list. - Implementation type to set behaviors for. - Name type is registered under. - An instance of . - - - - A generic version of so you - can give the behavior type using generic syntax. - - Type of the behavior object to apply. - - - - Construct a new instance - that use the given type and name to resolve the behavior object. - - Name of the registration. - - - - Construct a new instance - that uses the given type to resolve the behavior object. - - - - - A that can be passed to the - method to specify - which interceptor to use. This member sets up the default - interceptor for a type - this will be used regardless of which - name is used to resolve the type. - - - - - Construt a new instance that, - when applied to a container, will register the given - interceptor as the default one. - - Interceptor to use. - - - - Construct a new that, when - applied to a container, will register the given type as - the default interceptor. - - Type of interceptor. - Name to use to resolve the interceptor. - - - - Construct a new that, when - applied to a container, will register the given type as - the default interceptor. - - Type of interceptor. - - - - Add policies to the to configure the - container to call this constructor with the appropriate parameter values. - - Type of interface being registered. If no interface, - this will be null. - Type of concrete type being registered. - Name used to resolve the type object. - Policy list to add policies to. - - - - A generic version of so that - you can specify the interceptor type using generics. - - - - - - Create a new instance of . - - Name to use when resolving interceptor. - - - - Create a new instance of . - - - - - An that accumulates a sequence of - instances representing the additional interfaces for an intercepted object. - - - - - An that returns a sequence of - instances representing the additional interfaces for an intercepted object. - - - - - Gets the instances accumulated by this policy. - - - - - Initializes a new instance of the class. - - - - - Gets the instances accumulated by this policy. - - - - - An implementation of that will - resolve the interceptor through the container. - - - - - An interface that determines when to intercept instances - and which interceptor to use. - - - - - Interceptor to use. - - Context for current build operation. - - - - Construct a new that - will resolve the interceptor using the given build key. - - build key to resolve. - - - - Interceptor to use. - - Context for current build operation. - - - - An implementation of that will - resolve the interceptor through the container. - - - - - Interface that controls when and how types get intercepted. - - - - - Interceptor to use to create type proxy - - Context for current build operation. - - - - Cache for proxied type. - - - - - construct a new that - will resolve the interceptor with the given . - - The build key to use to resolve. - - - - Interceptor to use to create type proxy - - Context for current build operation. - - - - Cache for proxied type. - - - - - High-level API for performing interception on existing and new objects. - - - - - Returns a for type which wraps - the supplied . - - The type to intercept. - The instance to intercept. - The to use when creating the proxy. - The interception behaviors for the new proxy. - Any additional interfaces the proxy must implement. - A proxy for compatible with . - when is . - when is . - when is . - when is . - when cannot intercept - . - - - - Returns a for type which wraps - the supplied . - - Type to intercept. - The instance to intercept. - The to use when creating the proxy. - The interception behaviors for the new proxy. - A proxy for compatible with . - when is . - when is . - when is . - when cannot intercept - . - - - - Returns a for type which wraps - the supplied . - - The type to intercept. - The instance to intercept. - The to use when creating the proxy. - The interception behaviors for the new proxy. - Any additional interfaces the proxy must implement. - A proxy for compatible with . - when is . - when is . - when is . - when is . - when is . - when cannot intercept - . - - - - Returns a for type which wraps - the supplied . - - The type to intercept. - The instance to intercept. - The to use when creating the proxy. - The interception behaviors for the new proxy. - A proxy for compatible with . - when is . - when is . - when is . - when is . - when cannot intercept - . - - - - Creates a new instance of type that is intercepted with the behaviors in - . - - The type of the object to create. - The to use when creating the proxy. - The interception behaviors for the new proxy. - Any additional interfaces the proxy must implement. - The arguments for the creation of the new instance. - An instance of a class compatible with that includes execution of the - given . - when is . - when is . - When is . - when cannot intercept - . - - - - Creates a new instance of type that is intercepted with the behaviors in - . - - The type of the object to create. - The to use when creating the proxy. - The interception behaviors for the new proxy. - The arguments for the creation of the new instance. - An instance of a class compatible with that includes execution of the - given . - when is . - when is . - when cannot intercept - . - - - - Creates a new instance of type that is intercepted with the behaviors in - . - - The type of the object to create. - The to use when creating the proxy. - The interception behaviors for the new proxy. - Any additional interfaces the instance must implement. - The arguments for the creation of the new instance. - An instance of a class compatible with that includes execution of the - given . - when is . - when is . - when is . - when is . - when cannot intercept - . - - - - Creates a new instance of type that is intercepted with the behaviors in - . - - The type of the object to create. - The to use when creating the proxy. - The interception behaviors for the new proxy. - The arguments for the creation of the new instance. - An instance of a class compatible with that includes execution of the - given . - when is . - when is . - when is . - when cannot intercept - . - - - - Computes the array with all the additional interfaces for the interception of an object. - - The interception behaviors for the new proxy. - Any additional interfaces the instance must implement. - An array with the required interfaces for - when the interfaces are not valid. - - - - Stores information about the to be used to intercept an object and - configures a container accordingly. - - - - - - Initializes a new instance of the class with an interceptor instance. - - The to use. - when is - . - - - - Initialize a new instance of the class with a given - name and type that will be resolved to provide interception. - - Type of the interceptor - name to use to resolve. - - - - Initialize a new instance of the class with - a given type that will be resolved to provide interception. - - Type of the interceptor. - - - - Add policies to the to configure the container to use the represented - for the supplied parameters. - - Interface being registered. - Type to register. - Name used to resolve the type object. - Policy list to add policies to. - - - - Generic version of that lets you specify an interceptor - type using generic syntax. - - Type of interceptor - - - - Initialize an instance of that will - resolve the given interceptor type. - - - - - Initialize an instance of that will - resolve the given interceptor type and name. - - Name that will be used to resolve the interceptor. - - - - A simple data holder class used to store information about the current - interception operation that's being set up. Useful for creating behaviors - that need to know this stuff (especially the PIAB behavior). - - - - - Create a new instance of that - stores the given , - , and . - - that will be used to - create the intercepting type or proxy. - Type that interception was requested on. - Type of the object that will actually be intercepted. - - - - that will be used to - create the intercepting type or proxy. - - - - - Type that interception was requested on. - - - - - Type of the object that will actually be intercepted. - - - - - This interface is implemented by all proxy objects, type or instance based. - It allows for adding interception behaviors. - - - - - Adds a to the proxy. - - The to add. - - - - Base interface for type and instance based interceptor classes. - - - - - Can this interceptor generate a proxy for the given type? - - Type to check. - True if interception is possible, false if not. - - - - Returns a sequence of methods on the given type that can be - intercepted. - - Type that was specified when this interceptor - was created (typically an interface). - The concrete type of the implementing object. - Sequence of objects. - - - - Interface for interceptors that generate separate proxy - objects to implement interception on instances. - - - - - Create a proxy object that provides interception for . - - Type to generate the proxy of. - Object to create the proxy for. - Additional interfaces the proxy must implement. - The proxy object. - - - - Implementation of that returns a - pre-created interceptor. - - - - - Create a new instance of . - - Interceptor to store. - - - - Interceptor to use. - - Context for current build operation. - - - - A that intercepts objects - in the build chain by creating a proxy object. - - - - - Called during the chain of responsibility for a build operation. The - PostBuildUp method is called when the chain has finished the PreBuildUp - phase and executes in reverse order from the PreBuildUp calls. - - Context of the build operation. - - - - An instance interceptor that works by generating a - proxy class on the fly for a single interface. - - - - - Can this interceptor generate a proxy for the given type? - - Type to check. - True if interception is possible, false if not. - - - - Returns a sequence of methods on the given type that can be - intercepted. - - Type that was specified when this interceptor - was created (typically an interface). - The concrete type of the implementing object. - Sequence of objects. - - - - Create a proxy object that provides interception for . - - Type to generate the proxy of. - Object to create the proxy for. - Additional interfaces the proxy must implement. - The proxy object. - - - - A class used to generate proxy classes for doing interception on - interfaces. - - - - - Create an instance of that - can construct an intercepting proxy for the given interface. - - Type of the interface to intercept. - Additional interfaces the proxy must implement. - - - - Create the type to proxy the requested interface - - - - - - Represents the implementation of an interface method. - - - - - Used to throw an for non-implemented methods on the - additional interfaces. - - - - - This class provides the remoting-based interception mechanism. It is - invoked by a call on the corresponding TransparentProxy - object. It routes calls through the handlers as appropriate. - - - - - Creates a new instance that applies - the given policies to the given target object. - - Target object to intercept calls to. - Type to return as the type being proxied. - Additional interfaces the proxy must implement. - - - - Adds a to the proxy. - - The to add. - - - - Checks whether the proxy that represents the specified object type can be cast to the type represented by the interface. - - - - true if cast will succeed; otherwise, false. - - - The type to cast to. - The object for which to check casting. - The immediate caller makes the call through a reference to the interface and does not have infrastructure permission. - - - - Executes a method call represented by the - parameter. The CLR will call this method when a method is called - on the TransparentProxy. This method runs the invocation through - the call handler pipeline and finally sends it down to the - target object, and then back through the pipeline. - - An object that contains the information - about the method call. - An object contains the - information about the target method's return value. - - - - Returns the target of this intercepted call. - - The target object. - - - - Gets or sets the fully qualified type name of the server object in a . - - - - The fully qualified type name of the server object in a . - - - The immediate caller makes the call through a reference to the interface and does not have infrastructure permission. - - - - An instance interceptor that uses remoting proxies to do the - interception. - - - - - Can this interceptor generate a proxy for the given type? - - Type to check. - True if interception is possible, false if not. - - - - Returns a sequence of methods on the given type that can be - intercepted. - - The intercepted type. - The concrete type of the implementing object. - Sequence of objects. - - - - Create a proxy object that provides interception for . - - Type to generate the proxy of. - Object to create the proxy for. - Additional interfaces the proxy must implement. - The proxy object. - - - - A dumb data holder that returns the methodinfo for both an - interface method and the method that implements that interface - method. - - - - - Construct a new which holds - the given objects. - - MethodInfo for the interface method (may be null if no interface). - MethodInfo for implementing method. - - - - Determines whether the specified is equal to the current . - - - true if the specified is equal to the current ; otherwise, false. - - - The to compare with the current . - - - The parameter is null. - 2 - - - - Serves as a hash function for a particular type. - - - A hash code for the current . - - 2 - - - - Standard equals operator - - - - - standard not equal operator. - - - - - Returns a that represents the current . - - - A that represents the current . - - 2 - - - - The interface method MethodInfo. - - - - - The implementing method MethodInfo. - - - - - Interface for interceptor objects that generate - proxy types. - - - - - Create a type to proxy for the given type . - - Type to proxy. - Additional interfaces the proxy must implement. - New type that can be instantiated instead of the - original type t, and supports interception. - - - - Implementation of that returns a precreated - interceptor object. - - - - - Create a new instance of that - uses the given . - - Interceptor to use. - - - - Interceptor to use to create type proxy - - Context for current build operation. - - - - Cache for proxied type. - - - - - A that hooks up type interception. It looks for - a for the current build key, or the current - build type. If present, it substitutes types so that that proxy class gets - built up instead. On the way back, it hooks up the appropriate handlers. - - - - - Called during the chain of responsibility for a build operation. The - PreBuildUp method is called when the chain is being executed in the - forward direction. - - In this class, PreBuildUp is responsible for figuring out if the - class is proxiable, and if so, replacing it with a proxy class. - Context of the build operation. - - - - Called during the chain of responsibility for a build operation. The - PostBuildUp method is called when the chain has finished the PreBuildUp - phase and executes in reverse order from the PreBuildUp calls. - - In this class, PostBuildUp checks to see if the object was proxyable, - and if it was, wires up the handlers. - Context of the build operation. - - - - This class provides the code needed to implement the - interface on a class. - - - - - This class handles parameter type mapping. When we generate - a generic method, we need to make sure our parameter type - objects line up with the generic parameters on the generated - method, not on the one we're overriding. - - - - - A utility class that takes a set of s - and pulls out shadowed methods, only returning the ones that - are actually accessible to be overriden. - - - - - Take the list of methods and put them together into lists index by method name. - - Methods to sort through. - - - - Given a list of overloads for a method, return only those methods - that are actually visible. In other words, if there's a "new SomeType" method - somewhere, return only the new one, not the one from the base class - that's now hidden. - - Sequence of methods to process. - Sequence of returned methods. - - - - Take a semi-randomly ordered set of methods on a type and - sort them into groups by name and by parameter list. - - The list of methods. - Sequence of lists of methods, grouped by method name. - - - - Given a set of hiding overloads, return only the currently visible one. - - The set of overloads. - The most visible one. - - - - Given a method, return a value indicating how deeply in the - inheritance hierarchy the method is declared. Current type = 0, - parent = 1, grandparent = 2, etc. - - Method to check. - Declaration depth - - - - A implementation that can compare two - based on their parameter lists. - - First to compare. - Second to compare. - < 0, 0, or > 0 based on which one is "greater" than the other. - - - - Compare two parameter lists. - - First parameter list. - Second parameter list. - < 0, 0, or > 0. - - - - Compare two objects by type. - - First - First - < 0, 0, or > 0 - - - - A type based interceptor that works by generated a new class - on the fly that derives from the target class. - - - - - Can this interceptor generate a proxy for the given type? - - Type to check. - True if interception is possible, false if not. - - - - Returns a sequence of methods on the given type that can be - intercepted. - - The intercepted type. - The concrete type of the implementing object. - Sequence of objects. - - - - Create a type to proxy for the given type . - - Type to proxy. - Additional interfaces the proxy must implement. - New type that can be instantiated instead of the - original type t, and supports interception. - - - - An that returns a sequence of - instances for an intercepted object. - - - - - Get the set of object to be used for the given type and - interceptor. - - - This method will return a sequence of s. These behaviors will - only be included if their properties are true. - - Context for the current build operation. - Interceptor that will be used to invoke the behavior. - Type that interception was requested on. - Type that implements the interception. - - - - - Get the set of that can be used to resolve the - behaviors. - - - - - Key for handler pipelines. - - - - - Creates a new for the supplied method. - - The method for the key. - The new key. - - - - Compare two instances. - - Object to compare to. - True if the two keys are equal, false if not. - - - - Calculate a hash code for this instance. - - A hash code. - - - - Compare two instances for equality. - - First of the two keys to compare. - Second of the two keys to compare. - True if the values of the keys are the same, else false. - - - - Compare two instances for inequality. - - First of the two keys to compare. - Second of the two keys to compare. - false if the values of the keys are the same, else true. - - - - Compare two instances. - - Object to compare to. - True if the two keys are equal, false if not. - - - - A collection of objects, indexed - by . Returns an empty pipeline if a - MethodBase is requested that isn't in the dictionary. - - - - - Retrieve the pipeline assocated with the requested . - - The method for which the pipeline is being requested. - The handler pipeline for the given method. If no pipeline has - been set, returns a new empty pipeline. - - - - Set a new pipeline for a method. - - The method on which the pipeline should be set. - The new pipeline. - - - - Get the pipeline for the given method, creating it if necessary. - - Method to retrieve the pipeline for. - Handlers to initialize the pipeline with - True if the pipeline has any handlers in it, false if not. - - - - Attribute used to indicate that no interception should be applied to - the attribute target. - - - - - A class that reads and constructs handlers - based on on the target. - - - - - Base class for Policies that specifies which handlers apply to which methods of an object. - - - This base class always enforces the - before - passing the checks onto derived classes. This way, derived classes do not need to - worry about implementing this check. - It also means that derived classes cannot override this rule. This is considered a feature. - - - - Creates a new empty Policy. - - - - - Creates a new empty policy with the given name. - - Name of the policy. - - - - Checks if the rules in this policy match the given member info. - - MemberInfo to check against. - true if ruleset matches, false if it does not. - - - - Returns ordered collection of handlers in order that apply to the given member. - - Member that may or may not be assigned handlers by this policy. - The to use when creating handlers, - if necessary. - Collection of handlers (possibly empty) that apply to this member. - - - - Given a method on an object, return the set of MethodBases for that method, - plus any inteface methods that the member implements. - - Member to get Method Set for. - The set of methods - - - - Derived classes implement this method to calculate if the policy - will provide any handler to the specified member. - - Member to check. - true if policy applies to this member, false if not. - - - - Derived classes implement this method to supply the list of handlers for - this specific member. - - Member to get handlers for. - The to use when creating handlers, - if necessary. - Enumerable collection of handlers for this method. - - - - Gets the name of this policy. - - The name of the policy. - - - - Constructs a new instance of the . - - - - - Derived classes implement this method to calculate if the policy - will provide any handler to the specified member. - - Member to check. - true if policy applies to this member, false if not. - - - - Derived classes implement this method to supply the list of handlers for - this specific member. - - Member to get handlers for. - The to use when creating handlers, - if necessary. - Enumerable collection of handlers for this method. - - - - Base class for handler attributes used in the attribute-driven - interception policy. - - - - - Derived classes implement this method. When called, it - creates a new call handler as specified in the attribute - configuration. - - The to use when creating handlers, - if necessary. - A new call handler object. - - - - Gets or sets the order in which the handler will be executed. - - - - - The HandlerPipeline class encapsulates a list of s - and manages calling them in the proper order with the right inputs. - - - - - Creates a new with an empty pipeline. - - - - - Creates a new with the given collection - of s. - - Collection of handlers to add to the pipeline. - - - - Execute the pipeline with the given input. - - Input to the method call. - The ultimate target of the call. - Return value from the pipeline. - - - - Get the number of handlers in this pipeline. - - - - - Handlers implement this interface and are called for each - invocation of the pipelines that they're included in. - - - - - Implement this method to execute your handler processing. - - Inputs to the current call to the target. - Delegate to execute to get the next delegate in the handler - chain. - Return value from the target. - - - - Order in which the handler will be executed - - - - - This delegate type is the type that points to the next - method to execute in the current pipeline. - - Inputs to the current method call. - Delegate to get the next handler in the chain. - Return from the next method in the chain. - - - - This delegate type is passed to each handler's Invoke method. - Call the delegate to get the next delegate to call to continue - the chain. - - Next delegate in the handler chain to call. - - - - This interface is implemented by the matching rule classes. - A Matching rule is used to see if a particular policy should - be applied to a class member. - - - - - Tests to see if this rule applies to the given member. - - Member to test. - true if the rule applies, false if it doesn't. - - - - This interface is used to represent the call to a method. - An implementation of IMethodInvocation is passed to the - call handlers so that they may manipulate the call - (typically by changing the parameters) before the final target - gets called. - - - - - Factory method that creates the correct implementation of - IMethodReturn. - - Return value to be placed in the IMethodReturn object. - All arguments passed or returned as out/byref to the method. - Note that this is the entire argument list, including in parameters. - New IMethodReturn object. - - - - Factory method that creates the correct implementation of - IMethodReturn in the presence of an exception. - - Exception to be set into the returned object. - New IMethodReturn object - - - - Gets the inputs for this call. - - - - - Collection of all parameters to the call: in, out and byref. - - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - - - - The object that the call is made on. - - - - - The method on Target that we're aiming at. - - - - - This interface is used to represent the return value from a method. - An implementation of IMethodReturn is returned by call handlers, and - each handler can manipulate the parameters, return value, or add an - exception on the way out. - - - - - The collection of output parameters. If the method has no output - parameters, this is a zero-length list (never null). - - - - - Returns value from the method call. - - This value is null if the method has no return value. - - - - If the method threw an exception, the exception object is here. - - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - This is guaranteed to be the same dictionary that was used - in the IMethodInvocation object, so handlers can set context - properties in the pre-call phase and retrieve them in the after-call phase. - - - - - A Unity container extension that allows you to configure - whether an object should be intercepted and which mechanism should - be used to do it, and also provides a convenient set of methods for - configuring injection for instances. - - - - - - - - - - Initial the container with this extension's functionality. - - - - - API to configure interception for a type. - - Type to intercept. - Name type is registered under. - Interceptor to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept. - Interceptor to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept - Name type is registered under. - Interceptor object to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept - Interceptor object to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept. - Name type is registered under. - Instance interceptor to use. - This extension object. - - - - Set the interceptor for a type, regardless of what name is used to resolve the instances. - - Type to intercept - Interceptor instance. - This extension object. - - - - Set the interceptor for a type, regardless of what name is used to resolve the instances. - - Type to intercept - Interceptor instance. - This extension object. - - - - API to configure interception for a type. - - Type to intercept. - Instance interceptor to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept. - Name type is registered under. - Instance interceptor to use. - This extension object. - - - - API to configure interception for a type. - - Type to intercept. - Instance interceptor to use. - This extension object. - - - - API to configure the default interception settings for a type. - - Type the interception is being configured for. - The interceptor to use by default. - This extension object. - - - - API to configure the default interception settings for a type. - - Type the interception is being configured for. - The interceptor to use by default. - This extension object. - - - - Starts the definition of a new . - - The policy name. - - This is a convenient way for defining a new policy and the - instances and instances that are required by a policy. - - This mechanism is just a shortcut for what can be natively expressed by wiring up together objects - with repeated calls to the method. - - - - - This interface represents a list of either input or output - parameters. It implements a fixed size list, plus a couple - of other utility methods. - - - - - Gets the name of a parameter based on index. - - Index of parameter to get the name for. - Name of the requested parameter. - - - - Gets the ParameterInfo for a particular parameter by index. - - Index for this parameter. - ParameterInfo object describing the parameter. - - - - Gets the ParameterInfo for a particular parameter by name. - - Name of the parameter. - ParameterInfo object for the named parameter. - - - - Fetches a parameter's value by name. - - parameter name. - value of the named parameter. - - - - A is a matching rule that - is a collection of other matching rules. All the contained - rules much match for the set to match. - - - - - Tests the given member against the ruleset. The member matches - if all contained rules in the ruleset match against it. - - If the ruleset is empty, then Matches passes since no rules failed. - MemberInfo to test. - true if all contained rules match, false if any fail. - - - - A implementation that fails to match - if the method in question has the ApplyNoPolicies attribute on it. - - - - - Check if the matches this rule. - - This rule returns true if the member does NOT have the - on it, or a containing type doesn't have the attribute. - Member to check. - True if the rule matches, false if it doesn't. - - - - An that matches the assembly name of the - given member. - - - - - Constructs a new with the given - assembly name (or partial name). - - Assembly name to match. - - - - Constructs a new that matches - against the given assembly. - - Assembly to match. - - - - Determines if the supplied matches the rule. - - - This rule matches if the assembly containing the given - matches the name given. The rule used for matches lets you include the parts - of the assembly name in order. You can specify assembly name only, assembly and version, - assembly, version and culture, or the fully qualified assembly name. - - Member to check. - true if is in a matching assembly, false if not. - - - - An implementation of that checks to see if the - member (or type containing that member) have any s. - - - - - Checks to see if matches the rule. - - Returns true if any s are present on the method - or the type containing that method. - Member to check. - true if member matches, false if not. - - - - An implementation of that checks to see if - the member tested has an arbitrary attribute applied. - - - - - Constructs a new . - - Attribute to match. - If true, checks the base class for attributes as well. - - - - Checks to see if the given matches the rule. - - Member to check. - true if it matches, false if not. - - - - Class used for storing information about a single name/ignoreCase - pair. This class is also used as a base class for other classes that - need this pair plus some other properties. - - - - - Constructs an empty object with empty - string and ignoreCase = false. - - - - - Constructs a object that matches the given - string. IgnoreCase is false. - - The name to match. - - - - Constructs a object that matches the - given string, setting the ignoreCase flag to the given value. - - The name to match. - true to do case insensitive comparison, false to do case sensitive. - - - - Gets or sets the name to match. - - The name to match. - - - - Gets or sets whether to do case sensitive comparisons of Match. - - If false, case sensitive comparison. If true, case insensitive comparisons. - - - - A matching rule that matches when the given member name is - the same as the one supplied in the constructor. - - - - - Create a new that matches the - given member name. Wildcards are allowed. - - Name to match against. Comparison is case sensitive. - - - - Create a new that matches the - given member name. Wildcards are allowed. - - Name to match against. - If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. - - - - Create a new that matches the - given member names. Wildcards are allowed. - - collections of names to match. If any of these patterns match, the rule matches. Comparisons are case sensitive. - - - - Create a new that matches the - given member names. Wildcards are allowed. - - Collections of names to match. If any of these patterns match, the rule matches. - If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. - - - - Create a new that matches - one of the given member names. Wildcards are allowed. - - List of objects containing - the pattern to match and case sensitivity flag. - - - - Check if the given matches one of this - object's matching patterns. - - Member to check. - True if matches, false if not. - - - - Match methods with the given names and method signature. - - - - - Creates a new that matches methods - with the given name, with parameter types matching the given list. - - Method name to match. Wildcards are allowed. - Parameter type names to match, in order. Wildcards are allowed. - If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. - - - - Create a new that matches methods - with the given name, with parameter types matching the given list. - - Name comparisons are case sensitive. - Method name to match. Wildcards are allowed. - Parameter type names to match, in order. Wildcards are allowed. - - - - Create a new that matches any method - with parameter types matching the given list. - - Name comparisons are case sensitive. - Parameter type names to match, in order. Wildcards are allowed. - - - - Create a new that matches any method - with parameter types matching the given list. - - Parameter type names to match, in order. Wildcards are allowed. - If false, name comparisons are case sensitive. If true, name comparisons are case insensitive. - - - - Check to see if the given method matches the name and signature. - - Member to check. - True if match, false if not. - - - - An that matches members in a given namespace. You can - specify either a single namespace (e.g. System.Data) or a namespace root - (e.g. System.Data.* to match types in that namespace or below. - - - - - Create a new that matches the given - namespace. - - namespace name to match. Comparison is case sensitive. - - - - Create a new that matches the given - namespace. - - namespace name to match. - If false, comparison is case sensitive. If true, comparison is case insensitive. - - - - Create a new that matches any of - the given namespace names. - - Collection of namespace names to match. - - - - Check to see if the given is in a namespace - matched by any of our given namespace names. - - member to check. - True if member is contained in a matching namespace, false if not. - - - - A helper class that encapsulates the name to match, case sensitivity flag, - and the wildcard rules for matching namespaces. - - - - - Construct a new that matches the - given namespace name. - - Namespace name to match. - If false, comparison is case sensitive. If true, comparison is case insensitive. - - - - Check if the given type is in a matching namespace. - - Type to check. - True if type is in a matching namespace, false if not. - - - - An that matches methods that have any parameters - of the given types. - - - - - Creates a new that matches if any of - the method parameters match ones in the given collection. - - Collection of that - describes the types to match. - - - - Check the given member to see if it has any matching parameters. - - Member to match. - true if member matches, false if it doesn't. - - - - The list of describing the parameter types to match. - - The collection of matches. - - - - Describes the type of parameter to match. - - - - - Input parameter - - - - - Output parameter - - - - - Input or output parameter - - - - - Method return value - - - - - A class that stores information about a single type to match. - - - - - Creates a new uninitialized . - - - - - Creates a new matching the given kind of parameter. - - of parameter to match. - - - - Creates a new matching the given parameter - type and kind. - - Parameter name to match. - of parameter to match. - - - - Creates a new matching the given parameter - type and kind. - - Parameter name to match. - If false, compare type names using case-sensitive comparison. - If true, compare type names using case-insensitive comparison. - of parameter to match. - - - - What kind of parameter to match. - - indicating which kind of parameters to match. - - - - An implementation that matches properties - by name. You can match the getter, setter, or both. - - - - - Construct a new that matches the - getter or setter of the given property. - - Name of the property. Name comparison is case sensitive. Wildcards are allowed. - - - - Constructs a new that matches the - given method of the given property. - - Name of the property. Name comparison is case sensitive. Wildcards are allowed. - Match the getter, setter, or both. - - - - Constructs a new that matches the - given method of the given property. - - Name of the property to match. Wildcards are allowed. - Match the getter, setter, or both. - If false, name comparison is case sensitive. If true, name comparison is case insensitive. - - - - Constructs a new that matches any of the - given properties. - - Collection of defining which - properties to match. - - - - Checks if the given member matches the rule. - - Member to check. - True if it matches, false if it does not. - - - - Specifies which methods of a property should be matches by - the . - - - - - Match the property getter method. - - - - - Match the property setter method. - - - - - Match either the getter or setter method. - - - - - Information about a property match. - - - - - Construct a new that matches the get or set methods - of the given property name, and does a case-sensitive comparison. - - Property name to match. - - - - Constructs a new that matches the given methods of - the given property name, doing a case-sensitive comparison. - - Property name to match. - specifying which methods of the property to match. - - - - Construt a new that matches the given methods of - the given property name. - - Property name to match. - specifying which methods of the property to match. - If false, name comparison is case sensitive. If true, name comparison is case insensitive. - - - - The to use when doing name comparisons on this property. - - Specifies which methods of the property to match. - - - - An that checks to see if a member has a specified - type. - - - - - Construct a new that matches - members with the given return type. - - Type to look for. - - - - Construct a new that matches - the given return type by name. - - See the class for details on how - type name matches are done. - Type name to match. Name comparisons are case sensitive. - - - - Construct a new that matches - the given return type by name. - - See the class for details on how - type name matches are done. - Type name to match. - If false, name comparison is case sensitive. If true, comparison - is case insensitive. - - - - Check to see if the given member has a matching return type. - - Member to check. - true if return types match, false if they don't. - - - - A that checks a member for the presence - of the on the method, property, or class, and - that the given string matches. - - - - - Constructs a new , looking for - the given string. The comparison is case sensitive. - - tag string to match. - - - - Constructs a new , looking for - the given string. The comparison is case sensitive if is - false, case insensitive if is true. - - tag string to match. - if false, case-senstive comparison. If true, case-insensitive comparison. - - - - Check the given member for the presence of the and - match the strings. - - Member to check. - True if tag strings match, false if they don't. - - - - A matching rule that matches when the member is declared - in the given type. - - - - - Constructs a new that matches the - given type. - - The type to match. - - - - Constructs a new that matches types - with the given name. - - Comparisons are case sensitive. - Type name to match. - - - - Constructs a new that matches types - with the given name, using the given case sensitivity. - - Type name to match. - if false, do case-sensitive comparison. If true, do case-insensitive. - - - - Constructs a new that will match - any of the type names given in the collection of match information. - - The match information to match. - - - - Checks if the given member matches any of this object's matches. - - Member to match. - True if match, false if not. - - - - Checks if the given type matches any of this object's matches. - - Matches may be on the namespace-qualified type name or just the type name. - Type to check. - True if it matches, false if it doesn't. - - - - An implementation of that wraps a provided array - containing the argument values. - - - - - Construct a new that wraps the - given array of arguments. - - Complete collection of arguments. - Type information about about each parameter. - A that indicates - whether a particular parameter is part of the collection. Used to filter out only input - parameters, for example. - - - - Gets the ParameterInfo for a particular parameter by index. - - Index for this parameter. - ParameterInfo object describing the parameter. - - - - Gets the for the given named parameter. - - Name of parameter. - for the requested parameter. - - - - Gets the name of a parameter based on index. - - Index of parameter to get the name for. - Name of the requested parameter. - - - - Adds to the collection. This is a read only collection, so this method - always throws . - - Object to add. - Nothing, always throws. - Always throws this. - - - - Checks to see if the collection contains the given object. - - Tests for the object using object.Equals. - Object to find. - true if object is in collection, false if it is not. - - - - Remove all items in the collection. This collection is fixed-size, so this - method always throws . - - This is always thrown. - - - - Returns the index of the given object, or -1 if not found. - - Object to find. - zero-based index of found object, or -1 if not found. - - - - Inserts a new item. This is a fixed-size collection, so this method throws . - - Index to insert at. - Always throws. - Always throws this. - - - - Removes the given item. This is a fixed-size collection, so this method throws . - - Always throws. - Always throws this. - - - - Removes the given item. This is a fixed-size collection, so this method throws . - - Always throws. - Always throws this. - - - - Copies the contents of this collection to the given array. - - Destination array. - index to start copying from. - - - - Gets an enumerator object to support the foreach construct. - - Enumerator object. - - - - Fetches a parameter's value by name. - - parameter name. - value of the named parameter. - - - - Gets the value of a parameter based on index. - - Index of parameter to get the value for. - Value of the requested parameter. - - - - Is this collection read only? - - No, it is not read only, the contents can change. - - - - Is this collection fixed size? - - Yes, it is. - - - - Total number of items in the collection. - - The count. - - - - Gets a synchronized version of this collection. WARNING: Not implemented completely, - DO NOT USE THIS METHOD. - - - - - Is the object synchronized for thread safety? - - No, it isn't. - - - - An internal struct that maps the index in the arguments collection to the - corresponding about that argument. - - - - - Construct a new object linking the - given index and object. - - Index into arguments array (zero-based). - for the argument at . - - - - Transient class that supports convenience method for specifying interception policies. - - - - - Adds a reference to matching rule by name. - - The name for the matching rule. - - The than allows further configuration of the policy. - - - The details of how the rule should be created by the container must be specified using a - standard injection specification mechanism. - - - - - Makes a matching rule in the current policy. - - The new for the policy. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a matching rule in the current policy. - - The type for the new matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a matching rule in the current policy, using the given . - - The type for the new matching rule. - The that controls the lifetime - of the configured matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a matching rule in the current policy. - - The type for the new matching rule. - The name for the injection configuration for the matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a matching rule in the current policy, using the given . - - The type for the new matching rule. - The name for the injection configuration for the matching rule. - The that controls the lifetime - of the configured matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a matching rule in the current policy. - - The type for the new matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a matching rule in the current policy, using the given . - - The type for the new matching rule. - The that controls the lifetime - of the configured matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a matching rule in the current policy. - - The type for the new matching rule. - The name for the injection configuration for the matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a matching rule in the current policy, - using the given . - - The type for the new matching rule. - The name for the injection configuration for the matching rule. - The that controls the lifetime - of the configured matching rule. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Adds a reference to call handler by name. - - The name for the call handler. - - The than allows further configuration of the policy. - - - The details of how the handler should be created by the container must be specified using a - standard injection specification mechanism. - - - - - Makes a call handler in the current policy. - - The new for the policy. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a call handler in the current policy. - - The type for the new call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a call handler in the current policy, using the given . - - The type for the new call handler. - The that controls the lifetime - of the configured call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a call handler in the current policy. - - The type for the new call handler. - The name for the injection configuration for the call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a call handler in the current policy, - using the given . - - The type for the new call handler. - The name for the injection configuration for the call handler. - The that controls the lifetime - of the configured call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a call handler in the current policy. - - The type for the new call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new and makes it available - as a call handler in the current policy, using the given . - - The type for the new call handler. - The that controls the lifetime - of the configured call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a call handler in the current policy. - - The type for the new call handler. - The name for the injection configuration for the call handler . - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - Configures injection for a new using the specified name - and makes it available as a call handler in the current policy, - using the given . - - The type for the new call handler. - The name for the injection configuration for the call handler . - The that controls the lifetime - of the configured call handler. - Objects containing the details on which members to inject and how. - - The than allows further configuration of the policy. - - - - - The that is currently being - configured. - - - - - The extension to which the policy was added. - - - Use this property to start adding a new policy. - - - - - A collection of Policy objects. The policies within a PolicySet combine using - an "or" operation. - - - - - Creates a new containing the given policies. - - Policies to put into the policy set. - - - - Gets the policies that apply to the given member. - - Member to get policies for. - Collection of policies that apply to this member. - - - - Gets the policies in the that do not - apply to the given member. - - Member to check. - Collection of policies that do not apply to . - - - - Gets the handlers that apply to the given member based on all policies in the . - - Member to get handlers for. - The to use when creating handlers, - if necessary. - Collection of call handlers for . - - - - Interceptor that performs policy injection. - - - - - Interception behaviors implement this interface and are called for each - invocation of the pipelines that they're included in. - - - - - Implement this method to execute your behavior processing. - - Inputs to the current call to the target. - Delegate to execute to get the next delegate in the behavior chain. - Return value from the target. - - - - Returns the interfaces required by the behavior for the objects it intercepts. - - The required interfaces. - - - - Returns a flag indicating if this behavior will actually do anything when invoked. - - This is used to optimize interception. If the behaviors won't actually - do anything (for example, PIAB where no policies match) then the interception - mechanism can be skipped completely. - - - - Initializes a new instance of the with a pipeline manager. - - The for the new instance. - - - - Initializes a new instance of the with the given information - about what's being intercepted and the current set of injection policies. - - Information about what will be injected. - Current injection policies. - Unity container that can be used to resolve call handlers. - - - - Applies the policy injection handlers configured for the invoked method. - - Inputs to the current call to the target. - Delegate to execute to get the next delegate in the handler - chain. - Return value from the target. - - - - Returns the interfaces required by the behavior for the objects it intercepts. - - An empty array of interfaces. - - - - Returns a flag indicating if this behavior will actually do anything when invoked. - - This is used to optimize interception. If the behaviors won't actually - do anything (for example, PIAB where no policies match) then the interception - mechanism can be skipped completely. - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Intercepted abstract method was invoked.. - - - - - Looks up a localized string similar to Additional interfaces do not have an implementation.. - - - - - Looks up a localized string similar to The additional interfaces supplied are invalid: {0}. - - - - - Looks up a localized string similar to Type must be a subclass of System.Attribute.. - - - - - Looks up a localized string similar to Could not create instance of type {0} with no constructor arguments.. - - - - - Looks up a localized string similar to Collection contains a null element.. - - - - - Looks up a localized string similar to The collection of interfaces is null.. - - - - - Looks up a localized string similar to The required interfaces for behavior {1} are invalid: {0}. - - - - - Looks up a localized string similar to The type {0} is not an interface.. - - - - - Looks up a localized string similar to Null type.. - - - - - Looks up a localized string similar to The type {0} is an open generic.. - - - - - Looks up a localized string similar to The type {0} is not interceptable.. - - - - - Looks up a localized string similar to Could not find the implementation of interface method {0}.{1} in type {2}. - - - - - Looks up a localized string similar to Null is not permitted as an interception behavior.. - - - - - A class that wraps the inputs of a into the - interface. - - - - - Constructs a new that wraps the - given method call and arguments. - - The call message. - The arguments. - - - - An implementation of that wraps the - remoting-based in the PIAB call - interface. - - - - - Creates a new implementation that wraps - the given , with the given ultimate - target object. - - Remoting call message object. - Ultimate target of the method call. - - - - Factory method that creates the correct implementation of - IMethodReturn. - - In this implementation we create an instance of . - Return value to be placed in the IMethodReturn object. - All arguments passed or returned as out/byref to the method. - Note that this is the entire argument list, including in parameters. - New IMethodReturn object. - - - - Factory method that creates the correct implementation of - IMethodReturn in the presence of an exception. - - Exception to be set into the returned object. - New IMethodReturn object - - - - Gets the inputs for this call. - - The input collection. - - - - Collection of all parameters to the call: in, out and byref. - - The arguments collection. - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - The invocation context dictionary. - - - - The object that the call is made on. - - The target object. - - - - The method on Target that we're aiming at. - - The target method base. - - - - Gets the collection of arguments being passed to the target. - - This method exists becuase the underlying remoting call message - does not let handlers change the arguments. - Array containing the arguments to the target. - - - - An implementation of that wraps the - remoting call and return messages. - - - - - Creates a new object that contains a - return value. - - The original call message that invoked the method. - Return value from the method. - Collections of arguments passed to the method (including the new - values of any out params). - Invocation context dictionary passed into the call. - - - - Creates a new object that contains an - exception thrown by the target. - - Exception that was thrown. - The original call message that invoked the method. - Invocation context dictionary passed into the call. - - - - Constructs a for the remoting - infrastructure based on the contents of this object. - - The instance. - - - - The collection of output parameters. If the method has no output - parameters, this is a zero-length list (never null). - - The output parameter collection. - - - - Return value from the method call. - - This value is null if the method has no return value. - The return value. - - - - If the method threw an exception, the exception object is here. - - The exception, or null if no exception was thrown. - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - This is guaranteed to be the same dictionary that was used - in the IMethodInvocation object, so handlers can set context - properties in the pre-call phase and retrieve them in the after-call phase. - - The invocation context dictionary. - - - - A class that wraps the outputs of a into the - interface. - - - - - Constructs a new that wraps the - given method call and arguments. - - The call message. - The arguments. - - - - A policy is a combination of a matching rule set and a set of handlers. - If the policy applies to a member, then the handlers will be enabled for - that member. - - - - - Creates a new object with a set of matching rules - and the names to use when resolving handlers. - - - - - Creates a new object with a name, a set of matching rules - and the names to use when resolving handlers. - - - - - Checks if the rules in this policy match the given member info. - - MemberInfo to check against. - true if ruleset matches, false if it does not. - - - - Return ordered collection of handlers in order that apply to the given member. - - Member that may or may not be assigned handlers by this policy. - The to use when creating handlers, - if necessary. - Collection of handlers (possibly empty) that apply to this member. - - - - A simple attribute used to "tag" classes, methods, or properties with a - string that can later be matched via the . - - - - - Creates a new with the given string. - - The tag string. - - - - The string tag for this attribute. - - the tag. - - - - Stores information about a single to be used on an intercepted object and - configures a container accordingly. - - - - - - Initializes a new instance of the with a - . - - The interception behavior to use. - - - - Initializes a new instance of the with a - given type/name pair. - - Type of behavior to - - - - - Initializes a new instance of the with a - given behavior type. - - Type of behavior to - - - - Get the list of behaviors for the current type so that it can be added to. - - Policy list. - Implementation type to set behaviors for. - Name type is registered under. - An instance of . - - - - A generic version of that lets you - specify behavior types using generic syntax. - - Type of behavior to register. - - - - Initializes a new instance of the with a - given behavior type. - - - - - Initializes a new instance of the with a - given type/name pair. - - Name to use to resolve the behavior. - - - - An that accumulates a sequence of - instances for an intercepted object. - - - - - Get the set of object to be used for the given type and - interceptor. - - - This method will return a sequence of s. These behaviors will - only be included if their properties are true. - - Context for the current build operation. - Interceptor that will be used to invoke the behavior. - Type that interception was requested on. - Type that implements the interception. - - - - - Get the set of that can be used to resolve the - behaviors. - - - - - The InterceptionBehaviorPipeline class encapsulates a list of s - and manages calling them in the proper order with the right inputs. - - - - - Creates a new with an empty pipeline. - - - - - Creates a new with the given collection - of s. - - Collection of interception behaviors to add to the pipeline. - - - - Execute the pipeline with the given input. - - Input to the method call. - The ultimate target of the call. - Return value from the pipeline. - - - - Adds a to the pipeline. - - The interception behavior to add. - - - - Get the number of interceptors in this pipeline. - - - - - This delegate type is the type that points to the next - method to execute in the current pipeline. - - Inputs to the current method call. - Delegate to get the next interceptor in the chain. - Return from the next method in the chain. - - - - This delegate type is passed to each interceptor's Invoke method. - Call the delegate to get the next delegate to call to continue - the chain. - - Next delegate in the interceptor chain to call. - - - - A "glob" is a string matching pattern. It is similar to the - matches available in the file system (*.cs, for example). The Glob - class implements this string matching. - - Glob supports the following metacharacters: - * - match zero or more characters - ? - match any one character - [abc] - match one character if it's in the characters inside the brackets. - All other characters in the glob are literals. - - - - - Constructs a new instance that matches the given pattern. - - - The pattern match is case sensitive by default. - - Pattern to use. See summary for - details of the pattern. - - - - Constructs a new instance that matches the given pattern. - - The pattern to use. See summary for - details of the patterns supported. - If true, perform a case sensitive match. - If false, perform a case insensitive comparison. - - - - Checks to see if the given string matches the pattern. - - String to check. - True if it matches, false if it doesn't. - - - - A collection of utility functions to encapsulate details of - reflection and finding attributes. - - - - - Given a MethodBase for a property's get or set method, - return the corresponding property info. - - MethodBase for the property's get or set method. - PropertyInfo for the property, or null if method is not part of a property. - - - - Given a MethodInfo for a property's get or set method, - return the corresponding property info. - - MethodBase for the property's get or set method. - PropertyInfo for the property, or null if method is not part of a property. - - - - Given a particular MemberInfo, return the custom attributes of the - given type on that member. - - Type of attribute to retrieve. - The member to look at. - True to include attributes inherited from base classes. - Array of found attributes. - - - - Given a particular MemberInfo, find all the attributes that apply to this - member. Specifically, it returns the attributes on the type, then (if it's a - property accessor) on the property, then on the member itself. - - Type of attribute to retrieve. - The member to look at. - true to include attributes inherited from base classes. - Array of found attributes. - - - - A small implementation of that returns the - given object. - - - - - Create a new instance. - - Information about which constructor to select. - - - - Choose the constructor to call for the given type. - - Current build context - The to add any - generated resolver objects into. - The chosen constructor. - - - - MethodInfo objects for the methods we need to generate - calls to on IMethodInvocation. - - - - - Class that handles generating the dynamic types used for interception. - - - - - Create a new that will generate a - wrapper class for the requested . - - Type to generate the wrapper for. - Additional interfaces the proxy must implement. - - - - Create the wrapper class for the given type. - - Wrapper type. - - - - Represents the implementation of a method override. - - - - - Used to throw an for overrides on abstract methods. - - - - - Implementation of used - by the virtual method interceptor. - - - - - Construct a new instance for the - given target object and method, passing the - to the target method. - - Object that is target of this invocation. - Method on to call. - Values for the parameters. - - - - Factory method that creates the correct implementation of - IMethodReturn. - - Return value to be placed in the IMethodReturn object. - All arguments passed or returned as out/byref to the method. - Note that this is the entire argument list, including in parameters. - New IMethodReturn object. - - - - Factory method that creates the correct implementation of - IMethodReturn in the presence of an exception. - - Exception to be set into the returned object. - New IMethodReturn object - - - - Gets the inputs for this call. - - - - - Collection of all parameters to the call: in, out and byref. - - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - - - - The object that the call is made on. - - - - - The method on Target that we're aiming at. - - - - - An implementation of used by - the virtual method interception mechanism. - - - - - Construct a instance that returns - a value. - - The method invocation. - Return value (should be null if method returns void). - All arguments (including current values) passed to the method. - - - - Construct a instance for when the target method throws an exception. - - The method invocation. - Exception that was thrown. - - - - The collection of output parameters. If the method has no output - parameters, this is a zero-length list (never null). - - - - - Returns value from the method call. - - This value is null if the method has no return value. - - - - If the method threw an exception, the exception object is here. - - - - - Retrieves a dictionary that can be used to store arbitrary additional - values. This allows the user to pass values between call handlers. - - This is guaranteed to be the same dictionary that was used - in the IMethodInvocation object, so handlers can set context - properties in the pre-call phase and retrieve them in the after-call phase. - - - - diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll b/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll deleted file mode 100644 index 84f1870df..000000000 Binary files a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.dll and /dev/null differ diff --git a/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll b/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll deleted file mode 100644 index 0ce1d2818..000000000 Binary files a/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll and /dev/null differ diff --git a/packages/Unity.2.1.505.0/Unity.2.1.505.0.nupkg b/packages/Unity.2.1.505.0/Unity.2.1.505.0.nupkg new file mode 100644 index 000000000..9df836221 Binary files /dev/null and b/packages/Unity.2.1.505.0/Unity.2.1.505.0.nupkg differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.Configuration.dll similarity index 88% rename from packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll rename to packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.Configuration.dll index 619a5721f..3bf4b2761 100644 Binary files a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.dll and b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.Configuration.dll differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.xml b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.Configuration.xml similarity index 100% rename from packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.Configuration.xml rename to packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.Configuration.xml diff --git a/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.dll b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.dll new file mode 100644 index 000000000..0d1a8950d Binary files /dev/null and b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.dll differ diff --git a/packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.xml b/packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.xml similarity index 100% rename from packages/Unity.2.0/lib/20/Microsoft.Practices.Unity.xml rename to packages/Unity.2.1.505.0/lib/NET35/Microsoft.Practices.Unity.xml diff --git a/packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll b/packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll new file mode 100644 index 000000000..f83c42685 Binary files /dev/null and b/packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.dll differ diff --git a/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml b/packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml similarity index 99% rename from packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml rename to packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml index 37c7a1172..1df14f6c6 100644 --- a/packages/Unity.2.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml +++ b/packages/Unity.2.1.505.0/lib/SL30/Microsoft.Practices.Unity.Silverlight.xml @@ -4044,6 +4044,63 @@ Context of the build operation. + + + A that stores objects in the locator and + lifetime container provided by the context. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + + + + A method that does whatever is needed to clean up + as part of cleaning up after an exception. + + + Don't do anything that could throw in this method, + it will cause later recover operations to get skipped + and play real havok with the stack trace. + + + + + An implementation of that does nothing, + ensuring that a new object gets created every time. + + + + + Retrieve a value from the backing store associated with this Lifetime policy. + + the object desired, or null if no such object is currently stored. + + + + Stores the given value into backing store for retrieval later. + + The object being stored. + + + + Remove the given object from backing store. + + Represents a chain of responsibility for builder strategies partitioned by stages. diff --git a/packages/Unity.2.1.505.0/tools/Utils.psm1 b/packages/Unity.2.1.505.0/tools/Utils.psm1 new file mode 100644 index 000000000..209582df5 Binary files /dev/null and b/packages/Unity.2.1.505.0/tools/Utils.psm1 differ diff --git a/packages/Unity.2.1.505.0/tools/install.ps1 b/packages/Unity.2.1.505.0/tools/install.ps1 new file mode 100644 index 000000000..7a225dd7d Binary files /dev/null and b/packages/Unity.2.1.505.0/tools/install.ps1 differ diff --git a/packages/jQuery.1.5.2/jQuery.1.5.2.nupkg b/packages/jQuery.1.5.2/jQuery.1.5.2.nupkg deleted file mode 100644 index 542ba025d..000000000 Binary files a/packages/jQuery.1.5.2/jQuery.1.5.2.nupkg and /dev/null differ diff --git a/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1-vsdoc.js b/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1-vsdoc.js new file mode 100644 index 000000000..87ccbc7fc --- /dev/null +++ b/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1-vsdoc.js @@ -0,0 +1,6938 @@ +/* +* This file has been generated to support Visual Studio IntelliSense. +* You should not use this file at runtime inside the browser--it is only +* intended to be used only for design-time IntelliSense. Please use the +* standard jQuery library for all production use. +* +* Comment version: 1.6.1 +*/ + +/*! +* jQuery JavaScript Library v1.6.1 +* http://jquery.com/ +* +* Distributed in whole under the terms of the MIT +* +* Copyright 2010, John Resig +* +* Permission is hereby granted, free of charge, to any person obtaining +* a copy of this software and associated documentation files (the +* "Software"), to deal in the Software without restriction, including +* without limitation the rights to use, copy, modify, merge, publish, +* distribute, sublicense, and/or sell copies of the Software, and to +* permit persons to whom the Software is furnished to do so, subject to +* the following conditions: +* +* The above copyright notice and this permission notice shall be +* included in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +* +* Includes Sizzle.js +* http://sizzlejs.com/ +* Copyright 2010, The Dojo Foundation +* Released under the MIT and BSD Licenses. +*/ + +(function ( window, undefined ) { +var jQuery = function( selector, context ) { +/// +/// 1: Accepts a string containing a CSS selector which is then used to match a set of elements. +/// 1.1 - $(selector, context) +/// 1.2 - $(element) +/// 1.3 - $(elementArray) +/// 1.4 - $(jQuery object) +/// 1.5 - $() +/// 2: Creates DOM elements on the fly from the provided string of raw HTML. +/// 2.1 - $(html, ownerDocument) +/// 2.2 - $(html, props) +/// 3: Binds a function to be executed when the DOM has finished loading. +/// 3.1 - $(callback) +/// +/// +/// A string containing a selector expression +/// +/// +/// A DOM Element, Document, or jQuery to use as context +/// +/// + + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }; +jQuery.Deferred = function( func ) { + + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + }); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }; +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; +jQuery._Deferred = function() { + + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }; +jQuery._data = function( elem, name, data ) { + + return jQuery.data( elem, name, data, true ); + }; +jQuery._mark = function( elem, type ) { + + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }; +jQuery._unmark = function( force, elem, type ) { + + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }; +jQuery.acceptData = function( elem ) { + + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + }; +jQuery.access = function( elems, key, value, exec, fn, pass ) { + + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }; +jQuery.active = 0; +jQuery.ajax = function( url, options ) { +/// +/// Perform an asynchronous HTTP (Ajax) request. +/// 1 - jQuery.ajax(url, settings) +/// 2 - jQuery.ajax(settings) +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. +/// + + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + // Callbacks context + callbackContext = s.context || s, + // Context for global events + // It's the callbackContext if one was provided in the options + // and if it's a DOM node or a jQuery collection + globalEventContext = callbackContext !== s && + ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? + jQuery( callbackContext ) : jQuery.event, + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery._Deferred(), + // Status-dependent callbacks + statusCode = s.statusCode || {}, + // ifModified key + ifModifiedKey, + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + // Response headers + responseHeadersString, + responseHeaders, + // transport + transport, + // timeout handle + timeoutTimer, + // Cross-domain detection vars + parts, + // The jqXHR state + state = 0, + // To know if global events are to be dispatched + fireGlobals, + // Loop variable + i, + // Fake xhr + jqXHR = { + + readyState: 0, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( !state ) { + var lname = name.toLowerCase(); + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match === undefined ? null : match; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + statusText = statusText || "abort"; + if ( transport ) { + transport.abort( statusText ); + } + done( 0, statusText ); + return this; + } + }; + + // Callback for when everything is done + // It is defined here because jslint complains if it is declared + // at the end of the function (which would be more logical and readable) + function done( status, statusText, responses, headers ) { + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status ? 4 : 0; + + var isSuccess, + success, + error, + response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, + lastModified, + etag; + + // If successful, handle type chaining + if ( status >= 200 && status < 300 || status === 304 ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + + if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) { + jQuery.lastModified[ ifModifiedKey ] = lastModified; + } + if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) { + jQuery.etag[ ifModifiedKey ] = etag; + } + } + + // If not modified + if ( status === 304 ) { + + statusText = "notmodified"; + isSuccess = true; + + // If we have data + } else { + + try { + success = ajaxConvert( s, response ); + statusText = "success"; + isSuccess = true; + } catch(e) { + // We have a parsererror + statusText = "parsererror"; + error = e; + } + } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if( !statusText || status ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = statusText; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] ); + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + // Attach deferreds + deferred.promise( jqXHR ); + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + jqXHR.complete = completeDeferred.done; + + // Status-dependent callbacks + jqXHR.statusCode = function( map ) { + if ( map ) { + var tmp; + if ( state < 2 ) { + for( tmp in map ) { + statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; + } + } else { + tmp = map[ jqXHR.status ]; + jqXHR.then( tmp, tmp ); + } + } + return this; + }; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // We also use the url parameter if available + s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); + + // Determine if a cross-domain request is in order + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) + ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefiler, stop there + if ( state === 2 ) { + return false; + } + + // We can fire global events as of now if asked to + fireGlobals = s.global; + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; + } + + // Get ifModifiedKey before adding the anti-cache parameter + ifModifiedKey = s.url; + + // Add anti-cache in url if needed + if ( s.cache === false ) { + + var ts = jQuery.now(), + // try replacing _= if it is there + ret = s.url.replace( rts, "$1_=" + ts ); + + // if nothing was replaced, add timestamp to the end + s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + ifModifiedKey = ifModifiedKey || s.url; + if ( jQuery.lastModified[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); + } + if ( jQuery.etag[ ifModifiedKey ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); + } + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? + s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + // Abort if not done already + jqXHR.abort(); + return false; + + } + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = setTimeout( function(){ + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch (e) { + // Propagate exception as error if not done + if ( status < 2 ) { + done( -1, e ); + // Simply rethrow otherwise + } else { + jQuery.error( e ); + } + } + } + + return jqXHR; + }; +jQuery.ajaxPrefilter = function( dataTypeExpression, func ) { +/// +/// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). +/// +/// +/// An optional string containing one or more space-separated dataTypes +/// +/// +/// A handler to set default values for future Ajax requests. +/// +/// + + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + if ( jQuery.isFunction( func ) ) { + var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), + i = 0, + length = dataTypes.length, + dataType, + list, + placeBefore; + + // For each dataType in the dataTypeExpression + for(; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +jQuery.ajaxSettings = { "url": 'http://localhost:25813/', +"isLocal": false, +"global": true, +"type": 'GET', +"contentType": 'application/x-www-form-urlencoded', +"processData": true, +"async": true, +"accepts": {}, +"contents": {}, +"responseFields": {}, +"converters": {}, +"jsonp": 'callback' }; +jQuery.ajaxSetup = function ( target, settings ) { +/// +/// Set default values for future Ajax requests. +/// +/// +/// A set of key/value pairs that configure the default Ajax request. All options are optional. +/// + + if ( !settings ) { + // Only one parameter, we extend ajaxSettings + settings = target; + target = jQuery.extend( true, jQuery.ajaxSettings, settings ); + } else { + // target was provided, we extend into it + jQuery.extend( true, target, jQuery.ajaxSettings, settings ); + } + // Flatten fields we don't want deep extended + for( var field in { context: 1, url: 1 } ) { + if ( field in settings ) { + target[ field ] = settings[ field ]; + } else if( field in jQuery.ajaxSettings ) { + target[ field ] = jQuery.ajaxSettings[ field ]; + } + } + return target; + }; +jQuery.ajaxTransport = function( dataTypeExpression, func ) { + + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + if ( jQuery.isFunction( func ) ) { + var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), + i = 0, + length = dataTypes.length, + dataType, + list, + placeBefore; + + // For each dataType in the dataTypeExpression + for(; i < length; i++ ) { + dataType = dataTypes[ i ]; + // We control if we're asked to add before + // any existing element + placeBefore = /^\+/.test( dataType ); + if ( placeBefore ) { + dataType = dataType.substr( 1 ) || "*"; + } + list = structure[ dataType ] = structure[ dataType ] || []; + // then we add to the structure accordingly + list[ placeBefore ? "unshift" : "push" ]( func ); + } + } + }; +jQuery.attr = function( elem, name, value, pass ) { + + var nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + name = notxml && jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; + + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) && + (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + hooks = formHook; + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml ) { + return hooks.get( elem, name ); + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }; +jQuery.attrFix = { "tabindex": 'tabIndex' }; +jQuery.attrFn = { "val": true, +"css": true, +"html": true, +"text": true, +"data": true, +"width": true, +"height": true, +"offset": true, +"blur": true, +"focus": true, +"focusin": true, +"focusout": true, +"load": true, +"resize": true, +"scroll": true, +"unload": true, +"click": true, +"dblclick": true, +"mousedown": true, +"mouseup": true, +"mousemove": true, +"mouseover": true, +"mouseout": true, +"mouseenter": true, +"mouseleave": true, +"change": true, +"select": true, +"submit": true, +"keydown": true, +"keypress": true, +"keyup": true, +"error": true }; +jQuery.attrHooks = { "type": {}, +"tabIndex": {}, +"value": {} }; +jQuery.bindReady = function() { + + if ( readyList ) { + return; + } + + readyList = jQuery._Deferred(); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }; +jQuery.boxModel = true; +jQuery.browser = { "msie": true, +"version": '9.0' }; +jQuery.buildFragment = function( args, nodes, scripts ) { + + var fragment, cacheable, cacheresults, + doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document); + + // Only cache "small" (1/2 KB) HTML strings that are associated with the main document + // Cloning options loses the selected state, so don't cache them + // IE 6 doesn't like it when you put or elements in a fragment + // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache + if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document && + args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) { + + cacheable = true; + + cacheresults = jQuery.fragments[ args[0] ]; + if ( cacheresults && cacheresults !== 1 ) { + fragment = cacheresults; + } + } + + if ( !fragment ) { + fragment = doc.createDocumentFragment(); + jQuery.clean( args, doc, fragment, scripts ); + } + + if ( cacheable ) { + jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1; + } + + return { fragment: fragment, cacheable: cacheable }; +}; +jQuery.cache = {}; +jQuery.camelCase = function( string ) { + + return string.replace( rdashAlpha, fcamelCase ); + }; +jQuery.clean = function( elems, context, fragment, scripts ) { + + var checkScriptType; + + context = context || document; + + // !context.createElement fails in IE with an error but returns typeof 'object' + if ( typeof context.createElement === "undefined" ) { + context = context.ownerDocument || context[0] && context[0].ownerDocument || document; + } + + var ret = [], j; + + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + if ( typeof elem === "number" ) { + elem += ""; + } + + if ( !elem ) { + continue; + } + + // Convert html string into DOM nodes + if ( typeof elem === "string" ) { + if ( !rhtml.test( elem ) ) { + elem = context.createTextNode( elem ); + } else { + // Fix "XHTML"-style tags in all browsers + elem = elem.replace(rxhtmlTag, "<$1>"); + + // Trim whitespace, otherwise indexOf won't work as expected + var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), + wrap = wrapMap[ tag ] || wrapMap._default, + depth = wrap[0], + div = context.createElement("div"); + + // Go to html and back, then peel off extra wrappers + div.innerHTML = wrap[1] + elem + wrap[2]; + + // Move to the right depth + while ( depth-- ) { + div = div.lastChild; + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + var hasBody = rtbody.test(elem), + tbody = tag === "table" && !hasBody ? + div.firstChild && div.firstChild.childNodes : + + // String was a bare or + wrap[1] === "
" && !hasBody ? + div.childNodes : + []; + + for ( j = tbody.length - 1; j >= 0 ; --j ) { + if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { + tbody[ j ].parentNode.removeChild( tbody[ j ] ); + } + } + } + + // IE completely kills leading whitespace when innerHTML is used + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); + } + + elem = div.childNodes; + } + } + + // Resets defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + var len; + if ( !jQuery.support.appendChecked ) { + if ( elem[0] && typeof (len = elem.length) === "number" ) { + for ( j = 0; j < len; j++ ) { + findInputs( elem[j] ); + } + } else { + findInputs( elem ); + } + } + + if ( elem.nodeType ) { + ret.push( elem ); + } else { + ret = jQuery.merge( ret, elem ); + } + } + + if ( fragment ) { + checkScriptType = function( elem ) { + return !elem.type || rscriptType.test( elem.type ); + }; + for ( i = 0; ret[i]; i++ ) { + if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { + scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); + + } else { + if ( ret[i].nodeType === 1 ) { + var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType ); + + ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); + } + fragment.appendChild( ret[i] ); + } + } + } + + return ret; + }; +jQuery.cleanData = function( elems ) { + + var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special, + deleteExpando = jQuery.support.deleteExpando; + + for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { + if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { + continue; + } + + id = elem[ jQuery.expando ]; + + if ( id ) { + data = cache[ id ] && cache[ id ][ internalKey ]; + + if ( data && data.events ) { + for ( var type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + + // Null the DOM reference to avoid IE6/7/8 leak (#7054) + if ( data.handle ) { + data.handle.elem = null; + } + } + + if ( deleteExpando ) { + delete elem[ jQuery.expando ]; + + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } + + delete cache[ id ]; + } + } + }; +jQuery.clone = function( elem, dataAndEvents, deepDataAndEvents ) { + + var clone = elem.cloneNode(true), + srcElements, + destElements, + i; + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + // IE copies events bound via attachEvent when using cloneNode. + // Calling detachEvent on the clone will also remove the events + // from the original. In order to get around this, we use some + // proprietary methods to clear the events. Thanks to MooTools + // guys for this hotness. + + cloneFixAttributes( elem, clone ); + + // Using Sizzle here is crazy slow, so we use getElementsByTagName + // instead + srcElements = getAll( elem ); + destElements = getAll( clone ); + + // Weird iteration because IE will replace the length property + // with an element if you are cloning the body and one of the + // elements on the page has a name or id of "length" + for ( i = 0; srcElements[i]; ++i ) { + cloneFixAttributes( srcElements[i], destElements[i] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + cloneCopyEvent( elem, clone ); + + if ( deepDataAndEvents ) { + srcElements = getAll( elem ); + destElements = getAll( clone ); + + for ( i = 0; srcElements[i]; ++i ) { + cloneCopyEvent( srcElements[i], destElements[i] ); + } + } + } + + // Return the cloned set + return clone; + }; +jQuery.contains = function( a, b ) { +/// +/// Check to see if a DOM node is within another DOM node. +/// +/// +/// The DOM element that may contain the other element. +/// +/// +/// The DOM node that may be contained by the other element. +/// +/// + + return a !== b && (a.contains ? a.contains(b) : true); + }; +jQuery.css = function( elem, name, extra ) { + + var ret, hooks; + + // Make sure that we're working with the right name + name = jQuery.camelCase( name ); + hooks = jQuery.cssHooks[ name ]; + name = jQuery.cssProps[ name ] || name; + + // cssFloat needs a special treatment + if ( name === "cssFloat" ) { + name = "float"; + } + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { + return ret; + + // Otherwise, if a way to get the computed value exists, use that + } else if ( curCSS ) { + return curCSS( elem, name ); + } + }; +jQuery.cssHooks = { "opacity": {}, +"height": {}, +"width": {} }; +jQuery.cssNumber = { "zIndex": true, +"fontWeight": true, +"opacity": true, +"zoom": true, +"lineHeight": true, +"widows": true, +"orphans": true }; +jQuery.cssProps = { "float": 'cssFloat' }; +jQuery.curCSS = function( elem, name, extra ) { + + var ret, hooks; + + // Make sure that we're working with the right name + name = jQuery.camelCase( name ); + hooks = jQuery.cssHooks[ name ]; + name = jQuery.cssProps[ name ] || name; + + // cssFloat needs a special treatment + if ( name === "cssFloat" ) { + name = "float"; + } + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { + return ret; + + // Otherwise, if a way to get the computed value exists, use that + } else if ( curCSS ) { + return curCSS( elem, name ); + } + }; +jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { +/// +/// 1: Store arbitrary data associated with the specified element. Returns the value that was set. +/// 1.1 - jQuery.data(element, key, value) +/// 2: Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. +/// 2.1 - jQuery.data(element, key) +/// 2.2 - jQuery.data(element) +/// +/// +/// The DOM element to associate with the data. +/// +/// +/// A string naming the piece of data to set. +/// +/// +/// The new data value. +/// +/// + + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); + } else { + cache[ id ] = jQuery.extend(cache[ id ], name); + } + } + + thisCache = cache[ id ]; + + // Internal jQuery data is stored in a separate object inside the object's data + // cache in order to avoid key collisions between internal data and user-defined + // data + if ( pvt ) { + if ( !thisCache[ internalKey ] ) { + thisCache[ internalKey ] = {}; + } + + thisCache = thisCache[ internalKey ]; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + + return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; + }; +jQuery.dequeue = function( elem, type ) { +/// +/// Execute the next function on the queue for the matched element. +/// +/// +/// A DOM element from which to remove and execute a queued function. +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// + + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + defer; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + }; +jQuery.dir = function( elem, dir, until ) { + + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }; +jQuery.each = function( object, callback, args ) { +/// +/// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. +/// +/// +/// The object or array to iterate over. +/// +/// +/// The function that will be executed on every object. +/// +/// + + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }; +jQuery.easing = {}; +jQuery.error = function( msg ) { +/// +/// Takes a string and throws an exception containing it. +/// +/// +/// The message to send out. +/// + + throw msg; + }; +jQuery.etag = {}; +jQuery.event = { "global": {}, +"customEvent": {}, +"props": ['altKey','attrChange','attrName','bubbles','button','cancelable','charCode','clientX','clientY','ctrlKey','currentTarget','data','detail','eventPhase','fromElement','handler','keyCode','layerX','layerY','metaKey','newValue','offsetX','offsetY','pageX','pageY','prevValue','relatedNode','relatedTarget','screenX','screenY','shiftKey','srcElement','target','toElement','view','wheelDelta','which'], +"guid": 100000000, +"special": {}, +"triggered": }; +jQuery.expr = { "order": ['ID','CLASS','NAME','TAG'], +"match": {}, +"leftMatch": {}, +"attrMap": {}, +"attrHandle": {}, +"relative": {}, +"find": {}, +"preFilter": {}, +"filters": {}, +"setFilters": {}, +"filter": {}, +":": {} }; +jQuery.extend = function() { +/// +/// Merge the contents of two or more objects together into the first object. +/// 1 - jQuery.extend(target, object1, objectN) +/// 2 - jQuery.extend(deep, target, object1, objectN) +/// +/// +/// If true, the merge becomes recursive (aka. deep copy). +/// +/// +/// The object to extend. It will receive the new properties. +/// +/// +/// An object containing additional properties to merge in. +/// +/// +/// Additional objects containing properties to merge in. +/// +/// + + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; +jQuery.filter = function( expr, elems, not ) { + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }; +jQuery.find = function( query, context, extra, seed ) { + + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; +jQuery.fn = { "selector": '', +"jquery": '1.6.1', +"length": 0 }; +jQuery.fragments = {}; +jQuery.fx = function( elem, options, prop ) { + + this.options = options; + this.elem = elem; + this.prop = prop; + + options.orig = options.orig || {}; + }; +jQuery.get = function( url, data, callback, type ) { +/// +/// Load data from the server using a HTTP GET request. +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A map or string that is sent to the server with the request. +/// +/// +/// A callback function that is executed if the request succeeds. +/// +/// +/// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). +/// + + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +jQuery.getJSON = function( url, data, callback ) { +/// +/// Load JSON-encoded data from the server using a GET HTTP request. +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A map or string that is sent to the server with the request. +/// +/// +/// A callback function that is executed if the request succeeds. +/// + + return jQuery.get( url, data, callback, "json" ); + }; +jQuery.getScript = function( url, callback ) { +/// +/// Load a JavaScript file from the server using a GET HTTP request, then execute it. +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A callback function that is executed if the request succeeds. +/// +/// + + return jQuery.get( url, undefined, callback, "script" ); + }; +jQuery.globalEval = function( data ) { +/// +/// Execute some JavaScript code globally. +/// +/// +/// The JavaScript code to execute. +/// + + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }; +jQuery.grep = function( elems, callback, inv ) { +/// +/// Finds the elements of an array which satisfy a filter function. The original array is not affected. +/// +/// +/// The array to search through. +/// +/// +/// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object. +/// +/// +/// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false. +/// +/// + + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }; +jQuery.guid = 1; +jQuery.hasData = function( elem ) { +/// +/// Determine whether an element has any jQuery data associated with it. +/// +/// +/// A DOM element to be checked for data. +/// +/// + + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + + return !!elem && !isEmptyDataObject( elem ); + }; +jQuery.holdReady = function( hold ) { +/// +/// Holds or releases the execution of jQuery's ready event. +/// +/// +/// Indicates whether the ready hold is being requested or released +/// +/// + + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }; +jQuery.inArray = function( elem, array ) { +/// +/// Search for a specified value within an array and return its index (or -1 if not found). +/// +/// +/// The value to search for. +/// +/// +/// An array through which to search. +/// +/// + + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }; +jQuery.isEmptyObject = function( obj ) { +/// +/// Check to see if an object is empty (contains no properties). +/// +/// +/// The object that will be checked to see if it's empty. +/// +/// + + for ( var name in obj ) { + return false; + } + return true; + }; +jQuery.isFunction = function( obj ) { +/// +/// Determine if the argument passed is a Javascript function object. +/// +/// +/// Object to test whether or not it is a function. +/// +/// + + return jQuery.type(obj) === "function"; + }; +jQuery.isNaN = function( obj ) { + + return obj == null || !rdigit.test( obj ) || isNaN( obj ); + }; +jQuery.isPlainObject = function( obj ) { +/// +/// Check to see if an object is a plain object (created using "{}" or "new Object"). +/// +/// +/// The object that will be checked to see if it's a plain object. +/// +/// + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }; +jQuery.isReady = true; +jQuery.isWindow = function( obj ) { +/// +/// Determine whether the argument is a window. +/// +/// +/// Object to test whether or not it is a window. +/// +/// + + return obj && typeof obj === "object" && "setInterval" in obj; + }; +jQuery.isXMLDoc = function( elem ) { +/// +/// Check to see if a DOM node is within an XML document (or is an XML document). +/// +/// +/// The DOM node that will be checked to see if it's in an XML document. +/// +/// + + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; +jQuery.lastModified = {}; +jQuery.makeArray = function( array, results ) { +/// +/// Convert an array-like object into a true JavaScript array. +/// +/// +/// Any object to turn into a native Array. +/// +/// + + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }; +jQuery.map = function( elems, callback, arg ) { +/// +/// Translate all items in an array or object to new array of items. +/// 1 - jQuery.map(array, callback(elementOfArray, indexInArray)) +/// 2 - jQuery.map(arrayOrObject, callback( value, indexOrKey )) +/// +/// +/// The Array to translate. +/// +/// +/// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. +/// +/// + + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }; +jQuery.merge = function( first, second ) { +/// +/// Merge the contents of two arrays together into the first array. +/// +/// +/// The first array to merge, the elements of second added. +/// +/// +/// The second array to merge into the first, unaltered. +/// +/// + + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }; +jQuery.noConflict = function( deep ) { +/// +/// Relinquish jQuery's control of the $ variable. +/// +/// +/// A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). +/// +/// + + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }; +jQuery.noData = { "embed": true, +"object": 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000', +"applet": true }; +jQuery.nodeName = function( elem, name ) { + + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }; +jQuery.noop = function() { +/// +/// An empty function. +/// +/// +}; +jQuery.now = function() { +/// +/// Return a number representing the current time. +/// +/// + + return (new Date()).getTime(); + }; +jQuery.nth = function( cur, result, dir, elem ) { + + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }; +jQuery.offset = {}; +jQuery.param = function( a, traditional ) { +/// +/// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. +/// 1 - jQuery.param(obj) +/// 2 - jQuery.param(obj, traditional) +/// +/// +/// An array or object to serialize. +/// +/// +/// A Boolean indicating whether to perform a traditional "shallow" serialization. +/// +/// + + var s = [], + add = function( key, value ) { + // If value is a function, invoke it and return its value + value = jQuery.isFunction( value ) ? value() : value; + s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings.traditional; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + }); + + } else { + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( var prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); + }; +jQuery.parseJSON = function( data ) { +/// +/// Takes a well-formed JSON string and returns the resulting JavaScript object. +/// +/// +/// The JSON string to parse. +/// +/// + + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return (new Function( "return " + data ))(); + + } + jQuery.error( "Invalid JSON: " + data ); + }; +jQuery.parseXML = function( data , xml , tmp ) { +/// +/// Parses a string into an XML document. +/// +/// +/// a well-formed XML string to be parsed +/// +/// + + + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + + tmp = xml.documentElement; + + if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { + jQuery.error( "Invalid XML: " + data ); + } + + return xml; + }; +jQuery.post = function( url, data, callback, type ) { +/// +/// Load data from the server using a HTTP POST request. +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A map or string that is sent to the server with the request. +/// +/// +/// A callback function that is executed if the request succeeds. +/// +/// +/// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). +/// + + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + return jQuery.ajax({ + type: method, + url: url, + data: data, + success: callback, + dataType: type + }); + }; +jQuery.prop = function( elem, name, value ) { + + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Try to normalize/fix the name + name = notxml && jQuery.propFix[ name ] || name; + + hooks = jQuery.propHooks[ name ]; + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { + return elem[ name ]; + } + } + }; +jQuery.propFix = { "tabindex": 'tabIndex', +"readonly": 'readOnly', +"for": 'htmlFor', +"class": 'className', +"maxlength": 'maxLength', +"cellspacing": 'cellSpacing', +"cellpadding": 'cellPadding', +"rowspan": 'rowSpan', +"colspan": 'colSpan', +"usemap": 'useMap', +"frameborder": 'frameBorder', +"contenteditable": 'contentEditable' }; +jQuery.propHooks = { "selected": {} }; +jQuery.proxy = function( fn, context ) { +/// +/// Takes a function and returns a new one that will always have a particular context. +/// 1 - jQuery.proxy(function, context) +/// 2 - jQuery.proxy(context, name) +/// +/// +/// The function whose context will be changed. +/// +/// +/// The object to which the context (this) of the function should be set. +/// +/// + + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }; +jQuery.queue = function( elem, type, data ) { +/// +/// 1: Show the queue of functions to be executed on the matched element. +/// 1.1 - jQuery.queue(element, queueName) +/// 2: Manipulate the queue of functions to be executed on the matched element. +/// 2.1 - jQuery.queue(element, queueName, newQueue) +/// 2.2 - jQuery.queue(element, queueName, callback()) +/// +/// +/// A DOM element where the array of queued functions is attached. +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// +/// An array of functions to replace the current queue contents. +/// +/// + + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } + }; +jQuery.ready = function( wait ) { + + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }; +jQuery.readyWait = 0; +jQuery.removeAttr = function( elem, name ) { + + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }; +jQuery.removeData = function( elem, name, pvt /* Internal Use Only */ ) { +/// +/// Remove a previously-stored piece of data. +/// +/// +/// A DOM element from which to remove data. +/// +/// +/// A string naming the piece of data to remove. +/// +/// + + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + if ( thisCache ) { + delete thisCache[ name ]; + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !isEmptyDataObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( pvt ) { + delete cache[ id ][ internalKey ]; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + var internalCache = cache[ id ][ internalKey ]; + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + if ( jQuery.support.deleteExpando || cache != window ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the entire user cache at once because it's faster than + // iterating through each key, but we need to continue to persist internal + // data if it existed + if ( internalCache ) { + cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + + cache[ id ][ internalKey ] = internalCache; + + // Otherwise, we need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + } else if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }; +jQuery.removeEvent = function( elem, type, handle ) { + + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + }; +jQuery.sibling = function( n, elem ) { + + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + }; +jQuery.speed = function( speed, easing, fn ) { + + var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction(easing) && easing + }; + + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : + opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default; + + // Queueing + opt.old = opt.complete; + opt.complete = function( noUnmark ) { + if ( opt.queue !== false ) { + jQuery.dequeue( this ); + } else if ( noUnmark !== false ) { + jQuery._unmark( this ); + } + + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + }; + + return opt; + }; +jQuery.style = function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, origName = jQuery.camelCase( name ), + style = elem.style, hooks = jQuery.cssHooks[ origName ]; + + name = jQuery.cssProps[ origName ] || origName; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Make sure that NaN and null values aren't set. See: #7116 + if ( type === "number" && isNaN( value ) || value == null ) { + return; + } + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && rrelNum.test( value ) ) { + value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) { + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }; +jQuery.sub = function() { +/// +/// Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object. +/// +/// + + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }; +jQuery.support = { "leadingWhitespace": true, +"tbody": true, +"htmlSerialize": true, +"style": true, +"hrefNormalized": true, +"opacity": true, +"cssFloat": true, +"checkOn": true, +"optSelected": false, +"getSetAttribute": true, +"submitBubbles": true, +"changeBubbles": true, +"focusinBubbles": true, +"deleteExpando": true, +"noCloneEvent": true, +"inlineBlockNeedsLayout": false, +"shrinkWrapBlocks": false, +"reliableMarginRight": true, +"noCloneChecked": false, +"optDisabled": true, +"radioValue": false, +"checkClone": , +"appendChecked": true, +"boxModel": true, +"reliableHiddenOffsets": true, +"ajax": true, +"cors": false }; +jQuery.swap = function( elem, options, callback ) { + + var old = {}; + + // Remember the old values, and insert the new ones + for ( var name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + }; +jQuery.text = function( elems ) { + + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += Sizzle.getText( elem.childNodes ); + } + } + + return ret; +}; +jQuery.trim = function( text ) { +/// +/// Remove the whitespace from the beginning and end of a string. +/// +/// +/// The string to trim. +/// +/// + + return text == null ? + "" : + trim.call( text ); + }; +jQuery.type = function( obj ) { +/// +/// Determine the internal JavaScript [[Class]] of an object. +/// +/// +/// Object to get the internal JavaScript [[Class]] of. +/// +/// + + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }; +jQuery.uaMatch = function( ua ) { + + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }; +jQuery.unique = function( results ) { +/// +/// Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. +/// +/// +/// The Array of DOM elements. +/// +/// + + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; +jQuery.uuid = 0; +jQuery.valHooks = { "option": {}, +"select": {}, +"radio": {}, +"checkbox": {} }; +jQuery.when = function( firstParam ) { +/// +/// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. +/// +/// +/// One or more Deferred objects, or plain JavaScript objects. +/// +/// + + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + }; +jQuery.Event.prototype.isDefaultPrevented = function returnFalse() { +/// +/// Returns whether event.preventDefault() was ever called on this event object. +/// +/// + + return false; +}; +jQuery.Event.prototype.isImmediatePropagationStopped = function returnFalse() { +/// +/// Returns whether event.stopImmediatePropagation() was ever called on this event object. +/// +/// + + return false; +}; +jQuery.Event.prototype.isPropagationStopped = function returnFalse() { +/// +/// Returns whether event.stopPropagation() was ever called on this event object. +/// +/// + + return false; +}; +jQuery.Event.prototype.preventDefault = function() { +/// +/// If this method is called, the default action of the event will not be triggered. +/// +/// + + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }; +jQuery.Event.prototype.stopImmediatePropagation = function() { +/// +/// Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. +/// + + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }; +jQuery.Event.prototype.stopPropagation = function() { +/// +/// Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. +/// + + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }; +jQuery.prototype._toggle = function( fn ) { + + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }; +jQuery.prototype.add = function( selector, context ) { +/// +/// Add elements to the set of matched elements. +/// 1 - add(selector) +/// 2 - add(elements) +/// 3 - add(html) +/// 4 - add(selector, context) +/// +/// +/// A string representing a selector expression to find additional elements to add to the set of matched elements. +/// +/// +/// The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method. +/// +/// + + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }; +jQuery.prototype.addClass = function( value ) { +/// +/// Adds the specified class(es) to each of the set of matched elements. +/// 1 - addClass(className) +/// 2 - addClass(function(index, currentClass)) +/// +/// +/// One or more class names to be added to the class attribute of each matched element. +/// +/// + + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this); + self.addClass( value.call(this, i, self.attr("class") || "") ); + }); + } + + if ( value && typeof value === "string" ) { + var classNames = (value || "").split( rspace ); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className ) { + elem.className = value; + + } else { + var className = " " + elem.className + " ", + setClass = elem.className; + + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { + setClass += " " + classNames[c]; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }; +jQuery.prototype.after = function() { +/// +/// Insert content, specified by the parameter, after each element in the set of matched elements. +/// 1 - after(content, content) +/// 2 - after(function(index)) +/// +/// +/// HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements. +/// +/// +/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements. +/// +/// + + if ( this[0] && this[0].parentNode ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + }); + } else if ( arguments.length ) { + var set = this.pushStack( this, "after", arguments ); + set.push.apply( set, jQuery(arguments[0]).toArray() ); + return set; + } + }; +jQuery.prototype.ajaxComplete = function( f ){ +/// +/// Register a handler to be called when Ajax requests complete. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.ajaxError = function( f ){ +/// +/// Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.ajaxSend = function( f ){ +/// +/// Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.ajaxStart = function( f ){ +/// +/// Register a handler to be called when the first Ajax request begins. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.ajaxStop = function( f ){ +/// +/// Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.ajaxSuccess = function( f ){ +/// +/// Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. +/// +/// +/// The function to be invoked. +/// +/// + + return this.bind( o, f ); + }; +jQuery.prototype.andSelf = function() { +/// +/// Add the previous set of elements on the stack to the current set. +/// +/// + + return this.add( this.prevObject ); + }; +jQuery.prototype.animate = function( prop, speed, easing, callback ) { +/// +/// Perform a custom animation of a set of CSS properties. +/// 1 - animate(properties, duration, easing, complete) +/// 2 - animate(properties, options) +/// +/// +/// A map of CSS properties that the animation will move toward. +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + var optall = jQuery.speed(speed, easing, callback); + + if ( jQuery.isEmptyObject( prop ) ) { + return this.each( optall.complete, [ false ] ); + } + + // Do not change referenced properties as per-property easing will be lost + prop = jQuery.extend( {}, prop ); + + return this[ optall.queue === false ? "each" : "queue" ](function() { + // XXX 'this' does not always have a nodeName when running the + // test suite + + if ( optall.queue === false ) { + jQuery._mark( this ); + } + + var opt = jQuery.extend( {}, optall ), + isElement = this.nodeType === 1, + hidden = isElement && jQuery(this).is(":hidden"), + name, val, p, + display, e, + parts, start, end, unit; + + // will store per property easing and be used to determine when an animation is complete + opt.animatedProperties = {}; + + for ( p in prop ) { + + // property name normalization + name = jQuery.camelCase( p ); + if ( p !== name ) { + prop[ name ] = prop[ p ]; + delete prop[ p ]; + } + + val = prop[ name ]; + + // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) + if ( jQuery.isArray( val ) ) { + opt.animatedProperties[ name ] = val[ 1 ]; + val = prop[ name ] = val[ 0 ]; + } else { + opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; + } + + if ( val === "hide" && hidden || val === "show" && !hidden ) { + return opt.complete.call( this ); + } + + if ( isElement && ( name === "height" || name === "width" ) ) { + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ]; + + // Set display property to inline-block for height/width + // animations on inline elements that are having width/height + // animated + if ( jQuery.css( this, "display" ) === "inline" && + jQuery.css( this, "float" ) === "none" ) { + if ( !jQuery.support.inlineBlockNeedsLayout ) { + this.style.display = "inline-block"; + + } else { + display = defaultDisplay( this.nodeName ); + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( display === "inline" ) { + this.style.display = "inline-block"; + + } else { + this.style.display = "inline"; + this.style.zoom = 1; + } + } + } + } + } + + if ( opt.overflow != null ) { + this.style.overflow = "hidden"; + } + + for ( p in prop ) { + e = new jQuery.fx( this, opt, p ); + val = prop[ p ]; + + if ( rfxtypes.test(val) ) { + e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); + + } else { + parts = rfxnum.exec( val ); + start = e.cur(); + + if ( parts ) { + end = parseFloat( parts[2] ); + unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); + + // We need to compute starting value + if ( unit !== "px" ) { + jQuery.style( this, p, (end || 1) + unit); + start = ((end || 1) / e.cur()) * start; + jQuery.style( this, p, start + unit); + } + + // If a +=/-= token was provided, we're doing a relative animation + if ( parts[1] ) { + end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; + } + + e.custom( start, end, unit ); + + } else { + e.custom( start, val, "" ); + } + } + } + + // For JS strict compliance + return true; + }); + }; +jQuery.prototype.append = function() { +/// +/// Insert content, specified by the parameter, to the end of each element in the set of matched elements. +/// 1 - append(content, content) +/// 2 - append(function(index, html)) +/// +/// +/// DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. +/// +/// +/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements. +/// +/// + + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 ) { + this.appendChild( elem ); + } + }); + }; +jQuery.prototype.appendTo = function( selector ) { +/// +/// Insert every element in the set of matched elements to the end of the target. +/// +/// +/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter. +/// +/// + + var ret = [], + insert = jQuery( selector ), + parent = this.length === 1 && this[0].parentNode; + + if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { + insert[ original ]( this[0] ); + return this; + + } else { + for ( var i = 0, l = insert.length; i < l; i++ ) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +jQuery.prototype.attr = function( name, value ) { +/// +/// 1: Get the value of an attribute for the first element in the set of matched elements. +/// 1.1 - attr(attributeName) +/// 2: Set one or more attributes for the set of matched elements. +/// 2.1 - attr(attributeName, value) +/// 2.2 - attr(map) +/// 2.3 - attr(attributeName, function(index, attr)) +/// +/// +/// The name of the attribute to set. +/// +/// +/// A value to set for the attribute. +/// +/// + + return jQuery.access( this, name, value, true, jQuery.attr ); + }; +jQuery.prototype.before = function() { +/// +/// Insert content, specified by the parameter, before each element in the set of matched elements. +/// 1 - before(content, content) +/// 2 - before(function) +/// +/// +/// HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements. +/// +/// +/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements. +/// +/// + + if ( this[0] && this[0].parentNode ) { + return this.domManip(arguments, false, function( elem ) { + this.parentNode.insertBefore( elem, this ); + }); + } else if ( arguments.length ) { + var set = jQuery(arguments[0]); + set.push.apply( set, this.toArray() ); + return this.pushStack( set, "before", arguments ); + } + }; +jQuery.prototype.bind = function( type, data, fn ) { +/// +/// Attach a handler to an event for the elements. +/// 1 - bind(eventType, eventData, handler(eventObject)) +/// 2 - bind(eventType, eventData, false) +/// 3 - bind(events) +/// +/// +/// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +jQuery.prototype.blur = function( data, fn ) { +/// +/// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. +/// 1 - blur(handler(eventObject)) +/// 2 - blur(eventData, handler(eventObject)) +/// 3 - blur() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.change = function( data, fn ) { +/// +/// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. +/// 1 - change(handler(eventObject)) +/// 2 - change(eventData, handler(eventObject)) +/// 3 - change() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.children = function( until, selector ) { +/// +/// Get the children of each element in the set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.clearQueue = function( type ) { +/// +/// Remove from the queue all items that have not yet been run. +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// + + return this.queue( type || "fx", [] ); + }; +jQuery.prototype.click = function( data, fn ) { +/// +/// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. +/// 1 - click(handler(eventObject)) +/// 2 - click(eventData, handler(eventObject)) +/// 3 - click() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.clone = function( dataAndEvents, deepDataAndEvents ) { +/// +/// Create a deep copy of the set of matched elements. +/// 1 - clone(withDataAndEvents) +/// 2 - clone(withDataAndEvents, deepWithDataAndEvents) +/// +/// +/// A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *For 1.5.0 the default value is incorrectly true. This will be changed back to false in 1.5.1 and up. +/// +/// +/// A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false). +/// +/// + + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }; +jQuery.prototype.closest = function( selectors, context ) { +/// +/// 1: Get the first ancestor element that matches the selector, beginning at the current element and progressing up through the DOM tree. +/// 1.1 - closest(selector) +/// 1.2 - closest(selector, context) +/// 1.3 - closest(jQuery object) +/// 1.4 - closest(element) +/// 2: Gets an array of all the elements and selectors matched against the current element up through the DOM tree. +/// 2.1 - closest(selectors, context) +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// +/// A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead. +/// +/// + + var ret = [], i, l, cur = this[0]; + + // Array + if ( jQuery.isArray( selectors ) ) { + var match, selector, + matches = {}, + level = 1; + + if ( cur && selectors.length ) { + for ( i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[ selector ]; + + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { + ret.push({ selector: selector, elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }; +jQuery.prototype.constructor = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }; +jQuery.prototype.contents = function( until, selector ) { +/// +/// Get the children of each element in the set of matched elements, including text and comment nodes. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.css = function( name, value ) { +/// +/// 1: Get the value of a style property for the first element in the set of matched elements. +/// 1.1 - css(propertyName) +/// 2: Set one or more CSS properties for the set of matched elements. +/// 2.1 - css(propertyName, value) +/// 2.2 - css(propertyName, function(index, value)) +/// 2.3 - css(map) +/// +/// +/// A CSS property name. +/// +/// +/// A value to set for the property. +/// +/// + + // Setting 'undefined' is a no-op + if ( arguments.length === 2 && value === undefined ) { + return this; + } + + return jQuery.access( this, name, value, true, function( elem, name, value ) { + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }); +}; +jQuery.prototype.data = function( key, value ) { +/// +/// 1: Store arbitrary data associated with the matched elements. +/// 1.1 - data(key, value) +/// 1.2 - data(obj) +/// 2: Returns value at named data store for the first element in the jQuery collection, as set by data(name, value). +/// 2.1 - data(key) +/// 2.2 - data() +/// +/// +/// A string naming the piece of data to set. +/// +/// +/// The new data value; it can be any Javascript type including Array or Object. +/// +/// + + var data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 ) { + var attr = this[0].attributes, name; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }; +jQuery.prototype.dblclick = function( data, fn ) { +/// +/// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. +/// 1 - dblclick(handler(eventObject)) +/// 2 - dblclick(eventData, handler(eventObject)) +/// 3 - dblclick() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.delay = function( time, type ) { +/// +/// Set a timer to delay execution of subsequent items in the queue. +/// +/// +/// An integer indicating the number of milliseconds to delay execution of the next item in the queue. +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// + + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }; +jQuery.prototype.delegate = function( selector, types, data, fn ) { +/// +/// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. +/// 1 - delegate(selector, eventType, handler) +/// 2 - delegate(selector, eventType, eventData, handler) +/// 3 - delegate(selector, events) +/// +/// +/// A selector to filter the elements that trigger the event. +/// +/// +/// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute at the time the event is triggered. +/// +/// + + return this.live( types, data, fn, selector ); + }; +jQuery.prototype.dequeue = function( type ) { +/// +/// Execute the next function on the queue for the matched elements. +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// + + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }; +jQuery.prototype.detach = function( selector ) { +/// +/// Remove the set of matched elements from the DOM. +/// +/// +/// A selector expression that filters the set of matched elements to be removed. +/// +/// + + return this.remove( selector, true ); + }; +jQuery.prototype.die = function( types, data, fn, origSelector /* Internal Use Only */ ) { +/// +/// 1: Remove all event handlers previously attached using .live() from the elements. +/// 1.1 - die() +/// 2: Remove an event handler previously attached using .live() from the elements. +/// 2.1 - die(eventType, handler) +/// 2.2 - die(eventTypes) +/// +/// +/// A string containing a JavaScript event type, such as click or keydown. +/// +/// +/// The function that is no longer to be executed. +/// +/// + + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; 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 { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +jQuery.prototype.domManip = function( args, table, callback ) { + + var results, first, fragment, parent, + value = args[0], + scripts = []; + + // We can't cloneNode fragments that contain checked, in WebKit + if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) { + return this.each(function() { + jQuery(this).domManip( args, table, callback, true ); + }); + } + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + args[0] = value.call(this, i, table ? self.html() : undefined); + self.domManip( args, table, callback ); + }); + } + + if ( this[0] ) { + parent = value && value.parentNode; + + // If we're in a fragment, just use that instead of building a new one + if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) { + results = { fragment: parent }; + + } else { + results = jQuery.buildFragment( args, this, scripts ); + } + + fragment = results.fragment; + + if ( fragment.childNodes.length === 1 ) { + first = fragment = fragment.firstChild; + } else { + first = fragment.firstChild; + } + + if ( first ) { + table = table && jQuery.nodeName( first, "tr" ); + + for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) { + callback.call( + table ? + root(this[i], first) : + this[i], + // Make sure that we do not leak memory by inadvertently discarding + // the original fragment (which might have attached data) instead of + // using it; in addition, use the original fragment object for the last + // item instead of first because it can end up being emptied incorrectly + // in certain situations (Bug #8070). + // Fragments from the fragment cache must always be cloned and never used + // in place. + results.cacheable || (l > 1 && i < lastIndex) ? + jQuery.clone( fragment, true, true ) : + fragment + ); + } + } + + if ( scripts.length ) { + jQuery.each( scripts, evalScript ); + } + } + + return this; + }; +jQuery.prototype.each = function( callback, args ) { +/// +/// Iterate over a jQuery object, executing a function for each matched element. +/// +/// +/// A function to execute for each matched element. +/// +/// + + return jQuery.each( this, callback, args ); + }; +jQuery.prototype.empty = function() { +/// +/// Remove all child nodes of the set of matched elements from the DOM. +/// +/// + + for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + } + + return this; + }; +jQuery.prototype.end = function() { +/// +/// End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. +/// +/// + + return this.prevObject || this.constructor(null); + }; +jQuery.prototype.eq = function( i ) { +/// +/// Reduce the set of matched elements to the one at the specified index. +/// 1 - eq(index) +/// 2 - eq(-index) +/// +/// +/// An integer indicating the 0-based position of the element. +/// +/// + + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }; +jQuery.prototype.error = function( data, fn ) { +/// +/// Bind an event handler to the "error" JavaScript event. +/// 1 - error(handler(eventObject)) +/// 2 - error(eventData, handler(eventObject)) +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.extend = function() { + + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; +jQuery.prototype.fadeIn = function( speed, easing, callback ) { +/// +/// Display the matched elements by fading them to opaque. +/// 1 - fadeIn(duration, callback) +/// 2 - fadeIn(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.fadeOut = function( speed, easing, callback ) { +/// +/// Hide the matched elements by fading them to transparent. +/// 1 - fadeOut(duration, callback) +/// 2 - fadeOut(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.fadeTo = function( speed, to, easing, callback ) { +/// +/// Adjust the opacity of the matched elements. +/// 1 - fadeTo(duration, opacity, callback) +/// 2 - fadeTo(duration, opacity, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A number between 0 and 1 denoting the target opacity. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.filter(":hidden").css("opacity", 0).show().end() + .animate({opacity: to}, speed, easing, callback); + }; +jQuery.prototype.fadeToggle = function( speed, easing, callback ) { +/// +/// Display or hide the matched elements by animating their opacity. +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.filter = function( selector ) { +/// +/// Reduce the set of matched elements to those that match the selector or pass the function's test. +/// 1 - filter(selector) +/// 2 - filter(function(index)) +/// 3 - filter(element) +/// 4 - filter(jQuery object) +/// +/// +/// A string containing a selector expression to match the current set of elements against. +/// +/// + + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }; +jQuery.prototype.find = function( selector ) { +/// +/// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. +/// 1 - find(selector) +/// 2 - find(jQuery object) +/// 3 - find(element) +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }; +jQuery.prototype.first = function() { +/// +/// Reduce the set of matched elements to the first in the set. +/// +/// + + return this.eq( 0 ); + }; +jQuery.prototype.focus = function( data, fn ) { +/// +/// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. +/// 1 - focus(handler(eventObject)) +/// 2 - focus(eventData, handler(eventObject)) +/// 3 - focus() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.focusin = function( data, fn ) { +/// +/// Bind an event handler to the "focusin" JavaScript event. +/// 1 - focusin(handler(eventObject)) +/// 2 - focusin(eventData, handler(eventObject)) +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.focusout = function( data, fn ) { +/// +/// Bind an event handler to the "focusout" JavaScript event. +/// 1 - focusout(handler(eventObject)) +/// 2 - focusout(eventData, handler(eventObject)) +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.get = function( num ) { +/// +/// Retrieve the DOM elements matched by the jQuery object. +/// +/// +/// A zero-based integer indicating which element to retrieve. +/// +/// + + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }; +jQuery.prototype.has = function( target ) { +/// +/// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. +/// 1 - has(selector) +/// 2 - has(contained) +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }; +jQuery.prototype.hasClass = function( selector ) { +/// +/// Determine whether any of the matched elements are assigned the given class. +/// +/// +/// The class name to search for. +/// +/// + + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }; +jQuery.prototype.height = function( size ) { +/// +/// 1: Get the current computed height for the first element in the set of matched elements. +/// 1.1 - height() +/// 2: Set the CSS height of every matched element. +/// 2.1 - height(value) +/// 2.2 - height(function(index, height)) +/// +/// +/// An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string). +/// +/// + + // Get window width or height + var elem = this[0]; + if ( !elem ) { + return size == null ? null : this; + } + + if ( jQuery.isFunction( size ) ) { + return this.each(function( i ) { + var self = jQuery( this ); + self[ type ]( size.call( this, i, self[ type ]() ) ); + }); + } + + if ( jQuery.isWindow( elem ) ) { + // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode + // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat + var docElemProp = elem.document.documentElement[ "client" + name ]; + return elem.document.compatMode === "CSS1Compat" && docElemProp || + elem.document.body[ "client" + name ] || docElemProp; + + // Get document width or height + } else if ( elem.nodeType === 9 ) { + // Either scroll[Width/Height] or offset[Width/Height], whichever is greater + return Math.max( + elem.documentElement["client" + name], + elem.body["scroll" + name], elem.documentElement["scroll" + name], + elem.body["offset" + name], elem.documentElement["offset" + name] + ); + + // Get or set width or height on the element + } else if ( size === undefined ) { + var orig = jQuery.css( elem, type ), + ret = parseFloat( orig ); + + return jQuery.isNaN( ret ) ? orig : ret; + + // Set the width or height on the element (default to pixels if value is unitless) + } else { + return this.css( type, typeof size === "string" ? size : size + "px" ); + } + }; +jQuery.prototype.hide = function( speed, easing, callback ) { +/// +/// Hide the matched elements. +/// 1 - hide() +/// 2 - hide(duration, callback) +/// 3 - hide(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + if ( speed || speed === 0 ) { + return this.animate( genFx("hide", 3), speed, easing, callback); + + } else { + for ( var i = 0, j = this.length; i < j; i++ ) { + if ( this[i].style ) { + var display = jQuery.css( this[i], "display" ); + + if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { + jQuery._data( this[i], "olddisplay", display ); + } + } + } + + // Set the display of the elements in a second loop + // to avoid the constant reflow + for ( i = 0; i < j; i++ ) { + if ( this[i].style ) { + this[i].style.display = "none"; + } + } + + return this; + } + }; +jQuery.prototype.hover = function( fnOver, fnOut ) { +/// +/// 1: Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. +/// 1.1 - hover(handlerIn(eventObject), handlerOut(eventObject)) +/// 2: Bind a single handler to the matched elements, to be executed when the mouse pointer enters or leaves the elements. +/// 2.1 - hover(handlerInOut(eventObject)) +/// +/// +/// A function to execute when the mouse pointer enters the element. +/// +/// +/// A function to execute when the mouse pointer leaves the element. +/// +/// + + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + }; +jQuery.prototype.html = function( value ) { +/// +/// 1: Get the HTML contents of the first element in the set of matched elements. +/// 1.1 - html() +/// 2: Set the HTML contents of each element in the set of matched elements. +/// 2.1 - html(htmlString) +/// 2.2 - html(function(index, oldhtml)) +/// +/// +/// A string of HTML to set as the content of each matched element. +/// +/// + + if ( value === undefined ) { + return this[0] && this[0].nodeType === 1 ? + this[0].innerHTML.replace(rinlinejQuery, "") : + null; + + // See if we can take a shortcut and just use innerHTML + } else if ( typeof value === "string" && !rnocache.test( value ) && + (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) && + !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) { + + value = value.replace(rxhtmlTag, "<$1>"); + + try { + for ( var i = 0, l = this.length; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + if ( this[i].nodeType === 1 ) { + jQuery.cleanData( this[i].getElementsByTagName("*") ); + this[i].innerHTML = value; + } + } + + // If using innerHTML throws an exception, use the fallback method + } catch(e) { + this.empty().append( value ); + } + + } else if ( jQuery.isFunction( value ) ) { + this.each(function(i){ + var self = jQuery( this ); + + self.html( value.call(this, i, self.html()) ); + }); + + } else { + this.empty().append( value ); + } + + return this; + }; +jQuery.prototype.index = function( elem ) { +/// +/// Search for a given element from among the matched elements. +/// 1 - index() +/// 2 - index(selector) +/// 3 - index(element) +/// +/// +/// A selector representing a jQuery collection in which to look for an element. +/// +/// + + if ( !elem || typeof elem === "string" ) { + return jQuery.inArray( this[0], + // If it receives a string, the selector is used + // If it receives nothing, the siblings are used + elem ? jQuery( elem ) : this.parent().children() ); + } + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }; +jQuery.prototype.init = function( selector, context, rootjQuery ) { + + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; +jQuery.prototype.innerHeight = function() { +/// +/// Get the current computed height for the first element in the set of matched elements, including padding but not border. +/// +/// + + return this[0] ? + parseFloat( jQuery.css( this[0], type, "padding" ) ) : + null; + }; +jQuery.prototype.innerWidth = function() { +/// +/// Get the current computed width for the first element in the set of matched elements, including padding but not border. +/// +/// + + return this[0] ? + parseFloat( jQuery.css( this[0], type, "padding" ) ) : + null; + }; +jQuery.prototype.insertAfter = function( selector ) { +/// +/// Insert every element in the set of matched elements after the target. +/// +/// +/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter. +/// +/// + + var ret = [], + insert = jQuery( selector ), + parent = this.length === 1 && this[0].parentNode; + + if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { + insert[ original ]( this[0] ); + return this; + + } else { + for ( var i = 0, l = insert.length; i < l; i++ ) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +jQuery.prototype.insertBefore = function( selector ) { +/// +/// Insert every element in the set of matched elements before the target. +/// +/// +/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter. +/// +/// + + var ret = [], + insert = jQuery( selector ), + parent = this.length === 1 && this[0].parentNode; + + if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { + insert[ original ]( this[0] ); + return this; + + } else { + for ( var i = 0, l = insert.length; i < l; i++ ) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +jQuery.prototype.is = function( selector ) { +/// +/// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. +/// 1 - is(selector) +/// 2 - is(function(index)) +/// 3 - is(jQuery object) +/// 4 - is(element) +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }; +jQuery.prototype.keydown = function( data, fn ) { +/// +/// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. +/// 1 - keydown(handler(eventObject)) +/// 2 - keydown(eventData, handler(eventObject)) +/// 3 - keydown() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.keypress = function( data, fn ) { +/// +/// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. +/// 1 - keypress(handler(eventObject)) +/// 2 - keypress(eventData, handler(eventObject)) +/// 3 - keypress() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.keyup = function( data, fn ) { +/// +/// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. +/// 1 - keyup(handler(eventObject)) +/// 2 - keyup(eventData, handler(eventObject)) +/// 3 - keyup() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.last = function() { +/// +/// Reduce the set of matched elements to the final one in the set. +/// +/// + + return this.eq( -1 ); + }; +jQuery.prototype.length = 0; +jQuery.prototype.live = function( types, data, fn, origSelector /* Internal Use Only */ ) { +/// +/// Attach a handler to the event for all elements which match the current selector, now and in the future. +/// 1 - live(eventType, handler) +/// 2 - live(eventType, eventData, handler) +/// 3 - live(events) +/// +/// +/// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names, as well. +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute at the time the event is triggered. +/// +/// + + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; 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 { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +jQuery.prototype.load = function( url, params, callback ) { +/// +/// 1: Bind an event handler to the "load" JavaScript event. +/// 1.1 - load(handler(eventObject)) +/// 1.2 - load(eventData, handler(eventObject)) +/// 2: Load data from the server and place the returned HTML into the matched element. +/// 2.1 - load(url, data, complete(responseText, textStatus, XMLHttpRequest)) +/// +/// +/// A string containing the URL to which the request is sent. +/// +/// +/// A map or string that is sent to the server with the request. +/// +/// +/// A callback function that is executed when the request completes. +/// +/// + + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + + // Don't do a request if no elements are being requested + } else if ( !this.length ) { + return this; + } + + var off = url.indexOf( " " ); + if ( off >= 0 ) { + var selector = url.slice( off, url.length ); + url = url.slice( 0, off ); + } + + // Default to a GET request + var type = "GET"; + + // If the second parameter was provided + if ( params ) { + // If it's a function + if ( jQuery.isFunction( params ) ) { + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( typeof params === "object" ) { + params = jQuery.param( params, jQuery.ajaxSettings.traditional ); + type = "POST"; + } + } + + var self = this; + + // Request the remote document + jQuery.ajax({ + url: url, + type: type, + dataType: "html", + data: params, + // Complete callback (responseText is used internally) + complete: function( jqXHR, status, responseText ) { + // Store the response as specified by the jqXHR object + responseText = jqXHR.responseText; + // If successful, inject the HTML into all the matched elements + if ( jqXHR.isResolved() ) { + // #4825: Get the actual response in case + // a dataFilter is present in ajaxSettings + jqXHR.done(function( r ) { + responseText = r; + }); + // See if a selector was specified + self.html( selector ? + // Create a dummy div to hold the results + jQuery("
") + // inject the contents of the document in, removing the scripts + // to avoid any 'Permission Denied' errors in IE + .append(responseText.replace(rscript, "")) + + // Locate the specified elements + .find(selector) : + + // If not, just inject the full result + responseText ); + } + + if ( callback ) { + self.each( callback, [ responseText, status, jqXHR ] ); + } + } + }); + + return this; + }; +jQuery.prototype.map = function( callback ) { +/// +/// Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. +/// +/// +/// A function object that will be invoked for each element in the current set. +/// +/// + + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }; +jQuery.prototype.mousedown = function( data, fn ) { +/// +/// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. +/// 1 - mousedown(handler(eventObject)) +/// 2 - mousedown(eventData, handler(eventObject)) +/// 3 - mousedown() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mouseenter = function( data, fn ) { +/// +/// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. +/// 1 - mouseenter(handler(eventObject)) +/// 2 - mouseenter(eventData, handler(eventObject)) +/// 3 - mouseenter() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mouseleave = function( data, fn ) { +/// +/// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. +/// 1 - mouseleave(handler(eventObject)) +/// 2 - mouseleave(eventData, handler(eventObject)) +/// 3 - mouseleave() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mousemove = function( data, fn ) { +/// +/// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. +/// 1 - mousemove(handler(eventObject)) +/// 2 - mousemove(eventData, handler(eventObject)) +/// 3 - mousemove() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mouseout = function( data, fn ) { +/// +/// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. +/// 1 - mouseout(handler(eventObject)) +/// 2 - mouseout(eventData, handler(eventObject)) +/// 3 - mouseout() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mouseover = function( data, fn ) { +/// +/// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. +/// 1 - mouseover(handler(eventObject)) +/// 2 - mouseover(eventData, handler(eventObject)) +/// 3 - mouseover() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.mouseup = function( data, fn ) { +/// +/// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. +/// 1 - mouseup(handler(eventObject)) +/// 2 - mouseup(eventData, handler(eventObject)) +/// 3 - mouseup() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.next = function( until, selector ) { +/// +/// Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.nextAll = function( until, selector ) { +/// +/// Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.nextUntil = function( until, selector ) { +/// +/// Get all following siblings of each element up to but not including the element matched by the selector. +/// +/// +/// A string containing a selector expression to indicate where to stop matching following sibling elements. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.not = function( selector ) { +/// +/// Remove elements from the set of matched elements. +/// 1 - not(selector) +/// 2 - not(elements) +/// 3 - not(function(index)) +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + return this.pushStack( winnow(this, selector, false), "not", selector); + }; +jQuery.prototype.offset = function( options ) { +/// +/// 1: Get the current coordinates of the first element in the set of matched elements, relative to the document. +/// 1.1 - offset() +/// 2: Set the current coordinates of every element in the set of matched elements, relative to the document. +/// 2.1 - offset(coordinates) +/// 2.2 - offset(function(index, coords)) +/// +/// +/// An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements. +/// +/// + + var elem = this[0], box; + + if ( options ) { + return this.each(function( i ) { + jQuery.offset.setOffset( this, options, i ); + }); + } + + if ( !elem || !elem.ownerDocument ) { + return null; + } + + if ( elem === elem.ownerDocument.body ) { + return jQuery.offset.bodyOffset( elem ); + } + + try { + box = elem.getBoundingClientRect(); + } catch(e) {} + + var doc = elem.ownerDocument, + docElem = doc.documentElement; + + // Make sure we're not dealing with a disconnected DOM node + if ( !box || !jQuery.contains( docElem, elem ) ) { + return box ? { top: box.top, left: box.left } : { top: 0, left: 0 }; + } + + var body = doc.body, + win = getWindow(doc), + clientTop = docElem.clientTop || body.clientTop || 0, + clientLeft = docElem.clientLeft || body.clientLeft || 0, + scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, + scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, + top = box.top + scrollTop - clientTop, + left = box.left + scrollLeft - clientLeft; + + return { top: top, left: left }; + }; +jQuery.prototype.offsetParent = function() { +/// +/// Get the closest ancestor element that is positioned. +/// +/// + + return this.map(function() { + var offsetParent = this.offsetParent || document.body; + while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent; + }); + }; +jQuery.prototype.one = function( type, data, fn ) { +/// +/// Attach a handler to an event for the elements. The handler is executed at most once per element. +/// +/// +/// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute at the time the event is triggered. +/// +/// + + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +jQuery.prototype.outerHeight = function( margin ) { +/// +/// Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. +/// +/// +/// A Boolean indicating whether to include the element's margin in the calculation. +/// +/// + + return this[0] ? + parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : + null; + }; +jQuery.prototype.outerWidth = function( margin ) { +/// +/// Get the current computed width for the first element in the set of matched elements, including padding and border. +/// +/// +/// A Boolean indicating whether to include the element's margin in the calculation. +/// +/// + + return this[0] ? + parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : + null; + }; +jQuery.prototype.parent = function( until, selector ) { +/// +/// Get the parent of each element in the current set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.parents = function( until, selector ) { +/// +/// Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.parentsUntil = function( until, selector ) { +/// +/// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector. +/// +/// +/// A string containing a selector expression to indicate where to stop matching ancestor elements. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.position = function() { +/// +/// Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. +/// +/// + + if ( !this[0] ) { + return null; + } + + var elem = this[0], + + // Get *real* offsetParent + offsetParent = this.offsetParent(), + + // Get correct offsets + offset = this.offset(), + parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); + + // Subtract element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; + offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; + + // Add offsetParent borders + parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; + parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; + + // Subtract the two offsets + return { + top: offset.top - parentOffset.top, + left: offset.left - parentOffset.left + }; + }; +jQuery.prototype.prepend = function() { +/// +/// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. +/// 1 - prepend(content, content) +/// 2 - prepend(function(index, html)) +/// +/// +/// DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements. +/// +/// +/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements. +/// +/// + + return this.domManip(arguments, true, function( elem ) { + if ( this.nodeType === 1 ) { + this.insertBefore( elem, this.firstChild ); + } + }); + }; +jQuery.prototype.prependTo = function( selector ) { +/// +/// Insert every element in the set of matched elements to the beginning of the target. +/// +/// +/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter. +/// +/// + + var ret = [], + insert = jQuery( selector ), + parent = this.length === 1 && this[0].parentNode; + + if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { + insert[ original ]( this[0] ); + return this; + + } else { + for ( var i = 0, l = insert.length; i < l; i++ ) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +jQuery.prototype.prev = function( until, selector ) { +/// +/// Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.prevAll = function( until, selector ) { +/// +/// Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.prevUntil = function( until, selector ) { +/// +/// Get all preceding siblings of each element up to but not including the element matched by the selector. +/// +/// +/// A string containing a selector expression to indicate where to stop matching preceding sibling elements. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.promise = function( type, object ) { +/// +/// Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. +/// +/// +/// The type of queue that needs to be observed. +/// +/// +/// Object onto which the promise methods have to be attached +/// +/// + + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + }; +jQuery.prototype.prop = function( name, value ) { +/// +/// 1: Get the value of a property for the first element in the set of matched elements. +/// 1.1 - prop(propertyName) +/// 2: Set one or more properties for the set of matched elements. +/// 2.1 - prop(propertyName, value) +/// 2.2 - prop(map) +/// 2.3 - prop(propertyName, function(index, oldPropertyValue)) +/// +/// +/// The name of the property to set. +/// +/// +/// A value to set for the property. +/// +/// + + return jQuery.access( this, name, value, true, jQuery.prop ); + }; +jQuery.prototype.pushStack = function( elems, name, selector ) { +/// +/// Add a collection of DOM elements onto the jQuery stack. +/// 1 - pushStack(elements) +/// 2 - pushStack(elements, name, arguments) +/// +/// +/// An array of elements to push onto the stack and make into a new jQuery object. +/// +/// +/// The name of a jQuery method that generated the array of elements. +/// +/// +/// The arguments that were passed in to the jQuery method (for serialization). +/// +/// + + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }; +jQuery.prototype.queue = function( type, data ) { +/// +/// 1: Show the queue of functions to be executed on the matched elements. +/// 1.1 - queue(queueName) +/// 2: Manipulate the queue of functions to be executed on the matched elements. +/// 2.1 - queue(queueName, newQueue) +/// 2.2 - queue(queueName, callback( next )) +/// +/// +/// A string containing the name of the queue. Defaults to fx, the standard effects queue. +/// +/// +/// An array of functions to replace the current queue contents. +/// +/// + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }; +jQuery.prototype.ready = function( fn ) { +/// +/// Specify a function to execute when the DOM is fully loaded. +/// +/// +/// A function to execute after the DOM is ready. +/// +/// + + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.done( fn ); + + return this; + }; +jQuery.prototype.remove = function( selector, keepData ) { +/// +/// Remove the set of matched elements from the DOM. +/// +/// +/// A selector expression that filters the set of matched elements to be removed. +/// +/// + + for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { + if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( elem.getElementsByTagName("*") ); + jQuery.cleanData( [ elem ] ); + } + + if ( elem.parentNode ) { + elem.parentNode.removeChild( elem ); + } + } + } + + return this; + }; +jQuery.prototype.removeAttr = function( name ) { +/// +/// Remove an attribute from each element in the set of matched elements. +/// +/// +/// An attribute to remove. +/// +/// + + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }; +jQuery.prototype.removeClass = function( value ) { +/// +/// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. +/// 1 - removeClass(className) +/// 2 - removeClass(function(index, class)) +/// +/// +/// One or more space-separated classes to be removed from the class attribute of each matched element. +/// +/// + + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + self.removeClass( value.call(this, i, self.attr("class")) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + var classNames = (value || "").split( rspace ); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + var className = (" " + elem.className + " ").replace(rclass, " "); + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[c] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }; +jQuery.prototype.removeData = function( key ) { +/// +/// Remove a previously-stored piece of data. +/// +/// +/// A string naming the piece of data to delete. +/// +/// + + return this.each(function() { + jQuery.removeData( this, key ); + }); + }; +jQuery.prototype.removeProp = function( name ) { +/// +/// Remove a property for the set of matched elements. +/// +/// +/// The name of the property to set. +/// +/// +/// A value to set for the property. +/// +/// + + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }; +jQuery.prototype.replaceAll = function( selector ) { +/// +/// Replace each target element with the set of matched elements. +/// +/// +/// A selector expression indicating which element(s) to replace. +/// +/// + + var ret = [], + insert = jQuery( selector ), + parent = this.length === 1 && this[0].parentNode; + + if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { + insert[ original ]( this[0] ); + return this; + + } else { + for ( var i = 0, l = insert.length; i < l; i++ ) { + var elems = (i > 0 ? this.clone(true) : this).get(); + jQuery( insert[i] )[ original ]( elems ); + ret = ret.concat( elems ); + } + + return this.pushStack( ret, name, insert.selector ); + } + }; +jQuery.prototype.replaceWith = function( value ) { +/// +/// Replace each element in the set of matched elements with the provided new content. +/// 1 - replaceWith(newContent) +/// 2 - replaceWith(function) +/// +/// +/// The content to insert. May be an HTML string, DOM element, or jQuery object. +/// +/// + + if ( this[0] && this[0].parentNode ) { + // Make sure that the elements are removed from the DOM before they are inserted + // this can help fix replacing a parent with child elements + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this), old = self.html(); + self.replaceWith( value.call( this, i, old ) ); + }); + } + + if ( typeof value !== "string" ) { + value = jQuery( value ).detach(); + } + + return this.each(function() { + var next = this.nextSibling, + parent = this.parentNode; + + jQuery( this ).remove(); + + if ( next ) { + jQuery(next).before( value ); + } else { + jQuery(parent).append( value ); + } + }); + } else { + return this.length ? + this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : + this; + } + }; +jQuery.prototype.resize = function( data, fn ) { +/// +/// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. +/// 1 - resize(handler(eventObject)) +/// 2 - resize(eventData, handler(eventObject)) +/// 3 - resize() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.scroll = function( data, fn ) { +/// +/// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. +/// 1 - scroll(handler(eventObject)) +/// 2 - scroll(eventData, handler(eventObject)) +/// 3 - scroll() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.scrollLeft = function( val ) { +/// +/// 1: Get the current horizontal position of the scroll bar for the first element in the set of matched elements. +/// 1.1 - scrollLeft() +/// 2: Set the current horizontal position of the scroll bar for each of the set of matched elements. +/// 2.1 - scrollLeft(value) +/// +/// +/// An integer indicating the new position to set the scroll bar to. +/// +/// + + var elem, win; + + if ( val === undefined ) { + elem = this[ 0 ]; + + if ( !elem ) { + return null; + } + + win = getWindow( elem ); + + // Return the scroll offset + return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : + jQuery.support.boxModel && win.document.documentElement[ method ] || + win.document.body[ method ] : + elem[ method ]; + } + + // Set the scroll offset + return this.each(function() { + win = getWindow( this ); + + if ( win ) { + win.scrollTo( + !i ? val : jQuery( win ).scrollLeft(), + i ? val : jQuery( win ).scrollTop() + ); + + } else { + this[ method ] = val; + } + }); + }; +jQuery.prototype.scrollTop = function( val ) { +/// +/// 1: Get the current vertical position of the scroll bar for the first element in the set of matched elements. +/// 1.1 - scrollTop() +/// 2: Set the current vertical position of the scroll bar for each of the set of matched elements. +/// 2.1 - scrollTop(value) +/// +/// +/// An integer indicating the new position to set the scroll bar to. +/// +/// + + var elem, win; + + if ( val === undefined ) { + elem = this[ 0 ]; + + if ( !elem ) { + return null; + } + + win = getWindow( elem ); + + // Return the scroll offset + return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : + jQuery.support.boxModel && win.document.documentElement[ method ] || + win.document.body[ method ] : + elem[ method ]; + } + + // Set the scroll offset + return this.each(function() { + win = getWindow( this ); + + if ( win ) { + win.scrollTo( + !i ? val : jQuery( win ).scrollLeft(), + i ? val : jQuery( win ).scrollTop() + ); + + } else { + this[ method ] = val; + } + }); + }; +jQuery.prototype.select = function( data, fn ) { +/// +/// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. +/// 1 - select(handler(eventObject)) +/// 2 - select(eventData, handler(eventObject)) +/// 3 - select() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.serialize = function() { +/// +/// Encode a set of form elements as a string for submission. +/// +/// + + return jQuery.param( this.serializeArray() ); + }; +jQuery.prototype.serializeArray = function() { +/// +/// Encode a set of form elements as an array of names and values. +/// +/// + + return this.map(function(){ + return this.elements ? jQuery.makeArray( this.elements ) : this; + }) + .filter(function(){ + return this.name && !this.disabled && + ( this.checked || rselectTextarea.test( this.nodeName ) || + rinput.test( this.type ) ); + }) + .map(function( i, elem ){ + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val, i ){ + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + }).get(); + }; +jQuery.prototype.show = function( speed, easing, callback ) { +/// +/// Display the matched elements. +/// 1 - show() +/// 2 - show(duration, callback) +/// 3 - show(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + var elem, display; + + if ( speed || speed === 0 ) { + return this.animate( genFx("show", 3), speed, easing, callback); + + } else { + for ( var i = 0, j = this.length; i < j; i++ ) { + elem = this[i]; + + if ( elem.style ) { + display = elem.style.display; + + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { + display = elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { + jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( i = 0; i < j; i++ ) { + elem = this[i]; + + if ( elem.style ) { + display = elem.style.display; + + if ( display === "" || display === "none" ) { + elem.style.display = jQuery._data(elem, "olddisplay") || ""; + } + } + } + + return this; + } + }; +jQuery.prototype.siblings = function( until, selector ) { +/// +/// Get the siblings of each element in the set of matched elements, optionally filtered by a selector. +/// +/// +/// A string containing a selector expression to match elements against. +/// +/// + + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +jQuery.prototype.size = function() { +/// +/// Return the number of elements in the jQuery object. +/// +/// + + return this.length; + }; +jQuery.prototype.slice = function() { +/// +/// Reduce the set of matched elements to a subset specified by a range of indices. +/// +/// +/// An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set. +/// +/// +/// An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set. +/// +/// + + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }; +jQuery.prototype.slideDown = function( speed, easing, callback ) { +/// +/// Display the matched elements with a sliding motion. +/// 1 - slideDown(duration, callback) +/// 2 - slideDown(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.slideToggle = function( speed, easing, callback ) { +/// +/// Display or hide the matched elements with a sliding motion. +/// 1 - slideToggle(duration, callback) +/// 2 - slideToggle(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.slideUp = function( speed, easing, callback ) { +/// +/// Hide the matched elements with a sliding motion. +/// 1 - slideUp(duration, callback) +/// 2 - slideUp(duration, easing, callback) +/// +/// +/// A string or number determining how long the animation will run. +/// +/// +/// A string indicating which easing function to use for the transition. +/// +/// +/// A function to call once the animation is complete. +/// +/// + + return this.animate( props, speed, easing, callback ); + }; +jQuery.prototype.stop = function( clearQueue, gotoEnd ) { +/// +/// Stop the currently-running animation on the matched elements. +/// +/// +/// A Boolean indicating whether to remove queued animation as well. Defaults to false. +/// +/// +/// A Boolean indicating whether to complete the current animation immediately. Defaults to false. +/// +/// + + if ( clearQueue ) { + this.queue([]); + } + + this.each(function() { + var timers = jQuery.timers, + i = timers.length; + // clear marker counters if we know they won't be + if ( !gotoEnd ) { + jQuery._unmark( true, this ); + } + while ( i-- ) { + if ( timers[i].elem === this ) { + if (gotoEnd) { + // force the next step to be the last + timers[i](true); + } + + timers.splice(i, 1); + } + } + }); + + // start the next in the queue if the last step wasn't forced + if ( !gotoEnd ) { + this.dequeue(); + } + + return this; + }; +jQuery.prototype.submit = function( data, fn ) { +/// +/// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. +/// 1 - submit(handler(eventObject)) +/// 2 - submit(eventData, handler(eventObject)) +/// 3 - submit() +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.text = function( text ) { +/// +/// 1: Get the combined text contents of each element in the set of matched elements, including their descendants. +/// 1.1 - text() +/// 2: Set the content of each element in the set of matched elements to the specified text. +/// 2.1 - text(textString) +/// 2.2 - text(function(index, text)) +/// +/// +/// A string of text to set as the content of each matched element. +/// +/// + + if ( jQuery.isFunction(text) ) { + return this.each(function(i) { + var self = jQuery( this ); + + self.text( text.call(this, i, self.text()) ); + }); + } + + if ( typeof text !== "object" && text !== undefined ) { + return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); + } + + return jQuery.text( this ); + }; +jQuery.prototype.toArray = function() { +/// +/// Retrieve all the DOM elements contained in the jQuery set, as an array. +/// +/// + + return slice.call( this, 0 ); + }; +jQuery.prototype.toggle = function( fn, fn2, callback ) { +/// +/// 1: Bind two or more handlers to the matched elements, to be executed on alternate clicks. +/// 1.1 - toggle(handler(eventObject), handler(eventObject), handler(eventObject)) +/// 2: Display or hide the matched elements. +/// 2.1 - toggle(duration, callback) +/// 2.2 - toggle(duration, easing, callback) +/// 2.3 - toggle(showOrHide) +/// +/// +/// A function to execute every even time the element is clicked. +/// +/// +/// A function to execute every odd time the element is clicked. +/// +/// +/// Additional handlers to cycle through after clicks. +/// +/// + + var bool = typeof fn === "boolean"; + + if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) { + this._toggle.apply( this, arguments ); + + } else if ( fn == null || bool ) { + this.each(function() { + var state = bool ? fn : jQuery(this).is(":hidden"); + jQuery(this)[ state ? "show" : "hide" ](); + }); + + } else { + this.animate(genFx("toggle", 3), fn, fn2, callback); + } + + return this; + }; +jQuery.prototype.toggleClass = function( value, stateVal ) { +/// +/// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. +/// 1 - toggleClass(className) +/// 2 - toggleClass(className, switch) +/// 3 - toggleClass(function(index, class), switch) +/// +/// +/// One or more class names (separated by spaces) to be toggled for each element in the matched set. +/// +/// +/// A boolean value to determine whether the class should be added or removed. +/// +/// + + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this); + self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }; +jQuery.prototype.trigger = function( type, data ) { +/// +/// Execute all handlers and behaviors attached to the matched elements for the given event type. +/// 1 - trigger(eventType, extraParameters) +/// 2 - trigger(event) +/// +/// +/// A string containing a JavaScript event type, such as click or submit. +/// +/// +/// An array of additional parameters to pass along to the event handler. +/// +/// + + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }; +jQuery.prototype.triggerHandler = function( type, data ) { +/// +/// Execute all handlers attached to an element for an event. +/// +/// +/// A string containing a JavaScript event type, such as click or submit. +/// +/// +/// An array of additional parameters to pass along to the event handler. +/// +/// + + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }; +jQuery.prototype.unbind = function( type, fn ) { +/// +/// Remove a previously-attached event handler from the elements. +/// 1 - unbind(eventType, handler(eventObject)) +/// 2 - unbind(eventType, false) +/// 3 - unbind(event) +/// +/// +/// A string containing a JavaScript event type, such as click or submit. +/// +/// +/// The function that is to be no longer executed. +/// +/// + + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.remove( this[i], type, fn ); + } + } + + return this; + }; +jQuery.prototype.undelegate = function( selector, types, fn ) { +/// +/// Remove a handler from the event for all elements which match the current selector, now or in the future, based upon a specific set of root elements. +/// 1 - undelegate() +/// 2 - undelegate(selector, eventType) +/// 3 - undelegate(selector, eventType, handler) +/// 4 - undelegate(selector, events) +/// 5 - undelegate(namespace) +/// +/// +/// A selector which will be used to filter the event results. +/// +/// +/// A string containing a JavaScript event type, such as "click" or "keydown" +/// +/// +/// A function to execute at the time the event is triggered. +/// +/// + + if ( arguments.length === 0 ) { + return this.unbind( "live" ); + + } else { + return this.die( types, null, fn, selector ); + } + }; +jQuery.prototype.unload = function( data, fn ) { +/// +/// Bind an event handler to the "unload" JavaScript event. +/// 1 - unload(handler(eventObject)) +/// 2 - unload(eventData, handler(eventObject)) +/// +/// +/// A map of data that will be passed to the event handler. +/// +/// +/// A function to execute each time the event is triggered. +/// +/// + + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; +jQuery.prototype.unwrap = function() { +/// +/// Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place. +/// +/// + + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + }; +jQuery.prototype.val = function( value ) { +/// +/// 1: Get the current value of the first element in the set of matched elements. +/// 1.1 - val() +/// 2: Set the value of each element in the set of matched elements. +/// 2.1 - val(value) +/// 2.2 - val(function(index, value)) +/// +/// +/// A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked. +/// +/// + + var hooks, ret, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + return (elem.value || "").replace(rreturn, ""); + } + + return undefined; + } + + var isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + }; +jQuery.prototype.width = function( size ) { +/// +/// 1: Get the current computed width for the first element in the set of matched elements. +/// 1.1 - width() +/// 2: Set the CSS width of each element in the set of matched elements. +/// 2.1 - width(value) +/// 2.2 - width(function(index, width)) +/// +/// +/// An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string). +/// +/// + + // Get window width or height + var elem = this[0]; + if ( !elem ) { + return size == null ? null : this; + } + + if ( jQuery.isFunction( size ) ) { + return this.each(function( i ) { + var self = jQuery( this ); + self[ type ]( size.call( this, i, self[ type ]() ) ); + }); + } + + if ( jQuery.isWindow( elem ) ) { + // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode + // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat + var docElemProp = elem.document.documentElement[ "client" + name ]; + return elem.document.compatMode === "CSS1Compat" && docElemProp || + elem.document.body[ "client" + name ] || docElemProp; + + // Get document width or height + } else if ( elem.nodeType === 9 ) { + // Either scroll[Width/Height] or offset[Width/Height], whichever is greater + return Math.max( + elem.documentElement["client" + name], + elem.body["scroll" + name], elem.documentElement["scroll" + name], + elem.body["offset" + name], elem.documentElement["offset" + name] + ); + + // Get or set width or height on the element + } else if ( size === undefined ) { + var orig = jQuery.css( elem, type ), + ret = parseFloat( orig ); + + return jQuery.isNaN( ret ) ? orig : ret; + + // Set the width or height on the element (default to pixels if value is unitless) + } else { + return this.css( type, typeof size === "string" ? size : size + "px" ); + } + }; +jQuery.prototype.wrap = function( html ) { +/// +/// Wrap an HTML structure around each element in the set of matched elements. +/// 1 - wrap(wrappingElement) +/// 2 - wrap(function(index)) +/// +/// +/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. +/// +/// + + return this.each(function() { + jQuery( this ).wrapAll( html ); + }); + }; +jQuery.prototype.wrapAll = function( html ) { +/// +/// Wrap an HTML structure around all elements in the set of matched elements. +/// +/// +/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. +/// +/// + + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }; +jQuery.prototype.wrapInner = function( html ) { +/// +/// Wrap an HTML structure around the content of each element in the set of matched elements. +/// 1 - wrapInner(wrappingElement) +/// 2 - wrapInner(wrappingFunction) +/// +/// +/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements. +/// +/// + + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }; +jQuery.fn = jQuery.prototype; +jQuery.fn.init.prototype = jQuery.fn; +window.jQuery = window.$ = jQuery; +})(window); \ No newline at end of file diff --git a/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1.js b/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1.js new file mode 100644 index 000000000..5d5a1d58e --- /dev/null +++ b/packages/jQuery.1.6.1/Content/Scripts/jquery-1.6.1.js @@ -0,0 +1,8936 @@ +/*! + * jQuery JavaScript Library v1.6.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu May 12 15:04:36 2011 -0400 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // (both of which we optimize for) + quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Check for digits + rdigit = /\d/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = (context ? context.ownerDocument || context : document); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return (context || rootjQuery).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if (selector.selector !== undefined) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.6.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + (this.selector ? " " : "") + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.done( fn ); + + return this; + }, + + eq: function( i ) { + return i === -1 ? + this.slice( i ) : + this.slice( i, +i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).unbind( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery._Deferred(); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNaN: function( obj ) { + return obj == null || !rdigit.test( obj ) || isNaN( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw msg; + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return (new Function( "return " + data ))(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + // (xml & tmp used internally) + parseXML: function( data , xml , tmp ) { + + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + + tmp = xml.documentElement; + + if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { + jQuery.error( "Invalid XML: " + data ); + } + + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // The extra typeof function check is to prevent crashes + // in Safari 2 (See: #3039) + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array ) { + + if ( indexOf ) { + return indexOf.call( array, elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can be optionally by executed if its a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return (new Date()).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +// Expose jQuery to the global object +return jQuery; + +})(); + + +var // Promise methods + promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), + // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + // Create a simple deferred (one callbacks list) + _Deferred: function() { + var // callbacks list + callbacks = [], + // stored [ context , args ] + fired, + // to avoid firing when already doing so + firing, + // flag to know if the deferred has been cancelled + cancelled, + // the deferred itself + deferred = { + + // done( f1, f2, ...) + done: function() { + if ( !cancelled ) { + var args = arguments, + i, + length, + elem, + type, + _fired; + if ( fired ) { + _fired = fired; + fired = 0; + } + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + deferred.done.apply( deferred, elem ); + } else if ( type === "function" ) { + callbacks.push( elem ); + } + } + if ( _fired ) { + deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); + } + } + return this; + }, + + // resolve with given context and args + resolveWith: function( context, args ) { + if ( !cancelled && !fired && !firing ) { + // make sure args are available (#8421) + args = args || []; + firing = 1; + try { + while( callbacks[ 0 ] ) { + callbacks.shift().apply( context, args ); + } + } + finally { + fired = [ context, args ]; + firing = 0; + } + } + return this; + }, + + // resolve with this as context and given arguments + resolve: function() { + deferred.resolveWith( this, arguments ); + return this; + }, + + // Has this deferred been resolved? + isResolved: function() { + return !!( firing || fired ); + }, + + // Cancel + cancel: function() { + cancelled = 1; + callbacks = []; + return this; + } + }; + + return deferred; + }, + + // Full fledged deferred (two callbacks list) + Deferred: function( func ) { + var deferred = jQuery._Deferred(), + failDeferred = jQuery._Deferred(), + promise; + // Add errorDeferred methods, then and promise + jQuery.extend( deferred, { + then: function( doneCallbacks, failCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ); + return this; + }, + always: function() { + return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); + }, + fail: failDeferred.done, + rejectWith: failDeferred.resolveWith, + reject: failDeferred.resolve, + isRejected: failDeferred.isResolved, + pipe: function( fnDone, fnFail ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject ); + } else { + newDefer[ action ]( returned ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + if ( promise ) { + return promise; + } + promise = obj = {}; + } + var i = promiseMethods.length; + while( i-- ) { + obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; + } + return obj; + } + }); + // Make sure only one callback list will be used + deferred.done( failDeferred.cancel ).fail( deferred.cancel ); + // Unexpose cancel + delete deferred.cancel; + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = arguments, + i = 0, + length = args.length, + count = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + // Strange bug in FF4: + // Values changed onto the arguments object sometimes end up as undefined values + // outside the $.when method. Cloning the object into a fresh array solves the issue + deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); + } + }; + } + if ( length > 1 ) { + for( ; i < length; i++ ) { + if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return deferred.promise(); + } +}); + + + +jQuery.support = (function() { + + var div = document.createElement( "div" ), + documentElement = document.documentElement, + all, + a, + select, + opt, + input, + marginDiv, + support, + fragment, + body, + bodyStyle, + tds, + events, + eventName, + i, + isSupported; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName( "tbody" ).length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName( "link" ).length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55$/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function click() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + div.detachEvent( "onclick", click ); + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains it's value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.firstChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + div.innerHTML = ""; + + // Figure out if the W3C box model works as expected + div.style.width = div.style.paddingLeft = "1px"; + + // We use our own, invisible, body + body = document.createElement( "body" ); + bodyStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + // Set background to avoid IE crashes when removing (#9028) + background: "none" + }; + for ( i in bodyStyle ) { + body.style[ i ] = bodyStyle[ i ]; + } + body.appendChild( div ); + documentElement.insertBefore( body, documentElement.firstChild ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + support.boxModel = div.offsetWidth === 2; + + if ( "zoom" in div.style ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.innerHTML = "
t
"; + tds = div.getElementsByTagName( "td" ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE < 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( document.defaultView && document.defaultView.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Remove the body element we added + body.innerHTML = ""; + documentElement.removeChild( body ); + + // Technique from Juriy Zaytsev + // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + } ) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + return support; +})(); + +// Keep track of boxModel +jQuery.boxModel = jQuery.support.boxModel; + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([a-z])([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ jQuery.expando ] = id = ++jQuery.uuid; + } else { + id = jQuery.expando; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); + } else { + cache[ id ] = jQuery.extend(cache[ id ], name); + } + } + + thisCache = cache[ id ]; + + // Internal jQuery data is stored in a separate object inside the object's data + // cache in order to avoid key collisions between internal data and user-defined + // data + if ( pvt ) { + if ( !thisCache[ internalKey ] ) { + thisCache[ internalKey ] = {}; + } + + thisCache = thisCache[ internalKey ]; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should + // not attempt to inspect the internal events object using jQuery.data, as this + // internal data object is undocumented and subject to change. + if ( name === "events" && !thisCache[name] ) { + return thisCache[ internalKey ] && thisCache[ internalKey ].events; + } + + return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var internalKey = jQuery.expando, isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; + + if ( thisCache ) { + delete thisCache[ name ]; + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !isEmptyDataObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( pvt ) { + delete cache[ id ][ internalKey ]; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + var internalCache = cache[ id ][ internalKey ]; + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + if ( jQuery.support.deleteExpando || cache != window ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the entire user cache at once because it's faster than + // iterating through each key, but we need to continue to persist internal + // data if it existed + if ( internalCache ) { + cache[ id ] = {}; + // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery + // metadata on plain JS objects when the object is serialized using + // JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + + cache[ id ][ internalKey ] = internalCache; + + // Otherwise, we need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + } else if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ jQuery.expando ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( jQuery.expando ); + } else { + elem[ jQuery.expando ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 ) { + var attr = this[0].attributes, name; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + var parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var $this = jQuery( this ), + args = [ parts[0], value ]; + + $this.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + $this.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + !jQuery.isNaN( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON +// property to be considered empty objects; this property always exists in +// order to make sure JSON.stringify does not expose internal metadata +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery.data( elem, deferDataKey, undefined, true ); + if ( defer && + ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && + ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery.data( elem, queueDataKey, undefined, true ) && + !jQuery.data( elem, markDataKey, undefined, true ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.resolve(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = (type || "fx") + "mark"; + jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); + if ( count ) { + jQuery.data( elem, key, count, true ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + if ( elem ) { + type = (type || "fx") + "queue"; + var q = jQuery.data( elem, type, undefined, true ); + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery.data( elem, type, jQuery.makeArray(data), true ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + defer; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift("inprogress"); + } + + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; + type = type || "fx"; + + return this.queue( type, function() { + var elem = this; + setTimeout(function() { + jQuery.dequeue( elem, type ); + }, time ); + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { + count++; + tmp.done( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + rinvalidChar = /\:/, + formHook, boolHook; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this); + self.addClass( value.call(this, i, self.attr("class") || "") ); + }); + } + + if ( value && typeof value === "string" ) { + var classNames = (value || "").split( rspace ); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className ) { + elem.className = value; + + } else { + var className = " " + elem.className + " ", + setClass = elem.className; + + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { + setClass += " " + classNames[c]; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + if ( jQuery.isFunction(value) ) { + return this.each(function(i) { + var self = jQuery(this); + self.removeClass( value.call(this, i, self.attr("class")) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + var classNames = (value || "").split( rspace ); + + for ( var i = 0, l = this.length; i < l; i++ ) { + var elem = this[i]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + var className = (" " + elem.className + " ").replace(rclass, " "); + for ( var c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[c] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function(i) { + var self = jQuery(this); + self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " "; + for ( var i = 0, l = this.length; i < l; i++ ) { + if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + return (elem.value || "").replace(rreturn, ""); + } + + return undefined; + } + + var isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { + var option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attrFix: { + // Always normalize to ensure hook usage + tabindex: "tabIndex" + }, + + attr: function( elem, name, value, pass ) { + var nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( !("getAttribute" in elem) ) { + return jQuery.prop( elem, name, value ); + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Normalize the name if needed + name = notxml && jQuery.attrFix[ name ] || name; + + hooks = jQuery.attrHooks[ name ]; + + if ( !hooks ) { + // Use boolHook for boolean attributes + if ( rboolean.test( name ) && + (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { + + hooks = boolHook; + + // Use formHook for forms and if the name contains certain characters + } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { + hooks = formHook; + } + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return undefined; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml ) { + return hooks.get( elem, name ); + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, name ) { + var propName; + if ( elem.nodeType === 1 ) { + name = jQuery.attrFix[ name ] || name; + + if ( jQuery.support.getSetAttribute ) { + // Use removeAttribute in browsers that support it + elem.removeAttribute( name ); + } else { + jQuery.attr( elem, name, "" ); + elem.removeAttributeNode( elem.getAttributeNode( name ) ); + } + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { + elem[ propName ] = false; + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabIndex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + }, + + propFix: { + tabindex: "tabIndex", + readonly: "readOnly", + "for": "htmlFor", + "class": "className", + maxlength: "maxLength", + cellspacing: "cellSpacing", + cellpadding: "cellPadding", + rowspan: "rowSpan", + colspan: "colSpan", + usemap: "useMap", + frameborder: "frameBorder", + contenteditable: "contentEditable" + }, + + prop: function( elem, name, value ) { + var nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return undefined; + } + + var ret, hooks, + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // Try to normalize/fix the name + name = notxml && jQuery.propFix[ name ] || name; + + hooks = jQuery.propHooks[ name ]; + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return (elem[ name ] = value); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: {} +}); + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + return elem[ jQuery.propFix[ name ] || name ] ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = value; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// Use the value property for back compat +// Use the formHook for button elements in IE6/7 (#1954) +jQuery.attrHooks.value = { + get: function( elem, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.get( elem, name ); + } + return elem.value; + }, + set: function( elem, value, name ) { + if ( formHook && jQuery.nodeName( elem, "button" ) ) { + return formHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !jQuery.support.getSetAttribute ) { + + // propFix is more comprehensive and contains all fixes + jQuery.attrFix = jQuery.propFix; + + // Use this for any attribute on a form in IE6/7 + formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + // Return undefined if nodeValue is empty string + return ret && ret.nodeValue !== "" ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Check form objects in IE (multiple bugs related) + // Only use nodeValue if the attribute node exists on the form + var ret = elem.getAttributeNode( name ); + if ( ret ) { + ret.nodeValue = value; + return value; + } + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return (elem.style.cssText = "" + value); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }); +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); + } + } + }); +}); + + + + +var hasOwn = Object.prototype.hasOwnProperty, + rnamespaces = /\.(.*)$/, + rformElems = /^(?:textarea|input|select)$/i, + rperiod = /\./g, + rspaces = / /g, + rescape = /[^\w\s.|`]/g, + fcleanup = function( nm ) { + return nm.replace(rescape, "\\$&"); + }; + +/* + * A number of helper functions used for managing events. + * Many of the ideas behind this code originated from + * Dean Edwards' addEvent library. + */ +jQuery.event = { + + // Bind an event to an element + // Original by Dean Edwards + add: function( elem, types, handler, data ) { + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + if ( handler === false ) { + handler = returnFalse; + } else if ( !handler ) { + // Fixes bug #7229. Fix recommended by jdalton + return; + } + + var handleObjIn, handleObj; + + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the function being executed has a unique ID + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure + var elemData = jQuery._data( elem ); + + // If no elemData is found then we must be trying to bind to one of the + // banned noData elements + if ( !elemData ) { + return; + } + + var events = elemData.events, + eventHandle = elemData.handle; + + if ( !events ) { + elemData.events = events = {}; + } + + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.handle.apply( eventHandle.elem, arguments ) : + undefined; + }; + } + + // Add elem as a property of the handle function + // This is to prevent a memory leak with non-native events in IE. + eventHandle.elem = elem; + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = types.split(" "); + + var type, i = 0, namespaces; + + while ( (type = types[ i++ ]) ) { + handleObj = handleObjIn ? + jQuery.extend({}, handleObjIn) : + { handler: handler, data: data }; + + // Namespaced event handlers + 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; + } + + // Get the current list of functions bound to this event + var handlers = events[ type ], + special = jQuery.event.special[ type ] || {}; + + // Init the event handler queue + if ( !handlers ) { + handlers = events[ type ] = []; + + // Check for a special event handler + // Only use addEventListener/attachEvent if the special + // events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add the function to the element's handler list + handlers.push( handleObj ); + + // Keep track of which events have been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, pos ) { + // don't do events on text and comment nodes + 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.hasData( elem ) && jQuery._data( elem ), + events = elemData && elemData.events; + + if ( !elemData || !events ) { + return; + } + + // types is actually an event object here + if ( types && types.type ) { + handler = types.handler; + types = types.type; + } + + // Unbind all events for the element + if ( !types || typeof types === "string" && types.charAt(0) === "." ) { + types = types || ""; + + for ( type in events ) { + jQuery.event.remove( elem, type + types ); + } + + return; + } + + // Handle multiple events separated by a space + // jQuery(...).unbind("mouseover mouseout", fn); + types = types.split(" "); + + while ( (type = types[ i++ ]) ) { + origType = type; + handleObj = null; + all = type.indexOf(".") < 0; + namespaces = []; + + if ( !all ) { + // Namespaced event handlers + 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 < eventType.length; 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 < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( handler.guid === handleObj.guid ) { + // remove the given handler for the given type + 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; + } + } + } + + // remove generic event handler if no more handlers exist + if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + ret = null; + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + var handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + delete elemData.events; + delete elemData.handle; + + if ( jQuery.isEmptyObject( elemData ) ) { + jQuery.removeData( elem, undefined, true ); + } + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Event object or event type + var type = event.type || event, + namespaces = [], + exclusive; + + if ( type.indexOf("!") >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.exclusive = exclusive; + event.namespace = namespaces.join("."); + event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); + + // triggerHandler() and global events don't bubble or run the default action + if ( onlyHandlers || !elem ) { + event.preventDefault(); + event.stopPropagation(); + } + + // Handle a global trigger + if ( !elem ) { + // TODO: Stop taunting the data cache; remove global events and always attach to document + jQuery.each( jQuery.cache, function() { + // internalKey variable is just used to make it easier to find + // and potentially change this stuff later; currently it just + // points to jQuery.expando + var internalKey = jQuery.expando, + internalCache = this[ internalKey ]; + if ( internalCache && internalCache.events && internalCache.events[ type ] ) { + jQuery.event.trigger( event, data, internalCache.handle.elem ); + } + }); + return; + } + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + event.target = elem; + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + var cur = elem, + // IE doesn't like method names with a colon (#3533, #8272) + ontype = type.indexOf(":") < 0 ? "on" + type : ""; + + // Fire event on the current element, then bubble up the DOM tree + do { + var handle = jQuery._data( cur, "handle" ); + + event.currentTarget = cur; + if ( handle ) { + handle.apply( cur, data ); + } + + // Trigger an inline bound script + if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { + event.result = false; + event.preventDefault(); + } + + // Bubble up to document, then to window + cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; + } while ( cur && !event.isPropagationStopped() ); + + // If nobody prevented the default action, do it now + if ( !event.isDefaultPrevented() ) { + var old, + special = jQuery.event.special[ type ] || {}; + + if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction)() check here because IE6/7 fails that test. + // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. + try { + if ( ontype && elem[ type ] ) { + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + jQuery.event.triggered = type; + elem[ type ](); + } + } catch ( ieError ) {} + + if ( old ) { + elem[ ontype ] = old; + } + + jQuery.event.triggered = undefined; + } + } + + return event.result; + }, + + handle: function( event ) { + event = jQuery.event.fix( event || window.event ); + // Snapshot the handlers list since a called handler may add/remove events. + var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), + run_all = !event.exclusive && !event.namespace, + args = Array.prototype.slice.call( arguments, 0 ); + + // Use the fix-ed Event rather than the (read-only) native event + args[0] = event; + event.currentTarget = this; + + for ( var j = 0, l = handlers.length; j < l; j++ ) { + var handleObj = handlers[ j ]; + + // Triggered event must 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event. + if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { + // Pass in a reference to the handler function itself + // So that we can later remove it + 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 pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // store a copy of the original event object + // and "clone" to set read-only properties + var originalEvent = event; + event = jQuery.Event( originalEvent ); + + for ( var i = this.props.length, prop; i; ) { + prop = this.props[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary + if ( !event.target ) { + // Fixes #1925 where srcElement might not be defined either + event.target = event.srcElement || document; + } + + // check if target is a textnode (safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && event.fromElement ) { + event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; + } + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && event.clientX != null ) { + var eventDocument = event.target.ownerDocument || document, + doc = eventDocument.documentElement, + body = eventDocument.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); + } + + // Add which for key events + if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { + event.which = event.charCode != null ? event.charCode : event.keyCode; + } + + // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) + if ( !event.metaKey && event.ctrlKey ) { + event.metaKey = event.ctrlKey; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && event.button !== undefined ) { + event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); + } + + return event; + }, + + // Deprecated, use jQuery.guid instead + guid: 1E8, + + // Deprecated, use jQuery.proxy instead + proxy: jQuery.proxy, + + special: { + ready: { + // Make sure the ready event is setup + 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 ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !this.preventDefault ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // timeStamp is buggy for some events on Firefox(#3843) + // So we won't rely on the native value + this.timeStamp = jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Checks if an event happened on an element within another element +// Used in jQuery.event.special.mouseenter and mouseleave handlers +var withinElement = function( event ) { + // Check if mouse(over|out) are still within the same parent element + var parent = event.relatedTarget; + + // set the correct event type + event.type = event.data; + + // Firefox sometimes assigns relatedTarget a XUL element + // which we cannot access the parentNode property of + try { + + // Chrome does something similar, the parentNode property + // can be accessed but is null. + if ( parent && parent !== document && !parent.parentNode ) { + return; + } + + // Traverse up the tree + while ( parent && parent !== this ) { + parent = parent.parentNode; + } + + if ( parent !== this ) { + // handle event if we actually just moused on to a non sub-element + jQuery.event.handle.apply( this, arguments ); + } + + // assuming we've left the element since we most likely mousedover a xul element + } catch(e) { } +}, + +// In case of event delegation, we only need to rename the event.type, +// liveHandler will take care of the rest. +delegate = function( event ) { + event.type = event.data; + jQuery.event.handle.apply( this, arguments ); +}; + +// Create mouseenter and mouseleave events +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 ); + } + }; +}); + +// submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function( data, namespaces ) { + if ( !jQuery.nodeName( this, "form" ) ) { + jQuery.event.add(this, "click.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { + trigger( "submit", this, arguments ); + } + }); + + jQuery.event.add(this, "keypress.specialSubmit", function( e ) { + var elem = e.target, + type = elem.type; + + if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { + trigger( "submit", this, arguments ); + } + }); + + } else { + return false; + } + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialSubmit" ); + } + }; + +} + +// change delegation, happens here so we have bind. +if ( !jQuery.support.changeBubbles ) { + + var 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 ( jQuery.nodeName( elem, "select" ) ) { + val = elem.selectedIndex; + } + + return val; + }, + + testChange = function testChange( e ) { + var elem = e.target, data, val; + + if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { + return; + } + + data = jQuery._data( elem, "_change_data" ); + val = getVal(elem); + + // the current data will be also retrieved by beforeactivate + 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"; + e.liveFired = undefined; + jQuery.event.trigger( e, arguments[1], elem ); + } + }; + + jQuery.event.special.change = { + filters: { + focusout: testChange, + + beforedeactivate: testChange, + + click: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { + testChange.call( this, e ); + } + }, + + // Change has to be called before submit + // Keydown will be called before keypress, which is used in submit-event delegation + keydown: function( e ) { + var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; + + if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || + (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || + type === "select-multiple" ) { + testChange.call( this, e ); + } + }, + + // Beforeactivate happens also before the previous element is blurred + // with this event you can't trigger a change event, but you can store + // information + beforeactivate: function( e ) { + var elem = e.target; + 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 rformElems.test( this.nodeName ); + }, + + teardown: function( namespaces ) { + jQuery.event.remove( this, ".specialChange" ); + + return rformElems.test( this.nodeName ); + } + }; + + changeFilters = jQuery.event.special.change.filters; + + // Handle when the input is .focus()'d + changeFilters.focus = changeFilters.beforeactivate; +} + +function trigger( type, elem, args ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + // Don't pass args or remember liveFired; they apply to the donor event. + var event = jQuery.extend( {}, args[ 0 ] ); + event.type = type; + event.originalEvent = {}; + event.liveFired = undefined; + jQuery.event.handle.call( elem, event ); + if ( event.isDefaultPrevented() ) { + args[ 0 ].preventDefault(); + } +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + + function handler( donor ) { + // Donor event is always a native one; fix it and switch its type. + // Let focusin/out handler cancel the donor focus/blur event. + var e = jQuery.event.fix( donor ); + e.type = fix; + e.originalEvent = {}; + jQuery.event.trigger( e, null, e.target ); + if ( e.isDefaultPrevented() ) { + donor.preventDefault(); + } + } + }); +} + +jQuery.each(["bind", "one"], function( i, name ) { + jQuery.fn[ name ] = function( type, data, fn ) { + var handler; + + // Handle object literals + if ( typeof type === "object" ) { + for ( var key in type ) { + this[ name ](key, data, type[key], fn); + } + return this; + } + + if ( arguments.length === 2 || data === false ) { + fn = data; + data = undefined; + } + + if ( name === "one" ) { + handler = function( event ) { + jQuery( this ).unbind( event, handler ); + return fn.apply( this, arguments ); + }; + handler.guid = fn.guid || jQuery.guid++; + } else { + handler = fn; + } + + if ( type === "unload" && name !== "one" ) { + this.one( type, data, fn ); + + } else { + for ( var i = 0, l = this.length; i < l; i++ ) { + jQuery.event.add( this[i], type, handler, data ); + } + } + + return this; + }; +}); + +jQuery.fn.extend({ + unbind: function( type, fn ) { + // Handle object literals + if ( typeof type === "object" && !type.preventDefault ) { + for ( var key in type ) { + this.unbind(key, type[key]); + } + + } else { + for ( var i = 0, l = this.length; 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 ( arguments.length === 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] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +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 /* Internal Use Only */ ) { + var type, i = 0, match, namespaces, preType, + selector = origSelector || this.selector, + context = origSelector ? this : jQuery( this.context ); + + if ( typeof types === "object" && !types.preventDefault ) { + for ( var key in types ) { + context[ name ]( key, data, types[key], selector ); + } + + return this; + } + + if ( name === "die" && !types && + origSelector && origSelector.charAt(0) === "." ) { + + context.unbind( origSelector ); + + return this; + } + + if ( data === false || jQuery.isFunction( data ) ) { + fn = data || returnFalse; + data = undefined; + } + + types = (types || "").split(" "); + + while ( (type = types[ i++ ]) != null ) { + match = rnamespaces.exec( type ); + namespaces = ""; + + if ( match ) { + namespaces = match[0]; + type = type.replace( rnamespaces, "" ); + } + + if ( type === "hover" ) { + types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); + continue; + } + + preType = type; + + if ( liveMap[ type ] ) { + types.push( liveMap[ type ] + namespaces ); + type = type + namespaces; + + } else { + type = (liveMap[ type ] || type) + namespaces; + } + + if ( name === "live" ) { + // bind live handler + for ( var j = 0, l = context.length; 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 { + // unbind live handler + context.unbind( "live." + liveConvert( type, selector ), fn ); + } + } + + return this; + }; +}); + +function liveHandler( event ) { + var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, + elems = [], + selectors = [], + events = jQuery._data( this, "events" ); + + // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) + if ( event.liveFired === this || !events || !events.live || event.target.disabled || 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 < live.length; j++ ) { + handleObj = live[j]; + + if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { + selectors.push( handleObj.selector ); + + } else { + live.splice( j--, 1 ); + } + } + + match = jQuery( event.target ).closest( selectors, event.currentTarget ); + + for ( i = 0, l = match.length; i < l; i++ ) { + close = match[i]; + + for ( j = 0; j < live.length; j++ ) { + handleObj = live[j]; + + if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { + elem = close.elem; + related = null; + + // Those two events require additional checking + if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { + event.type = handleObj.preType; + related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; + + // Make sure not to accidentally match a child element with the same selector + if ( related && jQuery.contains( elem, related ) ) { + related = elem; + } + } + + if ( !related || related !== elem ) { + elems.push({ elem: elem, handleObj: handleObj, level: close.level }); + } + } + } + } + + for ( i = 0, l = elems.length; 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; + } + if ( event.isImmediatePropagationStopped() ) { + break; + } + } + } + + return stop; +} + +function liveConvert( type, selector ) { + return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); +} + +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 ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.bind( name, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set; + + if ( !expr ) { + return []; + } + + for ( var i = 0, l = Expr.order.length; i < l; i++ ) { + var match, + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + var left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( var type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + var found, item, + filter = Expr.filter[ type ], + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( var i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + var pass = not ^ !!found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw "Syntax error, unrecognized expression: " + msg; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + var first = match[2], + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + var doneName = match[0], + parent = elem.parentNode; + + if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { + var count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent.sizcache = doneName; + } + + var diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Utility function for retreiving the text value of an array of DOM nodes +Sizzle.getText = function( elems ) { + var ret = "", elem; + + for ( var i = 0; elems[i]; i++ ) { + elem = elems[i]; + + // Get the text from text nodes and CDATA nodes + if ( elem.nodeType === 3 || elem.nodeType === 4 ) { + ret += elem.nodeValue; + + // Traverse everything else, except comment nodes + } else if ( elem.nodeType !== 8 ) { + ret += Sizzle.getText( elem.childNodes ); + } + } + + return ret; +}; + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

"; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
"; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem.sizcache === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem.sizcache = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( typeof selector === "string" ? + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array + if ( jQuery.isArray( selectors ) ) { + var match, selector, + matches = {}, + level = 1; + + if ( cur && selectors.length ) { + for ( i = 0, l = selectors.length; i < l; i++ ) { + selector = selectors[i]; + + if ( !matches[ selector ] ) { + matches[ selector ] = POS.test( selector ) ? + jQuery( selector, context || this.context ) : + selector; + } + } + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( selector in matches ) { + match = matches[ selector ]; + + if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { + ret.push({ selector: selector, elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + if ( !elem || typeof elem === "string" ) { + return jQuery.inArray( this[0], + // If it receives a string, the selector is used + // If it receives nothing, the siblings are used + elem ? jQuery( elem ) : this.parent().children() ); + } + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ), + // The variable 'args' was introduced in + // https://github.com/jquery/jquery/commit/52a0238 + // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. + // http://code.google.com/p/v8/issues/detail?id=1050 + args = slice.call(arguments); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, args.join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return (elem === qualifier) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return (jQuery.inArray( elem, qualifier ) >= 0) === keep; + }); +} + + + + +var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and