{"payload":{"allShortcutsEnabled":false,"fileTree":{"lib":{"items":[{"name":"backbone.js","path":"lib/backbone.js","contentType":"file"},{"name":"jquery-1.6.2.js","path":"lib/jquery-1.6.2.js","contentType":"file"},{"name":"underscore.js","path":"lib/underscore.js","contentType":"file"}],"totalCount":3},"":{"items":[{"name":"lib","path":"lib","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"backbone.validation.js","path":"backbone.validation.js","contentType":"file"},{"name":"backbone.validation.min.js","path":"backbone.validation.min.js","contentType":"file"},{"name":"buster.js","path":"buster.js","contentType":"file"},{"name":"buster.min.js","path":"buster.min.js","contentType":"file"},{"name":"makefile","path":"makefile","contentType":"file"}],"totalCount":9}},"fileTreeProcessingTime":6.903844,"foldersToFetch":[],"repo":{"id":3386425,"defaultBranch":"master","name":"backbone.validation","ownerLogin":"addyosmani","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2012-02-08T11:03:19.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/110953?v=4","public":true,"private":false,"isOrgOwned":false},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1613772675.4550688","canEdit":false,"refType":"branch","currentOid":"f771ccf12a1a57ae2d2fefc3583ce495a9bbb29c"},"path":"lib/jquery-1.6.2.js","currentUser":null,"blob":{"rawLines":["/*!"," * jQuery JavaScript Library v1.6.2"," * http://jquery.com/"," *"," * Copyright 2011, John Resig"," * Dual licensed under the MIT or GPL Version 2 licenses."," * http://jquery.org/license"," *"," * Includes Sizzle.js"," * http://sizzlejs.com/"," * Copyright 2011, The Dojo Foundation"," * Released under the MIT, BSD, and GPL Licenses."," *"," * Date: Thu Jun 30 14:16:56 2011 -0400"," */","(function( window, undefined ) {","","// Use the correct document accordingly with window argument (sandbox)","var document = window.document,","\tnavigator = window.navigator,","\tlocation = window.location;","var jQuery = (function() {","","// Define a local copy of jQuery","var jQuery = function( selector, context ) {","\t\t// The jQuery object is actually just the init constructor 'enhanced'","\t\treturn new jQuery.fn.init( selector, context, rootjQuery );","\t},","","\t// Map over jQuery in case of overwrite","\t_jQuery = window.jQuery,","","\t// Map over the $ in case of overwrite","\t_$ = window.$,","","\t// A central reference to the root jQuery(document)","\trootjQuery,","","\t// A simple way to check for HTML strings or ID strings","\t// (both of which we optimize for)","\tquickExpr = /^(?:[^<]*(<[\\w\\W]+>)[^>]*$|#([\\w\\-]*)$)/,","","\t// Check if a string has a non-whitespace character in it","\trnotwhite = /\\S/,","","\t// Used for trimming whitespace","\ttrimLeft = /^\\s+/,","\ttrimRight = /\\s+$/,","","\t// Check for digits","\trdigit = /\\d/,","","\t// Match a standalone tag","\trsingleTag = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/,","","\t// JSON RegExp","\trvalidchars = /^[\\],:{}\\s]*$/,","\trvalidescape = /\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g,","\trvalidtokens = /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,","\trvalidbraces = /(?:^|:|,)(?:\\s*\\[)+/g,","","\t// Useragent RegExp","\trwebkit = /(webkit)[ \\/]([\\w.]+)/,","\tropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,","\trmsie = /(msie) ([\\w.]+)/,","\trmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,","","\t// Matches dashed string for camelizing","\trdashAlpha = /-([a-z])/ig,","","\t// Used by jQuery.camelCase as callback to replace()","\tfcamelCase = function( all, letter ) {","\t\treturn letter.toUpperCase();","\t},","","\t// Keep a UserAgent string for use with jQuery.browser","\tuserAgent = navigator.userAgent,","","\t// For matching the engine and version of the browser","\tbrowserMatch,","","\t// The deferred used on DOM ready","\treadyList,","","\t// The ready event handler","\tDOMContentLoaded,","","\t// Save a reference to some core methods","\ttoString = Object.prototype.toString,","\thasOwn = Object.prototype.hasOwnProperty,","\tpush = Array.prototype.push,","\tslice = Array.prototype.slice,","\ttrim = String.prototype.trim,","\tindexOf = Array.prototype.indexOf,","","\t// [[Class]] -> type pairs","\tclass2type = {};","","jQuery.fn = jQuery.prototype = {","\tconstructor: jQuery,","\tinit: function( selector, context, rootjQuery ) {","\t\tvar match, elem, ret, doc;","","\t\t// Handle $(\"\"), $(null), or $(undefined)","\t\tif ( !selector ) {","\t\t\treturn this;","\t\t}","","\t\t// Handle $(DOMElement)","\t\tif ( selector.nodeType ) {","\t\t\tthis.context = this[0] = selector;","\t\t\tthis.length = 1;","\t\t\treturn this;","\t\t}","","\t\t// The body element only exists once, optimize finding it","\t\tif ( selector === \"body\" && !context && document.body ) {","\t\t\tthis.context = document;","\t\t\tthis[0] = document.body;","\t\t\tthis.selector = selector;","\t\t\tthis.length = 1;","\t\t\treturn this;","\t\t}","","\t\t// Handle HTML strings","\t\tif ( typeof selector === \"string\" ) {","\t\t\t// Are we dealing with HTML string or an ID?","\t\t\tif ( selector.charAt(0) === \"<\" && selector.charAt( selector.length - 1 ) === \">\" && selector.length >= 3 ) {","\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check","\t\t\t\tmatch = [ null, selector, null ];","","\t\t\t} else {","\t\t\t\tmatch = quickExpr.exec( selector );","\t\t\t}","","\t\t\t// Verify a match, and that no context was specified for #id","\t\t\tif ( match && (match[1] || !context) ) {","","\t\t\t\t// HANDLE: $(html) -> $(array)","\t\t\t\tif ( match[1] ) {","\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;","\t\t\t\t\tdoc = (context ? context.ownerDocument || context : document);","","\t\t\t\t\t// If a single string is passed in and it's a single tag","\t\t\t\t\t// just do a createElement and skip the rest","\t\t\t\t\tret = rsingleTag.exec( selector );","","\t\t\t\t\tif ( ret ) {","\t\t\t\t\t\tif ( jQuery.isPlainObject( context ) ) {","\t\t\t\t\t\t\tselector = [ document.createElement( ret[1] ) ];","\t\t\t\t\t\t\tjQuery.fn.attr.call( selector, context, true );","","\t\t\t\t\t\t} else {","\t\t\t\t\t\t\tselector = [ doc.createElement( ret[1] ) ];","\t\t\t\t\t\t}","","\t\t\t\t\t} else {","\t\t\t\t\t\tret = jQuery.buildFragment( [ match[1] ], [ doc ] );","\t\t\t\t\t\tselector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;","\t\t\t\t\t}","","\t\t\t\t\treturn jQuery.merge( this, selector );","","\t\t\t\t// HANDLE: $(\"#id\")","\t\t\t\t} else {","\t\t\t\t\telem = document.getElementById( match[2] );","","\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns","\t\t\t\t\t// nodes that are no longer in the document #6963","\t\t\t\t\tif ( elem && elem.parentNode ) {","\t\t\t\t\t\t// Handle the case where IE and Opera return items","\t\t\t\t\t\t// by name instead of ID","\t\t\t\t\t\tif ( elem.id !== match[2] ) {","\t\t\t\t\t\t\treturn rootjQuery.find( selector );","\t\t\t\t\t\t}","","\t\t\t\t\t\t// Otherwise, we inject the element directly into the jQuery object","\t\t\t\t\t\tthis.length = 1;","\t\t\t\t\t\tthis[0] = elem;","\t\t\t\t\t}","","\t\t\t\t\tthis.context = document;","\t\t\t\t\tthis.selector = selector;","\t\t\t\t\treturn this;","\t\t\t\t}","","\t\t\t// HANDLE: $(expr, $(...))","\t\t\t} else if ( !context || context.jquery ) {","\t\t\t\treturn (context || rootjQuery).find( selector );","","\t\t\t// HANDLE: $(expr, context)","\t\t\t// (which is just equivalent to: $(context).find(expr)","\t\t\t} else {","\t\t\t\treturn this.constructor( context ).find( selector );","\t\t\t}","","\t\t// HANDLE: $(function)","\t\t// Shortcut for document ready","\t\t} else if ( jQuery.isFunction( selector ) ) {","\t\t\treturn rootjQuery.ready( selector );","\t\t}","","\t\tif (selector.selector !== undefined) {","\t\t\tthis.selector = selector.selector;","\t\t\tthis.context = selector.context;","\t\t}","","\t\treturn jQuery.makeArray( selector, this );","\t},","","\t// Start with an empty selector","\tselector: \"\",","","\t// The current version of jQuery being used","\tjquery: \"1.6.2\",","","\t// The default length of a jQuery object is 0","\tlength: 0,","","\t// The number of elements contained in the matched element set","\tsize: function() {","\t\treturn this.length;","\t},","","\ttoArray: function() {","\t\treturn slice.call( this, 0 );","\t},","","\t// Get the Nth element in the matched element set OR","\t// Get the whole matched element set as a clean array","\tget: function( num ) {","\t\treturn num == null ?","","\t\t\t// Return a 'clean' array","\t\t\tthis.toArray() :","","\t\t\t// Return just the object","\t\t\t( num < 0 ? this[ this.length + num ] : this[ num ] );","\t},","","\t// Take an array of elements and push it onto the stack","\t// (returning the new matched element set)","\tpushStack: function( elems, name, selector ) {","\t\t// Build a new jQuery matched element set","\t\tvar ret = this.constructor();","","\t\tif ( jQuery.isArray( elems ) ) {","\t\t\tpush.apply( ret, elems );","","\t\t} else {","\t\t\tjQuery.merge( ret, elems );","\t\t}","","\t\t// Add the old object onto the stack (as a reference)","\t\tret.prevObject = this;","","\t\tret.context = this.context;","","\t\tif ( name === \"find\" ) {","\t\t\tret.selector = this.selector + (this.selector ? \" \" : \"\") + selector;","\t\t} else if ( name ) {","\t\t\tret.selector = this.selector + \".\" + name + \"(\" + selector + \")\";","\t\t}","","\t\t// Return the newly-formed element set","\t\treturn ret;","\t},","","\t// Execute a callback for every element in the matched set.","\t// (You can seed the arguments with an array of args, but this is","\t// only used internally.)","\teach: function( callback, args ) {","\t\treturn jQuery.each( this, callback, args );","\t},","","\tready: function( fn ) {","\t\t// Attach the listeners","\t\tjQuery.bindReady();","","\t\t// Add the callback","\t\treadyList.done( fn );","","\t\treturn this;","\t},","","\teq: function( i ) {","\t\treturn i === -1 ?","\t\t\tthis.slice( i ) :","\t\t\tthis.slice( i, +i + 1 );","\t},","","\tfirst: function() {","\t\treturn this.eq( 0 );","\t},","","\tlast: function() {","\t\treturn this.eq( -1 );","\t},","","\tslice: function() {","\t\treturn this.pushStack( slice.apply( this, arguments ),","\t\t\t\"slice\", slice.call(arguments).join(\",\") );","\t},","","\tmap: function( callback ) {","\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {","\t\t\treturn callback.call( elem, i, elem );","\t\t}));","\t},","","\tend: function() {","\t\treturn this.prevObject || this.constructor(null);","\t},","","\t// For internal use only.","\t// Behaves like an Array's method, not like a jQuery method.","\tpush: push,","\tsort: [].sort,","\tsplice: [].splice","};","","// Give the init function the jQuery prototype for later instantiation","jQuery.fn.init.prototype = jQuery.fn;","","jQuery.extend = jQuery.fn.extend = function() {","\tvar options, name, src, copy, copyIsArray, clone,","\t\ttarget = arguments[0] || {},","\t\ti = 1,","\t\tlength = arguments.length,","\t\tdeep = false;","","\t// Handle a deep copy situation","\tif ( typeof target === \"boolean\" ) {","\t\tdeep = target;","\t\ttarget = arguments[1] || {};","\t\t// skip the boolean and the target","\t\ti = 2;","\t}","","\t// Handle case when target is a string or something (possible in deep copy)","\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {","\t\ttarget = {};","\t}","","\t// extend jQuery itself if only one argument is passed","\tif ( length === i ) {","\t\ttarget = this;","\t\t--i;","\t}","","\tfor ( ; i < length; i++ ) {","\t\t// Only deal with non-null/undefined values","\t\tif ( (options = arguments[ i ]) != null ) {","\t\t\t// Extend the base object","\t\t\tfor ( name in options ) {","\t\t\t\tsrc = target[ name ];","\t\t\t\tcopy = options[ name ];","","\t\t\t\t// Prevent never-ending loop","\t\t\t\tif ( target === copy ) {","\t\t\t\t\tcontinue;","\t\t\t\t}","","\t\t\t\t// Recurse if we're merging plain objects or arrays","\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {","\t\t\t\t\tif ( copyIsArray ) {","\t\t\t\t\t\tcopyIsArray = false;","\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];","","\t\t\t\t\t} else {","\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};","\t\t\t\t\t}","","\t\t\t\t\t// Never move original objects, clone them","\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );","","\t\t\t\t// Don't bring in undefined values","\t\t\t\t} else if ( copy !== undefined ) {","\t\t\t\t\ttarget[ name ] = copy;","\t\t\t\t}","\t\t\t}","\t\t}","\t}","","\t// Return the modified object","\treturn target;","};","","jQuery.extend({","\tnoConflict: function( deep ) {","\t\tif ( window.$ === jQuery ) {","\t\t\twindow.$ = _$;","\t\t}","","\t\tif ( deep && window.jQuery === jQuery ) {","\t\t\twindow.jQuery = _jQuery;","\t\t}","","\t\treturn jQuery;","\t},","","\t// Is the DOM ready to be used? Set to true once it occurs.","\tisReady: false,","","\t// A counter to track how many items to wait for before","\t// the ready event fires. See #6781","\treadyWait: 1,","","\t// Hold (or release) the ready event","\tholdReady: function( hold ) {","\t\tif ( hold ) {","\t\t\tjQuery.readyWait++;","\t\t} else {","\t\t\tjQuery.ready( true );","\t\t}","\t},","","\t// Handle when the DOM is ready","\tready: function( wait ) {","\t\t// Either a released hold or an DOMready/load event and not yet ready","\t\tif ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {","\t\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).","\t\t\tif ( !document.body ) {","\t\t\t\treturn setTimeout( jQuery.ready, 1 );","\t\t\t}","","\t\t\t// Remember that the DOM is ready","\t\t\tjQuery.isReady = true;","","\t\t\t// If a normal DOM Ready event fired, decrement, and wait if need be","\t\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {","\t\t\t\treturn;","\t\t\t}","","\t\t\t// If there are functions bound, to execute","\t\t\treadyList.resolveWith( document, [ jQuery ] );","","\t\t\t// Trigger any bound ready events","\t\t\tif ( jQuery.fn.trigger ) {","\t\t\t\tjQuery( document ).trigger( \"ready\" ).unbind( \"ready\" );","\t\t\t}","\t\t}","\t},","","\tbindReady: function() {","\t\tif ( readyList ) {","\t\t\treturn;","\t\t}","","\t\treadyList = jQuery._Deferred();","","\t\t// Catch cases where $(document).ready() is called after the","\t\t// browser event has already occurred.","\t\tif ( document.readyState === \"complete\" ) {","\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready","\t\t\treturn setTimeout( jQuery.ready, 1 );","\t\t}","","\t\t// Mozilla, Opera and webkit nightlies currently support this event","\t\tif ( document.addEventListener ) {","\t\t\t// Use the handy event callback","\t\t\tdocument.addEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );","","\t\t\t// A fallback to window.onload, that will always work","\t\t\twindow.addEventListener( \"load\", jQuery.ready, false );","","\t\t// If IE event model is used","\t\t} else if ( document.attachEvent ) {","\t\t\t// ensure firing before onload,","\t\t\t// maybe late but safe also for iframes","\t\t\tdocument.attachEvent( \"onreadystatechange\", DOMContentLoaded );","","\t\t\t// A fallback to window.onload, that will always work","\t\t\twindow.attachEvent( \"onload\", jQuery.ready );","","\t\t\t// If IE and not a frame","\t\t\t// continually check to see if the document is ready","\t\t\tvar toplevel = false;","","\t\t\ttry {","\t\t\t\ttoplevel = window.frameElement == null;","\t\t\t} catch(e) {}","","\t\t\tif ( document.documentElement.doScroll && toplevel ) {","\t\t\t\tdoScrollCheck();","\t\t\t}","\t\t}","\t},","","\t// See test/unit/core.js for details concerning isFunction.","\t// Since version 1.3, DOM methods and functions like alert","\t// aren't supported. They return false on IE (#2968).","\tisFunction: function( obj ) {","\t\treturn jQuery.type(obj) === \"function\";","\t},","","\tisArray: Array.isArray || function( obj ) {","\t\treturn jQuery.type(obj) === \"array\";","\t},","","\t// A crude way of determining if an object is a window","\tisWindow: function( obj ) {","\t\treturn obj && typeof obj === \"object\" && \"setInterval\" in obj;","\t},","","\tisNaN: function( obj ) {","\t\treturn obj == null || !rdigit.test( obj ) || isNaN( obj );","\t},","","\ttype: function( obj ) {","\t\treturn obj == null ?","\t\t\tString( obj ) :","\t\t\tclass2type[ toString.call(obj) ] || \"object\";","\t},","","\tisPlainObject: function( obj ) {","\t\t// Must be an Object.","\t\t// Because of IE, we also have to check the presence of the constructor property.","\t\t// Make sure that DOM nodes and window objects don't pass through, as well","\t\tif ( !obj || jQuery.type(obj) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {","\t\t\treturn false;","\t\t}","","\t\t// Not own constructor property must be Object","\t\tif ( obj.constructor &&","\t\t\t!hasOwn.call(obj, \"constructor\") &&","\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\") ) {","\t\t\treturn false;","\t\t}","","\t\t// Own properties are enumerated firstly, so to speed up,","\t\t// if last one is own, then all properties are own.","","\t\tvar key;","\t\tfor ( key in obj ) {}","","\t\treturn key === undefined || hasOwn.call( obj, key );","\t},","","\tisEmptyObject: function( obj ) {","\t\tfor ( var name in obj ) {","\t\t\treturn false;","\t\t}","\t\treturn true;","\t},","","\terror: function( msg ) {","\t\tthrow msg;","\t},","","\tparseJSON: function( data ) {","\t\tif ( typeof data !== \"string\" || !data ) {","\t\t\treturn null;","\t\t}","","\t\t// Make sure leading/trailing whitespace is removed (IE can't handle it)","\t\tdata = jQuery.trim( data );","","\t\t// Attempt to parse using the native JSON parser first","\t\tif ( window.JSON && window.JSON.parse ) {","\t\t\treturn window.JSON.parse( data );","\t\t}","","\t\t// Make sure the incoming data is actual JSON","\t\t// Logic borrowed from http://json.org/json2.js","\t\tif ( rvalidchars.test( data.replace( rvalidescape, \"@\" )","\t\t\t.replace( rvalidtokens, \"]\" )","\t\t\t.replace( rvalidbraces, \"\")) ) {","","\t\t\treturn (new Function( \"return \" + data ))();","","\t\t}","\t\tjQuery.error( \"Invalid JSON: \" + data );","\t},","","\t// Cross-browser xml parsing","\t// (xml & tmp used internally)","\tparseXML: function( data , xml , tmp ) {","","\t\tif ( window.DOMParser ) { // Standard","\t\t\ttmp = new DOMParser();","\t\t\txml = tmp.parseFromString( data , \"text/xml\" );","\t\t} else { // IE","\t\t\txml = new ActiveXObject( \"Microsoft.XMLDOM\" );","\t\t\txml.async = \"false\";","\t\t\txml.loadXML( data );","\t\t}","","\t\ttmp = xml.documentElement;","","\t\tif ( ! tmp || ! tmp.nodeName || tmp.nodeName === \"parsererror\" ) {","\t\t\tjQuery.error( \"Invalid XML: \" + data );","\t\t}","","\t\treturn xml;","\t},","","\tnoop: function() {},","","\t// Evaluates a script in a global context","\t// Workarounds based on findings by Jim Driscoll","\t// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context","\tglobalEval: function( data ) {","\t\tif ( data && rnotwhite.test( data ) ) {","\t\t\t// We use execScript on Internet Explorer","\t\t\t// We use an anonymous function so that context is window","\t\t\t// rather than jQuery in Firefox","\t\t\t( window.execScript || function( data ) {","\t\t\t\twindow[ \"eval\" ].call( window, data );","\t\t\t} )( data );","\t\t}","\t},","","\t// Converts a dashed string to camelCased string;","\t// Used by both the css and data modules","\tcamelCase: function( string ) {","\t\treturn string.replace( rdashAlpha, fcamelCase );","\t},","","\tnodeName: function( elem, name ) {","\t\treturn elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();","\t},","","\t// args is for internal usage only","\teach: function( object, callback, args ) {","\t\tvar name, i = 0,","\t\t\tlength = object.length,","\t\t\tisObj = length === undefined || jQuery.isFunction( object );","","\t\tif ( args ) {","\t\t\tif ( isObj ) {","\t\t\t\tfor ( name in object ) {","\t\t\t\t\tif ( callback.apply( object[ name ], args ) === false ) {","\t\t\t\t\t\tbreak;","\t\t\t\t\t}","\t\t\t\t}","\t\t\t} else {","\t\t\t\tfor ( ; i < length; ) {","\t\t\t\t\tif ( callback.apply( object[ i++ ], args ) === false ) {","\t\t\t\t\t\tbreak;","\t\t\t\t\t}","\t\t\t\t}","\t\t\t}","","\t\t// A special, fast, case for the most common use of each","\t\t} else {","\t\t\tif ( isObj ) {","\t\t\t\tfor ( name in object ) {","\t\t\t\t\tif ( callback.call( object[ name ], name, object[ name ] ) === false ) {","\t\t\t\t\t\tbreak;","\t\t\t\t\t}","\t\t\t\t}","\t\t\t} else {","\t\t\t\tfor ( ; i < length; ) {","\t\t\t\t\tif ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {","\t\t\t\t\t\tbreak;","\t\t\t\t\t}","\t\t\t\t}","\t\t\t}","\t\t}","","\t\treturn object;","\t},","","\t// Use native String.trim function wherever possible","\ttrim: trim ?","\t\tfunction( text ) {","\t\t\treturn text == null ?","\t\t\t\t\"\" :","\t\t\t\ttrim.call( text );","\t\t} :","","\t\t// Otherwise use our own trimming functionality","\t\tfunction( text ) {","\t\t\treturn text == null ?","\t\t\t\t\"\" :","\t\t\t\ttext.toString().replace( trimLeft, \"\" ).replace( trimRight, \"\" );","\t\t},","","\t// results is for internal usage only","\tmakeArray: function( array, results ) {","\t\tvar ret = results || [];","","\t\tif ( array != null ) {","\t\t\t// The window, strings (and functions) also have 'length'","\t\t\t// The extra typeof function check is to prevent crashes","\t\t\t// in Safari 2 (See: #3039)","\t\t\t// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930","\t\t\tvar type = jQuery.type( array );","","\t\t\tif ( array.length == null || type === \"string\" || type === \"function\" || type === \"regexp\" || jQuery.isWindow( array ) ) {","\t\t\t\tpush.call( ret, array );","\t\t\t} else {","\t\t\t\tjQuery.merge( ret, array );","\t\t\t}","\t\t}","","\t\treturn ret;","\t},","","\tinArray: function( elem, array ) {","","\t\tif ( indexOf ) {","\t\t\treturn indexOf.call( array, elem );","\t\t}","","\t\tfor ( var i = 0, length = array.length; i < length; i++ ) {","\t\t\tif ( array[ i ] === elem ) {","\t\t\t\treturn i;","\t\t\t}","\t\t}","","\t\treturn -1;","\t},","","\tmerge: function( first, second ) {","\t\tvar i = first.length,","\t\t\tj = 0;","","\t\tif ( typeof second.length === \"number\" ) {","\t\t\tfor ( var l = second.length; j < l; j++ ) {","\t\t\t\tfirst[ i++ ] = second[ j ];","\t\t\t}","","\t\t} else {","\t\t\twhile ( second[j] !== undefined ) {","\t\t\t\tfirst[ i++ ] = second[ j++ ];","\t\t\t}","\t\t}","","\t\tfirst.length = i;","","\t\treturn first;","\t},","","\tgrep: function( elems, callback, inv ) {","\t\tvar ret = [], retVal;","\t\tinv = !!inv;","","\t\t// Go through the array, only saving the items","\t\t// that pass the validator function","\t\tfor ( var i = 0, length = elems.length; i < length; i++ ) {","\t\t\tretVal = !!callback( elems[ i ], i );","\t\t\tif ( inv !== retVal ) {","\t\t\t\tret.push( elems[ i ] );","\t\t\t}","\t\t}","","\t\treturn ret;","\t},","","\t// arg is for internal usage only","\tmap: function( elems, callback, arg ) {","\t\tvar value, key, ret = [],","\t\t\ti = 0,","\t\t\tlength = elems.length,","\t\t\t// jquery objects are treated as arrays","\t\t\tisArray = elems instanceof jQuery || length !== undefined && typeof length === \"number\" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;","","\t\t// Go through the array, translating each of the items to their","\t\tif ( isArray ) {","\t\t\tfor ( ; i < length; i++ ) {","\t\t\t\tvalue = callback( elems[ i ], i, arg );","","\t\t\t\tif ( value != null ) {","\t\t\t\t\tret[ ret.length ] = value;","\t\t\t\t}","\t\t\t}","","\t\t// Go through every key on the object,","\t\t} else {","\t\t\tfor ( key in elems ) {","\t\t\t\tvalue = callback( elems[ key ], key, arg );","","\t\t\t\tif ( value != null ) {","\t\t\t\t\tret[ ret.length ] = value;","\t\t\t\t}","\t\t\t}","\t\t}","","\t\t// Flatten any nested arrays","\t\treturn ret.concat.apply( [], ret );","\t},","","\t// A global GUID counter for objects","\tguid: 1,","","\t// Bind a function to a context, optionally partially applying any","\t// arguments.","\tproxy: function( fn, context ) {","\t\tif ( typeof context === \"string\" ) {","\t\t\tvar tmp = fn[ context ];","\t\t\tcontext = fn;","\t\t\tfn = tmp;","\t\t}","","\t\t// Quick check to determine if target is callable, in the spec","\t\t// this throws a TypeError, but we will just return undefined.","\t\tif ( !jQuery.isFunction( fn ) ) {","\t\t\treturn undefined;","\t\t}","","\t\t// Simulated bind","\t\tvar args = slice.call( arguments, 2 ),","\t\t\tproxy = function() {","\t\t\t\treturn fn.apply( context, args.concat( slice.call( arguments ) ) );","\t\t\t};","","\t\t// Set the guid of unique handler to the same of original handler, so it can be removed","\t\tproxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;","","\t\treturn proxy;","\t},","","\t// Mutifunctional method to get and set values to a collection","\t// The value/s can optionally be executed if it's a function","\taccess: function( elems, key, value, exec, fn, pass ) {","\t\tvar length = elems.length;","","\t\t// Setting many attributes","\t\tif ( typeof key === \"object\" ) {","\t\t\tfor ( var k in key ) {","\t\t\t\tjQuery.access( elems, k, key[k], exec, fn, value );","\t\t\t}","\t\t\treturn elems;","\t\t}","","\t\t// Setting one attribute","\t\tif ( value !== undefined ) {","\t\t\t// Optionally, function values get executed if exec is true","\t\t\texec = !pass && exec && jQuery.isFunction(value);","","\t\t\tfor ( var i = 0; i < length; i++ ) {","\t\t\t\tfn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );","\t\t\t}","","\t\t\treturn elems;","\t\t}","","\t\t// Getting an attribute","\t\treturn length ? fn( elems[0], key ) : undefined;","\t},","","\tnow: function() {","\t\treturn (new Date()).getTime();","\t},","","\t// Use of jQuery.browser is frowned upon.","\t// More details: http://docs.jquery.com/Utilities/jQuery.browser","\tuaMatch: function( ua ) {","\t\tua = ua.toLowerCase();","","\t\tvar match = rwebkit.exec( ua ) ||","\t\t\tropera.exec( ua ) ||","\t\t\trmsie.exec( ua ) ||","\t\t\tua.indexOf(\"compatible\") < 0 && rmozilla.exec( ua ) ||","\t\t\t[];","","\t\treturn { browser: match[1] || \"\", version: match[2] || \"0\" };","\t},","","\tsub: function() {","\t\tfunction jQuerySub( selector, context ) {","\t\t\treturn new jQuerySub.fn.init( selector, context );","\t\t}","\t\tjQuery.extend( true, jQuerySub, this );","\t\tjQuerySub.superclass = this;","\t\tjQuerySub.fn = jQuerySub.prototype = this();","\t\tjQuerySub.fn.constructor = jQuerySub;","\t\tjQuerySub.sub = this.sub;","\t\tjQuerySub.fn.init = function init( selector, context ) {","\t\t\tif ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {","\t\t\t\tcontext = jQuerySub( context );","\t\t\t}","","\t\t\treturn jQuery.fn.init.call( this, selector, context, rootjQuerySub );","\t\t};","\t\tjQuerySub.fn.init.prototype = jQuerySub.fn;","\t\tvar rootjQuerySub = jQuerySub(document);","\t\treturn jQuerySub;","\t},","","\tbrowser: {}","});","","// Populate the class2type map","jQuery.each(\"Boolean Number String Function Array Date RegExp Object\".split(\" \"), function(i, name) {","\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();","});","","browserMatch = jQuery.uaMatch( userAgent );","if ( browserMatch.browser ) {","\tjQuery.browser[ browserMatch.browser ] = true;","\tjQuery.browser.version = browserMatch.version;","}","","// Deprecated, use jQuery.browser.webkit instead","if ( jQuery.browser.webkit ) {","\tjQuery.browser.safari = true;","}","","// IE doesn't match non-breaking spaces with \\s","if ( rnotwhite.test( \"\\xA0\" ) ) {","\ttrimLeft = /^[\\s\\xA0]+/;","\ttrimRight = /[\\s\\xA0]+$/;","}","","// All jQuery objects should point back to these","rootjQuery = jQuery(document);","","// Cleanup functions for the document ready method","if ( document.addEventListener ) {","\tDOMContentLoaded = function() {","\t\tdocument.removeEventListener( \"DOMContentLoaded\", DOMContentLoaded, false );","\t\tjQuery.ready();","\t};","","} else if ( document.attachEvent ) {","\tDOMContentLoaded = function() {","\t\t// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).","\t\tif ( document.readyState === \"complete\" ) {","\t\t\tdocument.detachEvent( \"onreadystatechange\", DOMContentLoaded );","\t\t\tjQuery.ready();","\t\t}","\t};","}","","// The DOM ready check for Internet Explorer","function doScrollCheck() {","\tif ( jQuery.isReady ) {","\t\treturn;","\t}","","\ttry {","\t\t// If IE is used, use the trick by Diego Perini","\t\t// http://javascript.nwbox.com/IEContentLoaded/","\t\tdocument.documentElement.doScroll(\"left\");","\t} catch(e) {","\t\tsetTimeout( doScrollCheck, 1 );","\t\treturn;","\t}","","\t// and execute any waiting functions","\tjQuery.ready();","}","","return jQuery;","","})();","","","var // Promise methods","\tpromiseMethods = \"done fail isResolved isRejected promise then always pipe\".split( \" \" ),","\t// Static reference to slice","\tsliceDeferred = [].slice;","","jQuery.extend({","\t// Create a simple deferred (one callbacks list)","\t_Deferred: function() {","\t\tvar // callbacks list","\t\t\tcallbacks = [],","\t\t\t// stored [ context , args ]","\t\t\tfired,","\t\t\t// to avoid firing when already doing so","\t\t\tfiring,","\t\t\t// flag to know if the deferred has been cancelled","\t\t\tcancelled,","\t\t\t// the deferred itself","\t\t\tdeferred = {","","\t\t\t\t// done( f1, f2, ...)","\t\t\t\tdone: function() {","\t\t\t\t\tif ( !cancelled ) {","\t\t\t\t\t\tvar args = arguments,","\t\t\t\t\t\t\ti,","\t\t\t\t\t\t\tlength,","\t\t\t\t\t\t\telem,","\t\t\t\t\t\t\ttype,","\t\t\t\t\t\t\t_fired;","\t\t\t\t\t\tif ( fired ) {","\t\t\t\t\t\t\t_fired = fired;","\t\t\t\t\t\t\tfired = 0;","\t\t\t\t\t\t}","\t\t\t\t\t\tfor ( i = 0, length = args.length; i < length; i++ ) {","\t\t\t\t\t\t\telem = args[ i ];","\t\t\t\t\t\t\ttype = jQuery.type( elem );","\t\t\t\t\t\t\tif ( type === \"array\" ) {","\t\t\t\t\t\t\t\tdeferred.done.apply( deferred, elem );","\t\t\t\t\t\t\t} else if ( type === \"function\" ) {","\t\t\t\t\t\t\t\tcallbacks.push( elem );","\t\t\t\t\t\t\t}","\t\t\t\t\t\t}","\t\t\t\t\t\tif ( _fired ) {","\t\t\t\t\t\t\tdeferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );","\t\t\t\t\t\t}","\t\t\t\t\t}","\t\t\t\t\treturn this;","\t\t\t\t},","","\t\t\t\t// resolve with given context and args","\t\t\t\tresolveWith: function( context, args ) {","\t\t\t\t\tif ( !cancelled && !fired && !firing ) {","\t\t\t\t\t\t// make sure args are available (#8421)","\t\t\t\t\t\targs = args || [];","\t\t\t\t\t\tfiring = 1;","\t\t\t\t\t\ttry {","\t\t\t\t\t\t\twhile( callbacks[ 0 ] ) {","\t\t\t\t\t\t\t\tcallbacks.shift().apply( context, args );","\t\t\t\t\t\t\t}","\t\t\t\t\t\t}","\t\t\t\t\t\tfinally {","\t\t\t\t\t\t\tfired = [ context, args ];","\t\t\t\t\t\t\tfiring = 0;","\t\t\t\t\t\t}","\t\t\t\t\t}","\t\t\t\t\treturn this;","\t\t\t\t},","","\t\t\t\t// resolve with this as context and given arguments","\t\t\t\tresolve: function() {","\t\t\t\t\tdeferred.resolveWith( this, arguments );","\t\t\t\t\treturn this;","\t\t\t\t},","","\t\t\t\t// Has this deferred been resolved?","\t\t\t\tisResolved: function() {","\t\t\t\t\treturn !!( firing || fired );","\t\t\t\t},","","\t\t\t\t// Cancel","\t\t\t\tcancel: function() {","\t\t\t\t\tcancelled = 1;","\t\t\t\t\tcallbacks = [];","\t\t\t\t\treturn this;","\t\t\t\t}","\t\t\t};","","\t\treturn deferred;","\t},","","\t// Full fledged deferred (two callbacks list)","\tDeferred: function( func ) {","\t\tvar deferred = jQuery._Deferred(),","\t\t\tfailDeferred = jQuery._Deferred(),","\t\t\tpromise;","\t\t// Add errorDeferred methods, then and promise","\t\tjQuery.extend( deferred, {","\t\t\tthen: function( doneCallbacks, failCallbacks ) {","\t\t\t\tdeferred.done( doneCallbacks ).fail( failCallbacks );","\t\t\t\treturn this;","\t\t\t},","\t\t\talways: function() {","\t\t\t\treturn deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );","\t\t\t},","\t\t\tfail: failDeferred.done,","\t\t\trejectWith: failDeferred.resolveWith,","\t\t\treject: failDeferred.resolve,","\t\t\tisRejected: failDeferred.isResolved,","\t\t\tpipe: function( fnDone, fnFail ) {","\t\t\t\treturn jQuery.Deferred(function( newDefer ) {","\t\t\t\t\tjQuery.each( {","\t\t\t\t\t\tdone: [ fnDone, \"resolve\" ],","\t\t\t\t\t\tfail: [ fnFail, \"reject\" ]","\t\t\t\t\t}, function( handler, data ) {","\t\t\t\t\t\tvar fn = data[ 0 ],","\t\t\t\t\t\t\taction = data[ 1 ],","\t\t\t\t\t\t\treturned;","\t\t\t\t\t\tif ( jQuery.isFunction( fn ) ) {","\t\t\t\t\t\t\tdeferred[ handler ](function() {","\t\t\t\t\t\t\t\treturned = fn.apply( this, arguments );","\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {","\t\t\t\t\t\t\t\t\treturned.promise().then( newDefer.resolve, newDefer.reject );","\t\t\t\t\t\t\t\t} else {","\t\t\t\t\t\t\t\t\tnewDefer[ action ]( returned );","\t\t\t\t\t\t\t\t}","\t\t\t\t\t\t\t});","\t\t\t\t\t\t} else {","\t\t\t\t\t\t\tdeferred[ handler ]( newDefer[ action ] );","\t\t\t\t\t\t}","\t\t\t\t\t});","\t\t\t\t}).promise();","\t\t\t},","\t\t\t// Get a promise for this deferred","\t\t\t// If obj is provided, the promise aspect is added to the object","\t\t\tpromise: function( obj ) {","\t\t\t\tif ( obj == null ) {","\t\t\t\t\tif ( promise ) {","\t\t\t\t\t\treturn promise;","\t\t\t\t\t}","\t\t\t\t\tpromise = obj = {};","\t\t\t\t}","\t\t\t\tvar i = promiseMethods.length;","\t\t\t\twhile( i-- ) {","\t\t\t\t\tobj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];","\t\t\t\t}","\t\t\t\treturn obj;","\t\t\t}","\t\t});","\t\t// Make sure only one callback list will be used","\t\tdeferred.done( failDeferred.cancel ).fail( deferred.cancel );","\t\t// Unexpose cancel","\t\tdelete deferred.cancel;","\t\t// Call given func if any","\t\tif ( func ) {","\t\t\tfunc.call( deferred, deferred );","\t\t}","\t\treturn deferred;","\t},","","\t// Deferred helper","\twhen: function( firstParam ) {","\t\tvar args = arguments,","\t\t\ti = 0,","\t\t\tlength = args.length,","\t\t\tcount = length,","\t\t\tdeferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?","\t\t\t\tfirstParam :","\t\t\t\tjQuery.Deferred();","\t\tfunction resolveFunc( i ) {","\t\t\treturn function( value ) {","\t\t\t\targs[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;","\t\t\t\tif ( !( --count ) ) {","\t\t\t\t\t// Strange bug in FF4:","\t\t\t\t\t// Values changed onto the arguments object sometimes end up as undefined values","\t\t\t\t\t// outside the $.when method. Cloning the object into a fresh array solves the issue","\t\t\t\t\tdeferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );","\t\t\t\t}","\t\t\t};","\t\t}","\t\tif ( length > 1 ) {","\t\t\tfor( ; i < length; i++ ) {","\t\t\t\tif ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {","\t\t\t\t\targs[ i ].promise().then( resolveFunc(i), deferred.reject );","\t\t\t\t} else {","\t\t\t\t\t--count;","\t\t\t\t}","\t\t\t}","\t\t\tif ( !count ) {","\t\t\t\tdeferred.resolveWith( deferred, args );","\t\t\t}","\t\t} else if ( deferred !== firstParam ) {","\t\t\tdeferred.resolveWith( deferred, length ? [ firstParam ] : [] );","\t\t}","\t\treturn deferred.promise();","\t}","});","","","","jQuery.support = (function() {","","\tvar div = document.createElement( \"div\" ),","\t\tdocumentElement = document.documentElement,","\t\tall,","\t\ta,","\t\tselect,","\t\topt,","\t\tinput,","\t\tmarginDiv,","\t\tsupport,","\t\tfragment,","\t\tbody,","\t\ttestElementParent,","\t\ttestElement,","\t\ttestElementStyle,","\t\ttds,","\t\tevents,","\t\teventName,","\t\ti,","\t\tisSupported;","","\t// Preliminary tests","\tdiv.setAttribute(\"className\", \"t\");","\tdiv.innerHTML = \"
t |