/*!
- * Ext JS Library 3.0.0
- * Copyright(c) 2006-2009 Ext JS, LLC
- * licensing@extjs.com
- * http://www.extjs.com/license
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
*/
if(typeof jQuery == "undefined"){
throw "Unable to load Ext, jQuery not found.";
},
isAncestor : function(p, c){
+ var ret = false;
+
p = Ext.getDom(p);
c = Ext.getDom(c);
- if (!p || !c) {return false;}
-
- if(p.contains && !Ext.isSafari) {
- return p.contains(c);
- }else if(p.compareDocumentPosition) {
- return !!(p.compareDocumentPosition(c) & 16);
- }else{
- var parent = c.parentNode;
- while (parent) {
- if (parent == p) {
- return true;
+ if (p && c) {
+ if (p.contains) {
+ return p.contains(c);
+ } else if (p.compareDocumentPosition) {
+ return !!(p.compareDocumentPosition(c) & 16);
+ } else {
+ while (c = c.parentNode) {
+ ret = c == p || ret;
}
- else if (!parent.tagName || parent.tagName.toUpperCase() == "HTML") {
- return false;
- }
- parent = parent.parentNode;
}
- return false;
}
+ return ret;
},
getRegion : function(el){
var iid = setInterval(f, 50);
},
- resolveTextNode: function(node) {
- if (node && 3 == node.nodeType) {
- return node.parentNode;
- } else {
- return node;
+ resolveTextNode: Ext.isGecko ? function(node){
+ if(!node){
+ return;
+ }
+ var s = HTMLElement.prototype.toString.call(node);
+ if(s == '[xpconnect wrapped native prototype]' || s == '[object XULElement]'){
+ return;
}
+ return node.nodeType == 3 ? node.parentNode : node;
+ } : function(node){
+ return node && node.nodeType == 3 ? node.parentNode : node;
},
getRelatedTarget: function(ev) {
var createComplete = function(cb){
return function(xhr, status){
if((status == 'error' || status == 'timeout') && cb.failure){
- cb.failure.call(cb.scope||window, {
- responseText: xhr.responseText,
- responseXML : xhr.responseXML,
- argument: cb.argument
- });
+ cb.failure.call(cb.scope||window, createResponse(cb, xhr));
}else if(cb.success){
- cb.success.call(cb.scope||window, {
- responseText: xhr.responseText,
- responseXML : xhr.responseXML,
- argument: cb.argument
- });
+ cb.success.call(cb.scope||window, createResponse(cb, xhr));
}
};
};
+
+ var createResponse = function(cb, xhr){
+ var headerObj = {},
+ headerStr,
+ t,
+ s;
+
+ try {
+ headerStr = xhr.getAllResponseHeaders();
+ Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){
+ t = v.indexOf(':');
+ if(t >= 0){
+ s = v.substr(0, t).toLowerCase();
+ if(v.charAt(t + 1) == ' '){
+ ++t;
+ }
+ headerObj[s] = v.substr(t + 1);
+ }
+ });
+ } catch(e) {}
+
+ return {
+ responseText: xhr.responseText,
+ responseXML : xhr.responseXML,
+ argument: cb.argument,
+ status: xhr.status,
+ statusText: xhr.statusText,
+ getResponseHeader : function(header){
+ return headerObj[header.toLowerCase()];
+ },
+ getAllResponseHeaders : function(){
+ return headerStr;
+ }
+ };
+ };
return {
request : function(method, uri, cb, data, options){
var o = {
}
if(hs){
o.beforeSend = function(xhr){
- for(var h in hs){
- if(hs.hasOwnProperty(h)){
+ for (var h in hs) {
+ if (hs.hasOwnProperty(h)) {
xhr.setRequestHeader(h, hs[h]);
}
}
- }
+ };
}
}
jQuery.ajax(o);
if (args.top.from)
e.setTop(args.top.from);
break;
+ // jQuery can't handle callback, scope, and xy arguments, so break here
+ case 'callback':
+ case 'scope':
+ case 'xy':
+ break;
+
default:
o[k] = args[k].to;
if (args[k].from)