Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14217 anikendra 1
define([
2
	"./var/arr",
3
	"./var/slice",
4
	"./var/concat",
5
	"./var/push",
6
	"./var/indexOf",
7
	"./var/class2type",
8
	"./var/toString",
9
	"./var/hasOwn",
10
	"./var/support"
11
], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
12
 
13
var
14
	// Use the correct document accordingly with window argument (sandbox)
15
	document = window.document,
16
 
17
	version = "@VERSION",
18
 
19
	// Define a local copy of jQuery
20
	jQuery = function( selector, context ) {
21
		// The jQuery object is actually just the init constructor 'enhanced'
22
		// Need init if jQuery is called (just allow error to be thrown if not included)
23
		return new jQuery.fn.init( selector, context );
24
	},
25
 
26
	// Support: Android<4.1
27
	// Make sure we trim BOM and NBSP
28
	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
29
 
30
	// Matches dashed string for camelizing
31
	rmsPrefix = /^-ms-/,
32
	rdashAlpha = /-([\da-z])/gi,
33
 
34
	// Used by jQuery.camelCase as callback to replace()
35
	fcamelCase = function( all, letter ) {
36
		return letter.toUpperCase();
37
	};
38
 
39
jQuery.fn = jQuery.prototype = {
40
	// The current version of jQuery being used
41
	jquery: version,
42
 
43
	constructor: jQuery,
44
 
45
	// Start with an empty selector
46
	selector: "",
47
 
48
	// The default length of a jQuery object is 0
49
	length: 0,
50
 
51
	toArray: function() {
52
		return slice.call( this );
53
	},
54
 
55
	// Get the Nth element in the matched element set OR
56
	// Get the whole matched element set as a clean array
57
	get: function( num ) {
58
		return num != null ?
59
 
60
			// Return just the one element from the set
61
			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
62
 
63
			// Return all the elements in a clean array
64
			slice.call( this );
65
	},
66
 
67
	// Take an array of elements and push it onto the stack
68
	// (returning the new matched element set)
69
	pushStack: function( elems ) {
70
 
71
		// Build a new jQuery matched element set
72
		var ret = jQuery.merge( this.constructor(), elems );
73
 
74
		// Add the old object onto the stack (as a reference)
75
		ret.prevObject = this;
76
		ret.context = this.context;
77
 
78
		// Return the newly-formed element set
79
		return ret;
80
	},
81
 
82
	// Execute a callback for every element in the matched set.
83
	// (You can seed the arguments with an array of args, but this is
84
	// only used internally.)
85
	each: function( callback, args ) {
86
		return jQuery.each( this, callback, args );
87
	},
88
 
89
	map: function( callback ) {
90
		return this.pushStack( jQuery.map(this, function( elem, i ) {
91
			return callback.call( elem, i, elem );
92
		}));
93
	},
94
 
95
	slice: function() {
96
		return this.pushStack( slice.apply( this, arguments ) );
97
	},
98
 
99
	first: function() {
100
		return this.eq( 0 );
101
	},
102
 
103
	last: function() {
104
		return this.eq( -1 );
105
	},
106
 
107
	eq: function( i ) {
108
		var len = this.length,
109
			j = +i + ( i < 0 ? len : 0 );
110
		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
111
	},
112
 
113
	end: function() {
114
		return this.prevObject || this.constructor(null);
115
	},
116
 
117
	// For internal use only.
118
	// Behaves like an Array's method, not like a jQuery method.
119
	push: push,
120
	sort: arr.sort,
121
	splice: arr.splice
122
};
123
 
124
jQuery.extend = jQuery.fn.extend = function() {
125
	var options, name, src, copy, copyIsArray, clone,
126
		target = arguments[0] || {},
127
		i = 1,
128
		length = arguments.length,
129
		deep = false;
130
 
131
	// Handle a deep copy situation
132
	if ( typeof target === "boolean" ) {
133
		deep = target;
134
 
135
		// Skip the boolean and the target
136
		target = arguments[ i ] || {};
137
		i++;
138
	}
139
 
140
	// Handle case when target is a string or something (possible in deep copy)
141
	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
142
		target = {};
143
	}
144
 
145
	// Extend jQuery itself if only one argument is passed
146
	if ( i === length ) {
147
		target = this;
148
		i--;
149
	}
150
 
151
	for ( ; i < length; i++ ) {
152
		// Only deal with non-null/undefined values
153
		if ( (options = arguments[ i ]) != null ) {
154
			// Extend the base object
155
			for ( name in options ) {
156
				src = target[ name ];
157
				copy = options[ name ];
158
 
159
				// Prevent never-ending loop
160
				if ( target === copy ) {
161
					continue;
162
				}
163
 
164
				// Recurse if we're merging plain objects or arrays
165
				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
166
					if ( copyIsArray ) {
167
						copyIsArray = false;
168
						clone = src && jQuery.isArray(src) ? src : [];
169
 
170
					} else {
171
						clone = src && jQuery.isPlainObject(src) ? src : {};
172
					}
173
 
174
					// Never move original objects, clone them
175
					target[ name ] = jQuery.extend( deep, clone, copy );
176
 
177
				// Don't bring in undefined values
178
				} else if ( copy !== undefined ) {
179
					target[ name ] = copy;
180
				}
181
			}
182
		}
183
	}
