<html>
<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
</head>
<body onload="prettyPrint();">
<pre class="prettyprint lang-js">/*!
- * Ext JS Library 3.0.3
- * Copyright(c) 2006-2009 Ext JS, LLC
+ * Ext JS Library 3.3.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
* licensing@extjs.com
* http://www.extjs.com/license
*/
* @class Ext
*/
-Ext.ns("Ext.grid", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu",
+Ext.ns("Ext.grid", "Ext.list", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu",
"Ext.state", "Ext.layout", "Ext.app", "Ext.ux", "Ext.chart", "Ext.direct");
<div id="prop-Ext-ux"></div>/**
* Namespace alloted for extensions to the framework.
*/
Ext.apply(Ext, function(){
- var E = Ext,
+ var E = Ext,
idSeed = 0,
scrollWidth = null;
emptyFn : function(){},
<div id="prop-Ext-BLANK_IMAGE_URL"></div>/**
- * URL to a 1x1 transparent gif image used by Ext to create inline icons with CSS background images.
+ * URL to a 1x1 transparent gif image used by Ext to create inline icons with CSS background images.
* In older versions of IE, this defaults to "http://extjs.com/s.gif" and you should change this to a URL on your server.
* For other browsers it uses an inline data URL.
* @type String
*/
BLANK_IMAGE_URL : Ext.isIE6 || Ext.isIE7 || Ext.isAir ?
- 'http:/' + '/extjs.com/s.gif' :
+ 'http:/' + '/www.extjs.com/s.gif' :
'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
extendX : function(supr, fn){
* @return {Number} Value, if numeric, else defaultValue
*/
num : function(v, defaultValue){
- v = Number(Ext.isEmpty(v) || Ext.isBoolean(v) ? NaN : v);
- return isNaN(v)? defaultValue : v;
+ v = Number(Ext.isEmpty(v) || Ext.isArray(v) || typeof v == 'boolean' || (typeof v == 'string' && v.trim().length == 0) ? NaN : v);
+ return isNaN(v) ? defaultValue : v;
},
<div id="method-Ext-value"></div>/**
'#foo a@click' : function(e, t){
// do something
},
-
+
// add the same listener to multiple selectors (separated by comma BEFORE the @)
'#foo a, #bar span.some-class@mouseover' : function(){
// do something
}
});
- * </code></pre>
+ * </code></pre>
* @param {Object} obj The list of behaviors to apply
*/
addBehaviors : function(o){
cache = null;
}
},
-
+
<div id="method-Ext-getScrollBarWidth"></div>/**
* Utility method for getting the width of the browser scrollbar. This can differ depending on
* operating system settings, such as the theme or font size.
if(!Ext.isReady){
return 0;
}
-
+
if(force === true || scrollWidth === null){
// Append our div, do our calculation and then remove it
var div = Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),
this.initialBox = Ext.copyTo({}, this.initialConfig, 'x,y,width,height');
}
});
- * </code></pre>
- * @param {Object} The destination object.
- * @param {Object} The source object.
- * @param {Array/String} Either an Array of property names, or a comma-delimited list
+ * </code></pre>
+ * @param {Object} dest The destination object.
+ * @param {Object} source The source object.
+ * @param {Array/String} names Either an Array of property names, or a comma-delimited list
* of property names to copy.
* @return {Object} The modified object.
*/
copyTo : function(dest, source, names){
- if(Ext.isString(names)){
+ if(typeof names == 'string'){
names = names.split(/[,;\s]/);
}
Ext.each(names, function(name){
if(arg){
if(Ext.isArray(arg)){
this.destroy.apply(this, arg);
- }else if(Ext.isFunction(arg.destroy)){
+ }else if(typeof arg.destroy == 'function'){
arg.destroy();
}else if(arg.dom){
arg.remove();
- }
+ }
}
}, this);
},
* @return {Number} The mean.
*/
mean : function(arr){
- return Ext.sum(arr) / arr.length;
+ return arr.length > 0 ? Ext.sum(arr) / arr.length : undefined;
},
<div id="method-Ext-sum"></div>/**
<div id="method-Ext-partition"></div>/**
* Partitions the set into two sets: a true set and a false set.
- * Example:
- * Example2:
+ * Example:
+ * Example2:
* <pre><code>
// Example 1:
Ext.partition([true, false, true, true, false]); // [[true, true, true], [false, false]]
* </code></pre>
* @param {Array|NodeList} arr The Array of items to invoke the method on.
* @param {String} methodName The method name to invoke.
- * @param {Anything} ... Arguments to send into the method invocation.
+ * @param {...*} args Arguments to send into the method invocation.
* @return {Array} The results of invoking the method on each item in the array.
*/
invoke : function(arr, methodName){
var ret = [],
args = Array.prototype.slice.call(arguments, 2);
Ext.each(arr, function(v,i) {
- if (v && Ext.isFunction(v[methodName])) {
+ if (v && typeof v[methodName] == 'function') {
ret.push(v[methodName].apply(v, args));
} else {
ret.push(undefined);
* @return {Array} The zipped set.
*/
zip : function(){
- var parts = Ext.partition(arguments, function( val ){ return !Ext.isFunction(val); }),
+ var parts = Ext.partition(arguments, function( val ){ return typeof val != 'function'; }),
arrs = parts[0],
fn = parts[1][0],
len = Ext.max(Ext.pluck(arrs, "length")),
case RegExp: return 'regexp';
case Date: return 'date';
}
- if(Ext.isNumber(o.length) && Ext.isFunction(o.item)) {
+ if(typeof o.length == 'number' && typeof o.item == 'function') {
return 'nodelist';
}
}
// internal
callback : function(cb, scope, args, delay){
- if(Ext.isFunction(cb)){
+ if(typeof cb == 'function'){
if(delay){
cb.defer(delay, scope, args || []);
}else{
*/
createSequence : function(fcn, scope){
var method = this;
- return !Ext.isFunction(fcn) ?
+ return (typeof fcn != 'function') ?
this :
function(){
var retval = method.apply(this || window, arguments);
return Math.min(Math.max(this, min), max);
}
});
-</pre>
+</pre>
</body>
</html>
\ No newline at end of file