15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*! 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * jQuery JavaScript Library v1.6.4 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://jquery.com/ 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2011, John Resig 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dual licensed under the MIT or GPL Version 2 licenses. 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://jquery.org/license 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Includes Sizzle.js 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * http://sizzlejs.com/ 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2011, The Dojo Foundation 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Released under the MIT, BSD, and GPL Licenses. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Date: Mon Sep 12 18:54:48 2011 -0400 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function( window, undefined ) { 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Use the correct document accordingly with window argument (sandbox) 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var document = window.document, 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) navigator = window.navigator, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) location = window.location; 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jQuery = (function() { 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Define a local copy of jQuery 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jQuery = function( selector, context ) { 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The jQuery object is actually just the init constructor 'enhanced' 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new jQuery.fn.init( selector, context, rootjQuery ); 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Map over jQuery in case of overwrite 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _jQuery = window.jQuery, 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Map over the $ in case of overwrite 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _$ = window.$, 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A central reference to the root jQuery(document) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rootjQuery, 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A simple way to check for HTML strings or ID strings 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if a string has a non-whitespace character in it 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rnotwhite = /\S/, 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Used for trimming whitespace 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trimLeft = /^\s+/, 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trimRight = /\s+$/, 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check for digits 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rdigit = /\d/, 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Match a standalone tag 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // JSON RegExp 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rvalidchars = /^[\],:{}\s]*$/, 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Useragent RegExp 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rwebkit = /(webkit)[ \/]([\w.]+)/, 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmsie = /(msie) ([\w.]+)/, 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Matches dashed string for camelizing 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rdashAlpha = /-([a-z]|[0-9])/ig, 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmsPrefix = /^-ms-/, 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Used by jQuery.camelCase as callback to replace() 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fcamelCase = function( all, letter ) { 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ( letter + "" ).toUpperCase(); 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keep a UserAgent string for use with jQuery.browser 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) userAgent = navigator.userAgent, 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For matching the engine and version of the browser 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) browserMatch, 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The deferred used on DOM ready 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyList, 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The ready event handler 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DOMContentLoaded, 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Save a reference to some core methods 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toString = Object.prototype.toString, 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasOwn = Object.prototype.hasOwnProperty, 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) push = Array.prototype.push, 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slice = Array.prototype.slice, 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trim = String.prototype.trim, 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) indexOf = Array.prototype.indexOf, 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [[Class]] -> type pairs 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) class2type = {}; 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn = jQuery.prototype = { 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) constructor: jQuery, 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) init: function( selector, context, rootjQuery ) { 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match, elem, ret, doc; 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle $(""), $(null), or $(undefined) 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !selector ) { 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle $(DOMElement) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector.nodeType ) { 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = this[0] = selector; 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = 1; 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The body element only exists once, optimize finding it 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector === "body" && !context && document.body ) { 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = document; 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0] = document.body; 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selector = selector; 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = 1; 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle HTML strings 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof selector === "string" ) { 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Are we dealing with HTML string or an ID? 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Assume that strings that start and end with <> are HTML and skip the regex check 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = [ null, selector, null ]; 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = quickExpr.exec( selector ); 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Verify a match, and that no context was specified for #id 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match && (match[1] || !context) ) { 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(html) -> $(array) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] ) { 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context instanceof jQuery ? context[0] : context; 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = (context ? context.ownerDocument || context : document); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a single string is passed in and it's a single tag 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // just do a createElement and skip the rest 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = rsingleTag.exec( selector ); 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret ) { 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isPlainObject( context ) ) { 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = [ document.createElement( ret[1] ) ]; 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.attr.call( selector, context, true ); 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = [ doc.createElement( ret[1] ) ]; 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.merge( this, selector ); 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $("#id") 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = document.getElementById( match[2] ); 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check parentNode to catch when Blackberry 4.6 returns 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nodes that are no longer in the document #6963 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem && elem.parentNode ) { 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the case where IE and Opera return items 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // by name instead of ID 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.id !== match[2] ) { 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return rootjQuery.find( selector ); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, we inject the element directly into the jQuery object 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.length = 1; 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0] = elem; 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = document; 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selector = selector; 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(expr, $(...)) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !context || context.jquery ) { 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (context || rootjQuery).find( selector ); 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(expr, context) 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (which is just equivalent to: $(context).find(expr) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.constructor( context ).find( selector ); 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // HANDLE: $(function) 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Shortcut for document ready 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( jQuery.isFunction( selector ) ) { 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return rootjQuery.ready( selector ); 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (selector.selector !== undefined) { 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selector = selector.selector; 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.context = selector.context; 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.makeArray( selector, this ); 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start with an empty selector 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector: "", 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The current version of jQuery being used 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jquery: "1.6.4", 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The default length of a jQuery object is 0 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length: 0, 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The number of elements contained in the matched element set 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) size: function() { 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.length; 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toArray: function() { 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return slice.call( this, 0 ); 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the Nth element in the matched element set OR 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the whole matched element set as a clean array 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( num ) { 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return num == null ? 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return a 'clean' array 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.toArray() : 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return just the object 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( num < 0 ? this[ this.length + num ] : this[ num ] ); 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Take an array of elements and push it onto the stack 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (returning the new matched element set) 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pushStack: function( elems, name, selector ) { 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Build a new jQuery matched element set 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = this.constructor(); 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( elems ) ) { 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) push.apply( ret, elems ); 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.merge( ret, elems ); 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the old object onto the stack (as a reference) 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.prevObject = this; 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.context = this.context; 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "find" ) { 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.selector = this.selector + (this.selector ? " " : "") + selector; 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( name ) { 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.selector = this.selector + "." + name + "(" + selector + ")"; 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the newly-formed element set 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute a callback for every element in the matched set. 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (You can seed the arguments with an array of args, but this is 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // only used internally.) 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) each: function( callback, args ) { 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.each( this, callback, args ); 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: function( fn ) { 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach the listeners 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.bindReady(); 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the callback 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyList.done( fn ); 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eq: function( i ) { 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === -1 ? 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.slice( i ) : 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.slice( i, +i + 1 ); 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first: function() { 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.eq( 0 ); 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) last: function() { 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.eq( -1 ); 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slice: function() { 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( slice.apply( this, arguments ), 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "slice", slice.call(arguments).join(",") ); 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) map: function( callback ) { 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( jQuery.map(this, function( elem, i ) { 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return callback.call( elem, i, elem ); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })); 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) end: function() { 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.prevObject || this.constructor(null); 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For internal use only. 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Behaves like an Array's method, not like a jQuery method. 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) push: push, 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sort: [].sort, 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) splice: [].splice 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Give the init function the jQuery prototype for later instantiation 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.init.prototype = jQuery.fn; 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend = jQuery.fn.extend = function() { 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var options, name, src, copy, copyIsArray, clone, 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = arguments[0] || {}, 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 1, 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = arguments.length, 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deep = false; 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle a deep copy situation 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof target === "boolean" ) { 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deep = target; 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = arguments[1] || {}; 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // skip the boolean and the target 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 2; 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle case when target is a string or something (possible in deep copy) 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof target !== "object" && !jQuery.isFunction(target) ) { 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = {}; 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // extend jQuery itself if only one argument is passed 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( length === i ) { 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = this; 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) --i; 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; i++ ) { 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only deal with non-null/undefined values 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (options = arguments[ i ]) != null ) { 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Extend the base object 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in options ) { 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) src = target[ name ]; 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) copy = options[ name ]; 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Prevent never-ending loop 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( target === copy ) { 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Recurse if we're merging plain objects or arrays 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( copyIsArray ) { 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) copyIsArray = false; 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clone = src && jQuery.isArray(src) ? src : []; 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clone = src && jQuery.isPlainObject(src) ? src : {}; 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Never move original objects, clone them 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target[ name ] = jQuery.extend( deep, clone, copy ); 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't bring in undefined values 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( copy !== undefined ) { 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target[ name ] = copy; 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the modified object 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return target; 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noConflict: function( deep ) { 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( window.$ === jQuery ) { 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.$ = _$; 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deep && window.jQuery === jQuery ) { 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.jQuery = _jQuery; 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery; 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Is the DOM ready to be used? Set to true once it occurs. 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isReady: false, 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A counter to track how many items to wait for before 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the ready event fires. See #6781 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyWait: 1, 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Hold (or release) the ready event 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) holdReady: function( hold ) { 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hold ) { 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.readyWait++; 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready( true ); 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle when the DOM is ready 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: function( wait ) { 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Either a released hold or an DOMready/load event and not yet ready 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !document.body ) { 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return setTimeout( jQuery.ready, 1 ); 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember that the DOM is ready 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isReady = true; 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a normal DOM Ready event fired, decrement, and wait if need be 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( wait !== true && --jQuery.readyWait > 0 ) { 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there are functions bound, to execute 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyList.resolveWith( document, [ jQuery ] ); 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trigger any bound ready events 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.fn.trigger ) { 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( document ).trigger( "ready" ).unbind( "ready" ); 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bindReady: function() { 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( readyList ) { 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyList = jQuery._Deferred(); 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Catch cases where $(document).ready() is called after the 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // browser event has already occurred. 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.readyState === "complete" ) { 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle it asynchronously to allow scripts the opportunity to delay ready 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return setTimeout( jQuery.ready, 1 ); 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Mozilla, Opera and webkit nightlies currently support this event 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.addEventListener ) { 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the handy event callback 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A fallback to window.onload, that will always work 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.addEventListener( "load", jQuery.ready, false ); 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE event model is used 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( document.attachEvent ) { 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ensure firing before onload, 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // maybe late but safe also for iframes 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.attachEvent( "onreadystatechange", DOMContentLoaded ); 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A fallback to window.onload, that will always work 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.attachEvent( "onload", jQuery.ready ); 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE and not a frame 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // continually check to see if the document is ready 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var toplevel = false; 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toplevel = window.frameElement == null; 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) {} 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.documentElement.doScroll && toplevel ) { 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doScrollCheck(); 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See test/unit/core.js for details concerning isFunction. 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Since version 1.3, DOM methods and functions like alert 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // aren't supported. They return false on IE (#2968). 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isFunction: function( obj ) { 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.type(obj) === "function"; 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isArray: Array.isArray || function( obj ) { 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.type(obj) === "array"; 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A crude way of determining if an object is a window 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isWindow: function( obj ) { 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj && typeof obj === "object" && "setInterval" in obj; 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isNaN: function( obj ) { 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj == null || !rdigit.test( obj ) || isNaN( obj ); 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: function( obj ) { 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj == null ? 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String( obj ) : 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) class2type[ toString.call(obj) ] || "object"; 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPlainObject: function( obj ) { 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Must be an Object. 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Because of IE, we also have to check the presence of the constructor property. 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that DOM nodes and window objects don't pass through, as well 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Not own constructor property must be Object 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( obj.constructor && 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !hasOwn.call(obj, "constructor") && 5295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { 5305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch ( e ) { 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE8,9 Will throw exceptions on certain host objects #9897 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Own properties are enumerated firstly, so to speed up, 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if last one is own, then all properties are own. 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var key; 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( key in obj ) {} 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return key === undefined || hasOwn.call( obj, key ); 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isEmptyObject: function( obj ) { 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in obj ) { 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) error: function( msg ) { 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw msg; 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parseJSON: function( data ) { 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof data !== "string" || !data ) { 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure leading/trailing whitespace is removed (IE can't handle it) 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery.trim( data ); 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attempt to parse using the native JSON parser first 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( window.JSON && window.JSON.parse ) { 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return window.JSON.parse( data ); 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure the incoming data is actual JSON 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Logic borrowed from http://json.org/json2.js 5725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rvalidchars.test( data.replace( rvalidescape, "@" ) 5735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .replace( rvalidtokens, "]" ) 5745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .replace( rvalidbraces, "")) ) { 5755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (new Function( "return " + data ))(); 5775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( "Invalid JSON: " + data ); 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cross-browser xml parsing 5835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parseXML: function( data ) { 5845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var xml, tmp; 5855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( window.DOMParser ) { // Standard 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp = new DOMParser(); 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml = tmp.parseFromString( data , "text/xml" ); 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { // IE 5905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml = new ActiveXObject( "Microsoft.XMLDOM" ); 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml.async = "false"; 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml.loadXML( data ); 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) { 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml = undefined; 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( "Invalid XML: " + data ); 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return xml; 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noop: function() {}, 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Evaluates a script in a global context 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Workarounds based on findings by Jim Driscoll 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEval: function( data ) { 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data && rnotwhite.test( data ) ) { 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We use execScript on Internet Explorer 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We use an anonymous function so that context is window 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // rather than jQuery in Firefox 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( window.execScript || function( data ) { 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ "eval" ].call( window, data ); 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } )( data ); 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert dashed to camelCase; used by the css and data modules 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Microsoft forgot to hump their vendor prefix (#9572) 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) camelCase: function( string ) { 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeName: function( elem, name ) { 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // args is for internal usage only 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) each: function( object, callback, args ) { 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name, i = 0, 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = object.length, 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isObj = length === undefined || jQuery.isFunction( object ); 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( args ) { 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isObj ) { 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in object ) { 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.apply( object[ name ], args ) === false ) { 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; ) { 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.apply( object[ i++ ], args ) === false ) { 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A special, fast, case for the most common use of each 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isObj ) { 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in object ) { 6545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.call( object[ name ], name, object[ name ] ) === false ) { 6555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; ) { 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { 6615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return object; 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use native String.trim function wherever possible 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trim: trim ? 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function( text ) { 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return text == null ? 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "" : 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trim.call( text ); 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } : 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise use our own trimming functionality 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function( text ) { 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return text == null ? 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "" : 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // results is for internal usage only 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray: function( array, results ) { 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = results || []; 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( array != null ) { 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The window, strings (and functions) also have 'length' 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The extra typeof function check is to prevent crashes 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in Safari 2 (See: #3039) 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = jQuery.type( array ); 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) push.call( ret, array ); 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.merge( ret, array ); 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inArray: function( elem, array ) { 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !array ) { 7085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 7095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( indexOf ) { 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return indexOf.call( array, elem ); 7135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = array.length; i < length; i++ ) { 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( array[ i ] === elem ) { 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i; 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) merge: function( first, second ) { 7255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var i = first.length, 7265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) j = 0; 7275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof second.length === "number" ) { 7295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var l = second.length; j < l; j++ ) { 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first[ i++ ] = second[ j ]; 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 7345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( second[j] !== undefined ) { 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first[ i++ ] = second[ j++ ]; 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first.length = i; 7405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return first; 7425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) grep: function( elems, callback, inv ) { 7455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], retVal; 7465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inv = !!inv; 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go through the array, only saving the items 7495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // that pass the validator function 7505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, length = elems.length; i < length; i++ ) { 7515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) retVal = !!callback( elems[ i ], i ); 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( inv !== retVal ) { 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( elems[ i ] ); 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 7585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // arg is for internal usage only 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) map: function( elems, callback, arg ) { 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value, key, ret = [], 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = elems.length, 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jquery objects are treated as arrays 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go through the array, translating each of the items to their 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isArray ) { 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < length; i++ ) { 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = callback( elems[ i ], i, arg ); 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value != null ) { 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret[ ret.length ] = value; 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go through every key on the object, 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( key in elems ) { 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = callback( elems[ key ], key, arg ); 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value != null ) { 7845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret[ ret.length ] = value; 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Flatten any nested arrays 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret.concat.apply( [], ret ); 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A global GUID counter for objects 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) guid: 1, 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bind a function to a context, optionally partially applying any 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // arguments. 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy: function( fn, context ) { 7995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context === "string" ) { 8005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tmp = fn[ context ]; 8015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = fn; 8025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = tmp; 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Quick check to determine if target is callable, in the spec 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // this throws a TypeError, but we will just return undefined. 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.isFunction( fn ) ) { 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simulated bind 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var args = slice.call( arguments, 2 ), 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy = function() { 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fn.apply( context, args.concat( slice.call( arguments ) ) ); 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the guid of unique handler to the same of original handler, so it can be removed 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return proxy; 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Mutifunctional method to get and set values to a collection 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The value/s can optionally be executed if it's a function 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) access: function( elems, key, value, exec, fn, pass ) { 8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var length = elems.length; 8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setting many attributes 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof key === "object" ) { 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var k in key ) { 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.access( elems, k, key[k], exec, fn, value ); 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elems; 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setting one attribute 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value !== undefined ) { 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Optionally, function values get executed if exec is true 8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) exec = !pass && exec && jQuery.isFunction(value); 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; i < length; i++ ) { 8425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); 8435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elems; 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Getting an attribute 8495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length ? fn( elems[0], key ) : undefined; 8505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) now: function() { 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (new Date()).getTime(); 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use of jQuery.browser is frowned upon. 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // More details: http://docs.jquery.com/Utilities/jQuery.browser 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) uaMatch: function( ua ) { 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ua = ua.toLowerCase(); 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = rwebkit.exec( ua ) || 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ropera.exec( ua ) || 8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmsie.exec( ua ) || 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) []; 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { browser: match[1] || "", version: match[2] || "0" }; 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sub: function() { 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function jQuerySub( selector, context ) { 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new jQuerySub.fn.init( selector, context ); 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( true, jQuerySub, this ); 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.superclass = this; 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.fn = jQuerySub.prototype = this(); 8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.fn.constructor = jQuerySub; 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.sub = this.sub; 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.fn.init = function init( selector, context ) { 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = jQuerySub( context ); 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuerySub.fn.init.prototype = jQuerySub.fn; 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var rootjQuerySub = jQuerySub(document); 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuerySub; 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) browser: {} 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Populate the class2type map 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) class2type[ "[object " + name + "]" ] = name.toLowerCase(); 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)browserMatch = jQuery.uaMatch( userAgent ); 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( browserMatch.browser ) { 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.browser[ browserMatch.browser ] = true; 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.browser.version = browserMatch.version; 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Deprecated, use jQuery.browser.webkit instead 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.browser.webkit ) { 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.browser.safari = true; 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE doesn't match non-breaking spaces with \s 9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( rnotwhite.test( "\xA0" ) ) { 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trimLeft = /^[\s\xA0]+/; 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trimRight = /[\s\xA0]+$/; 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// All jQuery objects should point back to these 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)rootjQuery = jQuery(document); 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Cleanup functions for the document ready method 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.addEventListener ) { 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DOMContentLoaded = function() { 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( document.attachEvent ) { 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DOMContentLoaded = function() { 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.readyState === "complete" ) { 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.detachEvent( "onreadystatechange", DOMContentLoaded ); 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The DOM ready check for Internet Explorer 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function doScrollCheck() { 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isReady ) { 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If IE is used, use the trick by Diego Perini 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://javascript.nwbox.com/IEContentLoaded/ 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.documentElement.doScroll("left"); 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) { 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout( doScrollCheck, 1 ); 9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and execute any waiting functions 9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ready(); 9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)return jQuery; 9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var // Promise methods 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Static reference to slice 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sliceDeferred = [].slice; 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a simple deferred (one callbacks list) 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _Deferred: function() { 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var // callbacks list 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbacks = [], 9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // stored [ context , args ] 9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fired, 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid firing when already doing so 9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firing, 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flag to know if the deferred has been cancelled 9755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cancelled, 9765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the deferred itself 9775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred = { 9785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // done( f1, f2, ...) 9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done: function() { 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !cancelled ) { 9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var args = arguments, 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, 9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length, 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem, 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type, 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fired; 9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fired ) { 9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _fired = fired; 9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fired = 0; 9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, length = args.length; i < length; i++ ) { 9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = args[ i ]; 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = jQuery.type( elem ); 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "array" ) { 9965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.done.apply( deferred, elem ); 9975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( type === "function" ) { 9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbacks.push( elem ); 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( _fired ) { 10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // resolve with given context and args 10095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resolveWith: function( context, args ) { 10105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !cancelled && !fired && !firing ) { 10115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // make sure args are available (#8421) 10125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args = args || []; 10135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firing = 1; 10145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 10155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( callbacks[ 0 ] ) { 10165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbacks.shift().apply( context, args ); 10175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) finally { 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fired = [ context, args ]; 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firing = 0; 10225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // resolve with this as context and given arguments 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resolve: function() { 10295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( this, arguments ); 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Has this deferred been resolved? 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isResolved: function() { 10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!( firing || fired ); 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cancel 10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cancel: function() { 10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cancelled = 1; 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbacks = []; 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return deferred; 10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Full fledged deferred (two callbacks list) 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Deferred: function( func ) { 10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var deferred = jQuery._Deferred(), 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) failDeferred = jQuery._Deferred(), 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) promise; 10545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add errorDeferred methods, then and promise 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( deferred, { 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) then: function( doneCallbacks, failCallbacks ) { 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.done( doneCallbacks ).fail( failCallbacks ); 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) always: function() { 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); 10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fail: failDeferred.done, 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rejectWith: failDeferred.resolveWith, 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reject: failDeferred.resolve, 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isRejected: failDeferred.isResolved, 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pipe: function( fnDone, fnFail ) { 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.Deferred(function( newDefer ) { 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( { 10705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done: [ fnDone, "resolve" ], 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fail: [ fnFail, "reject" ] 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, function( handler, data ) { 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fn = data[ 0 ], 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) action = data[ 1 ], 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) returned; 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( fn ) ) { 10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred[ handler ](function() { 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) returned = fn.apply( this, arguments ); 10795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( returned && jQuery.isFunction( returned.promise ) ) { 10805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) returned.promise().then( newDefer.resolve, newDefer.reject ); 10815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 10825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); 10835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 10855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 10865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred[ handler ]( newDefer[ action ] ); 10875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 10895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).promise(); 10905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 10915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get a promise for this deferred 10925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If obj is provided, the promise aspect is added to the object 10935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) promise: function( obj ) { 10945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( obj == null ) { 10955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( promise ) { 10965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return promise; 10975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) promise = obj = {}; 10995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var i = promiseMethods.length; 11015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( i-- ) { 11025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; 11035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj; 11055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 11075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure only one callback list will be used 11085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.done( failDeferred.cancel ).fail( deferred.cancel ); 11095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Unexpose cancel 11105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete deferred.cancel; 11115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call given func if any 11125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( func ) { 11135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) func.call( deferred, deferred ); 11145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return deferred; 11165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 11175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Deferred helper 11195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) when: function( firstParam ) { 11205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var args = arguments, 11215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 11225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = args.length, 11235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count = length, 11245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? 11255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firstParam : 11265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.Deferred(); 11275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function resolveFunc( i ) { 11285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return function( value ) { 11295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; 11305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !( --count ) ) { 11315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Strange bug in FF4: 11325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Values changed onto the arguments object sometimes end up as undefined values 11335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // outside the $.when method. Cloning the object into a fresh array solves the issue 11345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); 11355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 11375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( length > 1 ) { 11395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( ; i < length; i++ ) { 11405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { 11415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[ i ].promise().then( resolveFunc(i), deferred.reject ); 11425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 11435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) --count; 11445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !count ) { 11475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( deferred, args ); 11485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( deferred !== firstParam ) { 11505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); 11515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return deferred.promise(); 11535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 11555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.support = (function() { 11595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement( "div" ), 11615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) documentElement = document.documentElement, 11625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all, 11635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) a, 11645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select, 11655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt, 11665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input, 11675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) marginDiv, 11685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support, 11695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment, 11705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body, 11715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementParent, 11725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement, 11735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementStyle, 11745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tds, 11755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) events, 11765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventName, 11775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, 11785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSupported; 11795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Preliminary tests 11815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.setAttribute("className", "t"); 11825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; 11835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all = div.getElementsByTagName( "*" ); 11865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) a = div.getElementsByTagName( "a" )[ 0 ]; 11875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Can't get basic test support 11895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !all || !all.length || !a ) { 11905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return {}; 11915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 11925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // First batch of supports tests 11945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select = document.createElement( "select" ); 11955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt = select.appendChild( document.createElement("option") ); 11965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input = div.getElementsByTagName( "input" )[ 0 ]; 11975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support = { 11995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE strips leading whitespace when .innerHTML is used 12005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) leadingWhitespace: ( div.firstChild.nodeType === 3 ), 12015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that tbody elements aren't automatically inserted 12035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE will insert them into empty tables 12045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody: !div.getElementsByTagName( "tbody" ).length, 12055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that link elements get serialized correctly by innerHTML 12075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This requires a wrapper element in IE 12085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) htmlSerialize: !!div.getElementsByTagName( "link" ).length, 12095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the style information from getAttribute 12115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses .cssText instead) 12125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style: /top/.test( a.getAttribute("style") ), 12135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that URLs aren't manipulated 12155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE normalizes it by default) 12165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), 12175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that element opacity exists 12195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses filter instead) 12205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use a regex to work around a WebKit issue. See #5145 12215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity: /^0.55$/.test( a.style.opacity ), 12225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Verify style float existence 12245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE uses styleFloat instead of cssFloat) 12255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssFloat: !!a.style.cssFloat, 12265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that if no value is specified for a checkbox 12285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // that it defaults to "on". 12295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (WebKit defaults to "" instead) 12305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkOn: ( input.value === "on" ), 12315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that a selected-by-default option has a working selected property. 12335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) 12345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) optSelected: opt.selected, 12355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) 12375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getSetAttribute: div.className !== "t", 12385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Will be defined later 12405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) submitBubbles: true, 12415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) changeBubbles: true, 12425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focusinBubbles: false, 12435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deleteExpando: true, 12445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noCloneEvent: true, 12455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inlineBlockNeedsLayout: false, 12465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) shrinkWrapBlocks: false, 12475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reliableMarginRight: true 12485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 12495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure checked status is properly cloned 12515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.checked = true; 12525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.noCloneChecked = input.cloneNode( true ).checked; 12535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the options inside disabled selects aren't marked as disabled 12555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (WebKit marks them as disabled) 12565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select.disabled = true; 12575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.optDisabled = !opt.disabled; 12585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Test to see if it's possible to delete an expando from an element 12605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fails in Internet Explorer 12615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 12625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete div.test; 12635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) { 12645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.deleteExpando = false; 12655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { 12685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.attachEvent( "onclick", function() { 12695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cloning a node shouldn't copy over any 12705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // bound event handlers (IE does this) 12715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.noCloneEvent = false; 12725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 12735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.cloneNode( true ).fireEvent( "onclick" ); 12745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 12755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if a radio maintains it's value 12775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // after being appended to the DOM 12785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input = document.createElement("input"); 12795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.value = "t"; 12805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.setAttribute("type", "radio"); 12815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.radioValue = input.value === "t"; 12825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input.setAttribute("checked", "checked"); 12845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.appendChild( input ); 12855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment = document.createDocumentFragment(); 12865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.appendChild( div.firstChild ); 12875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // WebKit doesn't clone checked state correctly in fragments 12895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; 12905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = ""; 12925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Figure out if the W3C box model works as expected 12945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.width = div.style.paddingLeft = "1px"; 12955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body = document.getElementsByTagName( "body" )[ 0 ]; 12975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We use our own, invisible, body unless the body is already present 12985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in which case we use a div (#9239) 12995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement = document.createElement( body ? "div" : "body" ); 13005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementStyle = { 13015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) visibility: "hidden", 13025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) width: 0, 13035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) height: 0, 13045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) border: 0, 13055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) margin: 0, 13065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) background: "none" 13075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 13085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( body ) { 13095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( testElementStyle, { 13105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) position: "absolute", 13115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left: "-1000px", 13125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top: "-1000px" 13135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 13145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 13155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in testElementStyle ) { 13165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement.style[ i ] = testElementStyle[ i ]; 13175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 13185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement.appendChild( div ); 13195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementParent = body || documentElement; 13205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementParent.insertBefore( testElement, testElementParent.firstChild ); 13215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if a disconnected checkbox will retain its checked 13235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // value of true after appended to the DOM (IE6/7) 13245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.appendChecked = input.checked; 13255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.boxModel = div.offsetWidth === 2; 13275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( "zoom" in div.style ) { 13295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if natively block-level elements act like inline-block 13305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // elements when setting their display to 'inline' and giving 13315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // them layout 13325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE < 8 does this) 13335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.display = "inline"; 13345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.zoom = 1; 13355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); 13365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if elements with layout shrink-wrap their children 13385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE 6 does this) 13395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.style.display = ""; 13405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<div style='width:4px;'></div>"; 13415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); 13425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 13435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>"; 13455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tds = div.getElementsByTagName( "td" ); 13465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if table cells still have offsetWidth/Height when they are set 13485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to display:none and there are still other visible table cells in a 13495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // table row; if so, offsetWidth/Height are not reliable for use when 13505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // determining if an element has been hidden directly using 13515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // display:none (it is still safe to use offsets if a parent element is 13525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // hidden; don safety goggles and see bug #4512 for more information). 13535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (only IE 8 fails this test) 13545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSupported = ( tds[ 0 ].offsetHeight === 0 ); 13555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tds[ 0 ].style.display = ""; 13575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tds[ 1 ].style.display = "none"; 13585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if empty table cells still have offsetWidth/Height 13605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (IE < 8 fail this test) 13615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); 13625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = ""; 13635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if div with explicit width and no margin-right incorrectly 13655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // gets computed margin-right based on width of container. For more 13665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // info see bug #3333 13675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fails in WebKit before Feb 2011 nightlies 13685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right 13695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.defaultView && document.defaultView.getComputedStyle ) { 13705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) marginDiv = document.createElement( "div" ); 13715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) marginDiv.style.width = "0"; 13725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) marginDiv.style.marginRight = "0"; 13735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.appendChild( marginDiv ); 13745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support.reliableMarginRight = 13755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; 13765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 13775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove the body element we added 13795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement.innerHTML = ""; 13805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElementParent.removeChild( testElement ); 13815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 13825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Technique from Juriy Zaytsev 13835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ 13845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We only care about the case where non-standard event systems 13855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // are used, namely in IE. Short-circuiting here helps us to 13865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // avoid an eval call (in setAttribute) which can cause CSP 13875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to go haywire. See: https://developer.mozilla.org/en/Security/CSP 13885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.attachEvent ) { 13895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( i in { 13905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) submit: 1, 13915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) change: 1, 13925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focusin: 1 13935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } ) { 13945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventName = "on" + i; 13955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSupported = ( eventName in div ); 13965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isSupported ) { 13975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.setAttribute( eventName, "return;" ); 13985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSupported = ( typeof div[ eventName ] === "function" ); 13995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) support[ i + "Bubbles" ] = isSupported; 14015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Null connected elements to avoid leaks in IE 14055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testElement = fragment = select = opt = body = marginDiv = div = input = null; 14065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return support; 14085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 14095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Keep track of boxModel 14115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.boxModel = jQuery.support.boxModel; 14125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rbrace = /^(?:\{.*\}|\[.*\])$/, 14175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmultiDash = /([A-Z])/g; 14185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 14205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache: {}, 14215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Please use with caution 14235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) uuid: 0, 14245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Unique for each copy of jQuery on the page 14265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Non-digits removed to match rinlinejQuery 14275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), 14285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The following elements throw uncatchable exceptions if you 14305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // attempt to add expando properties to them. 14315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) noData: { 14325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "embed": true, 14335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Ban all objects except for Flash (which handle expandos) 14345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", 14355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "applet": true 14365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasData: function( elem ) { 14395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; 14405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!elem && !isEmptyDataObject( elem ); 14425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 14435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: function( elem, name, data, pvt /* Internal Use Only */ ) { 14455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.acceptData( elem ) ) { 14465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 14475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var thisCache, ret, 14505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) internalKey = jQuery.expando, 14515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getByName = typeof name === "string", 14525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We have to handle DOM nodes and JS objects differently because IE6-7 14545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // can't GC object references properly across the DOM-JS boundary 14555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isNode = elem.nodeType, 14565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only DOM nodes need the global jQuery cache; JS object data is 14585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // attached directly to the object so GC can occur automatically 14595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache = isNode ? jQuery.cache : elem, 14605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only defining an ID for JS objects if its cache already exists allows 14625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the code to shortcut on the same path as a DOM node with no cache 14635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; 14645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Avoid doing any more work than we need to when trying to get data on an 14665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // object that has no data at all 14675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) { 14685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 14695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !id ) { 14725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only DOM nodes need a new unique ID for each element since their data 14735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ends up in the global cache 14745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isNode ) { 14755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ jQuery.expando ] = id = ++jQuery.uuid; 14765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = jQuery.expando; 14785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !cache[ id ] ) { 14825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ] = {}; 14835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery 14855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // metadata on plain JS objects when the object is serialized using 14865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // JSON.stringify 14875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isNode ) { 14885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ].toJSON = jQuery.noop; 14895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 14915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // An object can be passed to jQuery.data instead of a key/value pair; this gets 14935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // shallow copied over onto the existing cache 14945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof name === "object" || typeof name === "function" ) { 14955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pvt ) { 14965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); 14975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 14985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ] = jQuery.extend(cache[ id ], name); 14995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thisCache = cache[ id ]; 15035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Internal jQuery data is stored in a separate object inside the object's data 15055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // cache in order to avoid key collisions between internal data and user-defined 15065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // data 15075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pvt ) { 15085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !thisCache[ internalKey ] ) { 15095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thisCache[ internalKey ] = {}; 15105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thisCache = thisCache[ internalKey ]; 15135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data !== undefined ) { 15165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thisCache[ jQuery.camelCase( name ) ] = data; 15175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should 15205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // not attempt to inspect the internal events object using jQuery.data, as this 15215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // internal data object is undocumented and subject to change. 15225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "events" && !thisCache[name] ) { 15235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return thisCache[ internalKey ] && thisCache[ internalKey ].events; 15245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check for both converted-to-camel and non-converted data property names 15275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a data property was specified 15285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( getByName ) { 15295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // First Try to find as-is property data 15315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = thisCache[ name ]; 15325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Test for null|undefined property data 15345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret == null ) { 15355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Try to find the camelCased property 15375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = thisCache[ jQuery.camelCase( name ) ]; 15385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 15405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = thisCache; 15415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 15445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 15455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeData: function( elem, name, pvt /* Internal Use Only */ ) { 15475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.acceptData( elem ) ) { 15485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 15495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var thisCache, 15525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reference to internal data cache key 15545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) internalKey = jQuery.expando, 15555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isNode = elem.nodeType, 15575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See jQuery.data for more information 15595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache = isNode ? jQuery.cache : elem, 15605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See jQuery.data for more information 15625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = isNode ? elem[ jQuery.expando ] : jQuery.expando; 15635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there is already no cache entry for this object, there is no 15655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // purpose in continuing 15665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !cache[ id ] ) { 15675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 15685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name ) { 15715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; 15735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( thisCache ) { 15755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Support interoperable removal of hyphenated or camelcased keys 15775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !thisCache[ name ] ) { 15785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.camelCase( name ); 15795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete thisCache[ name ]; 15825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there is no data left in the cache, we want to continue 15845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and let the cache object itself get destroyed 15855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isEmptyDataObject(thisCache) ) { 15865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 15875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 15905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See jQuery.data for more information 15925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pvt ) { 15935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete cache[ id ][ internalKey ]; 15945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't destroy the parent cache unless the internal data object 15965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // had been the only thing left in it 15975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isEmptyDataObject(cache[ id ]) ) { 15985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 15995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var internalCache = cache[ id ][ internalKey ]; 16035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Browsers that fail expando deletion also refuse to delete expandos on 16055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the window, but it will allow it on all other JS objects; other browsers 16065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't care 16075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Ensure that `cache` is not a window object #10080 16085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.support.deleteExpando || !cache.setInterval ) { 16095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete cache[ id ]; 16105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 16115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ] = null; 16125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We destroyed the entire user cache at once because it's faster than 16155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // iterating through each key, but we need to continue to persist internal 16165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // data if it existed 16175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( internalCache ) { 16185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ] = {}; 16195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery 16205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // metadata on plain JS objects when the object is serialized using 16215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // JSON.stringify 16225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isNode ) { 16235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ].toJSON = jQuery.noop; 16245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache[ id ][ internalKey ] = internalCache; 16275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, we need to eliminate the expando on the node to avoid 16295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // false lookups in the cache for entries that no longer exist 16305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( isNode ) { 16315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE does not allow us to delete expando properties from nodes, 16325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nor does it have a removeAttribute function on Document nodes; 16335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // we must handle all of these cases 16345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.support.deleteExpando ) { 16355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete elem[ jQuery.expando ]; 16365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.removeAttribute ) { 16375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeAttribute( jQuery.expando ); 16385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 16395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ jQuery.expando ] = null; 16405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For internal use only. 16455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _data: function( elem, name, data ) { 16465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.data( elem, name, data, true ); 16475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 16485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A method for determining if a DOM node can handle the data expando 16505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) acceptData: function( elem ) { 16515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeName ) { 16525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; 16535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match ) { 16555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !(match === true || elem.getAttribute("classid") !== match); 16565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 16605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 16625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 16645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: function( key, value ) { 16655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var data = null; 16665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof key === "undefined" ) { 16685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.length ) { 16695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery.data( this[0] ); 16705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0].nodeType === 1 ) { 16725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = this[0].attributes, name; 16735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = attr.length; i < l; i++ ) { 16745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = attr[i].name; 16755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name.indexOf( "data-" ) === 0 ) { 16775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.camelCase( name.substring(5) ); 16785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataAttr( this[0], name, data[ name ] ); 16805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return data; 16865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( typeof key === "object" ) { 16885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 16895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( this, key ); 16905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 16915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 16925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parts = key.split("."); 16945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts[1] = parts[1] ? "." + parts[1] : ""; 16955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === undefined ) { 16975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); 16985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Try to fetch any internally stored data first 17005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data === undefined && this.length ) { 17015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery.data( this[0], key ); 17025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = dataAttr( this[0], key, data ); 17035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return data === undefined && parts[1] ? 17065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.data( parts[0] ) : 17075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data; 17085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 17105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 17115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var $this = jQuery( this ), 17125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args = [ parts[0], value ]; 17135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) $this.triggerHandler( "setData" + parts[1] + "!", args ); 17155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( this, key, value ); 17165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) $this.triggerHandler( "changeData" + parts[1] + "!", args ); 17175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 17185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 17205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeData: function( key ) { 17225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 17235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( this, key ); 17245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 17255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 17275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dataAttr( elem, key, data ) { 17295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If nothing was found internally, try to fetch any 17305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // data from the HTML5 data-* attribute 17315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data === undefined && elem.nodeType === 1 ) { 17325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); 17345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = elem.getAttribute( name ); 17365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof data === "string" ) { 17385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 17395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = data === "true" ? true : 17405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data === "false" ? false : 17415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data === "null" ? null : 17425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !jQuery.isNaN( data ) ? parseFloat( data ) : 17435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rbrace.test( data ) ? jQuery.parseJSON( data ) : 17445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data; 17455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) {} 17465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure we set the data so it isn't changed later 17485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( elem, key, data ); 17495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 17515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = undefined; 17525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return data; 17565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON 17595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// property to be considered empty objects; this property always exists in 17605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// order to make sure JSON.stringify does not expose internal metadata 17615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function isEmptyDataObject( obj ) { 17625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in obj ) { 17635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name !== "toJSON" ) { 17645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 17655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 17695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function handleQueueMarkDefer( elem, type, src ) { 17755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var deferDataKey = type + "defer", 17765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) queueDataKey = type + "queue", 17775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) markDataKey = type + "mark", 17785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defer = jQuery.data( elem, deferDataKey, undefined, true ); 17795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( defer && 17805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && 17815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { 17825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Give room for hard-coded callbacks to fire first 17835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and eventually mark/queue something else on the element 17845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout( function() { 17855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.data( elem, queueDataKey, undefined, true ) && 17865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !jQuery.data( elem, markDataKey, undefined, true ) ) { 17875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, deferDataKey, true ); 17885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defer.resolve(); 17895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 0 ); 17915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 17925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 17935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 17955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _mark: function( elem, type ) { 17975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 17985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = (type || "fx") + "mark"; 17995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); 18005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _unmark: function( force, elem, type ) { 18045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( force !== true ) { 18055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = elem; 18065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = force; 18075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) force = false; 18085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 18105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type || "fx"; 18115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var key = type + "mark", 18125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); 18135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( count ) { 18145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( elem, key, count, true ); 18155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 18165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, key, true ); 18175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleQueueMarkDefer( elem, type, "mark" ); 18185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) queue: function( elem, type, data ) { 18235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 18245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = (type || "fx") + "queue"; 18255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var q = jQuery.data( elem, type, undefined, true ); 18265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Speed up dequeue by getting out quickly if this is just a lookup 18275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data ) { 18285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !q || jQuery.isArray(data) ) { 18295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) q = jQuery.data( elem, type, jQuery.makeArray(data), true ); 18305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 18315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) q.push( data ); 18325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return q || []; 18355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dequeue: function( elem, type ) { 18395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type || "fx"; 18405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queue = jQuery.queue( elem, type ), 18425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = queue.shift(), 18435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defer; 18445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the fx queue is dequeued, always remove the progress sentinel 18465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fn === "inprogress" ) { 18475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = queue.shift(); 18485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fn ) { 18515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add a progress sentinel to prevent the fx queue from being 18525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // automatically dequeued 18535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "fx" ) { 18545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) queue.unshift("inprogress"); 18555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn.call(elem, function() { 18585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.dequeue(elem, type); 18595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 18605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !queue.length ) { 18635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, type + "queue", true ); 18645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleQueueMarkDefer( elem, type, "queue" ); 18655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 18685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 18705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) queue: function( type, data ) { 18715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof type !== "string" ) { 18725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = type; 18735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = "fx"; 18745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data === undefined ) { 18775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.queue( this[0], type ); 18785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 18805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queue = jQuery.queue( this, type, data ); 18815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "fx" && queue[0] !== "inprogress" ) { 18835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.dequeue( this, type ); 18845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 18855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 18865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dequeue: function( type ) { 18885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 18895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.dequeue( this, type ); 18905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 18915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 18925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Based off of the plugin by Clint Helfers, with permission. 18935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://blindsignals.com/index.php/2009/07/jquery-delay/ 18945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delay: function( time, type ) { 18955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; 18965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type || "fx"; 18975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.queue( type, function() { 18995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this; 19005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 19015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.dequeue( elem, type ); 19025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, time ); 19035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 19045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearQueue: function( type ) { 19065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.queue( type || "fx", [] ); 19075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get a promise resolved when queues of a certain type 19095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // are emptied (fx is the type by default) 19105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) promise: function( type, object ) { 19115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof type !== "string" ) { 19125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) object = type; 19135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = undefined; 19145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type || "fx"; 19165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var defer = jQuery.Deferred(), 19175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elements = this, 19185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = elements.length, 19195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count = 1, 19205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferDataKey = type + "defer", 19215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) queueDataKey = type + "queue", 19225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) markDataKey = type + "mark", 19235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp; 19245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function resolve() { 19255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !( --count ) ) { 19265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defer.resolveWith( elements, [ elements ] ); 19275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( i-- ) { 19305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || 19315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || 19325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && 19335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { 19345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) count++; 19355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp.done( resolve ); 19365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resolve(); 19395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return defer.promise(); 19405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 19425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rclass = /[\n\t\r]/g, 19475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rspace = /\s+/, 19485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rreturn = /\r/g, 19495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rtype = /^(?:button|input)$/i, 19505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rfocusable = /^(?:button|input|object|select|textarea)$/i, 19515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rclickable = /^a(?:rea)?$/i, 19525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, 19535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeHook, boolHook; 19545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 19565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attr: function( name, value ) { 19575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.access( this, name, value, true, jQuery.attr ); 19585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeAttr: function( name ) { 19615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 19625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeAttr( this, name ); 19635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 19645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop: function( name, value ) { 19675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.access( this, name, value, true, jQuery.prop ); 19685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeProp: function( name ) { 19715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.propFix[ name ] || name; 19725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 19735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // try/catch handles cases where IE balks (such as removing a property on window) 19745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 19755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ name ] = undefined; 19765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this[ name ]; 19775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) {} 19785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 19795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 19805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addClass: function( value ) { 19825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var classNames, i, l, elem, 19835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setClass, c, cl; 19845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( value ) ) { 19865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( j ) { 19875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).addClass( value.call(this, j, this.className) ); 19885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 19895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 19905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value && typeof value === "string" ) { 19925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) classNames = value.split( rspace ); 19935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = this.length; i < l; i++ ) { 19955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[ i ]; 19965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 ) { 19985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem.className && classNames.length === 1 ) { 19995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className = value; 20005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 20025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setClass = " " + elem.className + " "; 20035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( c = 0, cl = classNames.length; c < cl; c++ ) { 20055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { 20065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setClass += classNames[ c ] + " "; 20075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className = jQuery.trim( setClass ); 20105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 20165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeClass: function( value ) { 20195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var classNames, i, l, elem, className, c, cl; 20205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( value ) ) { 20225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( j ) { 20235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).removeClass( value.call(this, j, this.className) ); 20245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 20255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (value && typeof value === "string") || value === undefined ) { 20285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) classNames = (value || "").split( rspace ); 20295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = this.length; i < l; i++ ) { 20315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[ i ]; 20325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 && elem.className ) { 20345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value ) { 20355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) className = (" " + elem.className + " ").replace( rclass, " " ); 20365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( c = 0, cl = classNames.length; c < cl; c++ ) { 20375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) className = className.replace(" " + classNames[ c ] + " ", " "); 20385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className = jQuery.trim( className ); 20405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 20425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.className = ""; 20435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 20495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggleClass: function( value, stateVal ) { 20525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = typeof value, 20535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isBool = typeof stateVal === "boolean"; 20545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( value ) ) { 20565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( i ) { 20575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); 20585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 20595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 20625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "string" ) { 20635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // toggle individual class names 20645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var className, 20655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 20665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self = jQuery( this ), 20675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = stateVal, 20685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) classNames = value.split( rspace ); 20695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (className = classNames[ i++ ]) ) { 20715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // check each className given, space seperated list 20725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = isBool ? state : !self.hasClass( className ); 20735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self[ state ? "addClass" : "removeClass" ]( className ); 20745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( type === "undefined" || type === "boolean" ) { 20775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.className ) { 20785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // store className if set 20795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._data( this, "__className__", this.className ); 20805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // toggle whole className 20835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; 20845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 20865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasClass: function( selector ) { 20895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var className = " " + selector + " "; 20905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ) { 20915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { 20925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 20935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 20955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 20975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 20985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 20995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val: function( value ) { 21005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var hooks, ret, 21015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[0]; 21025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !arguments.length ) { 21045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 21055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; 21065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { 21085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 21095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.value; 21125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return typeof ret === "string" ? 21145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // handle most common string cases 21155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.replace(rreturn, "") : 21165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // handle cases where value is null/undef or number 21175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret == null ? "" : ret; 21185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 21215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isFunction = jQuery.isFunction( value ); 21245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( i ) { 21265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery(this), val; 21275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeType !== 1 ) { 21295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 21305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isFunction ) { 21335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = value.call( this, i, self.val() ); 21345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 21355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = value; 21365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Treat null/undefined as ""; convert numbers to string 21395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val == null ) { 21405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = ""; 21415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( typeof val === "number" ) { 21425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += ""; 21435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( jQuery.isArray( val ) ) { 21445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = jQuery.map(val, function ( value ) { 21455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value == null ? "" : value + ""; 21465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 21475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; 21505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If set returns undefined, fall back to normal setting 21525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { 21535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.value = val; 21545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 21565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 21585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 21605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) valHooks: { 21615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) option: { 21625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 21635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // attributes.value is undefined in Blackberry 4.7 but 21645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // uses .value. See #6932 21655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val = elem.attributes.value; 21665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !val || val.specified ? elem.value : elem.text; 21675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 21695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) select: { 21705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 21715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var value, 21725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index = elem.selectedIndex, 21735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) values = [], 21745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = elem.options, 21755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) one = elem.type === "select-one"; 21765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Nothing was selected 21785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( index < 0 ) { 21795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 21805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Loop through all the selected options 21835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { 21845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var option = options[ i ]; 21855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't return options that are disabled or in a disabled optgroup 21875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && 21885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { 21895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the specific value for the option 21915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = jQuery( option ).val(); 21925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We don't need an array for one selects 21945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( one ) { 21955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 21965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 21975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 21985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Multi-Selects return an array 21995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) values.push( value ); 22005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes Bug #2551 -- select.val() broken in IE after form.reset() 22045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( one && !values.length && options.length ) { 22055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery( options[ index ] ).val(); 22065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return values; 22095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 22105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 22125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var values = jQuery.makeArray( value ); 22135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(elem).find("option").each(function() { 22155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; 22165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 22175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !values.length ) { 22195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.selectedIndex = -1; 22205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return values; 22225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 22255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrFn: { 22275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val: true, 22285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) css: true, 22295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: true, 22305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: true, 22315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: true, 22325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) width: true, 22335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) height: true, 22345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset: true 22355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 22365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrFix: { 22385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Always normalize to ensure hook usage 22395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tabindex: "tabIndex" 22405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 22415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attr: function( elem, name, value, pass ) { 22435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nType = elem.nodeType; 22445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't get/set attributes on text, comment and attribute nodes 22465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { 22475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 22485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pass && name in jQuery.attrFn ) { 22515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery( elem )[ name ]( value ); 22525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fallback to prop when attributes are not supported 22555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !("getAttribute" in elem) ) { 22565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.prop( elem, name, value ); 22575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, hooks, 22605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); 22615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Normalize the name if needed 22635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( notxml ) { 22645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.attrFix[ name ] || name; 22655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = jQuery.attrHooks[ name ]; 22675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !hooks ) { 22695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use boolHook for boolean attributes 22705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rboolean.test( name ) ) { 22715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = boolHook; 22725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use nodeHook if available( IE6/7 ) 22745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( nodeHook ) { 22755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = nodeHook; 22765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value !== undefined ) { 22815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === null ) { 22835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeAttr( elem, name ); 22845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 22855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { 22875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 22885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 22905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttribute( name, "" + value ); 22915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 22925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 22935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { 22955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 22965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 22985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.getAttribute( name ); 23005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Non-existent attributes return null, we normalize to undefined 23025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret === null ? 23035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined : 23045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret; 23055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) removeAttr: function( elem, name ) { 23095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var propName; 23105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 ) { 23115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.attrFix[ name ] || name; 23125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attr( elem, name, "" ); 23145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeAttribute( name ); 23155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set corresponding property to false for boolean attributes 23175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { 23185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ propName ] = false; 23195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrHooks: { 23245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: { 23255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 23265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can't allow the type property to be changed (since it causes problems in IE) 23275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rtype.test( elem.nodeName ) && elem.parentNode ) { 23285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( "type property can't be changed" ); 23295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { 23305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setting the type on a radio button after the value resets the value in IE6-9 23315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset value to it's default in case type is set after value 23325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This is for element creation 23335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val = elem.value; 23345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttribute( "type", value ); 23355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val ) { 23365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.value = val; 23375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 23395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the value property for back compat 23435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the nodeHook for button elements in IE6/7 (#1954) 23445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value: { 23455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, name ) { 23465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { 23475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return nodeHook.get( elem, name ); 23485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return name in elem ? 23505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.value : 23515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 23525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value, name ) { 23545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { 23555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return nodeHook.set( elem, value, name ); 23565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Does not return so that setAttribute is also used 23585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.value = value; 23595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propFix: { 23645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tabindex: "tabIndex", 23655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readonly: "readOnly", 23665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "for": "htmlFor", 23675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "class": "className", 23685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) maxlength: "maxLength", 23695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cellspacing: "cellSpacing", 23705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cellpadding: "cellPadding", 23715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rowspan: "rowSpan", 23725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) colspan: "colSpan", 23735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) usemap: "useMap", 23745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) frameborder: "frameBorder", 23755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contenteditable: "contentEditable" 23765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 23775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop: function( elem, name, value ) { 23795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nType = elem.nodeType; 23805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't get/set properties on text, comment and attribute nodes 23825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { 23835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 23845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, hooks, 23875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); 23885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( notxml ) { 23905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fix name and attach hooks 23915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.propFix[ name ] || name; 23925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = jQuery.propHooks[ name ]; 23935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 23945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value !== undefined ) { 23965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { 23975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 23985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 23995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 24005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem[ name ] = value); 24015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 24045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { 24055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 24065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 24085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem[ name ]; 24095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 24125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propHooks: { 24145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tabIndex: { 24155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 24165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set 24175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ 24185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attributeNode = elem.getAttributeNode("tabindex"); 24195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return attributeNode && attributeNode.specified ? 24215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parseInt( attributeNode.value, 10 ) : 24225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? 24235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 0 : 24245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined; 24255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 24295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Add the tabindex propHook to attrHooks for back-compat 24315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex; 24325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Hook for boolean attributes 24345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)boolHook = { 24355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, name ) { 24365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Align boolean attributes with corresponding properties 24375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fall back to attribute presence where some booleans are not supported 24385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attrNode; 24395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ? 24405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name.toLowerCase() : 24415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined; 24425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 24435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value, name ) { 24445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var propName; 24455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === false ) { 24465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove boolean attributes when set to false 24475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeAttr( elem, name ); 24485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 24495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // value is true since we know at this point it's type boolean and not false 24505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set boolean attributes to the same name and set the DOM property 24515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) propName = jQuery.propFix[ name ] || name; 24525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( propName in elem ) { 24535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only set the IDL specifically if it already exists on the element 24545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ propName ] = true; 24555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttribute( name, name.toLowerCase() ); 24585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return name; 24605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 24625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE6/7 do not support getting/setting some attributes with get/setAttribute 24645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.getSetAttribute ) { 24655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use this for any attribute in IE6/7 24675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This fixes almost every IE6/7 issue 24685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeHook = jQuery.valHooks.button = { 24695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, name ) { 24705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret; 24715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.getAttributeNode( name ); 24725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return undefined if nodeValue is empty string 24735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret && ret.nodeValue !== "" ? 24745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.nodeValue : 24755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined; 24765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 24775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value, name ) { 24785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the existing or create a new attribute node 24795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = elem.getAttributeNode( name ); 24805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !ret ) { 24815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = document.createAttribute( name ); 24825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttributeNode( ret ); 24835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (ret.nodeValue = value + ""); 24855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 24875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 24885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set width and height to auto instead of 0 on empty string( Bug #8150 ) 24895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This is for removals 24905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each([ "width", "height" ], function( i, name ) { 24915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { 24925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 24935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === "" ) { 24945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.setAttribute( name, "auto" ); 24955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 24965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 24985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 24995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Some attributes require a special call on IE 25045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.hrefNormalized ) { 25055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { 25065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { 25075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 25085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = elem.getAttribute( name, 2 ); 25095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret === null ? undefined : ret; 25105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.style ) { 25165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attrHooks.style = { 25175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 25185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return undefined in the case of empty string 25195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Normalize to lowercase since IE uppercases css property names 25205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.style.cssText.toLowerCase() || undefined; 25215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 25225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 25235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.style.cssText = "" + value); 25245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 25265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Safari mis-reports the default selected property of an option 25295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Accessing the parent's selectedIndex property fixes it 25305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.optSelected ) { 25315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { 25325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 25335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = elem.parentNode; 25345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent ) { 25365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent.selectedIndex; 25375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that it also works with optgroups, see #5701 25395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent.parentNode ) { 25405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent.parentNode.selectedIndex; 25415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 25445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Radios and checkboxes getter/setter 25495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.checkOn ) { 25505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each([ "radio", "checkbox" ], function() { 25515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.valHooks[ this ] = { 25525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem ) { 25535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified 25545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute("value") === null ? "on" : elem.value; 25555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 25575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 25595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each([ "radio", "checkbox" ], function() { 25605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { 25615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 25625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( value ) ) { 25635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); 25645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 25675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 25685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rnamespaces = /\.(.*)$/, 25735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rformElems = /^(?:textarea|input|select)$/i, 25745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rperiod = /\./g, 25755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rspaces = / /g, 25765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rescape = /[^\w\s.|`]/g, 25775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fcleanup = function( nm ) { 25785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return nm.replace(rescape, "\\$&"); 25795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 25805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A number of helper functions used for managing events. 25835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Many of the ideas behind this code originated from 25845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Dean Edwards' addEvent library. 25855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 25865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.event = { 25875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bind an event to an element 25895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Original by Dean Edwards 25905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function( elem, types, handler, data ) { 25915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 25925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 25935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 25945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 25955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handler === false ) { 25965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = returnFalse; 25975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !handler ) { 25985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes bug #7229. Fix recommended by jdalton 25995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 26005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handleObjIn, handleObj; 26035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handler.handler ) { 26055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObjIn = handler; 26065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = handleObjIn.handler; 26075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the function being executed has a unique ID 26105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handler.guid ) { 26115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler.guid = jQuery.guid++; 26125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Init the element's event structure 26155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elemData = jQuery._data( elem ); 26165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If no elemData is found then we must be trying to bind to one of the 26185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // banned noData elements 26195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elemData ) { 26205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 26215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var events = elemData.events, 26245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventHandle = elemData.handle; 26255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !events ) { 26275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elemData.events = events = {}; 26285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !eventHandle ) { 26315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elemData.handle = eventHandle = function( e ) { 26325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Discard the second event of a jQuery.event.trigger() and 26335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // when an event is called after a page has unloaded 26345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? 26355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.apply( eventHandle.elem, arguments ) : 26365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined; 26375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 26385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add elem as a property of the handle function 26415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This is to prevent a memory leak with non-native events in IE. 26425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventHandle.elem = elem; 26435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle multiple events separated by a space 26455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery(...).bind("mouseover mouseout", fn); 26465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = types.split(" "); 26475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type, i = 0, namespaces; 26495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (type = types[ i++ ]) ) { 26515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = handleObjIn ? 26525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend({}, handleObjIn) : 26535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { handler: handler, data: data }; 26545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced event handlers 26565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type.indexOf(".") > -1 ) { 26575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = type.split("."); 26585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = namespaces.shift(); 26595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj.namespace = namespaces.slice(0).sort().join("."); 26605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 26625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = []; 26635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj.namespace = ""; 26645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj.type = type; 26675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handleObj.guid ) { 26685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj.guid = handler.guid; 26695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the current list of functions bound to this event 26725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handlers = events[ type ], 26735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special = jQuery.event.special[ type ] || {}; 26745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Init the event handler queue 26765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handlers ) { 26775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handlers = events[ type ] = []; 26785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check for a special event handler 26805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only use addEventListener/attachEvent if the special 26815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // events handler returns false 26825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 26835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bind the global event handler to the element 26845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.addEventListener ) { 26855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.addEventListener( type, eventHandle, false ); 26865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.attachEvent ) { 26885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.attachEvent( "on" + type, eventHandle ); 26895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( special.add ) { 26945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special.add.call( elem, handleObj ); 26955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handleObj.handler.guid ) { 26975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj.handler.guid = handler.guid; 26985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 26995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the function to the element's handler list 27025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handlers.push( handleObj ); 27035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keep track of which events have been used, for event optimization 27055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.global[ type ] = true; 27065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Nullify elem to prevent memory leaks in IE 27095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = null; 27105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 27115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) global: {}, 27135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Detach an event or set of events from an element 27155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function( elem, types, handler, pos ) { 27165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't do events on text and comment nodes 27175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 27185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 27195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handler === false ) { 27225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = returnFalse; 27235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, 27265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elemData = jQuery.hasData( elem ) && jQuery._data( elem ), 27275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) events = elemData && elemData.events; 27285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elemData || !events ) { 27305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 27315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // types is actually an event object here 27345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( types && types.type ) { 27355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = types.handler; 27365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = types.type; 27375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Unbind all events for the element 27405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !types || typeof types === "string" && types.charAt(0) === "." ) { 27415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = types || ""; 27425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( type in events ) { 27445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( elem, type + types ); 27455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 27485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle multiple events separated by a space 27515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery(...).unbind("mouseover mouseout", fn); 27525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = types.split(" "); 27535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (type = types[ i++ ]) ) { 27555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) origType = type; 27565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = null; 27575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all = type.indexOf(".") < 0; 27585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = []; 27595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !all ) { 27615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced event handlers 27625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = type.split("."); 27635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = namespaces.shift(); 27645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespace = new RegExp("(^|\\.)" + 27665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); 27675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventType = events[ type ]; 27705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !eventType ) { 27725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 27735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !handler ) { 27765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = 0; j < eventType.length; j++ ) { 27775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = eventType[ j ]; 27785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( all || namespace.test( handleObj.namespace ) ) { 27805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( elem, origType, handleObj.handler, j ); 27815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventType.splice( j--, 1 ); 27825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 27865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special = jQuery.event.special[ type ] || {}; 27895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = pos || 0; j < eventType.length; j++ ) { 27915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = eventType[ j ]; 27925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 27935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handler.guid === handleObj.guid ) { 27945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remove the given handler for the given type 27955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( all || namespace.test( handleObj.namespace ) ) { 27965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pos == null ) { 27975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventType.splice( j--, 1 ); 27985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 27995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( special.remove ) { 28015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special.remove.call( elem, handleObj ); 28025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pos != null ) { 28065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 28075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remove generic event handler if no more handlers exist 28125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { 28135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { 28145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeEvent( elem, type, elemData.handle ); 28155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = null; 28185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete events[ type ]; 28195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove the expando if it's no longer used 28235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isEmptyObject( events ) ) { 28245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handle = elemData.handle; 28255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handle ) { 28265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle.elem = null; 28275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete elemData.events; 28305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete elemData.handle; 28315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isEmptyObject( elemData ) ) { 28335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeData( elem, undefined, true ); 28345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Events that are safe to short-circuit if no handlers are attached. 28395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Native DOM events should not be added, they may have inline handlers. 28405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) customEvent: { 28415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "getData": true, 28425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "setData": true, 28435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "changeData": true 28445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 28455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger: function( event, data, elem, onlyHandlers ) { 28475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event object or event type 28485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = event.type || event, 28495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = [], 28505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) exclusive; 28515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type.indexOf("!") >= 0 ) { 28535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Exclusive events trigger only for the exact event (no namespaces) 28545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type.slice(0, -1); 28555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) exclusive = true; 28565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type.indexOf(".") >= 0 ) { 28595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Namespaced trigger; create a regexp to match event type in handle() 28605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = type.split("."); 28615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = namespaces.shift(); 28625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces.sort(); 28635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { 28665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // No jQuery handlers for this event type, and it can't have inline handlers 28675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 28685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Caller can pass in an Event, Object, or just an event type string 28715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = typeof event === "object" ? 28725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // jQuery.Event object 28735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event[ jQuery.expando ] ? event : 28745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Object literal 28755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new jQuery.Event( type, event ) : 28765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Just the event type (string) 28775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new jQuery.Event( type ); 28785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = type; 28805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.exclusive = exclusive; 28815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.namespace = namespaces.join("."); 28825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); 28835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // triggerHandler() and global events don't bubble or run the default action 28855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( onlyHandlers || !elem ) { 28865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 28875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.stopPropagation(); 28885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 28905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle a global trigger 28915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 28925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: Stop taunting the data cache; remove global events and always attach to document 28935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( jQuery.cache, function() { 28945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // internalKey variable is just used to make it easier to find 28955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and potentially change this stuff later; currently it just 28965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // points to jQuery.expando 28975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var internalKey = jQuery.expando, 28985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) internalCache = this[ internalKey ]; 28995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( internalCache && internalCache.events && internalCache.events[ type ] ) { 29005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( event, data, internalCache.handle.elem ); 29015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 29035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 29045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't do events on text and comment nodes 29075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 29085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 29095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clean up the event in case it is being reused 29125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = undefined; 29135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = elem; 29145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clone any incoming data and prepend the event, creating the handler arg list 29165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = data != null ? jQuery.makeArray( data ) : []; 29175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data.unshift( event ); 29185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cur = elem, 29205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE doesn't like method names with a colon (#3533, #8272) 29215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ontype = type.indexOf(":") < 0 ? "on" + type : ""; 29225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fire event on the current element, then bubble up the DOM tree 29245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) do { 29255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handle = jQuery._data( cur, "handle" ); 29265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.currentTarget = cur; 29285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handle ) { 29295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle.apply( cur, data ); 29305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trigger an inline bound script 29335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { 29345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = false; 29355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 29365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Bubble up to document, then to window 29395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; 29405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } while ( cur && !event.isPropagationStopped() ); 29415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If nobody prevented the default action, do it now 29435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.isDefaultPrevented() ) { 29445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old, 29455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special = jQuery.event.special[ type ] || {}; 29465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && 29485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { 29495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call a native DOM method on the target with the same name name as the event. 29515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Can't use an .isFunction)() check here because IE6/7 fails that test. 29525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. 29535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 29545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ontype && elem[ type ] ) { 29555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't re-trigger an onFOO event when we call its FOO() method 29565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old = elem[ ontype ]; 29575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( old ) { 29595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ ontype ] = null; 29605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.triggered = type; 29635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ type ](); 29645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch ( ieError ) {} 29665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( old ) { 29685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ ontype ] = old; 29695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.triggered = undefined; 29725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event.result; 29765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 29775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle: function( event ) { 29795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = jQuery.event.fix( event || window.event ); 29805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Snapshot the handlers list since a called handler may add/remove events. 29815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), 29825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) run_all = !event.exclusive && !event.namespace, 29835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args = Array.prototype.slice.call( arguments, 0 ); 29845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the fix-ed Event rather than the (read-only) native event 29865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[0] = event; 29875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.currentTarget = this; 29885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j = 0, l = handlers.length; j < l; j++ ) { 29905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handleObj = handlers[ j ]; 29915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Triggered event must 1) be non-exclusive and have no namespace, or 29935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // 2) have namespace(s) a subset or equal to those in the bound event. 29945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { 29955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Pass in a reference to the handler function itself 29965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // So that we can later remove it 29975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.handler = handleObj.handler; 29985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.data = handleObj.data; 29995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.handleObj = handleObj; 30005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = handleObj.handler.apply( this, args ); 30025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret !== undefined ) { 30045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.result = ret; 30055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === false ) { 30065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 30075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.stopPropagation(); 30085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.isImmediatePropagationStopped() ) { 30125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 30135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event.result; 30175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 30185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 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(" "), 30205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fix: function( event ) { 30225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event[ jQuery.expando ] ) { 30235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event; 30245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // store a copy of the original event object 30275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and "clone" to set read-only properties 30285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var originalEvent = event; 30295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event = jQuery.Event( originalEvent ); 30305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = this.props.length, prop; i; ) { 30325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop = this.props[ --i ]; 30335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event[ prop ] = originalEvent[ prop ]; 30345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fix target property, if necessary 30375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.target ) { 30385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes #1925 where srcElement might not be defined either 30395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = event.srcElement || document; 30405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // check if target is a textnode (safari) 30435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.target.nodeType === 3 ) { 30445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.target = event.target.parentNode; 30455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add relatedTarget, if necessary 30485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.relatedTarget && event.fromElement ) { 30495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; 30505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Calculate pageX/Y if missing and clientX/Y available 30535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.pageX == null && event.clientX != null ) { 30545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var eventDocument = event.target.ownerDocument || document, 30555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = eventDocument.documentElement, 30565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body = eventDocument.body; 30575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); 30595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); 30605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add which for key events 30635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { 30645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.which = event.charCode != null ? event.charCode : event.keyCode; 30655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) 30685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.metaKey && event.ctrlKey ) { 30695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.metaKey = event.ctrlKey; 30705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add which for click: 1 === left; 2 === middle; 3 === right 30735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Note: button is not normalized, so don't use it 30745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !event.which && event.button !== undefined ) { 30755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); 30765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 30775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return event; 30795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 30805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Deprecated, use jQuery.guid instead 30825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) guid: 1E8, 30835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Deprecated, use jQuery.proxy instead 30855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) proxy: jQuery.proxy, 30865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) special: { 30885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ready: { 30895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure the ready event is setup 30905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: jQuery.bindReady, 30915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: jQuery.noop 30925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 30935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) live: { 30955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function( handleObj ) { 30965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, 30975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) liveConvert( handleObj.origType, handleObj.selector ), 30985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); 30995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 31005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function( handleObj ) { 31025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); 31035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 31055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) beforeunload: { 31075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function( data, namespaces, eventHandle ) { 31085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We only want to do this special case on windows 31095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isWindow( this ) ) { 31105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.onbeforeunload = eventHandle; 31115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 31135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function( namespaces, eventHandle ) { 31155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.onbeforeunload === eventHandle ) { 31165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.onbeforeunload = null; 31175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 31225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.removeEvent = document.removeEventListener ? 31245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function( elem, type, handle ) { 31255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.removeEventListener ) { 31265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeEventListener( type, handle, false ); 31275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } : 31295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function( elem, type, handle ) { 31305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.detachEvent ) { 31315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.detachEvent( "on" + type, handle ); 31325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 31345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event = function( src, props ) { 31365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Allow instantiation without the 'new' keyword 31375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !this.preventDefault ) { 31385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new jQuery.Event( src, props ); 31395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event object 31425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( src && src.type ) { 31435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.originalEvent = src; 31445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.type = src.type; 31455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Events bubbling up the document may have been marked as prevented 31475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // by a handler lower down the tree; reflect the correct value. 31485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || 31495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; 31505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event type 31525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 31535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.type = src; 31545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Put explicitly provided properties onto the event object 31575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( props ) { 31585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( this, props ); 31595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // timeStamp is buggy for some events on Firefox(#3843) 31625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // So we won't rely on the native value 31635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.timeStamp = jQuery.now(); 31645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Mark it as fixed 31665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ jQuery.expando ] = true; 31675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 31685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnFalse() { 31705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 31715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 31725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function returnTrue() { 31735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 31745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 31755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 31775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 31785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.Event.prototype = { 31795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) preventDefault: function() { 31805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isDefaultPrevented = returnTrue; 31815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = this.originalEvent; 31835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !e ) { 31845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 31855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if preventDefault exists run it on the original event 31885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( e.preventDefault ) { 31895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.preventDefault(); 31905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // otherwise set the returnValue property of the original event to false (IE) 31925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 31935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.returnValue = false; 31945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 31955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 31965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stopPropagation: function() { 31975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isPropagationStopped = returnTrue; 31985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 31995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = this.originalEvent; 32005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !e ) { 32015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 32025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if stopPropagation exists run it on the original event 32045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( e.stopPropagation ) { 32055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.stopPropagation(); 32065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // otherwise set the cancelBubble property of the original event to true (IE) 32085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.cancelBubble = true; 32095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stopImmediatePropagation: function() { 32115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.isImmediatePropagationStopped = returnTrue; 32125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.stopPropagation(); 32135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isDefaultPrevented: returnFalse, 32155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPropagationStopped: returnFalse, 32165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isImmediatePropagationStopped: returnFalse 32175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 32185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Checks if an event happened on an element within another element 32205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Used in jQuery.event.special.mouseenter and mouseleave handlers 32215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var withinElement = function( event ) { 32225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if mouse(over|out) are still within the same parent element 32245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var related = event.relatedTarget, 32255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inside = false, 32265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eventType = event.type; 32275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = event.data; 32295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( related !== this ) { 32315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( related ) { 32335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inside = jQuery.contains( this, related ); 32345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inside ) { 32375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.apply( this, arguments ); 32395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = eventType; 32415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, 32445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// In case of event delegation, we only need to rename the event.type, 32465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// liveHandler will take care of the rest. 32475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)delegate = function( event ) { 32485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = event.data; 32495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.apply( this, arguments ); 32505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 32515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create mouseenter and mouseleave events 32535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 32545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseenter: "mouseover", 32555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseleave: "mouseout" 32565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( orig, fix ) { 32575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.special[ orig ] = { 32585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function( data ) { 32595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); 32605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function( data ) { 32625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); 32635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 32655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 32665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// submit delegation 32685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.submitBubbles ) { 32695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.special.submit = { 32715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function( data, namespaces ) { 32725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.nodeName( this, "form" ) ) { 32735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add(this, "click.specialSubmit", function( e ) { 32745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Avoid triggering error on non-existent type attribute in IE VML (#7071) 32755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target, 32765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; 32775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { 32795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger( "submit", this, arguments ); 32805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 32825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add(this, "keypress.specialSubmit", function( e ) { 32845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target, 32855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : ""; 32865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { 32885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger( "submit", this, arguments ); 32895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 32915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 32935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 32945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 32955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 32965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 32975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function( namespaces ) { 32985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, ".specialSubmit" ); 32995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 33015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 33035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// change delegation, happens here so we have bind. 33055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.changeBubbles ) { 33065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var changeFilters, 33085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getVal = function( elem ) { 33105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = jQuery.nodeName( elem, "input" ) ? elem.type : "", 33115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = elem.value; 33125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "radio" || type === "checkbox" ) { 33145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = elem.checked; 33155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( type === "select-multiple" ) { 33175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = elem.selectedIndex > -1 ? 33185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.map( elem.options, function( elem ) { 33195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.selected; 33205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).join("-") : 33215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ""; 33225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( jQuery.nodeName( elem, "select" ) ) { 33245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = elem.selectedIndex; 33255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val; 33285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testChange = function testChange( e ) { 33315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target, data, val; 33325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { 33345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 33355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = jQuery._data( elem, "_change_data" ); 33385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = getVal(elem); 33395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the current data will be also retrieved by beforeactivate 33415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( e.type !== "focusout" || elem.type !== "radio" ) { 33425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._data( elem, "_change_data", val ); 33435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data === undefined || val === data ) { 33465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 33475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data != null || val ) { 33505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.type = "change"; 33515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.liveFired = undefined; 33525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( e, arguments[1], elem ); 33535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 33555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.special.change = { 33575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filters: { 33585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focusout: testChange, 33595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) beforedeactivate: testChange, 33615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) click: function( e ) { 33635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; 33645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { 33665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testChange.call( this, e ); 33675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Change has to be called before submit 33715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keydown will be called before keypress, which is used in submit-event delegation 33725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) keydown: function( e ) { 33735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; 33745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || 33765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || 33775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "select-multiple" ) { 33785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) testChange.call( this, e ); 33795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Beforeactivate happens also before the previous element is blurred 33835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // with this event you can't trigger a change event, but you can store 33845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // information 33855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) beforeactivate: function( e ) { 33865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = e.target; 33875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._data( elem, "_change_data", getVal(elem) ); 33885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 33905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function( data, namespaces ) { 33925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.type === "file" ) { 33935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 33945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 33965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in changeFilters ) { 33975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); 33985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 33995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return rformElems.test( this.nodeName ); 34015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 34025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function( namespaces ) { 34045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this, ".specialChange" ); 34055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return rformElems.test( this.nodeName ); 34075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 34095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) changeFilters = jQuery.event.special.change.filters; 34115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle when the input is .focus()'d 34135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) changeFilters.focus = changeFilters.beforeactivate; 34145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 34155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function trigger( type, elem, args ) { 34175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Piggyback on a donor event to simulate a different one. 34185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fake originalEvent to avoid donor's stopPropagation, but if the 34195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // simulated event prevents default then we do the same on the donor. 34205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't pass args or remember liveFired; they apply to the donor event. 34215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var event = jQuery.extend( {}, args[ 0 ] ); 34225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = type; 34235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.originalEvent = {}; 34245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.liveFired = undefined; 34255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.handle.call( elem, event ); 34265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.isDefaultPrevented() ) { 34275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[ 0 ].preventDefault(); 34285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 34305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create "bubbling" focus and blur events 34325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.focusinBubbles ) { 34335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { 34345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach a single capturing handler while someone wants focusin/focusout 34365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attaches = 0; 34375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.special[ fix ] = { 34395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function() { 34405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( attaches++ === 0 ) { 34415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.addEventListener( orig, handler, true ); 34425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 34445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function() { 34455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( --attaches === 0 ) { 34465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.removeEventListener( orig, handler, true ); 34475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 34505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function handler( donor ) { 34525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Donor event is always a native one; fix it and switch its type. 34535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Let focusin/out handler cancel the donor focus/blur event. 34545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var e = jQuery.event.fix( donor ); 34555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.type = fix; 34565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.originalEvent = {}; 34575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( e, null, e.target ); 34585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( e.isDefaultPrevented() ) { 34595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) donor.preventDefault(); 34605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 34635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 34645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["bind", "one"], function( i, name ) { 34665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( type, data, fn ) { 34675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var handler; 34685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle object literals 34705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof type === "object" ) { 34715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var key in type ) { 34725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ name ](key, data, type[key], fn); 34735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 34755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( arguments.length === 2 || data === false ) { 34785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = data; 34795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = undefined; 34805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "one" ) { 34835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = function( event ) { 34845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).unbind( event, handler ); 34855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fn.apply( this, arguments ); 34865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 34875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler.guid = fn.guid || jQuery.guid++; 34885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 34895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handler = fn; 34905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "unload" && name !== "one" ) { 34935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.one( type, data, fn ); 34945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 34965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ) { 34975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( this[i], type, handler, data ); 34985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 34995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 35025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 35035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 35045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 35065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unbind: function( type, fn ) { 35075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle object literals 35085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof type === "object" && !type.preventDefault ) { 35095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var key in type ) { 35105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.unbind(key, type[key]); 35115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 35145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ) { 35155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( this[i], type, fn ); 35165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 35205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delegate: function( selector, types, data, fn ) { 35235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.live( types, data, fn, selector ); 35245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undelegate: function( selector, types, fn ) { 35275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( arguments.length === 0 ) { 35285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.unbind( "live" ); 35295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 35315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.die( types, null, fn, selector ); 35325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) trigger: function( type, data ) { 35365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 35375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( type, data, this ); 35385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 35395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) triggerHandler: function( type, data ) { 35425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 35435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.event.trigger( type, data, this[0], true ); 35445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggle: function( fn ) { 35485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Save reference to arguments for access in closure 35495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var args = arguments, 35505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) guid = fn.guid || jQuery.guid++, 35515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 35525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggler = function( event ) { 35535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Figure out which function to execute 35545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; 35555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); 35565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that clicks stop 35585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 35595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and execute the function 35615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return args[ lastToggle ].apply( this, arguments ) || false; 35625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 35635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // link all the functions, so any of them can unbind this click handler 35655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggler.guid = guid; 35665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( i < args.length ) { 35675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[ i++ ].guid = guid; 35685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.click( toggler ); 35715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 35725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hover: function( fnOver, fnOut ) { 35745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 35755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 35775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var liveMap = { 35795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focus: "focusin", 35805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) blur: "focusout", 35815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseenter: "mouseover", 35825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mouseleave: "mouseout" 35835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 35845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["live", "die"], function( i, name ) { 35865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { 35875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type, i = 0, match, namespaces, preType, 35885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = origSelector || this.selector, 35895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = origSelector ? this : jQuery( this.context ); 35905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof types === "object" && !types.preventDefault ) { 35925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var key in types ) { 35935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context[ name ]( key, data, types[key], selector ); 35945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 35975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 35985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "die" && !types && 36005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) origSelector && origSelector.charAt(0) === "." ) { 36015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context.unbind( origSelector ); 36035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 36055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data === false || jQuery.isFunction( data ) ) { 36085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = data || returnFalse; 36095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = undefined; 36105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types = (types || "").split(" "); 36135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (type = types[ i++ ]) != null ) { 36155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = rnamespaces.exec( type ); 36165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = ""; 36175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match ) { 36195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespaces = match[0]; 36205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type.replace( rnamespaces, "" ); 36215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "hover" ) { 36245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); 36255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 36265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) preType = type; 36295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( liveMap[ type ] ) { 36315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) types.push( liveMap[ type ] + namespaces ); 36325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type + namespaces; 36335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 36355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = (liveMap[ type ] || type) + namespaces; 36365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "live" ) { 36395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // bind live handler 36405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j = 0, l = context.length; j < l; j++ ) { 36415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( context[j], "live." + liveConvert( type, selector ), 36425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); 36435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 36465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // unbind live handler 36475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context.unbind( "live." + liveConvert( type, selector ), fn ); 36485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 36525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 36535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 36545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveHandler( event ) { 36565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, 36575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elems = [], 36585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selectors = [], 36595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) events = jQuery._data( this, "events" ); 36605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) 36625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { 36635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 36645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.namespace ) { 36675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); 36685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.liveFired = this; 36715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var live = events.live.slice(0); 36735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = 0; j < live.length; j++ ) { 36755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = live[j]; 36765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { 36785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selectors.push( handleObj.selector ); 36795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 36815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) live.splice( j--, 1 ); 36825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 36845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = jQuery( event.target ).closest( selectors, event.currentTarget ); 36865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = match.length; i < l; i++ ) { 36885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) close = match[i]; 36895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = 0; j < live.length; j++ ) { 36915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handleObj = live[j]; 36925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { 36945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = close.elem; 36955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) related = null; 36965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Those two events require additional checking 36985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { 36995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.type = handleObj.preType; 37005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; 37015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure not to accidentally match a child element with the same selector 37035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( related && jQuery.contains( elem, related ) ) { 37045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) related = elem; 37055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !related || related !== elem ) { 37095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elems.push({ elem: elem, handleObj: handleObj, level: close.level }); 37105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = elems.length; i < l; i++ ) { 37165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = elems[i]; 37175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( maxLevel && match.level > maxLevel ) { 37195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 37205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.currentTarget = match.elem; 37235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.data = match.handleObj.data; 37245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.handleObj = match.handleObj; 37255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = match.handleObj.origHandler.apply( match.elem, arguments ); 37275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === false || event.isPropagationStopped() ) { 37295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) maxLevel = match.level; 37305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === false ) { 37325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop = false; 37335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( event.isImmediatePropagationStopped() ) { 37355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 37365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return stop; 37415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 37425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function liveConvert( type, selector ) { 37445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); 37455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 37465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + 37485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 37495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "change select submit keydown keypress keyup error").split(" "), function( i, name ) { 37505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle event binding 37525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( data, fn ) { 37535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fn == null ) { 37545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fn = data; 37555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = null; 37565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return arguments.length > 0 ? 37595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.bind( name, data, fn ) : 37605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.trigger( name ); 37615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 37625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.attrFn ) { 37645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.attrFn[ name ] = true; 37655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 37665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 37675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*! 37715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Sizzle CSS Selector Engine 37725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright 2011, The Dojo Foundation 37735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Released under the MIT, BSD, and GPL Licenses. 37745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * More information: http://sizzlejs.com/ 37755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 37765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 37775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, 37795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = 0, 37805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toString = Object.prototype.toString, 37815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = false, 37825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) baseHasDuplicate = true, 37835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rBackslash = /\\/g, 37845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rNonWord = /\W/; 37855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Here we check if the JavaScript engine is using some sort of 37875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// optimization where it does not always call our comparision 37885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// function. If that is the case, discard the hasDuplicate value. 37895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Thus far that includes Google Chrome. 37905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)[0, 0].sort(function() { 37915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) baseHasDuplicate = false; 37925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 37935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 37945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Sizzle = function( selector, context, results, seed ) { 37965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = results || []; 37975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 37985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var origContext = context; 38005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( context.nodeType !== 1 && context.nodeType !== 9 ) { 38025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 38035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !selector || typeof selector !== "string" ) { 38065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 38075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var m, set, checkSet, extra, ret, cur, pop, i, 38105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prune = true, 38115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contextXML = Sizzle.isXML( context ), 38125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts = [], 38135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) soFar = selector; 38145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the position of the chunker regexp (start from head) 38165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) do { 38175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) chunker.exec( "" ); 38185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m = chunker.exec( soFar ); 38195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( m ) { 38215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) soFar = m[3]; 38225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts.push( m[1] ); 38245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( m[2] ) { 38265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) extra = m[3]; 38275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 38285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } while ( m ); 38315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length > 1 && origPOS.exec( selector ) ) { 38335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { 38355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = posProcess( parts[0] + parts[1], context ); 38365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = Expr.relative[ parts[0] ] ? 38395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ context ] : 38405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( parts.shift(), context ); 38415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( parts.length ) { 38435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = parts.shift(); 38445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( Expr.relative[ selector ] ) { 38465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector += parts.shift(); 38475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = posProcess( selector, set ); 38505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Take a shortcut and set the context if the root selector is an ID 38555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (but not if it'll be faster if the inner selector is an ID) 38565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && 38575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { 38585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = Sizzle.find( parts.shift(), context, contextXML ); 38605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = ret.expr ? 38615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( ret.expr, ret.set )[0] : 38625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.set[0]; 38635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( context ) { 38665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = seed ? 38675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { expr: parts.pop(), set: makeArray(seed) } : 38685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); 38695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = ret.expr ? 38715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( ret.expr, ret.set ) : 38725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.set; 38735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts.length > 0 ) { 38755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet = makeArray( set ); 38765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prune = false; 38795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( parts.length ) { 38825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = parts.pop(); 38835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pop = cur; 38845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !Expr.relative[ cur ] ) { 38865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = ""; 38875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pop = parts.pop(); 38895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pop == null ) { 38925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pop = context; 38935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.relative[ cur ]( checkSet, pop, contextXML ); 38965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 38975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 38995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet = parts = []; 39005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !checkSet ) { 39045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet = set; 39055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !checkSet ) { 39085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.error( cur || selector ); 39095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( toString.call(checkSet) === "[object Array]" ) { 39125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !prune ) { 39135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push.apply( results, checkSet ); 39145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( context && context.nodeType === 1 ) { 39165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; checkSet[i] != null; i++ ) { 39175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { 39185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push( set[i] ); 39195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 39235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; checkSet[i] != null; i++ ) { 39245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( checkSet[i] && checkSet[i].nodeType === 1 ) { 39255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push( set[i] ); 39265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 39315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray( checkSet, results ); 39325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra ) { 39355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( extra, origContext, results, seed ); 39365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.uniqueSort( results ); 39375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 39405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 39415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.uniqueSort = function( results ) { 39435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( sortOrder ) { 39445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = baseHasDuplicate; 39455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.sort( sortOrder ); 39465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hasDuplicate ) { 39485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 1; i < results.length; i++ ) { 39495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i] === results[ i - 1 ] ) { 39505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.splice( i--, 1 ); 39515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 39575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 39585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.matches = function( expr, set ) { 39605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle( expr, null, null, set ); 39615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 39625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.matchesSelector = function( node, expr ) { 39645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle( expr, null, null, [node] ).length > 0; 39655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 39665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.find = function( expr, context, isXML ) { 39685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var set; 39695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !expr ) { 39715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 39725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = Expr.order.length; i < l; i++ ) { 39755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match, 39765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = Expr.order[i]; 39775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { 39795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var left = match[1]; 39805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match.splice( 1, 1 ); 39815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( left.substr( left.length - 1 ) !== "\\" ) { 39835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[1] = (match[1] || "").replace( rBackslash, "" ); 39845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = Expr.find[ type ]( match, context, isXML ); 39855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( set != null ) { 39875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = expr.replace( Expr.match[ type ], "" ); 39885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 39895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !set ) { 39955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set = typeof context.getElementsByTagName !== "undefined" ? 39965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context.getElementsByTagName( "*" ) : 39975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) []; 39985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 39995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { set: set, expr: expr }; 40015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 40025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.filter = function( expr, set, inplace, not ) { 40045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match, anyFound, 40055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old = expr, 40065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = [], 40075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop = set, 40085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); 40095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( expr && set.length ) { 40115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in Expr.filter ) { 40125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { 40135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var found, item, 40145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter = Expr.filter[ type ], 40155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = match[1]; 40165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = false; 40185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match.splice(1,1); 40205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( left.substr( left.length - 1 ) === "\\" ) { 40225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 40235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( curLoop === result ) { 40265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = []; 40275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( Expr.preFilter[ type ] ) { 40305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); 40315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !match ) { 40335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = found = true; 40345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( match === true ) { 40365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 40375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match ) { 40415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; (item = curLoop[i]) != null; i++ ) { 40425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( item ) { 40435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) found = filter( item, match, i, curLoop ); 40445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pass = not ^ !!found; 40455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( inplace && found != null ) { 40475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pass ) { 40485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = true; 40495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 40515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop[i] = false; 40525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( pass ) { 40555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push( item ); 40565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anyFound = true; 40575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( found !== undefined ) { 40635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) { 40645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop = result; 40655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = expr.replace( Expr.match[ type ], "" ); 40685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !anyFound ) { 40705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 40715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 40745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Improper expression 40795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( expr === old ) { 40805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( anyFound == null ) { 40815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.error( expr ); 40825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 40845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 40855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old = expr; 40895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 40905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return curLoop; 40925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 40935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.error = function( msg ) { 40955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw "Syntax error, unrecognized expression: " + msg; 40965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 40975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var Expr = Sizzle.selectors = { 40995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) order: [ "ID", "NAME", "TAG" ], 41005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match: { 41025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, 41035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, 41045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, 41055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, 41065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, 41075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, 41085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, 41095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ 41105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) leftMatch: {}, 41135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrMap: { 41155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "class": "className", 41165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "for": "htmlFor" 41175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) attrHandle: { 41205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) href: function( elem ) { 41215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute( "href" ); 41225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: function( elem ) { 41245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute( "type" ); 41255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) relative: { 41295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "+": function(checkSet, part){ 41305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isPartStr = typeof part === "string", 41315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isTag = isPartStr && !rNonWord.test( part ), 41325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPartStrNotTag = isPartStr && !isTag; 41335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isTag ) { 41355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = part.toLowerCase(); 41365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { 41395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (elem = checkSet[i]) ) { 41405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} 41415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? 41435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem || false : 41445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem === part; 41455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStrNotTag ) { 41495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( part, checkSet, true ); 41505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ">": function( checkSet, part ) { 41545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem, 41555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isPartStr = typeof part === "string", 41565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 41575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) l = checkSet.length; 41585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStr && !rNonWord.test( part ) ) { 41605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = part.toLowerCase(); 41615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < l; i++ ) { 41635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = checkSet[i]; 41645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 41665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = elem.parentNode; 41675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; 41685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 41725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; i < l; i++ ) { 41735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = checkSet[i]; 41745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 41765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = isPartStr ? 41775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode : 41785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode === part; 41795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isPartStr ) { 41835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.filter( part, checkSet, true ); 41845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 41875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "": function(checkSet, part, isXML){ 41895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeCheck, 41905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doneName = done++, 41915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirCheck; 41925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof part === "string" && !rNonWord.test( part ) ) { 41945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = part.toLowerCase(); 41955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeCheck = part; 41965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirNodeCheck; 41975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 41985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 41995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); 42005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "~": function( checkSet, part, isXML ) { 42035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeCheck, 42045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doneName = done++, 42055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirCheck; 42065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof part === "string" && !rNonWord.test( part ) ) { 42085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) part = part.toLowerCase(); 42095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeCheck = part; 42105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn = dirNodeCheck; 42115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); 42145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) find: { 42185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function( match, context, isXML ) { 42195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementById !== "undefined" && !isXML ) { 42205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var m = context.getElementById(match[1]); 42215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check parentNode to catch when Blackberry 4.6 returns 42225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nodes that are no longer in the document #6963 42235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m && m.parentNode ? [m] : []; 42245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) NAME: function( match, context ) { 42285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementsByName !== "undefined" ) { 42295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], 42305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = context.getElementsByName( match[1] ); 42315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = results.length; i < l; i++ ) { 42335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i].getAttribute("name") === match[1] ) { 42345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( results[i] ); 42355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret.length === 0 ? null : ret; 42395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function( match, context ) { 42435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementsByTagName !== "undefined" ) { 42445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return context.getElementsByTagName( match[1] ); 42455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) preFilter: { 42495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: function( match, curLoop, inplace, result, not, isXML ) { 42505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = " " + match[1].replace( rBackslash, "" ) + " "; 42515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isXML ) { 42535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 42545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { 42575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 42585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { 42595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) { 42605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push( elem ); 42615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( inplace ) { 42645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLoop[i] = false; 42655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 42705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function( match ) { 42735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[1].replace( rBackslash, "" ); 42745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function( match, curLoop ) { 42775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[1].replace( rBackslash, "" ).toLowerCase(); 42785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 42795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: function( match ) { 42815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] === "nth" ) { 42825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !match[2] ) { 42835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.error( match[0] ); 42845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[2] = match[2].replace(/^\+|\s*/g, ''); 42875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' 42895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( 42905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || 42915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); 42925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 42935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // calculate the numbers (first)n+(last) including if they are negative 42945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[2] = (test[1] + (test[2] || 1)) - 0; 42955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[3] = test[3] - 0; 42965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 42975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ( match[2] ) { 42985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.error( match[0] ); 42995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // TODO: Move to normal caching system 43025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[0] = done++; 43035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 43055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: function( match, curLoop, inplace, result, not, isXML ) { 43085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1] = match[1].replace( rBackslash, "" ); 43095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isXML && Expr.attrMap[name] ) { 43115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[1] = Expr.attrMap[name]; 43125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle if an un-quoted value was used 43155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); 43165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[2] === "~=" ) { 43185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[4] = " " + match[4] + " "; 43195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 43225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: function( match, curLoop, inplace, result, not ) { 43255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] === "not" ) { 43265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're dealing with a complex expression, or a simple one 43275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { 43285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match[3] = Sizzle(match[3], null, null, curLoop); 43295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 43315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); 43325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !inplace ) { 43345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.push.apply( result, ret ); 43355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 43385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { 43415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 43425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 43455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: function( match ) { 43485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match.unshift( true ); 43495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match; 43515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filters: { 43555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enabled: function( elem ) { 43565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.disabled === false && elem.type !== "hidden"; 43575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) disabled: function( elem ) { 43605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.disabled === true; 43615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checked: function( elem ) { 43645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.checked === true; 43655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selected: function( elem ) { 43685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Accessing this property makes selected-by-default 43695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // options in Safari work properly 43705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.parentNode ) { 43715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.selectedIndex; 43725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 43735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.selected === true; 43755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent: function( elem ) { 43785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!elem.firstChild; 43795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty: function( elem ) { 43825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !elem.firstChild; 43835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) has: function( elem, i, match ) { 43865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!Sizzle( match[3], elem ).length; 43875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) header: function( elem ) { 43905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (/h\d/i).test( elem.nodeName ); 43915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 43935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: function( elem ) { 43945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var attr = elem.getAttribute( "type" ), type = elem.type; 43955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) 43965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // use getAttribute instead to test this case 43975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); 43985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 43995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) radio: function( elem ) { 44015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; 44025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkbox: function( elem ) { 44055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; 44065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) file: function( elem ) { 44095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; 44105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) password: function( elem ) { 44135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; 44145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) submit: function( elem ) { 44175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = elem.nodeName.toLowerCase(); 44185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (name === "input" || name === "button") && "submit" === elem.type; 44195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) image: function( elem ) { 44225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; 44235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) reset: function( elem ) { 44265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = elem.nodeName.toLowerCase(); 44275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (name === "input" || name === "button") && "reset" === elem.type; 44285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) button: function( elem ) { 44315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = elem.nodeName.toLowerCase(); 44325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return name === "input" && "button" === elem.type || name === "button"; 44335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) input: function( elem ) { 44365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (/input|select|textarea|button/i).test( elem.nodeName ); 44375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focus: function( elem ) { 44405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem === elem.ownerDocument.activeElement; 44415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 44425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setFilters: { 44445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first: function( elem, i ) { 44455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === 0; 44465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) last: function( elem, i, match, array ) { 44495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === array.length - 1; 44505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) even: function( elem, i ) { 44535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i % 2 === 0; 44545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) odd: function( elem, i ) { 44575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i % 2 === 1; 44585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lt: function( elem, i, match ) { 44615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i < match[3] - 0; 44625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) gt: function( elem, i, match ) { 44655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i > match[3] - 0; 44665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nth: function( elem, i, match ) { 44695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[3] - 0 === i; 44705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) eq: function( elem, i, match ) { 44735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match[3] - 0 === i; 44745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 44755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 44765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter: { 44775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PSEUDO: function( elem, match, i, array ) { 44785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1], 44795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter = Expr.filters[ name ]; 44805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( filter ) { 44825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return filter( elem, i, match, array ); 44835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( name === "contains" ) { 44855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; 44865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( name === "not" ) { 44885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var not = match[3]; 44895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var j = 0, l = not.length; j < l; j++ ) { 44915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not[j] === elem ) { 44925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 44935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 44945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 44955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 44975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 44995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.error( name ); 45005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 45025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CHILD: function( elem, match ) { 45045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = match[1], 45055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node = elem; 45065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch ( type ) { 45085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "only": 45095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "first": 45105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (node = node.previousSibling) ) { 45115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) { 45125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 45135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "first" ) { 45175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 45185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node = elem; 45215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "last": 45235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (node = node.nextSibling) ) { 45245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) { 45255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 45265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 45305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "nth": 45325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var first = match[2], 45335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) last = match[3]; 45345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first === 1 && last === 0 ) { 45365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 45375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doneName = match[0], 45405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent = elem.parentNode; 45415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { 45435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var count = 0; 45445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( node = parent.firstChild; node; node = node.nextSibling ) { 45465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( node.nodeType === 1 ) { 45475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node.nodeIndex = ++count; 45485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent.sizcache = doneName; 45525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var diff = elem.nodeIndex - last; 45555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first === 0 ) { 45575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return diff === 0; 45585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 45605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ( diff % first === 0 && diff / first >= 0 ); 45615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 45635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 45645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ID: function( elem, match ) { 45665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1 && elem.getAttribute("id") === match; 45675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 45685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TAG: function( elem, match ) { 45705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; 45715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 45725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CLASS: function( elem, match ) { 45745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (" " + (elem.className || elem.getAttribute("class")) + " ") 45755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .indexOf( match ) > -1; 45765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 45775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ATTR: function( elem, match ) { 45795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[1], 45805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = Expr.attrHandle[ name ] ? 45815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.attrHandle[ name ]( elem ) : 45825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] != null ? 45835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ name ] : 45845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.getAttribute( name ), 45855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = result + "", 45865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = match[2], 45875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) check = match[4]; 45885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 45895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result == null ? 45905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "!=" : 45915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "=" ? 45925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value === check : 45935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "*=" ? 45945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.indexOf(check) >= 0 : 45955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "~=" ? 45965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (" " + value + " ").indexOf(check) >= 0 : 45975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !check ? 45985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value && result !== false : 45995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "!=" ? 46005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value !== check : 46015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "^=" ? 46025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.indexOf(check) === 0 : 46035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "$=" ? 46045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value.substr(value.length - check.length) === check : 46055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type === "|=" ? 46065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value === check || value.substr(0, check.length + 1) === check + "-" : 46075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) false; 46085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 46095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS: function( elem, match, i, array ) { 46115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var name = match[2], 46125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter = Expr.setFilters[ name ]; 46135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( filter ) { 46155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return filter( elem, i, match, array ); 46165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 46205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var origPOS = Expr.match.POS, 46225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fescape = function(all, num){ 46235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "\\" + (num - 0 + 1); 46245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 46255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)for ( var type in Expr.match ) { 46275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); 46285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); 46295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 46305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var makeArray = function( array, results ) { 46325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) array = Array.prototype.slice.call( array, 0 ); 46335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results ) { 46355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.push.apply( results, array ); 46365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 46375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return array; 46405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 46415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Perform a simple check to determine if the browser is capable of 46435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// converting a NodeList to an array using builtin methods. 46445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Also verifies that the returned array holds DOM nodes 46455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// (which is not the case in the Blackberry browser) 46465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)try { 46475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; 46485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Provide a fallback method if it does not work 46505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} catch( e ) { 46515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) makeArray = function( array, results ) { 46525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var i = 0, 46535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = results || []; 46545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( toString.call(array) === "[object Array]" ) { 46565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Array.prototype.push.apply( ret, array ); 46575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 46595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof array.length === "number" ) { 46605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var l = array.length; i < l; i++ ) { 46615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( array[i] ); 46625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 46655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; array[i]; i++ ) { 46665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( array[i] ); 46675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 46725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 46735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 46745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var sortOrder, siblingCheck; 46765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.compareDocumentPosition ) { 46785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortOrder = function( a, b ) { 46795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( a === b ) { 46805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = true; 46815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 46825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { 46855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a.compareDocumentPosition ? -1 : 1; 46865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 46875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a.compareDocumentPosition(b) & 4 ? -1 : 1; 46895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 46905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else { 46925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortOrder = function( a, b ) { 46935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The nodes are identical, we can exit early 46945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( a === b ) { 46955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasDuplicate = true; 46965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 0; 46975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 46985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fallback to using sourceIndex (in IE) if it's available on both nodes 46995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( a.sourceIndex && b.sourceIndex ) { 47005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a.sourceIndex - b.sourceIndex; 47015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var al, bl, 47045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ap = [], 47055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bp = [], 47065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) aup = a.parentNode, 47075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bup = b.parentNode, 47085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = aup; 47095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the nodes are siblings (or identical) we can do a quick check 47115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( aup === bup ) { 47125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return siblingCheck( a, b ); 47135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If no parents were found then the nodes are disconnected 47155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !aup ) { 47165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 47175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !bup ) { 47195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1; 47205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise they're somewhere else in the tree so we need 47235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to build up a full list of the parentNodes for comparison 47245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur ) { 47255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ap.unshift( cur ); 47265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode; 47275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = bup; 47305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur ) { 47325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bp.unshift( cur ); 47335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode; 47345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) al = ap.length; 47375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bl = bp.length; 47385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start walking down the tree looking for a discrepancy 47405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; i < al && i < bl; i++ ) { 47415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ap[i] !== bp[i] ) { 47425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return siblingCheck( ap[i], bp[i] ); 47435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We ended someplace up the tree so do a sibling check 47475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return i === al ? 47485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) siblingCheck( a, bp[i], -1 ) : 47495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) siblingCheck( ap[i], b, 1 ); 47505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 47515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) siblingCheck = function( a, b, ret ) { 47535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( a === b ) { 47545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 47555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cur = a.nextSibling; 47585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur ) { 47605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur === b ) { 47615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return -1; 47625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.nextSibling; 47655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return 1; 47685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 47695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 47705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Utility function for retreiving the text value of an array of DOM nodes 47725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.getText = function( elems ) { 47735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = "", elem; 47745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; elems[i]; i++ ) { 47765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elems[i]; 47775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the text from text nodes and CDATA nodes 47795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 3 || elem.nodeType === 4 ) { 47805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret += elem.nodeValue; 47815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Traverse everything else, except comment nodes 47835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.nodeType !== 8 ) { 47845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret += Sizzle.getText( elem.childNodes ); 47855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 47875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 47895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 47905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Check to see if the browser returns elements by name when 47925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// querying by getElementById (and provide a workaround) 47935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 47945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We're going to inject a fake input element with a specified name 47955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var form = document.createElement("div"), 47965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = "script" + (new Date()).getTime(), 47975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root = document.documentElement; 47985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) form.innerHTML = "<a name='" + id + "'/>"; 48005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Inject it into the root element, check its status, and remove it quickly 48025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.insertBefore( form, root.firstChild ); 48035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The workaround has to do additional checks after a getElementById 48055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Which slows things down for other browsers (hence the branching) 48065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( document.getElementById( id ) ) { 48075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.ID = function( match, context, isXML ) { 48085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementById !== "undefined" && !isXML ) { 48095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var m = context.getElementById(match[1]); 48105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return m ? 48125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? 48135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [m] : 48145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) undefined : 48155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) []; 48165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 48185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.filter.ID = function( elem, match ) { 48205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 48215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1 && node && node.nodeValue === match; 48235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 48245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root.removeChild( form ); 48275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // release memory in IE 48295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root = form = null; 48305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 48315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 48335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if the browser returns only elements 48345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // when doing getElementsByTagName("*") 48355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a fake element 48375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 48385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.appendChild( document.createComment("") ); 48395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure no comments are found 48415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.getElementsByTagName("*").length > 0 ) { 48425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.TAG = function( match, context ) { 48435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var results = context.getElementsByTagName( match[1] ); 48445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Filter out possible comments 48465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] === "*" ) { 48475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tmp = []; 48485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0; results[i]; i++ ) { 48505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( results[i].nodeType === 1 ) { 48515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp.push( results[i] ); 48525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = tmp; 48565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return results; 48595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 48605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if an attribute returns normalized href attributes 48635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<a href='#'></a>"; 48645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && 48665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.firstChild.getAttribute("href") !== "#" ) { 48675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.attrHandle.href = function( elem ) { 48695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getAttribute( "href", 2 ); 48705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 48715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // release memory in IE 48745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = null; 48755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 48765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.querySelectorAll ) { 48785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (function(){ 48795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var oldSizzle = Sizzle, 48805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = document.createElement("div"), 48815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = "__sizzle__"; 48825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<p class='TEST'></p>"; 48845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Safari can't handle uppercase or unicode characters when 48865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in quirks mode. 48875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { 48885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 48895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 48905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle = function( query, context, extra, seed ) { 48925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 48935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only use querySelectorAll on non-XML documents 48955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (ID selectors don't work in non-HTML documents) 48965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !seed && !Sizzle.isXML(context) ) { 48975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See if we find a selector to speed up 48985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); 48995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { 49015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Speed-up: Sizzle("TAG") 49025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match[1] ) { 49035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( context.getElementsByTagName( query ), extra ); 49045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Speed-up: Sizzle(".CLASS") 49065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { 49075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( context.getElementsByClassName( match[2] ), extra ); 49085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( context.nodeType === 9 ) { 49125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Speed-up: Sizzle("body") 49135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The body element only exists once, optimize finding it 49145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( query === "body" && context.body ) { 49155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( [ context.body ], extra ); 49165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Speed-up: Sizzle("#ID") 49185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( match && match[3] ) { 49195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = context.getElementById( match[3] ); 49205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check parentNode to catch when Blackberry 4.6 returns 49225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nodes that are no longer in the document #6963 49235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem && elem.parentNode ) { 49245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the case where IE and Opera return items 49255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // by name instead of ID 49265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.id === match[3] ) { 49275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( [ elem ], extra ); 49285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 49315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( [], extra ); 49325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 49365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( context.querySelectorAll(query), extra ); 49375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(qsaError) {} 49385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // qSA works strangely on Element-rooted queries 49405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can work around this by specifying an extra ID on the root 49415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and working up from there (Thanks to Andrew Dupont for the technique) 49425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE 8 doesn't work on object elements 49435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { 49445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var oldContext = context, 49455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old = context.getAttribute( "id" ), 49465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nid = old || id, 49475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasParent = context.parentNode, 49485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) relativeHierarchySelector = /^\s*[+~]/.test( query ); 49495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !old ) { 49515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context.setAttribute( "id", nid ); 49525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 49535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nid = nid.replace( /'/g, "\\$&" ); 49545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( relativeHierarchySelector && hasParent ) { 49565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context.parentNode; 49575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 49605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !relativeHierarchySelector || hasParent ) { 49615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); 49625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(pseudoError) { 49655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } finally { 49665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !old ) { 49675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) oldContext.removeAttribute( "id" ); 49685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return oldSizzle(query, context, extra, seed); 49745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 49755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var prop in oldSizzle ) { 49775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle[ prop ] = oldSizzle[ prop ]; 49785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 49795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // release memory in IE 49815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = null; 49825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })(); 49835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 49845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 49865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var html = document.documentElement, 49875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; 49885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( matches ) { 49905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if it's possible to do matchesSelector 49915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // on a disconnected node (IE 9 fails this) 49925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), 49935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pseudoWorks = false; 49945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 49965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This should fail with an exception 49975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Gecko does not error, returns false instead 49985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matches.call( document.documentElement, "[test!='']:sizzle" ); 49995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( pseudoError ) { 50015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) pseudoWorks = true; 50025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.matchesSelector = function( node, expr ) { 50055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that attribute selectors are quoted 50065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); 50075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !Sizzle.isXML( node ) ) { 50095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 50105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { 50115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = matches.call( node, expr ); 50125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE 9's matchesSelector returns false on disconnected nodes 50145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret || !disconnectedMatch || 50155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // As well, disconnected nodes are said to be in a document 50165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // fragment in IE 9, so check for that 50175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) node.document && node.document.nodeType !== 11 ) { 50185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 50195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) {} 50225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle(expr, null, null, [node]).length > 0; 50255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 50265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 50285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 50305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var div = document.createElement("div"); 50315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = "<div class='test e'></div><div class='test'></div>"; 50335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Opera can't find a second classname (in 9.6) 50355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Also, make sure that getElementsByClassName actually exists 50365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { 50375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 50385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Safari caches class attributes, doesn't catch changes (in 3.2) 50415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.lastChild.className = "e"; 50425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( div.getElementsByClassName("e").length === 1 ) { 50445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 50455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.order.splice(1, 0, "CLASS"); 50485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Expr.find.CLASS = function( match, context, isXML ) { 50495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { 50505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return context.getElementsByClassName(match[1]); 50515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 50535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // release memory in IE 50555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = null; 50565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 50575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 50595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 50605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 50615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 50635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = false; 50645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 50665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem ) { 50685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.sizcache === doneName ) { 50695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = checkSet[elem.sizset]; 50705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 50715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 && !isXML ){ 50745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 50755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 50765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeName.toLowerCase() === cur ) { 50795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = elem; 50805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 50815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 50845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = match; 50875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 50895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 50905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { 50925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = checkSet.length; i < l; i++ ) { 50935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = checkSet[i]; 50945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem ) { 50965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match = false; 50975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 50985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 50995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem ) { 51015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.sizcache === doneName ) { 51025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = checkSet[elem.sizset]; 51035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 51045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 ) { 51075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isXML ) { 51085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizcache = doneName; 51095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.sizset = i; 51105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof cur !== "string" ) { 51135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === cur ) { 51145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = true; 51155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 51165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { 51195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = elem; 51205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 51215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem[dir]; 51255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkSet[i] = match; 51285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 51315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.contains ) { 51335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.contains = function( a, b ) { 51345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a !== b && (a.contains ? a.contains(b) : true); 51355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 51365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else if ( document.documentElement.compareDocumentPosition ) { 51385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.contains = function( a, b ) { 51395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!(a.compareDocumentPosition(b) & 16); 51405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 51415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else { 51435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle.contains = function() { 51445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 51455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 51465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 51475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Sizzle.isXML = function( elem ) { 51495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // documentElement is verified for cases where it doesn't yet exist 51505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (such as loading iframes in IE - #4833) 51515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; 51525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return documentElement ? documentElement.nodeName !== "HTML" : false; 51545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 51555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var posProcess = function( selector, context ) { 51575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match, 51585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmpSet = [], 51595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) later = "", 51605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root = context.nodeType ? [context] : context; 51615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Position selectors must be done after the filter 51635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // And so must :not(positional) so we move all PSEUDOs to the end 51645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (match = Expr.match.PSEUDO.exec( selector )) ) { 51655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) later += match[0]; 51665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = selector.replace( Expr.match.PSEUDO, "" ); 51675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = Expr.relative[selector] ? selector + "*" : selector; 51705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = root.length; i < l; i++ ) { 51725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Sizzle( selector, root[i], tmpSet ); 51735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 51745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Sizzle.filter( later, tmpSet ); 51765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 51775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// EXPOSE 51795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.find = Sizzle; 51805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr = Sizzle.selectors; 51815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.expr[":"] = jQuery.expr.filters; 51825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.unique = Sizzle.uniqueSort; 51835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.text = Sizzle.getText; 51845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.isXMLDoc = Sizzle.isXML; 51855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.contains = Sizzle.contains; 51865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(); 51895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var runtil = /Until$/, 51925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rparentsprev = /^(?:parents|prevUntil|prevAll)/, 51935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Note: This RegExp should be improved, or likely pulled from Sizzle 51945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rmultiselector = /,/, 51955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSimple = /^.[^:#\[\.,]*$/, 51965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slice = Array.prototype.slice, 51975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) POS = jQuery.expr.match.POS, 51985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // methods guaranteed to produce a unique set when starting from a unique set 51995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) guaranteedUnique = { 52005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) children: true, 52015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents: true, 52025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) next: true, 52035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prev: true 52045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 52055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 52075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) find: function( selector ) { 52085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this, 52095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, l; 52105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof selector !== "string" ) { 52125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery( selector ).filter(function() { 52135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = self.length; i < l; i++ ) { 52145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.contains( self[ i ], this ) ) { 52155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 52165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 52195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = this.pushStack( "", "find", selector ), 52225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length, n, r; 52235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = this.length; i < l; i++ ) { 52255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = ret.length; 52265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.find( selector, this[i], ret ); 52275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( i > 0 ) { 52295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the results are unique 52305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( n = length; n < ret.length; n++ ) { 52315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( r = 0; r < length; r++ ) { 52325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret[r] === ret[n] ) { 52335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.splice(n--, 1); 52345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 52355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 52425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 52435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) has: function( target ) { 52455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var targets = jQuery( target ); 52465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.filter(function() { 52475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = targets.length; i < l; i++ ) { 52485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.contains( this, targets[i] ) ) { 52495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 52505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 52535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 52545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) not: function( selector ) { 52565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( winnow(this, selector, false), "not", selector); 52575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 52585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter: function( selector ) { 52605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( winnow(this, selector, true), "filter", selector ); 52615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 52625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) is: function( selector ) { 52645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !!selector && ( typeof selector === "string" ? 52655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.filter( selector, this ).length > 0 : 52665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.filter( selector ).length > 0 ); 52675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 52685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closest: function( selectors, context ) { 52705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], i, l, cur = this[0]; 52715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Array 52735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( selectors ) ) { 52745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match, selector, 52755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matches = {}, 52765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) level = 1; 52775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur && selectors.length ) { 52795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = selectors.length; i < l; i++ ) { 52805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = selectors[i]; 52815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !matches[ selector ] ) { 52835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matches[ selector ] = POS.test( selector ) ? 52845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( selector, context || this.context ) : 52855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector; 52865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur && cur.ownerDocument && cur !== context ) { 52905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( selector in matches ) { 52915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = matches[ selector ]; 52925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { 52945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push({ selector: selector, elem: cur, level: level }); 52955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 52975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode; 52995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) level++; 53005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 53045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // String 53075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pos = POS.test( selectors ) || typeof selectors !== "string" ? 53085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( selectors, context || this.context ) : 53095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 0; 53105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0, l = this.length; i < l; i++ ) { 53125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = this[i]; 53135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur ) { 53155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { 53165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( cur ); 53175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 53185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 53205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur.parentNode; 53215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { 53225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 53235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = ret.length > 1 ? jQuery.unique( ret ) : ret; 53295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( ret, "closest", selectors ); 53315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determine the position of an element within 53345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the matched set of elements 53355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index: function( elem ) { 53365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // No argument, return index in parent 53385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 53395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; 53405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // index in selector 53435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof elem === "string" ) { 53445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.inArray( this[0], jQuery( elem ) ); 53455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Locate the position of the desired element 53485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.inArray( 53495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If it receives a jQuery object, the first element is used 53505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.jquery ? elem[0] : elem, this ); 53515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add: function( selector, context ) { 53545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var set = typeof selector === "string" ? 53555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( selector, context ) : 53565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), 53575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all = jQuery.merge( this.get(), set ); 53585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? 53605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) all : 53615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.unique( all ) ); 53625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) andSelf: function() { 53655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.add( this.prevObject ); 53665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 53675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 53685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// A painfully simple check to see if an element is disconnected 53705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// from a document (should be improved, where feasible). 53715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function isDisconnected( node ) { 53725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !node || !node.parentNode || node.parentNode.nodeType === 11; 53735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 53745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 53755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 53765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent: function( elem ) { 53775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parent = elem.parentNode; 53785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return parent && parent.nodeType !== 11 ? parent : null; 53795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parents: function( elem ) { 53815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "parentNode" ); 53825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentsUntil: function( elem, i, until ) { 53845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "parentNode", until ); 53855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) next: function( elem ) { 53875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.nth( elem, 2, "nextSibling" ); 53885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prev: function( elem ) { 53905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.nth( elem, 2, "previousSibling" ); 53915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nextAll: function( elem ) { 53935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "nextSibling" ); 53945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevAll: function( elem ) { 53965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "previousSibling" ); 53975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 53985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nextUntil: function( elem, i, until ) { 53995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "nextSibling", until ); 54005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevUntil: function( elem, i, until ) { 54025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.dir( elem, "previousSibling", until ); 54035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) siblings: function( elem ) { 54055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.sibling( elem.parentNode.firstChild, elem ); 54065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) children: function( elem ) { 54085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.sibling( elem.firstChild ); 54095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents: function( elem ) { 54115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.nodeName( elem, "iframe" ) ? 54125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.contentDocument || elem.contentWindow.document : 54135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.makeArray( elem.childNodes ); 54145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, fn ) { 54165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( until, selector ) { 54175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = jQuery.map( this, fn, until ), 54185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The variable 'args' was introduced in 54195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // https://github.com/jquery/jquery/commit/52a0238 54205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. 54215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://code.google.com/p/v8/issues/detail?id=1050 54225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args = slice.call(arguments); 54235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !runtil.test( name ) ) { 54255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selector = until; 54265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( selector && typeof selector === "string" ) { 54295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.filter( selector, ret ); 54305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; 54335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { 54355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = ret.reverse(); 54365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( ret, name, args.join(",") ); 54395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 54405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 54415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 54435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter: function( expr, elems, not ) { 54445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( not ) { 54455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) expr = ":not(" + expr + ")"; 54465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elems.length === 1 ? 54495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : 54505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.find.matches(expr, elems); 54515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dir: function( elem, dir, until ) { 54545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var matched = [], 54555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = elem[ dir ]; 54565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { 54585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur.nodeType === 1 ) { 54595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matched.push( cur ); 54605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur = cur[dir]; 54625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return matched; 54645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nth: function( cur, result, dir, elem ) { 54675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result = result || 1; 54685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var num = 0; 54695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; cur; cur = cur[dir] ) { 54715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cur.nodeType === 1 && ++num === result ) { 54725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 54735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return cur; 54775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 54785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sibling: function( n, elem ) { 54805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var r = []; 54815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( ; n; n = n.nextSibling ) { 54835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( n.nodeType === 1 && n !== elem ) { 54845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) r.push( n ); 54855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return r; 54895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 54905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 54915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Implement the identical functionality for filter and not 54935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function winnow( elements, qualifier, keep ) { 54945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Can't pass null or undefined to indexOf in Firefox 4 54965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set to 0 to skip string check 54975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) qualifier = qualifier || 0; 54985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 54995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( qualifier ) ) { 55005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.grep(elements, function( elem, i ) { 55015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var retVal = !!qualifier.call( elem, i, elem ); 55025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return retVal === keep; 55035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( qualifier.nodeType ) { 55065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.grep(elements, function( elem, i ) { 55075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (elem === qualifier) === keep; 55085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( typeof qualifier === "string" ) { 55115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var filtered = jQuery.grep(elements, function( elem ) { 55125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.nodeType === 1; 55135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isSimple.test( qualifier ) ) { 55165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.filter(qualifier, filtered, !keep); 55175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 55185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) qualifier = jQuery.filter( qualifier, filtered ); 55195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.grep(elements, function( elem, i ) { 55235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (jQuery.inArray( elem, qualifier ) >= 0) === keep; 55245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 55265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, 55315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rleadingWhitespace = /^\s+/, 55325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, 55335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rtagName = /<([\w:]+)/, 55345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rtbody = /<tbody/i, 55355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rhtml = /<|&#?\w+;/, 55365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rnocache = /<(?:script|object|embed|option|style)/i, 55375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // checked="checked" or checked 55385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 55395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rscriptType = /\/(java|ecma)script/i, 55405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/, 55415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapMap = { 55425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) option: [ 1, "<select multiple='multiple'>", "</select>" ], 55435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) legend: [ 1, "<fieldset>", "</fieldset>" ], 55445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) thead: [ 1, "<table>", "</table>" ], 55455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tr: [ 2, "<table><tbody>", "</tbody></table>" ], 55465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 55475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], 55485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) area: [ 1, "<map>", "</map>" ], 55495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: [ 0, "", "" ] 55505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 55515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.optgroup = wrapMap.option; 55535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 55545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)wrapMap.th = wrapMap.td; 55555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// IE can't serialize <link> and <script> tags normally 55575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.htmlSerialize ) { 55585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapMap._default = [ 1, "div<div>", "</div>" ]; 55595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 55605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 55625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: function( text ) { 55635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction(text) ) { 55645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i) { 55655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery( this ); 55665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.text( text.call(this, i, self.text()) ); 55685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof text !== "object" && text !== undefined ) { 55725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); 55735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.text( this ); 55765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 55775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapAll: function( html ) { 55795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( html ) ) { 55805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i) { 55815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).wrapAll( html.call(this, i) ); 55825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 55835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 55865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The elements to wrap the target around 55875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); 55885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0].parentNode ) { 55905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap.insertBefore( this[0] ); 55915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap.map(function() { 55945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this; 55955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { 55975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem.firstChild; 55985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 55995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem; 56015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).append( this ); 56025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 56055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrapInner: function( html ) { 56085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( html ) ) { 56095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i) { 56105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).wrapInner( html.call(this, i) ); 56115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 56155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery( this ), 56165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents = self.contents(); 56175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( contents.length ) { 56195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents.wrapAll( html ); 56205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 56225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.append( html ); 56235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap: function( html ) { 56285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 56295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).wrapAll( html ); 56305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unwrap: function() { 56345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.parent().each(function() { 56355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.nodeName( this, "body" ) ) { 56365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).replaceWith( this.childNodes ); 56375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).end(); 56395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) append: function() { 56425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, true, function( elem ) { 56435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeType === 1 ) { 56445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.appendChild( elem ); 56455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prepend: function() { 56505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, true, function( elem ) { 56515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.nodeType === 1 ) { 56525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.insertBefore( elem, this.firstChild ); 56535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) before: function() { 56585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] && this[0].parentNode ) { 56595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, false, function( elem ) { 56605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode.insertBefore( elem, this ); 56615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( arguments.length ) { 56635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var set = jQuery(arguments[0]); 56645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set.push.apply( set, this.toArray() ); 56655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( set, "before", arguments ); 56665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) after: function() { 56705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] && this[0].parentNode ) { 56715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.domManip(arguments, false, function( elem ) { 56725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.parentNode.insertBefore( elem, this.nextSibling ); 56735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 56745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( arguments.length ) { 56755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var set = this.pushStack( this, "after", arguments ); 56765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set.push.apply( set, jQuery(arguments[0]).toArray() ); 56775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return set; 56785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // keepData is for internal use only--do not document 56825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) remove: function( selector, keepData ) { 56835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { 56845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { 56855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !keepData && elem.nodeType === 1 ) { 56865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cleanData( elem.getElementsByTagName("*") ); 56875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cleanData( [ elem ] ); 56885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.parentNode ) { 56915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.removeChild( elem ); 56925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 56955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 56975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 56985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty: function() { 57005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { 57015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove element nodes and prevent memory leaks 57025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType === 1 ) { 57035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cleanData( elem.getElementsByTagName("*") ); 57045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove any remaining nodes 57075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( elem.firstChild ) { 57085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeChild( elem.firstChild ); 57095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 57135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 57145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clone: function( dataAndEvents, deepDataAndEvents ) { 57165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 57175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 57185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.map( function () { 57205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 57215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 57225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 57235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: function( value ) { 57255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value === undefined ) { 57265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[0] && this[0].nodeType === 1 ? 57275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[0].innerHTML.replace(rinlinejQuery, "") : 57285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 57295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See if we can take a shortcut and just use innerHTML 57315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( typeof value === "string" && !rnocache.test( value ) && 57325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) && 57335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) { 57345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = value.replace(rxhtmlTag, "<$1></$2>"); 57365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 57385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length; i < l; i++ ) { 57395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove element nodes and prevent memory leaks 57405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[i].nodeType === 1 ) { 57415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cleanData( this[i].getElementsByTagName("*") ); 57425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i].innerHTML = value; 57435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If using innerHTML throws an exception, use the fallback method 57475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) { 57485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.empty().append( value ); 57495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( jQuery.isFunction( value ) ) { 57525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function(i){ 57535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery( this ); 57545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.html( value.call(this, i, self.html()) ); 57565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 57575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 57595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.empty().append( value ); 57605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 57635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 57645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) replaceWith: function( value ) { 57665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] && this[0].parentNode ) { 57675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that the elements are removed from the DOM before they are inserted 57685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // this can help fix replacing a parent with child elements 57695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( value ) ) { 57705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i) { 57715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery(this), old = self.html(); 57725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.replaceWith( value.call( this, i, old ) ); 57735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 57745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof value !== "string" ) { 57775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = jQuery( value ).detach(); 57785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 57815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var next = this.nextSibling, 57825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent = this.parentNode; 57835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this ).remove(); 57855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( next ) { 57875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(next).before( value ); 57885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 57895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(parent).append( value ); 57905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 57925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 57935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.length ? 57945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : 57955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this; 57965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 57975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 57985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 57995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) detach: function( selector ) { 58005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.remove( selector, true ); 58015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 58025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) domManip: function( args, table, callback ) { 58045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var results, first, fragment, parent, 58055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = args[0], 58065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scripts = []; 58075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can't cloneNode fragments that contain checked, in WebKit 58095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) { 58105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 58115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this).domManip( args, table, callback, true ); 58125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 58135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction(value) ) { 58165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function(i) { 58175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery(this); 58185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[0] = value.call(this, i, table ? self.html() : undefined); 58195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.domManip( args, table, callback ); 58205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 58215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[0] ) { 58245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent = value && value.parentNode; 58255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're in a fragment, just use that instead of building a new one 58275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) { 58285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = { fragment: parent }; 58295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 58315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results = jQuery.buildFragment( args, this, scripts ); 58325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment = results.fragment; 58355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fragment.childNodes.length === 1 ) { 58375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first = fragment = fragment.firstChild; 58385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 58395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) first = fragment.firstChild; 58405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( first ) { 58435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) table = table && jQuery.nodeName( first, "tr" ); 58445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) { 58465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback.call( 58475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) table ? 58485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) root(this[i], first) : 58495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i], 58505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that we do not leak memory by inadvertently discarding 58515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the original fragment (which might have attached data) instead of 58525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // using it; in addition, use the original fragment object for the last 58535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // item instead of first because it can end up being emptied incorrectly 58545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in certain situations (Bug #8070). 58555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fragments from the fragment cache must always be cloned and never used 58565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in place. 58575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) results.cacheable || (l > 1 && i < lastIndex) ? 58585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.clone( fragment, true, true ) : 58595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment 58605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 58615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( scripts.length ) { 58655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( scripts, evalScript ); 58665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 58705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 58725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function root( elem, cur ) { 58745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.nodeName(elem, "table") ? 58755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (elem.getElementsByTagName("tbody")[0] || 58765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.appendChild(elem.ownerDocument.createElement("tbody"))) : 58775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem; 58785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 58795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function cloneCopyEvent( src, dest ) { 58815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { 58835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 58845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 58855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var internalKey = jQuery.expando, 58875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) oldData = jQuery.data( src ), 58885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curData = jQuery.data( dest, oldData ); 58895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Switch to use the internal data object, if it exists, for the next 58915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // stage of data copying 58925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (oldData = oldData[ internalKey ]) ) { 58935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var events = oldData.events; 58945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curData = curData[ internalKey ] = jQuery.extend({}, oldData); 58955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 58965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( events ) { 58975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete curData.handle; 58985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curData.events = {}; 58995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in events ) { 59015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = events[ type ].length; i < l; i++ ) { 59025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data ); 59035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 59085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function cloneFixAttributes( src, dest ) { 59105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var nodeName; 59115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We do not need to do anything for non-Elements 59135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dest.nodeType !== 1 ) { 59145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 59155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // clearAttributes removes the attributes, which we don't want, 59185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // but also removes the attachEvent events, which we *do* want 59195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dest.clearAttributes ) { 59205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.clearAttributes(); 59215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // mergeAttributes, in contrast, only merges back on the 59245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // original attributes, not the events 59255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dest.mergeAttributes ) { 59265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.mergeAttributes( src ); 59275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeName = dest.nodeName.toLowerCase(); 59305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6-8 fail to clone children inside object elements that use 59325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // the proprietary classid attribute value (rather than the type 59335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // attribute) to identify the type of content to display 59345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( nodeName === "object" ) { 59355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.outerHTML = src.outerHTML; 59365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) { 59385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6-8 fails to persist the checked state of a cloned checkbox 59395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // or radio button. Worse, IE6-7 fail to give the cloned element 59405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // a checked appearance if the defaultChecked value isn't also set 59415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( src.checked ) { 59425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.defaultChecked = dest.checked = src.checked; 59435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6-7 get confused and end up setting the value of a cloned 59465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // checkbox/radio button to an empty string instead of "on" 59475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dest.value !== src.value ) { 59485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.value = src.value; 59495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6-8 fails to return the selected option to the default selected 59525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // state when cloning options 59535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( nodeName === "option" ) { 59545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.selected = src.defaultSelected; 59555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE6-8 fails to set the defaultValue to the correct value when 59575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // cloning other types of input fields 59585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( nodeName === "input" || nodeName === "textarea" ) { 59595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.defaultValue = src.defaultValue; 59605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Event data gets referenced instead of copied if the expando 59635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // gets copied too 59645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dest.removeAttribute( jQuery.expando ); 59655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 59665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.buildFragment = function( args, nodes, scripts ) { 59685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fragment, cacheable, cacheresults, doc; 59695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nodes may contain either an explicit document object, 59715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // a jQuery collection or context object. 59725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If nodes[0] contains a valid object to assign to doc 59735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( nodes && nodes[0] ) { 59745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = nodes[0].ownerDocument || nodes[0]; 59755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Ensure that an attr object doesn't incorrectly stand in as a document object 59785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Chrome and Firefox seem to allow this to occur and will throw exception 59795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes #8950 59805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !doc.createDocumentFragment ) { 59815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = document; 59825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only cache "small" (1/2 KB) HTML strings that are associated with the main document 59855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cloning options loses the selected state, so don't cache them 59865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment 59875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache 59885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document && 59895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) { 59905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cacheable = true; 59925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cacheresults = jQuery.fragments[ args[0] ]; 59945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cacheresults && cacheresults !== 1 ) { 59955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment = cacheresults; 59965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 59985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 59995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !fragment ) { 60005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment = doc.createDocumentFragment(); 60015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.clean( args, doc, fragment, scripts ); 60025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( cacheable ) { 60055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1; 60065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { fragment: fragment, cacheable: cacheable }; 60095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 60105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fragments = {}; 60125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 60145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) appendTo: "append", 60155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prependTo: "prepend", 60165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insertBefore: "before", 60175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insertAfter: "after", 60185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) replaceAll: "replaceWith" 60195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, original ) { 60205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( selector ) { 60215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], 60225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insert = jQuery( selector ), 60235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parent = this.length === 1 && this[0].parentNode; 60245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { 60265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) insert[ original ]( this[0] ); 60275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 60285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 60305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, l = insert.length; i < l; i++ ) { 60315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elems = (i > 0 ? this.clone(true) : this).get(); 60325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( insert[i] )[ original ]( elems ); 60335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = ret.concat( elems ); 60345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.pushStack( ret, name, insert.selector ); 60375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 60395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 60405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getAll( elem ) { 60425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( "getElementsByTagName" in elem ) { 60435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.getElementsByTagName( "*" ); 60445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( "querySelectorAll" in elem ) { 60465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.querySelectorAll( "*" ); 60475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 60495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return []; 60505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 60525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Used in clean, fixes the defaultChecked property 60545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function fixDefaultChecked( elem ) { 60555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.type === "checkbox" || elem.type === "radio" ) { 60565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.defaultChecked = elem.checked; 60575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 60595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Finds all inputs and passes them to fixDefaultChecked 60605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function findInputs( elem ) { 60615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.nodeName( elem, "input" ) ) { 60625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fixDefaultChecked( elem ); 60635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( "getElementsByTagName" in elem ) { 60645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked ); 60655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 60675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 60695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clone: function( elem, dataAndEvents, deepDataAndEvents ) { 60705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var clone = elem.cloneNode(true), 60715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) srcElements, 60725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) destElements, 60735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i; 60745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && 60765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { 60775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE copies events bound via attachEvent when using cloneNode. 60785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Calling detachEvent on the clone will also remove the events 60795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // from the original. In order to get around this, we use some 60805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // proprietary methods to clear the events. Thanks to MooTools 60815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // guys for this hotness. 60825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cloneFixAttributes( elem, clone ); 60845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Using Sizzle here is crazy slow, so we use getElementsByTagName 60865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // instead 60875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) srcElements = getAll( elem ); 60885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) destElements = getAll( clone ); 60895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 60905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Weird iteration because IE will replace the length property 60915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // with an element if you are cloning the body and one of the 60925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // elements on the page has a name or id of "length" 60935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; srcElements[i]; ++i ) { 60945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Ensure that the destination node is not null; Fixes #9587 60955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( destElements[i] ) { 60965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cloneFixAttributes( srcElements[i], destElements[i] ); 60975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 60995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Copy the events from the original to the clone 61025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dataAndEvents ) { 61035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cloneCopyEvent( elem, clone ); 61045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deepDataAndEvents ) { 61065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) srcElements = getAll( elem ); 61075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) destElements = getAll( clone ); 61085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; srcElements[i]; ++i ) { 61105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cloneCopyEvent( srcElements[i], destElements[i] ); 61115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) srcElements = destElements = null; 61165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the cloned set 61185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return clone; 61195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 61205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clean: function( elems, context, fragment, scripts ) { 61225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var checkScriptType; 61235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context || document; 61255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // !context.createElement fails in IE with an error but returns typeof 'object' 61275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof context.createElement === "undefined" ) { 61285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context = context.ownerDocument || context[0] && context[0].ownerDocument || document; 61295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = [], j; 61325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { 61345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof elem === "number" ) { 61355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem += ""; 61365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 61395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 61405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert html string into DOM nodes 61435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof elem === "string" ) { 61445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !rhtml.test( elem ) ) { 61455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = context.createTextNode( elem ); 61465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 61475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fix "XHTML"-style tags in all browsers 61485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = elem.replace(rxhtmlTag, "<$1></$2>"); 61495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Trim whitespace, otherwise indexOf won't work as expected 61515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), 61525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap = wrapMap[ tag ] || wrapMap._default, 61535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) depth = wrap[0], 61545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = context.createElement("div"); 61555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Go to html and back, then peel off extra wrappers 61575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.innerHTML = wrap[1] + elem + wrap[2]; 61585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Move to the right depth 61605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( depth-- ) { 61615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div = div.lastChild; 61625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove IE's autoinserted <tbody> from table fragments 61655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.tbody ) { 61665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // String was a <table>, *may* have spurious <tbody> 61685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var hasBody = rtbody.test(elem), 61695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody = tag === "table" && !hasBody ? 61705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.firstChild && div.firstChild.childNodes : 61715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // String was a bare <thead> or <tfoot> 61735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wrap[1] === "<table>" && !hasBody ? 61745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.childNodes : 61755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) []; 61765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = tbody.length - 1; j >= 0 ; --j ) { 61785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { 61795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tbody[ j ].parentNode.removeChild( tbody[ j ] ); 61805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE completely kills leading whitespace when innerHTML is used 61855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { 61865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); 61875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = div.childNodes; 61905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 61925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 61935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Resets defaultChecked for any radios and checkboxes 61945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // about to be appended to the DOM in IE 6/7 (#8060) 61955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var len; 61965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.appendChecked ) { 61975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem[0] && typeof (len = elem.length) === "number" ) { 61985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( j = 0; j < len; j++ ) { 61995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) findInputs( elem[j] ); 62005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 62025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) findInputs( elem ); 62035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeType ) { 62075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.push( elem ); 62085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 62095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.merge( ret, elem ); 62105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fragment ) { 62145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkScriptType = function( elem ) { 62155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !elem.type || rscriptType.test( elem.type ); 62165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 62175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; ret[i]; i++ ) { 62185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { 62195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); 62205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 62225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret[i].nodeType === 1 ) { 62235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType ); 62245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); 62265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fragment.appendChild( ret[i] ); 62285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 62335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 62345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cleanData: function( elems ) { 62365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special, 62375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deleteExpando = jQuery.support.deleteExpando; 62385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { 62405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { 62415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) continue; 62425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) id = elem[ jQuery.expando ]; 62455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( id ) { 62475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = cache[ id ] && cache[ id ][ internalKey ]; 62485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data && data.events ) { 62505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var type in data.events ) { 62515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( special[ type ] ) { 62525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.remove( elem, type ); 62535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This is a shortcut to avoid jQuery.event.remove's overhead 62555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 62565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.removeEvent( elem, type, data.handle ); 62575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Null the DOM reference to avoid IE6/7/8 leak (#7054) 62615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( data.handle ) { 62625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data.handle.elem = null; 62635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deleteExpando ) { 62675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete elem[ jQuery.expando ]; 62685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.removeAttribute ) { 62705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.removeAttribute( jQuery.expando ); 62715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete cache[ id ]; 62745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 62785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function evalScript( i, elem ) { 62805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.src ) { 62815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ajax({ 62825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: elem.src, 62835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) async: false, 62845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: "script" 62855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 62865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 62875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) ); 62885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.parentNode ) { 62915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.parentNode.removeChild( elem ); 62925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 62935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 62945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 62985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var ralpha = /alpha\([^)]*\)/i, 62995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ropacity = /opacity=([^)]*)/, 63005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // fixed for IE9, see #8346 63015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rupper = /([A-Z]|^ms)/g, 63025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rnumpx = /^-?\d+(?:px)?$/i, 63035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rnum = /^-?\d/, 63045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rrelNum = /^([\-+])=([\-+.\de]+)/, 63055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 63075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssWidth = [ "Left", "Right" ], 63085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssHeight = [ "Top", "Bottom" ], 63095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curCSS, 63105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getComputedStyle, 63125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) currentStyle; 63135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.css = function( name, value ) { 63155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setting 'undefined' is a no-op 63165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( arguments.length === 2 && value === undefined ) { 63175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 63185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.access( this, name, value, true, function( elem, name, value ) { 63215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value !== undefined ? 63225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.style( elem, name, value ) : 63235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.css( elem, name ); 63245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 63255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 63265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 63285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add in style property hooks for overriding the default 63295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // behavior of getting and setting a style property 63305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssHooks: { 63315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity: { 63325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, computed ) { 63335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( computed ) { 63345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We should always get a number back from opacity 63355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret = curCSS( elem, "opacity", "opacity" ); 63365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret === "" ? "1" : ret; 63375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 63395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.style.opacity; 63405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 63445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Exclude the following css properties to add px 63465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssNumber: { 63475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "fillOpacity": true, 63485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "fontWeight": true, 63495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "lineHeight": true, 63505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "opacity": true, 63515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "orphans": true, 63525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "widows": true, 63535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "zIndex": true, 63545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "zoom": true 63555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 63565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add in properties whose names you wish to fix before 63585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // setting or getting the value 63595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cssProps: { 63605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // normalize float css property 63615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" 63625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 63635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get and set the style property on a DOM Node 63655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style: function( elem, name, value, extra ) { 63665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't set styles on text and comment nodes 63675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 63685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 63695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that we're working with the right name 63725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, type, origName = jQuery.camelCase( name ), 63735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style = elem.style, hooks = jQuery.cssHooks[ origName ]; 63745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.cssProps[ origName ] || origName; 63765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if we're setting a value 63785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value !== undefined ) { 63795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = typeof value; 63805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // convert relative number strings (+= or -=) to relative numbers. #7345 63825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "string" && (ret = rrelNum.exec( value )) ) { 63835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) ); 63845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes bug #9237 63855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = "number"; 63865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that NaN and null values aren't set. See: #7116 63895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value == null || type === "number" && isNaN( value ) ) { 63905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 63915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a number was passed in, add 'px' to the (except for certain CSS properties) 63945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type === "number" && !jQuery.cssNumber[ origName ] ) { 63955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value += "px"; 63965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 63975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 63985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a hook was provided, use that value, otherwise just set the specified value 63995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) { 64005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Wrapped to prevent IE from throwing errors when 'invalid' values are provided 64015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fixes bug #5509 64025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 64035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style[ name ] = value; 64045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) {} 64055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 64085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a hook was provided get the non-computed value from there 64095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { 64105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 64115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise just get the value from the style object 64145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return style[ name ]; 64155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 64175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) css: function( elem, name, extra ) { 64195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, hooks; 64205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that we're working with the right name 64225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.camelCase( name ); 64235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hooks = jQuery.cssHooks[ name ]; 64245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.cssProps[ name ] || name; 64255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // cssFloat needs a special treatment 64275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( name === "cssFloat" ) { 64285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = "float"; 64295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a hook was provided get the computed value from there 64325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { 64335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 64345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, if a way to get the computed value exists, use that 64365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( curCSS ) { 64375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return curCSS( elem, name ); 64385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 64405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // A method for quickly swapping in/out CSS properties to get correct calculations 64425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) swap: function( elem, options, callback ) { 64435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var old = {}; 64445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember the old values, and insert the new ones 64465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in options ) { 64475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) old[ name ] = elem.style[ name ]; 64485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style[ name ] = options[ name ]; 64495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback.call( elem ); 64525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Revert the old values 64545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( name in options ) { 64555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style[ name ] = old[ name ]; 64565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 64595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// DEPRECATED, Use jQuery.css() instead 64615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.curCSS = jQuery.css; 64625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each(["height", "width"], function( i, name ) { 64645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cssHooks[ name ] = { 64655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, computed, extra ) { 64665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val; 64675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( computed ) { 64695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.offsetWidth !== 0 ) { 64705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return getWH( elem, name, extra ); 64715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 64725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.swap( elem, cssShow, function() { 64735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = getWH( elem, name, extra ); 64745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 64755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val; 64785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 64805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 64825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rnumpx.test( value ) ) { 64835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ignore negative width and height values #1599 64845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = parseFloat( value ); 64855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value >= 0 ) { 64875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value + "px"; 64885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 64915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return value; 64925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 64945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 64955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 64965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 64975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( !jQuery.support.opacity ) { 64985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cssHooks.opacity = { 64995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, computed ) { 65005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE uses filters for opacity 65015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ? 65025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( parseFloat( RegExp.$1 ) / 100 ) + "" : 65035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) computed ? "1" : ""; 65045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 65055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set: function( elem, value ) { 65075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var style = elem.style, 65085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) currentStyle = elem.currentStyle, 65095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")", 65105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter = currentStyle && currentStyle.filter || style.filter || ""; 65115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE has trouble with opacity if it does not have layout 65135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force it by setting the zoom level 65145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.zoom = 1; 65155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652 65175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) { 65185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setting style.filter to null, "" & " " still leave "filter:" in the cssText 65205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if "filter:" is present at all, clearType is disabled, we want to avoid this 65215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // style.removeAttribute is IE Only, but so apparently is this code path... 65225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.removeAttribute( "filter" ); 65235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if there there is no filter style applied in a css rule, we are done 65255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( currentStyle && !currentStyle.filter ) { 65265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 65275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // otherwise, set new filter values 65315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.filter = ralpha.test( filter ) ? 65325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter.replace( ralpha, opacity ) : 65335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) filter + " " + opacity; 65345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 65365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 65375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery(function() { 65395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This hook cannot be added until DOM ready because the support test 65405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // for it is not run until after DOM ready 65415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.reliableMarginRight ) { 65425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.cssHooks.marginRight = { 65435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get: function( elem, computed ) { 65445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right 65455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Work around by temporarily setting element display to inline-block 65465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret; 65475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.swap( elem, { "display": "inline-block" }, function() { 65485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( computed ) { 65495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = curCSS( elem, "margin-right", "marginRight" ); 65505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 65515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.style.marginRight; 65525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 65545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 65555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 65575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 65595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.defaultView && document.defaultView.getComputedStyle ) { 65615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getComputedStyle = function( elem, name ) { 65625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ret, defaultView, computedStyle; 65635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = name.replace( rupper, "-$1" ).toLowerCase(); 65655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !(defaultView = elem.ownerDocument.defaultView) ) { 65675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return undefined; 65685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) { 65715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = computedStyle.getPropertyValue( name ); 65725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) { 65735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = jQuery.style( elem, name ); 65745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 65765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret; 65785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 65795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 65805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( document.documentElement.currentStyle ) { 65825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) currentStyle = function( elem, name ) { 65835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var left, 65845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = elem.currentStyle && elem.currentStyle[ name ], 65855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ], 65865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style = elem.style; 65875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // From the awesome hack by Dean Edwards 65895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 65905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're not dealing with a regular pixel number 65925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // but a number that has a weird ending, we need to convert it to pixels 65935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !rnumpx.test( ret ) && rnum.test( ret ) ) { 65945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember the original values 65955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = style.left; 65965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 65975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Put in the new values to get a computed value out 65985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rsLeft ) { 65995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.runtimeStyle.left = elem.currentStyle.left; 66005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.left = name === "fontSize" ? "1em" : (ret || 0); 66025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = style.pixelLeft + "px"; 66035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Revert the changed values 66055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) style.left = left; 66065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rsLeft ) { 66075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.runtimeStyle.left = rsLeft; 66085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ret === "" ? "auto" : ret; 66125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 66135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 66145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)curCSS = getComputedStyle || currentStyle; 66165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getWH( elem, name, extra ) { 66185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start with offset property 66205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val = name === "width" ? elem.offsetWidth : elem.offsetHeight, 66215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) which = name === "width" ? cssWidth : cssHeight; 66225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val > 0 ) { 66245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra !== "border" ) { 66255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( which, function() { 66265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !extra ) { 66275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0; 66285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra === "margin" ) { 66305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += parseFloat( jQuery.css( elem, extra + this ) ) || 0; 66315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 66325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0; 66335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 66355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val + "px"; 66385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fall back to computed then uncomputed css if necessary 66415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = curCSS( elem, name, name ); 66425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val < 0 || val == null ) { 66435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = elem.style[ name ] || 0; 66445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Normalize "", auto, and prepare for extra 66465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = parseFloat( val ) || 0; 66475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add padding, border, margin 66495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra ) { 66505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( which, function() { 66515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0; 66525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra !== "padding" ) { 66535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0; 66545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( extra === "margin" ) { 66565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val += parseFloat( jQuery.css( elem, extra + this ) ) || 0; 66575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 66595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 66605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val + "px"; 66625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 66635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.expr && jQuery.expr.filters ) { 66655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.expr.filters.hidden = function( elem ) { 66665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var width = elem.offsetWidth, 66675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) height = elem.offsetHeight; 66685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none"); 66705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 66715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.expr.filters.visible = function( elem ) { 66735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !jQuery.expr.filters.hidden( elem ); 66745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 66755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 66765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var r20 = /%20/g, 66815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rbracket = /\[\]$/, 66825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rCRLF = /\r?\n/g, 66835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rhash = /#.*$/, 66845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL 66855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i, 66865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // #7653, #8125, #8152: local protocol detection 66875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/, 66885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rnoContent = /^(?:GET|HEAD)$/, 66895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rprotocol = /^\/\//, 66905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rquery = /\?/, 66915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, 66925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rselectTextarea = /^(?:select|textarea)/i, 66935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rspacesAjax = /\s+/, 66945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rts = /([?&])_=[^&]*/, 66955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/, 66965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 66975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Keep a copy of the old load method 66985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _load = jQuery.fn.load, 66995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /* Prefilters 67015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 67025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2) These are called: 67035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - BEFORE asking for a transport 67045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - AFTER param serialization (s.data is a string if s.processData is true) 67055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3) key is the dataType 67065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 4) the catchall symbol "*" can be used 67075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 5) execution will start with transport dataType and THEN continue down to "*" if needed 67085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 67095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prefilters = {}, 67105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /* Transports bindings 67125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1) key is the dataType 67135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2) the catchall symbol "*" can be used 67145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3) selection will start with transport dataType and THEN go to "*" if needed 67155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 67165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transports = {}, 67175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Document location 67195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocation, 67205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Document location segments 67225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocParts, 67235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression 67255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) allTypes = ["*/"] + ["*"]; 67265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// #8138, IE may throw an exception when accessing 67285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// a field from window.location if document.domain has been set 67295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)try { 67305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocation = location.href; 67315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} catch( e ) { 67325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use the href attribute of an A element 67335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // since IE will modify it given document.location 67345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocation = document.createElement( "a" ); 67355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocation.href = ""; 67365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxLocation = ajaxLocation.href; 67375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 67385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Segment location into parts 67405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; 67415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 67435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function addToPrefiltersOrTransports( structure ) { 67445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // dataTypeExpression is optional and defaults to "*" 67465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return function( dataTypeExpression, func ) { 67475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof dataTypeExpression !== "string" ) { 67495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) func = dataTypeExpression; 67505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataTypeExpression = "*"; 67515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 67525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( func ) ) { 67545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), 67555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 67565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = dataTypes.length, 67575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType, 67585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) list, 67595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) placeBefore; 67605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For each dataType in the dataTypeExpression 67625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for(; i < length; i++ ) { 67635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType = dataTypes[ i ]; 67645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We control if we're asked to add before 67655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // any existing element 67665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) placeBefore = /^\+/.test( dataType ); 67675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( placeBefore ) { 67685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType = dataType.substr( 1 ) || "*"; 67695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 67705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) list = structure[ dataType ] = structure[ dataType ] || []; 67715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // then we add to the structure accordingly 67725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) list[ placeBefore ? "unshift" : "push" ]( func ); 67735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 67745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 67755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 67765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 67775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Base inspection function for prefilters and transports 67795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR, 67805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType /* internal */, inspected /* internal */ ) { 67815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType = dataType || options.dataTypes[ 0 ]; 67835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inspected = inspected || {}; 67845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inspected[ dataType ] = true; 67865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var list = structure[ dataType ], 67885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = 0, 67895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = list ? list.length : 0, 67905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) executeOnly = ( structure === prefilters ), 67915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selection; 67925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 67935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for(; i < length && ( executeOnly || !selection ); i++ ) { 67945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selection = list[ i ]( options, originalOptions, jqXHR ); 67955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we got redirected to another dataType 67965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // we try there if executing only and not done already 67975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof selection === "string" ) { 67985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !executeOnly || inspected[ selection ] ) { 67995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selection = undefined; 68005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 68015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.dataTypes.unshift( selection ); 68025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selection = inspectPrefiltersOrTransports( 68035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) structure, options, originalOptions, jqXHR, selection, inspected ); 68045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we're only executing or nothing was selected 68085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // we try the catchall dataType if not done already 68095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) { 68105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) selection = inspectPrefiltersOrTransports( 68115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) structure, options, originalOptions, jqXHR, "*", inspected ); 68125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // unnecessary when only executing (prefilters) 68145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // but it'll be ignored by the caller in that case 68155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return selection; 68165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 68175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// A special extend for ajax options 68195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// that takes "flat" options (not to be deep extended) 68205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Fixes #9887 68215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxExtend( target, src ) { 68225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var key, deep, 68235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) flatOptions = jQuery.ajaxSettings.flatOptions || {}; 68245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( key in src ) { 68255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( src[ key ] !== undefined ) { 68265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; 68275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( deep ) { 68305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( true, target, deep ); 68315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 68335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 68355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) load: function( url, params, callback ) { 68365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof url !== "string" && _load ) { 68375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return _load.apply( this, arguments ); 68385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Don't do a request if no elements are being requested 68405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !this.length ) { 68415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 68425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var off = url.indexOf( " " ); 68455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( off >= 0 ) { 68465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var selector = url.slice( off, url.length ); 68475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url = url.slice( 0, off ); 68485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Default to a GET request 68515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = "GET"; 68525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the second parameter was provided 68545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( params ) { 68555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If it's a function 68565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( params ) ) { 68575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We assume that it's the callback 68585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = params; 68595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params = undefined; 68605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Otherwise, build a param string 68625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( typeof params === "object" ) { 68635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) params = jQuery.param( params, jQuery.ajaxSettings.traditional ); 68645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = "POST"; 68655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 68675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this; 68695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Request the remote document 68715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ajax({ 68725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: url, 68735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: type, 68745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: "html", 68755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: params, 68765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Complete callback (responseText is used internally) 68775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete: function( jqXHR, status, responseText ) { 68785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Store the response as specified by the jqXHR object 68795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseText = jqXHR.responseText; 68805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If successful, inject the HTML into all the matched elements 68815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jqXHR.isResolved() ) { 68825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // #4825: Get the actual response in case 68835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // a dataFilter is present in ajaxSettings 68845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.done(function( r ) { 68855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseText = r; 68865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 68875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // See if a selector was specified 68885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.html( selector ? 68895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a dummy div to hold the results 68905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery("<div>") 68915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // inject the contents of the document in, removing the scripts 68925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid any 'Permission Denied' errors in IE 68935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .append(responseText.replace(rscript, "")) 68945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Locate the specified elements 68965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .find(selector) : 68975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If not, just inject the full result 68995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseText ); 69005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback ) { 69035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.each( callback, [ responseText, status, jqXHR ] ); 69045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 69075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 69095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 69105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) serialize: function() { 69125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.param( this.serializeArray() ); 69135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 69145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) serializeArray: function() { 69165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.map(function(){ 69175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.elements ? jQuery.makeArray( this.elements ) : this; 69185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) 69195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .filter(function(){ 69205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.name && !this.disabled && 69215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( this.checked || rselectTextarea.test( this.nodeName ) || 69225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rinput.test( this.type ) ); 69235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) 69245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .map(function( i, elem ){ 69255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var val = jQuery( this ).val(); 69265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return val == null ? 69285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null : 69295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isArray( val ) ? 69305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.map( val, function( val, i ){ 69315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 69325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }) : 69335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 69345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).get(); 69355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 69375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Attach a bunch of functions for handling common AJAX events 69395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){ 69405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ o ] = function( f ){ 69415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.bind( o, f ); 69425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 69435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 69445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( [ "get", "post" ], function( i, method ) { 69465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery[ method ] = function( url, data, callback, type ) { 69475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // shift arguments if data argument was omitted 69485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( data ) ) { 69495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type = type || callback; 69505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = data; 69515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = undefined; 69525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.ajax({ 69555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: method, 69565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: url, 69575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: data, 69585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success: callback, 69595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: type 69605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 69615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 69625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 69635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 69655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getScript: function( url, callback ) { 69675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.get( url, undefined, callback, "script" ); 69685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 69695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getJSON: function( url, data, callback ) { 69715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.get( url, data, callback, "json" ); 69725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 69735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Creates a full fledged settings object into target 69755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // with both ajaxSettings and settings fields. 69765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If target is omitted, writes into ajaxSettings. 69775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxSetup: function( target, settings ) { 69785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( settings ) { 69795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Building a settings object 69805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxExtend( target, jQuery.ajaxSettings ); 69815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 69825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Extending ajaxSettings 69835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) settings = target; 69845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) target = jQuery.ajaxSettings; 69855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxExtend( target, settings ); 69875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return target; 69885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 69895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 69905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxSettings: { 69915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: ajaxLocation, 69925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), 69935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) global: true, 69945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type: "GET", 69955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contentType: "application/x-www-form-urlencoded", 69965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) processData: true, 69975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) async: true, 69985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /* 69995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timeout: 0, 70005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data: null, 70015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataType: null, 70025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) username: null, 70035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) password: null, 70045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cache: null, 70055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) traditional: false, 70065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headers: {}, 70075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 70085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) accepts: { 70105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml: "application/xml, text/xml", 70115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: "text/html", 70125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: "text/plain", 70135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) json: "application/json, text/javascript", 70145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "*": allTypes 70155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 70165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents: { 70185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml: /xml/, 70195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html: /html/, 70205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) json: /json/ 70215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 70225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseFields: { 70245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml: "responseXML", 70255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text: "responseText" 70265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 70275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // List of data converters 70295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // 1) key format is "source_type destination_type" (a single space in-between) 70305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // 2) the catchall symbol "*" can be used for source_type 70315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) converters: { 70325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert anything to text 70345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "* text": window.String, 70355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Text to html (true = no transformation) 70375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "text html": true, 70385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Evaluate text as a json expression 70405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "text json": jQuery.parseJSON, 70415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Parse text as xml 70435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "text xml": jQuery.parseXML 70445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 70455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For options that shouldn't be deep extended: 70475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // you can add your own custom options here if 70485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and when you create one that shouldn't be 70495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // deep extended (see ajaxExtend) 70505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) flatOptions: { 70515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) context: true, 70525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url: true 70535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 70545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 70555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 70575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajaxTransport: addToPrefiltersOrTransports( transports ), 70585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Main method 70605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajax: function( url, options ) { 70615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If url is an object, simulate pre-1.5 signature 70635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( typeof url === "object" ) { 70645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = url; 70655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url = undefined; 70665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 70675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force options to be an object 70695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = options || {}; 70705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var // Create the final options object 70725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s = jQuery.ajaxSetup( {}, options ), 70735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Callbacks context 70745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callbackContext = s.context || s, 70755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Context for global events 70765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // It's the callbackContext if one was provided in the options 70775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and if it's a DOM node or a jQuery collection 70785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEventContext = callbackContext !== s && 70795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? 70805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( callbackContext ) : jQuery.event, 70815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Deferreds 70825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred = jQuery.Deferred(), 70835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) completeDeferred = jQuery._Deferred(), 70845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Status-dependent callbacks 70855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusCode = s.statusCode || {}, 70865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // ifModified key 70875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ifModifiedKey, 70885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Headers (they are sent all at once) 70895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestHeaders = {}, 70905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestHeadersNames = {}, 70915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Response headers 70925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeadersString, 70935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeaders, 70945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // transport 70955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transport, 70965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // timeout handle 70975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timeoutTimer, 70985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cross-domain detection vars 70995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts, 71005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // The jqXHR state 71015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = 0, 71025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // To know if global events are to be dispatched 71035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fireGlobals, 71045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Loop variable 71055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, 71065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fake xhr 71075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR = { 71085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) readyState: 0, 71105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Caches the header 71125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setRequestHeader: function( name, value ) { 71135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !state ) { 71145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var lname = name.toLowerCase(); 71155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; 71165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) requestHeaders[ name ] = value; 71175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 71195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 71205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Raw string 71225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getAllResponseHeaders: function() { 71235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return state === 2 ? responseHeadersString : null; 71245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 71255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Builds headers hashtable if needed 71275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getResponseHeader: function( key ) { 71285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var match; 71295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( state === 2 ) { 71305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !responseHeaders ) { 71315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeaders = {}; 71325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( ( match = rheaders.exec( responseHeadersString ) ) ) { 71335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; 71345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) match = responseHeaders[ key.toLowerCase() ]; 71375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return match === undefined ? null : match; 71395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 71405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Overrides response content-type header 71425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) overrideMimeType: function( type ) { 71435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !state ) { 71445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.mimeType = type; 71455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 71475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 71485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cancel the request 71505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) abort: function( statusText ) { 71515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = statusText || "abort"; 71525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( transport ) { 71535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transport.abort( statusText ); 71545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done( 0, statusText ); 71565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 71575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 71595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Callback for when everything is done 71615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // It is defined here because jslint complains if it is declared 71625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // at the end of the function (which would be more logical and readable) 71635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function done( status, nativeStatusText, responses, headers ) { 71645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Called once 71665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( state === 2 ) { 71675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 71685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // State is "done" now 71715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = 2; 71725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clear timeout if it exists 71745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( timeoutTimer ) { 71755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearTimeout( timeoutTimer ); 71765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 71775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Dereference transport for early garbage collection 71795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (no matter how long the jqXHR object will be used) 71805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transport = undefined; 71815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cache response headers 71835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeadersString = headers || ""; 71845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set readyState 71865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.readyState = status > 0 ? 4 : 0; 71875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isSuccess, 71895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success, 71905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) error, 71915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = nativeStatusText, 71925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, 71935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lastModified, 71945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) etag; 71955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If successful, handle type chaining 71975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status >= 200 && status < 300 || status === 304 ) { 71985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 71995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 72005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.ifModified ) { 72015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) { 72035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.lastModified[ ifModifiedKey ] = lastModified; 72045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) { 72065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.etag[ ifModifiedKey ] = etag; 72075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If not modified 72115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status === 304 ) { 72125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = "notmodified"; 72145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSuccess = true; 72155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we have data 72175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 72185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 72205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) success = ajaxConvert( s, response ); 72215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = "success"; 72225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isSuccess = true; 72235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) { 72245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We have a parsererror 72255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = "parsererror"; 72265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) error = e; 72275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 72305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We extract error from statusText 72315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // then normalize statusText and status for non-aborts 72325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) error = statusText; 72335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( !statusText || status ) { 72345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = "error"; 72355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( status < 0 ) { 72365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = 0; 72375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set data for the fake xhr object 72425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.status = status; 72435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.statusText = "" + ( nativeStatusText || statusText ); 72445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Success/Error 72465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isSuccess ) { 72475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 72485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 72495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 72505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Status-dependent callbacks 72535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.statusCode( statusCode ); 72545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusCode = undefined; 72555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fireGlobals ) { 72575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), 72585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ jqXHR, s, isSuccess ? success : error ] ); 72595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Complete 72625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); 72635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fireGlobals ) { 72655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 72665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle the global AJAX counter 72675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !( --jQuery.active ) ) { 72685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStop" ); 72695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach deferreds 72745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) deferred.promise( jqXHR ); 72755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.success = jqXHR.done; 72765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.error = jqXHR.fail; 72775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.complete = completeDeferred.done; 72785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Status-dependent callbacks 72805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.statusCode = function( map ) { 72815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( map ) { 72825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var tmp; 72835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( state < 2 ) { 72845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( tmp in map ) { 72855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; 72865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 72885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp = map[ jqXHR.status ]; 72895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.then( tmp, tmp ); 72905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 72925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 72935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 72945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove hash character (#7531: and string promotion) 72965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) 72975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We also use the url parameter if available 72985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); 72995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Extract dataTypes list 73015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); 73025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determine if a cross-domain request is in order 73045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.crossDomain == null ) { 73055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts = rurl.exec( s.url.toLowerCase() ); 73065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.crossDomain = !!( parts && 73075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || 73085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != 73095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) 73105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 73115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert data if not already a string 73145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data && s.processData && typeof s.data !== "string" ) { 73155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = jQuery.param( s.data, s.traditional ); 73165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Apply prefilters 73195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 73205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If request was aborted inside a prefiler, stop there 73225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( state === 2 ) { 73235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 73245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We can fire global events as of now if asked to 73275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fireGlobals = s.global; 73285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Uppercase the type 73305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.type = s.type.toUpperCase(); 73315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Determine if request has content 73335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.hasContent = !rnoContent.test( s.type ); 73345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Watch for a new set of requests 73365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fireGlobals && jQuery.active++ === 0 ) { 73375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.event.trigger( "ajaxStart" ); 73385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // More options handling for requests with no content 73415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.hasContent ) { 73425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If data is available, append data to url 73445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data ) { 73455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; 73465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // #9682: remove data so that it's not used in an eventual retry 73475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete s.data; 73485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get ifModifiedKey before adding the anti-cache parameter 73515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ifModifiedKey = s.url; 73525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add anti-cache in url if needed 73545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.cache === false ) { 73555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ts = jQuery.now(), 73575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // try replacing _= if it is there 73585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = s.url.replace( rts, "$1_=" + ts ); 73595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if nothing was replaced, add timestamp to the end 73615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); 73625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the correct header, if data is being sent 73665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 73675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.setRequestHeader( "Content-Type", s.contentType ); 73685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 73715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.ifModified ) { 73725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ifModifiedKey = ifModifiedKey || s.url; 73735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.lastModified[ ifModifiedKey ] ) { 73745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); 73755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.etag[ ifModifiedKey ] ) { 73775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); 73785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the Accepts header for the server, depending on the dataType 73825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.setRequestHeader( 73835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "Accept", 73845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? 73855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 73865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.accepts[ "*" ] 73875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 73885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check for headers option 73905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in s.headers ) { 73915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.setRequestHeader( i, s.headers[ i ] ); 73925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 73935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Allow custom headers/mimetypes and early abort 73955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { 73965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Abort if not done already 73975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.abort(); 73985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 73995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Install callbacks on deferreds 74035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in { success: 1, error: 1, complete: 1 } ) { 74045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR[ i ]( s[ i ] ); 74055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get transport 74085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 74095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If no transport, we auto-abort 74115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !transport ) { 74125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done( -1, "No Transport" ); 74135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 74145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.readyState = 1; 74155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Send global event 74165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fireGlobals ) { 74175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 74185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Timeout 74205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.async && s.timeout > 0 ) { 74215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timeoutTimer = setTimeout( function(){ 74225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.abort( "timeout" ); 74235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, s.timeout ); 74245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 74275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) state = 1; 74285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) transport.send( requestHeaders, done ); 74295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch (e) { 74305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Propagate exception as error if not done 74315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( state < 2 ) { 74325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done( -1, e ); 74335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simply rethrow otherwise 74345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 74355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( e ); 74365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jqXHR; 74415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 74425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize an array of form elements or a set of 74445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // key/values into a query string 74455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) param: function( a, traditional ) { 74465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var s = [], 74475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add = function( key, value ) { 74485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If value is a function, invoke it and return its value 74495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) value = jQuery.isFunction( value ) ? value() : value; 74505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); 74515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 74525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set traditional to true for jQuery <= 1.3.2 behavior. 74545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( traditional === undefined ) { 74555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) traditional = jQuery.ajaxSettings.traditional; 74565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If an array was passed in, assume that it is an array of form elements. 74595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 74605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize the form elements 74615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( a, function() { 74625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( this.name, this.value ); 74635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 74645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 74665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If traditional, encode the "old" way (the way 1.3.2 or older 74675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // did it), otherwise encode params recursively. 74685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var prefix in a ) { 74695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) buildParams( prefix, a[ prefix ], traditional, add ); 74705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the resulting serialization 74745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return s.join( "&" ).replace( r20, "+" ); 74755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 74775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function buildParams( prefix, obj, traditional, add ) { 74795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( obj ) ) { 74805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize array item. 74815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( obj, function( i, v ) { 74825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( traditional || rbracket.test( prefix ) ) { 74835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Treat each array item as a scalar. 74845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( prefix, v ); 74855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 74875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If array item is non-scalar (array or object), encode its 74885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // numeric index to resolve deserialization ambiguity issues. 74895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Note that rack (as of 1.0.0) can't currently deserialize 74905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // nested arrays properly, and attempting to do so may cause 74915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // a server error. Possible fixes are to modify rack's 74925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // deserialization algorithm or to provide an option or flag 74935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to force array serialization to be shallow. 74945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add ); 74955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 74965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 74975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 74985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( !traditional && obj != null && typeof obj === "object" ) { 74995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize object item. 75005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var name in obj ) { 75015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 75025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 75055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Serialize scalar item. 75065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) add( prefix, obj ); 75075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 75095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// This is still on the jQuery object... for now 75115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Want to move this to jQuery.ajax some day 75125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 75135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Counter for holding the number of active queries 75155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) active: 0, 75165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Last-Modified header cache for next request 75185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lastModified: {}, 75195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) etag: {} 75205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 75225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* Handles responses to an ajax request: 75245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - sets all responseXXX fields accordingly 75255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - finds the right dataType (mediates between content-type and expected dataType) 75265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * - returns the corresponding response 75275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 75285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxHandleResponses( s, jqXHR, responses ) { 75295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var contents = s.contents, 75315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataTypes = s.dataTypes, 75325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseFields = s.responseFields, 75335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ct, 75345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) type, 75355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) finalDataType, 75365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firstDataType; 75375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Fill responseXXX fields 75395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( type in responseFields ) { 75405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( type in responses ) { 75415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR[ responseFields[type] ] = responses[ type ]; 75425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove auto dataType and get content-type in the process 75465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while( dataTypes[ 0 ] === "*" ) { 75475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataTypes.shift(); 75485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ct === undefined ) { 75495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); 75505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check if we're dealing with a known content-type 75545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( ct ) { 75555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( type in contents ) { 75565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( contents[ type ] && contents[ type ].test( ct ) ) { 75575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataTypes.unshift( type ); 75585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 75595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Check to see if we have a response for the expected dataType 75645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( dataTypes[ 0 ] in responses ) { 75655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) finalDataType = dataTypes[ 0 ]; 75665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 75675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Try convertible dataTypes 75685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( type in responses ) { 75695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) { 75705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) finalDataType = type; 75715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 75725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !firstDataType ) { 75745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) firstDataType = type; 75755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Or just use first one 75785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) finalDataType = finalDataType || firstDataType; 75795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we found a dataType 75825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We add the dataType to the list if needed 75835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and return the corresponding response 75845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( finalDataType ) { 75855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( finalDataType !== dataTypes[ 0 ] ) { 75865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dataTypes.unshift( finalDataType ); 75875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return responses[ finalDataType ]; 75895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 75915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Chain conversions given the request and the original response 75935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ajaxConvert( s, response ) { 75945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Apply the dataFilter if provided 75965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataFilter ) { 75975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) response = s.dataFilter( response, s.dataType ); 75985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 75995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var dataTypes = s.dataTypes, 76015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) converters = {}, 76025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, 76035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) key, 76045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length = dataTypes.length, 76055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp, 76065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Current and previous dataTypes 76075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) current = dataTypes[ 0 ], 76085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prev, 76095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Conversion expression 76105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conversion, 76115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Conversion function 76125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv, 76135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Conversion functions (transitive conversion) 76145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv1, 76155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv2; 76165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For each dataType in the chain 76185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( i = 1; i < length; i++ ) { 76195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create converters map 76215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // with lowercased keys 76225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( i === 1 ) { 76235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( key in s.converters ) { 76245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( typeof key === "string" ) { 76255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) converters[ key.toLowerCase() ] = s.converters[ key ]; 76265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the dataTypes 76315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prev = current; 76325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) current = dataTypes[ i ]; 76335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If current is auto dataType, update it to prev 76355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if( current === "*" ) { 76365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) current = prev; 76375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If no auto and dataTypes are actually different 76385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( prev !== "*" && prev !== current ) { 76395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the converter 76415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conversion = prev + " " + current; 76425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv = converters[ conversion ] || converters[ "* " + current ]; 76435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If there is no direct converter, search transitively 76455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !conv ) { 76465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv2 = undefined; 76475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for( conv1 in converters ) { 76485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tmp = conv1.split( " " ); 76495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) { 76505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv2 = converters[ tmp[1] + " " + current ]; 76515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( conv2 ) { 76525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv1 = converters[ conv1 ]; 76535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( conv1 === true ) { 76545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv = conv2; 76555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( conv2 === true ) { 76565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) conv = conv1; 76575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 76595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we found no converter, dispatch an error 76645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !( conv || conv2 ) ) { 76655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( "No conversion from " + conversion.replace(" "," to ") ); 76665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If found converter is not an equivalence 76685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( conv !== true ) { 76695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Convert with 1 or 2 converters accordingly 76705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) response = conv ? conv( response ) : conv2( conv1(response) ); 76715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return response; 76755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 76765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var jsc = jQuery.now(), 76815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jsre = /(\=)\?(&|$)|\?\?/i; 76825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Default jsonp settings 76845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSetup({ 76855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jsonp: "callback", 76865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jsonpCallback: function() { 76875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.expando + "_" + ( jsc++ ); 76885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 76895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 76905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Detect, normalize options and install callbacks for jsonp requests 76925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 76935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var inspectData = s.contentType === "application/x-www-form-urlencoded" && 76955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ( typeof s.data === "string" ); 76965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 76975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.dataTypes[ 0 ] === "jsonp" || 76985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.jsonp !== false && ( jsre.test( s.url ) || 76995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inspectData && jsre.test( s.data ) ) ) { 77005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var responseContainer, 77025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jsonpCallback = s.jsonpCallback = 77035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback, 77045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) previous = window[ jsonpCallback ], 77055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url = s.url, 77065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = s.data, 77075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) replace = "$1" + jsonpCallback + "$2"; 77085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.jsonp !== false ) { 77105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url = url.replace( jsre, replace ); 77115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.url === url ) { 77125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( inspectData ) { 77135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) data = data.replace( jsre, replace ); 77145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.data === data ) { 77165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add callback manually 77175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback; 77185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.url = url; 77235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.data = data; 77245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Install callback 77265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ jsonpCallback ] = function( response ) { 77275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseContainer = [ response ]; 77285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 77295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Clean-up function 77315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jqXHR.always(function() { 77325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set callback back to previous value 77335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ jsonpCallback ] = previous; 77345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call if it was a function and we have a response 77355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( responseContainer && jQuery.isFunction( previous ) ) { 77365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window[ jsonpCallback ]( responseContainer[ 0 ] ); 77375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 77395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use data converter to retrieve json after script execution 77415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.converters["script json"] = function() { 77425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !responseContainer ) { 77435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.error( jsonpCallback + " was not called" ); 77445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return responseContainer[ 0 ]; 77465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 77475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // force json dataType 77495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.dataTypes[ 0 ] = "json"; 77505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Delegate to script 77525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return "script"; 77535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 77555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Install script dataType 77605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSetup({ 77615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) accepts: { 77625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 77635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 77645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) contents: { 77655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script: /javascript|ecmascript/ 77665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 77675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) converters: { 77685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "text script": function( text ) { 77695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.globalEval( text ); 77705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return text; 77715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 77745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Handle cache's special case and global 77765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxPrefilter( "script", function( s ) { 77775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.cache === undefined ) { 77785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.cache = false; 77795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.crossDomain ) { 77815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.type = "GET"; 77825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) s.global = false; 77835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 77845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 77855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Bind script tag hack transport 77875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxTransport( "script", function(s) { 77885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This transport only deals with cross domain requests 77905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.crossDomain ) { 77915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var script, 77935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement; 77945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { 77965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) send: function( _, callback ) { 77985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 77995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script = document.createElement( "script" ); 78005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.async = "async"; 78025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.scriptCharset ) { 78045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.charset = s.scriptCharset; 78055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.src = s.url; 78085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Attach handlers for all browsers 78105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.onload = script.onreadystatechange = function( _, isAbort ) { 78115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { 78135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Handle memory leak in IE 78155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.onload = script.onreadystatechange = null; 78165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remove the script 78185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( head && script.parentNode ) { 78195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.removeChild( script ); 78205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Dereference the script 78235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script = undefined; 78245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Callback if not abort 78265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isAbort ) { 78275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback( 200, "success" ); 78285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 78315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Use insertBefore instead of appendChild to circumvent an IE6 bug. 78325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This arises when a base node is used (#2709 and #4378). 78335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) head.insertBefore( script, head.firstChild ); 78345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 78355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) abort: function() { 78375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( script ) { 78385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) script.onload( 0, 1 ); 78395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 78425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 78445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var // #5280: Internet Explorer will keep connections alive if we don't abort on unload 78495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrOnUnloadAbort = window.ActiveXObject ? function() { 78505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Abort all pending requests 78515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var key in xhrCallbacks ) { 78525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrCallbacks[ key ]( 0, 1 ); 78535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 78545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } : false, 78555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrId = 0, 78565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrCallbacks; 78575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Functions to create xhrs 78595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createStandardXHR() { 78605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 78615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new window.XMLHttpRequest(); 78625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) {} 78635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 78645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createActiveXHR() { 78665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 78675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return new window.ActiveXObject( "Microsoft.XMLHTTP" ); 78685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) {} 78695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 78705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create the request object 78725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// (This is still attached to ajaxSettings for backward compatibility) 78735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.ajaxSettings.xhr = window.ActiveXObject ? 78745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /* Microsoft failed to properly 78755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * implement the XMLHttpRequest in IE7 (can't request local files), 78765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * so we use the ActiveXObject when it is available 78775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Additionally XMLHttpRequest can be disabled in IE7/IE8 so 78785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * we need a fallback. 78795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 78805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function() { 78815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !this.isLocal && createStandardXHR() || createActiveXHR(); 78825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } : 78835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For all other browsers, use the standard XMLHttpRequest object 78845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createStandardXHR; 78855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Determine support properties 78875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function( xhr ) { 78885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( jQuery.support, { 78895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ajax: !!xhr, 78905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cors: !!xhr && ( "withCredentials" in xhr ) 78915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 78925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})( jQuery.ajaxSettings.xhr() ); 78935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create transport if the browser can provide an xhr 78955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.support.ajax ) { 78965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 78975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.ajaxTransport(function( s ) { 78985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Cross domain only allowed if supported through XMLHttpRequest 78995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.crossDomain || jQuery.support.cors ) { 79005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callback; 79025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { 79045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) send: function( headers, complete ) { 79055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get a new xhr 79075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var xhr = s.xhr(), 79085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle, 79095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i; 79105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Open the socket 79125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Passing null username, generates a login popup on Opera (#2865) 79135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.username ) { 79145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.open( s.type, s.url, s.async, s.username, s.password ); 79155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 79165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.open( s.type, s.url, s.async ); 79175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Apply custom fields if provided 79205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.xhrFields ) { 79215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in s.xhrFields ) { 79225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr[ i ] = s.xhrFields[ i ]; 79235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Override mime type if needed 79275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( s.mimeType && xhr.overrideMimeType ) { 79285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.overrideMimeType( s.mimeType ); 79295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // X-Requested-With header 79325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For cross-domain requests, seeing as conditions for a preflight are 79335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // akin to a jigsaw puzzle, we simply never set it to be sure. 79345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (it can always be set on a per-request basis or even using ajaxSetup) 79355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For same-domain requests, won't change header if already provided. 79365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.crossDomain && !headers["X-Requested-With"] ) { 79375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) headers[ "X-Requested-With" ] = "XMLHttpRequest"; 79385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Need an extra try/catch for cross domain requests in Firefox 3 79415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 79425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in headers ) { 79435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.setRequestHeader( i, headers[ i ] ); 79445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( _ ) {} 79465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Do send the request 79485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // This may raise an exception which is actually 79495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // handled in jQuery.ajax (so no try/catch here) 79505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.send( ( s.hasContent && s.data ) || null ); 79515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Listener 79535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = function( _, isAbort ) { 79545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var status, 79565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText, 79575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeaders, 79585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responses, 79595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml; 79605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Firefox throws exceptions when accessing properties 79625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // of an xhr when a network error occured 79635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE) 79645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 79655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Was never called and is aborted or complete 79675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback && ( isAbort || xhr.readyState === 4 ) ) { 79685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Only called once 79705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback = undefined; 79715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Do not keep as active anymore 79735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( handle ) { 79745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.onreadystatechange = jQuery.noop; 79755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xhrOnUnloadAbort ) { 79765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete xhrCallbacks[ handle ]; 79775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If it's an abort 79815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isAbort ) { 79825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Abort it manually if needed 79835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xhr.readyState !== 4 ) { 79845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.abort(); 79855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 79875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = xhr.status; 79885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responseHeaders = xhr.getAllResponseHeaders(); 79895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responses = {}; 79905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xml = xhr.responseXML; 79915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Construct response list 79935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xml && xml.documentElement /* #4958 */ ) { 79945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responses.xml = xml; 79955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 79965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) responses.text = xhr.responseText; 79975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 79985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Firefox throws an exception when accessing 79995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // statusText for faulty cross-domain requests 80005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 80015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = xhr.statusText; 80025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( e ) { 80035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We normalize with Webkit giving an empty statusText 80045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) statusText = ""; 80055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Filter status for non standard behaviors 80085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the request is local and we have data: assume a success 80105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // (success with no data won't get notified, that's the best we 80115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // can do given current implementations) 80125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !status && s.isLocal && !s.crossDomain ) { 80135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = responses.text ? 200 : 404; 80145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE - #1450: sometimes returns 1223 when it should be 204 80155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( status === 1223 ) { 80165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) status = 204; 80175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch( firefoxAccessException ) { 80215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !isAbort ) { 80225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete( -1, firefoxAccessException ); 80235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Call complete if needed 80275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( responses ) { 80285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete( status, statusText, responses, responseHeaders ); 80295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 80315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if we're in sync mode or it's in cache 80335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and has been retrieved directly (IE6 & IE7) 80345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // we need to manually fire the callback 80355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !s.async || xhr.readyState === 4 ) { 80365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(); 80375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 80385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) handle = ++xhrId; 80395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( xhrOnUnloadAbort ) { 80405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create the active xhrs callbacks list if needed 80415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // and attach the unload handler 80425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !xhrCallbacks ) { 80435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrCallbacks = {}; 80445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( window ).unload( xhrOnUnloadAbort ); 80455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add to list of active xhrs callbacks 80475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhrCallbacks[ handle ] = callback; 80485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) xhr.onreadystatechange = callback; 80505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 80525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) abort: function() { 80545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( callback ) { 80555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(0,1); 80565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 80595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 80605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 80615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 80625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var elemdisplay = {}, 80675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframe, iframeDoc, 80685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rfxtypes = /^(?:toggle|show|hide)$/, 80695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i, 80705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId, 80715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fxAttrs = [ 80725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // height animations 80735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ], 80745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // width animations 80755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ], 80765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // opacity animations 80775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) [ "opacity" ] 80785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ], 80795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fxNow; 80805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 80825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) show: function( speed, easing, callback ) { 80835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem, display; 80845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( speed || speed === 0 ) { 80865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( genFx("show", 3), speed, easing, callback); 80875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 80895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, j = this.length; i < j; i++ ) { 80905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[i]; 80915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.style ) { 80935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elem.style.display; 80945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 80955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the inline display of this element to learn if it is 80965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // being hidden by cascaded rules or not 80975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { 80985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elem.style.display = ""; 80995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set elements which have been overridden with display: none 81025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // in a stylesheet to whatever the default browser style is 81035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // for such an element 81045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { 81055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); 81065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the display of most of the elements in a second loop 81115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid the constant reflow 81125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; i < j; i++ ) { 81135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[i]; 81145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem.style ) { 81165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elem.style.display; 81175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display === "" || display === "none" ) { 81195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style.display = jQuery._data(elem, "olddisplay") || ""; 81205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 81255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 81275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hide: function( speed, easing, callback ) { 81295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( speed || speed === 0 ) { 81305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( genFx("hide", 3), speed, easing, callback); 81315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 81335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var i = 0, j = this.length; i < j; i++ ) { 81345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[i].style ) { 81355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var display = jQuery.css( this[i], "display" ); 81365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { 81385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._data( this[i], "olddisplay", display ); 81395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the display of the elements in a second loop 81445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // to avoid the constant reflow 81455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i = 0; i < j; i++ ) { 81465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this[i].style ) { 81475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[i].style.display = "none"; 81485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 81525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 81545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Save the old toggle function 81565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggle: jQuery.fn.toggle, 81575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) toggle: function( fn, fn2, callback ) { 81595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var bool = typeof fn === "boolean"; 81605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) { 81625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggle.apply( this, arguments ); 81635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( fn == null || bool ) { 81655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function() { 81665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var state = bool ? fn : jQuery(this).is(":hidden"); 81675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(this)[ state ? "show" : "hide" ](); 81685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 81695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 81715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.animate(genFx("toggle", 3), fn, fn2, callback); 81725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 81755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 81765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeTo: function( speed, to, easing, callback ) { 81785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.filter(":hidden").css("opacity", 0).show().end() 81795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) .animate({opacity: to}, speed, easing, callback); 81805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 81815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) animate: function( prop, speed, easing, callback ) { 81835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var optall = jQuery.speed(speed, easing, callback); 81845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isEmptyObject( prop ) ) { 81865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each( optall.complete, [ false ] ); 81875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Do not change referenced properties as per-property easing will be lost 81905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop = jQuery.extend( {}, prop ); 81915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this[ optall.queue === false ? "each" : "queue" ](function() { 81935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // XXX 'this' does not always have a nodeName when running the 81945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // test suite 81955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 81965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( optall.queue === false ) { 81975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._mark( this ); 81985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 81995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var opt = jQuery.extend( {}, optall ), 82015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isElement = this.nodeType === 1, 82025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hidden = isElement && jQuery(this).is(":hidden"), 82035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name, val, p, 82045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display, e, 82055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts, start, end, unit; 82065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // will store per property easing and be used to determine when an animation is complete 82085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.animatedProperties = {}; 82095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( p in prop ) { 82115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // property name normalization 82135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) name = jQuery.camelCase( p ); 82145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( p !== name ) { 82155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prop[ name ] = prop[ p ]; 82165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete prop[ p ]; 82175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = prop[ name ]; 82205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) 82225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isArray( val ) ) { 82235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.animatedProperties[ name ] = val[ 1 ]; 82245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = prop[ name ] = val[ 0 ]; 82255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 82265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; 82275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val === "hide" && hidden || val === "show" && !hidden ) { 82305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return opt.complete.call( this ); 82315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( isElement && ( name === "height" || name === "width" ) ) { 82345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that nothing sneaks out 82355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Record all 3 overflow attributes because IE does not 82365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // change the overflow attribute when overflowX and 82375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // overflowY are set to the same value 82385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ]; 82395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set display property to inline-block for height/width 82415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // animations on inline elements that are having width/height 82425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // animated 82435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.css( this, "display" ) === "inline" && 82445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.css( this, "float" ) === "none" ) { 82455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !jQuery.support.inlineBlockNeedsLayout ) { 82465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.display = "inline-block"; 82475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 82495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = defaultDisplay( this.nodeName ); 82505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // inline-level elements accept inline-block; 82525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // block-level elements need to be inline with layout 82535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display === "inline" ) { 82545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.display = "inline-block"; 82555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 82575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.display = "inline"; 82585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.zoom = 1; 82595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( opt.overflow != null ) { 82665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.style.overflow = "hidden"; 82675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( p in prop ) { 82705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e = new jQuery.fx( this, opt, p ); 82715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) val = prop[ p ]; 82725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( rfxtypes.test(val) ) { 82745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); 82755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 82775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parts = rfxnum.exec( val ); 82785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start = e.cur(); 82795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts ) { 82815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) end = parseFloat( parts[2] ); 82825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); 82835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // We need to compute starting value 82855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( unit !== "px" ) { 82865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.style( this, p, (end || 1) + unit); 82875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start = ((end || 1) / e.cur()) * start; 82885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.style( this, p, start + unit); 82895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If a +=/-= token was provided, we're doing a relative animation 82925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( parts[1] ) { 82935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; 82945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 82955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.custom( start, end, unit ); 82975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 82985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 82995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) e.custom( start, val, "" ); 83005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For JS strict compliance 83055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 83065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 83075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 83085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop: function( clearQueue, gotoEnd ) { 83105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( clearQueue ) { 83115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.queue([]); 83125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.each(function() { 83155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var timers = jQuery.timers, 83165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i = timers.length; 83175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // clear marker counters if we know they won't be 83185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !gotoEnd ) { 83195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._unmark( true, this ); 83205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( i-- ) { 83225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( timers[i].elem === this ) { 83235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (gotoEnd) { 83245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // force the next step to be the last 83255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers[i](true); 83265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers.splice(i, 1); 83295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 83325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // start the next in the queue if the last step wasn't forced 83345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !gotoEnd ) { 83355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dequeue(); 83365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this; 83395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 83425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Animations created synchronously will run synchronously 83445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function createFxNow() { 83455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout( clearFxNow, 0 ); 83465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ( fxNow = jQuery.now() ); 83475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 83485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function clearFxNow() { 83505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fxNow = undefined; 83515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 83525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Generate parameters to create a standard animation 83545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function genFx( type, num ) { 83555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var obj = {}; 83565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() { 83585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) obj[ this ] = type; 83595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 83605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return obj; 83625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 83635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Generate shortcuts for custom animations 83655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each({ 83665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideDown: genFx("show", 1), 83675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideUp: genFx("hide", 1), 83685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slideToggle: genFx("toggle", 1), 83695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeIn: { opacity: "show" }, 83705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeOut: { opacity: "hide" }, 83715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fadeToggle: { opacity: "toggle" } 83725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}, function( name, props ) { 83735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ name ] = function( speed, easing, callback ) { 83745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.animate( props, speed, easing, callback ); 83755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 83765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 83775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend({ 83795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) speed: function( speed, easing, fn ) { 83805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { 83815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) complete: fn || !fn && easing || 83825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.isFunction( speed ) && speed, 83835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) duration: speed, 83845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) easing: fn && easing || easing && !jQuery.isFunction(easing) && easing 83855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 83865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : 83885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default; 83895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Queueing 83915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.old = opt.complete; 83925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.complete = function( noUnmark ) { 83935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( opt.old ) ) { 83945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opt.old.call( this ); 83955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 83965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 83975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( opt.queue !== false ) { 83985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.dequeue( this ); 83995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( noUnmark !== false ) { 84005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery._unmark( this ); 84015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 84035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return opt; 84055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) easing: { 84085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) linear: function( p, n, firstNum, diff ) { 84095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return firstNum + diff * p; 84105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) swing: function( p, n, firstNum, diff ) { 84125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum; 84135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers: [], 84175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx: function( elem, options, prop ) { 84195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options = options; 84205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.elem = elem; 84215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prop = prop; 84225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.orig = options.orig || {}; 84245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 84275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fx.prototype = { 84295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple function for setting a style value 84305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) update: function() { 84315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.options.step ) { 84325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.step.call( this.elem, this.now, this ); 84335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this ); 84365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get the current size 84395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) cur: function() { 84405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) { 84415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.elem[ this.prop ]; 84425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parsed, 84455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) r = jQuery.css( this.elem, this.prop ); 84465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Empty strings, null, undefined and "auto" are converted to 0, 84475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // complex values such as "rotate(1rad)" are returned as is, 84485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // simple values such as "10px" are parsed to Float. 84495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed; 84505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start an animation from one number to another 84535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) custom: function( from, to, unit ) { 84545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this, 84555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx = jQuery.fx; 84565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.startTime = fxNow || createFxNow(); 84585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.start = from; 84595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.end = to; 84605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" ); 84615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.start; 84625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = this.state = 0; 84635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function t( gotoEnd ) { 84655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return self.step(gotoEnd); 84665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) t.elem = this.elem; 84695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( t() && jQuery.timers.push(t) && !timerId ) { 84715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId = setInterval( fx.tick, fx.interval ); 84725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 84735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple 'show' function 84765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) show: function() { 84775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember where we started, so that we can go back to it later 84785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.orig[this.prop] = jQuery.style( this.elem, this.prop ); 84795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.show = true; 84805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Begin the animation 84825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure that we start at a small width/height to avoid any 84835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flash of content 84845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()); 84855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start by showing the element 84875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery( this.elem ).show(); 84885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Simple 'hide' function 84915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hide: function() { 84925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Remember where we started, so that we can go back to it later 84935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.orig[this.prop] = jQuery.style( this.elem, this.prop ); 84945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.options.hide = true; 84955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 84965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Begin the animation 84975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.custom(this.cur(), 0); 84985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 84995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Each step of an animation 85015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) step: function( gotoEnd ) { 85025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var t = fxNow || createFxNow(), 85035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = true, 85045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this.elem, 85055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = this.options, 85065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i, n; 85075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( gotoEnd || t >= options.duration + this.startTime ) { 85095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.end; 85105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = this.state = 1; 85115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(); 85125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.animatedProperties[ this.prop ] = true; 85145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( i in options.animatedProperties ) { 85165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options.animatedProperties[i] !== true ) { 85175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) done = false; 85185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( done ) { 85225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the overflow 85235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) { 85245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.each( [ "", "X", "Y" ], function (index, value) { 85265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style[ "overflow" + value ] = options.overflow[index]; 85275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 85285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Hide the element if the "hide" operation was done 85315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options.hide ) { 85325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery(elem).hide(); 85335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reset the properties, if the item has been hidden or shown 85365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options.hide || options.show ) { 85375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var p in options.animatedProperties ) { 85385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.style( elem, p, options.orig[p] ); 85395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Execute the complete function 85435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.complete.call( elem ); 85445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 85475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 85495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // classical easing cannot be used with an Infinity duration 85505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options.duration == Infinity ) { 85515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = t; 85525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 85535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) n = t - this.startTime; 85545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.state = n / options.duration; 85555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Perform the easing function, defaults to swing 85575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration ); 85585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.now = this.start + ((this.end - this.start) * this.pos); 85595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Perform the next step of the animation 85615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.update(); 85625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 85655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 85675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.extend( jQuery.fx, { 85695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tick: function() { 85705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) { 85715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !timers[i]() ) { 85725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timers.splice(i--, 1); 85735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !timers.length ) { 85775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fx.stop(); 85785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 85795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 85805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) interval: 13, 85825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stop: function() { 85845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval( timerId ); 85855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) timerId = null; 85865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 85875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) speeds: { 85895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) slow: 600, 85905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fast: 200, 85915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Default speed 85925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: 400 85935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 85945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 85955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) step: { 85965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) opacity: function( fx ) { 85975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.style( fx.elem, "opacity", fx.now ); 85985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 85995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _default: function( fx ) { 86015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) { 86025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit; 86035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 86045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fx.elem[ fx.prop ] = fx.now; 86055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 86095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( jQuery.expr && jQuery.expr.filters ) { 86115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.expr.filters.animated = function( elem ) { 86125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.grep(jQuery.timers, function( fn ) { 86135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem === fn.elem; 86145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }).length; 86155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 86165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 86175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Try to restore the default display value of an element 86195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function defaultDisplay( nodeName ) { 86205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elemdisplay[ nodeName ] ) { 86225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var body = document.body, 86245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = jQuery( "<" + nodeName + ">" ).appendTo( body ), 86255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = elem.css( "display" ); 86265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.remove(); 86285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the simple way fails, 86305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // get element's real default display by attaching it to a temp iframe 86315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( display === "none" || display === "" ) { 86325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // No iframe to use yet, so create it 86335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !iframe ) { 86345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframe = document.createElement( "iframe" ); 86355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframe.frameBorder = iframe.width = iframe.height = 0; 86365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.appendChild( iframe ); 86395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create a cacheable copy of the iframe document on first call. 86415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML 86425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // document to it; WebKit & Firefox won't allow reusing the iframe document. 86435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !iframeDoc || !iframe.createElement ) { 86445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document; 86455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" ); 86465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframeDoc.close(); 86475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = iframeDoc.createElement( nodeName ); 86505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframeDoc.body.appendChild( elem ); 86525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) display = jQuery.css( elem, "display" ); 86545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.removeChild( iframe ); 86565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Store the correct default display 86595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elemdisplay[ nodeName ] = display; 86605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elemdisplay[ nodeName ]; 86635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 86645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var rtable = /^t(?:able|d|h)$/i, 86695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rroot = /^(?:body|html)$/i; 86705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)if ( "getBoundingClientRect" in document.documentElement ) { 86725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.offset = function( options ) { 86735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0], box; 86745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options ) { 86765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( i ) { 86775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.setOffset( this, options, i ); 86785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 86795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || !elem.ownerDocument ) { 86825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 86835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === elem.ownerDocument.body ) { 86865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.offset.bodyOffset( elem ); 86875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 86885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) try { 86905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) box = elem.getBoundingClientRect(); 86915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } catch(e) {} 86925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var doc = elem.ownerDocument, 86945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) docElem = doc.documentElement; 86955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 86965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Make sure we're not dealing with a disconnected DOM node 86975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !box || !jQuery.contains( docElem, elem ) ) { 86985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return box ? { top: box.top, left: box.left } : { top: 0, left: 0 }; 86995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var body = doc.body, 87025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) win = getWindow(doc), 87035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clientTop = docElem.clientTop || body.clientTop || 0, 87045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clientLeft = docElem.clientLeft || body.clientLeft || 0, 87055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, 87065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, 87075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top = box.top + scrollTop - clientTop, 87085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = box.left + scrollLeft - clientLeft; 87095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 87115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 87125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} else { 87145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn.offset = function( options ) { 87155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0]; 87165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( options ) { 87185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( i ) { 87195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.setOffset( this, options, i ); 87205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 87215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem || !elem.ownerDocument ) { 87245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 87255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === elem.ownerDocument.body ) { 87285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.offset.bodyOffset( elem ); 87295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.initialize(); 87325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var computedStyle, 87345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent = elem.offsetParent, 87355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevOffsetParent = elem, 87365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc = elem.ownerDocument, 87375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) docElem = doc.documentElement, 87385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body = doc.body, 87395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defaultView = doc.defaultView, 87405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle, 87415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top = elem.offsetTop, 87425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = elem.offsetLeft; 87435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) { 87455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) { 87465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 87475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle; 87505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top -= elem.scrollTop; 87515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left -= elem.scrollLeft; 87525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( elem === offsetParent ) { 87545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += elem.offsetTop; 87555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += elem.offsetLeft; 87565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) { 87585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseFloat( computedStyle.borderTopWidth ) || 0; 87595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseFloat( computedStyle.borderLeftWidth ) || 0; 87605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevOffsetParent = offsetParent; 87635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent = elem.offsetParent; 87645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) { 87675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseFloat( computedStyle.borderTopWidth ) || 0; 87685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseFloat( computedStyle.borderLeftWidth ) || 0; 87695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) prevComputedStyle = computedStyle; 87725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) { 87755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += body.offsetTop; 87765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += body.offsetLeft; 87775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) { 87805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += Math.max( docElem.scrollTop, body.scrollTop ); 87815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += Math.max( docElem.scrollLeft, body.scrollLeft ); 87825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 87835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 87855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 87865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 87875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.offset = { 87895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) initialize: function() { 87905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0, 87915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; 87925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } ); 87945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 87955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container.innerHTML = html; 87965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.insertBefore( container, body.firstChild ); 87975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) innerDiv = container.firstChild; 87985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkDiv = innerDiv.firstChild; 87995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) td = innerDiv.nextSibling.firstChild.firstChild; 88005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesNotAddBorder = (checkDiv.offsetTop !== 5); 88025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesAddBorderForTableAndCells = (td.offsetTop === 5); 88035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkDiv.style.position = "fixed"; 88055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkDiv.style.top = "20px"; 88065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // safari subtracts parent border width here which is 5px 88085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15); 88095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) checkDiv.style.position = checkDiv.style.top = ""; 88105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) innerDiv.style.overflow = "hidden"; 88125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) innerDiv.style.position = "relative"; 88135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5); 88155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop); 88175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body.removeChild( container ); 88195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.initialize = jQuery.noop; 88205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 88215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bodyOffset: function( body ) { 88235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var top = body.offsetTop, 88245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left = body.offsetLeft; 88255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.offset.initialize(); 88275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) { 88295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top += parseFloat( jQuery.css(body, "marginTop") ) || 0; 88305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left += parseFloat( jQuery.css(body, "marginLeft") ) || 0; 88315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { top: top, left: left }; 88345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 88355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setOffset: function( elem, options, i ) { 88375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var position = jQuery.css( elem, "position" ); 88385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // set position first, in-case top/left are set even on static elem 88405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( position === "static" ) { 88415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.style.position = "relative"; 88425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var curElem = jQuery( elem ), 88455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curOffset = curElem.offset(), 88465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curCSSTop = jQuery.css( elem, "top" ), 88475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curCSSLeft = jQuery.css( elem, "left" ), 88485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1, 88495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) props = {}, curPosition = {}, curTop, curLeft; 88505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // need to be able to calculate position if either top or left is auto and position is either absolute or fixed 88525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( calculatePosition ) { 88535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curPosition = curElem.position(); 88545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curTop = curPosition.top; 88555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLeft = curPosition.left; 88565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 88575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curTop = parseFloat( curCSSTop ) || 0; 88585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curLeft = parseFloat( curCSSLeft ) || 0; 88595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( options ) ) { 88625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options = options.call( elem, i, curOffset ); 88635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (options.top != null) { 88665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) props.top = (options.top - curOffset.top) + curTop; 88675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (options.left != null) { 88695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) props.left = (options.left - curOffset.left) + curLeft; 88705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( "using" in options ) { 88735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) options.using.call( elem, props ); 88745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 88755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) curElem.css( props ); 88765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 88795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.fn.extend({ 88825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) position: function() { 88835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !this[0] ) { 88845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 88855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 88865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0], 88885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get *real* offsetParent 88905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent = this.offsetParent(), 88915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get correct offsets 88935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset = this.offset(), 88945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); 88955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 88965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Subtract element margins 88975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // note: when an element has margin: auto the offsetLeft and marginLeft 88985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // are the same in Safari causing offset.left to incorrectly be 0 88995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; 89005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; 89015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add offsetParent borders 89035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; 89045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; 89055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Subtract the two offsets 89075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return { 89085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) top: offset.top - parentOffset.top, 89095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) left: offset.left - parentOffset.left 89105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 89115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 89125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent: function() { 89145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.map(function() { 89155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var offsetParent = this.offsetParent || document.body; 89165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { 89175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) offsetParent = offsetParent.offsetParent; 89185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 89195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return offsetParent; 89205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 89215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 89225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 89235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create scrollLeft and scrollTop methods 89265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each( ["Left", "Top"], function( i, name ) { 89275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var method = "scroll" + name; 89285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ method ] = function( val ) { 89305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem, win; 89315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( val === undefined ) { 89335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem = this[ 0 ]; 89345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 89365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 89375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 89385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) win = getWindow( elem ); 89405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Return the scroll offset 89425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : 89435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.support.boxModel && win.document.documentElement[ method ] || 89445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) win.document.body[ method ] : 89455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem[ method ]; 89465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 89475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the scroll offset 89495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function() { 89505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) win = getWindow( this ); 89515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( win ) { 89535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) win.scrollTo( 89545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !i ? val : jQuery( win ).scrollLeft(), 89555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) i ? val : jQuery( win ).scrollTop() 89565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 89575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 89595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this[ method ] = val; 89605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 89615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 89625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 89635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 89645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function getWindow( elem ) { 89665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.isWindow( elem ) ? 89675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem : 89685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.nodeType === 9 ? 89695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.defaultView || elem.parentWindow : 89705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) false; 89715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 89725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods 89775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)jQuery.each([ "Height", "Width" ], function( i, name ) { 89785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var type = name.toLowerCase(); 89805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // innerHeight and innerWidth 89825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ "inner" + name ] = function() { 89835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0]; 89845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem && elem.style ? 89855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parseFloat( jQuery.css( elem, type, "padding" ) ) : 89865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 89875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 89885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // outerHeight and outerWidth 89905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ "outer" + name ] = function( margin ) { 89915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0]; 89925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem && elem.style ? 89935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) : 89945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) null; 89955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 89965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 89975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) jQuery.fn[ type ] = function( size ) { 89985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get window width or height 89995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elem = this[0]; 90005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( !elem ) { 90015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return size == null ? null : this; 90025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 90035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isFunction( size ) ) { 90055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.each(function( i ) { 90065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = jQuery( this ); 90075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self[ type ]( size.call( this, i, self[ type ]() ) ); 90085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 90095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 90105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ( jQuery.isWindow( elem ) ) { 90125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode 90135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat 90145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var docElemProp = elem.document.documentElement[ "client" + name ], 90155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body = elem.document.body; 90165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return elem.document.compatMode === "CSS1Compat" && docElemProp || 90175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) body && body[ "client" + name ] || docElemProp; 90185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get document width or height 90205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( elem.nodeType === 9 ) { 90215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Either scroll[Width/Height] or offset[Width/Height], whichever is greater 90225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return Math.max( 90235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.documentElement["client" + name], 90245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.body["scroll" + name], elem.documentElement["scroll" + name], 90255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elem.body["offset" + name], elem.documentElement["offset" + name] 90265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ); 90275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Get or set width or height on the element 90295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if ( size === undefined ) { 90305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var orig = jQuery.css( elem, type ), 90315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ret = parseFloat( orig ); 90325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return jQuery.isNaN( ret ) ? orig : ret; 90345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Set the width or height on the element (default to pixels if value is unitless) 90365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 90375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.css( type, typeof size === "string" ? size : size + "px" ); 90385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 90395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 90405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}); 90425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Expose jQuery to the global object 90455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)window.jQuery = window.$ = jQuery; 90465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})(window); 9047