184
 
185
	// Return the modified object
186
	return target;
187
};
188
 
189
jQuery.extend({
190
	// Unique for each copy of jQuery on the page
191
	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
192
 
193
	// Assume jQuery is ready without the ready module
194
	isReady: true,
195
 
196
	error: function( msg ) {
197
		throw new Error( msg );
198
	},
199
 
200
	noop: function() {},
201
 
202
	isFunction: function( obj ) {
203
		return jQuery.type(obj) === "function";
204
	},
205
 
206
	isArray: Array.isArray,
207
 
208
	isWindow: function( obj ) {
209
		return obj != null && obj === obj.window;
210
	},
211
 
212
	isNumeric: function( obj ) {
213
		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
214
		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
215
		// subtraction forces infinities to NaN
216
		// adding 1 corrects loss of precision from parseFloat (#15100)
217
		return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
218
	},
219
 
220
	isPlainObject: function( obj ) {
221
		// Not plain objects:
222
		// - Any object or value whose internal [[Class]] property is not "[object Object]"
223
		// - DOM nodes
224
		// - window
225
		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
226
			return false;
227
		}
228
 
229
		if ( obj.constructor &&
230
				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
231
			return false;
232
		}
233
 
234
		// If the function hasn't returned already, we're confident that
235
		// |obj| is a plain object, created by {} or constructed with new Object
236
		return true;
237
	},
238
 
239
	isEmptyObject: function( obj ) {
240
		var name;
241
		for ( name in obj ) {
242
			return false;
243
		}
244
		return true;
245
	},
246
 
247
	type: function( obj ) {
248
		if ( obj == null ) {
249
			return obj + "";
250
		}
251
		// Support: Android<4.0, iOS<6 (functionish RegExp)
252
		return typeof obj === "object" || typeof obj === "function" ?
253
			class2type[ toString.call(obj) ] || "object" :
254
			typeof obj;
255
	},
256
 
257
	// Evaluates a script in a global context
258
	globalEval: function( code ) {
259
		var script,
260
			indirect = eval;
261
 
262
		code = jQuery.trim( code );
263
 
264
		if ( code ) {
265
			// If the code includes a valid, prologue position
266
			// strict mode pragma, execute code by injecting a
267
			// script tag into the document.
268
			if ( code.indexOf("use strict") === 1 ) {
269
				script = document.createElement("script");
270
				script.text = code;
271
				document.head.appendChild( script ).parentNode.removeChild( script );
272
			} else {
273
			// Otherwise, avoid the DOM node creation, insertion
274
			// and removal by using an indirect global eval
275
				indirect( code );
276
			}
277
		}
278
	},
279
 
280
	// Convert dashed to camelCase; used by the css and data modules
281
	// Support: IE9-11+
282
	// Microsoft forgot to hump their vendor prefix (#9572)
283
	camelCase: function( string ) {
284
		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
285
	},
286
 
287
	nodeName: function( elem, name ) {
288
		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
289
	},
290
 
291
	// args is for internal usage only
292
	each: function( obj, callback, args ) {
293
		var value,
294
			i = 0,
295
			length = obj.length,
296
			isArray = isArraylike( obj );
297
 
298
		if ( args ) {
299
			if ( isArray ) {
300
				for ( ; i < length; i++ ) {
301
					value = callback.apply( obj[ i ], args );
302
 
303
					if ( value === false ) {
304
						break;
305
					}
306
				}
307
			} else {
308
				for ( i in obj ) {
309
					value = callback.apply( obj[ i ], args );
310
 
311
					if ( value === false ) {
312
						break;
313
					}
314
				}
315
			}
316
 
317
		// A special, fast, case for the most common use of each
318
		} else {
319
			if ( isArray ) {
320
				for ( ; i < length; i++ ) {
321
					value = callback.call( obj[ i ], i, obj[ i ] );
322
 
323
					if ( value === false ) {
324
						break;
325
					}
326
				}
327
			} else {
328
				for ( i in obj ) {
329
					value = callback.call( obj[ i ], i, obj[ i ] );
330
 
331
					if ( value === false ) {
332
						break;
333
					}
334
				}
335
			}
336
		}
337
 
338
		return obj;
339
	},
340
 
341
	// Support: Android<4.1
342
	trim: function( text ) {
343
		return text == null ?
344
			"" :
345
			( text + "" ).replace( rtrim, "" );
346
	},
347
 
348
	// results is for internal usage only
349
	makeArray: function( arr, results ) {
350
		var ret = results || [];
351
 
352
		if ( arr != null ) {
353
			if ( isArraylike( Object(arr) ) ) {
354
				jQuery.merge( ret,
355
					typeof arr === "string" ?
356
					[ arr ] : arr
357
				);
358
			} else {
359
				push.call( ret, arr );
360
			}
361
		}
362
 
363
		return ret;
364
	},
365
 
366
	inArray: function( elem, arr, i ) {
367
		return arr == null ? -1 : indexOf.call( arr, elem, i );
368
	},
369
 
370
	merge: function( first, second ) {
371
		var len = +second.length,
372
			j = 0,
373
			i = first.length;
374
 
375
		for ( ; j < len; j++ ) {
376
			first[ i++ ] = second[ j ];
377
		}
378
 
379
		first.length = i;
380
 
381
		return first;
382
	},
383
 
384
	grep: function( elems, callback, invert ) {
385
		var callbackInverse,
386
			matches = [],
387
			i = 0,
388
			length = elems.length,
389
			callbackExpect = !invert;
390
 
391
		// Go through the array, only saving the items
392
		// that pass the validator function
393
		for ( ; i < length; i++ ) {
394
			callbackInverse = !callback( elems[ i ], i );
395
			if ( callbackInverse !== callbackExpect ) {
396
				matches.push( elems[ i ] );
397
			}
398
		}
399
 
400
		return matches;
401
	},
402
 
403
	// arg is for internal usage only
404
	map: function( elems, callback, arg ) {
405
		var value,
406
			i = 0,
407
			length = elems.length,
408
			isArray = isArraylike( elems ),
409
			ret = [];
410
 
411
		// Go through the array, translating each of the items to their new values
412
		if ( isArray ) {
413
			for ( ; i < length; i++ ) {
414
				value = callback( elems[ i ], i, arg );
415
 
416
				if ( value != null ) {
417
					ret.push( value );
418
				}
419
			}
420
 
421
		// Go through every key on the object,
422
		} else {
423
			for ( i in elems ) {
424
				value = callback( elems[ i ], i, arg );
425
 
426
				if ( value != null ) {
427
					ret.push( value );
428
				}
429
			}
430
		}
431
 
432
		// Flatten any nested arrays
433
		return concat.apply( [], ret );
434
	},
435
 
436
	// A global GUID counter for objects
437
	guid: 1,
438
 
439
	// Bind a function to a context, optionally partially applying any
440
	// arguments.
441
	proxy: function( fn, context ) {
442
		var tmp, args, proxy;
443
 
444
		if ( typeof context === "string" ) {
445
			tmp = fn[ context ];
446
			context = fn;
447
			fn = tmp;
448
		}
449
 
450
		// Quick check to determine if target is callable, in the spec
451
		// this throws a TypeError, but we will just return undefined.
452
		if ( !jQuery.isFunction( fn ) ) {
453
			return undefined;
454
		}
455
 
456
		// Simulated bind
457
		args = slice.call( arguments, 2 );
458
		proxy = function() {
459
			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
460
		};
461
 
462
		// Set the guid of unique handler to the same of original handler, so it can be removed
463
		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
464
 
465
		return proxy;
466
	},
467
 
468
	now: Date.now,
469
 
470
	// jQuery.support is not used in Core but other projects attach their
471
	// properties to it so it needs to exist.
472
	support: support
473
});
474
 
475
// Populate the class2type map
476
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
477
	class2type[ "[object " + name + "]" ] = name.toLowerCase();
478
});
479
 
480
function isArraylike( obj ) {
481
	var length = obj.length,
482
		type = jQuery.type( obj );
483
 
484
	if ( type === "function" || jQuery.isWindow( obj ) ) {
485
		return false;
486
	}
487
 
488
	if ( obj.nodeType === 1 && length ) {
489
		return true;
490
	}
491
 
492
	return type === "array" || length === 0 ||
493
		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
494
}
495
 
496
return jQuery;
497
});