/*
* Ext JS Library 2.2
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
//Plus: Adiciona os arquivos css de cada plataforma
if (top.isPlus) {
var head = document.getElementsByTagName('head')[0];
var refExtAll = null;
var refEf = null;
for (var i = 0; i < head.childNodes.length; i++) {
if (head.childNodes[i].tagName == "LINK") {
var ref = head.childNodes[i].href;
if (ref.indexOf("ext-all.css") != -1) {
if (top.isPlusM)
head.childNodes[i].href = '../../ext/resources/css/ext-all-mobile.css';
else
head.childNodes[i].href = '../../ext/resources/css/ext-all-desktop.css';
}
if (ref.indexOf("ef.css") != -1) {
if (top.isPlusM)
head.childNodes[i].href = '../css/ef-mobile.css';
else
head.childNodes[i].href = '../css/ef-desktop.css';
}
}
}
//var link1 = document.createElement('link');
//var link2 = document.createElement('link');
//link1.rel = 'stylesheet';
//link1.type = 'text/css';
//link1.media = 'all';
//link2.rel = 'stylesheet';
//link2.type = 'text/css';
//link2.media = 'all';
//if (top.isPlusM) {
// link1.href = 'ext/resources/css/ext-all-mobile.css';
// link2.href = 'css/ef-mobile.css';
//} else {
// link1.href = '../../ext/resources/css/ext-all-desktop.css';
// link2.href = '../../css/ef-desktop.css';
//}
//head.appendChild(link1);
//head.appendChild(link2);
};
Ext.DomHelper = function () {
var tempTableEl = null;
var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;
var tableRe = /^table|tbody|tr|td$/i;
var createHtml = function (o) {
if (typeof o == 'string') {
return o;
}
var b = "";
if (Ext.isArray(o)) {
for (var i = 0, l = o.length; i < l; i++) {
b += createHtml(o[i]);
}
return b;
}
if (!o.tag) {
o.tag = "div";
}
b += "<" + o.tag;
for (var attr in o) {
if (attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue;
if (attr == "style") {
var s = o["style"];
if (typeof s == "function") {
s = s.call();
}
if (typeof s == "string") {
b += ' style="' + s + '"';
} else if (typeof s == "object") {
b += ' style="';
for (var key in s) {
if (typeof s[key] != "function") {
b += key + ":" + s[key] + ";";
}
}
b += '"';
}
} else {
if (attr == "cls") {
b += ' class="' + o["cls"] + '"';
} else if (attr == "htmlFor") {
b += ' for="' + o["htmlFor"] + '"';
} else {
b += " " + attr + '="' + o[attr] + '"';
}
}
}
if (emptyTags.test(o.tag)) {
b += "/>";
} else {
b += ">";
var cn = o.children || o.cn;
if (cn) {
b += createHtml(cn);
} else if (o.html) {
b += o.html;
}
b += "" + o.tag + ">";
}
return b;
};
var createDom = function (o, parentNode) {
var el;
if (Ext.isArray(o)) {
el = document.createDocumentFragment(); for (var i = 0, l = o.length; i < l; i++) {
createDom(o[i], el);
}
} else if (typeof o == "string") {
el = document.createTextNode(o);
} else {
el = document.createElement(o.tag || 'div');
var useSet = !!el.setAttribute; for (var attr in o) {
if (attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue;
if (attr == "cls") {
el.className = o["cls"];
} else {
if (useSet) el.setAttribute(attr, o[attr]);
else el[attr] = o[attr];
}
}
Ext.DomHelper.applyStyles(el, o.style);
var cn = o.children || o.cn;
if (cn) {
createDom(cn, el);
} else if (o.html) {
el.innerHTML = o.html;
}
}
if (parentNode) {
parentNode.appendChild(el);
}
return el;
};
var ieTable = function (depth, s, h, e) {
tempTableEl.innerHTML = [s, h, e].join('');
var i = -1, el = tempTableEl;
while (++i < depth) {
el = el.firstChild;
}
return el;
};
var ts = '
',
tbs = ts + '',
tbe = '' + te,
trs = tbs + '',
tre = '
' + tbe;
var insertIntoTable = function (tag, where, el, html) {
if (!tempTableEl) {
tempTableEl = document.createElement('div');
}
var node;
var before = null;
if (tag == 'td') {
if (where == 'afterbegin' || where == 'beforeend') {
return;
}
if (where == 'beforebegin') {
before = el;
el = el.parentNode;
} else {
before = el.nextSibling;
el = el.parentNode;
}
node = ieTable(4, trs, html, tre);
}
else if (tag == 'tr') {
if (where == 'beforebegin') {
before = el;
el = el.parentNode;
node = ieTable(3, tbs, html, tbe);
} else if (where == 'afterend') {
before = el.nextSibling;
el = el.parentNode;
node = ieTable(3, tbs, html, tbe);
} else {
if (where == 'afterbegin') {
before = el.firstChild;
}
node = ieTable(4, trs, html, tre);
}
} else if (tag == 'tbody') {
if (where == 'beforebegin') {
before = el;
el = el.parentNode;
node = ieTable(2, ts, html, te);
} else if (where == 'afterend') {
before = el.nextSibling;
el = el.parentNode;
node = ieTable(2, ts, html, te);
} else {
if (where == 'afterbegin') {
before = el.firstChild;
}
node = ieTable(3, tbs, html, tbe);
}
} else {
if (where == 'beforebegin' || where == 'afterend') {
return;
}
if (where == 'afterbegin') {
before = el.firstChild;
}
node = ieTable(2, ts, html, te);
}
el.insertBefore(node, before);
return node;
};
return {
useDom: false,
markup: function (o) {
return createHtml(o);
},
applyStyles: function (el, styles) {
if (styles) {
el = Ext.fly(el);
if (typeof styles == "string") {
var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
var matches;
while ((matches = re.exec(styles)) != null) {
el.setStyle(matches[1], matches[2]);
}
} else if (typeof styles == "object") {
for (var style in styles) {
el.setStyle(style, styles[style]);
}
} else if (typeof styles == "function") {
Ext.DomHelper.applyStyles(el, styles.call());
}
}
},
insertHtml: function (where, el, html) {
where = where.toLowerCase();
if (el.insertAdjacentHTML) {
if (tableRe.test(el.tagName)) {
var rs;
if (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html)) {
return rs;
}
}
switch (where) {
case "beforebegin":
el.insertAdjacentHTML('BeforeBegin', html);
return el.previousSibling;
case "afterbegin":
el.insertAdjacentHTML('AfterBegin', html);
return el.firstChild;
case "beforeend":
el.insertAdjacentHTML('BeforeEnd', html);
return el.lastChild;
case "afterend":
el.insertAdjacentHTML('AfterEnd', html);
return el.nextSibling;
}
throw 'Illegal insertion point -> "' + where + '"';
}
var range = el.ownerDocument.createRange();
var frag;
switch (where) {
case "beforebegin":
range.setStartBefore(el);
frag = range.createContextualFragment(html);
el.parentNode.insertBefore(frag, el);
return el.previousSibling;
case "afterbegin":
if (el.firstChild) {
range.setStartBefore(el.firstChild);
frag = range.createContextualFragment(html);
el.insertBefore(frag, el.firstChild);
return el.firstChild;
} else {
el.innerHTML = html;
return el.firstChild;
}
case "beforeend":
if (el.lastChild) {
range.setStartAfter(el.lastChild);
frag = range.createContextualFragment(html);
el.appendChild(frag);
return el.lastChild;
} else {
el.innerHTML = html;
return el.lastChild;
}
case "afterend":
range.setStartAfter(el);
frag = range.createContextualFragment(html);
el.parentNode.insertBefore(frag, el.nextSibling);
return el.nextSibling;
}
throw 'Illegal insertion point -> "' + where + '"';
},
insertBefore: function (el, o, returnElement) {
return this.doInsert(el, o, returnElement, "beforeBegin");
},
insertAfter: function (el, o, returnElement) {
return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling");
},
insertFirst: function (el, o, returnElement) {
return this.doInsert(el, o, returnElement, "afterBegin", "firstChild");
},
doInsert: function (el, o, returnElement, pos, sibling) {
el = Ext.getDom(el);
var newNode;
if (this.useDom) {
newNode = createDom(o, null);
(sibling === "firstChild" ? el : el.parentNode).insertBefore(newNode, sibling ? el[sibling] : el);
} else {
var html = createHtml(o);
newNode = this.insertHtml(pos, el, html);
}
return returnElement ? Ext.get(newNode, true) : newNode;
},
append: function (el, o, returnElement) {
el = Ext.getDom(el);
var newNode;
if (this.useDom) {
newNode = createDom(o, null);
el.appendChild(newNode);
} else {
var html = createHtml(o);
newNode = this.insertHtml("beforeEnd", el, html);
}
return returnElement ? Ext.get(newNode, true) : newNode;
},
overwrite: function (el, o, returnElement) {
el = Ext.getDom(el);
el.innerHTML = createHtml(o);
return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
},
createTemplate: function (o) {
var html = createHtml(o);
return new Ext.Template(html);
}
};
}();
Ext.Template = function (html) {
var a = arguments;
if (Ext.isArray(html)) {
html = html.join("");
} else if (a.length > 1) {
var buf = [];
for (var i = 0, len = a.length; i < len; i++) {
if (typeof a[i] == 'object') {
Ext.apply(this, a[i]);
} else {
buf[buf.length] = a[i];
}
}
html = buf.join('');
}
this.html = html;
if (this.compiled) {
this.compile();
}
};
Ext.Template.prototype = {
applyTemplate: function (values) {
if (this.compiled) {
return this.compiled(values);
}
var useF = this.disableFormats !== true;
var fm = Ext.util.Format, tpl = this;
var fn = function (m, name, format, args) {
if (format && useF) {
if (format.substr(0, 5) == "this.") {
return tpl.call(format.substr(5), values[name], values);
} else {
if (args) {
var re = /^\s*['"](.*)["']\s*$/;
args = args.split(',');
for (var i = 0, len = args.length; i < len; i++) {
args[i] = args[i].replace(re, "$1");
}
args = [values[name]].concat(args);
} else {
args = [values[name]];
}
return fm[format].apply(fm, args);
}
} else {
return values[name] !== undefined ? values[name] : "";
}
};
return this.html.replace(this.re, fn);
},
set: function (html, compile) {
this.html = html;
this.compiled = null;
if (compile) {
this.compile();
}
return this;
},
disableFormats: false,
re: /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
compile: function () {
var fm = Ext.util.Format;
var useF = this.disableFormats !== true;
var sep = Ext.isGecko ? "+" : ",";
var fn = function (m, name, format, args) {
if (format && useF) {
args = args ? ',' + args : "";
if (format.substr(0, 5) != "this.") {
format = "fm." + format + '(';
} else {
format = 'this.call("' + format.substr(5) + '", ';
args = ", values";
}
} else {
args = ''; format = "(values['" + name + "'] == undefined ? '' : ";
}
return "'" + sep + format + "values['" + name + "']" + args + ")" + sep + "'";
};
var body;
if (Ext.isGecko) {
body = "this.compiled = function(values){ return '" +
this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) +
"';};";
} else {
body = ["this.compiled = function(values){ return ['"];
body.push(this.html.replace(/\\/g, '\\\\').replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn));
body.push("'].join('');};");
body = body.join('');
}
eval(body);
return this;
},
call: function (fnName, value, allValues) {
return this[fnName](value, allValues);
},
insertFirst: function (el, values, returnElement) {
return this.doInsert('afterBegin', el, values, returnElement);
},
insertBefore: function (el, values, returnElement) {
return this.doInsert('beforeBegin', el, values, returnElement);
},
insertAfter: function (el, values, returnElement) {
return this.doInsert('afterEnd', el, values, returnElement);
},
append: function (el, values, returnElement) {
return this.doInsert('beforeEnd', el, values, returnElement);
},
doInsert: function (where, el, values, returnEl) {
el = Ext.getDom(el);
var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values));
return returnEl ? Ext.get(newNode, true) : newNode;
},
overwrite: function (el, values, returnElement) {
el = Ext.getDom(el);
el.innerHTML = this.applyTemplate(values);
return returnElement ? Ext.get(el.firstChild, true) : el.firstChild;
}
};
Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
Ext.DomHelper.Template = Ext.Template;
Ext.Template.from = function (el, config) {
el = Ext.getDom(el);
return new Ext.Template(el.value || el.innerHTML, config || '');
};
Ext.DomQuery = function () {
var cache = {}, simpleCache = {}, valueCache = {};
var nonSpace = /\S/;
var trimRe = /^\s+|\s+$/g;
var tplRe = /\{(\d+)\}/g;
var modeRe = /^(\s?[\/>+~]\s?|\s|$)/;
var tagTokenRe = /^(#)?([\w-\*]+)/;
var nthRe = /(\d*)n\+?(\d*)/, nthRe2 = /\D/;
function child(p, index) {
var i = 0;
var n = p.firstChild;
while (n) {
if (n.nodeType == 1) {
if (++i == index) {
return n;
}
}
n = n.nextSibling;
}
return null;
};
function next(n) {
while ((n = n.nextSibling) && n.nodeType != 1);
return n;
};
function prev(n) {
while ((n = n.previousSibling) && n.nodeType != 1);
return n;
};
function children(d) {
var n = d.firstChild, ni = -1;
while (n) {
var nx = n.nextSibling;
if (n.nodeType == 3 && !nonSpace.test(n.nodeValue)) {
d.removeChild(n);
} else {
n.nodeIndex = ++ni;
}
n = nx;
}
return this;
};
function byClassName(c, a, v) {
if (!v) {
return c;
}
var r = [], ri = -1, cn;
for (var i = 0, ci; ci = c[i]; i++) {
if ((' ' + ci.className + ' ').indexOf(v) != -1) {
r[++ri] = ci;
}
}
return r;
};
function attrValue(n, attr) {
if (!n.tagName && typeof n.length != "undefined") {
n = n[0];
}
if (!n) {
return null;
}
if (attr == "for") {
return n.htmlFor;
}
if (attr == "class" || attr == "className") {
return n.className;
}
return n.getAttribute(attr) || n[attr];
};
function getNodes(ns, mode, tagName) {
var result = [], ri = -1, cs;
if (!ns) {
return result;
}
tagName = tagName || "*";
if (typeof ns.getElementsByTagName != "undefined") {
ns = [ns];
}
if (!mode) {
for (var i = 0, ni; ni = ns[i]; i++) {
cs = ni.getElementsByTagName(tagName);
for (var j = 0, ci; ci = cs[j]; j++) {
result[++ri] = ci;
}
}
} else if (mode == "/" || mode == ">") {
var utag = tagName.toUpperCase();
for (var i = 0, ni, cn; ni = ns[i]; i++) {
cn = ni.children || ni.childNodes;
for (var j = 0, cj; cj = cn[j]; j++) {
if (cj.nodeName == utag || cj.nodeName == tagName || tagName == '*') {
result[++ri] = cj;
}
}
}
} else if (mode == "+") {
var utag = tagName.toUpperCase();
for (var i = 0, n; n = ns[i]; i++) {
while ((n = n.nextSibling) && n.nodeType != 1);
if (n && (n.nodeName == utag || n.nodeName == tagName || tagName == '*')) {
result[++ri] = n;
}
}
} else if (mode == "~") {
for (var i = 0, n; n = ns[i]; i++) {
while ((n = n.nextSibling) && (n.nodeType != 1 || (tagName == '*' || n.tagName.toLowerCase() != tagName)));
if (n) {
result[++ri] = n;
}
}
}
return result;
};
function concat(a, b) {
if (b.slice) {
return a.concat(b);
}
for (var i = 0, l = b.length; i < l; i++) {
a[a.length] = b[i];
}
return a;
}
function byTag(cs, tagName) {
if (cs.tagName || cs == document) {
cs = [cs];
}
if (!tagName) {
return cs;
}
var r = [], ri = -1;
tagName = tagName.toLowerCase();
for (var i = 0, ci; ci = cs[i]; i++) {
if (ci.nodeType == 1 && ci.tagName.toLowerCase() == tagName) {
r[++ri] = ci;
}
}
return r;
};
function byId(cs, attr, id) {
if (cs.tagName || cs == document) {
cs = [cs];
}
if (!id) {
return cs;
}
var r = [], ri = -1;
for (var i = 0, ci; ci = cs[i]; i++) {
if (ci && ci.id == id) {
r[++ri] = ci;
return r;
}
}
return r;
};
function byAttribute(cs, attr, value, op, custom) {
var r = [], ri = -1, st = custom == "{";
var f = Ext.DomQuery.operators[op];
for (var i = 0, ci; ci = cs[i]; i++) {
var a;
if (st) {
a = Ext.DomQuery.getStyle(ci, attr);
}
else if (attr == "class" || attr == "className") {
a = ci.className;
} else if (attr == "for") {
a = ci.htmlFor;
} else if (attr == "href") {
a = ci.getAttribute("href", 2);
} else {
a = ci.getAttribute(attr);
}
if ((f && f(a, value)) || (!f && a)) {
r[++ri] = ci;
}
}
return r;
};
function byPseudo(cs, name, value) {
return Ext.DomQuery.pseudos[name](cs, value);
};
var isIE = window.ActiveXObject ? true : false;
eval("var batch = 30803;");
var key = 30803;
function nodupIEXml(cs) {
var d = ++key;
cs[0].setAttribute("_nodup", d);
var r = [cs[0]];
for (var i = 1, len = cs.length; i < len; i++) {
var c = cs[i];
if (!c.getAttribute("_nodup") != d) {
c.setAttribute("_nodup", d);
r[r.length] = c;
}
}
for (var i = 0, len = cs.length; i < len; i++) {
cs[i].removeAttribute("_nodup");
}
return r;
}
function nodup(cs) {
if (!cs) {
return [];
}
var len = cs.length, c, i, r = cs, cj, ri = -1;
if (!len || typeof cs.nodeType != "undefined" || len == 1) {
return cs;
}
if (isIE && typeof cs[0].selectSingleNode != "undefined") {
return nodupIEXml(cs);
}
var d = ++key;
cs[0]._nodup = d;
for (i = 1; c = cs[i]; i++) {
if (c._nodup != d) {
c._nodup = d;
} else {
r = [];
for (var j = 0; j < i; j++) {
r[++ri] = cs[j];
}
for (j = i + 1; cj = cs[j]; j++) {
if (cj._nodup != d) {
cj._nodup = d;
r[++ri] = cj;
}
}
return r;
}
}
return r;
}
function quickDiffIEXml(c1, c2) {
var d = ++key;
for (var i = 0, len = c1.length; i < len; i++) {
c1[i].setAttribute("_qdiff", d);
}
var r = [];
for (var i = 0, len = c2.length; i < len; i++) {
if (c2[i].getAttribute("_qdiff") != d) {
r[r.length] = c2[i];
}
}
for (var i = 0, len = c1.length; i < len; i++) {
c1[i].removeAttribute("_qdiff");
}
return r;
}
function quickDiff(c1, c2) {
var len1 = c1.length;
if (!len1) {
return c2;
}
if (isIE && c1[0].selectSingleNode) {
return quickDiffIEXml(c1, c2);
}
var d = ++key;
for (var i = 0; i < len1; i++) {
c1[i]._qdiff = d;
}
var r = [];
for (var i = 0, len = c2.length; i < len; i++) {
if (c2[i]._qdiff != d) {
r[r.length] = c2[i];
}
}
return r;
}
function quickId(ns, mode, root, id) {
if (ns == root) {
var d = root.ownerDocument || root;
return d.getElementById(id);
}
ns = getNodes(ns, mode, "*");
return byId(ns, null, id);
}
return {
getStyle: function (el, name) {
return Ext.fly(el).getStyle(name);
},
compile: function (path, type) {
type = type || "select";
var fn = ["var f = function(root){\n var mode; ++batch; var n = root || document;\n"];
var q = path, mode, lq;
var tk = Ext.DomQuery.matchers;
var tklen = tk.length;
var mm;
var lmode = q.match(modeRe);
if (lmode && lmode[1]) {
fn[fn.length] = 'mode="' + lmode[1].replace(trimRe, "") + '";';
q = q.replace(lmode[1], "");
}
while (path.substr(0, 1) == "/") {
path = path.substr(1);
}
while (q && lq != q) {
lq = q;
var tm = q.match(tagTokenRe);
if (type == "select") {
if (tm) {
if (tm[1] == "#") {
fn[fn.length] = 'n = quickId(n, mode, root, "' + tm[2] + '");';
} else {
fn[fn.length] = 'n = getNodes(n, mode, "' + tm[2] + '");';
}
q = q.replace(tm[0], "");
} else if (q.substr(0, 1) != '@') {
fn[fn.length] = 'n = getNodes(n, mode, "*");';
}
} else {
if (tm) {
if (tm[1] == "#") {
fn[fn.length] = 'n = byId(n, null, "' + tm[2] + '");';
} else {
fn[fn.length] = 'n = byTag(n, "' + tm[2] + '");';
}
q = q.replace(tm[0], "");
}
}
while (!(mm = q.match(modeRe))) {
var matched = false;
for (var j = 0; j < tklen; j++) {
var t = tk[j];
var m = q.match(t.re);
if (m) {
fn[fn.length] = t.select.replace(tplRe, function (x, i) {
return m[i];
});
q = q.replace(m[0], "");
matched = true;
break;
}
}
if (!matched) {
throw 'Error parsing selector, parsing failed at "' + q + '"';
}
}
if (mm[1]) {
fn[fn.length] = 'mode="' + mm[1].replace(trimRe, "") + '";';
q = q.replace(mm[1], "");
}
}
fn[fn.length] = "return nodup(n);\n}";
eval(fn.join(""));
return f;
},
select: function (path, root, type) {
if (!root || root == document) {
root = document;
}
if (typeof root == "string") {
root = document.getElementById(root);
}
var paths = path.split(",");
var results = [];
for (var i = 0, len = paths.length; i < len; i++) {
var p = paths[i].replace(trimRe, "");
if (!cache[p]) {
cache[p] = Ext.DomQuery.compile(p);
if (!cache[p]) {
throw p + " is not a valid selector";
}
}
var result = cache[p](root);
if (result && result != document) {
results = results.concat(result);
}
}
if (paths.length > 1) {
return nodup(results);
}
return results;
},
selectNode: function (path, root) {
return Ext.DomQuery.select(path, root)[0];
},
selectValue: function (path, root, defaultValue) {
path = path.replace(trimRe, "");
if (!valueCache[path]) {
valueCache[path] = Ext.DomQuery.compile(path, "select");
}
var n = valueCache[path](root);
n = n[0] ? n[0] : n;
var v = (n && n.firstChild ? n.firstChild.nodeValue : null);
return ((v === null || v === undefined || v === '') ? defaultValue : v);
},
selectNumber: function (path, root, defaultValue) {
var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0);
return parseFloat(v);
},
is: function (el, ss) {
if (typeof el == "string") {
el = document.getElementById(el);
}
var isArray = Ext.isArray(el);
var result = Ext.DomQuery.filter(isArray ? el : [el], ss);
return isArray ? (result.length == el.length) : (result.length > 0);
},
filter: function (els, ss, nonMatches) {
ss = ss.replace(trimRe, "");
if (!simpleCache[ss]) {
simpleCache[ss] = Ext.DomQuery.compile(ss, "simple");
}
var result = simpleCache[ss](els);
return nonMatches ? quickDiff(result, els) : result;
},
matchers: [{
re: /^\.([\w-]+)/,
select: 'n = byClassName(n, null, " {1} ");'
}, {
re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
select: 'n = byPseudo(n, "{1}", "{2}");'
}, {
re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,
select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'
}, {
re: /^#([\w-]+)/,
select: 'n = byId(n, null, "{1}");'
}, {
re: /^@([\w-]+)/,
select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
}
],
operators: {
"=": function (a, v) {
return a == v;
},
"!=": function (a, v) {
return a != v;
},
"^=": function (a, v) {
return a && a.substr(0, v.length) == v;
},
"$=": function (a, v) {
return a && a.substr(a.length - v.length) == v;
},
"*=": function (a, v) {
return a && a.indexOf(v) !== -1;
},
"%=": function (a, v) {
return (a % v) == 0;
},
"|=": function (a, v) {
return a && (a == v || a.substr(0, v.length + 1) == v + '-');
},
"~=": function (a, v) {
return a && (' ' + a + ' ').indexOf(' ' + v + ' ') != -1;
}
},
pseudos: {
"first-child": function (c) {
var r = [], ri = -1, n;
for (var i = 0, ci; ci = n = c[i]; i++) {
while ((n = n.previousSibling) && n.nodeType != 1);
if (!n) {
r[++ri] = ci;
}
}
return r;
},
"last-child": function (c) {
var r = [], ri = -1, n;
for (var i = 0, ci; ci = n = c[i]; i++) {
while ((n = n.nextSibling) && n.nodeType != 1);
if (!n) {
r[++ri] = ci;
}
}
return r;
},
"nth-child": function (c, a) {
var r = [], ri = -1;
var m = nthRe.exec(a == "even" && "2n" || a == "odd" && "2n+1" || !nthRe2.test(a) && "n+" + a || a);
var f = (m[1] || 1) - 0, l = m[2] - 0;
for (var i = 0, n; n = c[i]; i++) {
var pn = n.parentNode;
if (batch != pn._batch) {
var j = 0;
for (var cn = pn.firstChild; cn; cn = cn.nextSibling) {
if (cn.nodeType == 1) {
cn.nodeIndex = ++j;
}
}
pn._batch = batch;
}
if (f == 1) {
if (l == 0 || n.nodeIndex == l) {
r[++ri] = n;
}
} else if ((n.nodeIndex + l) % f == 0) {
r[++ri] = n;
}
}
return r;
},
"only-child": function (c) {
var r = [], ri = -1;;
for (var i = 0, ci; ci = c[i]; i++) {
if (!prev(ci) && !next(ci)) {
r[++ri] = ci;
}
}
return r;
},
"empty": function (c) {
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
var cns = ci.childNodes, j = 0, cn, empty = true;
while (cn = cns[j]) {
++j;
if (cn.nodeType == 1 || cn.nodeType == 3) {
empty = false;
break;
}
}
if (empty) {
r[++ri] = ci;
}
}
return r;
},
"contains": function (c, v) {
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
if ((ci.textContent || ci.innerText || '').indexOf(v) != -1) {
r[++ri] = ci;
}
}
return r;
},
"nodeValue": function (c, v) {
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
if (ci.firstChild && ci.firstChild.nodeValue == v) {
r[++ri] = ci;
}
}
return r;
},
"checked": function (c) {
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
if (ci.checked == true) {
r[++ri] = ci;
}
}
return r;
},
"not": function (c, ss) {
return Ext.DomQuery.filter(c, ss, true);
},
"any": function (c, selectors) {
var ss = selectors.split('|');
var r = [], ri = -1, s;
for (var i = 0, ci; ci = c[i]; i++) {
for (var j = 0; s = ss[j]; j++) {
if (Ext.DomQuery.is(ci, s)) {
r[++ri] = ci;
break;
}
}
}
return r;
},
"odd": function (c) {
return this["nth-child"](c, "odd");
},
"even": function (c) {
return this["nth-child"](c, "even");
},
"nth": function (c, a) {
return c[a - 1] || [];
},
"first": function (c) {
return c[0] || [];
},
"last": function (c) {
return c[c.length - 1] || [];
},
"has": function (c, ss) {
var s = Ext.DomQuery.select;
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
if (s(ss, ci).length > 0) {
r[++ri] = ci;
}
}
return r;
},
"next": function (c, ss) {
var is = Ext.DomQuery.is;
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
var n = next(ci);
if (n && is(n, ss)) {
r[++ri] = ci;
}
}
return r;
},
"prev": function (c, ss) {
var is = Ext.DomQuery.is;
var r = [], ri = -1;
for (var i = 0, ci; ci = c[i]; i++) {
var n = prev(ci);
if (n && is(n, ss)) {
r[++ri] = ci;
}
}
return r;
}
}
};
}();
Ext.query = Ext.DomQuery.select;
Ext.util.Observable = function () {
if (this.listeners) {
this.on(this.listeners);
delete this.listeners;
}
};
Ext.util.Observable.prototype = {
fireEvent: function () {
if (this.eventsSuspended !== true) {
var ce = this.events[arguments[0].toLowerCase()];
if (typeof ce == "object") {
return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1));
}
}
return true;
},
filterOptRe: /^(?:scope|delay|buffer|single)$/,
addListener: function (eventName, fn, scope, o) {
if (typeof eventName == "object") {
o = eventName;
for (var e in o) {
if (this.filterOptRe.test(e)) {
continue;
}
if (typeof o[e] == "function") {
this.addListener(e, o[e], o.scope, o);
} else {
this.addListener(e, o[e].fn, o[e].scope, o[e]);
}
}
return;
}
o = (!o || typeof o == "boolean") ? {} : o;
eventName = eventName.toLowerCase();
var ce = this.events[eventName] || true;
if (typeof ce == "boolean") {
ce = new Ext.util.Event(this, eventName);
this.events[eventName] = ce;
}
ce.addListener(fn, scope, o);
},
removeListener: function (eventName, fn, scope) {
var ce = this.events[eventName.toLowerCase()];
if (typeof ce == "object") {
ce.removeListener(fn, scope);
}
},
purgeListeners: function () {
for (var evt in this.events) {
if (typeof this.events[evt] == "object") {
this.events[evt].clearListeners();
}
}
},
relayEvents: function (o, events) {
var createHandler = function (ename) {
return function () {
return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0)));
};
};
for (var i = 0, len = events.length; i < len; i++) {
var ename = events[i];
if (!this.events[ename]) { this.events[ename] = true; };
o.on(ename, createHandler(ename), this);
}
},
addEvents: function (o) {
if (!this.events) {
this.events = {};
}
if (typeof o == 'string') {
for (var i = 0, a = arguments, v; v = a[i]; i++) {
if (!this.events[a[i]]) {
this.events[a[i]] = true;
}
}
} else {
Ext.applyIf(this.events, o);
}
},
hasListener: function (eventName) {
var e = this.events[eventName];
return typeof e == "object" && e.listeners.length > 0;
},
suspendEvents: function () {
this.eventsSuspended = true;
},
resumeEvents: function () {
this.eventsSuspended = false;
},
getMethodEvent: function (method) {
if (!this.methodEvents) {
this.methodEvents = {};
}
var e = this.methodEvents[method];
if (!e) {
e = {};
this.methodEvents[method] = e;
e.originalFn = this[method];
e.methodName = method;
e.before = [];
e.after = [];
var returnValue, v, cancel;
var obj = this;
var makeCall = function (fn, scope, args) {
if ((v = fn.apply(scope || obj, args)) !== undefined) {
if (typeof v === 'object') {
if (v.returnValue !== undefined) {
returnValue = v.returnValue;
} else {
returnValue = v;
}
if (v.cancel === true) {
cancel = true;
}
} else if (v === false) {
cancel = true;
} else {
returnValue = v;
}
}
}
this[method] = function () {
returnValue = v = undefined; cancel = false;
var args = Array.prototype.slice.call(arguments, 0);
for (var i = 0, len = e.before.length; i < len; i++) {
makeCall(e.before[i].fn, e.before[i].scope, args);
if (cancel) {
return returnValue;
}
}
if ((v = e.originalFn.apply(obj, args)) !== undefined) {
returnValue = v;
}
for (var i = 0, len = e.after.length; i < len; i++) {
makeCall(e.after[i].fn, e.after[i].scope, args);
if (cancel) {
return returnValue;
}
}
return returnValue;
};
}
return e;
},
beforeMethod: function (method, fn, scope) {
var e = this.getMethodEvent(method);
e.before.push({ fn: fn, scope: scope });
},
afterMethod: function (method, fn, scope) {
var e = this.getMethodEvent(method);
e.after.push({ fn: fn, scope: scope });
},
removeMethodListener: function (method, fn, scope) {
var e = this.getMethodEvent(method);
for (var i = 0, len = e.before.length; i < len; i++) {
if (e.before[i].fn == fn && e.before[i].scope == scope) {
e.before.splice(i, 1);
return;
}
}
for (var i = 0, len = e.after.length; i < len; i++) {
if (e.after[i].fn == fn && e.after[i].scope == scope) {
e.after.splice(i, 1);
return;
}
}
}
};
Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener;
Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener;
Ext.util.Observable.capture = function (o, fn, scope) {
o.fireEvent = o.fireEvent.createInterceptor(fn, scope);
};
Ext.util.Observable.releaseCapture = function (o) {
o.fireEvent = Ext.util.Observable.prototype.fireEvent;
};
(function () {
var createBuffered = function (h, o, scope) {
var task = new Ext.util.DelayedTask();
return function () {
task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0));
};
};
var createSingle = function (h, e, fn, scope) {
return function () {
e.removeListener(fn, scope);
return h.apply(scope, arguments);
};
};
var createDelayed = function (h, o, scope) {
return function () {
var args = Array.prototype.slice.call(arguments, 0);
setTimeout(function () {
h.apply(scope, args);
}, o.delay || 10);
};
};
Ext.util.Event = function (obj, name) {
this.name = name;
this.obj = obj;
this.listeners = [];
};
Ext.util.Event.prototype = {
addListener: function (fn, scope, options) {
scope = scope || this.obj;
if (!this.isListening(fn, scope)) {
var l = this.createListener(fn, scope, options);
if (!this.firing) {
this.listeners.push(l);
} else {
this.listeners = this.listeners.slice(0);
this.listeners.push(l);
}
}
},
createListener: function (fn, scope, o) {
o = o || {};
scope = scope || this.obj;
var l = { fn: fn, scope: scope, options: o };
var h = fn;
if (o.delay) {
h = createDelayed(h, o, scope);
}
if (o.single) {
h = createSingle(h, this, fn, scope);
}
if (o.buffer) {
h = createBuffered(h, o, scope);
}
l.fireFn = h;
return l;
},
findListener: function (fn, scope) {
scope = scope || this.obj;
var ls = this.listeners;
for (var i = 0, len = ls.length; i < len; i++) {
var l = ls[i];
if (l.fn == fn && l.scope == scope) {
return i;
}
}
return -1;
},
isListening: function (fn, scope) {
return this.findListener(fn, scope) != -1;
},
removeListener: function (fn, scope) {
var index;
if ((index = this.findListener(fn, scope)) != -1) {
if (!this.firing) {
this.listeners.splice(index, 1);
} else {
this.listeners = this.listeners.slice(0);
this.listeners.splice(index, 1);
}
return true;
}
return false;
},
clearListeners: function () {
this.listeners = [];
},
fire: function () {
var ls = this.listeners, scope, len = ls.length;
if (len > 0) {
this.firing = true;
var args = Array.prototype.slice.call(arguments, 0);
for (var i = 0; i < len; i++) {
var l = ls[i];
if (l.fireFn.apply(l.scope || this.obj || window, arguments) === false) {
this.firing = false;
return false;
}
}
this.firing = false;
}
return true;
}
};
})();
Ext.EventManager = function () {
var docReadyEvent, docReadyProcId, docReadyState = false;
var resizeEvent, resizeTask, textEvent, textSize;
var E = Ext.lib.Event;
var D = Ext.lib.Dom;
var xname = 'Ex' + 't';
var elHash = {};
var addListener = function (el, ename, fn, wrap, scope) {
var id = Ext.id(el);
if (!elHash[id]) {
elHash[id] = {};
}
var es = elHash[id];
if (!es[ename]) {
es[ename] = [];
}
var ls = es[ename];
ls.push({
id: id,
ename: ename,
fn: fn,
wrap: wrap,
scope: scope
});
E.on(el, ename, wrap);
if (ename == "mousewheel" && el.addEventListener) {
el.addEventListener("DOMMouseScroll", wrap, false);
E.on(window, 'unload', function () {
el.removeEventListener("DOMMouseScroll", wrap, false);
});
}
if (ename == "mousedown" && el == document) {
Ext.EventManager.stoppedMouseDownEvent.addListener(wrap);
}
}
var removeListener = function (el, ename, fn, scope) {
el = Ext.getDom(el);
var id = Ext.id(el), es = elHash[id], wrap;
if (es) {
var ls = es[ename], l;
if (ls) {
for (var i = 0, len = ls.length; i < len; i++) {
l = ls[i];
if (l.fn == fn && (!scope || l.scope == scope)) {
wrap = l.wrap;
E.un(el, ename, wrap);
ls.splice(i, 1);
break;
}
}
}
}
if (ename == "mousewheel" && el.addEventListener && wrap) {
el.removeEventListener("DOMMouseScroll", wrap, false);
}
if (ename == "mousedown" && el == document && wrap) {
Ext.EventManager.stoppedMouseDownEvent.removeListener(wrap);
}
}
var removeAll = function (el) {
el = Ext.getDom(el);
var id = Ext.id(el), es = elHash[id], ls;
if (es) {
for (var ename in es) {
if (es.hasOwnProperty(ename)) {
ls = es[ename];
for (var i = 0, len = ls.length; i < len; i++) {
E.un(el, ename, ls[i].wrap);
ls[i] = null;
}
}
es[ename] = null;
}
delete elHash[id];
}
}
var fireDocReady = function () {
if (!docReadyState) {
docReadyState = Ext.isReady = true;
if (Ext.isGecko || Ext.isOpera) {
document.removeEventListener("DOMContentLoaded", fireDocReady, false);
}
}
if (docReadyProcId) {
clearInterval(docReadyProcId);
docReadyProcId = null;
}
if (docReadyEvent) {
docReadyEvent.fire();
docReadyEvent.clearListeners();
}
};
var initDocReady = function () {
docReadyEvent = new Ext.util.Event();
if (Ext.isReady) {
return;
}
E.on(window, 'load', fireDocReady);
if (Ext.isGecko || Ext.isOpera) {
document.addEventListener('DOMContentLoaded', fireDocReady, false);
}
else if (Ext.isIE) {
docReadyProcId = setInterval(function () {
try {
Ext.isReady || (document.documentElement.doScroll('left'));
} catch (e) {
return;
}
fireDocReady();
}, 5);
document.onreadystatechange = function () {
if (document.readyState == 'complete') {
document.onreadystatechange = null;
fireDocReady();
}
};
}
else if (Ext.isSafari) {
docReadyProcId = setInterval(function () {
var rs = document.readyState;
if (rs == 'complete') {
fireDocReady();
}
}, 10);
}
};
var createBuffered = function (h, o) {
var task = new Ext.util.DelayedTask(h);
return function (e) {
e = new Ext.EventObjectImpl(e);
task.delay(o.buffer, h, null, [e]);
};
};
var createSingle = function (h, el, ename, fn, scope) {
return function (e) {
Ext.EventManager.removeListener(el, ename, fn, scope);
h(e);
};
};
var createDelayed = function (h, o) {
return function (e) {
e = new Ext.EventObjectImpl(e);
setTimeout(function () {
h(e);
}, o.delay || 10);
};
};
var listen = function (element, ename, opt, fn, scope) {
var o = (!opt || typeof opt == "boolean") ? {} : opt;
fn = fn || o.fn; scope = scope || o.scope;
var el = Ext.getDom(element);
if (!el) {
throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.';
}
var h = function (e) {
if (!window[xname]) {
return;
}
e = Ext.EventObject.setEvent(e);
var t;
if (o.delegate) {
t = e.getTarget(o.delegate, el);
if (!t) {
return;
}
} else {
t = e.target;
}
if (o.stopEvent === true) {
e.stopEvent();
}
if (o.preventDefault === true) {
e.preventDefault();
}
if (o.stopPropagation === true) {
e.stopPropagation();
}
if (o.normalized === false) {
e = e.browserEvent;
}
fn.call(scope || el, e, t, o);
};
if (o.delay) {
h = createDelayed(h, o);
}
if (o.single) {
h = createSingle(h, el, ename, fn, scope);
}
if (o.buffer) {
h = createBuffered(h, o);
}
addListener(el, ename, fn, h, scope);
return h;
};
var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
var pub = {
addListener: function (element, eventName, fn, scope, options) {
if (typeof eventName == "object") {
var o = eventName;
for (var e in o) {
if (propRe.test(e)) {
continue;
}
if (typeof o[e] == "function") {
listen(element, e, o, o[e], o.scope);
} else {
listen(element, e, o[e]);
}
}
return;
}
return listen(element, eventName, options, fn, scope);
},
removeListener: function (element, eventName, fn, scope) {
return removeListener(element, eventName, fn, scope);
},
removeAll: function (element) {
return removeAll(element);
},
onDocumentReady: function (fn, scope, options) {
if (!docReadyEvent) {
initDocReady();
}
if (docReadyState || Ext.isReady) {
options || (options = {});
fn.defer(options.delay || 0, scope);
} else {
docReadyEvent.addListener(fn, scope, options);
}
},
onWindowResize: function (fn, scope, options) {
if (!resizeEvent) {
resizeEvent = new Ext.util.Event();
resizeTask = new Ext.util.DelayedTask(function () {
resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
});
E.on(window, "resize", this.fireWindowResize, this);
}
resizeEvent.addListener(fn, scope, options);
},
fireWindowResize: function () {
if (resizeEvent) {
if ((Ext.isIE || Ext.isAir) && resizeTask) {
resizeTask.delay(50);
} else {
resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
}
}
},
onTextResize: function (fn, scope, options) {
if (!textEvent) {
textEvent = new Ext.util.Event();
var textEl = new Ext.Element(document.createElement('div'));
textEl.dom.className = 'x-text-resize';
textEl.dom.innerHTML = 'X';
textEl.appendTo(document.body);
textSize = textEl.dom.offsetHeight;
setInterval(function () {
if (textEl.dom.offsetHeight != textSize) {
textEvent.fire(textSize, textSize = textEl.dom.offsetHeight);
}
}, this.textResizeInterval);
}
textEvent.addListener(fn, scope, options);
},
removeResizeListener: function (fn, scope) {
if (resizeEvent) {
resizeEvent.removeListener(fn, scope);
}
},
fireResize: function () {
if (resizeEvent) {
resizeEvent.fire(D.getViewWidth(), D.getViewHeight());
}
},
ieDeferSrc: false,
textResizeInterval: 50
};
pub.on = pub.addListener;
pub.un = pub.removeListener;
pub.stoppedMouseDownEvent = new Ext.util.Event();
return pub;
}();
Ext.onReady = Ext.EventManager.onDocumentReady;
(function () {
var initExtCss = function () {
var bd = document.body || document.getElementsByTagName('body')[0];
if (!bd) { return false; }
var cls = [' ',
Ext.isIE ? "ext-ie " + (Ext.isIE6 ? 'ext-ie6' : 'ext-ie7')
: Ext.isGecko ? "ext-gecko " + (Ext.isGecko2 ? 'ext-gecko2' : 'ext-gecko3')
: Ext.isOpera ? "ext-opera"
: Ext.isSafari ? "ext-safari" : ""];
if (Ext.isMac) {
cls.push("ext-mac");
}
if (Ext.isLinux) {
cls.push("ext-linux");
}
if (Ext.isBorderBox) {
cls.push('ext-border-box');
}
if (Ext.isStrict) {
var p = bd.parentNode;
if (p) {
p.className += ' ext-strict';
}
}
bd.className += cls.join(' ');
return true;
}
if (!initExtCss()) {
Ext.onReady(initExtCss);
}
})();
Ext.EventObject = function () {
var E = Ext.lib.Event;
var safariKeys = {
3: 13, 63234: 37, 63235: 39, 63232: 38, 63233: 40, 63276: 33, 63277: 34, 63272: 46, 63273: 36, 63275: 35
};
var btnMap = Ext.isIE ? { 1: 0, 4: 1, 2: 2 } :
(Ext.isSafari ? { 1: 0, 2: 1, 3: 2 } : { 0: 0, 1: 1, 2: 2 });
Ext.EventObjectImpl = function (e) {
if (e) {
this.setEvent(e.browserEvent || e);
}
};
Ext.EventObjectImpl.prototype = {
browserEvent: null,
button: -1,
shiftKey: false,
ctrlKey: false,
altKey: false,
BACKSPACE: 8,
TAB: 9,
NUM_CENTER: 12,
ENTER: 13,
RETURN: 13,
SHIFT: 16,
CTRL: 17,
CONTROL: 17,
ALT: 18,
PAUSE: 19,
CAPS_LOCK: 20,
ESC: 27,
SPACE: 32,
PAGE_UP: 33,
PAGEUP: 33,
PAGE_DOWN: 34,
PAGEDOWN: 34,
END: 35,
HOME: 36,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40,
PRINT_SCREEN: 44,
INSERT: 45,
DELETE: 46,
ZERO: 48,
ONE: 49,
TWO: 50,
THREE: 51,
FOUR: 52,
FIVE: 53,
SIX: 54,
SEVEN: 55,
EIGHT: 56,
NINE: 57,
A: 65,
B: 66,
C: 67,
D: 68,
E: 69,
F: 70,
G: 71,
H: 72,
I: 73,
J: 74,
K: 75,
L: 76,
M: 77,
N: 78,
O: 79,
P: 80,
Q: 81,
R: 82,
S: 83,
T: 84,
U: 85,
V: 86,
W: 87,
X: 88,
Y: 89,
Z: 90,
CONTEXT_MENU: 93,
NUM_ZERO: 96,
NUM_ONE: 97,
NUM_TWO: 98,
NUM_THREE: 99,
NUM_FOUR: 100,
NUM_FIVE: 101,
NUM_SIX: 102,
NUM_SEVEN: 103,
NUM_EIGHT: 104,
NUM_NINE: 105,
NUM_MULTIPLY: 106,
NUM_PLUS: 107,
NUM_MINUS: 109,
NUM_PERIOD: 110,
NUM_DIVISION: 111,
F1: 112,
F2: 113,
F3: 114,
F4: 115,
F5: 116,
F6: 117,
F7: 118,
F8: 119,
F9: 120,
F10: 121,
F11: 122,
F12: 123,
setEvent: function (e) {
if (e == this || (e && e.browserEvent)) {
return e;
}
this.browserEvent = e;
if (e) {
this.button = e.button ? btnMap[e.button] : (e.which ? e.which - 1 : -1);
if (e.type == 'click' && this.button == -1) {
this.button = 0;
}
this.type = e.type;
this.shiftKey = e.shiftKey;
this.ctrlKey = e.ctrlKey || e.metaKey;
this.altKey = e.altKey;
this.keyCode = e.keyCode;
this.charCode = e.charCode;
this.target = E.getTarget(e);
this.xy = E.getXY(e);
} else {
this.button = -1;
this.shiftKey = false;
this.ctrlKey = false;
this.altKey = false;
this.keyCode = 0;
this.charCode = 0;
this.target = null;
this.xy = [0, 0];
}
return this;
},
stopEvent: function () {
if (this.browserEvent) {
if (this.browserEvent.type == 'mousedown') {
Ext.EventManager.stoppedMouseDownEvent.fire(this);
}
E.stopEvent(this.browserEvent);
}
},
preventDefault: function () {
if (this.browserEvent) {
E.preventDefault(this.browserEvent);
}
},
isNavKeyPress: function () {
var k = this.keyCode;
k = Ext.isSafari ? (safariKeys[k] || k) : k;
return (k >= 33 && k <= 40) || k == this.RETURN || k == this.TAB || k == this.ESC;
},
isSpecialKey: function () {
var k = this.keyCode;
return (this.type == 'keypress' && this.ctrlKey) || k == 9 || k == 13 || k == 40 || k == 27 ||
(k == 16) || (k == 17) ||
(k >= 18 && k <= 20) ||
(k >= 33 && k <= 35) ||
(k >= 36 && k <= 39) ||
(k >= 44 && k <= 45);
},
stopPropagation: function () {
if (this.browserEvent) {
if (this.browserEvent.type == 'mousedown') {
Ext.EventManager.stoppedMouseDownEvent.fire(this);
}
E.stopPropagation(this.browserEvent);
}
},
getCharCode: function () {
return this.charCode || this.keyCode;
},
getKey: function () {
var k = this.keyCode || this.charCode;
return Ext.isSafari ? (safariKeys[k] || k) : k;
},
getPageX: function () {
return this.xy[0];
},
getPageY: function () {
return this.xy[1];
},
getTime: function () {
if (this.browserEvent) {
return E.getTime(this.browserEvent);
}
return null;
},
getXY: function () {
return this.xy;
},
getTarget: function (selector, maxDepth, returnEl) {
return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : (returnEl ? Ext.get(this.target) : this.target);
},
getRelatedTarget: function () {
if (this.browserEvent) {
return E.getRelatedTarget(this.browserEvent);
}
return null;
},
getWheelDelta: function () {
var e = this.browserEvent;
var delta = 0;
if (e.wheelDelta) {
delta = e.wheelDelta / 120;
} else if (e.detail) {
delta = -e.detail / 3;
}
return delta;
},
hasModifier: function () {
return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false;
},
within: function (el, related) {
var t = this[related ? "getRelatedTarget" : "getTarget"]();
return t && Ext.fly(el).contains(t);
},
getPoint: function () {
return new Ext.lib.Point(this.xy[0], this.xy[1]);
}
};
return new Ext.EventObjectImpl();
}();
(function () {
var D = Ext.lib.Dom;
var E = Ext.lib.Event;
var A = Ext.lib.Anim;
var propCache = {};
var camelRe = /(-[a-z])/gi;
var camelFn = function (m, a) { return a.charAt(1).toUpperCase(); };
var view = document.defaultView;
Ext.Element = function (element, forceNew) {
var dom = typeof element == "string" ?
document.getElementById(element) : element;
if (!dom) {
return null;
}
var id = dom.id;
if (forceNew !== true && id && Ext.Element.cache[id]) {
return Ext.Element.cache[id];
}
this.dom = dom;
this.id = id || Ext.id(dom);
};
var El = Ext.Element;
El.prototype = {
originalDisplay: "",
visibilityMode: 1,
defaultUnit: "px",
setVisibilityMode: function (visMode) {
this.visibilityMode = visMode;
return this;
},
enableDisplayMode: function (display) {
this.setVisibilityMode(El.DISPLAY);
if (typeof display != "undefined") this.originalDisplay = display;
return this;
},
findParent: function (simpleSelector, maxDepth, returnEl) {
var p = this.dom, b = document.body, depth = 0, dq = Ext.DomQuery, stopEl;
maxDepth = maxDepth || 50;
if (typeof maxDepth != "number") {
stopEl = Ext.getDom(maxDepth);
maxDepth = 10;
}
while (p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl) {
if (dq.is(p, simpleSelector)) {
return returnEl ? Ext.get(p) : p;
}
depth++;
p = p.parentNode;
}
return null;
},
findParentNode: function (simpleSelector, maxDepth, returnEl) {
var p = Ext.fly(this.dom.parentNode, '_internal');
return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null;
},
up: function (simpleSelector, maxDepth) {
return this.findParentNode(simpleSelector, maxDepth, true);
},
is: function (simpleSelector) {
return Ext.DomQuery.is(this.dom, simpleSelector);
},
animate: function (args, duration, onComplete, easing, animType) {
this.anim(args, { duration: duration, callback: onComplete, easing: easing }, animType);
return this;
},
anim: function (args, opt, animType, defaultDur, defaultEase, cb) {
animType = animType || 'run';
opt = opt || {};
var anim = Ext.lib.Anim[animType](
this.dom, args,
(opt.duration || defaultDur) || .35,
(opt.easing || defaultEase) || 'easeOut',
function () {
Ext.callback(cb, this);
Ext.callback(opt.callback, opt.scope || this, [this, opt]);
},
this
);
opt.anim = anim;
return anim;
},
preanim: function (a, i) {
return !a[i] ? false : (typeof a[i] == "object" ? a[i] : { duration: a[i + 1], callback: a[i + 2], easing: a[i + 3] });
},
clean: function (forceReclean) {
if (this.isCleaned && forceReclean !== true) {
return this;
}
var ns = /\S/;
var d = this.dom, n = d.firstChild, ni = -1;
while (n) {
var nx = n.nextSibling;
if (n.nodeType == 3 && !ns.test(n.nodeValue)) {
d.removeChild(n);
} else {
n.nodeIndex = ++ni;
}
n = nx;
}
this.isCleaned = true;
return this;
},
scrollIntoView: function (container, hscroll) {
var c = Ext.getDom(container) || Ext.getBody().dom;
var el = this.dom;
var o = this.getOffsetsTo(c),
l = o[0] + c.scrollLeft,
t = o[1] + c.scrollTop,
b = t + el.offsetHeight,
r = l + el.offsetWidth;
var ch = c.clientHeight;
var ct = parseInt(c.scrollTop, 10);
var cl = parseInt(c.scrollLeft, 10);
var cb = ct + ch;
var cr = cl + c.clientWidth;
if (el.offsetHeight > ch || t < ct) {
c.scrollTop = t;
} else if (b > cb) {
c.scrollTop = b - ch;
}
c.scrollTop = c.scrollTop;
if (hscroll !== false) {
if (el.offsetWidth > c.clientWidth || l < cl) {
c.scrollLeft = l;
} else if (r > cr) {
c.scrollLeft = r - c.clientWidth;
}
c.scrollLeft = c.scrollLeft;
}
return this;
},
scrollChildIntoView: function (child, hscroll) {
Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
},
autoHeight: function (animate, duration, onComplete, easing) {
var oldHeight = this.getHeight();
this.clip();
this.setHeight(1); setTimeout(function () {
var height = parseInt(this.dom.scrollHeight, 10); if (!animate) {
this.setHeight(height);
this.unclip();
if (typeof onComplete == "function") {
onComplete();
}
} else {
this.setHeight(oldHeight); this.setHeight(height, animate, duration, function () {
this.unclip();
if (typeof onComplete == "function") onComplete();
}.createDelegate(this), easing);
}
}.createDelegate(this), 0);
return this;
},
contains: function (el) {
if (!el) { return false; }
return D.isAncestor(this.dom, el.dom ? el.dom : el);
},
isVisible: function (deep) {
var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none");
if (deep !== true || !vis) {
return vis;
}
var p = this.dom.parentNode;
while (p && p.tagName.toLowerCase() != "body") {
if (!Ext.fly(p, '_isVisible').isVisible()) {
return false;
}
p = p.parentNode;
}
return true;
},
select: function (selector, unique) {
return El.select(selector, unique, this.dom);
},
query: function (selector) {
return Ext.DomQuery.select(selector, this.dom);
},
child: function (selector, returnDom) {
var n = Ext.DomQuery.selectNode(selector, this.dom);
return returnDom ? n : Ext.get(n);
},
down: function (selector, returnDom) {
var n = Ext.DomQuery.selectNode(" > " + selector, this.dom);
return returnDom ? n : Ext.get(n);
},
initDD: function (group, config, overrides) {
var dd = new Ext.dd.DD(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
initDDProxy: function (group, config, overrides) {
var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
initDDTarget: function (group, config, overrides) {
var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config);
return Ext.apply(dd, overrides);
},
setVisible: function (visible, animate) {
if (!animate || !A) {
if (this.visibilityMode == El.DISPLAY) {
this.setDisplayed(visible);
} else {
this.fixDisplay();
this.dom.style.visibility = visible ? "visible" : "hidden";
}
} else {
var dom = this.dom;
var visMode = this.visibilityMode;
if (visible) {
this.setOpacity(.01);
this.setVisible(true);
}
this.anim({ opacity: { to: (visible ? 1 : 0) } },
this.preanim(arguments, 1),
null, .35, 'easeIn', function () {
if (!visible) {
if (visMode == El.DISPLAY) {
dom.style.display = "none";
} else {
dom.style.visibility = "hidden";
}
Ext.get(dom).setOpacity(1);
}
});
}
return this;
},
isDisplayed: function () {
return this.getStyle("display") != "none";
},
toggle: function (animate) {
this.setVisible(!this.isVisible(), this.preanim(arguments, 0));
return this;
},
setDisplayed: function (value) {
if (typeof value == "boolean") {
value = value ? this.originalDisplay : "none";
}
this.setStyle("display", value);
return this;
},
focus: function () {
try {
this.dom.focus();
} catch (e) { }
return this;
},
blur: function () {
try {
this.dom.blur();
} catch (e) { }
return this;
},
addClass: function (className) {
if (Ext.isArray(className)) {
for (var i = 0, len = className.length; i < len; i++) {
this.addClass(className[i]);
}
} else {
if (className && !this.hasClass(className)) {
this.dom.className = this.dom.className + " " + className;
}
}
return this;
},
radioClass: function (className) {
var siblings = this.dom.parentNode.childNodes;
for (var i = 0; i < siblings.length; i++) {
var s = siblings[i];
if (s.nodeType == 1) {
Ext.get(s).removeClass(className);
}
}
this.addClass(className);
return this;
},
removeClass: function (className) {
if (!className || !this.dom.className) {
return this;
}
if (Ext.isArray(className)) {
for (var i = 0, len = className.length; i < len; i++) {
this.removeClass(className[i]);
}
} else {
if (this.hasClass(className)) {
var re = this.classReCache[className];
if (!re) {
re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', "g");
this.classReCache[className] = re;
}
this.dom.className =
this.dom.className.replace(re, " ");
}
}
return this;
},
classReCache: {},
toggleClass: function (className) {
if (this.hasClass(className)) {
this.removeClass(className);
} else {
this.addClass(className);
}
return this;
},
hasClass: function (className) {
return className && (' ' + this.dom.className + ' ').indexOf(' ' + className + ' ') != -1;
},
replaceClass: function (oldClassName, newClassName) {
this.removeClass(oldClassName);
this.addClass(newClassName);
return this;
},
getStyles: function () {
var a = arguments, len = a.length, r = {};
for (var i = 0; i < len; i++) {
r[a[i]] = this.getStyle(a[i]);
}
return r;
},
getStyle: function () {
return view && view.getComputedStyle ?
function (prop) {
var el = this.dom, v, cs, camel;
if (prop == 'float') {
prop = "cssFloat";
}
if (v = el.style[prop]) {
return v;
}
if (cs = view.getComputedStyle(el, "")) {
if (!(camel = propCache[prop])) {
camel = propCache[prop] = prop.replace(camelRe, camelFn);
}
return cs[camel];
}
return null;
} :
function (prop) {
var el = this.dom, v, cs, camel;
if (prop == 'opacity') {
if (typeof el.style.filter == 'string') {
var m = el.style.filter.match(/alpha\(opacity=(.*)\)/i);
if (m) {
var fv = parseFloat(m[1]);
if (!isNaN(fv)) {
return fv ? fv / 100 : 0;
}
}
}
return 1;
} else if (prop == 'float') {
prop = "styleFloat";
}
if (!(camel = propCache[prop])) {
camel = propCache[prop] = prop.replace(camelRe, camelFn);
}
if (v = el.style[camel]) {
return v;
}
if (cs = el.currentStyle) {
return cs[camel];
}
return null;
};
}(),
setStyle: function (prop, value) {
if (typeof prop == "string") {
var camel;
if (!(camel = propCache[prop])) {
camel = propCache[prop] = prop.replace(camelRe, camelFn);
}
if (camel == 'opacity') {
this.setOpacity(value);
} else {
this.dom.style[camel] = value;
}
} else {
for (var style in prop) {
if (typeof prop[style] != "function") {
this.setStyle(style, prop[style]);
}
}
}
return this;
},
applyStyles: function (style) {
Ext.DomHelper.applyStyles(this.dom, style);
return this;
},
getX: function () {
return D.getX(this.dom);
},
getY: function () {
return D.getY(this.dom);
},
getXY: function () {
return D.getXY(this.dom);
},
getOffsetsTo: function (el) {
var o = this.getXY();
var e = Ext.fly(el, '_internal').getXY();
return [o[0] - e[0], o[1] - e[1]];
},
setX: function (x, animate) {
if (!animate || !A) {
D.setX(this.dom, x);
} else {
this.setXY([x, this.getY()], this.preanim(arguments, 1));
}
return this;
},
setY: function (y, animate) {
if (!animate || !A) {
D.setY(this.dom, y);
} else {
this.setXY([this.getX(), y], this.preanim(arguments, 1));
}
return this;
},
setLeft: function (left) {
this.setStyle("left", this.addUnits(left));
return this;
},
setTop: function (top) {
this.setStyle("top", this.addUnits(top));
return this;
},
setRight: function (right) {
this.setStyle("right", this.addUnits(right));
return this;
},
setBottom: function (bottom) {
this.setStyle("bottom", this.addUnits(bottom));
return this;
},
setXY: function (pos, animate) {
if (!animate || !A) {
D.setXY(this.dom, pos);
} else {
this.anim({ points: { to: pos } }, this.preanim(arguments, 1), 'motion');
}
return this;
},
setLocation: function (x, y, animate) {
this.setXY([x, y], this.preanim(arguments, 2));
return this;
},
moveTo: function (x, y, animate) {
this.setXY([x, y], this.preanim(arguments, 2));
return this;
},
getRegion: function () {
return D.getRegion(this.dom);
},
getHeight: function (contentHeight) {
var h = this.dom.offsetHeight || 0;
h = contentHeight !== true ? h : h - this.getBorderWidth("tb") - this.getPadding("tb");
return h < 0 ? 0 : h;
},
getWidth: function (contentWidth) {
var w = this.dom.offsetWidth || 0;
w = contentWidth !== true ? w : w - this.getBorderWidth("lr") - this.getPadding("lr");
return w < 0 ? 0 : w;
},
getComputedHeight: function () {
var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight);
if (!h) {
h = parseInt(this.getStyle('height'), 10) || 0;
if (!this.isBorderBox()) {
h += this.getFrameWidth('tb');
}
}
return h;
},
getComputedWidth: function () {
var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth);
if (!w) {
w = parseInt(this.getStyle('width'), 10) || 0;
if (!this.isBorderBox()) {
w += this.getFrameWidth('lr');
}
}
return w;
},
getSize: function (contentSize) {
return { width: this.getWidth(contentSize), height: this.getHeight(contentSize) };
},
getStyleSize: function () {
var w, h, d = this.dom, s = d.style;
if (s.width && s.width != 'auto') {
w = parseInt(s.width, 10);
if (Ext.isBorderBox) {
w -= this.getFrameWidth('lr');
}
}
if (s.height && s.height != 'auto') {
h = parseInt(s.height, 10);
if (Ext.isBorderBox) {
h -= this.getFrameWidth('tb');
}
}
return { width: w || this.getWidth(true), height: h || this.getHeight(true) };
},
getViewSize: function () {
var d = this.dom, doc = document, aw = 0, ah = 0;
if (d == doc || d == doc.body) {
return { width: D.getViewWidth(), height: D.getViewHeight() };
} else {
return {
width: d.clientWidth,
height: d.clientHeight
};
}
},
getValue: function (asNumber) {
return asNumber ? parseInt(this.dom.value, 10) : this.dom.value;
},
adjustWidth: function (width) {
if (typeof width == "number") {
if (this.autoBoxAdjust && !this.isBorderBox()) {
width -= (this.getBorderWidth("lr") + this.getPadding("lr"));
}
if (width < 0) {
width = 0;
}
}
return width;
},
adjustHeight: function (height) {
if (typeof height == "number") {
if (this.autoBoxAdjust && !this.isBorderBox()) {
height -= (this.getBorderWidth("tb") + this.getPadding("tb"));
}
if (height < 0) {
height = 0;
}
}
return height;
},
setWidth: function (width, animate) {
width = this.adjustWidth(width);
if (!animate || !A) {
this.dom.style.width = this.addUnits(width);
} else {
this.anim({ width: { to: width } }, this.preanim(arguments, 1));
}
return this;
},
setHeight: function (height, animate) {
height = this.adjustHeight(height);
if (!animate || !A) {
this.dom.style.height = this.addUnits(height);
} else {
this.anim({ height: { to: height } }, this.preanim(arguments, 1));
}
return this;
},
setSize: function (width, height, animate) {
if (typeof width == "object") {
height = width.height; width = width.width;
}
width = this.adjustWidth(width); height = this.adjustHeight(height);
if (!animate || !A) {
this.dom.style.width = this.addUnits(width);
this.dom.style.height = this.addUnits(height);
} else {
this.anim({ width: { to: width }, height: { to: height } }, this.preanim(arguments, 2));
}
return this;
},
setBounds: function (x, y, width, height, animate) {
if (!animate || !A) {
this.setSize(width, height);
this.setLocation(x, y);
} else {
width = this.adjustWidth(width); height = this.adjustHeight(height);
this.anim({ points: { to: [x, y] }, width: { to: width }, height: { to: height } },
this.preanim(arguments, 4), 'motion');
}
return this;
},
setRegion: function (region, animate) {
this.setBounds(region.left, region.top, region.right - region.left, region.bottom - region.top, this.preanim(arguments, 1));
return this;
},
addListener: function (eventName, fn, scope, options) {
Ext.EventManager.on(this.dom, eventName, fn, scope || this, options);
},
removeListener: function (eventName, fn, scope) {
Ext.EventManager.removeListener(this.dom, eventName, fn, scope || this);
return this;
},
removeAllListeners: function () {
Ext.EventManager.removeAll(this.dom);
return this;
},
relayEvent: function (eventName, observable) {
this.on(eventName, function (e) {
observable.fireEvent(eventName, e);
});
},
setOpacity: function (opacity, animate) {
if (!animate || !A) {
var s = this.dom.style;
if (Ext.isIE) {
s.zoom = 1;
s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi, "") +
(opacity == 1 ? "" : " alpha(opacity=" + opacity * 100 + ")");
} else {
s.opacity = opacity;
}
} else {
this.anim({ opacity: { to: opacity } }, this.preanim(arguments, 1), null, .35, 'easeIn');
}
return this;
},
getLeft: function (local) {
if (!local) {
return this.getX();
} else {
return parseInt(this.getStyle("left"), 10) || 0;
}
},
getRight: function (local) {
if (!local) {
return this.getX() + this.getWidth();
} else {
return (this.getLeft(true) + this.getWidth()) || 0;
}
},
getTop: function (local) {
if (!local) {
return this.getY();
} else {
return parseInt(this.getStyle("top"), 10) || 0;
}
},
getBottom: function (local) {
if (!local) {
return this.getY() + this.getHeight();
} else {
return (this.getTop(true) + this.getHeight()) || 0;
}
},
position: function (pos, zIndex, x, y) {
if (!pos) {
if (this.getStyle('position') == 'static') {
this.setStyle('position', 'relative');
}
} else {
this.setStyle("position", pos);
}
if (zIndex) {
this.setStyle("z-index", zIndex);
}
if (x !== undefined && y !== undefined) {
this.setXY([x, y]);
} else if (x !== undefined) {
this.setX(x);
} else if (y !== undefined) {
this.setY(y);
}
},
clearPositioning: function (value) {
value = value || '';
this.setStyle({
"left": value,
"right": value,
"top": value,
"bottom": value,
"z-index": "",
"position": "static"
});
return this;
},
getPositioning: function () {
var l = this.getStyle("left");
var t = this.getStyle("top");
return {
"position": this.getStyle("position"),
"left": l,
"right": l ? "" : this.getStyle("right"),
"top": t,
"bottom": t ? "" : this.getStyle("bottom"),
"z-index": this.getStyle("z-index")
};
},
getBorderWidth: function (side) {
return this.addStyles(side, El.borders);
},
getPadding: function (side) {
return this.addStyles(side, El.paddings);
},
setPositioning: function (pc) {
this.applyStyles(pc);
if (pc.right == "auto") {
this.dom.style.right = "";
}
if (pc.bottom == "auto") {
this.dom.style.bottom = "";
}
return this;
},
fixDisplay: function () {
if (this.getStyle("display") == "none") {
this.setStyle("visibility", "hidden");
this.setStyle("display", this.originalDisplay); if (this.getStyle("display") == "none") {
this.setStyle("display", "block");
}
}
},
setOverflow: function (v) {
if (v == 'auto' && Ext.isMac && Ext.isGecko2) {
this.dom.style.overflow = 'hidden';
(function () { this.dom.style.overflow = 'auto'; }).defer(1, this);
} else {
this.dom.style.overflow = v;
}
},
setLeftTop: function (left, top) {
this.dom.style.left = this.addUnits(left);
this.dom.style.top = this.addUnits(top);
return this;
},
move: function (direction, distance, animate) {
var xy = this.getXY();
direction = direction.toLowerCase();
switch (direction) {
case "l":
case "left":
this.moveTo(xy[0] - distance, xy[1], this.preanim(arguments, 2));
break;
case "r":
case "right":
this.moveTo(xy[0] + distance, xy[1], this.preanim(arguments, 2));
break;
case "t":
case "top":
case "up":
this.moveTo(xy[0], xy[1] - distance, this.preanim(arguments, 2));
break;
case "b":
case "bottom":
case "down":
this.moveTo(xy[0], xy[1] + distance, this.preanim(arguments, 2));
break;
}
return this;
},
clip: function () {
if (!this.isClipped) {
this.isClipped = true;
this.originalClip = {
"o": this.getStyle("overflow"),
"x": this.getStyle("overflow-x"),
"y": this.getStyle("overflow-y")
};
this.setStyle("overflow", "hidden");
this.setStyle("overflow-x", "hidden");
this.setStyle("overflow-y", "hidden");
}
return this;
},
unclip: function () {
if (this.isClipped) {
this.isClipped = false;
var o = this.originalClip;
if (o.o) { this.setStyle("overflow", o.o); }
if (o.x) { this.setStyle("overflow-x", o.x); }
if (o.y) { this.setStyle("overflow-y", o.y); }
}
return this;
},
getAnchorXY: function (anchor, local, s) {
var w, h, vp = false;
if (!s) {
var d = this.dom;
if (d == document.body || d == document) {
vp = true;
w = D.getViewWidth(); h = D.getViewHeight();
} else {
w = this.getWidth(); h = this.getHeight();
}
} else {
w = s.width; h = s.height;
}
var x = 0, y = 0, r = Math.round;
switch ((anchor || "tl").toLowerCase()) {
case "c":
x = r(w * .5);
y = r(h * .5);
break;
case "t":
x = r(w * .5);
y = 0;
break;
case "l":
x = 0;
y = r(h * .5);
break;
case "r":
x = w;
y = r(h * .5);
break;
case "b":
x = r(w * .5);
y = h;
break;
case "tl":
x = 0;
y = 0;
break;
case "bl":
x = 0;
y = h;
break;
case "br":
x = w;
y = h;
break;
case "tr":
x = w;
y = 0;
break;
}
if (local === true) {
return [x, y];
}
if (vp) {
var sc = this.getScroll();
return [x + sc.left, y + sc.top];
}
var o = this.getXY();
return [x + o[0], y + o[1]];
},
getAlignToXY: function (el, p, o) {
el = Ext.get(el);
if (!el || !el.dom) {
throw "Element.alignToXY with an element that doesn't exist";
}
var d = this.dom;
var c = false; var p1 = "", p2 = "";
o = o || [0, 0];
if (!p) {
p = "tl-bl";
} else if (p == "?") {
p = "tl-bl?";
} else if (p.indexOf("-") == -1) {
p = "tl-" + p;
}
p = p.toLowerCase();
var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/);
if (!m) {
throw "Element.alignTo with an invalid alignment " + p;
}
p1 = m[1]; p2 = m[2]; c = !!m[3];
var a1 = this.getAnchorXY(p1, true);
var a2 = el.getAnchorXY(p2, false);
var x = a2[0] - a1[0] + o[0];
var y = a2[1] - a1[1] + o[1];
if (c) {
var w = this.getWidth(), h = this.getHeight(), r = el.getRegion();
var dw = D.getViewWidth() - 5, dh = D.getViewHeight() - 5;
var p1y = p1.charAt(0), p1x = p1.charAt(p1.length - 1);
var p2y = p2.charAt(0), p2x = p2.charAt(p2.length - 1);
var swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t"));
var swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r"));
var doc = document;
var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0) + 5;
var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0) + 5;
if ((x + w) > dw + scrollX) {
x = swapX ? r.left - w : dw + scrollX - w;
}
if (x < scrollX) {
x = swapX ? r.right : scrollX;
}
if ((y + h) > dh + scrollY) {
y = swapY ? r.top - h : dh + scrollY - h;
}
if (y < scrollY) {
y = swapY ? r.bottom : scrollY;
}
}
return [x, y];
},
getConstrainToXY: function () {
var os = { top: 0, left: 0, bottom: 0, right: 0 };
return function (el, local, offsets, proposedXY) {
el = Ext.get(el);
offsets = offsets ? Ext.applyIf(offsets, os) : os;
var vw, vh, vx = 0, vy = 0;
if (el.dom == document.body || el.dom == document) {
vw = Ext.lib.Dom.getViewWidth();
vh = Ext.lib.Dom.getViewHeight();
} else {
vw = el.dom.clientWidth;
vh = el.dom.clientHeight;
if (!local) {
var vxy = el.getXY();
vx = vxy[0];
vy = vxy[1];
}
}
var s = el.getScroll();
vx += offsets.left + s.left;
vy += offsets.top + s.top;
vw -= offsets.right;
vh -= offsets.bottom;
var vr = vx + vw;
var vb = vy + vh;
var xy = proposedXY || (!local ? this.getXY() : [this.getLeft(true), this.getTop(true)]);
var x = xy[0], y = xy[1];
var w = this.dom.offsetWidth, h = this.dom.offsetHeight;
var moved = false;
if ((x + w) > vr) {
x = vr - w;
moved = true;
}
if ((y + h) > vb) {
y = vb - h;
moved = true;
}
if (x < vx) {
x = vx;
moved = true;
}
if (y < vy) {
y = vy;
moved = true;
}
return moved ? [x, y] : false;
};
}(),
adjustForConstraints: function (xy, parent, offsets) {
return this.getConstrainToXY(parent || document, false, offsets, xy) || xy;
},
alignTo: function (element, position, offsets, animate) {
var xy = this.getAlignToXY(element, position, offsets);
this.setXY(xy, this.preanim(arguments, 3));
return this;
},
anchorTo: function (el, alignment, offsets, animate, monitorScroll, callback) {
var action = function () {
this.alignTo(el, alignment, offsets, animate);
Ext.callback(callback, this);
};
Ext.EventManager.onWindowResize(action, this);
var tm = typeof monitorScroll;
if (tm != 'undefined') {
Ext.EventManager.on(window, 'scroll', action, this,
{ buffer: tm == 'number' ? monitorScroll : 50 });
}
action.call(this); return this;
},
clearOpacity: function () {
if (window.ActiveXObject) {
if (typeof this.dom.style.filter == 'string' && (/alpha/i).test(this.dom.style.filter)) {
this.dom.style.filter = "";
}
} else {
this.dom.style.opacity = "";
this.dom.style["-moz-opacity"] = "";
this.dom.style["-khtml-opacity"] = "";
}
return this;
},
hide: function (animate) {
this.setVisible(false, this.preanim(arguments, 0));
return this;
},
show: function (animate) {
this.setVisible(true, this.preanim(arguments, 0));
return this;
},
addUnits: function (size) {
return Ext.Element.addUnits(size, this.defaultUnit);
},
update: function (html, loadScripts, callback) {
if (typeof html == "undefined") {
html = "";
}
if (loadScripts !== true) {
this.dom.innerHTML = html;
if (typeof callback == "function") {
callback();
}
return this;
}
var id = Ext.id();
var dom = this.dom;
html += '';
E.onAvailable(id, function () {
var hd = document.getElementsByTagName("head")[0];
var re = /(?: