diff --git a/Disco.BI/Disco.BI.csproj b/Disco.BI/Disco.BI.csproj
index b089a86e..9362d6fb 100644
--- a/Disco.BI/Disco.BI.csproj
+++ b/Disco.BI/Disco.BI.csproj
@@ -48,15 +48,15 @@
False
- ..\packages\Microsoft.AspNet.SignalR.Core.1.1.0\lib\net40\Microsoft.AspNet.SignalR.Core.dll
+ ..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll
False
- ..\packages\Microsoft.AspNet.SignalR.Owin.1.1.0\lib\net45\Microsoft.AspNet.SignalR.Owin.dll
+ ..\packages\Microsoft.AspNet.SignalR.Owin.1.1.2\lib\net45\Microsoft.AspNet.SignalR.Owin.dll
False
- ..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.0\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll
+ ..\packages\Microsoft.AspNet.SignalR.SystemWeb.1.1.2\lib\net45\Microsoft.AspNet.SignalR.SystemWeb.dll
..\packages\Microsoft.Owin.Host.SystemWeb.1.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
@@ -250,7 +250,7 @@
-
+
diff --git a/Disco.BI/Properties/AssemblyInfo.cs b/Disco.BI/Properties/AssemblyInfo.cs
index 69d51aaa..a2b38375 100644
--- a/Disco.BI/Properties/AssemblyInfo.cs
+++ b/Disco.BI/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0527.1408")]
-[assembly: AssemblyFileVersion("1.2.0527.1408")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2017")]
+[assembly: AssemblyFileVersion("1.2.0603.2017")]
\ No newline at end of file
diff --git a/Disco.BI/packages.config b/Disco.BI/packages.config
index 18312478..9fe73724 100644
--- a/Disco.BI/packages.config
+++ b/Disco.BI/packages.config
@@ -1,9 +1,9 @@
-
-
-
+
+
+
diff --git a/Disco.Client/Properties/AssemblyInfo.cs b/Disco.Client/Properties/AssemblyInfo.cs
index 1a485eed..00a5bb61 100644
--- a/Disco.Client/Properties/AssemblyInfo.cs
+++ b/Disco.Client/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0516.2043")]
-[assembly: AssemblyFileVersion("1.2.0516.2043")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2016")]
+[assembly: AssemblyFileVersion("1.2.0603.2016")]
\ No newline at end of file
diff --git a/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs b/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
index 46b3547e..5e8d9eec 100644
--- a/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
+++ b/Disco.ClientBootstrapper/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0516.2043")]
-[assembly: AssemblyFileVersion("1.2.0516.2043")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2016")]
+[assembly: AssemblyFileVersion("1.2.0603.2016")]
\ No newline at end of file
diff --git a/Disco.Data/Properties/AssemblyInfo.cs b/Disco.Data/Properties/AssemblyInfo.cs
index ee8c1dfe..2ca87e2d 100644
--- a/Disco.Data/Properties/AssemblyInfo.cs
+++ b/Disco.Data/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0603.1734")]
-[assembly: AssemblyFileVersion("1.2.0603.1734")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2017")]
+[assembly: AssemblyFileVersion("1.2.0603.2017")]
\ No newline at end of file
diff --git a/Disco.Models/Properties/AssemblyInfo.cs b/Disco.Models/Properties/AssemblyInfo.cs
index b2ad8c2f..f5cbcc3c 100644
--- a/Disco.Models/Properties/AssemblyInfo.cs
+++ b/Disco.Models/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0603.1734")]
-[assembly: AssemblyFileVersion("1.2.0603.1734")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2017")]
+[assembly: AssemblyFileVersion("1.2.0603.2017")]
\ No newline at end of file
diff --git a/Disco.Services/Disco.Services.csproj b/Disco.Services/Disco.Services.csproj
index f6624464..43aa97a8 100644
--- a/Disco.Services/Disco.Services.csproj
+++ b/Disco.Services/Disco.Services.csproj
@@ -41,10 +41,11 @@
False
- ..\packages\Microsoft.AspNet.SignalR.Core.1.1.0\lib\net40\Microsoft.AspNet.SignalR.Core.dll
+ ..\packages\Microsoft.AspNet.SignalR.Core.1.1.2\lib\net40\Microsoft.AspNet.SignalR.Core.dll
-
- ..\packages\Microsoft.AspNet.SignalR.Owin.1.1.0\lib\net45\Microsoft.AspNet.SignalR.Owin.dll
+
+ False
+ ..\packages\Microsoft.AspNet.SignalR.Owin.1.1.2\lib\net45\Microsoft.AspNet.SignalR.Owin.dll
True
@@ -159,7 +160,7 @@
-
+
diff --git a/Disco.Services/Properties/AssemblyInfo.cs b/Disco.Services/Properties/AssemblyInfo.cs
index 24466d08..ac698c56 100644
--- a/Disco.Services/Properties/AssemblyInfo.cs
+++ b/Disco.Services/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0603.1734")]
-[assembly: AssemblyFileVersion("1.2.0603.1734")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2017")]
+[assembly: AssemblyFileVersion("1.2.0603.2017")]
\ No newline at end of file
diff --git a/Disco.Services/packages.config b/Disco.Services/packages.config
index 9c799d15..ce77716e 100644
--- a/Disco.Services/packages.config
+++ b/Disco.Services/packages.config
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/Disco.Web.Extensions/Disco.Web.Extensions.csproj b/Disco.Web.Extensions/Disco.Web.Extensions.csproj
index a4189905..98714a3c 100644
--- a/Disco.Web.Extensions/Disco.Web.Extensions.csproj
+++ b/Disco.Web.Extensions/Disco.Web.Extensions.csproj
@@ -54,27 +54,27 @@
True
- ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.Helpers.dll
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.Helpers.dll
True
- ..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll
+ ..\packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll
True
- ..\packages\Microsoft.AspNet.Razor.2.0.20715.0\lib\net40\System.Web.Razor.dll
+ ..\packages\Microsoft.AspNet.Razor.2.0.30506.0\lib\net40\System.Web.Razor.dll
True
- ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.dll
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.dll
True
- ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Deployment.dll
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Deployment.dll
True
- ..\packages\Microsoft.AspNet.WebPages.2.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll
+ ..\packages\Microsoft.AspNet.WebPages.2.0.30506.0\lib\net40\System.Web.WebPages.Razor.dll
@@ -134,7 +134,7 @@
-
+
diff --git a/Disco.Web.Extensions/Properties/AssemblyInfo.cs b/Disco.Web.Extensions/Properties/AssemblyInfo.cs
index 8c6042a5..c78a7e0e 100644
--- a/Disco.Web.Extensions/Properties/AssemblyInfo.cs
+++ b/Disco.Web.Extensions/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.2.0527.1408")]
-[assembly: AssemblyFileVersion("1.2.0527.1408")]
\ No newline at end of file
+[assembly: AssemblyVersion("1.2.0603.2017")]
+[assembly: AssemblyFileVersion("1.2.0603.2017")]
\ No newline at end of file
diff --git a/Disco.Web.Extensions/packages.config b/Disco.Web.Extensions/packages.config
index 0f150efe..d95f76a5 100644
--- a/Disco.Web.Extensions/packages.config
+++ b/Disco.Web.Extensions/packages.config
@@ -1,9 +1,9 @@
-
-
-
+
+
+
diff --git a/Disco.Web/ClientSource/Scripts/Core.js b/Disco.Web/ClientSource/Scripts/Core.js
index be674179..52419ddd 100644
--- a/Disco.Web/ClientSource/Scripts/Core.js
+++ b/Disco.Web/ClientSource/Scripts/Core.js
@@ -1393,9 +1393,9 @@ window.Modernizr = (function( window, document, undefined ) {
})(this, this.document);
-///#source 1 1 /ClientSource/Scripts/Core/jquery-2.0.0.js
+///#source 1 1 /ClientSource/Scripts/Core/jquery-2.0.2.js
/*!
- * jQuery JavaScript Library v2.0.0
+ * jQuery JavaScript Library v2.0.2
* http://jquery.com/
*
* Includes Sizzle.js
@@ -1405,7 +1405,7 @@ window.Modernizr = (function( window, document, undefined ) {
* Released under the MIT license
* http://jquery.org/license
*
- * Date: 2013-04-18
+ * Date: 2013-05-30T21:25Z
*/
(function( window, undefined ) {
@@ -1442,7 +1442,7 @@ var
// List of deleted data cache ids, so we can reuse them
core_deletedIds = [],
- core_version = "2.0.0",
+ core_version = "2.0.2",
// Save a reference to some core methods
core_concat = core_deletedIds.concat,
@@ -1468,7 +1468,7 @@ var
// A simple way to check for HTML strings
// Prioritize #id over to avoid XSS via location.hash (#9521)
// Strict HTML recognition (#11290: must start with <)
- rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
@@ -2261,18 +2261,19 @@ function isArraylike( obj ) {
// All jQuery objects should point back to these
rootjQuery = jQuery(document);
/*!
- * Sizzle CSS Selector Engine v1.9.2-pre
+ * Sizzle CSS Selector Engine v1.9.4-pre
* http://sizzlejs.com/
*
* Copyright 2013 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
- * Date: 2013-04-16
+ * Date: 2013-05-27
*/
(function( window, undefined ) {
var i,
+ support,
cachedruns,
Expr,
getText,
@@ -2294,7 +2295,6 @@ var i,
// Instance-specific data
expando = "sizzle" + -(new Date()),
preferredDoc = window.document,
- support = {},
dirruns = 0,
done = 0,
classCache = createCache(),
@@ -2307,7 +2307,8 @@ var i,
strundefined = typeof undefined,
MAX_NEGATIVE = 1 << 31,
- // Array methods
+ // Instance methods
+ hasOwn = ({}).hasOwnProperty,
arr = [],
pop = arr.pop,
push_native = arr.push,
@@ -2372,7 +2373,7 @@ var i,
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- "boolean": new RegExp( "^(?:" + booleans + ")$", "i" ),
+ "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
// For use in libraries implementing .is()
// We use this for POS matching in `select`
"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
@@ -2390,11 +2391,13 @@ var i,
rescape = /'|\\/g,
// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
- funescape = function( _, escaped ) {
+ runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+ funescape = function( _, escaped, escapedWhitespace ) {
var high = "0x" + escaped - 0x10000;
// NaN means non-codepoint
- return high !== high ?
+ // Support: Firefox
+ // Workaround erroneous numeric interpretation of +"0x"
+ return high !== high || escapedWhitespace ?
escaped :
// BMP codepoint
high < 0 ?
@@ -2432,63 +2435,6 @@ try {
};
}
-/**
- * For feature detection
- * @param {Function} fn The function to test for native support
- */
-function isNative( fn ) {
- return rnative.test( fn + "" );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- * deleting the oldest entry
- */
-function createCache() {
- var cache,
- keys = [];
-
- return (cache = function( key, value ) {
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
- if ( keys.push( key += " " ) > Expr.cacheLength ) {
- // Only keep the most recent entries
- delete cache[ keys.shift() ];
- }
- return (cache[ key ] = value);
- });
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
- fn[ expando ] = true;
- return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
- var div = document.createElement("div");
-
- try {
- return !!fn( div );
- } catch (e) {
- return false;
- } finally {
- if ( div.parentNode ) {
- div.parentNode.removeChild( div );
- }
- // release memory in IE
- div = null;
- }
-}
-
function Sizzle( selector, context, results, seed ) {
var match, elem, m, nodeType,
// QSA vars
@@ -2598,6 +2544,195 @@ function Sizzle( selector, context, results, seed ) {
return select( selector.replace( rtrim, "$1" ), context, results, seed );
}
+/**
+ * For feature detection
+ * @param {Function} fn The function to test for native support
+ */
+function isNative( fn ) {
+ return rnative.test( fn + "" );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ * deleting the oldest entry
+ */
+function createCache() {
+ var keys = [];
+
+ function cache( key, value ) {
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+ if ( keys.push( key += " " ) > Expr.cacheLength ) {
+ // Only keep the most recent entries
+ delete cache[ keys.shift() ];
+ }
+ return (cache[ key ] = value);
+ }
+ return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+ fn[ expando ] = true;
+ return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created div and expects a boolean result
+ */
+function assert( fn ) {
+ var div = document.createElement("div");
+
+ try {
+ return !!fn( div );
+ } catch (e) {
+ return false;
+ } finally {
+ // Remove from its parent by default
+ if ( div.parentNode ) {
+ div.parentNode.removeChild( div );
+ }
+ // release memory in IE
+ div = null;
+ }
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied if the test fails
+ * @param {Boolean} test The result of a test. If true, null will be set as the handler in leiu of the specified handler
+ */
+function addHandle( attrs, handler, test ) {
+ attrs = attrs.split("|");
+ var current,
+ i = attrs.length,
+ setHandle = test ? null : handler;
+
+ while ( i-- ) {
+ // Don't override a user's handler
+ if ( !(current = Expr.attrHandle[ attrs[i] ]) || current === handler ) {
+ Expr.attrHandle[ attrs[i] ] = setHandle;
+ }
+ }
+}
+
+/**
+ * Fetches boolean attributes by node
+ * @param {Element} elem
+ * @param {String} name
+ */
+function boolHandler( elem, name ) {
+ // XML does not need to be checked as this will not be assigned for XML documents
+ var val = elem.getAttributeNode( name );
+ return val && val.specified ?
+ val.value :
+ elem[ name ] === true ? name.toLowerCase() : null;
+}
+
+/**
+ * Fetches attributes without interpolation
+ * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+ * @param {Element} elem
+ * @param {String} name
+ */
+function interpolationHandler( elem, name ) {
+ // XML does not need to be checked as this will not be assigned for XML documents
+ return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+}
+
+/**
+ * Uses defaultValue to retrieve value in IE6/7
+ * @param {Element} elem
+ * @param {String} name
+ */
+function valueHandler( elem ) {
+ // Ignore the value *property* on inputs by using defaultValue
+ // Fallback to Sizzle.attr by returning undefined where appropriate
+ // XML does not need to be checked as this will not be assigned for XML documents
+ if ( elem.nodeName.toLowerCase() === "input" ) {
+ return elem.defaultValue;
+ }
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns Returns -1 if a precedes b, 1 if a follows b
+ */
+function siblingCheck( a, b ) {
+ var cur = b && a,
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+ ( ~b.sourceIndex || MAX_NEGATIVE ) -
+ ( ~a.sourceIndex || MAX_NEGATIVE );
+
+ // Use IE sourceIndex if available on both nodes
+ if ( diff ) {
+ return diff;
+ }
+
+ // Check if b follows a
+ if ( cur ) {
+ while ( (cur = cur.nextSibling) ) {
+ if ( cur === b ) {
+ return -1;
+ }
+ }
+ }
+
+ return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+ return function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && elem.type === type;
+ };
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+ return markFunction(function( argument ) {
+ argument = +argument;
+ return markFunction(function( seed, matches ) {
+ var j,
+ matchIndexes = fn( [], seed.length, argument ),
+ i = matchIndexes.length;
+
+ // Match elements found at the specified indexes
+ while ( i-- ) {
+ if ( seed[ (j = matchIndexes[i]) ] ) {
+ seed[j] = !(matches[j] = seed[j]);
+ }
+ }
+ });
+ });
+}
+
/**
* Detect xml
* @param {Element|Object} elem An element or a document
@@ -2609,13 +2744,17 @@ isXML = Sizzle.isXML = function( elem ) {
return documentElement ? documentElement.nodeName !== "HTML" : false;
};
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
/**
* Sets document-related variables once based on the current document
* @param {Element|Object} [doc] An element or document object to use to set the document
* @returns {Object} Returns the current document
*/
setDocument = Sizzle.setDocument = function( node ) {
- var doc = node ? node.ownerDocument || node : preferredDoc;
+ var doc = node ? node.ownerDocument || node : preferredDoc,
+ parent = doc.parentWindow;
// If no document and documentElement is available, return
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
@@ -2629,19 +2768,56 @@ setDocument = Sizzle.setDocument = function( node ) {
// Support tests
documentIsHTML = !isXML( doc );
- // Check if getElementsByTagName("*") returns only elements
- support.getElementsByTagName = assert(function( div ) {
- div.appendChild( doc.createComment("") );
- return !div.getElementsByTagName("*").length;
- });
+ // Support: IE>8
+ // If iframe document is assigned to "document" variable and if iframe has been reloaded,
+ // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
+ if ( parent && parent.frameElement ) {
+ parent.attachEvent( "onbeforeunload", function() {
+ setDocument();
+ });
+ }
+
+ /* Attributes
+ ---------------------------------------------------------------------- */
// Support: IE<8
// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
support.attributes = assert(function( div ) {
+
+ // Support: IE<8
+ // Prevent attribute/property "interpolation"
+ div.innerHTML = "";
+ addHandle( "type|href|height|width", interpolationHandler, div.firstChild.getAttribute("href") === "#" );
+
+ // Support: IE<9
+ // Use getAttributeNode to fetch booleans when getAttribute lies
+ addHandle( booleans, boolHandler, div.getAttribute("disabled") == null );
+
div.className = "i";
return !div.getAttribute("className");
});
+ // Support: IE<9
+ // Retrieving value should defer to defaultValue
+ support.input = assert(function( div ) {
+ div.innerHTML = "";
+ div.firstChild.setAttribute( "value", "" );
+ return div.firstChild.getAttribute( "value" ) === "";
+ });
+
+ // IE6/7 still return empty string for value,
+ // but are actually retrieving the property
+ addHandle( "value", valueHandler, support.attributes && support.input );
+
+ /* getElement(s)By*
+ ---------------------------------------------------------------------- */
+
+ // Check if getElementsByTagName("*") returns only elements
+ support.getElementsByTagName = assert(function( div ) {
+ div.appendChild( doc.createComment("") );
+ return !div.getElementsByTagName("*").length;
+ });
+
// Check if getElementsByClassName can be trusted
support.getElementsByClassName = assert(function( div ) {
div.innerHTML = "";
@@ -2654,19 +2830,9 @@ setDocument = Sizzle.setDocument = function( node ) {
return div.getElementsByClassName("i").length === 2;
});
- // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
- // Detached nodes confoundingly follow *each other*
- support.sortDetached = assert(function( div1 ) {
- // Should return 1, but returns 4 (following)
- return div1.compareDocumentPosition( document.createElement("div") ) & 1;
- });
-
// Support: IE<10
// Check if getElementById returns elements by name
- // Support: Windows 8 Native Apps
- // Assigning innerHTML with "name" attributes throws uncatchable exceptions
- // (http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx)
- // and the broken getElementById methods don't pick up programatically-set names,
+ // The broken getElementById methods don't pick up programatically-set names,
// so use a roundabout getElementsByName test
support.getById = assert(function( div ) {
docElem.appendChild( div ).id = expando;
@@ -2690,17 +2856,10 @@ setDocument = Sizzle.setDocument = function( node ) {
};
};
} else {
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
- var m = context.getElementById( id );
+ // Support: IE6/7
+ // getElementById is not reliable as a find shortcut
+ delete Expr.find["ID"];
- return m ?
- m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
- [m] :
- undefined :
- [];
- }
- };
Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
@@ -2743,6 +2902,9 @@ setDocument = Sizzle.setDocument = function( node ) {
}
};
+ /* QSA/matchesSelector
+ ---------------------------------------------------------------------- */
+
// QSA and matchesSelector support
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
@@ -2787,7 +2949,7 @@ setDocument = Sizzle.setDocument = function( node ) {
// Should not select anything
// Support: Windows 8 Native Apps
// The type attribute is restricted during .innerHTML assignment
- var input = document.createElement("input");
+ var input = doc.createElement("input");
input.setAttribute( "type", "hidden" );
div.appendChild( input ).setAttribute( "t", "" );
@@ -2827,6 +2989,9 @@ setDocument = Sizzle.setDocument = function( node ) {
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+ /* Contains
+ ---------------------------------------------------------------------- */
+
// Element contains another
// Purposefully does not implement inclusive descendent
// As in, an element does not contain itself
@@ -2851,6 +3016,16 @@ setDocument = Sizzle.setDocument = function( node ) {
return false;
};
+ /* Sorting
+ ---------------------------------------------------------------------- */
+
+ // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+ // Detached nodes confoundingly follow *each other*
+ support.sortDetached = assert(function( div1 ) {
+ // Should return 1, but returns 4 (following)
+ return div1.compareDocumentPosition( doc.createElement("div") ) & 1;
+ });
+
// Document order sorting
sortOrder = docElem.compareDocumentPosition ?
function( a, b ) {
@@ -2941,7 +3116,7 @@ setDocument = Sizzle.setDocument = function( node ) {
0;
};
- return document;
+ return doc;
};
Sizzle.matches = function( expr, elements ) {
@@ -2957,10 +3132,9 @@ Sizzle.matchesSelector = function( elem, expr ) {
// Make sure that attribute selectors are quoted
expr = expr.replace( rattributeQuotes, "='$1']" );
- // rbuggyQSA always contains :focus, so no need for an existence check
if ( support.matchesSelector && documentIsHTML &&
- (!rbuggyMatches || !rbuggyMatches.test(expr)) &&
- (!rbuggyQSA || !rbuggyQSA.test(expr)) ) {
+ ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+ ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
try {
var ret = matches.call( elem, expr );
@@ -2993,7 +3167,10 @@ Sizzle.attr = function( elem, name ) {
}
var fn = Expr.attrHandle[ name.toLowerCase() ],
- val = fn && fn( elem, name, !documentIsHTML );
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
+ val = ( fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+ fn( elem, name, !documentIsHTML ) :
+ undefined );
return val === undefined ?
support.attributes || !documentIsHTML ?
@@ -3008,7 +3185,10 @@ Sizzle.error = function( msg ) {
throw new Error( "Syntax error, unrecognized expression: " + msg );
};
-// Document sorting and removing duplicates
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
Sizzle.uniqueSort = function( results ) {
var elem,
duplicates = [],
@@ -3034,87 +3214,6 @@ Sizzle.uniqueSort = function( results ) {
return results;
};
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns Returns -1 if a precedes b, 1 if a follows b
- */
-function siblingCheck( a, b ) {
- var cur = b && a,
- diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
-
- // Use IE sourceIndex if available on both nodes
- if ( diff ) {
- return diff;
- }
-
- // Check if b follows a
- if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
- if ( cur === b ) {
- return -1;
- }
- }
- }
-
- return a ? 1 : -1;
-}
-
-// Fetches boolean attributes by node
-function boolHandler( elem, name, isXML ) {
- var val;
- return isXML ?
- undefined :
- (val = elem.getAttributeNode( name )) && val.specified ?
- val.value :
- elem[ name ] === true ? name.toLowerCase() : null;
-}
-
-// Fetches attributes without interpolation
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-function interpolationHandler( elem, name, isXML ) {
- var val;
- return isXML ?
- undefined :
- (val = elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ));
-}
-
-// Returns a function to use in pseudos for input types
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for buttons
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for positionals
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
/**
* Utility function for retrieving the text value of an array of DOM nodes
* @param {Array|Element} elem
@@ -3225,7 +3324,7 @@ Expr = Sizzle.selectors = {
}
// Accept quoted arguments as-is
- if ( match[4] ) {
+ if ( match[3] && match[4] !== undefined ) {
match[2] = match[4];
// Strip excess characters from unquoted arguments
@@ -3653,11 +3752,11 @@ function tokenize( selector, parseOnly ) {
// Combinators
if ( (match = rcombinators.exec( soFar )) ) {
matched = match.shift();
- tokens.push( {
+ tokens.push({
value: matched,
// Cast descendant combinators to space
type: match[0].replace( rtrim, " " )
- } );
+ });
soFar = soFar.slice( matched.length );
}
@@ -3666,11 +3765,11 @@ function tokenize( selector, parseOnly ) {
if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
(match = preFilters[ type ]( match ))) ) {
matched = match.shift();
- tokens.push( {
+ tokens.push({
value: matched,
type: type,
matches: match
- } );
+ });
soFar = soFar.slice( matched.length );
}
}
@@ -3917,7 +4016,10 @@ function matcherFromTokens( tokens ) {
}
return setMatcher(
i > 1 && elementMatcher( matchers ),
- i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
+ i > 1 && toSelector(
+ // If the preceding token was a descendant combinator, insert an implicit any-element `*`
+ tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+ ).replace( rtrim, "$1" ),
matcher,
i < j && matcherFromTokens( tokens.slice( i, j ) ),
j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
@@ -4079,14 +4181,13 @@ function select( selector, context, results, seed ) {
// Take a shortcut and set the context if the root selector is an ID
tokens = match[0] = match[0].slice( 0 );
if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && documentIsHTML &&
+ support.getById && context.nodeType === 9 && documentIsHTML &&
Expr.relative[ tokens[1].type ] ) {
context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
if ( !context ) {
return results;
}
-
selector = selector.slice( tokens.shift().value.length );
}
@@ -4154,31 +4255,6 @@ setDocument();
[0, 0].sort( sortOrder );
support.detectDuplicates = hasDuplicate;
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-assert(function( div ) {
- div.innerHTML = "";
- if ( div.firstChild.getAttribute("href") !== "#" ) {
- var attrs = "type|href|height|width".split("|"),
- i = attrs.length;
- while ( i-- ) {
- Expr.attrHandle[ attrs[i] ] = interpolationHandler;
- }
- }
-});
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-assert(function( div ) {
- if ( div.getAttribute("disabled") != null ) {
- var attrs = booleans.split("|"),
- i = attrs.length;
- while ( i-- ) {
- Expr.attrHandle[ attrs[i] ] = boolHandler;
- }
- }
-});
-
jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.pseudos;
@@ -4732,13 +4808,9 @@ Data.prototype = {
// Handle: [ owner, { properties } ] args
} else {
- // Support an expectation from the old data system where plain
- // objects used to initialize would be set to the cache by
- // reference, instead of having properties and values copied.
- // Note, this will kill the connection between
- // "this.cache[ unlock ]" and "cache"
+ // Fresh assignments by object are shallow copied
if ( jQuery.isEmptyObject( cache ) ) {
- this.cache[ unlock ] = data;
+ jQuery.extend( this.cache[ unlock ], data );
// Otherwise, copy the properties one-by-one to the cache object
} else {
for ( prop in data ) {
@@ -4746,6 +4818,7 @@ Data.prototype = {
}
}
}
+ return cache;
},
get: function( owner, key ) {
// Either a valid cache is found, or will be created.
@@ -4787,7 +4860,7 @@ Data.prototype = {
return value !== undefined ? value : key;
},
remove: function( owner, key ) {
- var i, name,
+ var i, name, camel,
unlock = this.key( owner ),
cache = this.cache[ unlock ];
@@ -4805,13 +4878,14 @@ Data.prototype = {
// This will only penalize the array argument path.
name = key.concat( key.map( jQuery.camelCase ) );
} else {
+ camel = jQuery.camelCase( key );
// Try the string as a key before any manipulation
if ( key in cache ) {
- name = [ key ];
+ name = [ key, camel ];
} else {
// If a key with the spaces exists, use it.
// Otherwise, create an array by matching non-whitespace
- name = jQuery.camelCase( key );
+ name = camel;
name = name in cache ?
[ name ] : ( name.match( core_rnotwhite ) || [] );
}
@@ -4829,7 +4903,9 @@ Data.prototype = {
);
},
discard: function( owner ) {
- delete this.cache[ this.key( owner ) ];
+ if ( owner[ this.expando ] ) {
+ delete this.cache[ owner[ this.expando ] ];
+ }
}
};
@@ -4882,7 +4958,7 @@ jQuery.fn.extend({
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.substring(5) );
+ name = jQuery.camelCase( name.slice(5) );
dataAttr( elem, name, data[ name ] );
}
}
@@ -5028,7 +5104,6 @@ jQuery.extend({
startLength--;
}
- hooks.cur = fn;
if ( fn ) {
// Add a progress sentinel to prevent the fx queue from being
@@ -5138,7 +5213,7 @@ jQuery.fn.extend({
}
});
var nodeHook, boolHook,
- rclass = /[\t\r\n]/g,
+ rclass = /[\t\r\n\f]/g,
rreturn = /\r/g,
rfocusable = /^(?:input|select|textarea|button)$/i;
@@ -5321,15 +5396,14 @@ jQuery.fn.extend({
isFunction = jQuery.isFunction( value );
return this.each(function( i ) {
- var val,
- self = jQuery(this);
+ var val;
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
- val = value.call( this, i, self.val() );
+ val = value.call( this, i, jQuery( this ).val() );
} else {
val = value;
}
@@ -5444,7 +5518,7 @@ jQuery.extend({
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
name = name.toLowerCase();
hooks = jQuery.attrHooks[ name ] ||
- ( jQuery.expr.match.boolean.test( name ) ? boolHook : nodeHook );
+ ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
}
if ( value !== undefined ) {
@@ -5483,7 +5557,7 @@ jQuery.extend({
propName = jQuery.propFix[ name ] || name;
// Boolean attributes get special treatment (#10870)
- if ( jQuery.expr.match.boolean.test( name ) ) {
+ if ( jQuery.expr.match.bool.test( name ) ) {
// Set corresponding property to false
elem[ propName ] = false;
}
@@ -5567,7 +5641,7 @@ boolHook = {
return name;
}
};
-jQuery.each( jQuery.expr.match.boolean.source.match( /\w+/g ), function( i, name ) {
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr;
jQuery.expr.attrHandle[ name ] = function( elem, name, isXML ) {
@@ -6148,6 +6222,12 @@ jQuery.event = {
event[ prop ] = originalEvent[ prop ];
}
+ // Support: Cordova 2.5 (WebKit) (#13255)
+ // All events should have a target; Cordova deviceready doesn't
+ if ( !event.target ) {
+ event.target = document;
+ }
+
// Support: Safari 6.0+, Chrome < 28
// Target should not be a text node (#504, #13143)
if ( event.target.nodeType === 3 ) {
@@ -6459,6 +6539,7 @@ jQuery.fn.extend({
}
});
var isSimple = /^.[^:#\[\.,]*$/,
+ rparentsprev = /^(?:parents|prev(?:Until|All))/,
rneedsContext = jQuery.expr.match.needsContext,
// methods guaranteed to produce a unique set when starting from a unique set
guaranteedUnique = {
@@ -6470,13 +6551,14 @@ var isSimple = /^.[^:#\[\.,]*$/,
jQuery.fn.extend({
find: function( selector ) {
- var self, matched, i,
- l = this.length;
+ var i,
+ ret = [],
+ self = this,
+ len = self.length;
if ( typeof selector !== "string" ) {
- self = this;
return this.pushStack( jQuery( selector ).filter(function() {
- for ( i = 0; i < l; i++ ) {
+ for ( i = 0; i < len; i++ ) {
if ( jQuery.contains( self[ i ], this ) ) {
return true;
}
@@ -6484,15 +6566,14 @@ jQuery.fn.extend({
}) );
}
- matched = [];
- for ( i = 0; i < l; i++ ) {
- jQuery.find( selector, this[ i ], matched );
+ for ( i = 0; i < len; i++ ) {
+ jQuery.find( selector, self[ i ], ret );
}
// Needed because $( selector, context ) becomes $( context ).find( selector )
- matched = this.pushStack( l > 1 ? jQuery.unique( matched ) : matched );
- matched.selector = ( this.selector ? this.selector + " " : "" ) + selector;
- return matched;
+ ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
+ ret.selector = this.selector ? this.selector + " " + selector : selector;
+ return ret;
},
has: function( target ) {
@@ -6518,14 +6599,16 @@ jQuery.fn.extend({
},
is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional/relative selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- rneedsContext.test( selector ) ?
- jQuery( selector, this.context ).index( this[ 0 ] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
+ return !!winnow(
+ this,
+
+ // If this is a positional/relative selector, check membership in the returned set
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
+ typeof selector === "string" && rneedsContext.test( selector ) ?
+ jQuery( selector ) :
+ selector || [],
+ false
+ ).length;
},
closest: function( selectors, context ) {
@@ -6636,9 +6719,7 @@ jQuery.each({
return jQuery.sibling( elem.firstChild );
},
contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.merge( [], elem.childNodes );
+ return elem.contentDocument || jQuery.merge( [], elem.childNodes );
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
@@ -6658,8 +6739,8 @@ jQuery.each({
jQuery.unique( matched );
}
- // Reverse order for parents* and prev*
- if ( name[ 0 ] === "p" ) {
+ // Reverse order for parents* and prev-derivatives
+ if ( rparentsprev.test( name ) ) {
matched.reverse();
}
}
@@ -6758,6 +6839,7 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>
option: [ 1, "" ],
thead: [ 1, "" ],
+ col: [ 2, "" ],
tr: [ 2, "" ],
td: [ 3, "" ],
@@ -6767,7 +6849,7 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>
// Support: IE 9
wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.col = wrapMap.thead;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
wrapMap.th = wrapMap.td;
jQuery.fn.extend({
@@ -6915,6 +6997,10 @@ jQuery.fn.extend({
parent = args[ i++ ];
if ( parent ) {
+ // Don't use the snapshot next if it has moved (#13810)
+ if ( next && next.parentNode !== parent ) {
+ next = this.nextSibling;
+ }
jQuery( this ).remove();
parent.insertBefore( elem, next );
}
@@ -7170,35 +7256,35 @@ jQuery.extend({
},
cleanData: function( elems ) {
- var data, elem, type,
- l = elems.length,
- i = 0,
- special = jQuery.event.special;
+ var data, elem, events, type, key, j,
+ special = jQuery.event.special,
+ i = 0;
- for ( ; i < l; i++ ) {
- elem = elems[ i ];
+ for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
+ if ( Data.accepts( elem ) ) {
+ key = elem[ data_priv.expando ];
- if ( jQuery.acceptData( elem ) ) {
+ if ( key && (data = data_priv.cache[ key ]) ) {
+ events = Object.keys( data.events || {} );
+ if ( events.length ) {
+ for ( j = 0; (type = events[j]) !== undefined; j++ ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
- data = data_priv.access( elem );
-
- if ( data ) {
- for ( 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 );
+ // This is a shortcut to avoid jQuery.event.remove's overhead
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
}
}
+ if ( data_priv.cache[ key ] ) {
+ // Discard any remaining `private` data
+ delete data_priv.cache[ key ];
+ }
}
}
- // Discard any remaining `private` and `user` data
- // One day we'll replace the dual arrays with a WeakMap and this won't be an issue.
- // (Splices the data objects out of the internal cache arrays)
- data_user.discard( elem );
- data_priv.discard( elem );
+ // Discard any remaining `user` data
+ delete data_user.cache[ elem[ data_user.expando ] ];
}
},
@@ -7206,10 +7292,10 @@ jQuery.extend({
return jQuery.ajax({
url: url,
type: "GET",
- dataType: "text",
+ dataType: "script",
async: false,
global: false,
- success: jQuery.globalEval
+ "throws": true
});
}
});
@@ -7264,11 +7350,9 @@ function cloneCopyEvent( src, dest ) {
// 1. Copy private data: events, handlers, etc.
if ( data_priv.hasData( src ) ) {
pdataOld = data_priv.access( src );
- pdataCur = jQuery.extend( {}, pdataOld );
+ pdataCur = data_priv.set( dest, pdataOld );
events = pdataOld.events;
- data_priv.set( dest, pdataCur );
-
if ( events ) {
delete pdataCur.handle;
pdataCur.events = {};
@@ -7549,7 +7633,7 @@ jQuery.extend({
}
},
- // Exclude the following css properties to add px
+ // Don't automatically add "px" to these possibly-unitless properties
cssNumber: {
"columnCount": true,
"fillOpacity": true,
@@ -8690,7 +8774,7 @@ jQuery.extend({
}
// if no content
- if ( status === 204 ) {
+ if ( status === 204 || s.type === "HEAD" ) {
statusText = "nocontent";
// if not modified
@@ -9184,44 +9268,51 @@ var fxNow, timerId,
animationPrefilters = [ defaultPrefilter ],
tweeners = {
"*": [function( prop, value ) {
- var end, unit,
- tween = this.createTween( prop, value ),
- parts = rfxnum.exec( value ),
+ var tween = this.createTween( prop, value ),
target = tween.cur(),
- start = +target || 0,
+ parts = rfxnum.exec( value ),
+ unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+ // Starting value computation is required for potential unit mismatches
+ start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
+ rfxnum.exec( jQuery.css( tween.elem, prop ) ),
scale = 1,
maxIterations = 20;
- if ( parts ) {
- end = +parts[2];
- unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+ if ( start && start[ 3 ] !== unit ) {
+ // Trust units reported by jQuery.css
+ unit = unit || start[ 3 ];
- // We need to compute starting value
- if ( unit !== "px" && start ) {
- // Iteratively approximate from a nonzero starting point
- // Prefer the current property, because this process will be trivial if it uses the same units
- // Fallback to end or a simple constant
- start = jQuery.css( tween.elem, prop, true ) || end || 1;
+ // Make sure we update the tween properties later on
+ parts = parts || [];
- do {
- // If previous iteration zeroed out, double until we get *something*
- // Use a string for doubling factor so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
+ // Iteratively approximate from a nonzero starting point
+ start = +target || 1;
- // Adjust and apply
- start = start / scale;
- jQuery.style( tween.elem, prop, start + unit );
+ do {
+ // If previous iteration zeroed out, double until we get *something*
+ // Use a string for doubling factor so we don't accidentally see scale as unchanged below
+ scale = scale || ".5";
- // Update scale, tolerating zero or NaN from tween.cur()
- // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
- } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
- }
+ // Adjust and apply
+ start = start / scale;
+ jQuery.style( tween.elem, prop, start + unit );
- tween.unit = unit;
- tween.start = start;
- // If a +=/-= token was provided, we're doing a relative animation
- tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
+ // Update scale, tolerating zero or NaN from tween.cur()
+ // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
+ } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
}
+
+ // Update tween properties
+ if ( parts ) {
+ start = tween.start = +start || +target || 0;
+ tween.unit = unit;
+ // If a +=/-= token was provided, we're doing a relative animation
+ tween.end = parts[ 1 ] ?
+ start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
+ +parts[ 2 ];
+ }
+
return tween;
}]
};
@@ -9234,19 +9325,18 @@ function createFxNow() {
return ( fxNow = jQuery.now() );
}
-function createTweens( animation, props ) {
- jQuery.each( props, function( prop, value ) {
- var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
- index = 0,
- length = collection.length;
- for ( ; index < length; index++ ) {
- if ( collection[ index ].call( animation, prop, value ) ) {
+function createTween( value, prop, animation ) {
+ var tween,
+ collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
+ index = 0,
+ length = collection.length;
+ for ( ; index < length; index++ ) {
+ if ( (tween = collection[ index ].call( animation, prop, value )) ) {
- // we're done with this property
- return;
- }
+ // we're done with this property
+ return tween;
}
- });
+ }
}
function Animation( elem, properties, options ) {
@@ -9332,7 +9422,7 @@ function Animation( elem, properties, options ) {
}
}
- createTweens( animation, props );
+ jQuery.map( props, createTween, animation );
if ( jQuery.isFunction( animation.opts.start ) ) {
animation.opts.start.call( elem, animation );
@@ -9422,12 +9512,12 @@ jQuery.Animation = jQuery.extend( Animation, {
function defaultPrefilter( elem, props, opts ) {
/* jshint validthis: true */
- var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,
+ var prop, value, toggle, tween, hooks, oldfire,
anim = this,
- style = elem.style,
orig = {},
- handled = [],
- hidden = elem.nodeType && isHidden( elem );
+ style = elem.style,
+ hidden = elem.nodeType && isHidden( elem ),
+ dataShow = data_priv.get( elem, "fxshow" );
// handle queue: false promises
if ( !opts.queue ) {
@@ -9483,30 +9573,31 @@ function defaultPrefilter( elem, props, opts ) {
// show/hide pass
- dataShow = data_priv.get( elem, "fxshow" );
- for ( index in props ) {
- value = props[ index ];
+ for ( prop in props ) {
+ value = props[ prop ];
if ( rfxtypes.exec( value ) ) {
- delete props[ index ];
+ delete props[ prop ];
toggle = toggle || value === "toggle";
if ( value === ( hidden ? "hide" : "show" ) ) {
// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
- if( value === "show" && dataShow !== undefined && dataShow[ index ] !== undefined ) {
+ if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
hidden = true;
} else {
continue;
}
}
- handled.push( index );
+ orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
}
}
- length = handled.length;
- if ( length ) {
- dataShow = data_priv.get( elem, "fxshow" ) || data_priv.access( elem, "fxshow", {} );
- if ( "hidden" in dataShow ) {
- hidden = dataShow.hidden;
+ if ( !jQuery.isEmptyObject( orig ) ) {
+ if ( dataShow ) {
+ if ( "hidden" in dataShow ) {
+ hidden = dataShow.hidden;
+ }
+ } else {
+ dataShow = data_priv.access( elem, "fxshow", {} );
}
// store state if its toggle - enables .stop().toggle() to "reverse"
@@ -9528,10 +9619,8 @@ function defaultPrefilter( elem, props, opts ) {
jQuery.style( elem, prop, orig[ prop ] );
}
});
- for ( index = 0 ; index < length ; index++ ) {
- prop = handled[ index ];
- tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
- orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
+ for ( prop in orig ) {
+ tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
if ( !( prop in dataShow ) ) {
dataShow[ prop ] = tween.start;
@@ -9662,9 +9751,7 @@ jQuery.fn.extend({
doAnimation = function() {
// Operate on a copy of prop so per-property easing won't be lost
var anim = Animation( this, jQuery.extend( {}, prop ), optall );
- doAnimation.finish = function() {
- anim.stop( true );
- };
+
// Empty animations, or finishing resolves immediately
if ( empty || data_priv.get( this, "finish" ) ) {
anim.stop( true );
@@ -9744,8 +9831,8 @@ jQuery.fn.extend({
// empty the queue first
jQuery.queue( this, type, [] );
- if ( hooks && hooks.cur && hooks.cur.finish ) {
- hooks.cur.finish.call( this );
+ if ( hooks && hooks.stop ) {
+ hooks.stop.call( this, true );
}
// look for any active animations, and finish them
@@ -10123,7 +10210,7 @@ jQuery.fn.size = function() {
jQuery.fn.andSelf = jQuery.fn.addBack;
// })();
-if ( typeof module === "object" && typeof module.exports === "object" ) {
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
// Expose jQuery as module.exports in loaders that implement the Node
// module pattern (including browserify). Do not create the global, since
// the user will be storing it themselves locally, and globals are frowned
@@ -11648,8 +11735,8 @@ $.format = $.validator.format;
/// contains the maximum value. The default is "max".
///
return this.add(adapterName, [minAttribute || "min", maxAttribute || "max"], function (options) {
- var min = Number(options.params.min),
- max = Number(options.params.max);
+ var min = options.params.min,
+ max = options.params.max;
if (min && max) {
setValidationValues(options, minMaxRuleName, [min, max]);
diff --git a/Disco.Web/ClientSource/Scripts/Core.js.bundle b/Disco.Web/ClientSource/Scripts/Core.js.bundle
index a2118a4c..b58a1a52 100644
--- a/Disco.Web/ClientSource/Scripts/Core.js.bundle
+++ b/Disco.Web/ClientSource/Scripts/Core.js.bundle
@@ -1,7 +1,7 @@
/ClientSource/Scripts/Core/modernizr-2.6.2.js
- /ClientSource/Scripts/Core/jquery-2.0.0.js
+ /ClientSource/Scripts/Core/jquery-2.0.2.js
/ClientSource/Scripts/Core/jquery.validate.js
/ClientSource/Scripts/Core/jquery.validate.unobtrusive.js
/ClientSource/Scripts/Core/disco.unobtrusiveValidation.extensions.js
diff --git a/Disco.Web/ClientSource/Scripts/Core.min.js b/Disco.Web/ClientSource/Scripts/Core.min.js
index 10e18e7e..671e9b4a 100644
--- a/Disco.Web/ClientSource/Scripts/Core.min.js
+++ b/Disco.Web/ClientSource/Scripts/Core.min.js
@@ -1,2 +1,2 @@
-window.Modernizr=function(n,t,i){function a(n){c.cssText=n}function vt(n,t){return a(y.join(n+";")+(t||""))}function h(n,t){return typeof n===t}function v(n,t){return!!~(""+n).indexOf(t)}function lt(n,t){var u,r;for(u in n)if(r=n[u],!v(r,"-")&&c[r]!==i)return t=="pfx"?r:!0;return!1}function yt(n,t,r){var f,u;for(f in n)if(u=t[n[f]],u!==i)return r===!1?n[f]:h(u,"function")?u.bind(r||t):u;return!1}function f(n,t,i){var r=n.charAt(0).toUpperCase()+n.slice(1),u=(n+" "+ot.join(r+" ")+r).split(" ");return h(t,"string")||h(t,"undefined")?lt(u,t):(u=(n+" "+st.join(r+" ")+r).split(" "),yt(u,t,i))}function pt(){u.input=function(i){for(var r=0,u=i.length;r',n,"<\/style>"].join(""),f.id=e,(h?f:o).innerHTML+=l,o.appendChild(f),h||(o.style.background="",o.style.overflow="hidden",v=s.style.overflow,s.style.overflow="hidden",s.appendChild(o)),a=i(f,n),h?f.parentNode.removeChild(f):(o.parentNode.removeChild(o),s.style.overflow=v),!!a},at=function(t){var i=n.matchMedia||n.msMatchMedia,r;return i?i(t).matches:(l("@media "+t+" { #"+e+" { position: absolute; } }",function(t){r=(n.getComputedStyle?getComputedStyle(t,null):t.currentStyle).position=="absolute"}),r)},ct=function(){function r(r,u){u=u||t.createElement(n[r]||"div"),r="on"+r;var f=r in u;return f||(u.setAttribute||(u=t.createElement("div")),u.setAttribute&&u.removeAttribute&&(u.setAttribute(r,""),f=h(u[r],"function"),h(u[r],"undefined")||(u[r]=i),u.removeAttribute(r))),u=null,f}var n={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return r}(),it={}.hasOwnProperty,rt,k;rt=h(it,"undefined")||h(it.call,"undefined")?function(n,t){return t in n&&h(n.constructor.prototype[t],"undefined")}:function(n,t){return it.call(n,t)},Function.prototype.bind||(Function.prototype.bind=function(n){var t=this,i,r;if(typeof t!="function")throw new TypeError;return i=tt.call(arguments,1),r=function(){var f,e,u;return this instanceof r?(f=function(){},f.prototype=t.prototype,e=new f,u=t.apply(e,i.concat(tt.call(arguments))),Object(u)===u)?u:e:t.apply(n,i.concat(tt.call(arguments)))},r}),r.flexbox=function(){return f("flexWrap")},r.flexboxlegacy=function(){return f("boxDirection")},r.canvas=function(){var n=t.createElement("canvas");return!!(n.getContext&&n.getContext("2d"))},r.canvastext=function(){return!!(u.canvas&&h(t.createElement("canvas").getContext("2d").fillText,"function"))},r.webgl=function(){return!!n.WebGLRenderingContext},r.touch=function(){var i;return"ontouchstart"in n||n.DocumentTouch&&t instanceof DocumentTouch?i=!0:l(["@media (",y.join("touch-enabled),("),e,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(n){i=n.offsetTop===9}),i},r.geolocation=function(){return"geolocation"in navigator},r.postmessage=function(){return!!n.postMessage},r.websqldatabase=function(){return!!n.openDatabase},r.indexedDB=function(){return!!f("indexedDB",n)},r.hashchange=function(){return ct("hashchange",n)&&(t.documentMode===i||t.documentMode>7)},r.history=function(){return!!(n.history&&history.pushState)},r.draganddrop=function(){var n=t.createElement("div");return"draggable"in n||"ondragstart"in n&&"ondrop"in n},r.websockets=function(){return"WebSocket"in n||"MozWebSocket"in n},r.rgba=function(){return a("background-color:rgba(150,255,150,.5)"),v(c.backgroundColor,"rgba")},r.hsla=function(){return a("background-color:hsla(120,40%,100%,.5)"),v(c.backgroundColor,"rgba")||v(c.backgroundColor,"hsla")},r.multiplebgs=function(){return a("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(c.background)},r.backgroundsize=function(){return f("backgroundSize")},r.borderimage=function(){return f("borderImage")},r.borderradius=function(){return f("borderRadius")},r.boxshadow=function(){return f("boxShadow")},r.textshadow=function(){return t.createElement("div").style.textShadow===""},r.opacity=function(){return vt("opacity:.55"),/^0.55$/.test(c.opacity)},r.cssanimations=function(){return f("animationName")},r.csscolumns=function(){return f("columnCount")},r.cssgradients=function(){var n="background-image:";return a((n+"-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));"+n)+y.join("linear-gradient(left top,#9f9, white);"+n)).slice(0,-n.length)),v(c.backgroundImage,"gradient")},r.cssreflections=function(){return f("boxReflect")},r.csstransforms=function(){return!!f("transform")},r.csstransforms3d=function(){var n=!!f("perspective");return n&&"webkitPerspective"in s.style&&l("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(t){n=t.offsetLeft===9&&t.offsetHeight===3}),n},r.csstransitions=function(){return f("transition")},r.fontface=function(){var n;return l('@font-face {font-family:"font";src:url("https://")}',function(i,r){var f=t.getElementById("smodernizr"),u=f.sheet||f.styleSheet,e=u?u.cssRules&&u.cssRules[0]?u.cssRules[0].cssText:u.cssText||"":"";n=/src/i.test(e)&&e.indexOf(r.split(" ")[0])===0}),n},r.generatedcontent=function(){var n;return l(["#",e,"{font:0/0 a}#",e,':after{content:"',g,'";visibility:hidden;font:3px/1 a}'].join(""),function(t){n=t.offsetHeight>=3}),n},r.video=function(){var i=t.createElement("video"),n=!1;try{(n=!!i.canPlayType)&&(n=new Boolean(n),n.ogg=i.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),n.h264=i.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),n.webm=i.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""))}catch(r){}return n},r.audio=function(){var i=t.createElement("audio"),n=!1;try{(n=!!i.canPlayType)&&(n=new Boolean(n),n.ogg=i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),n.mp3=i.canPlayType("audio/mpeg;").replace(/^no$/,""),n.wav=i.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),n.m4a=(i.canPlayType("audio/x-m4a;")||i.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(r){}return n},r.localstorage=function(){try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(n){return!1}},r.sessionstorage=function(){try{return sessionStorage.setItem(e,e),sessionStorage.removeItem(e),!0}catch(n){return!1}},r.webworkers=function(){return!!n.Worker},r.applicationcache=function(){return!!n.applicationCache},r.svg=function(){return!!t.createElementNS&&!!t.createElementNS(p.svg,"svg").createSVGRect},r.inlinesvg=function(){var n=t.createElement("div");return n.innerHTML="",(n.firstChild&&n.firstChild.namespaceURI)==p.svg},r.smil=function(){return!!t.createElementNS&&/SVGAnimate/.test(ft.call(t.createElementNS(p.svg,"animate")))},r.svgclippaths=function(){return!!t.createElementNS&&/SVGClipPath/.test(ft.call(t.createElementNS(p.svg,"clipPath")))};for(k in r)rt(r,k)&&(b=k.toLowerCase(),u[b]=r[k](),nt.push((u[b]?"":"no-")+b));return u.input||pt(),u.addTest=function(n,t){if(typeof n=="object")for(var r in n)rt(n,r)&&u.addTest(r,n[r]);else{if(n=n.toLowerCase(),u[n]!==i)return u;t=typeof t=="function"?t():t,typeof d!="undefined"&&d&&(s.className+=" "+(t?"":"no-")+n),u[n]=t}return u},a(""),ut=o=null,function(n,t){function p(n,t){var i=n.createElement("p"),r=n.getElementsByTagName("head")[0]||n.documentElement;return i.innerHTML="x