/*!
- * Ext JS Library 3.1.0
- * Copyright(c) 2006-2009 Ext JS, LLC
+ * Ext JS Library 3.1.1
+ * Copyright(c) 2006-2010 Ext JS, LLC
* licensing@extjs.com
* http://www.extjs.com/license
*/
* The version of the framework
* @type String
*/
- version : '3.1.0'
+ version : '3.1.1'
};
/**
DOC = document,
isStrict = DOC.compatMode == "CSS1Compat",
isOpera = check(/opera/),
- isChrome = check(/chrome/),
+ isChrome = check(/\bchrome\b/),
isWebKit = check(/webkit/),
isSafari = !isChrome && check(/safari/),
isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2
* @return {String} The generated Id.
*/
id : function(el, prefix){
- return (el = Ext.getDom(el) || {}).id = el.id || (prefix || "ext-gen") + (++idSeed);
+ el = Ext.getDom(el, true) || {};
+ if (!el.id) {
+ el.id = (prefix || "ext-gen") + (++idSeed);
+ }
+ return el.id;
},
/**
}
//NodeList has an item and length property
//IXMLDOMNodeList has nextNode method, needs to be checked first.
- return ((v.nextNode || v.item) && Ext.isNumber(v.length));
+ return ((typeof v.nextNode != 'undefined' || v.item) && Ext.isNumber(v.length));
},
/**
/**
* Return the dom node for the passed String (id), dom node, or Ext.Element.
+ * Optional 'strict' flag is needed for IE since it can return 'name' and
+ * 'id' elements by using getElementById.
* Here are some examples:
* <pre><code>
// gets dom node based on id
* @param {Mixed} el
* @return HTMLElement
*/
- getDom : function(el){
+ getDom : function(el, strict){
if(!el || !DOC){
return null;
}
- return el.dom ? el.dom : (Ext.isString(el) ? DOC.getElementById(el) : el);
+ if (el.dom){
+ return el.dom;
+ } else {
+ if (Ext.isString(el)) {
+ var e = DOC.getElementById(el);
+ // IE returns elements with the 'name' and 'id' attribute.
+ // we do a strict check to return the element with only the id attribute
+ if (e && isIE && strict) {
+ if (el == e.getAttribute('id')) {
+ return e;
+ } else {
+ return null;
+ }
+ }
+ return e;
+ } else {
+ return el;
+ }
+ }
},
/**
* @return {Number} Value, if numeric, else defaultValue
*/
num : function(v, defaultValue){
- v = Number(Ext.isEmpty(v) || Ext.isBoolean(v) ? NaN : v);
+ v = Number(Ext.isEmpty(v) || Ext.isArray(v) || Ext.isBoolean(v) || (Ext.isString(v) && v.trim().length == 0) ? NaN : v);
return isNaN(v) ? defaultValue : v;
},
* @return {Number} The mean.
*/
mean : function(arr){
- return Ext.sum(arr) / arr.length;
+ return arr.length > 0 ? Ext.sum(arr) / arr.length : undefined;
},
/**
mouseEnterSupported = (parseInt(version[0]) >= 2) || (parseInt(version[1]) >= 7) || (parseInt(version[2]) >= 1),
mouseCache = {},
elContains = function(parent, child) {
- if(parent && parent.firstChild){
+ if(parent && parent.firstChild){
while(child) {
if(child === parent) {
return true;
}
- child = child.parentNode;
+ child = child.parentNode;
if(child && (child.nodeType != 1)) {
child = null;
}
return false;
},
checkRelatedTarget = function(e) {
- return !elContains(e.currentTarget, pub.getRelatedTarget(e));
+ return !elContains(e.currentTarget, Ext.lib.Event.getRelatedTarget(e));
};
Ext.lib.Dom = {
isAncestor : function(p, c){ // missing from prototype?
var ret = false;
-
+
p = Ext.getDom(p);
c = Ext.getDom(c);
if (p && c) {
return !!(p.compareDocumentPosition(c) & 16);
} else {
while (c = c.parentNode) {
- ret = c == p || ret;
+ ret = c == p || ret;
}
- }
- }
+ }
+ }
return ret;
},
un : function(el, eventName, fn){
if((eventName == 'mouseenter' || eventName == 'mouseleave') && !mouseEnterSupported){
- var item = mouseCache[el.id],
+ var item = mouseCache[el.id],
ev = item && item[eventName];
if(ev){
};
var createResponse = function(cb, xhr){
var headerObj = {},
- headerStr,
+ headerStr,
t,
s;
try {
- headerStr = xhr.getAllResponseHeaders();
+ headerStr = xhr.getAllResponseHeaders();
Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){
t = v.indexOf(':');
if(t >= 0){
}
});
} catch(e) {}
-
+
return {
responseText: xhr.responseText,
responseXML : xhr.responseXML,
abort : function(trans){
return false;
},
-
+
serializeForm : function(form){
return Form.serialize(form.dom||form);
}
Ext.lib.Anim = function(){
-
+
var easings = {
easeOut: function(pos) {
return 1-Math.pow(1-pos,2);
libFlyweight.dom = el;
return libFlyweight;
}
-
+
Ext.lib.Region = function(t, r, b, l) {
this.top = t;
this[1] = t;