aboutsummaryrefslogtreecommitdiffstats
path: root/samples/src/main/java
diff options
context:
space:
mode:
authorRay Cromwell <cromwellian@gmail.com>2009-07-23 22:59:18 +0000
committerRay Cromwell <cromwellian@gmail.com>2009-07-23 22:59:18 +0000
commit42ed8c73d5ab5bb8ba585b9f026c19108c83fe37 (patch)
tree970a0c9bf80a40de96186c8966e4467c39a9cb99 /samples/src/main/java
parenteabe26078b19afcd94b45b9b7e950448054b6c1e (diff)
downloadgwtquery-42ed8c73d5ab5bb8ba585b9f026c19108c83fe37.tar.gz
gwtquery-42ed8c73d5ab5bb8ba585b9f026c19108c83fe37.zip
Big update
Diffstat (limited to 'samples/src/main/java')
-rw-r--r--samples/src/main/java/gwtquery/samples/GwtQueryDemo.gwt.xml4
-rw-r--r--samples/src/main/java/gwtquery/samples/GwtQueryEffects.gwt.xml4
-rw-r--r--samples/src/main/java/gwtquery/samples/GwtQueryPlugin.gwt.xml9
-rw-r--r--samples/src/main/java/gwtquery/samples/GwtQuerySample.gwt.xml9
-rw-r--r--samples/src/main/java/gwtquery/samples/GwtQueryWidgets.gwt.xml3
-rw-r--r--samples/src/main/java/gwtquery/samples/client/GwtQueryBenchModule.java1
-rw-r--r--samples/src/main/java/gwtquery/samples/client/GwtQueryDemoModule.java118
-rw-r--r--samples/src/main/java/gwtquery/samples/client/GwtQueryEffectsModule.java7
-rw-r--r--samples/src/main/java/gwtquery/samples/client/GwtQueryPluginModule.java10
-rw-r--r--samples/src/main/java/gwtquery/samples/client/GwtQueryWidgetModule.java5
-rw-r--r--samples/src/main/java/gwtquery/samples/client/MySelectors.java2
-rw-r--r--samples/src/main/java/gwtquery/samples/public/DOMAssistantComplete-2.7.js2826
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQueryBench.html30
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQueryDemo.html62
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQueryEffects.html13
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQueryPlugin.html358
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQuerySample.html15
-rw-r--r--samples/src/main/java/gwtquery/samples/public/GwtQueryWidgets.html23
-rw-r--r--samples/src/main/java/gwtquery/samples/public/dojo.js4148
-rw-r--r--samples/src/main/java/gwtquery/samples/public/ext-all.js22316
-rw-r--r--samples/src/main/java/gwtquery/samples/public/ext-base.js1867
-rw-r--r--samples/src/main/java/gwtquery/samples/public/ext-core.js4191
-rw-r--r--samples/src/main/java/gwtquery/samples/public/jquery-1.2.3.js7002
-rw-r--r--samples/src/main/java/gwtquery/samples/public/jquery-1.3.1.js8590
-rw-r--r--samples/src/main/java/gwtquery/samples/public/prototype-1.6.0.3.js7584
-rw-r--r--samples/src/main/java/gwtquery/samples/public/racetrack.html13
26 files changed, 46061 insertions, 13149 deletions
diff --git a/samples/src/main/java/gwtquery/samples/GwtQueryDemo.gwt.xml b/samples/src/main/java/gwtquery/samples/GwtQueryDemo.gwt.xml
index d496d5f6..cfb48547 100644
--- a/samples/src/main/java/gwtquery/samples/GwtQueryDemo.gwt.xml
+++ b/samples/src/main/java/gwtquery/samples/GwtQueryDemo.gwt.xml
@@ -1,7 +1,7 @@
<module>
<inherits name='com.google.gwt.query.Query'/>
<entry-point class='gwtquery.samples.client.GwtQueryDemoModule'/>
-
-
+
+
</module>
diff --git a/samples/src/main/java/gwtquery/samples/GwtQueryEffects.gwt.xml b/samples/src/main/java/gwtquery/samples/GwtQueryEffects.gwt.xml
index a8f1ad41..a07f2320 100644
--- a/samples/src/main/java/gwtquery/samples/GwtQueryEffects.gwt.xml
+++ b/samples/src/main/java/gwtquery/samples/GwtQueryEffects.gwt.xml
@@ -1,7 +1,7 @@
<module>
<inherits name='com.google.gwt.query.Query'/>
<entry-point class='gwtquery.samples.client.GwtQueryEffectsModule'/>
-
-
+
+
</module>
diff --git a/samples/src/main/java/gwtquery/samples/GwtQueryPlugin.gwt.xml b/samples/src/main/java/gwtquery/samples/GwtQueryPlugin.gwt.xml
index e2254211..cdadc03a 100644
--- a/samples/src/main/java/gwtquery/samples/GwtQueryPlugin.gwt.xml
+++ b/samples/src/main/java/gwtquery/samples/GwtQueryPlugin.gwt.xml
@@ -1,7 +1,10 @@
<module>
- <inherits name='com.google.gwt.query.Query'/>
+ <!--<inherits name='com.google.gwt.query.Query'/>-->
+ <!--<inherits name='gwtquery.Plugins'/>-->
+ <inherits name='com.google.gwt.user.User'/>
+
<entry-point class='gwtquery.samples.client.GwtQueryPluginModule'/>
-
-
+
+
</module>
diff --git a/samples/src/main/java/gwtquery/samples/GwtQuerySample.gwt.xml b/samples/src/main/java/gwtquery/samples/GwtQuerySample.gwt.xml
index 11e8bc71..0bcebf32 100644
--- a/samples/src/main/java/gwtquery/samples/GwtQuerySample.gwt.xml
+++ b/samples/src/main/java/gwtquery/samples/GwtQuerySample.gwt.xml
@@ -1,7 +1,10 @@
<module>
- <inherits name='com.google.gwt.query.Query'/>
+ <!--<inherits name='com.google.gwt.query.Query'/>-->
+ <inherits name='com.google.gwt.user.User'/>
+ <add-linker name="xs"/>
+ <set-property name="user.agent" value="gecko1_8"/>
<entry-point class='gwtquery.samples.client.GwtQuerySampleModule'/>
-
-
+
+
</module>
diff --git a/samples/src/main/java/gwtquery/samples/GwtQueryWidgets.gwt.xml b/samples/src/main/java/gwtquery/samples/GwtQueryWidgets.gwt.xml
index cecae267..d9d0673c 100644
--- a/samples/src/main/java/gwtquery/samples/GwtQueryWidgets.gwt.xml
+++ b/samples/src/main/java/gwtquery/samples/GwtQueryWidgets.gwt.xml
@@ -1,7 +1,6 @@
<module>
<inherits name='com.google.gwt.query.Query'/>
+ <inherits name='gwtquery.Plugins'/>
<entry-point class='gwtquery.samples.client.GwtQueryWidgetModule'/>
-
-
</module>
diff --git a/samples/src/main/java/gwtquery/samples/client/GwtQueryBenchModule.java b/samples/src/main/java/gwtquery/samples/client/GwtQueryBenchModule.java
index 486de751..056618e5 100644
--- a/samples/src/main/java/gwtquery/samples/client/GwtQueryBenchModule.java
+++ b/samples/src/main/java/gwtquery/samples/client/GwtQueryBenchModule.java
@@ -44,7 +44,6 @@ public class GwtQueryBenchModule implements EntryPoint {
new DojoBenchmark(), new PrototypeBenchmark());
}
});
-
}
public interface Benchmark {
diff --git a/samples/src/main/java/gwtquery/samples/client/GwtQueryDemoModule.java b/samples/src/main/java/gwtquery/samples/client/GwtQueryDemoModule.java
index 2c0b5fc5..90934a57 100644
--- a/samples/src/main/java/gwtquery/samples/client/GwtQueryDemoModule.java
+++ b/samples/src/main/java/gwtquery/samples/client/GwtQueryDemoModule.java
@@ -2,84 +2,84 @@ package gwtquery.samples.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Node;
-import com.google.gwt.user.client.Event;
+import com.google.gwt.dom.client.NodeList;
+import com.google.gwt.query.client.Function;
import com.google.gwt.query.client.GQuery;
+import static com.google.gwt.query.client.GQuery.$;
import com.google.gwt.query.client.Selector;
-import com.google.gwt.query.client.Function;
import com.google.gwt.query.client.Selectors;
-
-import static com.google.gwt.query.client.GQuery.$;
-import static com.google.gwt.query.client.Effects.Effects;
+import com.google.gwt.user.client.Event;
/**
- *
+ *
*/
public class GwtQueryDemoModule implements EntryPoint {
- // Compile-time Selectors!
- public interface Slide extends Selectors {
- // find all LI elements in DIV.slide elements
- @Selector("div.slide li")
- NodeList<Element> allSlideBullets();
- // find all LI elements rooted at ctx
- @Selector("li")
- NodeList<Element> slideBulletsCtx(Node ctx);
+ // Compile-time Selectors!
+ public interface Slide extends Selectors {
+
+ // find all LI elements in DIV.slide elements
+ @Selector("div.slide li")
+ NodeList<Element> allSlideBullets();
- // Find all DIV elements with class 'slide'
- @Selector("div.slide")
- NodeList<Element> allSlides();
+ // Find all DIV elements with class 'slide'
+ @Selector("div.slide")
+ NodeList<Element> allSlides();
- }
+ // find all LI elements rooted at ctx
+ @Selector("li")
+ NodeList<Element> slideBulletsCtx(Node ctx);
+ }
- public void onModuleLoad() {
- // Ask GWT compiler to generate our interface
- final Slide s = GWT.create(Slide.class);
+ public void onModuleLoad() {
+ // Ask GWT compiler to generate our interface
+ final Slide s = GWT.create(Slide.class);
- $(s.allSlides()).hide().eq(0).show();
+ $(s.allSlides()).hide().eq(0).show();
- // we initially hide all bullets
- $(s.allSlideBullets()).hide();
+ // we initially hide all bullets
+ $(s.allSlideBullets()).hide();
- // add onclick handler to body element
- $(Document.get().getBody()).click(new Function() {
- // two state variables to note current slide being shown
- // and current bullet
- int curSlide = 0;
- int curBullets = 0;
+ // add onclick handler to body element
+ $(Document.get().getBody()).click(new Function() {
+ // two state variables to note current slide being shown
+ // and current bullet
+ int curSlide = 0;
- // query and store all slides, and bullets of current slide
- GQuery slides = $(s.allSlides());
- GQuery bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
+ int curBullets = 0;
- public boolean f(Event e) {
- // onclick, if not all bullets shown, show a bullet and increment
- if (curBullets < bullets.size()) {
- bullets.eq(curBullets++).show();
- } else {
- // all bullets shown, hide them and current slide
+ // query and store all slides, and bullets of current slide
+ GQuery slides = $(s.allSlides());
+
+ GQuery bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
+
+ public boolean f(Event e) {
+ // onclick, if not all bullets shown, show a bullet and increment
+ if (curBullets < bullets.size()) {
+ bullets.eq(curBullets++).show();
+ } else {
+ // all bullets shown, hide them and current slide
// bullets.css("opacity","0");
- bullets.hide();
- slides.eq(curSlide).hide();
+ bullets.hide();
+ slides.eq(curSlide).hide();
// slides.eq(curSlide).css("display", "none");
- // move to next slide, checking for wrap around
- curSlide++;
- if(curSlide == slides.size()) {
- curSlide = 0;
- }
- curBullets = 0;
- // query for new set of bullets, and show next slide
- // by changing opacity to 1 and display to block
- bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
- slides.eq(curSlide).show();
- }
- return true;
- }
- });
-
- }
+ // move to next slide, checking for wrap around
+ curSlide++;
+ if (curSlide == slides.size()) {
+ curSlide = 0;
+ }
+ curBullets = 0;
+ // query for new set of bullets, and show next slide
+ // by changing opacity to 1 and display to block
+ bullets = $(s.slideBulletsCtx(slides.get(curSlide)));
+ slides.eq(curSlide).show();
+ }
+ return true;
+ }
+ });
+ }
}
diff --git a/samples/src/main/java/gwtquery/samples/client/GwtQueryEffectsModule.java b/samples/src/main/java/gwtquery/samples/client/GwtQueryEffectsModule.java
index 26626faf..c393514c 100644
--- a/samples/src/main/java/gwtquery/samples/client/GwtQueryEffectsModule.java
+++ b/samples/src/main/java/gwtquery/samples/client/GwtQueryEffectsModule.java
@@ -1,16 +1,14 @@
package gwtquery.samples.client;
import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.query.client.Effects;
-import com.google.gwt.query.client.Function;
+import static com.google.gwt.query.client.Effects.Easing.LINEAR;
import static com.google.gwt.query.client.Effects.Effects;
-import static com.google.gwt.query.client.Effects.Easing.*;
+import com.google.gwt.query.client.Function;
import static com.google.gwt.query.client.GQuery.$;
import static com.google.gwt.query.client.GQuery.$$;
import static com.google.gwt.query.client.GQuery.lazy;
import com.google.gwt.user.client.Event;
-
public class GwtQueryEffectsModule implements EntryPoint {
public void onModuleLoad() {
@@ -23,7 +21,6 @@ public class GwtQueryEffectsModule implements EntryPoint {
css("color", "blue").
done());
-
$("div.outer > div").css("position", "relative").dblclick(new Function() {
public boolean f(Event e) {
$("div.outer > div").as(Effects).
diff --git a/samples/src/main/java/gwtquery/samples/client/GwtQueryPluginModule.java b/samples/src/main/java/gwtquery/samples/client/GwtQueryPluginModule.java
index 8b965163..c9c11394 100644
--- a/samples/src/main/java/gwtquery/samples/client/GwtQueryPluginModule.java
+++ b/samples/src/main/java/gwtquery/samples/client/GwtQueryPluginModule.java
@@ -5,11 +5,12 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.query.client.Function;
import static com.google.gwt.query.client.GQuery.$;
-import com.google.gwt.query.client.plugins.Ratings;
-import com.google.gwt.query.client.plugins.Widgets;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
+import gwtquery.plugins.collapser.Collapser;
+import static gwtquery.plugins.ratings.Ratings.Ratings;
+import static gwtquery.plugins.widgets.Widgets.Widgets;
public class GwtQueryPluginModule implements EntryPoint {
@@ -20,16 +21,17 @@ public class GwtQueryPluginModule implements EntryPoint {
@Override
public boolean f(Event e) {
$(e).attr("disabled", "true");
- $("input").as(Ratings.Ratings).rating();
+ $("input").as(Ratings).rating();
return true;
}
});
- $(".btn:nth-child(odd)").as(Widgets.Widgets).button()
+ $(".btn:nth-child(odd)").as(Widgets).button()
.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
Window.alert("You Clicked the Button");
}
}).end();
+ $(".collapsible").as(Collapser.Collapser).apply();
}
} \ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/client/GwtQueryWidgetModule.java b/samples/src/main/java/gwtquery/samples/client/GwtQueryWidgetModule.java
index 9264deda..b0df016c 100644
--- a/samples/src/main/java/gwtquery/samples/client/GwtQueryWidgetModule.java
+++ b/samples/src/main/java/gwtquery/samples/client/GwtQueryWidgetModule.java
@@ -5,10 +5,10 @@ import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.query.client.Function;
import static com.google.gwt.query.client.GQuery.$;
-import com.google.gwt.query.client.plugins.Widgets;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
+import static gwtquery.plugins.widgets.Widgets.Widgets;
public class GwtQueryWidgetModule implements EntryPoint {
@@ -18,7 +18,7 @@ public class GwtQueryWidgetModule implements EntryPoint {
$("#enhance").one(Event.ONCLICK, null, new Function() {
@Override
public boolean f(Event e) {
- $(".btn:nth-child(odd)").as(Widgets.Widgets).button().label("Foo")
+ $(".btn:nth-child(odd)").as(Widgets).button().label("Foo")
.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent clickEvent) {
Window.alert("You Clicked the Button");
@@ -28,6 +28,5 @@ public class GwtQueryWidgetModule implements EntryPoint {
return true;
}
});
-
}
} \ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/client/MySelectors.java b/samples/src/main/java/gwtquery/samples/client/MySelectors.java
index 8a934080..0efad537 100644
--- a/samples/src/main/java/gwtquery/samples/client/MySelectors.java
+++ b/samples/src/main/java/gwtquery/samples/client/MySelectors.java
@@ -14,6 +14,7 @@ public interface MySelectors extends Selectors {
// NodeList<Element> h1IdContainsSelectors();
//
+
@Selector("a[href][lang][class]")
NodeList<Element> aHrefLangClass();
@@ -36,6 +37,7 @@ public interface MySelectors extends Selectors {
// NodeList<Element> allFirst();
//
+
@Selector("div:not(.example)")
NodeList<Element> divNotExample();
diff --git a/samples/src/main/java/gwtquery/samples/public/DOMAssistantComplete-2.7.js b/samples/src/main/java/gwtquery/samples/public/DOMAssistantComplete-2.7.js
index 4f3683a7..ae887c9d 100644
--- a/samples/src/main/java/gwtquery/samples/public/DOMAssistantComplete-2.7.js
+++ b/samples/src/main/java/gwtquery/samples/public/DOMAssistantComplete-2.7.js
@@ -1,1347 +1,1545 @@
// Developed by Robert Nyman/DOMAssistant team, code/licensing: http://code.google.com/p/domassistant/, documentation: http://www.domassistant.com/documentation, version 2.7
var DOMAssistant = function () {
- var HTMLArray = function () {
- // Constructor
- };
- var isIE = /*@cc_on!@*/false;
- var cachedElms = [];
- var pushAll = function (set1, set2) {
- for (var j=0, jL=set2.length; j<jL; j++) {
- set1.push(set2[j]);
- }
- return set1;
- };
- if (isIE) {
- pushAll = function (set1, set2) {
- if (set2.slice) {
- return set1.concat(set2);
- }
- for (var i=0, iL=set2.length; i<iL; i++) {
- set1[set1.length] = set2[i];
- }
- return set1;
- };
- }
- return {
- allMethods : [],
- publicMethods : [
- "cssSelect",
- "elmsByClass",
- "elmsByAttribute",
- "elmsByTag"
- ],
-
- initCore : function () {
- this.applyMethod.call(window, "$", this.$);
- this.applyMethod.call(window, "$$", this.$$);
- window.DOMAssistant = this;
- if (isIE) {
- HTMLArray = Array;
- }
- HTMLArray.prototype = [];
- HTMLArray.prototype.each = function (functionCall) {
- for (var i=0, il=this.length; i<il; i++) {
- functionCall.call(this[i]);
- }
- return this;
- };
- HTMLArray.prototype.first = function () {
- return (typeof this[0] !== "undefined")? DOMAssistant.addMethodsToElm(this[0]) : null;
- };
- HTMLArray.prototype.end = function () {
- return this.previousSet;
- };
- this.attach(this);
- },
-
- addMethods : function (name, method) {
- if (typeof this.allMethods[name] === "undefined") {
- this.allMethods[name] = method;
- this.addHTMLArrayPrototype(name, method);
- }
- },
-
- addMethodsToElm : function (elm) {
- for (var method in this.allMethods) {
- if (typeof this.allMethods[method] !== "undefined") {
- this.applyMethod.call(elm, method, this.allMethods[method]);
- }
- }
- return elm;
- },
-
- applyMethod : function (method, func) {
- if (typeof this[method] !== "function") {
- this[method] = func;
- }
- },
-
- attach : function (plugin) {
- var publicMethods = plugin.publicMethods;
- if (typeof publicMethods === "undefined") {
- for (var method in plugin) {
- if (method !== "init" && typeof plugin[method] !== "undefined") {
- this.addMethods(method, plugin[method]);
- }
- }
- }
- else if (publicMethods.constructor === Array) {
- for (var i=0, current; (current=publicMethods[i]); i++) {
- this.addMethods(current, plugin[current]);
- }
- }
- if (typeof plugin.init === "function") {
- plugin.init();
- }
- },
-
- addHTMLArrayPrototype : function (name, method) {
- HTMLArray.prototype[name] = function () {
- var elmsToReturn = new HTMLArray();
- elmsToReturn.previousSet = this;
- var elms;
- for (var i=0, il=this.length; i<il; i++) {
- elms = method.apply(this[i], arguments);
- if (typeof elms !== "undefined" && elms !== null && elms.constructor === Array) {
- elmsToReturn = pushAll(elmsToReturn, elms);
- }
- else {
- elmsToReturn.push(elms);
- }
- }
- return elmsToReturn;
- };
- },
-
- getSequence : function (expression) {
- var start, add = 2, max = -1, modVal = -1;
- var expressionRegExp = /^((odd|even)|([1-9]\d*)|((([1-9]\d*)?)n((\+|\-)(\d+))?)|(\-(([1-9]\d*)?)n\+(\d+)))$/;
- var pseudoValue = expressionRegExp.exec(expression);
- if (!pseudoValue) {
- return null;
- }
- else {
- if (pseudoValue[2]) { // odd or even
- start = (pseudoValue[2] === "odd")? 1 : 2;
- modVal = (start === 1)? 1 : 0;
- }
- else if (pseudoValue[3]) { // single digit
- start = parseInt(pseudoValue[3], 10);
- add = 0;
- max = start;
- }
- else if (pseudoValue[4]) { // an+b
- add = pseudoValue[6]? parseInt(pseudoValue[6], 10) : 1;
- start = pseudoValue[7]? parseInt(pseudoValue[8] + pseudoValue[9], 10) : 0;
- while (start < 1) {
- start += add;
- }
- modVal = (start > add)? (start - add) % add : ((start === add)? 0 : start);
- }
- else if (pseudoValue[10]) { // -an+b
- add = pseudoValue[12]? parseInt(pseudoValue[12], 10) : 1;
- start = max = parseInt(pseudoValue[13], 10);
- while (start > add) {
- start -= add;
- }
- modVal = (max > add)? (max - add) % add : ((max === add)? 0 : max);
- }
- }
- return { start: start, add: add, max: max, modVal: modVal };
- },
-
- $ : function () {
- var elm = new HTMLArray();
- if (document.getElementById) {
- var arg = arguments[0];
- if (typeof arg === "string") {
- arg = arg.replace(/^[^#]*(#)/, "$1");
- if (/^#[\w\u00C0-\uFFFF\-\_]+$/.test(arg)) {
- var idMatch = DOMAssistant.$$(arg.substr(1), false);
- if (idMatch) {
- elm.push(idMatch);
- }
- }
- else {
- elm = DOMAssistant.cssSelection.call(document, arg);
- }
- }
- else if (typeof arg === "object") {
- elm = (arguments.length === 1)? DOMAssistant.$$(arg) : pushAll(elm, arguments);
- }
- }
- return elm;
- },
-
- $$ : function (id, addMethods) {
- var elm = (typeof id === "object")? id : document.getElementById(id);
- var applyMethods = addMethods || true;
- if (typeof id === "string" && elm && elm.id !== id) {
- elm = null;
- for (var i=0, item; (item=document.all[i]); i++) {
- if (item.id === id) {
- elm = item;
- break;
- }
- }
- }
- if (elm && applyMethods) {
- DOMAssistant.addMethodsToElm(elm);
- }
- return elm;
- },
-
- cssSelection : function (cssRule) {
- if (document.evaluate) {
- DOMAssistant.cssSelection = function (cssRule) {
- var cssRules = cssRule.replace(/\s*(,)\s*/g, "$1").split(",");
- var elm = new HTMLArray();
- var currentRule, identical, cssSelectors, xPathExpression, cssSelector, splitRule, sequence;
- var cssSelectorRegExp = /^(\w+)?(#[\w\u00C0-\uFFFF\-\_]+|(\*))?((\.[\w\u00C0-\uFFFF\-_]+)*)?((\[\w+(\^|\$|\*|\||~)?(=[\w\u00C0-\uFFFF\s\-\_\.]+)?\]+)*)?(((:\w+[\w\-]*)(\((odd|even|\-?\d*n?((\+|\-)\d+)?|[\w\u00C0-\uFFFF\-_]+|((\w*\.[\w\u00C0-\uFFFF\-_]+)*)?|(\[#?\w+(\^|\$|\*|\||~)?=?[\w\u00C0-\uFFFF\s\-\_\.]+\]+)|(:\w+[\w\-]*))\))?)*)?(>|\+|~)?/;
- var selectorSplitRegExp = new RegExp("(?:\\[[^\\[]*\\]|\\(.*\\)|[^\\s\\+>~\\[\\(])+|[\\+>~]", "g");
- function attrToXPath (match, p1, p2, p3) {
- switch (p2) {
- case "^": return "starts-with(@" + p1 + ", '" + p3 + "')";
- case "$": return "substring(@" + p1 + ", (string-length(@" + p1 + ") - " + (p3.length - 1) + "), " + p3.length + ") = '" + p3 + "'";
- case "*": return "contains(concat(' ', @" + p1 + ", ' '), '" + p3 + "')";
- case "|": return "(@" + p1 + "='" + p3 + "' or starts-with(@" + p1 + ", '" + p3 + "-'))";
- case "~": return "contains(concat(' ', @" + p1 + ", ' '), ' " + p3 + " ')";
- default: return "@" + p1 + (p3? "='" + p3 + "'" : "");
- }
- }
- function pseudoToXPath (tag, pseudoClass, pseudoValue) {
- var xpath = "";
- switch (pseudoClass) {
- case "first-child":
- xpath = "not(preceding-sibling::*)";
- break;
- case "first-of-type":
- xpath = "not(preceding-sibling::" + tag + ")";
- break;
- case "last-child":
- xpath = "not(following-sibling::*)";
- break;
- case "last-of-type":
- xpath = "not(following-sibling::" + tag + ")";
- break;
- case "only-child":
- xpath = "not(preceding-sibling::* or following-sibling::*)";
- break;
- case "only-of-type":
- xpath = "not(preceding-sibling::" + tag + " or following-sibling::" + tag + ")";
- break;
- case "nth-child":
- if (!/^n$/.test(pseudoValue)) {
- sequence = DOMAssistant.getSequence(pseudoValue);
- if (sequence) {
- if (sequence.start === sequence.max) {
- xpath = "count(preceding-sibling::*) = " + (sequence.start - 1);
- }
- else {
- xpath = "(count(preceding-sibling::*) + 1) mod " + sequence.add + " = " + sequence.modVal + ((sequence.start > 1)? " and count(preceding-sibling::*) >= " + (sequence.start - 1) : "") + ((sequence.max > 0)? " and count(preceding-sibling::*) <= " + (sequence.max - 1): "");
- }
- }
- }
- break;
- case "nth-of-type":
- if (!/^n$/.test(pseudoValue)) {
- sequence = DOMAssistant.getSequence(pseudoValue);
- if (sequence) {
- if (sequence.start === sequence.max) {
- xpath = pseudoValue;
- }
- else {
- xpath = "position() mod " + sequence.add + " = " + sequence.modVal + ((sequence.start > 1)? " and position() >= " + sequence.start : "") + ((sequence.max > 0)? " and position() <= " + sequence.max : "");
- }
- }
- }
- break;
- case "empty":
- xpath = "count(child::*) = 0 and string-length(text()) = 0";
- break;
- case "contains":
- xpath = "contains(., '" + pseudoValue + "')";
- break;
- case "enabled":
- xpath = "not(@disabled)";
- break;
- case "disabled":
- xpath = "@disabled";
- break;
- case "checked":
- xpath = "@checked='checked'"; // Doesn't work in Opera 9.24
- break;
- case "not":
- if (/^(:\w+[\w\-]*)$/.test(pseudoValue)) {
- xpath = "not(" + pseudoToXPath(tag, pseudoValue.slice(1)) + ")";
- }
- else {
- pseudoValue = pseudoValue.replace(/^\[#([\w\u00C0-\uFFFF\-\_]+)\]$/, "[id=$1]");
- var notSelector = pseudoValue.replace(/^(\w+)/, "self::$1");
- notSelector = notSelector.replace(/^\.([\w\u00C0-\uFFFF\-_]+)/g, "contains(concat(' ', @class, ' '), ' $1 ')");
- notSelector = notSelector.replace(/\[(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?\]/g, attrToXPath);
- xpath = "not(" + notSelector + ")";
- }
- break;
- default:
- xpath = "@" + pseudoClass + "='" + pseudoValue + "'";
- break;
- }
- return xpath;
- }
- for (var i=0; (currentRule=cssRules[i]); i++) {
- if (i > 0) {
- identical = false;
- for (var x=0, xl=i; x<xl; x++) {
- if (cssRules[i] === cssRules[x]) {
- identical = true;
- break;
- }
- }
- if (identical) {
- continue;
- }
- }
- cssSelectors = currentRule.match(selectorSplitRegExp);
- xPathExpression = ".";
- for (var j=0, jl=cssSelectors.length; j<jl; j++) {
- cssSelector = cssSelectorRegExp.exec(cssSelectors[j]);
- splitRule = {
- tag : (!cssSelector[1] || cssSelector[3] === "*")? "*" : cssSelector[1],
- id : (cssSelector[3] !== "*")? cssSelector[2] : null,
- allClasses : cssSelector[4],
- allAttr : cssSelector[6],
- allPseudos : cssSelector[10],
- tagRelation : cssSelector[22]
- };
- if (splitRule.tagRelation) {
- switch (splitRule.tagRelation) {
- case ">":
- xPathExpression += "/child::";
- break;
- case "+":
- xPathExpression += "/following-sibling::*[1]/self::";
- break;
- case "~":
- xPathExpression += "/following-sibling::";
- break;
- }
- }
- else {
- xPathExpression += (j > 0 && /(>|\+|~)/.test(cssSelectors[j-1]))? splitRule.tag : ("/descendant::" + splitRule.tag);
- }
- if (splitRule.id) {
- xPathExpression += "[@id = '" + splitRule.id.replace(/^#/, "") + "']";
- }
- if (splitRule.allClasses) {
- xPathExpression += splitRule.allClasses.replace(/\.([\w\u00C0-\uFFFF\-_]+)/g, "[contains(concat(' ', @class, ' '), ' $1 ')]");
- }
- if (splitRule.allAttr) {
- xPathExpression += splitRule.allAttr.replace(/(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?/g, attrToXPath);
- }
- if (splitRule.allPseudos) {
- var pseudoSplitRegExp = /:(\w[\w\-]*)(\(([^\)]+)\))?/;
- splitRule.allPseudos = splitRule.allPseudos.match(/(:\w+[\w\-]*)(\([^\)]+\))?/g);
- for (var k=0, kl=splitRule.allPseudos.length; k<kl; k++) {
- var pseudo = splitRule.allPseudos[k].match(pseudoSplitRegExp);
- var pseudoClass = pseudo[1]? pseudo[1].toLowerCase() : null;
- var pseudoValue = pseudo[3]? pseudo[3] : null;
- var xpath = pseudoToXPath(splitRule.tag, pseudoClass, pseudoValue);
- if (xpath.length) {
- xPathExpression += "[" + xpath + "]";
- }
- }
- }
- }
- var xPathNodes = document.evaluate(xPathExpression, this, null, 0, null), node;
- while ((node = xPathNodes.iterateNext())) {
- elm.push(node);
- }
- }
- return elm;
- };
- }
- else {
- DOMAssistant.cssSelection = function (cssRule) {
- var cssRules = cssRule.replace(/\s*(,)\s*/g, "$1").split(",");
- var elm = new HTMLArray();
- var prevElm = [], matchingElms = [];
- var prevParents, currentRule, identical, cssSelectors, childOrSiblingRef, nextTag, nextRegExp, regExpClassNames, matchingClassElms, regExpAttributes, matchingAttributeElms, attributeMatchRegExp, current, previous, prevParent, addElm, iteratorNext, childCount, childElm, sequence;
- var childOrSiblingRefRegExp = /^(>|\+|~)$/;
- var cssSelectorRegExp = /^(\w+)?(#[\w\u00C0-\uFFFF\-\_]+|(\*))?((\.[\w\u00C0-\uFFFF\-_]+)*)?((\[\w+(\^|\$|\*|\||~)?(=[\w\u00C0-\uFFFF\s\-\_\.]+)?\]+)*)?(((:\w+[\w\-]*)(\((odd|even|\-?\d*n?((\+|\-)\d+)?|[\w\u00C0-\uFFFF\-_]+|((\w*\.[\w\u00C0-\uFFFF\-_]+)*)?|(\[#?\w+(\^|\$|\*|\||~)?=?[\w\u00C0-\uFFFF\s\-\_\.]+\]+)|(:\w+[\w\-]*))\))?)*)?/;
- var selectorSplitRegExp;
- try {
- selectorSplitRegExp = new RegExp("(?:\\[[^\\[]*\\]|\\(.*\\)|[^\\s\\+>~\\[\\(])+|[\\+>~]", "g");
- }
- catch (e) {
- selectorSplitRegExp = /[^\s]+/g;
- }
- function clearAdded (elm) {
- elm = elm || prevElm;
- for (var n=0, nl=elm.length; n<nl; n++) {
- elm[n].added = null;
- }
- }
- function clearChildElms () {
- for (var n=0, nl=prevParents.length; n<nl; n++) {
- prevParents[n].childElms = null;
- }
- }
- function subtractArray (arr1, arr2) {
- for (var i=0, src1; (src1=arr1[i]); i++) {
- var found = false;
- for (var j=0, src2; (src2=arr2[j]); j++) {
- if (src2 === src1) {
- found = true;
- break;
- }
- }
- if (found) {
- arr1.splice(i--, 1);
- }
- }
- return arr1;
- }
- function getAttr (elm, attr) {
- if (isIE) {
- switch (attr) {
- case "id":
- return elm.id;
- case "for":
- return elm.htmlFor;
- case "class":
- return elm.className;
- }
- }
- return elm.getAttribute(attr, 2);
- }
- function attrToRegExp (attrVal, substrOperator) {
- switch (substrOperator) {
- case "^": return "^" + attrVal;
- case "$": return attrVal + "$";
- case "*": return attrVal;
- case "|": return "(^" + attrVal + "(\\-\\w+)*$)";
- case "~": return "\\b" + attrVal + "\\b";
- default: return attrVal? "^" + attrVal + "$" : null;
- }
- }
- function getElementsByTagName (tag, parent) {
- tag = tag || "*";
- parent = parent || document;
- if (parent === document || parent.lastModified) {
- if (!cachedElms[tag]) {
- cachedElms[tag] = isIE? ((tag === "*")? document.all : document.all.tags(tag)) : document.getElementsByTagName(tag);
- }
- return cachedElms[tag];
- }
- return isIE? ((tag === "*")? parent.all : parent.all.tags(tag)) : parent.getElementsByTagName(tag);
- }
- function getElementsByPseudo (previousMatch, pseudoClass, pseudoValue) {
- prevParents = [];
- var direction = (/^first/.test(pseudoClass))? "previousSibling" : "nextSibling";
- var matchingElms = [], prev, next;
- switch (pseudoClass) {
- case "first-child":
- case "last-child":
- for (var j=0; (next=previous=previousMatch[j]); j++) {
- while ((next = next[direction]) && next.nodeType !== 1) {}
- if (!next) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "only-child":
- for (var k=0, kParent; (prev=next=previous=previousMatch[k]); k++) {
- prevParent = previous.parentNode;
- if (prevParent !== kParent) {
- while ((prev = prev.previousSibling) && prev.nodeType !== 1) {}
- while ((next = next.nextSibling) && next.nodeType !== 1) {}
- if (!prev && !next) {
- matchingElms[matchingElms.length] = previous;
- }
- kParent = prevParent;
- }
- }
- break;
- case "nth-child":
- if (/^n$/.test(pseudoValue)) {
- matchingElms = previousMatch;
- }
- else {
- sequence = DOMAssistant.getSequence(pseudoValue);
- if (sequence) {
- for (var l=0; (previous=previousMatch[l]); l++) {
- prevParent = previous.parentNode;
- if (!prevParent.childElms) {
- iteratorNext = sequence.start;
- childCount = 0;
- childElm = prevParent.firstChild;
- while (childElm && (sequence.max < 0 || iteratorNext <= sequence.max)) {
- if (childElm.nodeType === 1) {
- if (++childCount === iteratorNext) {
- if (childElm.nodeName === previous.nodeName) {
- matchingElms[matchingElms.length] = childElm;
- }
- iteratorNext += sequence.add;
- }
- }
- childElm = childElm.nextSibling;
- }
- prevParent.childElms = true;
- prevParents[prevParents.length] = prevParent;
- }
- }
- clearChildElms();
- }
- }
- break;
- case "first-of-type":
- case "last-of-type":
- for (var n=0; (next=previous=previousMatch[n]); n++) {
- while ((next = next[direction]) && next.nodeName !== previous.nodeName) {}
- if (!next) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "only-of-type":
- for (var o=0, oParent; (prev=next=previous=previousMatch[o]); o++) {
- prevParent = previous.parentNode;
- if (prevParent !== oParent) {
- while ((prev = prev.previousSibling) && prev.nodeName !== previous.nodeName) {}
- while ((next = next.nextSibling) && next.nodeName !== previous.nodeName) {}
- if (!prev && !next) {
- matchingElms[matchingElms.length] = previous;
- }
- oParent = prevParent;
- }
- }
- break;
- case "nth-of-type":
- if (/^n$/.test(pseudoValue)) {
- matchingElms = previousMatch;
- }
- else {
- sequence = DOMAssistant.getSequence(pseudoValue);
- if (sequence) {
- for (var p=0; (previous=previousMatch[p]); p++) {
- prevParent = previous.parentNode;
- if (!prevParent.childElms) {
- iteratorNext = sequence.start;
- childCount = 0;
- childElm = prevParent.firstChild;
- while (childElm && (sequence.max < 0 || iteratorNext <= sequence.max)) {
- if (childElm.nodeName === previous.nodeName) {
- if (++childCount === iteratorNext) {
- matchingElms[matchingElms.length] = childElm;
- iteratorNext += sequence.add;
- }
- }
- childElm = childElm.nextSibling;
- }
- prevParent.childElms = true;
- prevParents[prevParents.length] = prevParent;
- }
- }
- clearChildElms();
- }
- }
- break;
- case "empty":
- for (var q=0; (previous=previousMatch[q]); q++) {
- if (!previous.childNodes.length) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "enabled":
- for (var r=0; (previous=previousMatch[r]); r++) {
- if (!previous.disabled) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "disabled":
- for (var s=0; (previous=previousMatch[s]); s++) {
- if (previous.disabled) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "checked":
- for (var t=0; (previous=previousMatch[t]); t++) {
- if (previous.checked) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- case "contains":
- for (var u=0; (previous=previousMatch[u]); u++) {
- if (!previous.added) {
- if (previous.innerText.indexOf(pseudoValue) !== -1) {
- previous.added = true;
- matchingElms[matchingElms.length] = previous;
- }
- }
- }
- break;
- case "not":
- if (/^(:\w+[\w\-]*)$/.test(pseudoValue)) {
- matchingElms = subtractArray(previousMatch, getElementsByPseudo(previousMatch, pseudoValue.slice(1)));
- }
- else {
- pseudoValue = pseudoValue.replace(/^\[#([\w\u00C0-\uFFFF\-\_]+)\]$/, "[id=$1]");
- var notTag = /^(\w+)/.exec(pseudoValue);
- var notClass = /^\.([\w\u00C0-\uFFFF\-_]+)/.exec(pseudoValue);
- var notAttr = /\[(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?\]/.exec(pseudoValue);
- var notRegExp = new RegExp("(^|\\s)" + (notTag? notTag[1] : notClass? notClass[1] : "") + "(\\s|$)", "i");
- if (notAttr) {
- var notAttribute = notAttr[3]? notAttr[3].replace(/\./g, "\\.") : null;
- var notMatchingAttrVal = attrToRegExp(notAttribute, notAttr[2]);
- notRegExp = new RegExp(notMatchingAttrVal, "i");
- }
- for (var v=0, notElm; (notElm=previousMatch[v]); v++) {
- addElm = null;
- if (notTag && !notRegExp.test(notElm.nodeName)) {
- addElm = notElm;
- }
- else if (notClass && !notRegExp.test(notElm.className)) {
- addElm = notElm;
- }
- else if (notAttr) {
- var att = getAttr(notElm, notAttr[1]);
- if (!att || !notRegExp.test(att)) {
- addElm = notElm;
- }
- }
- if (addElm && !addElm.added) {
- addElm.added = true;
- matchingElms[matchingElms.length] = addElm;
- }
- }
- }
- break;
- default:
- for (var w=0; (previous=previousMatch[w]); w++) {
- if (previous.getAttribute(pseudoClass, 2) === pseudoValue) {
- matchingElms[matchingElms.length] = previous;
- }
- }
- break;
- }
- return matchingElms;
- }
- for (var a=0; (currentRule=cssRules[a]); a++) {
- if (a > 0) {
- identical = false;
- for (var b=0, bl=a; b<bl; b++) {
- if (cssRules[a] === cssRules[b]) {
- identical = true;
- break;
- }
- }
- if (identical) {
- continue;
- }
- }
- cssSelectors = currentRule.match(selectorSplitRegExp);
- prevElm = [this];
- for (var i=0, rule; (rule=cssSelectors[i]); i++) {
- matchingElms = [];
- if (i > 0 && childOrSiblingRefRegExp.test(rule)) {
- childOrSiblingRef = childOrSiblingRefRegExp.exec(rule);
- if (childOrSiblingRef) {
- nextTag = /^\w+/.exec(cssSelectors[i+1]);
- if (nextTag) {
- nextTag = nextTag[0];
- nextRegExp = new RegExp("(^|\\s)" + nextTag + "(\\s|$)", "i");
- }
- for (var j=0, prevRef; (prevRef=prevElm[j]); j++) {
- switch (childOrSiblingRef[0]) {
- case ">":
- var children = getElementsByTagName(nextTag, prevRef);
- for (var k=0, child; (child=children[k]); k++) {
- if (child.parentNode === prevRef) {
- matchingElms[matchingElms.length] = child;
- }
- }
- break;
- case "+":
- while ((prevRef = prevRef.nextSibling) && prevRef.nodeType !== 1) {}
- if (prevRef) {
- if (!nextTag || nextRegExp.test(prevRef.nodeName)) {
- matchingElms[matchingElms.length] = prevRef;
- }
- }
- break;
- case "~":
- while ((prevRef = prevRef.nextSibling) && !prevRef.added) {
- if (!nextTag || nextRegExp.test(prevRef.nodeName)) {
- prevRef.added = true;
- matchingElms[matchingElms.length] = prevRef;
- }
- }
- break;
- }
- }
- prevElm = matchingElms;
- clearAdded();
- rule = cssSelectors[++i];
- if (/^\w+$/.test(rule)) {
- continue;
- }
- prevElm.skipTag = true;
- }
- }
- var cssSelector = cssSelectorRegExp.exec(rule);
- var splitRule = {
- tag : (!cssSelector[1] || cssSelector[3] === "*")? "*" : cssSelector[1],
- id : (cssSelector[3] !== "*")? cssSelector[2] : null,
- allClasses : cssSelector[4],
- allAttr : cssSelector[6],
- allPseudos : cssSelector[10]
- };
- if (splitRule.id) {
- var DOMElm = document.getElementById(splitRule.id.replace(/#/, ""));
- if (DOMElm) {
- matchingElms = [DOMElm];
- }
- prevElm = matchingElms;
- }
- else if (splitRule.tag && !prevElm.skipTag) {
- if (i===0 && !matchingElms.length && prevElm.length === 1) {
- prevElm = matchingElms = pushAll([], getElementsByTagName(splitRule.tag, prevElm[0]));
- }
- else {
- for (var l=0, ll=prevElm.length, tagCollectionMatches, tagMatch; l<ll; l++) {
- tagCollectionMatches = getElementsByTagName(splitRule.tag, prevElm[l]);
- for (var m=0; (tagMatch=tagCollectionMatches[m]); m++) {
- if (!tagMatch.added) {
- tagMatch.added = true;
- matchingElms[matchingElms.length] = tagMatch;
- }
- }
- }
- prevElm = matchingElms;
- clearAdded();
- }
- }
- if (!matchingElms.length) {
- break;
- }
- prevElm.skipTag = false;
- if (splitRule.allClasses) {
- splitRule.allClasses = splitRule.allClasses.replace(/^\./, "").split(".");
- regExpClassNames = [];
- for (var n=0, nl=splitRule.allClasses.length; n<nl; n++) {
- regExpClassNames[regExpClassNames.length] = new RegExp("(^|\\s)" + splitRule.allClasses[n] + "(\\s|$)");
- }
- matchingClassElms = [];
- for (var o=0, elmClass; (current=prevElm[o]); o++) {
- elmClass = current.className;
- if (elmClass && !current.added) {
- addElm = false;
- for (var p=0, pl=regExpClassNames.length; p<pl; p++) {
- addElm = regExpClassNames[p].test(elmClass);
- if (!addElm) {
- break;
- }
- }
- if (addElm) {
- current.added = true;
- matchingClassElms[matchingClassElms.length] = current;
- }
- }
- }
- clearAdded();
- prevElm = matchingElms = matchingClassElms;
- }
- if (splitRule.allAttr) {
- splitRule.allAttr = splitRule.allAttr.match(/\[[^\]]+\]/g);
- regExpAttributes = [];
- attributeMatchRegExp = /(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?/;
- for (var q=0, ql=splitRule.allAttr.length, attributeMatch, attributeValue, attrVal; q<ql; q++) {
- attributeMatch = attributeMatchRegExp.exec(splitRule.allAttr[q]);
- attributeValue = attributeMatch[3]? attributeMatch[3].replace(/\./g, "\\.") : null;
- attrVal = attrToRegExp(attributeValue, (attributeMatch[2] || null));
- regExpAttributes[regExpAttributes.length] = [(attrVal? new RegExp(attrVal) : null), attributeMatch[1]];
- }
- matchingAttributeElms = [];
- for (var r=0, currentAttr; (current=matchingElms[r]); r++) {
- for (var s=0, sl=regExpAttributes.length, attributeRegExp; s<sl; s++) {
- addElm = false;
- attributeRegExp = regExpAttributes[s][0];
- currentAttr = getAttr(current, regExpAttributes[s][1]);
- if (typeof currentAttr === "string" && currentAttr.length) {
- if (!attributeRegExp || typeof attributeRegExp === "undefined" || (attributeRegExp && attributeRegExp.test(currentAttr))) {
- addElm = true;
- }
- }
- if (!addElm) {
- break;
- }
- }
- if (addElm) {
- matchingAttributeElms[matchingAttributeElms.length] = current;
- }
- }
- prevElm = matchingElms = matchingAttributeElms;
- }
- if (splitRule.allPseudos) {
- var pseudoSplitRegExp = /:(\w[\w\-]*)(\(([^\)]+)\))?/;
- splitRule.allPseudos = splitRule.allPseudos.match(/(:\w+[\w\-]*)(\([^\)]+\))?/g);
- for (var t=0, tl=splitRule.allPseudos.length; t<tl; t++) {
- var pseudo = splitRule.allPseudos[t].match(pseudoSplitRegExp);
- var pseudoClass = pseudo[1]? pseudo[1].toLowerCase() : null;
- var pseudoValue = pseudo[3]? pseudo[3] : null;
- matchingElms = getElementsByPseudo(matchingElms, pseudoClass, pseudoValue);
- clearAdded(matchingElms);
- }
- prevElm = matchingElms;
- }
- }
- elm = pushAll(elm, prevElm);
- }
- return elm;
- };
- }
- if (document.querySelectorAll) {
- var cssSelectionBackup = DOMAssistant.cssSelection;
- DOMAssistant.cssSelection = function (cssRule) {
- try {
- var elm = new HTMLArray();
- return pushAll(elm, this.querySelectorAll(cssRule));
- }
- catch (e) {
- return cssSelectionBackup.call(this, cssRule);
- }
- };
- }
- return DOMAssistant.cssSelection.call(this, cssRule);
- },
-
- cssSelect : function (cssRule) {
- return DOMAssistant.cssSelection.call(this, cssRule);
- },
-
- elmsByClass : function (className, tag) {
- var cssRule = (tag || "") + "." + className;
- return DOMAssistant.cssSelection.call(this, cssRule);
- },
-
- elmsByAttribute : function (attr, attrVal, tag, substrMatchSelector) {
- var cssRule = (tag || "") + "[" + attr + ((attrVal && attrVal !== "*")? ((substrMatchSelector || "") + "=" + attrVal + "]") : "]");
- return DOMAssistant.cssSelection.call(this, cssRule);
- },
-
- elmsByTag : function (tag) {
- return DOMAssistant.cssSelection.call(this, tag);
- }
- };
+ var HTMLArray = function () {
+ // Constructor
+ };
+ var isIE = /*@cc_on!@*/false;
+ var cachedElms = [];
+ var pushAll = function (set1, set2) {
+ for (var j = 0, jL = set2.length; j < jL; j++) {
+ set1.push(set2[j]);
+ }
+ return set1;
+ };
+ if (isIE) {
+ pushAll = function (set1, set2) {
+ if (set2.slice) {
+ return set1.concat(set2);
+ }
+ for (var i = 0, iL = set2.length; i < iL; i++) {
+ set1[set1.length] = set2[i];
+ }
+ return set1;
+ };
+ }
+ return {
+ allMethods : [],
+ publicMethods : [
+ "cssSelect",
+ "elmsByClass",
+ "elmsByAttribute",
+ "elmsByTag"
+ ],
+
+ initCore : function () {
+ this.applyMethod.call(window, "$", this.$);
+ this.applyMethod.call(window, "$$", this.$$);
+ window.DOMAssistant = this;
+ if (isIE) {
+ HTMLArray = Array;
+ }
+ HTMLArray.prototype = [];
+ HTMLArray.prototype.each = function (functionCall) {
+ for (var i = 0, il = this.length; i < il; i++) {
+ functionCall.call(this[i]);
+ }
+ return this;
+ };
+ HTMLArray.prototype.first = function () {
+ return (typeof this[0] !== "undefined")
+ ? DOMAssistant.addMethodsToElm(this[0]) : null;
+ };
+ HTMLArray.prototype.end = function () {
+ return this.previousSet;
+ };
+ this.attach(this);
+ },
+
+ addMethods : function (name, method) {
+ if (typeof this.allMethods[name] === "undefined") {
+ this.allMethods[name] = method;
+ this.addHTMLArrayPrototype(name, method);
+ }
+ },
+
+ addMethodsToElm : function (elm) {
+ for (var method in this.allMethods) {
+ if (typeof this.allMethods[method] !== "undefined") {
+ this.applyMethod.call(elm, method, this.allMethods[method]);
+ }
+ }
+ return elm;
+ },
+
+ applyMethod : function (method, func) {
+ if (typeof this[method] !== "function") {
+ this[method] = func;
+ }
+ },
+
+ attach : function (plugin) {
+ var publicMethods = plugin.publicMethods;
+ if (typeof publicMethods === "undefined") {
+ for (var method in plugin) {
+ if (method !== "init" && typeof plugin[method]
+ !== "undefined") {
+ this.addMethods(method, plugin[method]);
+ }
+ }
+ } else if (publicMethods.constructor === Array) {
+ for (var i = 0, current; (current = publicMethods[i]); i++) {
+ this.addMethods(current, plugin[current]);
+ }
+ }
+ if (typeof plugin.init === "function") {
+ plugin.init();
+ }
+ },
+
+ addHTMLArrayPrototype : function (name, method) {
+ HTMLArray.prototype[name] = function () {
+ var elmsToReturn = new HTMLArray();
+ elmsToReturn.previousSet = this;
+ var elms;
+ for (var i = 0, il = this.length; i < il; i++) {
+ elms = method.apply(this[i], arguments);
+ if (typeof elms !== "undefined" && elms !== null
+ && elms.constructor === Array) {
+ elmsToReturn = pushAll(elmsToReturn, elms);
+ } else {
+ elmsToReturn.push(elms);
+ }
+ }
+ return elmsToReturn;
+ };
+ },
+
+ getSequence : function (expression) {
+ var start, add = 2, max = -1, modVal = -1;
+ var expressionRegExp = /^((odd|even)|([1-9]\d*)|((([1-9]\d*)?)n((\+|\-)(\d+))?)|(\-(([1-9]\d*)?)n\+(\d+)))$/;
+ var pseudoValue = expressionRegExp.exec(expression);
+ if (!pseudoValue) {
+ return null;
+ } else {
+ if (pseudoValue[2]) { // odd or even
+ start = (pseudoValue[2] === "odd") ? 1 : 2;
+ modVal = (start === 1) ? 1 : 0;
+ } else if (pseudoValue[3]) { // single digit
+ start = parseInt(pseudoValue[3], 10);
+ add = 0;
+ max = start;
+ } else if (pseudoValue[4]) { // an+b
+ add = pseudoValue[6] ? parseInt(pseudoValue[6], 10) : 1;
+ start = pseudoValue[7] ? parseInt(pseudoValue[8]
+ + pseudoValue[9], 10) : 0;
+ while (start < 1) {
+ start += add;
+ }
+ modVal = (start > add) ? (start - add) % add : ((start
+ === add) ? 0 : start);
+ } else if (pseudoValue[10]) { // -an+b
+ add = pseudoValue[12] ? parseInt(pseudoValue[12], 10) : 1;
+ start = max = parseInt(pseudoValue[13], 10);
+ while (start > add) {
+ start -= add;
+ }
+ modVal = (max > add) ? (max - add) % add : ((max === add)
+ ? 0 : max);
+ }
+ }
+ return { start: start, add: add, max: max, modVal: modVal };
+ },
+
+ $ : function () {
+ var elm = new HTMLArray();
+ if (document.getElementById) {
+ var arg = arguments[0];
+ if (typeof arg === "string") {
+ arg = arg.replace(/^[^#]*(#)/, "$1");
+ if (/^#[\w\u00C0-\uFFFF\-\_]+$/.test(arg)) {
+ var idMatch = DOMAssistant.$$(arg.substr(1), false);
+ if (idMatch) {
+ elm.push(idMatch);
+ }
+ } else {
+ elm = DOMAssistant.cssSelection.call(document, arg);
+ }
+ } else if (typeof arg === "object") {
+ elm = (arguments.length === 1) ? DOMAssistant.$$(arg)
+ : pushAll(elm, arguments);
+ }
+ }
+ return elm;
+ },
+
+ $$ : function (id, addMethods) {
+ var elm = (typeof id === "object") ? id
+ : document.getElementById(id);
+ var applyMethods = addMethods || true;
+ if (typeof id === "string" && elm && elm.id !== id) {
+ elm = null;
+ for (var i = 0, item; (item = document.all[i]); i++) {
+ if (item.id === id) {
+ elm = item;
+ break;
+ }
+ }
+ }
+ if (elm && applyMethods) {
+ DOMAssistant.addMethodsToElm(elm);
+ }
+ return elm;
+ },
+
+ cssSelection : function (cssRule) {
+ if (document.evaluate) {
+ DOMAssistant.cssSelection = function (cssRule) {
+ var cssRules = cssRule.replace(/\s*(,)\s*/g, "$1").split(",");
+ var elm = new HTMLArray();
+ var currentRule, identical, cssSelectors, xPathExpression, cssSelector, splitRule, sequence;
+ var cssSelectorRegExp = /^(\w+)?(#[\w\u00C0-\uFFFF\-\_]+|(\*))?((\.[\w\u00C0-\uFFFF\-_]+)*)?((\[\w+(\^|\$|\*|\||~)?(=[\w\u00C0-\uFFFF\s\-\_\.]+)?\]+)*)?(((:\w+[\w\-]*)(\((odd|even|\-?\d*n?((\+|\-)\d+)?|[\w\u00C0-\uFFFF\-_]+|((\w*\.[\w\u00C0-\uFFFF\-_]+)*)?|(\[#?\w+(\^|\$|\*|\||~)?=?[\w\u00C0-\uFFFF\s\-\_\.]+\]+)|(:\w+[\w\-]*))\))?)*)?(>|\+|~)?/;
+ var selectorSplitRegExp = new RegExp("(?:\\[[^\\[]*\\]|\\(.*\\)|[^\\s\\+>~\\[\\(])+|[\\+>~]", "g");
+
+ function attrToXPath(match, p1, p2, p3) {
+ switch (p2) {
+ case "^": return "starts-with(@" + p1 + ", '" + p3
+ + "')";
+ case "$": return "substring(@" + p1
+ + ", (string-length(@" + p1 + ") - "
+ + (p3.length - 1) + "), " + p3.length
+ + ") = '" + p3 + "'";
+ case "*": return "contains(concat(' ', @" + p1
+ + ", ' '), '" + p3 + "')";
+ case "|": return "(@" + p1 + "='" + p3
+ + "' or starts-with(@" + p1 + ", '" + p3
+ + "-'))";
+ case "~": return "contains(concat(' ', @" + p1
+ + ", ' '), ' " + p3 + " ')";
+ default: return "@" + p1 + (p3 ? "='" + p3 + "'"
+ : "");
+ }
+ }
+
+ function pseudoToXPath(tag, pseudoClass, pseudoValue) {
+ var xpath = "";
+ switch (pseudoClass) {
+ case "first-child":
+ xpath = "not(preceding-sibling::*)";
+ break;
+ case "first-of-type":
+ xpath = "not(preceding-sibling::" + tag + ")";
+ break;
+ case "last-child":
+ xpath = "not(following-sibling::*)";
+ break;
+ case "last-of-type":
+ xpath = "not(following-sibling::" + tag + ")";
+ break;
+ case "only-child":
+ xpath = "not(preceding-sibling::* or following-sibling::*)";
+ break;
+ case "only-of-type":
+ xpath = "not(preceding-sibling::" + tag
+ + " or following-sibling::" + tag + ")";
+ break;
+ case "nth-child":
+ if (!/^n$/.test(pseudoValue)) {
+ sequence
+ = DOMAssistant.getSequence(pseudoValue);
+ if (sequence) {
+ if (sequence.start === sequence.max) {
+ xpath = "count(preceding-sibling::*) = "
+ + (sequence.start - 1);
+ } else {
+ xpath = "(count(preceding-sibling::*) + 1) mod "
+ + sequence.add + " = "
+ + sequence.modVal
+ + ((sequence.start > 1)
+ ? " and count(preceding-sibling::*) >= "
+ + (sequence.start - 1) : "")
+ + ((sequence.max > 0)
+ ? " and count(preceding-sibling::*) <= "
+ + (sequence.max - 1) : "");
+ }
+ }
+ }
+ break;
+ case "nth-of-type":
+ if (!/^n$/.test(pseudoValue)) {
+ sequence
+ = DOMAssistant.getSequence(pseudoValue);
+ if (sequence) {
+ if (sequence.start === sequence.max) {
+ xpath = pseudoValue;
+ } else {
+ xpath = "position() mod "
+ + sequence.add + " = "
+ + sequence.modVal
+ + ((sequence.start > 1)
+ ? " and position() >= "
+ + sequence.start : "")
+ + ((sequence.max > 0)
+ ? " and position() <= "
+ + sequence.max : "");
+ }
+ }
+ }
+ break;
+ case "empty":
+ xpath = "count(child::*) = 0 and string-length(text()) = 0";
+ break;
+ case "contains":
+ xpath = "contains(., '" + pseudoValue + "')";
+ break;
+ case "enabled":
+ xpath = "not(@disabled)";
+ break;
+ case "disabled":
+ xpath = "@disabled";
+ break;
+ case "checked":
+ xpath = "@checked='checked'"; // Doesn't work in Opera 9.24
+ break;
+ case "not":
+ if (/^(:\w+[\w\-]*)$/.test(pseudoValue)) {
+ xpath = "not("
+ + pseudoToXPath(tag, pseudoValue.slice(1))
+ + ")";
+ } else {
+ pseudoValue
+ = pseudoValue.replace(/^\[#([\w\u00C0-\uFFFF\-\_]+)\]$/, "[id=$1]");
+ var notSelector = pseudoValue.replace(/^(\w+)/, "self::$1");
+ notSelector
+ = notSelector.replace(/^\.([\w\u00C0-\uFFFF\-_]+)/g, "contains(concat(' ', @class, ' '), ' $1 ')");
+ notSelector
+ = notSelector.replace(/\[(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?\]/g, attrToXPath);
+ xpath = "not(" + notSelector + ")";
+ }
+ break;
+ default:
+ xpath = "@" + pseudoClass + "='" + pseudoValue
+ + "'";
+ break;
+ }
+ return xpath;
+ }
+
+ for (var i = 0; (currentRule = cssRules[i]); i++) {
+ if (i > 0) {
+ identical = false;
+ for (var x = 0, xl = i; x < xl; x++) {
+ if (cssRules[i] === cssRules[x]) {
+ identical = true;
+ break;
+ }
+ }
+ if (identical) {
+ continue;
+ }
+ }
+ cssSelectors = currentRule.match(selectorSplitRegExp);
+ xPathExpression = ".";
+ for (var j = 0, jl = cssSelectors.length; j < jl; j++) {
+ cssSelector
+ = cssSelectorRegExp.exec(cssSelectors[j]);
+ splitRule = {
+ tag : (!cssSelector[1] || cssSelector[3]
+ === "*") ? "*" : cssSelector[1],
+ id : (cssSelector[3] !== "*") ? cssSelector[2]
+ : null,
+ allClasses : cssSelector[4],
+ allAttr : cssSelector[6],
+ allPseudos : cssSelector[10],
+ tagRelation : cssSelector[22]
+ };
+ if (splitRule.tagRelation) {
+ switch (splitRule.tagRelation) {
+ case ">":
+ xPathExpression += "/child::";
+ break;
+ case "+":
+ xPathExpression
+ += "/following-sibling::*[1]/self::";
+ break;
+ case "~":
+ xPathExpression
+ += "/following-sibling::";
+ break;
+ }
+ } else {
+ xPathExpression += (j > 0
+ && /(>|\+|~)/.test(cssSelectors[j - 1]))
+ ? splitRule.tag : ("/descendant::"
+ + splitRule.tag);
+ }
+ if (splitRule.id) {
+ xPathExpression += "[@id = '"
+ + splitRule.id.replace(/^#/, "") + "']";
+ }
+ if (splitRule.allClasses) {
+ xPathExpression
+ += splitRule.allClasses.replace(/\.([\w\u00C0-\uFFFF\-_]+)/g, "[contains(concat(' ', @class, ' '), ' $1 ')]");
+ }
+ if (splitRule.allAttr) {
+ xPathExpression
+ += splitRule.allAttr.replace(/(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?/g, attrToXPath);
+ }
+ if (splitRule.allPseudos) {
+ var pseudoSplitRegExp = /:(\w[\w\-]*)(\(([^\)]+)\))?/;
+ splitRule.allPseudos
+ = splitRule.allPseudos.match(/(:\w+[\w\-]*)(\([^\)]+\))?/g);
+ for (var k = 0, kl = splitRule.allPseudos.length;
+ k < kl; k++) {
+ var pseudo = splitRule.allPseudos[k].match(pseudoSplitRegExp);
+ var pseudoClass = pseudo[1]
+ ? pseudo[1].toLowerCase() : null;
+ var pseudoValue = pseudo[3] ? pseudo[3]
+ : null;
+ var xpath = pseudoToXPath(splitRule.tag, pseudoClass, pseudoValue);
+ if (xpath.length) {
+ xPathExpression += "[" + xpath + "]";
+ }
+ }
+ }
+ }
+ var xPathNodes = document.evaluate(xPathExpression, this, null, 0, null), node;
+ while ((node = xPathNodes.iterateNext())) {
+ elm.push(node);
+ }
+ }
+ return elm;
+ };
+ } else {
+ DOMAssistant.cssSelection = function (cssRule) {
+ var cssRules = cssRule.replace(/\s*(,)\s*/g, "$1").split(",");
+ var elm = new HTMLArray();
+ var prevElm = [], matchingElms = [];
+ var prevParents, currentRule, identical, cssSelectors, childOrSiblingRef, nextTag, nextRegExp, regExpClassNames, matchingClassElms, regExpAttributes, matchingAttributeElms, attributeMatchRegExp, current, previous, prevParent, addElm, iteratorNext, childCount, childElm, sequence;
+ var childOrSiblingRefRegExp = /^(>|\+|~)$/;
+ var cssSelectorRegExp = /^(\w+)?(#[\w\u00C0-\uFFFF\-\_]+|(\*))?((\.[\w\u00C0-\uFFFF\-_]+)*)?((\[\w+(\^|\$|\*|\||~)?(=[\w\u00C0-\uFFFF\s\-\_\.]+)?\]+)*)?(((:\w+[\w\-]*)(\((odd|even|\-?\d*n?((\+|\-)\d+)?|[\w\u00C0-\uFFFF\-_]+|((\w*\.[\w\u00C0-\uFFFF\-_]+)*)?|(\[#?\w+(\^|\$|\*|\||~)?=?[\w\u00C0-\uFFFF\s\-\_\.]+\]+)|(:\w+[\w\-]*))\))?)*)?/;
+ var selectorSplitRegExp;
+ try {
+ selectorSplitRegExp
+ = new RegExp("(?:\\[[^\\[]*\\]|\\(.*\\)|[^\\s\\+>~\\[\\(])+|[\\+>~]", "g");
+ } catch (e) {
+ selectorSplitRegExp = /[^\s]+/g;
+ }
+ function clearAdded(elm) {
+ elm = elm || prevElm;
+ for (var n = 0, nl = elm.length; n < nl; n++) {
+ elm[n].added = null;
+ }
+ }
+
+ function clearChildElms() {
+ for (var n = 0, nl = prevParents.length; n < nl; n++) {
+ prevParents[n].childElms = null;
+ }
+ }
+
+ function subtractArray(arr1, arr2) {
+ for (var i = 0, src1; (src1 = arr1[i]); i++) {
+ var found = false;
+ for (var j = 0, src2; (src2 = arr2[j]); j++) {
+ if (src2 === src1) {
+ found = true;
+ break;
+ }
+ }
+ if (found) {
+ arr1.splice(i--, 1);
+ }
+ }
+ return arr1;
+ }
+
+ function getAttr(elm, attr) {
+ if (isIE) {
+ switch (attr) {
+ case "id":
+ return elm.id;
+ case "for":
+ return elm.htmlFor;
+ case "class":
+ return elm.className;
+ }
+ }
+ return elm.getAttribute(attr, 2);
+ }
+
+ function attrToRegExp(attrVal, substrOperator) {
+ switch (substrOperator) {
+ case "^": return "^" + attrVal;
+ case "$": return attrVal + "$";
+ case "*": return attrVal;
+ case "|": return "(^" + attrVal + "(\\-\\w+)*$)";
+ case "~": return "\\b" + attrVal + "\\b";
+ default: return attrVal ? "^" + attrVal + "$"
+ : null;
+ }
+ }
+
+ function getElementsByTagName(tag, parent) {
+ tag = tag || "*";
+ parent = parent || document;
+ if (parent === document || parent.lastModified) {
+ if (!cachedElms[tag]) {
+ cachedElms[tag] = isIE ? ((tag === "*")
+ ? document.all : document.all.tags(tag))
+ : document.getElementsByTagName(tag);
+ }
+ return cachedElms[tag];
+ }
+ return isIE ? ((tag === "*") ? parent.all
+ : parent.all.tags(tag))
+ : parent.getElementsByTagName(tag);
+ }
+
+ function getElementsByPseudo(previousMatch, pseudoClass,
+ pseudoValue) {
+ prevParents = [];
+ var direction = (/^first/.test(pseudoClass))
+ ? "previousSibling" : "nextSibling";
+ var matchingElms = [], prev, next;
+ switch (pseudoClass) {
+ case "first-child":
+ case "last-child":
+ for (var j = 0;
+ (next = previous = previousMatch[j]);
+ j++) {
+ while ((next = next[direction])
+ && next.nodeType !== 1) {
+ }
+ if (!next) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "only-child":
+ for (var k = 0, kParent; (prev = next = previous
+ = previousMatch[k]); k++) {
+ prevParent = previous.parentNode;
+ if (prevParent !== kParent) {
+ while ((prev = prev.previousSibling)
+ && prev.nodeType !== 1) {
+ }
+ while ((next = next.nextSibling)
+ && next.nodeType !== 1) {
+ }
+ if (!prev && !next) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ kParent = prevParent;
+ }
+ }
+ break;
+ case "nth-child":
+ if (/^n$/.test(pseudoValue)) {
+ matchingElms = previousMatch;
+ } else {
+ sequence
+ = DOMAssistant.getSequence(pseudoValue);
+ if (sequence) {
+ for (var l = 0;
+ (previous = previousMatch[l]);
+ l++) {
+ prevParent = previous.parentNode;
+ if (!prevParent.childElms) {
+ iteratorNext = sequence.start;
+ childCount = 0;
+ childElm
+ = prevParent.firstChild;
+ while (childElm && (sequence.max
+ < 0 || iteratorNext
+ <= sequence.max)) {
+ if (childElm.nodeType
+ === 1) {
+ if (++childCount
+ === iteratorNext) {
+ if (childElm.nodeName
+ === previous.nodeName) {
+ matchingElms[matchingElms.length]
+ = childElm;
+ }
+ iteratorNext
+ += sequence.add;
+ }
+ }
+ childElm
+ = childElm.nextSibling;
+ }
+ prevParent.childElms = true;
+ prevParents[prevParents.length]
+ = prevParent;
+ }
+ }
+ clearChildElms();
+ }
+ }
+ break;
+ case "first-of-type":
+ case "last-of-type":
+ for (var n = 0;
+ (next = previous = previousMatch[n]);
+ n++) {
+ while ((next = next[direction])
+ && next.nodeName
+ !== previous.nodeName) {
+ }
+ if (!next) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "only-of-type":
+ for (var o = 0, oParent; (prev = next = previous
+ = previousMatch[o]); o++) {
+ prevParent = previous.parentNode;
+ if (prevParent !== oParent) {
+ while ((prev = prev.previousSibling)
+ && prev.nodeName
+ !== previous.nodeName) {
+ }
+ while ((next = next.nextSibling)
+ && next.nodeName
+ !== previous.nodeName) {
+ }
+ if (!prev && !next) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ oParent = prevParent;
+ }
+ }
+ break;
+ case "nth-of-type":
+ if (/^n$/.test(pseudoValue)) {
+ matchingElms = previousMatch;
+ } else {
+ sequence
+ = DOMAssistant.getSequence(pseudoValue);
+ if (sequence) {
+ for (var p = 0;
+ (previous = previousMatch[p]);
+ p++) {
+ prevParent = previous.parentNode;
+ if (!prevParent.childElms) {
+ iteratorNext = sequence.start;
+ childCount = 0;
+ childElm
+ = prevParent.firstChild;
+ while (childElm && (sequence.max
+ < 0 || iteratorNext
+ <= sequence.max)) {
+ if (childElm.nodeName
+ === previous.nodeName) {
+ if (++childCount
+ === iteratorNext) {
+ matchingElms[matchingElms.length]
+ = childElm;
+ iteratorNext
+ += sequence.add;
+ }
+ }
+ childElm
+ = childElm.nextSibling;
+ }
+ prevParent.childElms = true;
+ prevParents[prevParents.length]
+ = prevParent;
+ }
+ }
+ clearChildElms();
+ }
+ }
+ break;
+ case "empty":
+ for (var q = 0; (previous = previousMatch[q]);
+ q++) {
+ if (!previous.childNodes.length) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "enabled":
+ for (var r = 0; (previous = previousMatch[r]);
+ r++) {
+ if (!previous.disabled) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "disabled":
+ for (var s = 0; (previous = previousMatch[s]);
+ s++) {
+ if (previous.disabled) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "checked":
+ for (var t = 0; (previous = previousMatch[t]);
+ t++) {
+ if (previous.checked) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ case "contains":
+ for (var u = 0; (previous = previousMatch[u]);
+ u++) {
+ if (!previous.added) {
+ if (previous.innerText.indexOf(pseudoValue)
+ !== -1) {
+ previous.added = true;
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ }
+ break;
+ case "not":
+ if (/^(:\w+[\w\-]*)$/.test(pseudoValue)) {
+ matchingElms
+ = subtractArray(previousMatch, getElementsByPseudo(previousMatch, pseudoValue.slice(1)));
+ } else {
+ pseudoValue
+ = pseudoValue.replace(/^\[#([\w\u00C0-\uFFFF\-\_]+)\]$/, "[id=$1]");
+ var notTag = /^(\w+)/.exec(pseudoValue);
+ var notClass = /^\.([\w\u00C0-\uFFFF\-_]+)/.exec(pseudoValue);
+ var notAttr = /\[(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?\]/.exec(pseudoValue);
+ var notRegExp = new RegExp("(^|\\s)"
+ + (notTag ? notTag[1] : notClass
+ ? notClass[1] : "")
+ + "(\\s|$)", "i");
+ if (notAttr) {
+ var notAttribute = notAttr[3]
+ ? notAttr[3].replace(/\./g, "\\.")
+ : null;
+ var notMatchingAttrVal = attrToRegExp(notAttribute, notAttr[2]);
+ notRegExp
+ = new RegExp(notMatchingAttrVal, "i");
+ }
+ for (var v = 0, notElm;
+ (notElm = previousMatch[v]); v++) {
+ addElm = null;
+ if (notTag
+ && !notRegExp.test(notElm.nodeName)) {
+ addElm = notElm;
+ } else if (notClass
+ && !notRegExp.test(notElm.className)) {
+ addElm = notElm;
+ } else if (notAttr) {
+ var att = getAttr(notElm, notAttr[1]);
+ if (!att || !notRegExp.test(att)) {
+ addElm = notElm;
+ }
+ }
+ if (addElm && !addElm.added) {
+ addElm.added = true;
+ matchingElms[matchingElms.length]
+ = addElm;
+ }
+ }
+ }
+ break;
+ default:
+ for (var w = 0; (previous = previousMatch[w]);
+ w++) {
+ if (previous.getAttribute(pseudoClass, 2)
+ === pseudoValue) {
+ matchingElms[matchingElms.length]
+ = previous;
+ }
+ }
+ break;
+ }
+ return matchingElms;
+ }
+
+ for (var a = 0; (currentRule = cssRules[a]); a++) {
+ if (a > 0) {
+ identical = false;
+ for (var b = 0, bl = a; b < bl; b++) {
+ if (cssRules[a] === cssRules[b]) {
+ identical = true;
+ break;
+ }
+ }
+ if (identical) {
+ continue;
+ }
+ }
+ cssSelectors = currentRule.match(selectorSplitRegExp);
+ prevElm = [this];
+ for (var i = 0, rule; (rule = cssSelectors[i]); i++) {
+ matchingElms = [];
+ if (i > 0 && childOrSiblingRefRegExp.test(rule)) {
+ childOrSiblingRef
+ = childOrSiblingRefRegExp.exec(rule);
+ if (childOrSiblingRef) {
+ nextTag = /^\w+/.exec(cssSelectors[i + 1]);
+ if (nextTag) {
+ nextTag = nextTag[0];
+ nextRegExp = new RegExp("(^|\\s)"
+ + nextTag + "(\\s|$)", "i");
+ }
+ for (var j = 0, prevRef;
+ (prevRef = prevElm[j]); j++) {
+ switch (childOrSiblingRef[0]) {
+ case ">":
+ var children = getElementsByTagName(nextTag, prevRef);
+ for (var k = 0, child;
+ (child = children[k]);
+ k++) {
+ if (child.parentNode
+ === prevRef) {
+ matchingElms[matchingElms.length]
+ = child;
+ }
+ }
+ break;
+ case "+":
+ while ((prevRef
+ = prevRef.nextSibling)
+ && prevRef.nodeType
+ !== 1) {
+ }
+ if (prevRef) {
+ if (!nextTag
+ || nextRegExp.test(prevRef.nodeName)) {
+ matchingElms[matchingElms.length]
+ = prevRef;
+ }
+ }
+ break;
+ case "~":
+ while ((prevRef
+ = prevRef.nextSibling)
+ && !prevRef.added) {
+ if (!nextTag
+ || nextRegExp.test(prevRef.nodeName)) {
+ prevRef.added = true;
+ matchingElms[matchingElms.length]
+ = prevRef;
+ }
+ }
+ break;
+ }
+ }
+ prevElm = matchingElms;
+ clearAdded();
+ rule = cssSelectors[++i];
+ if (/^\w+$/.test(rule)) {
+ continue;
+ }
+ prevElm.skipTag = true;
+ }
+ }
+ var cssSelector = cssSelectorRegExp.exec(rule);
+ var splitRule = {
+ tag : (!cssSelector[1] || cssSelector[3]
+ === "*") ? "*" : cssSelector[1],
+ id : (cssSelector[3] !== "*") ? cssSelector[2]
+ : null,
+ allClasses : cssSelector[4],
+ allAttr : cssSelector[6],
+ allPseudos : cssSelector[10]
+ };
+ if (splitRule.id) {
+ var DOMElm = document.getElementById(splitRule.id.replace(/#/, ""));
+ if (DOMElm) {
+ matchingElms = [DOMElm];
+ }
+ prevElm = matchingElms;
+ } else if (splitRule.tag && !prevElm.skipTag) {
+ if (i === 0 && !matchingElms.length
+ && prevElm.length === 1) {
+ prevElm = matchingElms
+ = pushAll([], getElementsByTagName(splitRule.tag, prevElm[0]));
+ } else {
+ for (var l = 0, ll = prevElm.length, tagCollectionMatches, tagMatch;
+ l < ll; l++) {
+ tagCollectionMatches
+ = getElementsByTagName(splitRule.tag, prevElm[l]);
+ for (var m = 0; (tagMatch
+ = tagCollectionMatches[m]);
+ m++) {
+ if (!tagMatch.added) {
+ tagMatch.added = true;
+ matchingElms[matchingElms.length]
+ = tagMatch;
+ }
+ }
+ }
+ prevElm = matchingElms;
+ clearAdded();
+ }
+ }
+ if (!matchingElms.length) {
+ break;
+ }
+ prevElm.skipTag = false;
+ if (splitRule.allClasses) {
+ splitRule.allClasses
+ = splitRule.allClasses.replace(/^\./, "").split(".");
+ regExpClassNames = [];
+ for (var n = 0, nl = splitRule.allClasses.length;
+ n < nl; n++) {
+ regExpClassNames[regExpClassNames.length]
+ = new RegExp("(^|\\s)"
+ + splitRule.allClasses[n]
+ + "(\\s|$)");
+ }
+ matchingClassElms = [];
+ for (var o = 0, elmClass;
+ (current = prevElm[o]); o++) {
+ elmClass = current.className;
+ if (elmClass && !current.added) {
+ addElm = false;
+ for (var p = 0, pl = regExpClassNames.length;
+ p < pl; p++) {
+ addElm = regExpClassNames[p].test(elmClass);
+ if (!addElm) {
+ break;
+ }
+ }
+ if (addElm) {
+ current.added = true;
+ matchingClassElms[matchingClassElms.length]
+ = current;
+ }
+ }
+ }
+ clearAdded();
+ prevElm = matchingElms = matchingClassElms;
+ }
+ if (splitRule.allAttr) {
+ splitRule.allAttr
+ = splitRule.allAttr.match(/\[[^\]]+\]/g);
+ regExpAttributes = [];
+ attributeMatchRegExp
+ = /(\w+)(\^|\$|\*|\||~)?=?([\w\u00C0-\uFFFF\s\-_\.]+)?/;
+ for (var q = 0, ql = splitRule.allAttr.length, attributeMatch, attributeValue, attrVal;
+ q < ql; q++) {
+ attributeMatch
+ = attributeMatchRegExp.exec(splitRule.allAttr[q]);
+ attributeValue = attributeMatch[3]
+ ? attributeMatch[3].replace(/\./g, "\\.")
+ : null;
+ attrVal = attrToRegExp(attributeValue, (attributeMatch[2]
+ || null));
+ regExpAttributes[regExpAttributes.length]
+ = [(attrVal ? new RegExp(attrVal)
+ : null), attributeMatch[1]];
+ }
+ matchingAttributeElms = [];
+ for (var r = 0, currentAttr;
+ (current = matchingElms[r]); r++) {
+ for (var s = 0, sl = regExpAttributes.length, attributeRegExp;
+ s < sl; s++) {
+ addElm = false;
+ attributeRegExp
+ = regExpAttributes[s][0];
+ currentAttr
+ = getAttr(current, regExpAttributes[s][1]);
+ if (typeof currentAttr === "string"
+ && currentAttr.length) {
+ if (!attributeRegExp
+ || typeof attributeRegExp
+ === "undefined"
+ || (attributeRegExp
+ && attributeRegExp.test(currentAttr))) {
+ addElm = true;
+ }
+ }
+ if (!addElm) {
+ break;
+ }
+ }
+ if (addElm) {
+ matchingAttributeElms[matchingAttributeElms.length]
+ = current;
+ }
+ }
+ prevElm = matchingElms = matchingAttributeElms;
+ }
+ if (splitRule.allPseudos) {
+ var pseudoSplitRegExp = /:(\w[\w\-]*)(\(([^\)]+)\))?/;
+ splitRule.allPseudos
+ = splitRule.allPseudos.match(/(:\w+[\w\-]*)(\([^\)]+\))?/g);
+ for (var t = 0, tl = splitRule.allPseudos.length;
+ t < tl; t++) {
+ var pseudo = splitRule.allPseudos[t].match(pseudoSplitRegExp);
+ var pseudoClass = pseudo[1]
+ ? pseudo[1].toLowerCase() : null;
+ var pseudoValue = pseudo[3] ? pseudo[3]
+ : null;
+ matchingElms
+ = getElementsByPseudo(matchingElms, pseudoClass, pseudoValue);
+ clearAdded(matchingElms);
+ }
+ prevElm = matchingElms;
+ }
+ }
+ elm = pushAll(elm, prevElm);
+ }
+ return elm;
+ };
+ }
+ if (document.querySelectorAll) {
+ var cssSelectionBackup = DOMAssistant.cssSelection;
+ DOMAssistant.cssSelection = function (cssRule) {
+ try {
+ var elm = new HTMLArray();
+ return pushAll(elm, this.querySelectorAll(cssRule));
+ } catch (e) {
+ return cssSelectionBackup.call(this, cssRule);
+ }
+ };
+ }
+ return DOMAssistant.cssSelection.call(this, cssRule);
+ },
+
+ cssSelect : function (cssRule) {
+ return DOMAssistant.cssSelection.call(this, cssRule);
+ },
+
+ elmsByClass : function (className, tag) {
+ var cssRule = (tag || "") + "." + className;
+ return DOMAssistant.cssSelection.call(this, cssRule);
+ },
+
+ elmsByAttribute : function (attr, attrVal, tag, substrMatchSelector) {
+ var cssRule = (tag || "") + "[" + attr + ((attrVal && attrVal
+ !== "*") ? ((substrMatchSelector || "") + "=" + attrVal
+ + "]") : "]");
+ return DOMAssistant.cssSelection.call(this, cssRule);
+ },
+
+ elmsByTag : function (tag) {
+ return DOMAssistant.cssSelection.call(this, tag);
+ }
+ };
}();
DOMAssistant.initCore();
DOMAssistant.AJAX = function () {
- var globalXMLHttp = null;
- var readyState = 0;
- var status = -1;
- var statusText = "";
- var createAjaxObj = function (url, method, callback, addToContent) {
- var params = null;
- if (/POST/i.test(method)) {
- url = url.split("?");
- params = url[1];
- url = url[0];
- }
- return {
- url: url,
- method : method,
- callback : callback,
- params : params,
- headers : {},
- responseType : "text",
- addToContent : addToContent || false
- };
- };
- return {
- publicMethods : [
- "ajax",
- "get",
- "post",
- "load",
- "replaceWithAJAXContent"
- ],
-
- initRequest : function () {
- var XMLHttp = null;
- if (typeof XMLHttpRequest !== "undefined") {
- XMLHttp = new XMLHttpRequest();
- DOMAssistant.AJAX.initRequest = function () {
- return new XMLHttpRequest();
- };
- }
- else if (typeof window.ActiveXObject !== "undefined") {
- var XMLHttpMS = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
- for (var i=0; i<XMLHttpMS.length; i++) {
- try {
- XMLHttp = new window.ActiveXObject(XMLHttpMS[i]);
- DOMAssistant.AJAX.initRequest = function () {
- return new window.ActiveXObject(XMLHttpMS[i]);
- };
- break;
- }
- catch (e) {
- XMLHttp = null;
- }
- }
- }
- return XMLHttp;
- },
-
- ajax : function (ajaxObj) {
- if (ajaxObj.url && /\?/.test(ajaxObj.url) && ajaxObj.method && /POST/i.test(ajaxObj.method)) {
- var url = ajaxObj.url.split("?");
- ajaxObj.url = url[0];
- ajaxObj.params = url[1] + ((url[1].length > 0 && ajaxObj.params)? ("&" + ajaxObj.params) : "");
- }
- return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
- },
-
- get : function (url, callback, addToContent) {
- var ajaxObj = createAjaxObj(url, "GET", callback, addToContent);
- return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
- },
-
- post : function (url, callback) {
- var ajaxObj = createAjaxObj(url, "POST", callback);
- return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
- },
-
- load : function (url, addToContent) {
- DOMAssistant.AJAX.get.call(this, url, DOMAssistant.AJAX.replaceWithAJAXContent, addToContent);
- },
-
- makeCall : function (ajaxObj) {
- var XMLHttp = DOMAssistant.AJAX.initRequest();
- if (XMLHttp) {
- globalXMLHttp = XMLHttp;
- var ajaxCall = function (elm) {
- var url = ajaxObj.url;
- var method = ajaxObj.method || "GET";
- var callback = ajaxObj.callback;
- var params = ajaxObj.params;
- var headers = ajaxObj.headers;
- var responseType = ajaxObj.responseType || "text";
- var addToContent = ajaxObj.addToContent;
- XMLHttp.open(method, url, true);
- XMLHttp.setRequestHeader("AJAX", "true");
- XMLHttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- if (method === "POST") {
- var contentLength = params? params.length : 0;
- XMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
- XMLHttp.setRequestHeader("Content-length", contentLength);
- if (XMLHttp.overrideMimeType) {
- XMLHttp.setRequestHeader("Connection", "close");
- }
- }
- for (var i in headers){
- if (typeof i === "string") {
- XMLHttp.setRequestHeader(i, headers[i]);
- }
- }
- if (typeof callback === "function") {
- XMLHttp.onreadystatechange = function () {
- if (XMLHttp.readyState === 4) {
- var response = (/xml/i.test(responseType))? XMLHttp.responseXML : XMLHttp.responseText;
- callback.call(elm, response, addToContent);
- readyState = 4;
- status = XMLHttp.status;
- statusText = XMLHttp.statusText;
- globalXMLHttp = null;
- XMLHttp = null;
- }
- };
- }
- XMLHttp.send(params);
- }(this);
- }
- return this;
- },
-
- replaceWithAJAXContent : function (content, add) {
- if (add) {
- this.innerHTML += content;
- }
- else {
- var elms = this.elmsByTag("*");
- for (var i=0, elm, attr; (elm=elms[i]); i++) {
- attr = elm.attributes;
- if (attr) {
- for (var j=0, jl=attr.length; j<jl; j++) {
- if (typeof elm[attr[j].name] === "function") {
- elm[attr[j].name] = null;
- }
- }
- }
- }
- this.innerHTML = content;
- }
- },
-
- getReadyState : function () {
- return (globalXMLHttp && typeof globalXMLHttp.readyState !== "undefined")? globalXMLHttp.readyState : readyState;
- },
-
- getStatus : function () {
- return status;
- },
-
- getStatusText : function () {
- return statusText;
- }
- };
+ var globalXMLHttp = null;
+ var readyState = 0;
+ var status = -1;
+ var statusText = "";
+ var createAjaxObj = function (url, method, callback, addToContent) {
+ var params = null;
+ if (/POST/i.test(method)) {
+ url = url.split("?");
+ params = url[1];
+ url = url[0];
+ }
+ return {
+ url: url,
+ method : method,
+ callback : callback,
+ params : params,
+ headers : {},
+ responseType : "text",
+ addToContent : addToContent || false
+ };
+ };
+ return {
+ publicMethods : [
+ "ajax",
+ "get",
+ "post",
+ "load",
+ "replaceWithAJAXContent"
+ ],
+
+ initRequest : function () {
+ var XMLHttp = null;
+ if (typeof XMLHttpRequest !== "undefined") {
+ XMLHttp = new XMLHttpRequest();
+ DOMAssistant.AJAX.initRequest = function () {
+ return new XMLHttpRequest();
+ };
+ } else if (typeof window.ActiveXObject !== "undefined") {
+ var XMLHttpMS = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
+ for (var i = 0; i < XMLHttpMS.length; i++) {
+ try {
+ XMLHttp = new window.ActiveXObject(XMLHttpMS[i]);
+ DOMAssistant.AJAX.initRequest = function () {
+ return new window.ActiveXObject(XMLHttpMS[i]);
+ };
+ break;
+ } catch (e) {
+ XMLHttp = null;
+ }
+ }
+ }
+ return XMLHttp;
+ },
+
+ ajax : function (ajaxObj) {
+ if (ajaxObj.url && /\?/.test(ajaxObj.url) && ajaxObj.method
+ && /POST/i.test(ajaxObj.method)) {
+ var url = ajaxObj.url.split("?");
+ ajaxObj.url = url[0];
+ ajaxObj.params = url[1] + ((url[1].length > 0 && ajaxObj.params)
+ ? ("&" + ajaxObj.params) : "");
+ }
+ return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
+ },
+
+ get : function (url, callback, addToContent) {
+ var ajaxObj = createAjaxObj(url, "GET", callback, addToContent);
+ return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
+ },
+
+ post : function (url, callback) {
+ var ajaxObj = createAjaxObj(url, "POST", callback);
+ return DOMAssistant.AJAX.makeCall.call(this, ajaxObj);
+ },
+
+ load : function (url, addToContent) {
+ DOMAssistant.AJAX.get.call(this, url, DOMAssistant.AJAX.replaceWithAJAXContent, addToContent);
+ },
+
+ makeCall : function (ajaxObj) {
+ var XMLHttp = DOMAssistant.AJAX.initRequest();
+ if (XMLHttp) {
+ globalXMLHttp = XMLHttp;
+ var ajaxCall = function (elm) {
+ var url = ajaxObj.url;
+ var method = ajaxObj.method || "GET";
+ var callback = ajaxObj.callback;
+ var params = ajaxObj.params;
+ var headers = ajaxObj.headers;
+ var responseType = ajaxObj.responseType || "text";
+ var addToContent = ajaxObj.addToContent;
+ XMLHttp.open(method, url, true);
+ XMLHttp.setRequestHeader("AJAX", "true");
+ XMLHttp.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ if (method === "POST") {
+ var contentLength = params ? params.length : 0;
+ XMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ XMLHttp.setRequestHeader("Content-length", contentLength);
+ if (XMLHttp.overrideMimeType) {
+ XMLHttp.setRequestHeader("Connection", "close");
+ }
+ }
+ for (var i in headers) {
+ if (typeof i === "string") {
+ XMLHttp.setRequestHeader(i, headers[i]);
+ }
+ }
+ if (typeof callback === "function") {
+ XMLHttp.onreadystatechange = function () {
+ if (XMLHttp.readyState === 4) {
+ var response = (/xml/i.test(responseType))
+ ? XMLHttp.responseXML
+ : XMLHttp.responseText;
+ callback.call(elm, response, addToContent);
+ readyState = 4;
+ status = XMLHttp.status;
+ statusText = XMLHttp.statusText;
+ globalXMLHttp = null;
+ XMLHttp = null;
+ }
+ };
+ }
+ XMLHttp.send(params);
+ }(this);
+ }
+ return this;
+ },
+
+ replaceWithAJAXContent : function (content, add) {
+ if (add) {
+ this.innerHTML += content;
+ } else {
+ var elms = this.elmsByTag("*");
+ for (var i = 0, elm, attr; (elm = elms[i]); i++) {
+ attr = elm.attributes;
+ if (attr) {
+ for (var j = 0, jl = attr.length; j < jl; j++) {
+ if (typeof elm[attr[j].name] === "function") {
+ elm[attr[j].name] = null;
+ }
+ }
+ }
+ }
+ this.innerHTML = content;
+ }
+ },
+
+ getReadyState : function () {
+ return (globalXMLHttp && typeof globalXMLHttp.readyState
+ !== "undefined") ? globalXMLHttp.readyState : readyState;
+ },
+
+ getStatus : function () {
+ return status;
+ },
+
+ getStatusText : function () {
+ return statusText;
+ }
+ };
}();
DOMAssistant.attach(DOMAssistant.AJAX);
DOMAssistant.CSS = function () {
- return {
- addClass : function (className) {
- var currentClass = this.className;
- if (!new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(currentClass)) {
- this.className = currentClass + (currentClass.length? " " : "") + className;
- }
- return this;
- },
+ return {
+ addClass : function (className) {
+ var currentClass = this.className;
+ if (!new RegExp(("(^|\\s)" + className
+ + "(\\s|$)"), "i").test(currentClass)) {
+ this.className = currentClass + (currentClass.length ? " " : "")
+ + className;
+ }
+ return this;
+ },
+
+ removeClass : function (className) {
+ var classToRemove = new RegExp(("(^|\\s)" + className
+ + "(\\s|$)"), "i");
+ this.className = this.className.replace(classToRemove, function (
+ match) {
+ var retVal = "";
+ if (new RegExp("^\\s+.*\\s+$").test(match)) {
+ retVal = match.replace(/(\s+).+/, "$1");
+ }
+ return retVal;
+ }).replace(/^\s+|\s+$/g, "");
+ return this;
+ },
- removeClass : function (className) {
- var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
- this.className = this.className.replace(classToRemove, function (match) {
- var retVal = "";
- if (new RegExp("^\\s+.*\\s+$").test(match)) {
- retVal = match.replace(/(\s+).+/, "$1");
- }
- return retVal;
- }).replace(/^\s+|\s+$/g, "");
- return this;
- },
-
- replaceClass : function (className, newClass) {
- var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i");
- this.className = this.className.replace(classToRemove, function (match, p1, p2) {
- var retVal = p1 + newClass + p2;
- if (new RegExp("^\\s+.*\\s+$").test(match)) {
- retVal = match.replace(/(\s+).+/, "$1");
- }
- return retVal;
- }).replace(/^\s+|\s+$/g, "");
- return this;
- },
+ replaceClass : function (className, newClass) {
+ var classToRemove = new RegExp(("(^|\\s)" + className
+ + "(\\s|$)"), "i");
+ this.className = this.className.replace(classToRemove, function (
+ match, p1, p2) {
+ var retVal = p1 + newClass + p2;
+ if (new RegExp("^\\s+.*\\s+$").test(match)) {
+ retVal = match.replace(/(\s+).+/, "$1");
+ }
+ return retVal;
+ }).replace(/^\s+|\s+$/g, "");
+ return this;
+ },
- hasClass : function (className) {
- return new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i").test(this.className);
- },
-
- setStyle : function (style, value) {
- if (typeof this.style.cssText !== "undefined") {
- var styleToSet = this.style.cssText;
- if (typeof style === "object") {
- for (var i in style) {
- if (typeof i === "string") {
- styleToSet += ";" + i + ":" + style[i];
- }
- }
- }
- else {
- styleToSet += ";" + style + ":" + value;
- }
- this.style.cssText = styleToSet;
- }
- return this;
- },
+ hasClass : function (className) {
+ return new RegExp(("(^|\\s)" + className
+ + "(\\s|$)"), "i").test(this.className);
+ },
- getStyle : function (cssRule) {
- var cssVal = "";
- if (document.defaultView && document.defaultView.getComputedStyle) {
- cssVal = document.defaultView.getComputedStyle(this, "").getPropertyValue(cssRule);
- }
- else if (this.currentStyle) {
- cssVal = cssRule.replace(/\-(\w)/g, function (match, p1) {
- return p1.toUpperCase();
- });
- cssVal = this.currentStyle[cssVal];
- }
- return cssVal;
- }
- };
+ setStyle : function (style, value) {
+ if (typeof this.style.cssText !== "undefined") {
+ var styleToSet = this.style.cssText;
+ if (typeof style === "object") {
+ for (var i in style) {
+ if (typeof i === "string") {
+ styleToSet += ";" + i + ":" + style[i];
+ }
+ }
+ } else {
+ styleToSet += ";" + style + ":" + value;
+ }
+ this.style.cssText = styleToSet;
+ }
+ return this;
+ },
+
+ getStyle : function (cssRule) {
+ var cssVal = "";
+ if (document.defaultView && document.defaultView.getComputedStyle) {
+ cssVal = document.defaultView.getComputedStyle(this, "").getPropertyValue(cssRule);
+ } else if (this.currentStyle) {
+ cssVal = cssRule.replace(/\-(\w)/g, function (match, p1) {
+ return p1.toUpperCase();
+ });
+ cssVal = this.currentStyle[cssVal];
+ }
+ return cssVal;
+ }
+ };
}();
DOMAssistant.attach(DOMAssistant.CSS);
DOMAssistant.Content = function () {
- return {
- prev : function () {
- var prevSib = this;
- while ((prevSib = prevSib.previousSibling) && prevSib.nodeType !== 1) {}
- return DOMAssistant.$(prevSib);
- },
+ return {
+ prev : function () {
+ var prevSib = this;
+ while ((prevSib = prevSib.previousSibling) && prevSib.nodeType
+ !== 1) {
+ }
+ return DOMAssistant.$(prevSib);
+ },
- next : function () {
- var nextSib = this;
- while ((nextSib = nextSib.nextSibling) && nextSib.nodeType !== 1) {}
- return DOMAssistant.$(nextSib);
- },
+ next : function () {
+ var nextSib = this;
+ while ((nextSib = nextSib.nextSibling) && nextSib.nodeType !== 1) {
+ }
+ return DOMAssistant.$(nextSib);
+ },
- create : function (name, attr, append, content) {
- var elm = DOMAssistant.$(document.createElement(name));
- if (attr) {
- elm.setAttributes(attr);
- }
- if (typeof content !== "undefined") {
- elm.addContent(content);
- }
- if (append) {
- DOMAssistant.Content.addContent.call(this, elm);
- }
- return elm;
- },
+ create : function (name, attr, append, content) {
+ var elm = DOMAssistant.$(document.createElement(name));
+ if (attr) {
+ elm.setAttributes(attr);
+ }
+ if (typeof content !== "undefined") {
+ elm.addContent(content);
+ }
+ if (append) {
+ DOMAssistant.Content.addContent.call(this, elm);
+ }
+ return elm;
+ },
- setAttributes : function (attr) {
- for (var i in attr) {
- if (/class/i.test(i)) {
- this.className = attr[i];
- }
- else {
- this.setAttribute(i, attr[i]);
- }
- }
- return this;
- },
+ setAttributes : function (attr) {
+ for (var i in attr) {
+ if (/class/i.test(i)) {
+ this.className = attr[i];
+ } else {
+ this.setAttribute(i, attr[i]);
+ }
+ }
+ return this;
+ },
- addContent : function (content) {
- if (typeof content === "string") {
- this.innerHTML += content;
- }
- else if (typeof content === "object" && content) {
- this.appendChild(content);
- }
- return this;
- },
+ addContent : function (content) {
+ if (typeof content === "string") {
+ this.innerHTML += content;
+ } else if (typeof content === "object" && content) {
+ this.appendChild(content);
+ }
+ return this;
+ },
- replaceContent : function (newContent) {
- for (var i=(this.childNodes.length - 1), child, attr; i>=0; i--) {
- child = this.childNodes[i];
- attr = child.attributes;
- if (attr) {
- for (var j=0, jl=attr.length; j<jl; j++) {
- if (typeof child[attr[j].name] === "function") {
- child[attr[j].name] = null;
- }
- }
- }
- child.parentNode.removeChild(child);
- }
- DOMAssistant.$(this).addContent(newContent);
- return this;
- },
+ replaceContent : function (newContent) {
+ for (var i = (this.childNodes.length - 1), child, attr; i >= 0;
+ i--) {
+ child = this.childNodes[i];
+ attr = child.attributes;
+ if (attr) {
+ for (var j = 0, jl = attr.length; j < jl; j++) {
+ if (typeof child[attr[j].name] === "function") {
+ child[attr[j].name] = null;
+ }
+ }
+ }
+ child.parentNode.removeChild(child);
+ }
+ DOMAssistant.$(this).addContent(newContent);
+ return this;
+ },
- remove : function () {
- this.parentNode.removeChild(this);
- return null;
- }
- };
+ remove : function () {
+ this.parentNode.removeChild(this);
+ return null;
+ }
+ };
}();
DOMAssistant.attach(DOMAssistant.Content);
DOMAssistant.Events = function () {
- var uniqueHandlerId = 1;
- return {
- publicMethods : [
- "addEvent",
- "removeEvent",
- "preventDefault",
- "cancelBubble"
- ],
-
- init : function () {
- window.addEvent = this.addEvent;
- window.removeEvent = this.removeEvent;
- DOMAssistant.preventDefault = this.preventDefault;
- DOMAssistant.cancelBubble = this.cancelBubble;
- },
+ var uniqueHandlerId = 1;
+ return {
+ publicMethods : [
+ "addEvent",
+ "removeEvent",
+ "preventDefault",
+ "cancelBubble"
+ ],
+
+ init : function () {
+ window.addEvent = this.addEvent;
+ window.removeEvent = this.removeEvent;
+ DOMAssistant.preventDefault = this.preventDefault;
+ DOMAssistant.cancelBubble = this.cancelBubble;
+ },
- addEvent : function (evt, func) {
- var XULEvent = (/^DOM/.test(evt));
- if (XULEvent) {
- if (this.addEventListener) {
- this.addEventListener(evt, func, false);
- }
- }
- else {
- if (!this.uniqueHandlerId) {
- this.uniqueHandlerId = uniqueHandlerId++;
- }
- var alreadyExists = false;
- if (func.attachedElements && func.attachedElements[evt + this.uniqueHandlerId]) {
- alreadyExists = true;
- }
- if (!alreadyExists) {
- if (!this.events) {
- this.events = {};
- }
- if (!this.events[evt]) {
- this.events[evt] = [];
- var existingEvent = this["on" + evt];
- if (existingEvent) {
- this.events[evt].push(existingEvent);
- }
- }
- this.events[evt].push(func);
- this["on" + evt] = DOMAssistant.Events.handleEvent;
- if (typeof this.window === "object") {
- this.window["on" + evt] = DOMAssistant.Events.handleEvent;
- }
- if (!func.attachedElements) {
- func.attachedElements = {};
- }
- func.attachedElements[evt + this.uniqueHandlerId] = true;
- }
- }
- return this;
- },
+ addEvent : function (evt, func) {
+ var XULEvent = (/^DOM/.test(evt));
+ if (XULEvent) {
+ if (this.addEventListener) {
+ this.addEventListener(evt, func, false);
+ }
+ } else {
+ if (!this.uniqueHandlerId) {
+ this.uniqueHandlerId = uniqueHandlerId++;
+ }
+ var alreadyExists = false;
+ if (func.attachedElements && func.attachedElements[evt
+ + this.uniqueHandlerId]) {
+ alreadyExists = true;
+ }
+ if (!alreadyExists) {
+ if (!this.events) {
+ this.events = {};
+ }
+ if (!this.events[evt]) {
+ this.events[evt] = [];
+ var existingEvent = this["on" + evt];
+ if (existingEvent) {
+ this.events[evt].push(existingEvent);
+ }
+ }
+ this.events[evt].push(func);
+ this["on" + evt] = DOMAssistant.Events.handleEvent;
+ if (typeof this.window === "object") {
+ this.window["on" + evt]
+ = DOMAssistant.Events.handleEvent;
+ }
+ if (!func.attachedElements) {
+ func.attachedElements = {};
+ }
+ func.attachedElements[evt + this.uniqueHandlerId] = true;
+ }
+ }
+ return this;
+ },
- handleEvent : function (evt) {
- var currentEvt = evt || event;
- var currentTarget = currentEvt.target || currentEvt.srcElement || document;
- while (currentTarget.nodeType !== 1 && currentTarget.parentNode) {
- currentTarget = currentTarget.parentNode;
- }
- currentEvt.eventTarget = currentTarget;
- var eventType = currentEvt.type;
- var eventColl = this.events[eventType];
- var eventCollLength = eventColl.length;
- var eventReturn;
- for (var i=0; i<eventCollLength; i++) {
- eventReturn = eventColl[i].call(this, currentEvt);
- if (i === (eventCollLength - 1)) {
- return eventReturn;
- }
- }
- },
+ handleEvent : function (evt) {
+ var currentEvt = evt || event;
+ var currentTarget = currentEvt.target || currentEvt.srcElement
+ || document;
+ while (currentTarget.nodeType !== 1 && currentTarget.parentNode) {
+ currentTarget = currentTarget.parentNode;
+ }
+ currentEvt.eventTarget = currentTarget;
+ var eventType = currentEvt.type;
+ var eventColl = this.events[eventType];
+ var eventCollLength = eventColl.length;
+ var eventReturn;
+ for (var i = 0; i < eventCollLength; i++) {
+ eventReturn = eventColl[i].call(this, currentEvt);
+ if (i === (eventCollLength - 1)) {
+ return eventReturn;
+ }
+ }
+ },
- removeEvent : function (evt, func) {
- if (this.events) {
- var eventColl = this.events[evt];
- for (var i=0; i<eventColl.length; i++) {
- if (eventColl[i] === func) {
- delete eventColl[i];
- eventColl.splice(i, 1);
- }
- }
- func.attachedElements[evt + this.uniqueHandlerId] = null;
- }
- return this;
- },
+ removeEvent : function (evt, func) {
+ if (this.events) {
+ var eventColl = this.events[evt];
+ for (var i = 0; i < eventColl.length; i++) {
+ if (eventColl[i] === func) {
+ delete eventColl[i];
+ eventColl.splice(i, 1);
+ }
+ }
+ func.attachedElements[evt + this.uniqueHandlerId] = null;
+ }
+ return this;
+ },
- preventDefault : function (evt) {
- if (evt && evt.preventDefault) {
- DOMAssistant.Events.preventDefault = function (evt) {
- evt.preventDefault();
- };
- }
- else {
- DOMAssistant.Events.preventDefault = function (evt) {
- event.returnValue = false;
- };
- }
- return DOMAssistant.Events.preventDefault(evt);
- },
+ preventDefault : function (evt) {
+ if (evt && evt.preventDefault) {
+ DOMAssistant.Events.preventDefault = function (evt) {
+ evt.preventDefault();
+ };
+ } else {
+ DOMAssistant.Events.preventDefault = function (evt) {
+ event.returnValue = false;
+ };
+ }
+ return DOMAssistant.Events.preventDefault(evt);
+ },
- cancelBubble : function (evt) {
- if (evt && evt.stopPropagation) {
- DOMAssistant.Events.cancelBubble = function (evt) {
- evt.stopPropagation();
- };
- }
- else {
- DOMAssistant.Events.cancelBubble = function (evt) {
- event.cancelBubble = true;
- };
- }
- return DOMAssistant.Events.cancelBubble(evt);
- }
- };
+ cancelBubble : function (evt) {
+ if (evt && evt.stopPropagation) {
+ DOMAssistant.Events.cancelBubble = function (evt) {
+ evt.stopPropagation();
+ };
+ } else {
+ DOMAssistant.Events.cancelBubble = function (evt) {
+ event.cancelBubble = true;
+ };
+ }
+ return DOMAssistant.Events.cancelBubble(evt);
+ }
+ };
}();
DOMAssistant.attach(DOMAssistant.Events);
DOMAssistant.DOMLoad = function () {
- var DOMLoaded = false;
- var DOMLoadTimer = null;
- var functionsToCall = [];
- var addedStrings = {};
- var errorHandling = null;
- var execFunctions = function () {
- for (var i=0, il=functionsToCall.length; i<il; i++) {
- try {
- functionsToCall[i]();
- }
- catch (e) {
- if (errorHandling && typeof errorHandling === "function") {
- errorHandling(e);
- }
- }
- }
- functionsToCall = [];
- };
- var DOMHasLoaded = function () {
- if (DOMLoaded) {
- return;
- }
- DOMLoaded = true;
- execFunctions();
- };
- /* Internet Explorer */
- /*@cc_on
- @if (@_win32 || @_win64)
- if (document.getElementById) {
- document.write("<script id=\"ieScriptLoad\" defer src=\"//:\"><\/script>");
- document.getElementById("ieScriptLoad").onreadystatechange = function() {
- if (this.readyState === "complete") {
- DOMHasLoaded();
- }
- };
- }
- @end @*/
- /* Mozilla/Opera 9 */
- if (document.addEventListener) {
- document.addEventListener("DOMContentLoaded", DOMHasLoaded, false);
- }
- /* Safari, iCab, Konqueror */
- if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {
- DOMLoadTimer = setInterval(function () {
- if (/loaded|complete/i.test(document.readyState)) {
- DOMHasLoaded();
- clearInterval(DOMLoadTimer);
- }
- }, 10);
- }
- /* Other web browsers */
- window.onload = DOMHasLoaded;
-
- return {
- DOMReady : function () {
- for (var i=0, il=arguments.length, funcRef; i<il; i++) {
- funcRef = arguments[i];
- if (!funcRef.DOMReady && !addedStrings[funcRef]) {
- if (typeof funcRef === "string") {
- addedStrings[funcRef] = true;
- funcRef = new Function(funcRef);
- }
- funcRef.DOMReady = true;
- functionsToCall.push(funcRef);
- }
- }
- if (DOMLoaded) {
- execFunctions();
- }
- },
-
- setErrorHandling : function (funcRef) {
- errorHandling = funcRef;
- }
- };
+ var DOMLoaded = false;
+ var DOMLoadTimer = null;
+ var functionsToCall = [];
+ var addedStrings = {};
+ var errorHandling = null;
+ var execFunctions = function () {
+ for (var i = 0, il = functionsToCall.length; i < il; i++) {
+ try {
+ functionsToCall[i]();
+ } catch (e) {
+ if (errorHandling && typeof errorHandling === "function") {
+ errorHandling(e);
+ }
+ }
+ }
+ functionsToCall = [];
+ };
+ var DOMHasLoaded = function () {
+ if (DOMLoaded) {
+ return;
+ }
+ DOMLoaded = true;
+ execFunctions();
+ };
+ /* Internet Explorer */
+ /*@cc_on
+ @if (@_win32 || @_win64)
+ if (document.getElementById) {
+ document.write("<script id=\"ieScriptLoad\" defer src=\"//:\"><\/script>");
+ document.getElementById("ieScriptLoad").onreadystatechange = function() {
+ if (this.readyState === "complete") {
+ DOMHasLoaded();
+ }
+ };
+ }
+ @end @*/
+ /* Mozilla/Opera 9 */
+ if (document.addEventListener) {
+ document.addEventListener("DOMContentLoaded", DOMHasLoaded, false);
+ }
+ /* Safari, iCab, Konqueror */
+ if (/KHTML|WebKit|iCab/i.test(navigator.userAgent)) {
+ DOMLoadTimer = setInterval(function () {
+ if (/loaded|complete/i.test(document.readyState)) {
+ DOMHasLoaded();
+ clearInterval(DOMLoadTimer);
+ }
+ }, 10);
+ }
+ /* Other web browsers */
+ window.onload = DOMHasLoaded;
+
+ return {
+ DOMReady : function () {
+ for (var i = 0, il = arguments.length, funcRef; i < il; i++) {
+ funcRef = arguments[i];
+ if (!funcRef.DOMReady && !addedStrings[funcRef]) {
+ if (typeof funcRef === "string") {
+ addedStrings[funcRef] = true;
+ funcRef = new Function(funcRef);
+ }
+ funcRef.DOMReady = true;
+ functionsToCall.push(funcRef);
+ }
+ }
+ if (DOMLoaded) {
+ execFunctions();
+ }
+ },
+
+ setErrorHandling : function (funcRef) {
+ errorHandling = funcRef;
+ }
+ };
}();
DOMAssistant.DOMReady = DOMAssistant.DOMLoad.DOMReady; \ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQueryBench.html b/samples/src/main/java/gwtquery/samples/public/GwtQueryBench.html
index 623053b1..caaac70b 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQueryBench.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQueryBench.html
@@ -15,15 +15,14 @@
<!--</script>-->
<style>
* {
- font-family: "Lucida Grande",Helvetica,Arial,sans-serif;
- color: white;
+ font-family: "Lucida Grande", Helvetica, Arial, sans-serif;
+ color: white;
}
body {
background-color: black;
}
-
.win {
background-color: green;
color: white
@@ -44,22 +43,29 @@
color: white
}
-
- </style>
+
+ </style>
</head>
<body>
-<h2 style="width: 790px; color: white; border-bottom: 1px solid gray">GWTSpeed - GWT Query
- benchmarks<div id="startrace" style="float: right; color: red">Start Race</div></h2>
-<iframe id="racetrack" src="racetrack.html" width="800" height="310" frameborder="0" marginheight="0" marginwidth="0"></iframe>
+<h2 style="width: 790px; color: white; border-bottom: 1px solid gray">GWTSpeed -
+ GWT Query
+ benchmarks
+ <div id="startrace" style="float: right; color: red">Start Race</div>
+</h2>
+<iframe id="racetrack" src="racetrack.html" width="800" height="310"
+ frameborder="0" marginheight="0" marginwidth="0"></iframe>
<iframe id="jquerybench" src="jquerybench.html" style="display: none"></iframe>
<iframe id="dojobench" src="dojobench.html" style="display: none"></iframe>
-<iframe id="prototypebench" src="prototypebench.html" style="display: none"></iframe>
+<iframe id="prototypebench" src="prototypebench.html"
+ style="display: none"></iframe>
<!-- hack, we don't use DIV because we don't want to effect the result of the selectors -->
-<blockquote style="display: block; height: 200px; width:790px; overflow-y:scroll; overflow-x: hidden; margin: 0">
-<table id="resultstable" border="1" style="width: 100%; border-collapse: collapse">
+<blockquote
+ style="display: block; height: 200px; width:790px; overflow-y:scroll; overflow-x: hidden; margin: 0">
+ <table id="resultstable" border="1"
+ style="width: 100%; border-collapse: collapse">
-</table>
+ </table>
</blockquote>
<div style="display: none">
<div style="display: none" class="head">
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQueryDemo.html b/samples/src/main/java/gwtquery/samples/public/GwtQueryDemo.html
index ee4f6f04..6e049cf4 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQueryDemo.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQueryDemo.html
@@ -1,36 +1,50 @@
<html>
<head>
- <title>GQuery Demo</title>
- <script language="javascript" src="gwtquery.samples.GwtQueryDemo.nocache.js"></script>
- <style type="text/css">
- .slide { border: 1px solid black; width: 800px; height: 600px; display: none}
- .slide {
- background: -webkit-gradient(linear, left top, left bottom, from(#000000), to(#808080), color-stop(0.9, #808080));
- -webkit-background-origin: padding-box; -webkit-background-clip: content-box;
- }
- .slide, .slide * { color: white; font-size: 150%; }
- </style>
+ <title>GQuery Demo</title>
+ <script language="javascript"
+ src="gwtquery.samples.GwtQueryDemo.nocache.js"></script>
+ <style type="text/css">
+ .slide {
+ border: 1px solid black;
+ width: 800px;
+ height: 600px;
+ display: none
+ }
+
+ .slide {
+ background: -webkit-gradient(linear, left top, left bottom, from(#000000), to(#808080), color-stop(0.9, #808080));
+ -webkit-background-origin: padding-box;
+ -webkit-background-clip: content-box;
+ }
+
+ .slide, .slide * {
+ color: white;
+ font-size: 150%;
+ }
+ </style>
</head>
<body>
<p>
- Short example of how to do progressively enhance DIV, UL, LI elements into powerpoint-like slides
+ Short example of how to do progressively enhance DIV, UL, LI elements into
+ powerpoint-like slides
</p>
+
<div class="slide transition-appear">
- Slide 1
- <ul class="transition-appear">
- <li>jQuery is</li>
- <li>such a</li>
- <li>Cool Library</li>
- </ul>
+ Slide 1
+ <ul class="transition-appear">
+ <li>jQuery is</li>
+ <li>such a</li>
+ <li>Cool Library</li>
+ </ul>
</div>
<div class="slide transition-appear">
- Slide 2
- <ul class="transition-appear">
- <li>Now GWT</li>
- <li>has a</li>
- <li>jQuery-like API Too!</li>
- <li>GwtQuery Rocks!</li>
- </ul>
+ Slide 2
+ <ul class="transition-appear">
+ <li>Now GWT</li>
+ <li>has a</li>
+ <li>jQuery-like API Too!</li>
+ <li>GwtQuery Rocks!</li>
+ </ul>
</div>
</body>
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQueryEffects.html b/samples/src/main/java/gwtquery/samples/public/GwtQueryEffects.html
index 2c53396a..8cf52b25 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQueryEffects.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQueryEffects.html
@@ -1,13 +1,14 @@
<html>
<head>
- <title>GQuery Demo</title>
- <script language="javascript" src="gwtquery.samples.GwtQueryEffects.nocache.js"></script>
+ <title>GQuery Demo</title>
+ <script language="javascript"
+ src="gwtquery.samples.GwtQueryEffects.nocache.js"></script>
<link href='gquery-star-ratings.css' type="text/css" rel="stylesheet"/>
-
+
</head>
<body>
<div class="outer">
-<div>Foo <span class="note">bar</span> baz</div>
+ <div>Foo <span class="note">bar</span> baz</div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
@@ -16,8 +17,8 @@
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
</div>
-
-
+
+
</body>
</html>
\ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQueryPlugin.html b/samples/src/main/java/gwtquery/samples/public/GwtQueryPlugin.html
index a9585147..bd9cd2fc 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQueryPlugin.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQueryPlugin.html
@@ -1,174 +1,206 @@
<html>
<head>
- <title>GQuery Demo</title>
- <script language="javascript" src="gwtquery.samples.GwtQueryPlugin.nocache.js"></script>
+ <title>GQuery Demo</title>
+ <script language="javascript"
+ src="gwtquery.samples.GwtQueryPlugin.nocache.js"></script>
<link href='gquery-star-ratings.css' type="text/css" rel="stylesheet"/>
-
+
</head>
<body>
<div class="outer">
-<div id="tab-Overview">
- <h2>What is this?</h2>
- <p>
- The <strong>Star Rating Plugin</strong> is a plugin
- for the jQuery Javascript library that creates a non-obstrusive
- star rating control based on a set of radio input boxes.
- </p>
-
- <h2>What does it do?</h2>
- <ul>
- <li>
- It turns a collection of radio boxes into a neat star-rating control.
- </li>
- <li>
- It creates the interface based on standard form elements, which means the
- basic functionality will still be available even if Javascript is disabled.
- </li>
- <li>
- <strong style="color: rgb(0, 153, 0);">NEW</strong> (12-Mar-08):
- In read only mode (using the 'readOnly' option or <code>disabled</code> property), the plugin is a neat way of
- displaying star-like values without any additional code
- </li>
- </ul>
-
- <h2>How do I use it?</h2>
- <p>
- Just add the <code><strong>star</strong></code> class to your radio boxes
- </p>
- <table cellspacing="5" width="100%">
- <tr>
- <td valign="top">
- <pre class="code"><code class="html">&lt;input name="star1" type="radio" class="star"/&gt;
- &lt;input name="star1" type="radio" class="star"/&gt;
- &lt;input name="star1" type="radio" class="star"/&gt;
- &lt;input name="star1" type="radio" class="star"/&gt;
- &lt;input name="star1" type="radio" class="star"/&gt;</code></pre>
- </td>
- <td valign="top" width="10">&raquo;</td>
- <td valign="top" width="180">
- <input name="star1" type="radio" class="star"/>
- <input name="star1" type="radio" class="star"/>
- <input name="star1" type="radio" class="star"/>
- <input name="star1" type="radio" class="star"/>
- <input name="star1" type="radio" class="star"/>
- </td>
- </tr>
- </table>
-
- <p>
- Use the <code><strong>checked</strong></code> property to specify the initial/default value of the control
- </p>
- <table cellspacing="5" width="100%">
- <tr>
- <td valign="top">
- <pre class="code"><code class="html">&lt;input name="star2" type="radio" class="star"/&gt;
- &lt;input name="star2" type="radio" class="star"/&gt;
- &lt;input name="star2" type="radio" class="star" checked="checked"/&gt;
- &lt;input name="star2" type="radio" class="star"/&gt;
- &lt;input name="star2" type="radio" class="star"/&gt;</code></pre>
- </td>
- <td valign="top" width="10">&raquo;</td>
- <td valign="top" width="180">
- <input name="star2" type="radio" class="star"/>
- <input name="star2" type="radio" class="star"/>
- <input name="star2" type="radio" class="star" checked="checked"/>
- <input name="star2" type="radio" class="star"/>
- <input name="star2" type="radio" class="star"/>
- </td>
- </tr>
- </table>
-
- <p>
- Use the <code><strong>disabled</strong></code> property to use a control for display purposes only
- </p>
- <table cellspacing="5" width="100%">
- <tr>
- <td valign="top">
- <pre class="code"><code class="html">&lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;
- &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;
- &lt;input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/&gt;
- &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;
- &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;</code></pre>
- </td>
- <td valign="top" width="10">&raquo;</td>
- <td valign="top" width="180">
- <input name="star3" type="radio" class="star" disabled="disabled"/>
- <input name="star3" type="radio" class="star" disabled="disabled"/>
- <input name="star3" type="radio" class="star" disabled="disabled" checked="checked"/>
- <input name="star3" type="radio" class="star" disabled="disabled"/>
- <input name="star3" type="radio" class="star" disabled="disabled"/>
- </td>
- </tr>
- </table>
-
- <h2>What about split stars and 'half ratings'???</h2>
- <p>
- Use metadata plugin to pass advanced settings to the plugin via the class property.
- </p>
- <table cellspacing="5" width="100%">
- <tr>
- <td valign="top">
- <pre class="code"><code class="html">&lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}" checked="checked"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
- &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;</code></pre>
- </td>
- <td valign="top" width="10">&raquo;</td>
- <td valign="top" width="180">
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}" checked="checked"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- <input name="adv1" type="radio" class="star {split:4}"/>
- </td>
- </tr>
- </table>
-
- <p>
- Use custom selector
- </p>
- <table cellspacing="5" width="100%">
- <tr>
- <td valign="top">
- <script>$(function(){ // wait for document to load
- $('input.wow').rating();
- });</script>
- <pre class="code"><code class="js">$(function(){ // wait for document to load
- $('input.wow').rating();
- });</code></pre>
- <pre class="code"><code class="html">&lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}" checked="checked"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
- &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;</code></pre>
- </td>
- <td valign="top" width="10">&raquo;</td>
- <td valign="top" width="180">
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}" checked="checked"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- <input name="adv2" type="radio" class="wow {split:4}"/>
- </td>
- </tr>
- </table>
- </div><!--// tab-Overview //-->
+ <div id="tab-Overview" class="collapsible">
+ <h2>What is this?</h2>
+
+ <p>
+ The <strong>Star Rating Plugin</strong> is a plugin
+ for the jQuery Javascript library that creates a non-obstrusive
+ star rating control based on a set of radio input boxes.
+ </p>
+
+ <h2>What does it do?</h2>
+ <ul>
+ <li>
+ It turns a collection of radio boxes into a neat star-rating
+ control.
+ </li>
+ <li>
+ It creates the interface based on standard form elements, which
+ means the
+ basic functionality will still be available even if Javascript
+ is disabled.
+ </li>
+ <li>
+ <strong style="color: rgb(0, 153, 0);">NEW</strong> (12-Mar-08):
+ In read only mode (using the 'readOnly' option or
+ <code>disabled</code> property), the plugin is a neat way of
+ displaying star-like values without any additional code
+ </li>
+ </ul>
+
+ <h2>How do I use it?</h2>
+
+ <p>
+ Just add the <code><strong>star</strong></code> class to your radio
+ boxes
+ </p>
+ <table cellspacing="5" width="100%">
+ <tr>
+ <td valign="top">
+ <pre class="code"><code class="html">&lt;input name="star1" type="radio"
+ class="star"/&gt;
+ &lt;input name="star1" type="radio" class="star"/&gt;
+ &lt;input name="star1" type="radio" class="star"/&gt;
+ &lt;input name="star1" type="radio" class="star"/&gt;
+ &lt;input name="star1" type="radio" class="star"/&gt;</code></pre>
+ </td>
+ <td valign="top" width="10">&raquo;</td>
+ <td valign="top" width="180">
+ <input name="star1" type="radio" class="star"/>
+ <input name="star1" type="radio" class="star"/>
+ <input name="star1" type="radio" class="star"/>
+ <input name="star1" type="radio" class="star"/>
+ <input name="star1" type="radio" class="star"/>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ Use the <code><strong>checked</strong></code> property to specify
+ the initial/default value of the control
+ </p>
+ <table cellspacing="5" width="100%">
+ <tr>
+ <td valign="top">
+ <pre class="code"><code class="html">&lt;input name="star2" type="radio"
+ class="star"/&gt;
+ &lt;input name="star2" type="radio" class="star"/&gt;
+ &lt;input name="star2" type="radio" class="star" checked="checked"/&gt;
+ &lt;input name="star2" type="radio" class="star"/&gt;
+ &lt;input name="star2" type="radio" class="star"/&gt;</code></pre>
+ </td>
+ <td valign="top" width="10">&raquo;</td>
+ <td valign="top" width="180">
+ <input name="star2" type="radio" class="star"/>
+ <input name="star2" type="radio" class="star"/>
+ <input name="star2" type="radio" class="star"
+ checked="checked"/>
+ <input name="star2" type="radio" class="star"/>
+ <input name="star2" type="radio" class="star"/>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ Use the <code><strong>disabled</strong></code> property to use a
+ control for display purposes only
+ </p>
+ <table cellspacing="5" width="100%">
+ <tr>
+ <td valign="top">
+ <pre class="code"><code class="html">&lt;input name="star3" type="radio"
+ class="star" disabled="disabled"/&gt;
+ &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;
+ &lt;input name="star3" type="radio" class="star" disabled="disabled"
+ checked="checked"/&gt;
+ &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;
+ &lt;input name="star3" type="radio" class="star" disabled="disabled"/&gt;</code></pre>
+ </td>
+ <td valign="top" width="10">&raquo;</td>
+ <td valign="top" width="180">
+ <input name="star3" type="radio" class="star"
+ disabled="disabled"/>
+ <input name="star3" type="radio" class="star"
+ disabled="disabled"/>
+ <input name="star3" type="radio" class="star"
+ disabled="disabled" checked="checked"/>
+ <input name="star3" type="radio" class="star"
+ disabled="disabled"/>
+ <input name="star3" type="radio" class="star"
+ disabled="disabled"/>
+ </td>
+ </tr>
+ </table>
+
+ <h2>What about split stars and 'half ratings'???</h2>
+
+ <p>
+ Use metadata plugin to pass advanced settings to the plugin via the
+ class property.
+ </p>
+ <table cellspacing="5" width="100%">
+ <tr>
+ <td valign="top">
+ <pre class="code"><code class="html">&lt;input name="adv1" type="radio"
+ class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"
+ checked="checked"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star {split:4}"/&gt;
+ &lt;input name="adv1" type="radio" class="star
+ {split:4}"/&gt;</code></pre>
+ </td>
+ <td valign="top" width="10">&raquo;</td>
+ <td valign="top" width="180">
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"
+ checked="checked"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ <input name="adv1" type="radio" class="star {split:4}"/>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ Use custom selector
+ </p>
+ <table cellspacing="5" width="100%">
+ <tr>
+ <td valign="top">
+ <script>$(function() { // wait for document to load
+ $('input.wow').rating();
+ });</script>
+ <pre class="code"><code class="js">$(function(){ // wait for document to
+ load
+ $('input.wow').rating();
+ });</code></pre>
+ <pre class="code"><code class="html">&lt;input name="adv2" type="radio"
+ class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"
+ checked="checked"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow {split:4}"/&gt;
+ &lt;input name="adv2" type="radio" class="wow
+ {split:4}"/&gt;</code></pre>
+ </td>
+ <td valign="top" width="10">&raquo;</td>
+ <td valign="top" width="180">
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"
+ checked="checked"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ <input name="adv2" type="radio" class="wow {split:4}"/>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <!--// tab-Overview //-->
</div>
-
+
</body>
</html>
\ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQuerySample.html b/samples/src/main/java/gwtquery/samples/public/GwtQuerySample.html
index efd912fe..67cee111 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQuerySample.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQuerySample.html
@@ -1,13 +1,18 @@
<html>
<head>
- <title>GQuery Demo</title>
- <script language="javascript" src="gwtquery.samples.GwtQuerySample.nocache.js"></script>
+ <title>GQuery Demo</title>
+ <script type="text/javascript">
+ function __gwtStatsEvent(evt) {
+ }
+ </script>
+ <script language="javascript"
+ src="gwtquery.samples.GwtQuerySample.nocache.js"></script>
<link href='gquery-star-ratings.css' type="text/css" rel="stylesheet"/>
-
+
</head>
<body>
<div class="outer">
-<div>Foo <span class="note">bar</span> baz</div>
+ <div>Foo <span class="note">bar</span> baz</div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
@@ -17,7 +22,7 @@
<div>Foo <span class="note">bar</span> <span class="xyz">baz</span></div>
</div>
-
+
</body>
</html>
\ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/public/GwtQueryWidgets.html b/samples/src/main/java/gwtquery/samples/public/GwtQueryWidgets.html
index 32c1ba6f..d47bca9e 100644
--- a/samples/src/main/java/gwtquery/samples/public/GwtQueryWidgets.html
+++ b/samples/src/main/java/gwtquery/samples/public/GwtQueryWidgets.html
@@ -1,21 +1,22 @@
<html>
<head>
- <title>GQuery Demo</title>
- <script language="javascript" src="gwtquery.samples.GwtQueryWidgets.nocache.js"></script>
+ <title>GQuery Demo</title>
+ <script language="javascript"
+ src="gwtquery.samples.GwtQueryWidgets.nocache.js"></script>
<link href='gquery-star-ratings.css' type="text/css" rel="stylesheet"/>
-
+
</head>
<body>
<div class="outer">
-<div class="btn">Make me a button 1!</div>
-<div class="btn">Make me a button 2!</div>
-<div class="btn">Make me a button 3!</div>
-<div class="btn">Make me a button 4!</div>
-<div class="btn">Make me a button 5!</div>
-<div class="btn">Make me a button 6!</div>
-</div>
+ <div class="btn">Make me a button 1!</div>
+ <div class="btn">Make me a button 2!</div>
+ <div class="btn">Make me a button 3!</div>
+ <div class="btn">Make me a button 4!</div>
+ <div class="btn">Make me a button 5!</div>
+ <div class="btn">Make me a button 6!</div>
+</div>
+
-
</body>
</html>
\ No newline at end of file
diff --git a/samples/src/main/java/gwtquery/samples/public/dojo.js b/samples/src/main/java/gwtquery/samples/public/dojo.js
index ee6504c9..7a17a80a 100644
--- a/samples/src/main/java/gwtquery/samples/public/dojo.js
+++ b/samples/src/main/java/gwtquery/samples/public/dojo.js
@@ -1,16 +1,4144 @@
/*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
-*/
+ Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+ */
/*
- This is a compiled version of Dojo, built for deployment and not for
- development. To get an editable version, please visit:
+ This is a compiled version of Dojo, built for deployment and not for
+ development. To get an editable version, please visit:
- http://dojotoolkit.org
+ http://dojotoolkit.org
- for documentation and information on getting the source.
-*/
+ for documentation and information on getting the source.
+ */
-(function(){var _1=null;if((_1||(typeof djConfig!="undefined"&&djConfig.scopeMap))&&(typeof window!="undefined")){var _2="",_3="",_4="",_5={},_6={};_1=_1||djConfig.scopeMap;for(var i=0;i<_1.length;i++){var _8=_1[i];_2+="var "+_8[0]+" = {}; "+_8[1]+" = "+_8[0]+";"+_8[1]+"._scopeName = '"+_8[1]+"';";_3+=(i==0?"":",")+_8[0];_4+=(i==0?"":",")+_8[1];_5[_8[0]]=_8[1];_6[_8[1]]=_8[0];}eval(_2+"dojo._scopeArgs = ["+_4+"];");dojo._scopePrefixArgs=_3;dojo._scopePrefix="(function("+_3+"){";dojo._scopeSuffix="})("+_4+")";dojo._scopeMap=_5;dojo._scopeMapRev=_6;}(function(){if(typeof this["loadFirebugConsole"]=="function"){this["loadFirebugConsole"]();}else{this.console=this.console||{};var cn=["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];var i=0,tn;while((tn=cn[i++])){if(!console[tn]){(function(){var _c=tn+"";console[_c]=("log" in console)?function(){var a=Array.apply({},arguments);a.unshift(_c+":");console["log"](a.join(" "));}:function(){};})();}}}if(typeof dojo=="undefined"){this.dojo={_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};}var d=dojo;if(typeof dijit=="undefined"){this.dijit={_scopeName:"dijit"};}if(typeof dojox=="undefined"){this.dojox={_scopeName:"dojox"};}if(!d._scopeArgs){d._scopeArgs=[dojo,dijit,dojox];}d.global=this;d.config={isDebug:false,debugAtAllCosts:false};if(typeof djConfig!="undefined"){for(var _f in djConfig){d.config[_f]=djConfig[_f];}}dojo.locale=d.config.locale;var rev="$Rev: 17468 $".match(/\d+/);dojo.version={major:1,minor:3,patch:1,flag:"",revision:rev?+rev[0]:NaN,toString:function(){with(d.version){return major+"."+minor+"."+patch+flag+" ("+revision+")";}}};if(typeof OpenAjax!="undefined"){OpenAjax.hub.registerLibrary(dojo._scopeName,"http://dojotoolkit.org",d.version.toString());}var _11={};dojo._mixin=function(obj,_13){for(var x in _13){if(_11[x]===undefined||_11[x]!=_13[x]){obj[x]=_13[x];}}if(d.isIE&&_13){var p=_13.toString;if(typeof p=="function"&&p!=obj.toString&&p!=_11.toString&&p!="\nfunction toString() {\n [native code]\n}\n"){obj.toString=_13.toString;}}return obj;};dojo.mixin=function(obj,_17){if(!obj){obj={};}for(var i=1,l=arguments.length;i<l;i++){d._mixin(obj,arguments[i]);}return obj;};dojo._getProp=function(_1a,_1b,_1c){var obj=_1c||d.global;for(var i=0,p;obj&&(p=_1a[i]);i++){if(i==0&&this._scopeMap[p]){p=this._scopeMap[p];}obj=(p in obj?obj[p]:(_1b?obj[p]={}:undefined));}return obj;};dojo.setObject=function(_20,_21,_22){var _23=_20.split("."),p=_23.pop(),obj=d._getProp(_23,true,_22);return obj&&p?(obj[p]=_21):undefined;};dojo.getObject=function(_26,_27,_28){return d._getProp(_26.split("."),_27,_28);};dojo.exists=function(_29,obj){return !!d.getObject(_29,false,obj);};dojo["eval"]=function(_2b){return d.global.eval?d.global.eval(_2b):eval(_2b);};d.deprecated=d.experimental=function(){};})();(function(){var d=dojo;d.mixin(d,{_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(_2d){var mp=this._modulePrefixes;return !!(mp[_2d]&&mp[_2d].value);},_getModulePrefix:function(_2f){var mp=this._modulePrefixes;if(this._moduleHasPrefix(_2f)){return mp[_2f].value;}return _2f;},_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});dojo._loadPath=function(_31,_32,cb){var uri=((_31.charAt(0)=="/"||_31.match(/^\w+:/))?"":this.baseUrl)+_31;try{return !_32?this._loadUri(uri,cb):this._loadUriAndCheck(uri,_32,cb);}catch(e){console.error(e);return false;}};dojo._loadUri=function(uri,cb){if(this._loadedUrls[uri]){return true;}var _37=this._getText(uri,true);if(!_37){return false;}this._loadedUrls[uri]=true;this._loadedUrls.push(uri);if(cb){_37="("+_37+")";}else{_37=this._scopePrefix+_37+this._scopeSuffix;}if(d.isMoz){_37+="\r\n//@ sourceURL="+uri;}var _38=d["eval"](_37);if(cb){cb(_38);}return true;};dojo._loadUriAndCheck=function(uri,_3a,cb){var ok=false;try{ok=this._loadUri(uri,cb);}catch(e){console.error("failed loading "+uri+" with error: "+e);}return !!(ok&&this._loadedModules[_3a]);};dojo.loaded=function(){this._loadNotifying=true;this._postLoad=true;var mll=d._loaders;this._loaders=[];for(var x=0;x<mll.length;x++){mll[x]();}this._loadNotifying=false;if(d._postLoad&&d._inFlightCount==0&&mll.length){d._callLoaded();}};dojo.unloaded=function(){var mll=d._unloaders;while(mll.length){(mll.pop())();}};d._onto=function(arr,obj,fn){if(!fn){arr.push(obj);}else{if(fn){var _43=(typeof fn=="string")?obj[fn]:fn;arr.push(function(){_43.call(obj);});}}};dojo.addOnLoad=function(obj,_45){d._onto(d._loaders,obj,_45);if(d._postLoad&&d._inFlightCount==0&&!d._loadNotifying){d._callLoaded();}};var dca=d.config.addOnLoad;if(dca){d.addOnLoad[(dca instanceof Array?"apply":"call")](d,dca);}dojo._modulesLoaded=function(){if(d._postLoad){return;}if(d._inFlightCount>0){console.warn("files still in flight!");return;}d._callLoaded();};dojo._callLoaded=function(){if(typeof setTimeout=="object"||(dojo.config.useXDomain&&d.isOpera)){if(dojo.isAIR){setTimeout(function(){dojo.loaded();},0);}else{setTimeout(dojo._scopeName+".loaded();",0);}}else{d.loaded();}};dojo._getModuleSymbols=function(_47){var _48=_47.split(".");for(var i=_48.length;i>0;i--){var _4a=_48.slice(0,i).join(".");if((i==1)&&!this._moduleHasPrefix(_4a)){_48[0]="../"+_48[0];}else{var _4b=this._getModulePrefix(_4a);if(_4b!=_4a){_48.splice(0,i,_4b);break;}}}return _48;};dojo._global_omit_module_check=false;dojo.loadInit=function(_4c){_4c();};dojo._loadModule=dojo.require=function(_4d,_4e){_4e=this._global_omit_module_check||_4e;var _4f=this._loadedModules[_4d];if(_4f){return _4f;}var _50=this._getModuleSymbols(_4d).join("/")+".js";var _51=(!_4e)?_4d:null;var ok=this._loadPath(_50,_51);if(!ok&&!_4e){throw new Error("Could not load '"+_4d+"'; last tried '"+_50+"'");}if(!_4e&&!this._isXDomain){_4f=this._loadedModules[_4d];if(!_4f){throw new Error("symbol '"+_4d+"' is not defined after loading '"+_50+"'");}}return _4f;};dojo.provide=function(_53){_53=_53+"";return (d._loadedModules[_53]=d.getObject(_53,true));};dojo.platformRequire=function(_54){var _55=_54.common||[];var _56=_55.concat(_54[d._name]||_54["default"]||[]);for(var x=0;x<_56.length;x++){var _58=_56[x];if(_58.constructor==Array){d._loadModule.apply(d,_58);}else{d._loadModule(_58);}}};dojo.requireIf=function(_59,_5a){if(_59===true){var _5b=[];for(var i=1;i<arguments.length;i++){_5b.push(arguments[i]);}d.require.apply(d,_5b);}};dojo.requireAfterIf=d.requireIf;dojo.registerModulePath=function(_5d,_5e){d._modulePrefixes[_5d]={name:_5d,value:_5e};};dojo.requireLocalization=function(_5f,_60,_61,_62){d.require("dojo.i18n");d.i18n._requireLocalization.apply(d.hostenv,arguments);};var ore=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$");var ire=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");dojo._Url=function(){var n=null;var _a=arguments;var uri=[_a[0]];for(var i=1;i<_a.length;i++){if(!_a[i]){continue;}var _69=new d._Url(_a[i]+"");var _6a=new d._Url(uri[0]+"");if(_69.path==""&&!_69.scheme&&!_69.authority&&!_69.query){if(_69.fragment!=n){_6a.fragment=_69.fragment;}_69=_6a;}else{if(!_69.scheme){_69.scheme=_6a.scheme;if(!_69.authority){_69.authority=_6a.authority;if(_69.path.charAt(0)!="/"){var _6b=_6a.path.substring(0,_6a.path.lastIndexOf("/")+1)+_69.path;var _6c=_6b.split("/");for(var j=0;j<_6c.length;j++){if(_6c[j]=="."){if(j==_6c.length-1){_6c[j]="";}else{_6c.splice(j,1);j--;}}else{if(j>0&&!(j==1&&_6c[0]=="")&&_6c[j]==".."&&_6c[j-1]!=".."){if(j==(_6c.length-1)){_6c.splice(j,1);_6c[j-1]="";}else{_6c.splice(j-1,2);j-=2;}}}}_69.path=_6c.join("/");}}}}uri=[];if(_69.scheme){uri.push(_69.scheme,":");}if(_69.authority){uri.push("//",_69.authority);}uri.push(_69.path);if(_69.query){uri.push("?",_69.query);}if(_69.fragment){uri.push("#",_69.fragment);}}this.uri=uri.join("");var r=this.uri.match(ore);this.scheme=r[2]||(r[1]?"":n);this.authority=r[4]||(r[3]?"":n);this.path=r[5];this.query=r[7]||(r[6]?"":n);this.fragment=r[9]||(r[8]?"":n);if(this.authority!=n){r=this.authority.match(ire);this.user=r[3]||n;this.password=r[4]||n;this.host=r[6]||r[7];this.port=r[9]||n;}};dojo._Url.prototype.toString=function(){return this.uri;};dojo.moduleUrl=function(_6f,url){var loc=d._getModuleSymbols(_6f).join("/");if(!loc){return null;}if(loc.lastIndexOf("/")!=loc.length-1){loc+="/";}var _72=loc.indexOf(":");if(loc.charAt(0)!="/"&&(_72==-1||_72>loc.indexOf("/"))){loc=d.baseUrl+loc;}return new d._Url(loc,url);};})();if(typeof window!="undefined"){dojo.isBrowser=true;dojo._name="browser";(function(){var d=dojo;if(document&&document.getElementsByTagName){var _74=document.getElementsByTagName("script");var _75=/dojo(\.xd)?\.js(\W|$)/i;for(var i=0;i<_74.length;i++){var src=_74[i].getAttribute("src");if(!src){continue;}var m=src.match(_75);if(m){if(!d.config.baseUrl){d.config.baseUrl=src.substring(0,m.index);}var cfg=_74[i].getAttribute("djConfig");if(cfg){var _7a=eval("({ "+cfg+" })");for(var x in _7a){dojo.config[x]=_7a[x];}}break;}}}d.baseUrl=d.config.baseUrl;var n=navigator;var dua=n.userAgent,dav=n.appVersion,tv=parseFloat(dav);if(dua.indexOf("Opera")>=0){d.isOpera=tv;}if(dua.indexOf("AdobeAIR")>=0){d.isAIR=1;}d.isKhtml=(dav.indexOf("Konqueror")>=0)?tv:0;d.isWebKit=parseFloat(dua.split("WebKit/")[1])||undefined;d.isChrome=parseFloat(dua.split("Chrome/")[1])||undefined;var _80=Math.max(dav.indexOf("WebKit"),dav.indexOf("Safari"),0);if(_80&&!dojo.isChrome){d.isSafari=parseFloat(dav.split("Version/")[1]);if(!d.isSafari||parseFloat(dav.substr(_80+7))<=419.3){d.isSafari=2;}}if(dua.indexOf("Gecko")>=0&&!d.isKhtml&&!d.isWebKit){d.isMozilla=d.isMoz=tv;}if(d.isMoz){d.isFF=parseFloat(dua.split("Firefox/")[1]||dua.split("Minefield/")[1]||dua.split("Shiretoko/")[1])||undefined;}if(document.all&&!d.isOpera){d.isIE=parseFloat(dav.split("MSIE ")[1])||undefined;if(d.isIE>=8&&document.documentMode!=5){d.isIE=document.documentMode;}}if(dojo.isIE&&window.location.protocol==="file:"){dojo.config.ieForceActiveXXhr=true;}var cm=document.compatMode;d.isQuirks=cm=="BackCompat"||cm=="QuirksMode"||d.isIE<6;d.locale=dojo.config.locale||(d.isIE?n.userLanguage:n.language).toLowerCase();d._XMLHTTP_PROGIDS=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];d._xhrObj=function(){var _82,_83;if(!dojo.isIE||!dojo.config.ieForceActiveXXhr){try{_82=new XMLHttpRequest();}catch(e){}}if(!_82){for(var i=0;i<3;++i){var _85=d._XMLHTTP_PROGIDS[i];try{_82=new ActiveXObject(_85);}catch(e){_83=e;}if(_82){d._XMLHTTP_PROGIDS=[_85];break;}}}if(!_82){throw new Error("XMLHTTP not available: "+_83);}return _82;};d._isDocumentOk=function(_86){var _87=_86.status||0;return (_87>=200&&_87<300)||_87==304||_87==1223||(!_87&&(location.protocol=="file:"||location.protocol=="chrome:"));};var _88=window.location+"";var _89=document.getElementsByTagName("base");var _8a=(_89&&_89.length>0);d._getText=function(uri,_8c){var _8d=this._xhrObj();if(!_8a&&dojo._Url){uri=(new dojo._Url(_88,uri)).toString();}if(d.config.cacheBust){uri+="";uri+=(uri.indexOf("?")==-1?"?":"&")+String(d.config.cacheBust).replace(/\W+/g,"");}_8d.open("GET",uri,false);try{_8d.send(null);if(!d._isDocumentOk(_8d)){var err=Error("Unable to load "+uri+" status:"+_8d.status);err.status=_8d.status;err.responseText=_8d.responseText;throw err;}}catch(e){if(_8c){return null;}throw e;}return _8d.responseText;};var _w=window;var _90=function(_91,fp){var _93=_w[_91]||function(){};_w[_91]=function(){fp.apply(_w,arguments);_93.apply(_w,arguments);};};d._windowUnloaders=[];d.windowUnloaded=function(){var mll=d._windowUnloaders;while(mll.length){(mll.pop())();}};var _95=0;d.addOnWindowUnload=function(obj,_97){d._onto(d._windowUnloaders,obj,_97);if(!_95){_95=1;_90("onunload",d.windowUnloaded);}};var _98=0;d.addOnUnload=function(obj,_9a){d._onto(d._unloaders,obj,_9a);if(!_98){_98=1;_90("onbeforeunload",dojo.unloaded);}};})();dojo._initFired=false;dojo._loadInit=function(e){dojo._initFired=true;var _9c=e&&e.type?e.type.toLowerCase():"load";if(arguments.callee.initialized||(_9c!="domcontentloaded"&&_9c!="load")){return;}arguments.callee.initialized=true;if("_khtmlTimer" in dojo){clearInterval(dojo._khtmlTimer);delete dojo._khtmlTimer;}if(dojo._inFlightCount==0){dojo._modulesLoaded();}};if(!dojo.config.afterOnLoad){if(document.addEventListener){if(dojo.isWebKit>525||dojo.isOpera||dojo.isFF>=3||(dojo.isMoz&&dojo.config.enableMozDomContentLoaded===true)){document.addEventListener("DOMContentLoaded",dojo._loadInit,null);}window.addEventListener("load",dojo._loadInit,null);}if(dojo.isAIR){window.addEventListener("load",dojo._loadInit,null);}else{if((dojo.isWebKit<525)||dojo.isKhtml){dojo._khtmlTimer=setInterval(function(){if(/loaded|complete/.test(document.readyState)){dojo._loadInit();}},10);}}}if(dojo.isIE){if(!dojo.config.afterOnLoad){document.write("<scr"+"ipt defer src=\"//:\" "+"onreadystatechange=\"if(this.readyState=='complete'){"+dojo._scopeName+"._loadInit();}\">"+"</scr"+"ipt>");}try{document.namespaces.add("v","urn:schemas-microsoft-com:vml");document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML); display:inline-block");}catch(e){}}}(function(){var mp=dojo.config["modulePaths"];if(mp){for(var _9e in mp){dojo.registerModulePath(_9e,mp[_9e]);}}})();if(dojo.config.isDebug){dojo.require("dojo._firebug.firebug");}if(dojo.config.debugAtAllCosts){dojo.config.useXDomain=true;dojo.require("dojo._base._loader.loader_xd");dojo.require("dojo._base._loader.loader_debug");dojo.require("dojo.i18n");}if(!dojo._hasResource["dojo._base.lang"]){dojo._hasResource["dojo._base.lang"]=true;dojo.provide("dojo._base.lang");dojo.isString=function(it){return !!arguments.length&&it!=null&&(typeof it=="string"||it instanceof String);};dojo.isArray=function(it){return it&&(it instanceof Array||typeof it=="array");};dojo.isFunction=(function(){var _a1=function(it){var t=typeof it;return it&&(t=="function"||it instanceof Function);};return dojo.isSafari?function(it){if(typeof it=="function"&&it=="[object NodeList]"){return false;}return _a1(it);}:_a1;})();dojo.isObject=function(it){return it!==undefined&&(it===null||typeof it=="object"||dojo.isArray(it)||dojo.isFunction(it));};dojo.isArrayLike=function(it){var d=dojo;return it&&it!==undefined&&!d.isString(it)&&!d.isFunction(it)&&!(it.tagName&&it.tagName.toLowerCase()=="form")&&(d.isArray(it)||isFinite(it.length));};dojo.isAlien=function(it){return it&&!dojo.isFunction(it)&&/\{\s*\[native code\]\s*\}/.test(String(it));};dojo.extend=function(_a9,_aa){for(var i=1,l=arguments.length;i<l;i++){dojo._mixin(_a9.prototype,arguments[i]);}return _a9;};dojo._hitchArgs=function(_ad,_ae){var pre=dojo._toArray(arguments,2);var _b0=dojo.isString(_ae);return function(){var _b1=dojo._toArray(arguments);var f=_b0?(_ad||dojo.global)[_ae]:_ae;return f&&f.apply(_ad||this,pre.concat(_b1));};};dojo.hitch=function(_b3,_b4){if(arguments.length>2){return dojo._hitchArgs.apply(dojo,arguments);}if(!_b4){_b4=_b3;_b3=null;}if(dojo.isString(_b4)){_b3=_b3||dojo.global;if(!_b3[_b4]){throw (["dojo.hitch: scope[\"",_b4,"\"] is null (scope=\"",_b3,"\")"].join(""));}return function(){return _b3[_b4].apply(_b3,arguments||[]);};}return !_b3?_b4:function(){return _b4.apply(_b3,arguments||[]);};};dojo.delegate=dojo._delegate=(function(){function TMP(){};return function(obj,_b7){TMP.prototype=obj;var tmp=new TMP();if(_b7){dojo._mixin(tmp,_b7);}return tmp;};})();(function(){var _b9=function(obj,_bb,_bc){return (_bc||[]).concat(Array.prototype.slice.call(obj,_bb||0));};var _bd=function(obj,_bf,_c0){var arr=_c0||[];for(var x=_bf||0;x<obj.length;x++){arr.push(obj[x]);}return arr;};dojo._toArray=dojo.isIE?function(obj){return ((obj.item)?_bd:_b9).apply(this,arguments);}:_b9;})();dojo.partial=function(_c4){var arr=[null];return dojo.hitch.apply(dojo,arr.concat(dojo._toArray(arguments)));};dojo.clone=function(o){if(!o){return o;}if(dojo.isArray(o)){var r=[];for(var i=0;i<o.length;++i){r.push(dojo.clone(o[i]));}return r;}if(!dojo.isObject(o)){return o;}if(o.nodeType&&o.cloneNode){return o.cloneNode(true);}if(o instanceof Date){return new Date(o.getTime());}r=new o.constructor();for(i in o){if(!(i in r)||r[i]!=o[i]){r[i]=dojo.clone(o[i]);}}return r;};dojo.trim=String.prototype.trim?function(str){return str.trim();}:function(str){return str.replace(/^\s\s*/,"").replace(/\s\s*$/,"");};}if(!dojo._hasResource["dojo._base.declare"]){dojo._hasResource["dojo._base.declare"]=true;dojo.provide("dojo._base.declare");dojo.declare=function(_cb,_cc,_cd){var dd=arguments.callee,_cf;if(dojo.isArray(_cc)){_cf=_cc;_cc=_cf.shift();}if(_cf){dojo.forEach(_cf,function(m,i){if(!m){throw (_cb+": mixin #"+i+" is null");}_cc=dd._delegate(_cc,m);});}var _d2=dd._delegate(_cc);_cd=_cd||{};_d2.extend(_cd);dojo.extend(_d2,{declaredClass:_cb,_constructor:_cd.constructor});_d2.prototype.constructor=_d2;return dojo.setObject(_cb,_d2);};dojo.mixin(dojo.declare,{_delegate:function(_d3,_d4){var bp=(_d3||0).prototype,mp=(_d4||0).prototype,dd=dojo.declare;var _d8=dd._makeCtor();dojo.mixin(_d8,{superclass:bp,mixin:mp,extend:dd._extend});if(_d3){_d8.prototype=dojo._delegate(bp);}dojo.extend(_d8,dd._core,mp||0,{_constructor:null,preamble:null});_d8.prototype.constructor=_d8;_d8.prototype.declaredClass=(bp||0).declaredClass+"_"+(mp||0).declaredClass;return _d8;},_extend:function(_d9){var i,fn;for(i in _d9){if(dojo.isFunction(fn=_d9[i])&&!0[i]){fn.nom=i;fn.ctor=this;}}dojo.extend(this,_d9);},_makeCtor:function(){return function(){this._construct(arguments);};},_core:{_construct:function(_dc){var c=_dc.callee,s=c.superclass,ct=s&&s.constructor,m=c.mixin,mct=m&&m.constructor,a=_dc,ii,fn;if(a[0]){if(((fn=a[0].preamble))){a=fn.apply(this,a)||a;}}if((fn=c.prototype.preamble)){a=fn.apply(this,a)||a;}if(ct&&ct.apply){ct.apply(this,a);}if(mct&&mct.apply){mct.apply(this,a);}if((ii=c.prototype._constructor)){ii.apply(this,_dc);}if(this.constructor.prototype==c.prototype&&(ct=this.postscript)){ct.apply(this,_dc);}},_findMixin:function(_e5){var c=this.constructor,p,m;while(c){p=c.superclass;m=c.mixin;if(m==_e5||(m instanceof _e5.constructor)){return p;}if(m&&m._findMixin&&(m=m._findMixin(_e5))){return m;}c=p&&p.constructor;}},_findMethod:function(_e9,_ea,_eb,has){var p=_eb,c,m,f;do{c=p.constructor;m=c.mixin;if(m&&(m=this._findMethod(_e9,_ea,m,has))){return m;}if((f=p[_e9])&&(has==(f==_ea))){return p;}p=c.superclass;}while(p);return !has&&(p=this._findMixin(_eb))&&this._findMethod(_e9,_ea,p,has);},inherited:function(_f1,_f2,_f3){var a=arguments;if(!dojo.isString(a[0])){_f3=_f2;_f2=_f1;_f1=_f2.callee.nom;}a=_f3||_f2;var c=_f2.callee,p=this.constructor.prototype,fn,mp;if(this[_f1]!=c||p[_f1]==c){mp=(c.ctor||0).superclass||this._findMethod(_f1,c,p,true);if(!mp){throw (this.declaredClass+": inherited method \""+_f1+"\" mismatch");}p=this._findMethod(_f1,c,mp,false);}fn=p&&p[_f1];if(!fn){throw (mp.declaredClass+": inherited method \""+_f1+"\" not found");}return fn.apply(this,a);}}});}if(!dojo._hasResource["dojo._base.connect"]){dojo._hasResource["dojo._base.connect"]=true;dojo.provide("dojo._base.connect");dojo._listener={getDispatcher:function(){return function(){var ap=Array.prototype,c=arguments.callee,ls=c._listeners,t=c.target;var r=t&&t.apply(this,arguments);var lls;lls=[].concat(ls);for(var i in lls){if(!(i in ap)){lls[i].apply(this,arguments);}}return r;};},add:function(_100,_101,_102){_100=_100||dojo.global;var f=_100[_101];if(!f||!f._listeners){var d=dojo._listener.getDispatcher();d.target=f;d._listeners=[];f=_100[_101]=d;}return f._listeners.push(_102);},remove:function(_105,_106,_107){var f=(_105||dojo.global)[_106];if(f&&f._listeners&&_107--){delete f._listeners[_107];}}};dojo.connect=function(obj,_10a,_10b,_10c,_10d){var a=arguments,args=[],i=0;args.push(dojo.isString(a[0])?null:a[i++],a[i++]);var a1=a[i+1];args.push(dojo.isString(a1)||dojo.isFunction(a1)?a[i++]:null,a[i++]);for(var l=a.length;i<l;i++){args.push(a[i]);}return dojo._connect.apply(this,args);};dojo._connect=function(obj,_113,_114,_115){var l=dojo._listener,h=l.add(obj,_113,dojo.hitch(_114,_115));return [obj,_113,h,l];};dojo.disconnect=function(_118){if(_118&&_118[0]!==undefined){dojo._disconnect.apply(this,_118);delete _118[0];}};dojo._disconnect=function(obj,_11a,_11b,_11c){_11c.remove(obj,_11a,_11b);};dojo._topics={};dojo.subscribe=function(_11d,_11e,_11f){return [_11d,dojo._listener.add(dojo._topics,_11d,dojo.hitch(_11e,_11f))];};dojo.unsubscribe=function(_120){if(_120){dojo._listener.remove(dojo._topics,_120[0],_120[1]);}};dojo.publish=function(_121,args){var f=dojo._topics[_121];if(f){f.apply(this,args||[]);}};dojo.connectPublisher=function(_124,obj,_126){var pf=function(){dojo.publish(_124,arguments);};return (_126)?dojo.connect(obj,_126,pf):dojo.connect(obj,pf);};}if(!dojo._hasResource["dojo._base.Deferred"]){dojo._hasResource["dojo._base.Deferred"]=true;dojo.provide("dojo._base.Deferred");dojo.Deferred=function(_128){this.chain=[];this.id=this._nextId();this.fired=-1;this.paused=0;this.results=[null,null];this.canceller=_128;this.silentlyCancelled=false;};dojo.extend(dojo.Deferred,{_nextId:(function(){var n=1;return function(){return n++;};})(),cancel:function(){var err;if(this.fired==-1){if(this.canceller){err=this.canceller(this);}else{this.silentlyCancelled=true;}if(this.fired==-1){if(!(err instanceof Error)){var res=err;var msg="Deferred Cancelled";if(err&&err.toString){msg+=": "+err.toString();}err=new Error(msg);err.dojoType="cancel";err.cancelResult=res;}this.errback(err);}}else{if((this.fired==0)&&(this.results[0] instanceof dojo.Deferred)){this.results[0].cancel();}}},_resback:function(res){this.fired=((res instanceof Error)?1:0);this.results[this.fired]=res;this._fire();},_check:function(){if(this.fired!=-1){if(!this.silentlyCancelled){throw new Error("already called!");}this.silentlyCancelled=false;return;}},callback:function(res){this._check();this._resback(res);},errback:function(res){this._check();if(!(res instanceof Error)){res=new Error(res);}this._resback(res);},addBoth:function(cb,cbfn){var _132=dojo.hitch.apply(dojo,arguments);return this.addCallbacks(_132,_132);},addCallback:function(cb,cbfn){return this.addCallbacks(dojo.hitch.apply(dojo,arguments));},addErrback:function(cb,cbfn){return this.addCallbacks(null,dojo.hitch.apply(dojo,arguments));},addCallbacks:function(cb,eb){this.chain.push([cb,eb]);if(this.fired>=0){this._fire();}return this;},_fire:function(){var _139=this.chain;var _13a=this.fired;var res=this.results[_13a];var self=this;var cb=null;while((_139.length>0)&&(this.paused==0)){var f=_139.shift()[_13a];if(!f){continue;}var func=function(){var ret=f(res);if(typeof ret!="undefined"){res=ret;}_13a=((res instanceof Error)?1:0);if(res instanceof dojo.Deferred){cb=function(res){self._resback(res);self.paused--;if((self.paused==0)&&(self.fired>=0)){self._fire();}};this.paused++;}};if(dojo.config.debugAtAllCosts){func.call(this);}else{try{func.call(this);}catch(err){_13a=1;res=err;}}}this.fired=_13a;this.results[_13a]=res;if((cb)&&(this.paused)){res.addBoth(cb);}}});}if(!dojo._hasResource["dojo._base.json"]){dojo._hasResource["dojo._base.json"]=true;dojo.provide("dojo._base.json");dojo.fromJson=function(json){return eval("("+json+")");};dojo._escapeString=function(str){return ("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r");};dojo.toJsonIndentStr="\t";dojo.toJson=function(it,_145,_146){if(it===undefined){return "undefined";}var _147=typeof it;if(_147=="number"||_147=="boolean"){return it+"";}if(it===null){return "null";}if(dojo.isString(it)){return dojo._escapeString(it);}var _148=arguments.callee;var _149;_146=_146||"";var _14a=_145?_146+dojo.toJsonIndentStr:"";var tf=it.__json__||it.json;if(dojo.isFunction(tf)){_149=tf.call(it);if(it!==_149){return _148(_149,_145,_14a);}}if(it.nodeType&&it.cloneNode){throw new Error("Can't serialize DOM nodes");}var sep=_145?" ":"";var _14d=_145?"\n":"";if(dojo.isArray(it)){var res=dojo.map(it,function(obj){var val=_148(obj,_145,_14a);if(typeof val!="string"){val="undefined";}return _14d+_14a+val;});return "["+res.join(","+sep)+_14d+_146+"]";}if(_147=="function"){return null;}var _151=[],key;for(key in it){var _153,val;if(typeof key=="number"){_153="\""+key+"\"";}else{if(typeof key=="string"){_153=dojo._escapeString(key);}else{continue;}}val=_148(it[key],_145,_14a);if(typeof val!="string"){continue;}_151.push(_14d+_14a+_153+":"+sep+val);}return "{"+_151.join(","+sep)+_14d+_146+"}";};}if(!dojo._hasResource["dojo._base.array"]){dojo._hasResource["dojo._base.array"]=true;dojo.provide("dojo._base.array");(function(){var _155=function(arr,obj,cb){return [dojo.isString(arr)?arr.split(""):arr,obj||dojo.global,dojo.isString(cb)?new Function("item","index","array",cb):cb];};dojo.mixin(dojo,{indexOf:function(_159,_15a,_15b,_15c){var step=1,end=_159.length||0,i=0;if(_15c){i=end-1;step=end=-1;}if(_15b!=undefined){i=_15b;}if((_15c&&i>end)||i<end){for(;i!=end;i+=step){if(_159[i]==_15a){return i;}}}return -1;},lastIndexOf:function(_15f,_160,_161){return dojo.indexOf(_15f,_160,_161,true);},forEach:function(arr,_163,_164){if(!arr||!arr.length){return;}var _p=_155(arr,_164,_163);arr=_p[0];for(var i=0,l=arr.length;i<l;++i){_p[2].call(_p[1],arr[i],i,arr);}},_everyOrSome:function(_168,arr,_16a,_16b){var _p=_155(arr,_16b,_16a);arr=_p[0];for(var i=0,l=arr.length;i<l;++i){var _16f=!!_p[2].call(_p[1],arr[i],i,arr);if(_168^_16f){return _16f;}}return _168;},every:function(arr,_171,_172){return this._everyOrSome(true,arr,_171,_172);},some:function(arr,_174,_175){return this._everyOrSome(false,arr,_174,_175);},map:function(arr,_177,_178){var _p=_155(arr,_178,_177);arr=_p[0];var _17a=(arguments[3]?(new arguments[3]()):[]);for(var i=0,l=arr.length;i<l;++i){_17a.push(_p[2].call(_p[1],arr[i],i,arr));}return _17a;},filter:function(arr,_17e,_17f){var _p=_155(arr,_17f,_17e);arr=_p[0];var _181=[];for(var i=0,l=arr.length;i<l;++i){if(_p[2].call(_p[1],arr[i],i,arr)){_181.push(arr[i]);}}return _181;}});})();}if(!dojo._hasResource["dojo._base.Color"]){dojo._hasResource["dojo._base.Color"]=true;dojo.provide("dojo._base.Color");(function(){var d=dojo;dojo.Color=function(_185){if(_185){this.setColor(_185);}};dojo.Color.named={black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255]};dojo.extend(dojo.Color,{r:255,g:255,b:255,a:1,_set:function(r,g,b,a){var t=this;t.r=r;t.g=g;t.b=b;t.a=a;},setColor:function(_18b){if(d.isString(_18b)){d.colorFromString(_18b,this);}else{if(d.isArray(_18b)){d.colorFromArray(_18b,this);}else{this._set(_18b.r,_18b.g,_18b.b,_18b.a);if(!(_18b instanceof d.Color)){this.sanitize();}}}return this;},sanitize:function(){return this;},toRgb:function(){var t=this;return [t.r,t.g,t.b];},toRgba:function(){var t=this;return [t.r,t.g,t.b,t.a];},toHex:function(){var arr=d.map(["r","g","b"],function(x){var s=this[x].toString(16);return s.length<2?"0"+s:s;},this);return "#"+arr.join("");},toCss:function(_191){var t=this,rgb=t.r+", "+t.g+", "+t.b;return (_191?"rgba("+rgb+", "+t.a:"rgb("+rgb)+")";},toString:function(){return this.toCss(true);}});dojo.blendColors=function(_194,end,_196,obj){var t=obj||new d.Color();d.forEach(["r","g","b","a"],function(x){t[x]=_194[x]+(end[x]-_194[x])*_196;if(x!="a"){t[x]=Math.round(t[x]);}});return t.sanitize();};dojo.colorFromRgb=function(_19a,obj){var m=_19a.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);return m&&dojo.colorFromArray(m[1].split(/\s*,\s*/),obj);};dojo.colorFromHex=function(_19d,obj){var t=obj||new d.Color(),bits=(_19d.length==4)?4:8,mask=(1<<bits)-1;_19d=Number("0x"+_19d.substr(1));if(isNaN(_19d)){return null;}d.forEach(["b","g","r"],function(x){var c=_19d&mask;_19d>>=bits;t[x]=bits==4?17*c:c;});t.a=1;return t;};dojo.colorFromArray=function(a,obj){var t=obj||new d.Color();t._set(Number(a[0]),Number(a[1]),Number(a[2]),Number(a[3]));if(isNaN(t.a)){t.a=1;}return t.sanitize();};dojo.colorFromString=function(str,obj){var a=d.Color.named[str];return a&&d.colorFromArray(a,obj)||d.colorFromRgb(str,obj)||d.colorFromHex(str,obj);};})();}if(!dojo._hasResource["dojo._base"]){dojo._hasResource["dojo._base"]=true;dojo.provide("dojo._base");}if(!dojo._hasResource["dojo._base.window"]){dojo._hasResource["dojo._base.window"]=true;dojo.provide("dojo._base.window");dojo.doc=window["document"]||null;dojo.body=function(){return dojo.doc.body||dojo.doc.getElementsByTagName("body")[0];};dojo.setContext=function(_1aa,_1ab){dojo.global=_1aa;dojo.doc=_1ab;};dojo.withGlobal=function(_1ac,_1ad,_1ae,_1af){var _1b0=dojo.global;try{dojo.global=_1ac;return dojo.withDoc.call(null,_1ac.document,_1ad,_1ae,_1af);}finally{dojo.global=_1b0;}};dojo.withDoc=function(_1b1,_1b2,_1b3,_1b4){var _1b5=dojo.doc,_1b6=dojo._bodyLtr;try{dojo.doc=_1b1;delete dojo._bodyLtr;if(_1b3&&dojo.isString(_1b2)){_1b2=_1b3[_1b2];}return _1b2.apply(_1b3,_1b4||[]);}finally{dojo.doc=_1b5;if(_1b6!==undefined){dojo._bodyLtr=_1b6;}}};}if(!dojo._hasResource["dojo._base.event"]){dojo._hasResource["dojo._base.event"]=true;dojo.provide("dojo._base.event");(function(){var del=(dojo._event_listener={add:function(node,name,fp){if(!node){return;}name=del._normalizeEventName(name);fp=del._fixCallback(name,fp);var _1bb=name;if(!dojo.isIE&&(name=="mouseenter"||name=="mouseleave")){var ofp=fp;name=(name=="mouseenter")?"mouseover":"mouseout";fp=function(e){if(dojo.isFF<=2){try{e.relatedTarget.tagName;}catch(e2){return;}}if(!dojo.isDescendant(e.relatedTarget,node)){return ofp.call(this,e);}};}node.addEventListener(name,fp,false);return fp;},remove:function(node,_1bf,_1c0){if(node){_1bf=del._normalizeEventName(_1bf);if(!dojo.isIE&&(_1bf=="mouseenter"||_1bf=="mouseleave")){_1bf=(_1bf=="mouseenter")?"mouseover":"mouseout";}node.removeEventListener(_1bf,_1c0,false);}},_normalizeEventName:function(name){return name.slice(0,2)=="on"?name.slice(2):name;},_fixCallback:function(name,fp){return name!="keypress"?fp:function(e){return fp.call(this,del._fixEvent(e,this));};},_fixEvent:function(evt,_1c6){switch(evt.type){case "keypress":del._setKeyChar(evt);break;}return evt;},_setKeyChar:function(evt){evt.keyChar=evt.charCode?String.fromCharCode(evt.charCode):"";evt.charOrCode=evt.keyChar||evt.keyCode;},_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});dojo.fixEvent=function(evt,_1c9){return del._fixEvent(evt,_1c9);};dojo.stopEvent=function(evt){evt.preventDefault();evt.stopPropagation();};var _1cb=dojo._listener;dojo._connect=function(obj,_1cd,_1ce,_1cf,_1d0){var _1d1=obj&&(obj.nodeType||obj.attachEvent||obj.addEventListener);var lid=_1d1?(_1d0?2:1):0,l=[dojo._listener,del,_1cb][lid];var h=l.add(obj,_1cd,dojo.hitch(_1ce,_1cf));return [obj,_1cd,h,lid];};dojo._disconnect=function(obj,_1d6,_1d7,_1d8){([dojo._listener,del,_1cb][_1d8]).remove(obj,_1d6,_1d7);};dojo.keys={BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE: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,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};if(dojo.isIE){var _1d9=function(e,code){try{return (e.keyCode=code);}catch(e){return 0;}};var iel=dojo._listener;var _1dd=(dojo._ieListenersName="_"+dojo._scopeName+"_listeners");if(!dojo.config._allow_leaks){_1cb=iel=dojo._ie_listener={handlers:[],add:function(_1de,_1df,_1e0){_1de=_1de||dojo.global;var f=_1de[_1df];if(!f||!f[_1dd]){var d=dojo._getIeDispatcher();d.target=f&&(ieh.push(f)-1);d[_1dd]=[];f=_1de[_1df]=d;}return f[_1dd].push(ieh.push(_1e0)-1);},remove:function(_1e4,_1e5,_1e6){var f=(_1e4||dojo.global)[_1e5],l=f&&f[_1dd];if(f&&l&&_1e6--){delete ieh[l[_1e6]];delete l[_1e6];}}};var ieh=iel.handlers;}dojo.mixin(del,{add:function(node,_1ea,fp){if(!node){return;}_1ea=del._normalizeEventName(_1ea);if(_1ea=="onkeypress"){var kd=node.onkeydown;if(!kd||!kd[_1dd]||!kd._stealthKeydownHandle){var h=del.add(node,"onkeydown",del._stealthKeyDown);kd=node.onkeydown;kd._stealthKeydownHandle=h;kd._stealthKeydownRefs=1;}else{kd._stealthKeydownRefs++;}}return iel.add(node,_1ea,del._fixCallback(fp));},remove:function(node,_1ef,_1f0){_1ef=del._normalizeEventName(_1ef);iel.remove(node,_1ef,_1f0);if(_1ef=="onkeypress"){var kd=node.onkeydown;if(--kd._stealthKeydownRefs<=0){iel.remove(node,"onkeydown",kd._stealthKeydownHandle);delete kd._stealthKeydownHandle;}}},_normalizeEventName:function(_1f2){return _1f2.slice(0,2)!="on"?"on"+_1f2:_1f2;},_nop:function(){},_fixEvent:function(evt,_1f4){if(!evt){var w=_1f4&&(_1f4.ownerDocument||_1f4.document||_1f4).parentWindow||window;evt=w.event;}if(!evt){return (evt);}evt.target=evt.srcElement;evt.currentTarget=(_1f4||evt.srcElement);evt.layerX=evt.offsetX;evt.layerY=evt.offsetY;var se=evt.srcElement,doc=(se&&se.ownerDocument)||document;var _1f8=((dojo.isIE<6)||(doc["compatMode"]=="BackCompat"))?doc.body:doc.documentElement;var _1f9=dojo._getIeDocumentElementOffset();evt.pageX=evt.clientX+dojo._fixIeBiDiScrollLeft(_1f8.scrollLeft||0)-_1f9.x;evt.pageY=evt.clientY+(_1f8.scrollTop||0)-_1f9.y;if(evt.type=="mouseover"){evt.relatedTarget=evt.fromElement;}if(evt.type=="mouseout"){evt.relatedTarget=evt.toElement;}evt.stopPropagation=del._stopPropagation;evt.preventDefault=del._preventDefault;return del._fixKeys(evt);},_fixKeys:function(evt){switch(evt.type){case "keypress":var c=("charCode" in evt?evt.charCode:evt.keyCode);if(c==10){c=0;evt.keyCode=13;}else{if(c==13||c==27){c=0;}else{if(c==3){c=99;}}}evt.charCode=c;del._setKeyChar(evt);break;}return evt;},_stealthKeyDown:function(evt){var kp=evt.currentTarget.onkeypress;if(!kp||!kp[_1dd]){return;}var k=evt.keyCode;var _1ff=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_1ff||evt.ctrlKey){var c=_1ff?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if((!evt.shiftKey)&&(c>=65&&c<=90)){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});kp.call(evt.currentTarget,faux);evt.cancelBubble=faux.cancelBubble;evt.returnValue=faux.returnValue;_1d9(evt,faux.keyCode);}},_stopPropagation:function(){this.cancelBubble=true;},_preventDefault:function(){this.bubbledKeyCode=this.keyCode;if(this.ctrlKey){_1d9(this,0);}this.returnValue=false;}});dojo.stopEvent=function(evt){evt=evt||window.event;del._stopPropagation.call(evt);del._preventDefault.call(evt);};}del._synthesizeEvent=function(evt,_204){var faux=dojo.mixin({},evt,_204);del._setKeyChar(faux);faux.preventDefault=function(){evt.preventDefault();};faux.stopPropagation=function(){evt.stopPropagation();};return faux;};if(dojo.isOpera){dojo.mixin(del,{_fixEvent:function(evt,_207){switch(evt.type){case "keypress":var c=evt.which;if(c==3){c=99;}c=c<41&&!evt.shiftKey?0:c;if(evt.ctrlKey&&!evt.shiftKey&&c>=65&&c<=90){c+=32;}return del._synthesizeEvent(evt,{charCode:c});}return evt;}});}if(dojo.isWebKit){del._add=del.add;del._remove=del.remove;dojo.mixin(del,{add:function(node,_20a,fp){if(!node){return;}var _20c=del._add(node,_20a,fp);if(del._normalizeEventName(_20a)=="keypress"){_20c._stealthKeyDownHandle=del._add(node,"keydown",function(evt){var k=evt.keyCode;var _20f=k!=13&&k!=32&&k!=27&&(k<48||k>90)&&(k<96||k>111)&&(k<186||k>192)&&(k<219||k>222);if(_20f||evt.ctrlKey){var c=_20f?0:k;if(evt.ctrlKey){if(k==3||k==13){return;}else{if(c>95&&c<106){c-=48;}else{if(!evt.shiftKey&&c>=65&&c<=90){c+=32;}else{c=del._punctMap[c]||c;}}}}var faux=del._synthesizeEvent(evt,{type:"keypress",faux:true,charCode:c});fp.call(evt.currentTarget,faux);}});}return _20c;},remove:function(node,_213,_214){if(node){if(_214._stealthKeyDownHandle){del._remove(node,"keydown",_214._stealthKeyDownHandle);}del._remove(node,_213,_214);}},_fixEvent:function(evt,_216){switch(evt.type){case "keypress":if(evt.faux){return evt;}var c=evt.charCode;c=c>=32?c:0;return del._synthesizeEvent(evt,{charCode:c,faux:true});}return evt;}});}})();if(dojo.isIE){dojo._ieDispatcher=function(args,_219){var ap=Array.prototype,h=dojo._ie_listener.handlers,c=args.callee,ls=c[dojo._ieListenersName],t=h[c.target];var r=t&&t.apply(_219,args);var lls=[].concat(ls);for(var i in lls){var f=h[lls[i]];if(!(i in ap)&&f){f.apply(_219,args);}}return r;};dojo._getIeDispatcher=function(){return new Function(dojo._scopeName+"._ieDispatcher(arguments, this)");};dojo._event_listener._fixCallback=function(fp){var f=dojo._event_listener._fixEvent;return function(e){return fp.call(this,f(e,this));};};}}if(!dojo._hasResource["dojo._base.html"]){dojo._hasResource["dojo._base.html"]=true;dojo.provide("dojo._base.html");try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}if(dojo.isIE||dojo.isOpera){dojo.byId=function(id,doc){if(dojo.isString(id)){var _d=doc||dojo.doc;var te=_d.getElementById(id);if(te&&(te.attributes.id.value==id||te.id==id)){return te;}else{var eles=_d.all[id];if(!eles||eles.nodeName){eles=[eles];}var i=0;while((te=eles[i++])){if((te.attributes&&te.attributes.id&&te.attributes.id.value==id)||te.id==id){return te;}}}}else{return id;}};}else{dojo.byId=function(id,doc){return dojo.isString(id)?(doc||dojo.doc).getElementById(id):id;};}(function(){var d=dojo;var _22f=null;d.addOnWindowUnload(function(){_22f=null;});dojo._destroyElement=dojo.destroy=function(node){node=d.byId(node);try{if(!_22f||_22f.ownerDocument!=node.ownerDocument){_22f=node.ownerDocument.createElement("div");}_22f.appendChild(node.parentNode?node.parentNode.removeChild(node):node);_22f.innerHTML="";}catch(e){}};dojo.isDescendant=function(node,_232){try{node=d.byId(node);_232=d.byId(_232);while(node){if(node===_232){return true;}node=node.parentNode;}}catch(e){}return false;};dojo.setSelectable=function(node,_234){node=d.byId(node);if(d.isMozilla){node.style.MozUserSelect=_234?"":"none";}else{if(d.isKhtml||d.isWebKit){node.style.KhtmlUserSelect=_234?"auto":"none";}else{if(d.isIE){var v=(node.unselectable=_234?"":"on");d.query("*",node).forEach("item.unselectable = '"+v+"'");}}}};var _236=function(node,ref){var _239=ref.parentNode;if(_239){_239.insertBefore(node,ref);}};var _23a=function(node,ref){var _23d=ref.parentNode;if(_23d){if(_23d.lastChild==ref){_23d.appendChild(node);}else{_23d.insertBefore(node,ref.nextSibling);}}};dojo.place=function(node,_23f,_240){_23f=d.byId(_23f);if(d.isString(node)){node=node.charAt(0)=="<"?d._toDom(node,_23f.ownerDocument):d.byId(node);}if(typeof _240=="number"){var cn=_23f.childNodes;if(!cn.length||cn.length<=_240){_23f.appendChild(node);}else{_236(node,cn[_240<0?0:_240]);}}else{switch(_240){case "before":_236(node,_23f);break;case "after":_23a(node,_23f);break;case "replace":_23f.parentNode.replaceChild(node,_23f);break;case "only":d.empty(_23f);_23f.appendChild(node);break;case "first":if(_23f.firstChild){_236(node,_23f.firstChild);break;}default:_23f.appendChild(node);}}return node;};dojo.boxModel="content-box";if(d.isIE){var _dcm=document.compatMode;d.boxModel=_dcm=="BackCompat"||_dcm=="QuirksMode"||d.isIE<6?"border-box":"content-box";}var gcs;if(d.isWebKit){gcs=function(node){var s;if(node instanceof HTMLElement){var dv=node.ownerDocument.defaultView;s=dv.getComputedStyle(node,null);if(!s&&node.style){node.style.display="";s=dv.getComputedStyle(node,null);}}return s||{};};}else{if(d.isIE){gcs=function(node){return node.nodeType==1?node.currentStyle:{};};}else{gcs=function(node){return node instanceof HTMLElement?node.ownerDocument.defaultView.getComputedStyle(node,null):{};};}}dojo.getComputedStyle=gcs;if(!d.isIE){d._toPixelValue=function(_249,_24a){return parseFloat(_24a)||0;};}else{d._toPixelValue=function(_24b,_24c){if(!_24c){return 0;}if(_24c=="medium"){return 4;}if(_24c.slice&&_24c.slice(-2)=="px"){return parseFloat(_24c);}with(_24b){var _24d=style.left;var _24e=runtimeStyle.left;runtimeStyle.left=currentStyle.left;try{style.left=_24c;_24c=style.pixelLeft;}catch(e){_24c=0;}style.left=_24d;runtimeStyle.left=_24e;}return _24c;};}var px=d._toPixelValue;var astr="DXImageTransform.Microsoft.Alpha";var af=function(n,f){try{return n.filters.item(astr);}catch(e){return f?{}:null;}};dojo._getOpacity=d.isIE?function(node){try{return af(node).Opacity/100;}catch(e){return 1;}}:function(node){return gcs(node).opacity;};dojo._setOpacity=d.isIE?function(node,_257){var ov=_257*100;node.style.zoom=1;af(node,1).Enabled=!(_257==1);if(!af(node)){node.style.filter+=" progid:"+astr+"(Opacity="+ov+")";}else{af(node,1).Opacity=ov;}if(node.nodeName.toLowerCase()=="tr"){d.query("> td",node).forEach(function(i){d._setOpacity(i,_257);});}return _257;}:function(node,_25b){return node.style.opacity=_25b;};var _25c={left:true,top:true};var _25d=/margin|padding|width|height|max|min|offset/;var _25e=function(node,type,_261){type=type.toLowerCase();if(d.isIE){if(_261=="auto"){if(type=="height"){return node.offsetHeight;}if(type=="width"){return node.offsetWidth;}}if(type=="fontweight"){switch(_261){case 700:return "bold";case 400:default:return "normal";}}}if(!(type in _25c)){_25c[type]=_25d.test(type);}return _25c[type]?px(node,_261):_261;};var _262=d.isIE?"styleFloat":"cssFloat",_263={"cssFloat":_262,"styleFloat":_262,"float":_262};dojo.style=function(node,_265,_266){var n=d.byId(node),args=arguments.length,op=(_265=="opacity");_265=_263[_265]||_265;if(args==3){return op?d._setOpacity(n,_266):n.style[_265]=_266;}if(args==2&&op){return d._getOpacity(n);}var s=gcs(n);if(args==2&&!d.isString(_265)){for(var x in _265){d.style(node,x,_265[x]);}return s;}return (args==1)?s:_25e(n,_265,s[_265]||n.style[_265]);};dojo._getPadExtents=function(n,_26d){var s=_26d||gcs(n),l=px(n,s.paddingLeft),t=px(n,s.paddingTop);return {l:l,t:t,w:l+px(n,s.paddingRight),h:t+px(n,s.paddingBottom)};};dojo._getBorderExtents=function(n,_272){var ne="none",s=_272||gcs(n),bl=(s.borderLeftStyle!=ne?px(n,s.borderLeftWidth):0),bt=(s.borderTopStyle!=ne?px(n,s.borderTopWidth):0);return {l:bl,t:bt,w:bl+(s.borderRightStyle!=ne?px(n,s.borderRightWidth):0),h:bt+(s.borderBottomStyle!=ne?px(n,s.borderBottomWidth):0)};};dojo._getPadBorderExtents=function(n,_278){var s=_278||gcs(n),p=d._getPadExtents(n,s),b=d._getBorderExtents(n,s);return {l:p.l+b.l,t:p.t+b.t,w:p.w+b.w,h:p.h+b.h};};dojo._getMarginExtents=function(n,_27d){var s=_27d||gcs(n),l=px(n,s.marginLeft),t=px(n,s.marginTop),r=px(n,s.marginRight),b=px(n,s.marginBottom);if(d.isWebKit&&(s.position!="absolute")){r=l;}return {l:l,t:t,w:l+r,h:t+b};};dojo._getMarginBox=function(node,_284){var s=_284||gcs(node),me=d._getMarginExtents(node,s);var l=node.offsetLeft-me.l,t=node.offsetTop-me.t,p=node.parentNode;if(d.isMoz){var sl=parseFloat(s.left),st=parseFloat(s.top);if(!isNaN(sl)&&!isNaN(st)){l=sl,t=st;}else{if(p&&p.style){var pcs=gcs(p);if(pcs.overflow!="visible"){var be=d._getBorderExtents(p,pcs);l+=be.l,t+=be.t;}}}}else{if(d.isOpera||(d.isIE>7&&!d.isQuirks)){if(p){be=d._getBorderExtents(p);l-=be.l;t-=be.t;}}}return {l:l,t:t,w:node.offsetWidth+me.w,h:node.offsetHeight+me.h};};dojo._getContentBox=function(node,_28f){var s=_28f||gcs(node),pe=d._getPadExtents(node,s),be=d._getBorderExtents(node,s),w=node.clientWidth,h;if(!w){w=node.offsetWidth,h=node.offsetHeight;}else{h=node.clientHeight,be.w=be.h=0;}if(d.isOpera){pe.l+=be.l;pe.t+=be.t;}return {l:pe.l,t:pe.t,w:w-pe.w-be.w,h:h-pe.h-be.h};};dojo._getBorderBox=function(node,_296){var s=_296||gcs(node),pe=d._getPadExtents(node,s),cb=d._getContentBox(node,s);return {l:cb.l-pe.l,t:cb.t-pe.t,w:cb.w+pe.w,h:cb.h+pe.h};};dojo._setBox=function(node,l,t,w,h,u){u=u||"px";var s=node.style;if(!isNaN(l)){s.left=l+u;}if(!isNaN(t)){s.top=t+u;}if(w>=0){s.width=w+u;}if(h>=0){s.height=h+u;}};dojo._isButtonTag=function(node){return node.tagName=="BUTTON"||node.tagName=="INPUT"&&node.getAttribute("type").toUpperCase()=="BUTTON";};dojo._usesBorderBox=function(node){var n=node.tagName;return d.boxModel=="border-box"||n=="TABLE"||d._isButtonTag(node);};dojo._setContentSize=function(node,_2a5,_2a6,_2a7){if(d._usesBorderBox(node)){var pb=d._getPadBorderExtents(node,_2a7);if(_2a5>=0){_2a5+=pb.w;}if(_2a6>=0){_2a6+=pb.h;}}d._setBox(node,NaN,NaN,_2a5,_2a6);};dojo._setMarginBox=function(node,_2aa,_2ab,_2ac,_2ad,_2ae){var s=_2ae||gcs(node),bb=d._usesBorderBox(node),pb=bb?_2b2:d._getPadBorderExtents(node,s);if(d.isWebKit){if(d._isButtonTag(node)){var ns=node.style;if(_2ac>=0&&!ns.width){ns.width="4px";}if(_2ad>=0&&!ns.height){ns.height="4px";}}}var mb=d._getMarginExtents(node,s);if(_2ac>=0){_2ac=Math.max(_2ac-pb.w-mb.w,0);}if(_2ad>=0){_2ad=Math.max(_2ad-pb.h-mb.h,0);}d._setBox(node,_2aa,_2ab,_2ac,_2ad);};var _2b2={l:0,t:0,w:0,h:0};dojo.marginBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getMarginBox(n,s):d._setMarginBox(n,b.l,b.t,b.w,b.h,s);};dojo.contentBox=function(node,box){var n=d.byId(node),s=gcs(n),b=box;return !b?d._getContentBox(n,s):d._setContentSize(n,b.w,b.h,s);};var _2bf=function(node,prop){if(!(node=(node||0).parentNode)){return 0;}var val,_2c3=0,_b=d.body();while(node&&node.style){if(gcs(node).position=="fixed"){return 0;}val=node[prop];if(val){_2c3+=val-0;if(node==_b){break;}}node=node.parentNode;}return _2c3;};dojo._docScroll=function(){var _b=d.body(),_w=d.global,de=d.doc.documentElement;return {y:(_w.pageYOffset||de.scrollTop||_b.scrollTop||0),x:(_w.pageXOffset||d._fixIeBiDiScrollLeft(de.scrollLeft)||_b.scrollLeft||0)};};dojo._isBodyLtr=function(){return ("_bodyLtr" in d)?d._bodyLtr:d._bodyLtr=gcs(d.body()).direction=="ltr";};dojo._getIeDocumentElementOffset=function(){var de=d.doc.documentElement;if(d.isIE<7){return {x:d._isBodyLtr()||window.parent==window?de.clientLeft:de.offsetWidth-de.clientWidth-de.clientLeft,y:de.clientTop};}else{if(d.isIE<8){return {x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top};}else{return {x:0,y:0};}}};dojo._fixIeBiDiScrollLeft=function(_2c9){var dd=d.doc;if(d.isIE<8&&!d._isBodyLtr()){var de=dd.compatMode=="BackCompat"?dd.body:dd.documentElement;return _2c9+de.clientWidth-de.scrollWidth;}return _2c9;};dojo._abs=function(node,_2cd){var db=d.body(),dh=d.body().parentNode,ret;if(node["getBoundingClientRect"]){var _2d1=node.getBoundingClientRect();ret={x:_2d1.left,y:_2d1.top};if(d.isFF>=3){var cs=gcs(dh);ret.x-=px(dh,cs.marginLeft)+px(dh,cs.borderLeftWidth);ret.y-=px(dh,cs.marginTop)+px(dh,cs.borderTopWidth);}if(d.isIE){var _2d3=d._getIeDocumentElementOffset();ret.x-=_2d3.x+(d.isQuirks?db.clientLeft:0);ret.y-=_2d3.y+(d.isQuirks?db.clientTop:0);}}else{ret={x:0,y:0};if(node["offsetParent"]){ret.x-=_2bf(node,"scrollLeft");ret.y-=_2bf(node,"scrollTop");var _2d4=node;do{var n=_2d4.offsetLeft,t=_2d4.offsetTop;ret.x+=isNaN(n)?0:n;ret.y+=isNaN(t)?0:t;cs=gcs(_2d4);if(_2d4!=node){if(d.isFF){ret.x+=2*px(_2d4,cs.borderLeftWidth);ret.y+=2*px(_2d4,cs.borderTopWidth);}else{ret.x+=px(_2d4,cs.borderLeftWidth);ret.y+=px(_2d4,cs.borderTopWidth);}}if(d.isFF&&cs.position=="static"){var _2d7=_2d4.parentNode;while(_2d7!=_2d4.offsetParent){var pcs=gcs(_2d7);if(pcs.position=="static"){ret.x+=px(_2d4,pcs.borderLeftWidth);ret.y+=px(_2d4,pcs.borderTopWidth);}_2d7=_2d7.parentNode;}}_2d4=_2d4.offsetParent;}while((_2d4!=dh)&&_2d4);}else{if(node.x&&node.y){ret.x+=isNaN(node.x)?0:node.x;ret.y+=isNaN(node.y)?0:node.y;}}}if(_2cd){var _2d9=d._docScroll();ret.x+=_2d9.x;ret.y+=_2d9.y;}return ret;};dojo.coords=function(node,_2db){var n=d.byId(node),s=gcs(n),mb=d._getMarginBox(n,s);var abs=d._abs(n,_2db);mb.x=abs.x;mb.y=abs.y;return mb;};var _2e0=d.isIE<8;var _2e1=function(name){switch(name.toLowerCase()){case "tabindex":return _2e0?"tabIndex":"tabindex";case "readonly":return "readOnly";case "class":return "className";case "for":case "htmlfor":return _2e0?"htmlFor":"for";default:return name;}};var _2e3={colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType",classname:"className",innerhtml:"innerHTML"};dojo.hasAttr=function(node,name){node=d.byId(node);var _2e6=_2e1(name);_2e6=_2e6=="htmlFor"?"for":_2e6;var attr=node.getAttributeNode&&node.getAttributeNode(_2e6);return attr?attr.specified:false;};var _2e8={},_ctr=0,_2ea=dojo._scopeName+"attrid",_2eb={col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};dojo.attr=function(node,name,_2ee){node=d.byId(node);var args=arguments.length;if(args==2&&!d.isString(name)){for(var x in name){d.attr(node,x,name[x]);}return;}name=_2e1(name);if(args==3){if(d.isFunction(_2ee)){var _2f1=d.attr(node,_2ea);if(!_2f1){_2f1=_ctr++;d.attr(node,_2ea,_2f1);}if(!_2e8[_2f1]){_2e8[_2f1]={};}var h=_2e8[_2f1][name];if(h){d.disconnect(h);}else{try{delete node[name];}catch(e){}}_2e8[_2f1][name]=d.connect(node,name,_2ee);}else{if(typeof _2ee=="boolean"){node[name]=_2ee;}else{if(name==="style"&&!d.isString(_2ee)){d.style(node,_2ee);}else{if(name=="className"){node.className=_2ee;}else{if(name==="innerHTML"){if(d.isIE&&node.tagName.toLowerCase() in _2eb){d.empty(node);node.appendChild(d._toDom(_2ee,node.ownerDocument));}else{node[name]=_2ee;}}else{node.setAttribute(name,_2ee);}}}}}}else{var prop=_2e3[name.toLowerCase()];if(prop){return node[prop];}var _2f4=node[name];return (typeof _2f4=="boolean"||typeof _2f4=="function")?_2f4:(d.hasAttr(node,name)?node.getAttribute(name):null);}};dojo.removeAttr=function(node,name){d.byId(node).removeAttribute(_2e1(name));};dojo.create=function(tag,_2f8,_2f9,pos){var doc=d.doc;if(_2f9){_2f9=d.byId(_2f9);doc=_2f9.ownerDocument;}if(d.isString(tag)){tag=doc.createElement(tag);}if(_2f8){d.attr(tag,_2f8);}if(_2f9){d.place(tag,_2f9,pos);}return tag;};d.empty=d.isIE?function(node){node=d.byId(node);for(var c;c=node.lastChild;){d.destroy(c);}}:function(node){d.byId(node).innerHTML="";};var _2ff={option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_300=/<\s*([\w\:]+)/,_301={},_302=0,_303="__"+d._scopeName+"ToDomId";for(var _304 in _2ff){var tw=_2ff[_304];tw.pre=_304=="option"?"<select multiple=\"multiple\">":"<"+tw.join("><")+">";tw.post="</"+tw.reverse().join("></")+">";}d._toDom=function(frag,doc){doc=doc||d.doc;var _308=doc[_303];if(!_308){doc[_303]=_308=++_302+"";_301[_308]=doc.createElement("div");}frag+="";var _309=frag.match(_300),tag=_309?_309[1].toLowerCase():"",_30b=_301[_308],wrap,i,fc,df;if(_309&&_2ff[tag]){wrap=_2ff[tag];_30b.innerHTML=wrap.pre+frag+wrap.post;for(i=wrap.length;i;--i){_30b=_30b.firstChild;}}else{_30b.innerHTML=frag;}if(_30b.childNodes.length==1){return _30b.removeChild(_30b.firstChild);}df=doc.createDocumentFragment();while(fc=_30b.firstChild){df.appendChild(fc);}return df;};var _30f="className";dojo.hasClass=function(node,_311){return ((" "+d.byId(node)[_30f]+" ").indexOf(" "+_311+" ")>=0);};dojo.addClass=function(node,_313){node=d.byId(node);var cls=node[_30f];if((" "+cls+" ").indexOf(" "+_313+" ")<0){node[_30f]=cls+(cls?" ":"")+_313;}};dojo.removeClass=function(node,_316){node=d.byId(node);var t=d.trim((" "+node[_30f]+" ").replace(" "+_316+" "," "));if(node[_30f]!=t){node[_30f]=t;}};dojo.toggleClass=function(node,_319,_31a){if(_31a===undefined){_31a=!d.hasClass(node,_319);}d[_31a?"addClass":"removeClass"](node,_319);};})();}if(!dojo._hasResource["dojo._base.NodeList"]){dojo._hasResource["dojo._base.NodeList"]=true;dojo.provide("dojo._base.NodeList");(function(){var d=dojo;var ap=Array.prototype,aps=ap.slice,apc=ap.concat;var tnl=function(a){a.constructor=d.NodeList;dojo._mixin(a,d.NodeList.prototype);return a;};var _321=function(f,a,o){a=[0].concat(aps.call(a,0));o=o||d.global;return function(node){a[0]=node;return f.apply(o,a);};};var _326=function(f,o){return function(){this.forEach(_321(f,arguments,o));return this;};};var _329=function(f,o){return function(){return this.map(_321(f,arguments,o));};};var _32c=function(f,o){return function(){return this.filter(_321(f,arguments,o));};};var _32f=function(f,g,o){return function(){var a=arguments,body=_321(f,a,o);if(g.call(o||d.global,a)){return this.map(body);}this.forEach(body);return this;};};var _335=function(a){return a.length==1&&d.isString(a[0]);};var _337=function(node){var p=node.parentNode;if(p){p.removeChild(node);}};dojo.NodeList=function(){return tnl(Array.apply(null,arguments));};var nl=d.NodeList,nlp=nl.prototype;nl._wrap=tnl;nl._adaptAsMap=_329;nl._adaptAsForEach=_326;nl._adaptAsFilter=_32c;nl._adaptWithCondition=_32f;d.forEach(["slice","splice"],function(name){var f=ap[name];nlp[name]=function(){return tnl(f.apply(this,arguments));};});d.forEach(["indexOf","lastIndexOf","every","some"],function(name){var f=d[name];nlp[name]=function(){return f.apply(d,[this].concat(aps.call(arguments,0)));};});d.forEach(["attr","style"],function(name){nlp[name]=_32f(d[name],_335);});d.forEach(["connect","addClass","removeClass","toggleClass","empty"],function(name){nlp[name]=_326(d[name]);});dojo.extend(dojo.NodeList,{concat:function(item){var t=d.isArray(this)?this:aps.call(this,0),m=d.map(arguments,function(a){return a&&!d.isArray(a)&&(a.constructor===NodeList||a.constructor==nl)?aps.call(a,0):a;});return tnl(apc.apply(t,m));},map:function(func,obj){return tnl(d.map(this,func,obj));},forEach:function(_348,_349){d.forEach(this,_348,_349);return this;},coords:_329(d.coords),place:function(_34a,_34b){var item=d.query(_34a)[0];return this.forEach(function(node){d.place(node,item,_34b);});},orphan:function(_34e){return (_34e?d._filterQueryResult(this,_34e):this).forEach(_337);},adopt:function(_34f,_350){return d.query(_34f).place(item[0],_350);},query:function(_351){if(!_351){return this;}var ret=this.map(function(node){return d.query(_351,node).filter(function(_354){return _354!==undefined;});});return tnl(apc.apply([],ret));},filter:function(_355){var a=arguments,_357=this,_358=0;if(d.isString(_355)){_357=d._filterQueryResult(this,a[0]);if(a.length==1){return _357;}_358=1;}return tnl(d.filter(_357,a[_358],a[_358+1]));},addContent:function(_359,_35a){var c=d.isString(_359)?d._toDom(_359,this[0]&&this[0].ownerDocument):_359,i,l=this.length-1;for(i=0;i<l;++i){d.place(c.cloneNode(true),this[i],_35a);}if(l>=0){d.place(c,this[l],_35a);}return this;},instantiate:function(_35d,_35e){var c=d.isFunction(_35d)?_35d:d.getObject(_35d);_35e=_35e||{};return this.forEach(function(node){new c(_35e,node);});},at:function(){var t=new dojo.NodeList();d.forEach(arguments,function(i){if(this[i]){t.push(this[i]);}},this);return t;}});d.forEach(["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"],function(evt){var _oe="on"+evt;nlp[_oe]=function(a,b){return this.connect(_oe,a,b);};});})();}if(!dojo._hasResource["dojo._base.query"]){dojo._hasResource["dojo._base.query"]=true;if(typeof dojo!="undefined"){dojo.provide("dojo._base.query");}(function(d){var trim=d.trim;var each=d.forEach;var qlc=d._queryListCtor=d.NodeList;var _36b=d.isString;var _36c=function(){return d.doc;};var _36d=(d.isWebKit&&((_36c().compatMode)=="BackCompat"));var _36e=!!_36c().firstChild["children"]?"children":"childNodes";var _36f=">~+";var _370=false;var _371=function(){return true;};var _372=function(_373){if(_36f.indexOf(_373.slice(-1))>=0){_373+=" * ";}else{_373+=" ";}var ts=function(s,e){return trim(_373.slice(s,e));};var _377=[];var _378=-1,_379=-1,_37a=-1,_37b=-1,_37c=-1,inId=-1,_37e=-1,lc="",cc="",_381;var x=0,ql=_373.length,_384=null,_cp=null;var _386=function(){if(_37e>=0){var tv=(_37e==x)?null:ts(_37e,x);_384[(_36f.indexOf(tv)<0)?"tag":"oper"]=tv;_37e=-1;}};var _388=function(){if(inId>=0){_384.id=ts(inId,x).replace(/\\/g,"");inId=-1;}};var _389=function(){if(_37c>=0){_384.classes.push(ts(_37c+1,x).replace(/\\/g,""));_37c=-1;}};var _38a=function(){_388();_386();_389();};var _38b=function(){_38a();if(_37b>=0){_384.pseudos.push({name:ts(_37b+1,x)});}_384.loops=(_384.pseudos.length||_384.attrs.length||_384.classes.length);_384.oquery=_384.query=ts(_381,x);_384.otag=_384.tag=(_384["oper"])?null:(_384.tag||"*");if(_384.tag){_384.tag=_384.tag.toUpperCase();}if(_377.length&&(_377[_377.length-1].oper)){_384.infixOper=_377.pop();_384.query=_384.infixOper.query+" "+_384.query;}_377.push(_384);_384=null;};for(;lc=cc,cc=_373.charAt(x),x<ql;x++){if(lc=="\\"){continue;}if(!_384){_381=x;_384={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){return (_370)?this.otag:this.tag;}};_37e=x;}if(_378>=0){if(cc=="]"){if(!_cp.attr){_cp.attr=ts(_378+1,x);}else{_cp.matchFor=ts((_37a||_378+1),x);}var cmf=_cp.matchFor;if(cmf){if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){_cp.matchFor=cmf.slice(1,-1);}}_384.attrs.push(_cp);_cp=null;_378=_37a=-1;}else{if(cc=="="){var _38d=("|~^$*".indexOf(lc)>=0)?lc:"";_cp.type=_38d+cc;_cp.attr=ts(_378+1,x-_38d.length);_37a=x+1;}}}else{if(_379>=0){if(cc==")"){if(_37b>=0){_cp.value=ts(_379+1,x);}_37b=_379=-1;}}else{if(cc=="#"){_38a();inId=x+1;}else{if(cc=="."){_38a();_37c=x;}else{if(cc==":"){_38a();_37b=x;}else{if(cc=="["){_38a();_378=x;_cp={};}else{if(cc=="("){if(_37b>=0){_cp={name:ts(_37b+1,x),value:null};_384.pseudos.push(_cp);}_379=x;}else{if((cc==" ")&&(lc!=cc)){_38b();}}}}}}}}}return _377;};var _38e=function(_38f,_390){if(!_38f){return _390;}if(!_390){return _38f;}return function(){return _38f.apply(window,arguments)&&_390.apply(window,arguments);};};var _391=function(i,arr){var r=arr||[];if(i){r.push(i);}return r;};var _395=function(n){return (1==n.nodeType);};var _397="";var _398=function(elem,attr){if(!elem){return _397;}if(attr=="class"){return elem.className||_397;}if(attr=="for"){return elem.htmlFor||_397;}if(attr=="style"){return elem.style.cssText||_397;}return (_370?elem.getAttribute(attr):elem.getAttribute(attr,2))||_397;};var _39b={"*=":function(attr,_39d){return function(elem){return (_398(elem,attr).indexOf(_39d)>=0);};},"^=":function(attr,_3a0){return function(elem){return (_398(elem,attr).indexOf(_3a0)==0);};},"$=":function(attr,_3a3){var tval=" "+_3a3;return function(elem){var ea=" "+_398(elem,attr);return (ea.lastIndexOf(_3a3)==(ea.length-_3a3.length));};},"~=":function(attr,_3a8){var tval=" "+_3a8+" ";return function(elem){var ea=" "+_398(elem,attr)+" ";return (ea.indexOf(tval)>=0);};},"|=":function(attr,_3ad){var _3ae=" "+_3ad+"-";return function(elem){var ea=" "+_398(elem,attr);return ((ea==_3ad)||(ea.indexOf(_3ae)==0));};},"=":function(attr,_3b2){return function(elem){return (_398(elem,attr)==_3b2);};}};var _3b4=(typeof _36c().firstChild.nextElementSibling=="undefined");var _ns=!_3b4?"nextElementSibling":"nextSibling";var _ps=!_3b4?"previousElementSibling":"previousSibling";var _3b7=(_3b4?_395:_371);var _3b8=function(node){while(node=node[_ps]){if(_3b7(node)){return false;}}return true;};var _3ba=function(node){while(node=node[_ns]){if(_3b7(node)){return false;}}return true;};var _3bc=function(node){var root=node.parentNode;var i=0,tret=root[_36e],ci=(node["_i"]||-1),cl=(root["_l"]||-1);if(!tret){return -1;}var l=tret.length;if(cl==l&&ci>=0&&cl>=0){return ci;}root["_l"]=l;ci=-1;for(var te=root["firstElementChild"]||root["firstChild"];te;te=te[_ns]){if(_3b7(te)){te["_i"]=++i;if(node===te){ci=i;}}}return ci;};var _3c5=function(elem){return !((_3bc(elem))%2);};var _3c7=function(elem){return ((_3bc(elem))%2);};var _3c9={"checked":function(name,_3cb){return function(elem){return !!d.attr(elem,"checked");};},"first-child":function(){return _3b8;},"last-child":function(){return _3ba;},"only-child":function(name,_3ce){return function(node){if(!_3b8(node)){return false;}if(!_3ba(node)){return false;}return true;};},"empty":function(name,_3d1){return function(elem){var cn=elem.childNodes;var cnl=elem.childNodes.length;for(var x=cnl-1;x>=0;x--){var nt=cn[x].nodeType;if((nt===1)||(nt==3)){return false;}}return true;};},"contains":function(name,_3d8){var cz=_3d8.charAt(0);if(cz=="\""||cz=="'"){_3d8=_3d8.slice(1,-1);}return function(elem){return (elem.innerHTML.indexOf(_3d8)>=0);};},"not":function(name,_3dc){var p=_372(_3dc)[0];var _3de={el:1};if(p.tag!="*"){_3de.tag=1;}if(!p.classes.length){_3de.classes=1;}var ntf=_3e0(p,_3de);return function(elem){return (!ntf(elem));};},"nth-child":function(name,_3e3){var pi=parseInt;if(_3e3=="odd"){return _3c7;}else{if(_3e3=="even"){return _3c5;}}if(_3e3.indexOf("n")!=-1){var _3e5=_3e3.split("n",2);var pred=_3e5[0]?((_3e5[0]=="-")?-1:pi(_3e5[0])):1;var idx=_3e5[1]?pi(_3e5[1]):0;var lb=0,ub=-1;if(pred>0){if(idx<0){idx=(idx%pred)&&(pred+(idx%pred));}else{if(idx>0){if(idx>=pred){lb=idx-idx%pred;}idx=idx%pred;}}}else{if(pred<0){pred*=-1;if(idx>0){ub=idx;idx=idx%pred;}}}if(pred>0){return function(elem){var i=_3bc(elem);return (i>=lb)&&(ub<0||i<=ub)&&((i%pred)==idx);};}else{_3e3=idx;}}var _3ec=pi(_3e3);return function(elem){return (_3bc(elem)==_3ec);};}};var _3ee=(d.isIE)?function(cond){var clc=cond.toLowerCase();if(clc=="class"){cond="className";}return function(elem){return (_370?elem.getAttribute(cond):elem[cond]||elem[clc]);};}:function(cond){return function(elem){return (elem&&elem.getAttribute&&elem.hasAttribute(cond));};};var _3e0=function(_3f4,_3f5){if(!_3f4){return _371;}_3f5=_3f5||{};var ff=null;if(!("el" in _3f5)){ff=_38e(ff,_395);}if(!("tag" in _3f5)){if(_3f4.tag!="*"){ff=_38e(ff,function(elem){return (elem&&(elem.tagName==_3f4.getTag()));});}}if(!("classes" in _3f5)){each(_3f4.classes,function(_3f8,idx,arr){var re=new RegExp("(?:^|\\s)"+_3f8+"(?:\\s|$)");ff=_38e(ff,function(elem){return re.test(elem.className);});ff.count=idx;});}if(!("pseudos" in _3f5)){each(_3f4.pseudos,function(_3fd){var pn=_3fd.name;if(_3c9[pn]){ff=_38e(ff,_3c9[pn](pn,_3fd.value));}});}if(!("attrs" in _3f5)){each(_3f4.attrs,function(attr){var _400;var a=attr.attr;if(attr.type&&_39b[attr.type]){_400=_39b[attr.type](a,attr.matchFor);}else{if(a.length){_400=_3ee(a);}}if(_400){ff=_38e(ff,_400);}});}if(!("id" in _3f5)){if(_3f4.id){ff=_38e(ff,function(elem){return (!!elem&&(elem.id==_3f4.id));});}}if(!ff){if(!("default" in _3f5)){ff=_371;}}return ff;};var _403=function(_404){return function(node,ret,bag){while(node=node[_ns]){if(_3b4&&(!_395(node))){continue;}if((!bag||_408(node,bag))&&_404(node)){ret.push(node);}break;}return ret;};};var _409=function(_40a){return function(root,ret,bag){var te=root[_ns];while(te){if(_3b7(te)){if(bag&&!_408(te,bag)){break;}if(_40a(te)){ret.push(te);}}te=te[_ns];}return ret;};};var _40f=function(_410){_410=_410||_371;return function(root,ret,bag){var te,x=0,tret=root[_36e];while(te=tret[x++]){if(_3b7(te)&&(!bag||_408(te,bag))&&(_410(te,x))){ret.push(te);}}return ret;};};var _417=function(node,root){var pn=node.parentNode;while(pn){if(pn==root){break;}pn=pn.parentNode;}return !!pn;};var _41b={};var _41c=function(_41d){var _41e=_41b[_41d.query];if(_41e){return _41e;}var io=_41d.infixOper;var oper=(io?io.oper:"");var _421=_3e0(_41d,{el:1});var qt=_41d.tag;var _423=("*"==qt);var ecs=_36c()["getElementsByClassName"];if(!oper){if(_41d.id){_421=(!_41d.loops&&_423)?_371:_3e0(_41d,{el:1,id:1});_41e=function(root,arr){var te=d.byId(_41d.id,(root.ownerDocument||root));if(!te||!_421(te)){return;}if(9==root.nodeType){return _391(te,arr);}else{if(_417(te,root)){return _391(te,arr);}}};}else{if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_41d.classes.length&&!_36d){_421=_3e0(_41d,{el:1,classes:1,id:1});var _428=_41d.classes.join(" ");_41e=function(root,arr,bag){var ret=_391(0,arr),te,x=0;var tret=root.getElementsByClassName(_428);while((te=tret[x++])){if(_421(te,root)&&_408(te,bag)){ret.push(te);}}return ret;};}else{if(!_423&&!_41d.loops){_41e=function(root,arr,bag){var ret=_391(0,arr),te,x=0;var tret=root.getElementsByTagName(_41d.getTag());while((te=tret[x++])){if(_408(te,bag)){ret.push(te);}}return ret;};}else{_421=_3e0(_41d,{el:1,tag:1,id:1});_41e=function(root,arr,bag){var ret=_391(0,arr),te,x=0;var tret=root.getElementsByTagName(_41d.getTag());while((te=tret[x++])){if(_421(te,root)&&_408(te,bag)){ret.push(te);}}return ret;};}}}}else{var _43e={el:1};if(_423){_43e.tag=1;}_421=_3e0(_41d,_43e);if("+"==oper){_41e=_403(_421);}else{if("~"==oper){_41e=_409(_421);}else{if(">"==oper){_41e=_40f(_421);}}}}return _41b[_41d.query]=_41e;};var _43f=function(root,_441){var _442=_391(root),qp,x,te,qpl=_441.length,bag,ret;for(var i=0;i<qpl;i++){ret=[];qp=_441[i];x=_442.length-1;if(x>0){bag={};ret.nozip=true;}var gef=_41c(qp);while(te=_442[x--]){gef(te,ret,bag);}if(!ret.length){break;}_442=ret;}return ret;};var _44b={},_44c={};var _44d=function(_44e){var _44f=_372(trim(_44e));if(_44f.length==1){var tef=_41c(_44f[0]);return function(root){var r=tef(root,new qlc());if(r){r.nozip=true;}return r;};}return function(root){return _43f(root,_44f);};};var nua=navigator.userAgent;var wk="WebKit/";var _456=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));var _457=d.isIE?"commentStrip":"nozip";var qsa="querySelectorAll";var _459=(!!_36c()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_456));var _45a=function(_45b,_45c){if(_459){var _45d=_44c[_45b];if(_45d&&!_45c){return _45d;}}var _45e=_44b[_45b];if(_45e){return _45e;}var qcz=_45b.charAt(0);var _460=(-1==_45b.indexOf(" "));if((_45b.indexOf("#")>=0)&&(_460)){_45c=true;}var _461=(_459&&(!_45c)&&(_36f.indexOf(qcz)==-1)&&(!d.isIE||(_45b.indexOf(":")==-1))&&(!(_36d&&(_45b.indexOf(".")>=0)))&&(_45b.indexOf(":contains")==-1)&&(_45b.indexOf("|=")==-1));if(_461){var tq=(_36f.indexOf(_45b.charAt(_45b.length-1))>=0)?(_45b+" *"):_45b;return _44c[_45b]=function(root){try{if(!((9==root.nodeType)||_460)){throw "";}var r=root[qsa](tq);r[_457]=true;return r;}catch(e){return _45a(_45b,true)(root);}};}else{var _465=_45b.split(/\s*,\s*/);return _44b[_45b]=((_465.length<2)?_44d(_45b):function(root){var _467=0,ret=[],tp;while((tp=_465[_467++])){ret=ret.concat(_44d(tp)(root));}return ret;});}};var _46a=0;var _46b=d.isIE?function(node){if(_370){return (node.getAttribute("_uid")||node.setAttribute("_uid",++_46a)||_46a);}else{return node.uniqueID;}}:function(node){return (node._uid||(node._uid=++_46a));};var _408=function(node,bag){if(!bag){return 1;}var id=_46b(node);if(!bag[id]){return bag[id]=1;}return 0;};var _471="_zipIdx";var _zip=function(arr){if(arr&&arr.nozip){return (qlc._wrap)?qlc._wrap(arr):arr;}var ret=new qlc();if(!arr||!arr.length){return ret;}if(arr[0]){ret.push(arr[0]);}if(arr.length<2){return ret;}_46a++;if(d.isIE&&_370){var _475=_46a+"";arr[0].setAttribute(_471,_475);for(var x=1,te;te=arr[x];x++){if(arr[x].getAttribute(_471)!=_475){ret.push(te);}te.setAttribute(_471,_475);}}else{if(d.isIE&&arr.commentStrip){try{for(var x=1,te;te=arr[x];x++){if(_395(te)){ret.push(te);}}}catch(e){}}else{if(arr[0]){arr[0][_471]=_46a;}for(var x=1,te;te=arr[x];x++){if(arr[x][_471]!=_46a){ret.push(te);}te[_471]=_46a;}}}return ret;};d.query=function(_478,root){qlc=d._queryListCtor;if(!_478){return new qlc();}if(_478.constructor==qlc){return _478;}if(!_36b(_478)){return new qlc(_478);}if(_36b(root)){root=d.byId(root);if(!root){return new qlc();}}root=root||_36c();var od=root.ownerDocument||root.documentElement;_370=(root.contentType&&root.contentType=="application/xml")||(d.isOpera&&(root.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(root.xmlVersion||od.xmlVersion));var r=_45a(_478)(root);if(r&&r.nozip&&!qlc._wrap){return r;}return _zip(r);};d.query.pseudos=_3c9;d._filterQueryResult=function(_47c,_47d){var _47e=new d._queryListCtor();var _47f=_3e0(_372(_47d)[0]);for(var x=0,te;te=_47c[x];x++){if(_47f(te)){_47e.push(te);}}return _47e;};})(this["queryPortability"]||this["acme"]||dojo);}if(!dojo._hasResource["dojo._base.xhr"]){dojo._hasResource["dojo._base.xhr"]=true;dojo.provide("dojo._base.xhr");(function(){var _d=dojo;function _483(obj,name,_486){var val=obj[name];if(_d.isString(val)){obj[name]=[val,_486];}else{if(_d.isArray(val)){val.push(_486);}else{obj[name]=_486;}}};dojo.formToObject=function(_488){var ret={};var _48a="file|submit|image|reset|button|";_d.forEach(dojo.byId(_488).elements,function(item){var _in=item.name;var type=(item.type||"").toLowerCase();if(_in&&type&&_48a.indexOf(type)==-1&&!item.disabled){if(type=="radio"||type=="checkbox"){if(item.checked){_483(ret,_in,item.value);}}else{if(item.multiple){ret[_in]=[];_d.query("option",item).forEach(function(opt){if(opt.selected){_483(ret,_in,opt.value);}});}else{_483(ret,_in,item.value);if(type=="image"){ret[_in+".x"]=ret[_in+".y"]=ret[_in].x=ret[_in].y=0;}}}}});return ret;};dojo.objectToQuery=function(map){var enc=encodeURIComponent;var _491=[];var _492={};for(var name in map){var _494=map[name];if(_494!=_492[name]){var _495=enc(name)+"=";if(_d.isArray(_494)){for(var i=0;i<_494.length;i++){_491.push(_495+enc(_494[i]));}}else{_491.push(_495+enc(_494));}}}return _491.join("&");};dojo.formToQuery=function(_497){return _d.objectToQuery(_d.formToObject(_497));};dojo.formToJson=function(_498,_499){return _d.toJson(_d.formToObject(_498),_499);};dojo.queryToObject=function(str){var ret={};var qp=str.split("&");var dec=decodeURIComponent;_d.forEach(qp,function(item){if(item.length){var _49f=item.split("=");var name=dec(_49f.shift());var val=dec(_49f.join("="));if(_d.isString(ret[name])){ret[name]=[ret[name]];}if(_d.isArray(ret[name])){ret[name].push(val);}else{ret[name]=val;}}});return ret;};dojo._blockAsync=false;dojo._contentHandlers={text:function(xhr){return xhr.responseText;},json:function(xhr){return _d.fromJson(xhr.responseText||null);},"json-comment-filtered":function(xhr){if(!dojo.config.useCommentedJson){console.warn("Consider using the standard mimetype:application/json."+" json-commenting can introduce security issues. To"+" decrease the chances of hijacking, use the standard the 'json' handler and"+" prefix your json with: {}&&\n"+"Use djConfig.useCommentedJson=true to turn off this message.");}var _4a5=xhr.responseText;var _4a6=_4a5.indexOf("/*");var _4a7=_4a5.lastIndexOf("*/");if(_4a6==-1||_4a7==-1){throw new Error("JSON was not comment filtered");}return _d.fromJson(_4a5.substring(_4a6+2,_4a7));},javascript:function(xhr){return _d.eval(xhr.responseText);},xml:function(xhr){var _4aa=xhr.responseXML;if(_d.isIE&&(!_4aa||!_4aa.documentElement)){var ms=function(n){return "MSXML"+n+".DOMDocument";};var dp=["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];_d.some(dp,function(p){try{var dom=new ActiveXObject(p);dom.async=false;dom.loadXML(xhr.responseText);_4aa=dom;}catch(e){return false;}return true;});}return _4aa;}};dojo._contentHandlers["json-comment-optional"]=function(xhr){var _4b1=_d._contentHandlers;if(xhr.responseText&&xhr.responseText.indexOf("/*")!=-1){return _4b1["json-comment-filtered"](xhr);}else{return _4b1["json"](xhr);}};dojo._ioSetArgs=function(args,_4b3,_4b4,_4b5){var _4b6={args:args,url:args.url};var _4b7=null;if(args.form){var form=_d.byId(args.form);var _4b9=form.getAttributeNode("action");_4b6.url=_4b6.url||(_4b9?_4b9.value:null);_4b7=_d.formToObject(form);}var _4ba=[{}];if(_4b7){_4ba.push(_4b7);}if(args.content){_4ba.push(args.content);}if(args.preventCache){_4ba.push({"dojo.preventCache":new Date().valueOf()});}_4b6.query=_d.objectToQuery(_d.mixin.apply(null,_4ba));_4b6.handleAs=args.handleAs||"text";var d=new _d.Deferred(_4b3);d.addCallbacks(_4b4,function(_4bc){return _4b5(_4bc,d);});var ld=args.load;if(ld&&_d.isFunction(ld)){d.addCallback(function(_4be){return ld.call(args,_4be,_4b6);});}var err=args.error;if(err&&_d.isFunction(err)){d.addErrback(function(_4c0){return err.call(args,_4c0,_4b6);});}var _4c1=args.handle;if(_4c1&&_d.isFunction(_4c1)){d.addBoth(function(_4c2){return _4c1.call(args,_4c2,_4b6);});}d.ioArgs=_4b6;return d;};var _4c3=function(dfd){dfd.canceled=true;var xhr=dfd.ioArgs.xhr;var _at=typeof xhr.abort;if(_at=="function"||_at=="object"||_at=="unknown"){xhr.abort();}var err=dfd.ioArgs.error;if(!err){err=new Error("xhr cancelled");err.dojoType="cancel";}return err;};var _4c8=function(dfd){var ret=_d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);return ret===undefined?null:ret;};var _4cb=function(_4cc,dfd){console.error(_4cc);return _4cc;};var _4ce=null;var _4cf=[];var _4d0=function(){var now=(new Date()).getTime();if(!_d._blockAsync){for(var i=0,tif;i<_4cf.length&&(tif=_4cf[i]);i++){var dfd=tif.dfd;var func=function(){if(!dfd||dfd.canceled||!tif.validCheck(dfd)){_4cf.splice(i--,1);}else{if(tif.ioCheck(dfd)){_4cf.splice(i--,1);tif.resHandle(dfd);}else{if(dfd.startTime){if(dfd.startTime+(dfd.ioArgs.args.timeout||0)<now){_4cf.splice(i--,1);var err=new Error("timeout exceeded");err.dojoType="timeout";dfd.errback(err);dfd.cancel();}}}}};if(dojo.config.debugAtAllCosts){func.call(this);}else{try{func.call(this);}catch(e){dfd.errback(e);}}}}if(!_4cf.length){clearInterval(_4ce);_4ce=null;return;}};dojo._ioCancelAll=function(){try{_d.forEach(_4cf,function(i){try{i.dfd.cancel();}catch(e){}});}catch(e){}};if(_d.isIE){_d.addOnWindowUnload(_d._ioCancelAll);}_d._ioWatch=function(dfd,_4d9,_4da,_4db){var args=dfd.ioArgs.args;if(args.timeout){dfd.startTime=(new Date()).getTime();}_4cf.push({dfd:dfd,validCheck:_4d9,ioCheck:_4da,resHandle:_4db});if(!_4ce){_4ce=setInterval(_4d0,50);}if(args.sync){_4d0();}};var _4dd="application/x-www-form-urlencoded";var _4de=function(dfd){return dfd.ioArgs.xhr.readyState;};var _4e0=function(dfd){return 4==dfd.ioArgs.xhr.readyState;};var _4e2=function(dfd){var xhr=dfd.ioArgs.xhr;if(_d._isDocumentOk(xhr)){dfd.callback(dfd);}else{var err=new Error("Unable to load "+dfd.ioArgs.url+" status:"+xhr.status);err.status=xhr.status;err.responseText=xhr.responseText;dfd.errback(err);}};dojo._ioAddQueryToUrl=function(_4e6){if(_4e6.query.length){_4e6.url+=(_4e6.url.indexOf("?")==-1?"?":"&")+_4e6.query;_4e6.query=null;}};dojo.xhr=function(_4e7,args,_4e9){var dfd=_d._ioSetArgs(args,_4c3,_4c8,_4cb);dfd.ioArgs.xhr=_d._xhrObj(dfd.ioArgs.args);if(_4e9){if("postData" in args){dfd.ioArgs.query=args.postData;}else{if("putData" in args){dfd.ioArgs.query=args.putData;}}}else{_d._ioAddQueryToUrl(dfd.ioArgs);}var _4eb=dfd.ioArgs;var xhr=_4eb.xhr;xhr.open(_4e7,_4eb.url,args.sync!==true,args.user||undefined,args.password||undefined);if(args.headers){for(var hdr in args.headers){if(hdr.toLowerCase()==="content-type"&&!args.contentType){args.contentType=args.headers[hdr];}else{xhr.setRequestHeader(hdr,args.headers[hdr]);}}}xhr.setRequestHeader("Content-Type",args.contentType||_4dd);if(!args.headers||!args.headers["X-Requested-With"]){xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");}if(dojo.config.debugAtAllCosts){xhr.send(_4eb.query);}else{try{xhr.send(_4eb.query);}catch(e){dfd.ioArgs.error=e;dfd.cancel();}}_d._ioWatch(dfd,_4de,_4e0,_4e2);xhr=null;return dfd;};dojo.xhrGet=function(args){return _d.xhr("GET",args);};dojo.rawXhrPost=dojo.xhrPost=function(args){return _d.xhr("POST",args,true);};dojo.rawXhrPut=dojo.xhrPut=function(args){return _d.xhr("PUT",args,true);};dojo.xhrDelete=function(args){return _d.xhr("DELETE",args);};})();}if(!dojo._hasResource["dojo._base.fx"]){dojo._hasResource["dojo._base.fx"]=true;dojo.provide("dojo._base.fx");(function(){var d=dojo;var _4f3=d.mixin;dojo._Line=function(_4f4,end){this.start=_4f4;this.end=end;};dojo._Line.prototype.getValue=function(n){return ((this.end-this.start)*n)+this.start;};d.declare("dojo._Animation",null,{constructor:function(args){_4f3(this,args);if(d.isArray(this.curve)){this.curve=new d._Line(this.curve[0],this.curve[1]);}},duration:350,repeat:0,rate:10,_percent:0,_startRepeatCount:0,_fire:function(evt,args){if(this[evt]){if(dojo.config.debugAtAllCosts){this[evt].apply(this,args||[]);}else{try{this[evt].apply(this,args||[]);}catch(e){console.error("exception in animation handler for:",evt);console.error(e);}}}return this;},play:function(_4fa,_4fb){var _t=this;if(_t._delayTimer){_t._clearTimer();}if(_4fb){_t._stopTimer();_t._active=_t._paused=false;_t._percent=0;}else{if(_t._active&&!_t._paused){return _t;}}_t._fire("beforeBegin");var de=_4fa||_t.delay,_p=dojo.hitch(_t,"_play",_4fb);if(de>0){_t._delayTimer=setTimeout(_p,de);return _t;}_p();return _t;},_play:function(_4ff){var _t=this;if(_t._delayTimer){_t._clearTimer();}_t._startTime=new Date().valueOf();if(_t._paused){_t._startTime-=_t.duration*_t._percent;}_t._endTime=_t._startTime+_t.duration;_t._active=true;_t._paused=false;var _501=_t.curve.getValue(_t._percent);if(!_t._percent){if(!_t._startRepeatCount){_t._startRepeatCount=_t.repeat;}_t._fire("onBegin",[_501]);}_t._fire("onPlay",[_501]);_t._cycle();return _t;},pause:function(){var _t=this;if(_t._delayTimer){_t._clearTimer();}_t._stopTimer();if(!_t._active){return _t;}_t._paused=true;_t._fire("onPause",[_t.curve.getValue(_t._percent)]);return _t;},gotoPercent:function(_503,_504){var _t=this;_t._stopTimer();_t._active=_t._paused=true;_t._percent=_503;if(_504){_t.play();}return _t;},stop:function(_506){var _t=this;if(_t._delayTimer){_t._clearTimer();}if(!_t._timer){return _t;}_t._stopTimer();if(_506){_t._percent=1;}_t._fire("onStop",[_t.curve.getValue(_t._percent)]);_t._active=_t._paused=false;return _t;},status:function(){if(this._active){return this._paused?"paused":"playing";}return "stopped";},_cycle:function(){var _t=this;if(_t._active){var curr=new Date().valueOf();var step=(curr-_t._startTime)/(_t._endTime-_t._startTime);if(step>=1){step=1;}_t._percent=step;if(_t.easing){step=_t.easing(step);}_t._fire("onAnimate",[_t.curve.getValue(step)]);if(_t._percent<1){_t._startTimer();}else{_t._active=false;if(_t.repeat>0){_t.repeat--;_t.play(null,true);}else{if(_t.repeat==-1){_t.play(null,true);}else{if(_t._startRepeatCount){_t.repeat=_t._startRepeatCount;_t._startRepeatCount=0;}}}_t._percent=0;_t._fire("onEnd");_t._stopTimer();}}return _t;},_clearTimer:function(){clearTimeout(this._delayTimer);delete this._delayTimer;}});var ctr=0,_50c=[],_50d=null,_50e={run:function(){}};dojo._Animation.prototype._startTimer=function(){if(!this._timer){this._timer=d.connect(_50e,"run",this,"_cycle");ctr++;}if(!_50d){_50d=setInterval(d.hitch(_50e,"run"),this.rate);}};dojo._Animation.prototype._stopTimer=function(){if(this._timer){d.disconnect(this._timer);this._timer=null;ctr--;}if(ctr<=0){clearInterval(_50d);_50d=null;ctr=0;}};var _50f=d.isIE?function(node){var ns=node.style;if(!ns.width.length&&d.style(node,"width")=="auto"){ns.width="auto";}}:function(){};dojo._fade=function(args){args.node=d.byId(args.node);var _513=_4f3({properties:{}},args),_514=(_513.properties.opacity={});_514.start=!("start" in _513)?function(){return +d.style(_513.node,"opacity")||0;}:_513.start;_514.end=_513.end;var anim=d.animateProperty(_513);d.connect(anim,"beforeBegin",d.partial(_50f,_513.node));return anim;};dojo.fadeIn=function(args){return d._fade(_4f3({end:1},args));};dojo.fadeOut=function(args){return d._fade(_4f3({end:0},args));};dojo._defaultEasing=function(n){return 0.5+((Math.sin((n+1.5)*Math.PI))/2);};var _519=function(_51a){this._properties=_51a;for(var p in _51a){var prop=_51a[p];if(prop.start instanceof d.Color){prop.tempColor=new d.Color();}}};_519.prototype.getValue=function(r){var ret={};for(var p in this._properties){var prop=this._properties[p],_521=prop.start;if(_521 instanceof d.Color){ret[p]=d.blendColors(_521,prop.end,r,prop.tempColor).toCss();}else{if(!d.isArray(_521)){ret[p]=((prop.end-_521)*r)+_521+(p!="opacity"?prop.units||"px":0);}}}return ret;};dojo.animateProperty=function(args){args.node=d.byId(args.node);if(!args.easing){args.easing=d._defaultEasing;}var anim=new d._Animation(args);d.connect(anim,"beforeBegin",anim,function(){var pm={};for(var p in this.properties){if(p=="width"||p=="height"){this.node.display="block";}var prop=this.properties[p];prop=pm[p]=_4f3({},(d.isObject(prop)?prop:{end:prop}));if(d.isFunction(prop.start)){prop.start=prop.start();}if(d.isFunction(prop.end)){prop.end=prop.end();}var _527=(p.toLowerCase().indexOf("color")>=0);function _528(node,p){var v={height:node.offsetHeight,width:node.offsetWidth}[p];if(v!==undefined){return v;}v=d.style(node,p);return (p=="opacity")?+v:(_527?v:parseFloat(v));};if(!("end" in prop)){prop.end=_528(this.node,p);}else{if(!("start" in prop)){prop.start=_528(this.node,p);}}if(_527){prop.start=new d.Color(prop.start);prop.end=new d.Color(prop.end);}else{prop.start=(p=="opacity")?+prop.start:parseFloat(prop.start);}}this.curve=new _519(pm);});d.connect(anim,"onAnimate",d.hitch(d,"style",anim.node));return anim;};dojo.anim=function(node,_52d,_52e,_52f,_530,_531){return d.animateProperty({node:node,duration:_52e||d._Animation.prototype.duration,properties:_52d,easing:_52f,onEnd:_530}).play(_531||0);};})();}if(!dojo._hasResource["dojo._base.browser"]){dojo._hasResource["dojo._base.browser"]=true;dojo.provide("dojo._base.browser");dojo.forEach(dojo.config.require,function(i){dojo["require"](i);});}if(dojo.config.afterOnLoad&&dojo.isBrowser){window.setTimeout(dojo._loadInit,1000);}})();
+(function() {
+ var _1 = null;
+ if ((_1 || (typeof djConfig != "undefined" && djConfig.scopeMap))
+ && (typeof window != "undefined")) {
+ var _2 = "",_3 = "",_4 = "",_5 = {},_6 = {};
+ _1 = _1 || djConfig.scopeMap;
+ for (var i = 0; i < _1.length; i++) {
+ var _8 = _1[i];
+ _2 += "var " + _8[0] + " = {}; " + _8[1] + " = " + _8[0] + ";"
+ + _8[1] + "._scopeName = '" + _8[1] + "';";
+ _3 += (i == 0 ? "" : ",") + _8[0];
+ _4 += (i == 0 ? "" : ",") + _8[1];
+ _5[_8[0]] = _8[1];
+ _6[_8[1]] = _8[0];
+ }
+ eval(_2 + "dojo._scopeArgs = [" + _4 + "];");
+ dojo._scopePrefixArgs = _3;
+ dojo._scopePrefix = "(function(" + _3 + "){";
+ dojo._scopeSuffix = "})(" + _4 + ")";
+ dojo._scopeMap = _5;
+ dojo._scopeMapRev = _6;
+ }
+ (function() {
+ if (typeof this["loadFirebugConsole"] == "function") {
+ this["loadFirebugConsole"]();
+ } else {
+ this.console = this.console || {};
+ var cn = ["assert","count","debug","dir","dirxml","error","group","groupEnd","info","profile","profileEnd","time","timeEnd","trace","warn","log"];
+ var i = 0,tn;
+ while ((tn = cn[i++])) {
+ if (!console[tn]) {
+ (function() {
+ var _c = tn + "";
+ console[_c] = ("log" in console) ? function() {
+ var a = Array.apply({}, arguments);
+ a.unshift(_c + ":");
+ console["log"](a.join(" "));
+ } : function() {
+ };
+ })();
+ }
+ }
+ }
+ if (typeof dojo == "undefined") {
+ this.dojo
+ = {_scopeName:"dojo",_scopePrefix:"",_scopePrefixArgs:"",_scopeSuffix:"",_scopeMap:{},_scopeMapRev:{}};
+ }
+ var d = dojo;
+ if (typeof dijit == "undefined") {
+ this.dijit = {_scopeName:"dijit"};
+ }
+ if (typeof dojox == "undefined") {
+ this.dojox = {_scopeName:"dojox"};
+ }
+ if (!d._scopeArgs) {
+ d._scopeArgs = [dojo,dijit,dojox];
+ }
+ d.global = this;
+ d.config = {isDebug:false,debugAtAllCosts:false};
+ if (typeof djConfig != "undefined") {
+ for (var _f in djConfig) {
+ d.config[_f] = djConfig[_f];
+ }
+ }
+ dojo.locale = d.config.locale;
+ var rev = "$Rev: 17468 $".match(/\d+/);
+ dojo.version = {major:1,minor:3,patch:1,flag:"",revision:rev ? +rev[0]
+ : NaN,toString:function() {
+ with (d.version) {
+ return major + "." + minor + "." + patch + flag + " ("
+ + revision + ")";
+ }
+ }};
+ if (typeof OpenAjax != "undefined") {
+ OpenAjax.hub.registerLibrary(dojo._scopeName, "http://dojotoolkit.org", d.version.toString());
+ }
+ var _11 = {};
+ dojo._mixin = function(obj, _13) {
+ for (var x in _13) {
+ if (_11[x] === undefined || _11[x] != _13[x]) {
+ obj[x] = _13[x];
+ }
+ }
+ if (d.isIE && _13) {
+ var p = _13.toString;
+ if (typeof p == "function" && p != obj.toString && p
+ != _11.toString && p
+ != "\nfunction toString() {\n [native code]\n}\n") {
+ obj.toString = _13.toString;
+ }
+ }
+ return obj;
+ };
+ dojo.mixin = function(obj, _17) {
+ if (!obj) {
+ obj = {};
+ }
+ for (var i = 1,l = arguments.length; i < l; i++) {
+ d._mixin(obj, arguments[i]);
+ }
+ return obj;
+ };
+ dojo._getProp = function(_1a, _1b, _1c) {
+ var obj = _1c || d.global;
+ for (var i = 0,p; obj && (p = _1a[i]); i++) {
+ if (i == 0 && this._scopeMap[p]) {
+ p = this._scopeMap[p];
+ }
+ obj = (p in obj ? obj[p] : (_1b ? obj[p] = {} : undefined));
+ }
+ return obj;
+ };
+ dojo.setObject = function(_20, _21, _22) {
+ var _23 = _20.split("."),p = _23.pop(),obj = d._getProp(_23, true, _22);
+ return obj && p ? (obj[p] = _21) : undefined;
+ };
+ dojo.getObject = function(_26, _27, _28) {
+ return d._getProp(_26.split("."), _27, _28);
+ };
+ dojo.exists = function(_29, obj) {
+ return !!d.getObject(_29, false, obj);
+ };
+ dojo["eval"] = function(_2b) {
+ return d.global.eval ? d.global.eval(_2b) : eval(_2b);
+ };
+ d.deprecated = d.experimental = function() {
+ };
+ })();
+ (function() {
+ var d = dojo;
+ d.mixin(d, {_loadedModules:{},_inFlightCount:0,_hasResource:{},_modulePrefixes:{dojo:{name:"dojo",value:"."},doh:{name:"doh",value:"../util/doh"},tests:{name:"tests",value:"tests"}},_moduleHasPrefix:function(
+ _2d) {
+ var mp = this._modulePrefixes;
+ return !!(mp[_2d] && mp[_2d].value);
+ },_getModulePrefix:function(_2f) {
+ var mp = this._modulePrefixes;
+ if (this._moduleHasPrefix(_2f)) {
+ return mp[_2f].value;
+ }
+ return _2f;
+ },_loadedUrls:[],_postLoad:false,_loaders:[],_unloaders:[],_loadNotifying:false});
+ dojo._loadPath = function(_31, _32, cb) {
+ var uri = ((_31.charAt(0) == "/" || _31.match(/^\w+:/)) ? ""
+ : this.baseUrl) + _31;
+ try {
+ return !_32 ? this._loadUri(uri, cb)
+ : this._loadUriAndCheck(uri, _32, cb);
+ } catch(e) {
+ console.error(e);
+ return false;
+ }
+ };
+ dojo._loadUri = function(uri, cb) {
+ if (this._loadedUrls[uri]) {
+ return true;
+ }
+ var _37 = this._getText(uri, true);
+ if (!_37) {
+ return false;
+ }
+ this._loadedUrls[uri] = true;
+ this._loadedUrls.push(uri);
+ if (cb) {
+ _37 = "(" + _37 + ")";
+ } else {
+ _37 = this._scopePrefix + _37 + this._scopeSuffix;
+ }
+ if (d.isMoz) {
+ _37 += "\r\n//@ sourceURL=" + uri;
+ }
+ var _38 = d["eval"](_37);
+ if (cb) {
+ cb(_38);
+ }
+ return true;
+ };
+ dojo._loadUriAndCheck = function(uri, _3a, cb) {
+ var ok = false;
+ try {
+ ok = this._loadUri(uri, cb);
+ } catch(e) {
+ console.error("failed loading " + uri + " with error: " + e);
+ }
+ return !!(ok && this._loadedModules[_3a]);
+ };
+ dojo.loaded = function() {
+ this._loadNotifying = true;
+ this._postLoad = true;
+ var mll = d._loaders;
+ this._loaders = [];
+ for (var x = 0; x < mll.length; x++) {
+ mll[x]();
+ }
+ this._loadNotifying = false;
+ if (d._postLoad && d._inFlightCount == 0 && mll.length) {
+ d._callLoaded();
+ }
+ };
+ dojo.unloaded = function() {
+ var mll = d._unloaders;
+ while (mll.length) {
+ (mll.pop())();
+ }
+ };
+ d._onto = function(arr, obj, fn) {
+ if (!fn) {
+ arr.push(obj);
+ } else {
+ if (fn) {
+ var _43 = (typeof fn == "string") ? obj[fn] : fn;
+ arr.push(function() {
+ _43.call(obj);
+ });
+ }
+ }
+ };
+ dojo.addOnLoad = function(obj, _45) {
+ d._onto(d._loaders, obj, _45);
+ if (d._postLoad && d._inFlightCount == 0 && !d._loadNotifying) {
+ d._callLoaded();
+ }
+ };
+ var dca = d.config.addOnLoad;
+ if (dca) {
+ d.addOnLoad[(dca instanceof Array ? "apply" : "call")](d, dca);
+ }
+ dojo._modulesLoaded = function() {
+ if (d._postLoad) {
+ return;
+ }
+ if (d._inFlightCount > 0) {
+ console.warn("files still in flight!");
+ return;
+ }
+ d._callLoaded();
+ };
+ dojo._callLoaded = function() {
+ if (typeof setTimeout == "object" || (dojo.config.useXDomain
+ && d.isOpera)) {
+ if (dojo.isAIR) {
+ setTimeout(function() {
+ dojo.loaded();
+ }, 0);
+ } else {
+ setTimeout(dojo._scopeName + ".loaded();", 0);
+ }
+ } else {
+ d.loaded();
+ }
+ };
+ dojo._getModuleSymbols = function(_47) {
+ var _48 = _47.split(".");
+ for (var i = _48.length; i > 0; i--) {
+ var _4a = _48.slice(0, i).join(".");
+ if ((i == 1) && !this._moduleHasPrefix(_4a)) {
+ _48[0] = "../" + _48[0];
+ } else {
+ var _4b = this._getModulePrefix(_4a);
+ if (_4b != _4a) {
+ _48.splice(0, i, _4b);
+ break;
+ }
+ }
+ }
+ return _48;
+ };
+ dojo._global_omit_module_check = false;
+ dojo.loadInit = function(_4c) {
+ _4c();
+ };
+ dojo._loadModule = dojo.require = function(_4d, _4e) {
+ _4e = this._global_omit_module_check || _4e;
+ var _4f = this._loadedModules[_4d];
+ if (_4f) {
+ return _4f;
+ }
+ var _50 = this._getModuleSymbols(_4d).join("/") + ".js";
+ var _51 = (!_4e) ? _4d : null;
+ var ok = this._loadPath(_50, _51);
+ if (!ok && !_4e) {
+ throw new Error("Could not load '" + _4d + "'; last tried '"
+ + _50 + "'");
+ }
+ if (!_4e && !this._isXDomain) {
+ _4f = this._loadedModules[_4d];
+ if (!_4f) {
+ throw new Error("symbol '" + _4d
+ + "' is not defined after loading '" + _50 + "'");
+ }
+ }
+ return _4f;
+ };
+ dojo.provide = function(_53) {
+ _53 = _53 + "";
+ return (d._loadedModules[_53] = d.getObject(_53, true));
+ };
+ dojo.platformRequire = function(_54) {
+ var _55 = _54.common || [];
+ var _56 = _55.concat(_54[d._name] || _54["default"] || []);
+ for (var x = 0; x < _56.length; x++) {
+ var _58 = _56[x];
+ if (_58.constructor == Array) {
+ d._loadModule.apply(d, _58);
+ } else {
+ d._loadModule(_58);
+ }
+ }
+ };
+ dojo.requireIf = function(_59, _5a) {
+ if (_59 === true) {
+ var _5b = [];
+ for (var i = 1; i < arguments.length; i++) {
+ _5b.push(arguments[i]);
+ }
+ d.require.apply(d, _5b);
+ }
+ };
+ dojo.requireAfterIf = d.requireIf;
+ dojo.registerModulePath = function(_5d, _5e) {
+ d._modulePrefixes[_5d] = {name:_5d,value:_5e};
+ };
+ dojo.requireLocalization = function(_5f, _60, _61, _62) {
+ d.require("dojo.i18n");
+ d.i18n._requireLocalization.apply(d.hostenv, arguments);
+ };
+ var ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$");
+ var ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$");
+ dojo._Url = function() {
+ var n = null;
+ var _a = arguments;
+ var uri = [_a[0]];
+ for (var i = 1; i < _a.length; i++) {
+ if (!_a[i]) {
+ continue;
+ }
+ var _69 = new d._Url(_a[i] + "");
+ var _6a = new d._Url(uri[0] + "");
+ if (_69.path == "" && !_69.scheme && !_69.authority
+ && !_69.query) {
+ if (_69.fragment != n) {
+ _6a.fragment = _69.fragment;
+ }
+ _69 = _6a;
+ } else {
+ if (!_69.scheme) {
+ _69.scheme = _6a.scheme;
+ if (!_69.authority) {
+ _69.authority = _6a.authority;
+ if (_69.path.charAt(0) != "/") {
+ var _6b = _6a.path.substring(0, _6a.path.lastIndexOf("/")
+ + 1) + _69.path;
+ var _6c = _6b.split("/");
+ for (var j = 0; j < _6c.length; j++) {
+ if (_6c[j] == ".") {
+ if (j == _6c.length - 1) {
+ _6c[j] = "";
+ } else {
+ _6c.splice(j, 1);
+ j--;
+ }
+ } else {
+ if (j > 0 && !(j == 1 && _6c[0] == "")
+ && _6c[j] == ".." && _6c[j - 1]
+ != "..") {
+ if (j == (_6c.length - 1)) {
+ _6c.splice(j, 1);
+ _6c[j - 1] = "";
+ } else {
+ _6c.splice(j - 1, 2);
+ j -= 2;
+ }
+ }
+ }
+ }
+ _69.path = _6c.join("/");
+ }
+ }
+ }
+ }
+ uri = [];
+ if (_69.scheme) {
+ uri.push(_69.scheme, ":");
+ }
+ if (_69.authority) {
+ uri.push("//", _69.authority);
+ }
+ uri.push(_69.path);
+ if (_69.query) {
+ uri.push("?", _69.query);
+ }
+ if (_69.fragment) {
+ uri.push("#", _69.fragment);
+ }
+ }
+ this.uri = uri.join("");
+ var r = this.uri.match(ore);
+ this.scheme = r[2] || (r[1] ? "" : n);
+ this.authority = r[4] || (r[3] ? "" : n);
+ this.path = r[5];
+ this.query = r[7] || (r[6] ? "" : n);
+ this.fragment = r[9] || (r[8] ? "" : n);
+ if (this.authority != n) {
+ r = this.authority.match(ire);
+ this.user = r[3] || n;
+ this.password = r[4] || n;
+ this.host = r[6] || r[7];
+ this.port = r[9] || n;
+ }
+ };
+ dojo._Url.prototype.toString = function() {
+ return this.uri;
+ };
+ dojo.moduleUrl = function(_6f, url) {
+ var loc = d._getModuleSymbols(_6f).join("/");
+ if (!loc) {
+ return null;
+ }
+ if (loc.lastIndexOf("/") != loc.length - 1) {
+ loc += "/";
+ }
+ var _72 = loc.indexOf(":");
+ if (loc.charAt(0) != "/" && (_72 == -1 || _72 > loc.indexOf("/"))) {
+ loc = d.baseUrl + loc;
+ }
+ return new d._Url(loc, url);
+ };
+ })();
+ if (typeof window != "undefined") {
+ dojo.isBrowser = true;
+ dojo._name = "browser";
+ (function() {
+ var d = dojo;
+ if (document && document.getElementsByTagName) {
+ var _74 = document.getElementsByTagName("script");
+ var _75 = /dojo(\.xd)?\.js(\W|$)/i;
+ for (var i = 0; i < _74.length; i++) {
+ var src = _74[i].getAttribute("src");
+ if (!src) {
+ continue;
+ }
+ var m = src.match(_75);
+ if (m) {
+ if (!d.config.baseUrl) {
+ d.config.baseUrl = src.substring(0, m.index);
+ }
+ var cfg = _74[i].getAttribute("djConfig");
+ if (cfg) {
+ var _7a = eval("({ " + cfg + " })");
+ for (var x in _7a) {
+ dojo.config[x] = _7a[x];
+ }
+ }
+ break;
+ }
+ }
+ }
+ d.baseUrl = d.config.baseUrl;
+ var n = navigator;
+ var dua = n.userAgent,dav = n.appVersion,tv = parseFloat(dav);
+ if (dua.indexOf("Opera") >= 0) {
+ d.isOpera = tv;
+ }
+ if (dua.indexOf("AdobeAIR") >= 0) {
+ d.isAIR = 1;
+ }
+ d.isKhtml = (dav.indexOf("Konqueror") >= 0) ? tv : 0;
+ d.isWebKit = parseFloat(dua.split("WebKit/")[1]) || undefined;
+ d.isChrome = parseFloat(dua.split("Chrome/")[1]) || undefined;
+ var _80 = Math.max(dav.indexOf("WebKit"), dav.indexOf("Safari"), 0);
+ if (_80 && !dojo.isChrome) {
+ d.isSafari = parseFloat(dav.split("Version/")[1]);
+ if (!d.isSafari || parseFloat(dav.substr(_80 + 7)) <= 419.3) {
+ d.isSafari = 2;
+ }
+ }
+ if (dua.indexOf("Gecko") >= 0 && !d.isKhtml && !d.isWebKit) {
+ d.isMozilla = d.isMoz = tv;
+ }
+ if (d.isMoz) {
+ d.isFF = parseFloat(dua.split("Firefox/")[1]
+ || dua.split("Minefield/")[1]
+ || dua.split("Shiretoko/")[1]) || undefined;
+ }
+ if (document.all && !d.isOpera) {
+ d.isIE = parseFloat(dav.split("MSIE ")[1]) || undefined;
+ if (d.isIE >= 8 && document.documentMode != 5) {
+ d.isIE = document.documentMode;
+ }
+ }
+ if (dojo.isIE && window.location.protocol === "file:") {
+ dojo.config.ieForceActiveXXhr = true;
+ }
+ var cm = document.compatMode;
+ d.isQuirks = cm == "BackCompat" || cm == "QuirksMode" || d.isIE < 6;
+ d.locale = dojo.config.locale || (d.isIE ? n.userLanguage
+ : n.language).toLowerCase();
+ d._XMLHTTP_PROGIDS
+ = ["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];
+ d._xhrObj = function() {
+ var _82,_83;
+ if (!dojo.isIE || !dojo.config.ieForceActiveXXhr) {
+ try {
+ _82 = new XMLHttpRequest();
+ } catch(e) {
+ }
+ }
+ if (!_82) {
+ for (var i = 0; i < 3; ++i) {
+ var _85 = d._XMLHTTP_PROGIDS[i];
+ try {
+ _82 = new ActiveXObject(_85);
+ } catch(e) {
+ _83 = e;
+ }
+ if (_82) {
+ d._XMLHTTP_PROGIDS = [_85];
+ break;
+ }
+ }
+ }
+ if (!_82) {
+ throw new Error("XMLHTTP not available: " + _83);
+ }
+ return _82;
+ };
+ d._isDocumentOk = function(_86) {
+ var _87 = _86.status || 0;
+ return (_87 >= 200 && _87 < 300) || _87 == 304 || _87 == 1223
+ || (!_87 && (location.protocol == "file:"
+ || location.protocol == "chrome:"));
+ };
+ var _88 = window.location + "";
+ var _89 = document.getElementsByTagName("base");
+ var _8a = (_89 && _89.length > 0);
+ d._getText = function(uri, _8c) {
+ var _8d = this._xhrObj();
+ if (!_8a && dojo._Url) {
+ uri = (new dojo._Url(_88, uri)).toString();
+ }
+ if (d.config.cacheBust) {
+ uri += "";
+ uri += (uri.indexOf("?") == -1 ? "?" : "&")
+ + String(d.config.cacheBust).replace(/\W+/g, "");
+ }
+ _8d.open("GET", uri, false);
+ try {
+ _8d.send(null);
+ if (!d._isDocumentOk(_8d)) {
+ var err = Error("Unable to load " + uri + " status:"
+ + _8d.status);
+ err.status = _8d.status;
+ err.responseText = _8d.responseText;
+ throw err;
+ }
+ } catch(e) {
+ if (_8c) {
+ return null;
+ }
+ throw e;
+ }
+ return _8d.responseText;
+ };
+ var _w = window;
+ var _90 = function(_91, fp) {
+ var _93 = _w[_91] || function() {
+ };
+ _w[_91] = function() {
+ fp.apply(_w, arguments);
+ _93.apply(_w, arguments);
+ };
+ };
+ d._windowUnloaders = [];
+ d.windowUnloaded = function() {
+ var mll = d._windowUnloaders;
+ while (mll.length) {
+ (mll.pop())();
+ }
+ };
+ var _95 = 0;
+ d.addOnWindowUnload = function(obj, _97) {
+ d._onto(d._windowUnloaders, obj, _97);
+ if (!_95) {
+ _95 = 1;
+ _90("onunload", d.windowUnloaded);
+ }
+ };
+ var _98 = 0;
+ d.addOnUnload = function(obj, _9a) {
+ d._onto(d._unloaders, obj, _9a);
+ if (!_98) {
+ _98 = 1;
+ _90("onbeforeunload", dojo.unloaded);
+ }
+ };
+ })();
+ dojo._initFired = false;
+ dojo._loadInit = function(e) {
+ dojo._initFired = true;
+ var _9c = e && e.type ? e.type.toLowerCase() : "load";
+ if (arguments.callee.initialized || (_9c != "domcontentloaded"
+ && _9c != "load")) {
+ return;
+ }
+ arguments.callee.initialized = true;
+ if ("_khtmlTimer" in dojo) {
+ clearInterval(dojo._khtmlTimer);
+ delete dojo._khtmlTimer;
+ }
+ if (dojo._inFlightCount == 0) {
+ dojo._modulesLoaded();
+ }
+ };
+ if (!dojo.config.afterOnLoad) {
+ if (document.addEventListener) {
+ if (dojo.isWebKit > 525 || dojo.isOpera || dojo.isFF >= 3
+ || (dojo.isMoz && dojo.config.enableMozDomContentLoaded
+ === true)) {
+ document.addEventListener("DOMContentLoaded", dojo._loadInit, null);
+ }
+ window.addEventListener("load", dojo._loadInit, null);
+ }
+ if (dojo.isAIR) {
+ window.addEventListener("load", dojo._loadInit, null);
+ } else {
+ if ((dojo.isWebKit < 525) || dojo.isKhtml) {
+ dojo._khtmlTimer = setInterval(function() {
+ if (/loaded|complete/.test(document.readyState)) {
+ dojo._loadInit();
+ }
+ }, 10);
+ }
+ }
+ }
+ if (dojo.isIE) {
+ if (!dojo.config.afterOnLoad) {
+ document.write("<scr" + "ipt defer src=\"//:\" "
+ + "onreadystatechange=\"if(this.readyState=='complete'){"
+ + dojo._scopeName + "._loadInit();}\">" + "</scr"
+ + "ipt>");
+ }
+ try {
+ document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
+ document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML); display:inline-block");
+ } catch(e) {
+ }
+ }
+ }
+ (function() {
+ var mp = dojo.config["modulePaths"];
+ if (mp) {
+ for (var _9e in mp) {
+ dojo.registerModulePath(_9e, mp[_9e]);
+ }
+ }
+ })();
+ if (dojo.config.isDebug) {
+ dojo.require("dojo._firebug.firebug");
+ }
+ if (dojo.config.debugAtAllCosts) {
+ dojo.config.useXDomain = true;
+ dojo.require("dojo._base._loader.loader_xd");
+ dojo.require("dojo._base._loader.loader_debug");
+ dojo.require("dojo.i18n");
+ }
+ if (!dojo._hasResource["dojo._base.lang"]) {
+ dojo._hasResource["dojo._base.lang"] = true;
+ dojo.provide("dojo._base.lang");
+ dojo.isString = function(it) {
+ return !!arguments.length && it != null && (typeof it == "string"
+ || it instanceof String);
+ };
+ dojo.isArray = function(it) {
+ return it && (it instanceof Array || typeof it == "array");
+ };
+ dojo.isFunction = (function() {
+ var _a1 = function(it) {
+ var t = typeof it;
+ return it && (t == "function" || it instanceof Function);
+ };
+ return dojo.isSafari ? function(it) {
+ if (typeof it == "function" && it == "[object NodeList]") {
+ return false;
+ }
+ return _a1(it);
+ } : _a1;
+ })();
+ dojo.isObject = function(it) {
+ return it !== undefined && (it === null || typeof it == "object"
+ || dojo.isArray(it) || dojo.isFunction(it));
+ };
+ dojo.isArrayLike = function(it) {
+ var d = dojo;
+ return it && it !== undefined && !d.isString(it)
+ && !d.isFunction(it) && !(it.tagName
+ && it.tagName.toLowerCase() == "form") && (d.isArray(it)
+ || isFinite(it.length));
+ };
+ dojo.isAlien = function(it) {
+ return it && !dojo.isFunction(it)
+ && /\{\s*\[native code\]\s*\}/.test(String(it));
+ };
+ dojo.extend = function(_a9, _aa) {
+ for (var i = 1,l = arguments.length; i < l; i++) {
+ dojo._mixin(_a9.prototype, arguments[i]);
+ }
+ return _a9;
+ };
+ dojo._hitchArgs = function(_ad, _ae) {
+ var pre = dojo._toArray(arguments, 2);
+ var _b0 = dojo.isString(_ae);
+ return function() {
+ var _b1 = dojo._toArray(arguments);
+ var f = _b0 ? (_ad || dojo.global)[_ae] : _ae;
+ return f && f.apply(_ad || this, pre.concat(_b1));
+ };
+ };
+ dojo.hitch = function(_b3, _b4) {
+ if (arguments.length > 2) {
+ return dojo._hitchArgs.apply(dojo, arguments);
+ }
+ if (!_b4) {
+ _b4 = _b3;
+ _b3 = null;
+ }
+ if (dojo.isString(_b4)) {
+ _b3 = _b3 || dojo.global;
+ if (!_b3[_b4]) {
+ throw (["dojo.hitch: scope[\"",_b4,"\"] is null (scope=\"",_b3,"\")"].join(""));
+ }
+ return function() {
+ return _b3[_b4].apply(_b3, arguments || []);
+ };
+ }
+ return !_b3 ? _b4 : function() {
+ return _b4.apply(_b3, arguments || []);
+ };
+ };
+ dojo.delegate = dojo._delegate = (function() {
+ function TMP() {
+ }
+
+ ;
+ return function(obj, _b7) {
+ TMP.prototype = obj;
+ var tmp = new TMP();
+ if (_b7) {
+ dojo._mixin(tmp, _b7);
+ }
+ return tmp;
+ };
+ })();
+ (function() {
+ var _b9 = function(obj, _bb, _bc) {
+ return (_bc || []).concat(Array.prototype.slice.call(obj, _bb
+ || 0));
+ };
+ var _bd = function(obj, _bf, _c0) {
+ var arr = _c0 || [];
+ for (var x = _bf || 0; x < obj.length; x++) {
+ arr.push(obj[x]);
+ }
+ return arr;
+ };
+ dojo._toArray = dojo.isIE ? function(obj) {
+ return ((obj.item) ? _bd : _b9).apply(this, arguments);
+ } : _b9;
+ })();
+ dojo.partial = function(_c4) {
+ var arr = [null];
+ return dojo.hitch.apply(dojo, arr.concat(dojo._toArray(arguments)));
+ };
+ dojo.clone = function(o) {
+ if (!o) {
+ return o;
+ }
+ if (dojo.isArray(o)) {
+ var r = [];
+ for (var i = 0; i < o.length; ++i) {
+ r.push(dojo.clone(o[i]));
+ }
+ return r;
+ }
+ if (!dojo.isObject(o)) {
+ return o;
+ }
+ if (o.nodeType && o.cloneNode) {
+ return o.cloneNode(true);
+ }
+ if (o instanceof Date) {
+ return new Date(o.getTime());
+ }
+ r = new o.constructor();
+ for (i in o) {
+ if (!(i in r) || r[i] != o[i]) {
+ r[i] = dojo.clone(o[i]);
+ }
+ }
+ return r;
+ };
+ dojo.trim = String.prototype.trim ? function(str) {
+ return str.trim();
+ } : function(str) {
+ return str.replace(/^\s\s*/, "").replace(/\s\s*$/, "");
+ };
+ }
+ if (!dojo._hasResource["dojo._base.declare"]) {
+ dojo._hasResource["dojo._base.declare"] = true;
+ dojo.provide("dojo._base.declare");
+ dojo.declare = function(_cb, _cc, _cd) {
+ var dd = arguments.callee,_cf;
+ if (dojo.isArray(_cc)) {
+ _cf = _cc;
+ _cc = _cf.shift();
+ }
+ if (_cf) {
+ dojo.forEach(_cf, function(m, i) {
+ if (!m) {
+ throw (_cb + ": mixin #" + i + " is null");
+ }
+ _cc = dd._delegate(_cc, m);
+ });
+ }
+ var _d2 = dd._delegate(_cc);
+ _cd = _cd || {};
+ _d2.extend(_cd);
+ dojo.extend(_d2, {declaredClass:_cb,_constructor:_cd.constructor});
+ _d2.prototype.constructor = _d2;
+ return dojo.setObject(_cb, _d2);
+ };
+ dojo.mixin(dojo.declare, {_delegate:function(_d3, _d4) {
+ var bp = (_d3 || 0).prototype,mp = (_d4
+ || 0).prototype,dd = dojo.declare;
+ var _d8 = dd._makeCtor();
+ dojo.mixin(_d8, {superclass:bp,mixin:mp,extend:dd._extend});
+ if (_d3) {
+ _d8.prototype = dojo._delegate(bp);
+ }
+ dojo.extend(_d8, dd._core, mp
+ || 0, {_constructor:null,preamble:null});
+ _d8.prototype.constructor = _d8;
+ _d8.prototype.declaredClass = (bp || 0).declaredClass + "_" + (mp
+ || 0).declaredClass;
+ return _d8;
+ },_extend:function(_d9) {
+ var i,fn;
+ for (i in _d9) {
+ if (dojo.isFunction(fn = _d9[i]) && !0[i]) {
+ fn.nom = i;
+ fn.ctor = this;
+ }
+ }
+ dojo.extend(this, _d9);
+ },_makeCtor:function() {
+ return function() {
+ this._construct(arguments);
+ };
+ },_core:{_construct:function(_dc) {
+ var c = _dc.callee,s = c.superclass,ct = s
+ && s.constructor,m = c.mixin,mct = m
+ && m.constructor,a = _dc,ii,fn;
+ if (a[0]) {
+ if (((fn = a[0].preamble))) {
+ a = fn.apply(this, a) || a;
+ }
+ }
+ if ((fn = c.prototype.preamble)) {
+ a = fn.apply(this, a) || a;
+ }
+ if (ct && ct.apply) {
+ ct.apply(this, a);
+ }
+ if (mct && mct.apply) {
+ mct.apply(this, a);
+ }
+ if ((ii = c.prototype._constructor)) {
+ ii.apply(this, _dc);
+ }
+ if (this.constructor.prototype == c.prototype && (ct
+ = this.postscript)) {
+ ct.apply(this, _dc);
+ }
+ },_findMixin:function(_e5) {
+ var c = this.constructor,p,m;
+ while (c) {
+ p = c.superclass;
+ m = c.mixin;
+ if (m == _e5 || (m instanceof _e5.constructor)) {
+ return p;
+ }
+ if (m && m._findMixin && (m = m._findMixin(_e5))) {
+ return m;
+ }
+ c = p && p.constructor;
+ }
+ },_findMethod:function(_e9, _ea, _eb, has) {
+ var p = _eb,c,m,f;
+ do{
+ c = p.constructor;
+ m = c.mixin;
+ if (m && (m = this._findMethod(_e9, _ea, m, has))) {
+ return m;
+ }
+ if ((f = p[_e9]) && (has == (f == _ea))) {
+ return p;
+ }
+ p = c.superclass;
+ } while (p);
+ return !has && (p = this._findMixin(_eb))
+ && this._findMethod(_e9, _ea, p, has);
+ },inherited:function(_f1, _f2, _f3) {
+ var a = arguments;
+ if (!dojo.isString(a[0])) {
+ _f3 = _f2;
+ _f2 = _f1;
+ _f1 = _f2.callee.nom;
+ }
+ a = _f3 || _f2;
+ var c = _f2.callee,p = this.constructor.prototype,fn,mp;
+ if (this[_f1] != c || p[_f1] == c) {
+ mp = (c.ctor || 0).superclass
+ || this._findMethod(_f1, c, p, true);
+ if (!mp) {
+ throw (this.declaredClass + ": inherited method \"" + _f1
+ + "\" mismatch");
+ }
+ p = this._findMethod(_f1, c, mp, false);
+ }
+ fn = p && p[_f1];
+ if (!fn) {
+ throw (mp.declaredClass + ": inherited method \"" + _f1
+ + "\" not found");
+ }
+ return fn.apply(this, a);
+ }}});
+ }
+ if (!dojo._hasResource["dojo._base.connect"]) {
+ dojo._hasResource["dojo._base.connect"] = true;
+ dojo.provide("dojo._base.connect");
+ dojo._listener = {getDispatcher:function() {
+ return function() {
+ var ap = Array.prototype,c = arguments.callee,ls = c._listeners,t = c.target;
+ var r = t && t.apply(this, arguments);
+ var lls;
+ lls = [].concat(ls);
+ for (var i in lls) {
+ if (!(i in ap)) {
+ lls[i].apply(this, arguments);
+ }
+ }
+ return r;
+ };
+ },add:function(_100, _101, _102) {
+ _100 = _100 || dojo.global;
+ var f = _100[_101];
+ if (!f || !f._listeners) {
+ var d = dojo._listener.getDispatcher();
+ d.target = f;
+ d._listeners = [];
+ f = _100[_101] = d;
+ }
+ return f._listeners.push(_102);
+ },remove:function(_105, _106, _107) {
+ var f = (_105 || dojo.global)[_106];
+ if (f && f._listeners && _107--) {
+ delete f._listeners[_107];
+ }
+ }};
+ dojo.connect = function(obj, _10a, _10b, _10c, _10d) {
+ var a = arguments,args = [],i = 0;
+ args.push(dojo.isString(a[0]) ? null : a[i++], a[i++]);
+ var a1 = a[i + 1];
+ args.push(dojo.isString(a1) || dojo.isFunction(a1) ? a[i++]
+ : null, a[i++]);
+ for (var l = a.length; i < l; i++) {
+ args.push(a[i]);
+ }
+ return dojo._connect.apply(this, args);
+ };
+ dojo._connect = function(obj, _113, _114, _115) {
+ var l = dojo._listener,h = l.add(obj, _113, dojo.hitch(_114, _115));
+ return [obj,_113,h,l];
+ };
+ dojo.disconnect = function(_118) {
+ if (_118 && _118[0] !== undefined) {
+ dojo._disconnect.apply(this, _118);
+ delete _118[0];
+ }
+ };
+ dojo._disconnect = function(obj, _11a, _11b, _11c) {
+ _11c.remove(obj, _11a, _11b);
+ };
+ dojo._topics = {};
+ dojo.subscribe = function(_11d, _11e, _11f) {
+ return [_11d,dojo._listener.add(dojo._topics, _11d, dojo.hitch(_11e, _11f))];
+ };
+ dojo.unsubscribe = function(_120) {
+ if (_120) {
+ dojo._listener.remove(dojo._topics, _120[0], _120[1]);
+ }
+ };
+ dojo.publish = function(_121, args) {
+ var f = dojo._topics[_121];
+ if (f) {
+ f.apply(this, args || []);
+ }
+ };
+ dojo.connectPublisher = function(_124, obj, _126) {
+ var pf = function() {
+ dojo.publish(_124, arguments);
+ };
+ return (_126) ? dojo.connect(obj, _126, pf) : dojo.connect(obj, pf);
+ };
+ }
+ if (!dojo._hasResource["dojo._base.Deferred"]) {
+ dojo._hasResource["dojo._base.Deferred"] = true;
+ dojo.provide("dojo._base.Deferred");
+ dojo.Deferred = function(_128) {
+ this.chain = [];
+ this.id = this._nextId();
+ this.fired = -1;
+ this.paused = 0;
+ this.results = [null,null];
+ this.canceller = _128;
+ this.silentlyCancelled = false;
+ };
+ dojo.extend(dojo.Deferred, {_nextId:(function() {
+ var n = 1;
+ return function() {
+ return n++;
+ };
+ })(),cancel:function() {
+ var err;
+ if (this.fired == -1) {
+ if (this.canceller) {
+ err = this.canceller(this);
+ } else {
+ this.silentlyCancelled = true;
+ }
+ if (this.fired == -1) {
+ if (!(err instanceof Error)) {
+ var res = err;
+ var msg = "Deferred Cancelled";
+ if (err && err.toString) {
+ msg += ": " + err.toString();
+ }
+ err = new Error(msg);
+ err.dojoType = "cancel";
+ err.cancelResult = res;
+ }
+ this.errback(err);
+ }
+ } else {
+ if ((this.fired == 0) && (this.results[0]
+ instanceof dojo.Deferred)) {
+ this.results[0].cancel();
+ }
+ }
+ },_resback:function(res) {
+ this.fired = ((res instanceof Error) ? 1 : 0);
+ this.results[this.fired] = res;
+ this._fire();
+ },_check:function() {
+ if (this.fired != -1) {
+ if (!this.silentlyCancelled) {
+ throw new Error("already called!");
+ }
+ this.silentlyCancelled = false;
+ return;
+ }
+ },callback:function(res) {
+ this._check();
+ this._resback(res);
+ },errback:function(res) {
+ this._check();
+ if (!(res instanceof Error)) {
+ res = new Error(res);
+ }
+ this._resback(res);
+ },addBoth:function(cb, cbfn) {
+ var _132 = dojo.hitch.apply(dojo, arguments);
+ return this.addCallbacks(_132, _132);
+ },addCallback:function(cb, cbfn) {
+ return this.addCallbacks(dojo.hitch.apply(dojo, arguments));
+ },addErrback:function(cb, cbfn) {
+ return this.addCallbacks(null, dojo.hitch.apply(dojo, arguments));
+ },addCallbacks:function(cb, eb) {
+ this.chain.push([cb,eb]);
+ if (this.fired >= 0) {
+ this._fire();
+ }
+ return this;
+ },_fire:function() {
+ var _139 = this.chain;
+ var _13a = this.fired;
+ var res = this.results[_13a];
+ var self = this;
+ var cb = null;
+ while ((_139.length > 0) && (this.paused == 0)) {
+ var f = _139.shift()[_13a];
+ if (!f) {
+ continue;
+ }
+ var func = function() {
+ var ret = f(res);
+ if (typeof ret != "undefined") {
+ res = ret;
+ }
+ _13a = ((res instanceof Error) ? 1 : 0);
+ if (res instanceof dojo.Deferred) {
+ cb = function(res) {
+ self._resback(res);
+ self.paused--;
+ if ((self.paused == 0) && (self.fired >= 0)) {
+ self._fire();
+ }
+ };
+ this.paused++;
+ }
+ };
+ if (dojo.config.debugAtAllCosts) {
+ func.call(this);
+ } else {
+ try {
+ func.call(this);
+ } catch(err) {
+ _13a = 1;
+ res = err;
+ }
+ }
+ }
+ this.fired = _13a;
+ this.results[_13a] = res;
+ if ((cb) && (this.paused)) {
+ res.addBoth(cb);
+ }
+ }});
+ }
+ if (!dojo._hasResource["dojo._base.json"]) {
+ dojo._hasResource["dojo._base.json"] = true;
+ dojo.provide("dojo._base.json");
+ dojo.fromJson = function(json) {
+ return eval("(" + json + ")");
+ };
+ dojo._escapeString = function(str) {
+ return ("\"" + str.replace(/(["\\])/g, "\\$1")
+ + "\"").replace(/[\f]/g, "\\f").replace(/[\b]/g, "\\b").replace(/[\n]/g, "\\n").replace(/[\t]/g, "\\t").replace(/[\r]/g, "\\r");
+ };
+ dojo.toJsonIndentStr = "\t";
+ dojo.toJson = function(it, _145, _146) {
+ if (it === undefined) {
+ return "undefined";
+ }
+ var _147 = typeof it;
+ if (_147 == "number" || _147 == "boolean") {
+ return it + "";
+ }
+ if (it === null) {
+ return "null";
+ }
+ if (dojo.isString(it)) {
+ return dojo._escapeString(it);
+ }
+ var _148 = arguments.callee;
+ var _149;
+ _146 = _146 || "";
+ var _14a = _145 ? _146 + dojo.toJsonIndentStr : "";
+ var tf = it.__json__ || it.json;
+ if (dojo.isFunction(tf)) {
+ _149 = tf.call(it);
+ if (it !== _149) {
+ return _148(_149, _145, _14a);
+ }
+ }
+ if (it.nodeType && it.cloneNode) {
+ throw new Error("Can't serialize DOM nodes");
+ }
+ var sep = _145 ? " " : "";
+ var _14d = _145 ? "\n" : "";
+ if (dojo.isArray(it)) {
+ var res = dojo.map(it, function(obj) {
+ var val = _148(obj, _145, _14a);
+ if (typeof val != "string") {
+ val = "undefined";
+ }
+ return _14d + _14a + val;
+ });
+ return "[" + res.join("," + sep) + _14d + _146 + "]";
+ }
+ if (_147 == "function") {
+ return null;
+ }
+ var _151 = [],key;
+ for (key in it) {
+ var _153,val;
+ if (typeof key == "number") {
+ _153 = "\"" + key + "\"";
+ } else {
+ if (typeof key == "string") {
+ _153 = dojo._escapeString(key);
+ } else {
+ continue;
+ }
+ }
+ val = _148(it[key], _145, _14a);
+ if (typeof val != "string") {
+ continue;
+ }
+ _151.push(_14d + _14a + _153 + ":" + sep + val);
+ }
+ return "{" + _151.join("," + sep) + _14d + _146 + "}";
+ };
+ }
+ if (!dojo._hasResource["dojo._base.array"]) {
+ dojo._hasResource["dojo._base.array"] = true;
+ dojo.provide("dojo._base.array");
+ (function() {
+ var _155 = function(arr, obj, cb) {
+ return [dojo.isString(arr) ? arr.split("") : arr,obj
+ || dojo.global,dojo.isString(cb)
+ ? new Function("item", "index", "array", cb) : cb];
+ };
+ dojo.mixin(dojo, {indexOf:function(_159, _15a, _15b, _15c) {
+ var step = 1,end = _159.length || 0,i = 0;
+ if (_15c) {
+ i = end - 1;
+ step = end = -1;
+ }
+ if (_15b != undefined) {
+ i = _15b;
+ }
+ if ((_15c && i > end) || i < end) {
+ for (; i != end; i += step) {
+ if (_159[i] == _15a) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ },lastIndexOf:function(_15f, _160, _161) {
+ return dojo.indexOf(_15f, _160, _161, true);
+ },forEach:function(arr, _163, _164) {
+ if (!arr || !arr.length) {
+ return;
+ }
+ var _p = _155(arr, _164, _163);
+ arr = _p[0];
+ for (var i = 0,l = arr.length; i < l; ++i) {
+ _p[2].call(_p[1], arr[i], i, arr);
+ }
+ },_everyOrSome:function(_168, arr, _16a, _16b) {
+ var _p = _155(arr, _16b, _16a);
+ arr = _p[0];
+ for (var i = 0,l = arr.length; i < l; ++i) {
+ var _16f = !!_p[2].call(_p[1], arr[i], i, arr);
+ if (_168 ^ _16f) {
+ return _16f;
+ }
+ }
+ return _168;
+ },every:function(arr, _171, _172) {
+ return this._everyOrSome(true, arr, _171, _172);
+ },some:function(arr, _174, _175) {
+ return this._everyOrSome(false, arr, _174, _175);
+ },map:function(arr, _177, _178) {
+ var _p = _155(arr, _178, _177);
+ arr = _p[0];
+ var _17a = (arguments[3] ? (new arguments[3]()) : []);
+ for (var i = 0,l = arr.length; i < l; ++i) {
+ _17a.push(_p[2].call(_p[1], arr[i], i, arr));
+ }
+ return _17a;
+ },filter:function(arr, _17e, _17f) {
+ var _p = _155(arr, _17f, _17e);
+ arr = _p[0];
+ var _181 = [];
+ for (var i = 0,l = arr.length; i < l; ++i) {
+ if (_p[2].call(_p[1], arr[i], i, arr)) {
+ _181.push(arr[i]);
+ }
+ }
+ return _181;
+ }});
+ })();
+ }
+ if (!dojo._hasResource["dojo._base.Color"]) {
+ dojo._hasResource["dojo._base.Color"] = true;
+ dojo.provide("dojo._base.Color");
+ (function() {
+ var d = dojo;
+ dojo.Color = function(_185) {
+ if (_185) {
+ this.setColor(_185);
+ }
+ };
+ dojo.Color.named
+ = {black:[0,0,0],silver:[192,192,192],gray:[128,128,128],white:[255,255,255],maroon:[128,0,0],red:[255,0,0],purple:[128,0,128],fuchsia:[255,0,255],green:[0,128,0],lime:[0,255,0],olive:[128,128,0],yellow:[255,255,0],navy:[0,0,128],blue:[0,0,255],teal:[0,128,128],aqua:[0,255,255]};
+ dojo.extend(dojo.Color, {r:255,g:255,b:255,a:1,_set:function(r, g,
+ b, a) {
+ var t = this;
+ t.r = r;
+ t.g = g;
+ t.b = b;
+ t.a = a;
+ },setColor:function(_18b) {
+ if (d.isString(_18b)) {
+ d.colorFromString(_18b, this);
+ } else {
+ if (d.isArray(_18b)) {
+ d.colorFromArray(_18b, this);
+ } else {
+ this._set(_18b.r, _18b.g, _18b.b, _18b.a);
+ if (!(_18b instanceof d.Color)) {
+ this.sanitize();
+ }
+ }
+ }
+ return this;
+ },sanitize:function() {
+ return this;
+ },toRgb:function() {
+ var t = this;
+ return [t.r,t.g,t.b];
+ },toRgba:function() {
+ var t = this;
+ return [t.r,t.g,t.b,t.a];
+ },toHex:function() {
+ var arr = d.map(["r","g","b"], function(x) {
+ var s = this[x].toString(16);
+ return s.length < 2 ? "0" + s : s;
+ }, this);
+ return "#" + arr.join("");
+ },toCss:function(_191) {
+ var t = this,rgb = t.r + ", " + t.g + ", " + t.b;
+ return (_191 ? "rgba(" + rgb + ", " + t.a : "rgb(" + rgb) + ")";
+ },toString:function() {
+ return this.toCss(true);
+ }});
+ dojo.blendColors = function(_194, end, _196, obj) {
+ var t = obj || new d.Color();
+ d.forEach(["r","g","b","a"], function(x) {
+ t[x] = _194[x] + (end[x] - _194[x]) * _196;
+ if (x != "a") {
+ t[x] = Math.round(t[x]);
+ }
+ });
+ return t.sanitize();
+ };
+ dojo.colorFromRgb = function(_19a, obj) {
+ var m = _19a.toLowerCase().match(/^rgba?\(([\s\.,0-9]+)\)/);
+ return m && dojo.colorFromArray(m[1].split(/\s*,\s*/), obj);
+ };
+ dojo.colorFromHex = function(_19d, obj) {
+ var t = obj || new d.Color(),bits = (_19d.length == 4) ? 4
+ : 8,mask = (1 << bits) - 1;
+ _19d = Number("0x" + _19d.substr(1));
+ if (isNaN(_19d)) {
+ return null;
+ }
+ d.forEach(["b","g","r"], function(x) {
+ var c = _19d & mask;
+ _19d >>= bits;
+ t[x] = bits == 4 ? 17 * c : c;
+ });
+ t.a = 1;
+ return t;
+ };
+ dojo.colorFromArray = function(a, obj) {
+ var t = obj || new d.Color();
+ t._set(Number(a[0]), Number(a[1]), Number(a[2]), Number(a[3]));
+ if (isNaN(t.a)) {
+ t.a = 1;
+ }
+ return t.sanitize();
+ };
+ dojo.colorFromString = function(str, obj) {
+ var a = d.Color.named[str];
+ return a && d.colorFromArray(a, obj) || d.colorFromRgb(str, obj)
+ || d.colorFromHex(str, obj);
+ };
+ })();
+ }
+ if (!dojo._hasResource["dojo._base"]) {
+ dojo._hasResource["dojo._base"] = true;
+ dojo.provide("dojo._base");
+ }
+ if (!dojo._hasResource["dojo._base.window"]) {
+ dojo._hasResource["dojo._base.window"] = true;
+ dojo.provide("dojo._base.window");
+ dojo.doc = window["document"] || null;
+ dojo.body = function() {
+ return dojo.doc.body || dojo.doc.getElementsByTagName("body")[0];
+ };
+ dojo.setContext = function(_1aa, _1ab) {
+ dojo.global = _1aa;
+ dojo.doc = _1ab;
+ };
+ dojo.withGlobal = function(_1ac, _1ad, _1ae, _1af) {
+ var _1b0 = dojo.global;
+ try {
+ dojo.global = _1ac;
+ return dojo.withDoc.call(null, _1ac.document, _1ad, _1ae, _1af);
+ } finally {
+ dojo.global = _1b0;
+ }
+ };
+ dojo.withDoc = function(_1b1, _1b2, _1b3, _1b4) {
+ var _1b5 = dojo.doc,_1b6 = dojo._bodyLtr;
+ try {
+ dojo.doc = _1b1;
+ delete dojo._bodyLtr;
+ if (_1b3 && dojo.isString(_1b2)) {
+ _1b2 = _1b3[_1b2];
+ }
+ return _1b2.apply(_1b3, _1b4 || []);
+ } finally {
+ dojo.doc = _1b5;
+ if (_1b6 !== undefined) {
+ dojo._bodyLtr = _1b6;
+ }
+ }
+ };
+ }
+ if (!dojo._hasResource["dojo._base.event"]) {
+ dojo._hasResource["dojo._base.event"] = true;
+ dojo.provide("dojo._base.event");
+ (function() {
+ var del = (dojo._event_listener = {add:function(node, name, fp) {
+ if (!node) {
+ return;
+ }
+ name = del._normalizeEventName(name);
+ fp = del._fixCallback(name, fp);
+ var _1bb = name;
+ if (!dojo.isIE && (name == "mouseenter" || name
+ == "mouseleave")) {
+ var ofp = fp;
+ name = (name == "mouseenter") ? "mouseover" : "mouseout";
+ fp = function(e) {
+ if (dojo.isFF <= 2) {
+ try {
+ e.relatedTarget.tagName;
+ } catch(e2) {
+ return;
+ }
+ }
+ if (!dojo.isDescendant(e.relatedTarget, node)) {
+ return ofp.call(this, e);
+ }
+ };
+ }
+ node.addEventListener(name, fp, false);
+ return fp;
+ },remove:function(node, _1bf, _1c0) {
+ if (node) {
+ _1bf = del._normalizeEventName(_1bf);
+ if (!dojo.isIE && (_1bf == "mouseenter" || _1bf
+ == "mouseleave")) {
+ _1bf = (_1bf == "mouseenter") ? "mouseover"
+ : "mouseout";
+ }
+ node.removeEventListener(_1bf, _1c0, false);
+ }
+ },_normalizeEventName:function(name) {
+ return name.slice(0, 2) == "on" ? name.slice(2) : name;
+ },_fixCallback:function(name, fp) {
+ return name != "keypress" ? fp : function(e) {
+ return fp.call(this, del._fixEvent(e, this));
+ };
+ },_fixEvent:function(evt, _1c6) {
+ switch (evt.type) {case "keypress":del._setKeyChar(evt);break;}
+ return evt;
+ },_setKeyChar:function(evt) {
+ evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode)
+ : "";
+ evt.charOrCode = evt.keyChar || evt.keyCode;
+ },_punctMap:{106:42,111:47,186:59,187:43,188:44,189:45,190:46,191:47,192:96,219:91,220:92,221:93,222:39}});
+ dojo.fixEvent = function(evt, _1c9) {
+ return del._fixEvent(evt, _1c9);
+ };
+ dojo.stopEvent = function(evt) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ };
+ var _1cb = dojo._listener;
+ dojo._connect = function(obj, _1cd, _1ce, _1cf, _1d0) {
+ var _1d1 = obj && (obj.nodeType || obj.attachEvent
+ || obj.addEventListener);
+ var lid = _1d1 ? (_1d0 ? 2 : 1)
+ : 0,l = [dojo._listener,del,_1cb][lid];
+ var h = l.add(obj, _1cd, dojo.hitch(_1ce, _1cf));
+ return [obj,_1cd,h,lid];
+ };
+ dojo._disconnect = function(obj, _1d6, _1d7, _1d8) {
+ ([dojo._listener,del,_1cb][_1d8]).remove(obj, _1d6, _1d7);
+ };
+ dojo.keys
+ = {BACKSPACE:8,TAB:9,CLEAR:12,ENTER:13,SHIFT:16,CTRL:17,ALT:18,PAUSE:19,CAPS_LOCK:20,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,INSERT:45,DELETE:46,HELP:47,LEFT_WINDOW:91,RIGHT_WINDOW:92,SELECT:93,NUMPAD_0:96,NUMPAD_1:97,NUMPAD_2:98,NUMPAD_3:99,NUMPAD_4:100,NUMPAD_5:101,NUMPAD_6:102,NUMPAD_7:103,NUMPAD_8:104,NUMPAD_9:105,NUMPAD_MULTIPLY:106,NUMPAD_PLUS:107,NUMPAD_ENTER:108,NUMPAD_MINUS:109,NUMPAD_PERIOD:110,NUMPAD_DIVIDE: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,F13:124,F14:125,F15:126,NUM_LOCK:144,SCROLL_LOCK:145};
+ if (dojo.isIE) {
+ var _1d9 = function(e, code) {
+ try {
+ return (e.keyCode = code);
+ } catch(e) {
+ return 0;
+ }
+ };
+ var iel = dojo._listener;
+ var _1dd = (dojo._ieListenersName = "_" + dojo._scopeName
+ + "_listeners");
+ if (!dojo.config._allow_leaks) {
+ _1cb = iel = dojo._ie_listener = {handlers:[],add:function(
+ _1de, _1df, _1e0) {
+ _1de = _1de || dojo.global;
+ var f = _1de[_1df];
+ if (!f || !f[_1dd]) {
+ var d = dojo._getIeDispatcher();
+ d.target = f && (ieh.push(f) - 1);
+ d[_1dd] = [];
+ f = _1de[_1df] = d;
+ }
+ return f[_1dd].push(ieh.push(_1e0) - 1);
+ },remove:function(_1e4, _1e5, _1e6) {
+ var f = (_1e4 || dojo.global)[_1e5],l = f && f[_1dd];
+ if (f && l && _1e6--) {
+ delete ieh[l[_1e6]];
+ delete l[_1e6];
+ }
+ }};
+ var ieh = iel.handlers;
+ }
+ dojo.mixin(del, {add:function(node, _1ea, fp) {
+ if (!node) {
+ return;
+ }
+ _1ea = del._normalizeEventName(_1ea);
+ if (_1ea == "onkeypress") {
+ var kd = node.onkeydown;
+ if (!kd || !kd[_1dd] || !kd._stealthKeydownHandle) {
+ var h = del.add(node, "onkeydown", del._stealthKeyDown);
+ kd = node.onkeydown;
+ kd._stealthKeydownHandle = h;
+ kd._stealthKeydownRefs = 1;
+ } else {
+ kd._stealthKeydownRefs++;
+ }
+ }
+ return iel.add(node, _1ea, del._fixCallback(fp));
+ },remove:function(node, _1ef, _1f0) {
+ _1ef = del._normalizeEventName(_1ef);
+ iel.remove(node, _1ef, _1f0);
+ if (_1ef == "onkeypress") {
+ var kd = node.onkeydown;
+ if (--kd._stealthKeydownRefs <= 0) {
+ iel.remove(node, "onkeydown", kd._stealthKeydownHandle);
+ delete kd._stealthKeydownHandle;
+ }
+ }
+ },_normalizeEventName:function(_1f2) {
+ return _1f2.slice(0, 2) != "on" ? "on" + _1f2 : _1f2;
+ },_nop:function() {
+ },_fixEvent:function(evt, _1f4) {
+ if (!evt) {
+ var w = _1f4 && (_1f4.ownerDocument || _1f4.document
+ || _1f4).parentWindow || window;
+ evt = w.event;
+ }
+ if (!evt) {
+ return (evt);
+ }
+ evt.target = evt.srcElement;
+ evt.currentTarget = (_1f4 || evt.srcElement);
+ evt.layerX = evt.offsetX;
+ evt.layerY = evt.offsetY;
+ var se = evt.srcElement,doc = (se && se.ownerDocument)
+ || document;
+ var _1f8 = ((dojo.isIE < 6) || (doc["compatMode"]
+ == "BackCompat")) ? doc.body : doc.documentElement;
+ var _1f9 = dojo._getIeDocumentElementOffset();
+ evt.pageX = evt.clientX
+ + dojo._fixIeBiDiScrollLeft(_1f8.scrollLeft || 0)
+ - _1f9.x;
+ evt.pageY = evt.clientY + (_1f8.scrollTop || 0) - _1f9.y;
+ if (evt.type == "mouseover") {
+ evt.relatedTarget = evt.fromElement;
+ }
+ if (evt.type == "mouseout") {
+ evt.relatedTarget = evt.toElement;
+ }
+ evt.stopPropagation = del._stopPropagation;
+ evt.preventDefault = del._preventDefault;
+ return del._fixKeys(evt);
+ },_fixKeys:function(evt) {
+ switch (evt.type) {case "keypress":var c = ("charCode"
+ in evt ? evt.charCode : evt.keyCode);if (c == 10) {
+ c = 0;
+ evt.keyCode = 13;
+ } else {
+ if (c == 13 || c == 27) {
+ c = 0;
+ } else {
+ if (c == 3) {
+ c = 99;
+ }
+ }
+ }evt.charCode = c;del._setKeyChar(evt);break;}
+ return evt;
+ },_stealthKeyDown:function(evt) {
+ var kp = evt.currentTarget.onkeypress;
+ if (!kp || !kp[_1dd]) {
+ return;
+ }
+ var k = evt.keyCode;
+ var _1ff = k != 13 && k != 32 && k != 27 && (k < 48 || k
+ > 90) && (k < 96 || k > 111) && (k < 186 || k > 192)
+ && (k < 219 || k > 222);
+ if (_1ff || evt.ctrlKey) {
+ var c = _1ff ? 0 : k;
+ if (evt.ctrlKey) {
+ if (k == 3 || k == 13) {
+ return;
+ } else {
+ if (c > 95 && c < 106) {
+ c -= 48;
+ } else {
+ if ((!evt.shiftKey) && (c >= 65 && c
+ <= 90)) {
+ c += 32;
+ } else {
+ c = del._punctMap[c] || c;
+ }
+ }
+ }
+ }
+ var faux = del._synthesizeEvent(evt, {type:"keypress",faux:true,charCode:c});
+ kp.call(evt.currentTarget, faux);
+ evt.cancelBubble = faux.cancelBubble;
+ evt.returnValue = faux.returnValue;
+ _1d9(evt, faux.keyCode);
+ }
+ },_stopPropagation:function() {
+ this.cancelBubble = true;
+ },_preventDefault:function() {
+ this.bubbledKeyCode = this.keyCode;
+ if (this.ctrlKey) {
+ _1d9(this, 0);
+ }
+ this.returnValue = false;
+ }});
+ dojo.stopEvent = function(evt) {
+ evt = evt || window.event;
+ del._stopPropagation.call(evt);
+ del._preventDefault.call(evt);
+ };
+ }
+ del._synthesizeEvent = function(evt, _204) {
+ var faux = dojo.mixin({}, evt, _204);
+ del._setKeyChar(faux);
+ faux.preventDefault = function() {
+ evt.preventDefault();
+ };
+ faux.stopPropagation = function() {
+ evt.stopPropagation();
+ };
+ return faux;
+ };
+ if (dojo.isOpera) {
+ dojo.mixin(del, {_fixEvent:function(evt, _207) {
+ switch (evt.type) {case "keypress":var c = evt.which;if (c
+ == 3) {
+ c = 99;
+ }c = c < 41 && !evt.shiftKey ? 0 : c;if (evt.ctrlKey
+ && !evt.shiftKey && c >= 65 && c <= 90) {
+ c += 32;
+ }return del._synthesizeEvent(evt, {charCode:c});}
+ return evt;
+ }});
+ }
+ if (dojo.isWebKit) {
+ del._add = del.add;
+ del._remove = del.remove;
+ dojo.mixin(del, {add:function(node, _20a, fp) {
+ if (!node) {
+ return;
+ }
+ var _20c = del._add(node, _20a, fp);
+ if (del._normalizeEventName(_20a) == "keypress") {
+ _20c._stealthKeyDownHandle
+ = del._add(node, "keydown", function(evt) {
+ var k = evt.keyCode;
+ var _20f = k != 13 && k != 32 && k != 27 && (k < 48
+ || k > 90) && (k < 96 || k > 111) && (k
+ < 186 || k > 192) && (k < 219 || k > 222);
+ if (_20f || evt.ctrlKey) {
+ var c = _20f ? 0 : k;
+ if (evt.ctrlKey) {
+ if (k == 3 || k == 13) {
+ return;
+ } else {
+ if (c > 95 && c < 106) {
+ c -= 48;
+ } else {
+ if (!evt.shiftKey && c >= 65 && c
+ <= 90) {
+ c += 32;
+ } else {
+ c = del._punctMap[c] || c;
+ }
+ }
+ }
+ }
+ var faux = del._synthesizeEvent(evt, {type:"keypress",faux:true,charCode:c});
+ fp.call(evt.currentTarget, faux);
+ }
+ });
+ }
+ return _20c;
+ },remove:function(node, _213, _214) {
+ if (node) {
+ if (_214._stealthKeyDownHandle) {
+ del._remove(node, "keydown", _214._stealthKeyDownHandle);
+ }
+ del._remove(node, _213, _214);
+ }
+ },_fixEvent:function(evt, _216) {
+ switch (evt.type) {case "keypress":if (evt.faux) {
+ return evt;
+ }var c = evt.charCode;c = c >= 32 ? c
+ : 0;return del._synthesizeEvent(evt, {charCode:c,faux:true});}
+ return evt;
+ }});
+ }
+ })();
+ if (dojo.isIE) {
+ dojo._ieDispatcher = function(args, _219) {
+ var ap = Array.prototype,h = dojo._ie_listener.handlers,c = args.callee,ls = c[dojo._ieListenersName],t = h[c.target];
+ var r = t && t.apply(_219, args);
+ var lls = [].concat(ls);
+ for (var i in lls) {
+ var f = h[lls[i]];
+ if (!(i in ap) && f) {
+ f.apply(_219, args);
+ }
+ }
+ return r;
+ };
+ dojo._getIeDispatcher = function() {
+ return new Function(dojo._scopeName
+ + "._ieDispatcher(arguments, this)");
+ };
+ dojo._event_listener._fixCallback = function(fp) {
+ var f = dojo._event_listener._fixEvent;
+ return function(e) {
+ return fp.call(this, f(e, this));
+ };
+ };
+ }
+ }
+ if (!dojo._hasResource["dojo._base.html"]) {
+ dojo._hasResource["dojo._base.html"] = true;
+ dojo.provide("dojo._base.html");
+ try {
+ document.execCommand("BackgroundImageCache", false, true);
+ } catch(e) {
+ }
+ if (dojo.isIE || dojo.isOpera) {
+ dojo.byId = function(id, doc) {
+ if (dojo.isString(id)) {
+ var _d = doc || dojo.doc;
+ var te = _d.getElementById(id);
+ if (te && (te.attributes.id.value == id || te.id == id)) {
+ return te;
+ } else {
+ var eles = _d.all[id];
+ if (!eles || eles.nodeName) {
+ eles = [eles];
+ }
+ var i = 0;
+ while ((te = eles[i++])) {
+ if ((te.attributes && te.attributes.id
+ && te.attributes.id.value == id) || te.id
+ == id) {
+ return te;
+ }
+ }
+ }
+ } else {
+ return id;
+ }
+ };
+ } else {
+ dojo.byId = function(id, doc) {
+ return dojo.isString(id) ? (doc || dojo.doc).getElementById(id)
+ : id;
+ };
+ }
+ (function() {
+ var d = dojo;
+ var _22f = null;
+ d.addOnWindowUnload(function() {
+ _22f = null;
+ });
+ dojo._destroyElement = dojo.destroy = function(node) {
+ node = d.byId(node);
+ try {
+ if (!_22f || _22f.ownerDocument != node.ownerDocument) {
+ _22f = node.ownerDocument.createElement("div");
+ }
+ _22f.appendChild(node.parentNode
+ ? node.parentNode.removeChild(node) : node);
+ _22f.innerHTML = "";
+ } catch(e) {
+ }
+ };
+ dojo.isDescendant = function(node, _232) {
+ try {
+ node = d.byId(node);
+ _232 = d.byId(_232);
+ while (node) {
+ if (node === _232) {
+ return true;
+ }
+ node = node.parentNode;
+ }
+ } catch(e) {
+ }
+ return false;
+ };
+ dojo.setSelectable = function(node, _234) {
+ node = d.byId(node);
+ if (d.isMozilla) {
+ node.style.MozUserSelect = _234 ? "" : "none";
+ } else {
+ if (d.isKhtml || d.isWebKit) {
+ node.style.KhtmlUserSelect = _234 ? "auto" : "none";
+ } else {
+ if (d.isIE) {
+ var v = (node.unselectable = _234 ? "" : "on");
+ d.query("*", node).forEach("item.unselectable = '"
+ + v + "'");
+ }
+ }
+ }
+ };
+ var _236 = function(node, ref) {
+ var _239 = ref.parentNode;
+ if (_239) {
+ _239.insertBefore(node, ref);
+ }
+ };
+ var _23a = function(node, ref) {
+ var _23d = ref.parentNode;
+ if (_23d) {
+ if (_23d.lastChild == ref) {
+ _23d.appendChild(node);
+ } else {
+ _23d.insertBefore(node, ref.nextSibling);
+ }
+ }
+ };
+ dojo.place = function(node, _23f, _240) {
+ _23f = d.byId(_23f);
+ if (d.isString(node)) {
+ node = node.charAt(0) == "<"
+ ? d._toDom(node, _23f.ownerDocument) : d.byId(node);
+ }
+ if (typeof _240 == "number") {
+ var cn = _23f.childNodes;
+ if (!cn.length || cn.length <= _240) {
+ _23f.appendChild(node);
+ } else {
+ _236(node, cn[_240 < 0 ? 0 : _240]);
+ }
+ } else {
+ switch (_240) {case "before":_236(node, _23f);break;case "after":_23a(node, _23f);break;case "replace":_23f.parentNode.replaceChild(node, _23f);break;case "only":d.empty(_23f);_23f.appendChild(node);break;case "first":if (_23f.firstChild) {
+ _236(node, _23f.firstChild);
+ break;
+ }default:_23f.appendChild(node);}
+ }
+ return node;
+ };
+ dojo.boxModel = "content-box";
+ if (d.isIE) {
+ var _dcm = document.compatMode;
+ d.boxModel = _dcm == "BackCompat" || _dcm == "QuirksMode"
+ || d.isIE < 6 ? "border-box" : "content-box";
+ }
+ var gcs;
+ if (d.isWebKit) {
+ gcs = function(node) {
+ var s;
+ if (node instanceof HTMLElement) {
+ var dv = node.ownerDocument.defaultView;
+ s = dv.getComputedStyle(node, null);
+ if (!s && node.style) {
+ node.style.display = "";
+ s = dv.getComputedStyle(node, null);
+ }
+ }
+ return s || {};
+ };
+ } else {
+ if (d.isIE) {
+ gcs = function(node) {
+ return node.nodeType == 1 ? node.currentStyle : {};
+ };
+ } else {
+ gcs = function(node) {
+ return node instanceof HTMLElement
+ ? node.ownerDocument.defaultView.getComputedStyle(node, null)
+ : {};
+ };
+ }
+ }
+ dojo.getComputedStyle = gcs;
+ if (!d.isIE) {
+ d._toPixelValue = function(_249, _24a) {
+ return parseFloat(_24a) || 0;
+ };
+ } else {
+ d._toPixelValue = function(_24b, _24c) {
+ if (!_24c) {
+ return 0;
+ }
+ if (_24c == "medium") {
+ return 4;
+ }
+ if (_24c.slice && _24c.slice(-2) == "px") {
+ return parseFloat(_24c);
+ }
+ with (_24b) {
+ var _24d = style.left;
+ var _24e = runtimeStyle.left;
+ runtimeStyle.left = currentStyle.left;
+ try {
+ style.left = _24c;
+ _24c = style.pixelLeft;
+ } catch(e) {
+ _24c = 0;
+ }
+ style.left = _24d;
+ runtimeStyle.left = _24e;
+ }
+ return _24c;
+ };
+ }
+ var px = d._toPixelValue;
+ var astr = "DXImageTransform.Microsoft.Alpha";
+ var af = function(n, f) {
+ try {
+ return n.filters.item(astr);
+ } catch(e) {
+ return f ? {} : null;
+ }
+ };
+ dojo._getOpacity = d.isIE ? function(node) {
+ try {
+ return af(node).Opacity / 100;
+ } catch(e) {
+ return 1;
+ }
+ } : function(node) {
+ return gcs(node).opacity;
+ };
+ dojo._setOpacity = d.isIE ? function(node, _257) {
+ var ov = _257 * 100;
+ node.style.zoom = 1;
+ af(node, 1).Enabled = !(_257 == 1);
+ if (!af(node)) {
+ node.style.filter += " progid:" + astr + "(Opacity=" + ov
+ + ")";
+ } else {
+ af(node, 1).Opacity = ov;
+ }
+ if (node.nodeName.toLowerCase() == "tr") {
+ d.query("> td", node).forEach(function(i) {
+ d._setOpacity(i, _257);
+ });
+ }
+ return _257;
+ } : function(node, _25b) {
+ return node.style.opacity = _25b;
+ };
+ var _25c = {left:true,top:true};
+ var _25d = /margin|padding|width|height|max|min|offset/;
+ var _25e = function(node, type, _261) {
+ type = type.toLowerCase();
+ if (d.isIE) {
+ if (_261 == "auto") {
+ if (type == "height") {
+ return node.offsetHeight;
+ }
+ if (type == "width") {
+ return node.offsetWidth;
+ }
+ }
+ if (type == "fontweight") {
+ switch (_261) {case 700:return "bold";case 400:default:return "normal";}
+ }
+ }
+ if (!(type in _25c)) {
+ _25c[type] = _25d.test(type);
+ }
+ return _25c[type] ? px(node, _261) : _261;
+ };
+ var _262 = d.isIE ? "styleFloat"
+ : "cssFloat",_263 = {"cssFloat":_262,"styleFloat":_262,"float":_262};
+ dojo.style = function(node, _265, _266) {
+ var n = d.byId(node),args = arguments.length,op = (_265
+ == "opacity");
+ _265 = _263[_265] || _265;
+ if (args == 3) {
+ return op ? d._setOpacity(n, _266) : n.style[_265] = _266;
+ }
+ if (args == 2 && op) {
+ return d._getOpacity(n);
+ }
+ var s = gcs(n);
+ if (args == 2 && !d.isString(_265)) {
+ for (var x in _265) {
+ d.style(node, x, _265[x]);
+ }
+ return s;
+ }
+ return (args == 1) ? s : _25e(n, _265, s[_265]
+ || n.style[_265]);
+ };
+ dojo._getPadExtents = function(n, _26d) {
+ var s = _26d
+ || gcs(n),l = px(n, s.paddingLeft),t = px(n, s.paddingTop);
+ return {l:l,t:t,w:l + px(n, s.paddingRight),h:t
+ + px(n, s.paddingBottom)};
+ };
+ dojo._getBorderExtents = function(n, _272) {
+ var ne = "none",s = _272 || gcs(n),bl = (s.borderLeftStyle != ne
+ ? px(n, s.borderLeftWidth) : 0),bt = (s.borderTopStyle
+ != ne ? px(n, s.borderTopWidth) : 0);
+ return {l:bl,t:bt,w:bl + (s.borderRightStyle != ne
+ ? px(n, s.borderRightWidth) : 0),h:bt
+ + (s.borderBottomStyle != ne
+ ? px(n, s.borderBottomWidth) : 0)};
+ };
+ dojo._getPadBorderExtents = function(n, _278) {
+ var s = _278
+ || gcs(n),p = d._getPadExtents(n, s),b = d._getBorderExtents(n, s);
+ return {l:p.l + b.l,t:p.t + b.t,w:p.w + b.w,h:p.h + b.h};
+ };
+ dojo._getMarginExtents = function(n, _27d) {
+ var s = _27d
+ || gcs(n),l = px(n, s.marginLeft),t = px(n, s.marginTop),r = px(n, s.marginRight),b = px(n, s.marginBottom);
+ if (d.isWebKit && (s.position != "absolute")) {
+ r = l;
+ }
+ return {l:l,t:t,w:l + r,h:t + b};
+ };
+ dojo._getMarginBox = function(node, _284) {
+ var s = _284 || gcs(node),me = d._getMarginExtents(node, s);
+ var l = node.offsetLeft - me.l,t = node.offsetTop
+ - me.t,p = node.parentNode;
+ if (d.isMoz) {
+ var sl = parseFloat(s.left),st = parseFloat(s.top);
+ if (!isNaN(sl) && !isNaN(st)) {
+ l = sl,t = st;
+ } else {
+ if (p && p.style) {
+ var pcs = gcs(p);
+ if (pcs.overflow != "visible") {
+ var be = d._getBorderExtents(p, pcs);
+ l += be.l,t += be.t;
+ }
+ }
+ }
+ } else {
+ if (d.isOpera || (d.isIE > 7 && !d.isQuirks)) {
+ if (p) {
+ be = d._getBorderExtents(p);
+ l -= be.l;
+ t -= be.t;
+ }
+ }
+ }
+ return {l:l,t:t,w:node.offsetWidth + me.w,h:node.offsetHeight
+ + me.h};
+ };
+ dojo._getContentBox = function(node, _28f) {
+ var s = _28f
+ || gcs(node),pe = d._getPadExtents(node, s),be = d._getBorderExtents(node, s),w = node.clientWidth,h;
+ if (!w) {
+ w = node.offsetWidth,h = node.offsetHeight;
+ } else {
+ h = node.clientHeight,be.w = be.h = 0;
+ }
+ if (d.isOpera) {
+ pe.l += be.l;
+ pe.t += be.t;
+ }
+ return {l:pe.l,t:pe.t,w:w - pe.w - be.w,h:h - pe.h - be.h};
+ };
+ dojo._getBorderBox = function(node, _296) {
+ var s = _296
+ || gcs(node),pe = d._getPadExtents(node, s),cb = d._getContentBox(node, s);
+ return {l:cb.l - pe.l,t:cb.t - pe.t,w:cb.w + pe.w,h:cb.h
+ + pe.h};
+ };
+ dojo._setBox = function(node, l, t, w, h, u) {
+ u = u || "px";
+ var s = node.style;
+ if (!isNaN(l)) {
+ s.left = l + u;
+ }
+ if (!isNaN(t)) {
+ s.top = t + u;
+ }
+ if (w >= 0) {
+ s.width = w + u;
+ }
+ if (h >= 0) {
+ s.height = h + u;
+ }
+ };
+ dojo._isButtonTag = function(node) {
+ return node.tagName == "BUTTON" || node.tagName == "INPUT"
+ && node.getAttribute("type").toUpperCase() == "BUTTON";
+ };
+ dojo._usesBorderBox = function(node) {
+ var n = node.tagName;
+ return d.boxModel == "border-box" || n == "TABLE"
+ || d._isButtonTag(node);
+ };
+ dojo._setContentSize = function(node, _2a5, _2a6, _2a7) {
+ if (d._usesBorderBox(node)) {
+ var pb = d._getPadBorderExtents(node, _2a7);
+ if (_2a5 >= 0) {
+ _2a5 += pb.w;
+ }
+ if (_2a6 >= 0) {
+ _2a6 += pb.h;
+ }
+ }
+ d._setBox(node, NaN, NaN, _2a5, _2a6);
+ };
+ dojo._setMarginBox = function(node, _2aa, _2ab, _2ac, _2ad, _2ae) {
+ var s = _2ae || gcs(node),bb = d._usesBorderBox(node),pb = bb
+ ? _2b2 : d._getPadBorderExtents(node, s);
+ if (d.isWebKit) {
+ if (d._isButtonTag(node)) {
+ var ns = node.style;
+ if (_2ac >= 0 && !ns.width) {
+ ns.width = "4px";
+ }
+ if (_2ad >= 0 && !ns.height) {
+ ns.height = "4px";
+ }
+ }
+ }
+ var mb = d._getMarginExtents(node, s);
+ if (_2ac >= 0) {
+ _2ac = Math.max(_2ac - pb.w - mb.w, 0);
+ }
+ if (_2ad >= 0) {
+ _2ad = Math.max(_2ad - pb.h - mb.h, 0);
+ }
+ d._setBox(node, _2aa, _2ab, _2ac, _2ad);
+ };
+ var _2b2 = {l:0,t:0,w:0,h:0};
+ dojo.marginBox = function(node, box) {
+ var n = d.byId(node),s = gcs(n),b = box;
+ return !b ? d._getMarginBox(n, s)
+ : d._setMarginBox(n, b.l, b.t, b.w, b.h, s);
+ };
+ dojo.contentBox = function(node, box) {
+ var n = d.byId(node),s = gcs(n),b = box;
+ return !b ? d._getContentBox(n, s)
+ : d._setContentSize(n, b.w, b.h, s);
+ };
+ var _2bf = function(node, prop) {
+ if (!(node = (node || 0).parentNode)) {
+ return 0;
+ }
+ var val,_2c3 = 0,_b = d.body();
+ while (node && node.style) {
+ if (gcs(node).position == "fixed") {
+ return 0;
+ }
+ val = node[prop];
+ if (val) {
+ _2c3 += val - 0;
+ if (node == _b) {
+ break;
+ }
+ }
+ node = node.parentNode;
+ }
+ return _2c3;
+ };
+ dojo._docScroll = function() {
+ var _b = d.body(),_w = d.global,de = d.doc.documentElement;
+ return {y:(_w.pageYOffset || de.scrollTop || _b.scrollTop
+ || 0),x:(_w.pageXOffset
+ || d._fixIeBiDiScrollLeft(de.scrollLeft)
+ || _b.scrollLeft || 0)};
+ };
+ dojo._isBodyLtr = function() {
+ return ("_bodyLtr" in d) ? d._bodyLtr : d._bodyLtr
+ = gcs(d.body()).direction == "ltr";
+ };
+ dojo._getIeDocumentElementOffset = function() {
+ var de = d.doc.documentElement;
+ if (d.isIE < 7) {
+ return {x:d._isBodyLtr() || window.parent == window
+ ? de.clientLeft : de.offsetWidth - de.clientWidth
+ - de.clientLeft,y:de.clientTop};
+ } else {
+ if (d.isIE < 8) {
+ return {x:de.getBoundingClientRect().left,y:de.getBoundingClientRect().top};
+ } else {
+ return {x:0,y:0};
+ }
+ }
+ };
+ dojo._fixIeBiDiScrollLeft = function(_2c9) {
+ var dd = d.doc;
+ if (d.isIE < 8 && !d._isBodyLtr()) {
+ var de = dd.compatMode == "BackCompat" ? dd.body
+ : dd.documentElement;
+ return _2c9 + de.clientWidth - de.scrollWidth;
+ }
+ return _2c9;
+ };
+ dojo._abs = function(node, _2cd) {
+ var db = d.body(),dh = d.body().parentNode,ret;
+ if (node["getBoundingClientRect"]) {
+ var _2d1 = node.getBoundingClientRect();
+ ret = {x:_2d1.left,y:_2d1.top};
+ if (d.isFF >= 3) {
+ var cs = gcs(dh);
+ ret.x -= px(dh, cs.marginLeft)
+ + px(dh, cs.borderLeftWidth);
+ ret.y -= px(dh, cs.marginTop)
+ + px(dh, cs.borderTopWidth);
+ }
+ if (d.isIE) {
+ var _2d3 = d._getIeDocumentElementOffset();
+ ret.x -= _2d3.x + (d.isQuirks ? db.clientLeft : 0);
+ ret.y -= _2d3.y + (d.isQuirks ? db.clientTop : 0);
+ }
+ } else {
+ ret = {x:0,y:0};
+ if (node["offsetParent"]) {
+ ret.x -= _2bf(node, "scrollLeft");
+ ret.y -= _2bf(node, "scrollTop");
+ var _2d4 = node;
+ do{
+ var n = _2d4.offsetLeft,t = _2d4.offsetTop;
+ ret.x += isNaN(n) ? 0 : n;
+ ret.y += isNaN(t) ? 0 : t;
+ cs = gcs(_2d4);
+ if (_2d4 != node) {
+ if (d.isFF) {
+ ret.x += 2 * px(_2d4, cs.borderLeftWidth);
+ ret.y += 2 * px(_2d4, cs.borderTopWidth);
+ } else {
+ ret.x += px(_2d4, cs.borderLeftWidth);
+ ret.y += px(_2d4, cs.borderTopWidth);
+ }
+ }
+ if (d.isFF && cs.position == "static") {
+ var _2d7 = _2d4.parentNode;
+ while (_2d7 != _2d4.offsetParent) {
+ var pcs = gcs(_2d7);
+ if (pcs.position == "static") {
+ ret.x += px(_2d4, pcs.borderLeftWidth);
+ ret.y += px(_2d4, pcs.borderTopWidth);
+ }
+ _2d7 = _2d7.parentNode;
+ }
+ }
+ _2d4 = _2d4.offsetParent;
+ } while ((_2d4 != dh) && _2d4);
+ } else {
+ if (node.x && node.y) {
+ ret.x += isNaN(node.x) ? 0 : node.x;
+ ret.y += isNaN(node.y) ? 0 : node.y;
+ }
+ }
+ }
+ if (_2cd) {
+ var _2d9 = d._docScroll();
+ ret.x += _2d9.x;
+ ret.y += _2d9.y;
+ }
+ return ret;
+ };
+ dojo.coords = function(node, _2db) {
+ var n = d.byId(node),s = gcs(n),mb = d._getMarginBox(n, s);
+ var abs = d._abs(n, _2db);
+ mb.x = abs.x;
+ mb.y = abs.y;
+ return mb;
+ };
+ var _2e0 = d.isIE < 8;
+ var _2e1 = function(name) {
+ switch (name.toLowerCase()) {case "tabindex":return _2e0
+ ? "tabIndex"
+ : "tabindex";case "readonly":return "readOnly";case "class":return "className";case "for":case "htmlfor":return _2e0
+ ? "htmlFor" : "for";default:return name;}
+ };
+ var _2e3 = {colspan:"colSpan",enctype:"enctype",frameborder:"frameborder",method:"method",rowspan:"rowSpan",scrolling:"scrolling",shape:"shape",span:"span",type:"type",valuetype:"valueType",classname:"className",innerhtml:"innerHTML"};
+ dojo.hasAttr = function(node, name) {
+ node = d.byId(node);
+ var _2e6 = _2e1(name);
+ _2e6 = _2e6 == "htmlFor" ? "for" : _2e6;
+ var attr = node.getAttributeNode && node.getAttributeNode(_2e6);
+ return attr ? attr.specified : false;
+ };
+ var _2e8 = {},_ctr = 0,_2ea = dojo._scopeName
+ + "attrid",_2eb = {col:1,colgroup:1,table:1,tbody:1,tfoot:1,thead:1,tr:1,title:1};
+ dojo.attr = function(node, name, _2ee) {
+ node = d.byId(node);
+ var args = arguments.length;
+ if (args == 2 && !d.isString(name)) {
+ for (var x in name) {
+ d.attr(node, x, name[x]);
+ }
+ return;
+ }
+ name = _2e1(name);
+ if (args == 3) {
+ if (d.isFunction(_2ee)) {
+ var _2f1 = d.attr(node, _2ea);
+ if (!_2f1) {
+ _2f1 = _ctr++;
+ d.attr(node, _2ea, _2f1);
+ }
+ if (!_2e8[_2f1]) {
+ _2e8[_2f1] = {};
+ }
+ var h = _2e8[_2f1][name];
+ if (h) {
+ d.disconnect(h);
+ } else {
+ try {
+ delete node[name];
+ } catch(e) {
+ }
+ }
+ _2e8[_2f1][name] = d.connect(node, name, _2ee);
+ } else {
+ if (typeof _2ee == "boolean") {
+ node[name] = _2ee;
+ } else {
+ if (name === "style" && !d.isString(_2ee)) {
+ d.style(node, _2ee);
+ } else {
+ if (name == "className") {
+ node.className = _2ee;
+ } else {
+ if (name === "innerHTML") {
+ if (d.isIE && node.tagName.toLowerCase()
+ in _2eb) {
+ d.empty(node);
+ node.appendChild(d._toDom(_2ee, node.ownerDocument));
+ } else {
+ node[name] = _2ee;
+ }
+ } else {
+ node.setAttribute(name, _2ee);
+ }
+ }
+ }
+ }
+ }
+ } else {
+ var prop = _2e3[name.toLowerCase()];
+ if (prop) {
+ return node[prop];
+ }
+ var _2f4 = node[name];
+ return (typeof _2f4 == "boolean" || typeof _2f4
+ == "function") ? _2f4 : (d.hasAttr(node, name)
+ ? node.getAttribute(name) : null);
+ }
+ };
+ dojo.removeAttr = function(node, name) {
+ d.byId(node).removeAttribute(_2e1(name));
+ };
+ dojo.create = function(tag, _2f8, _2f9, pos) {
+ var doc = d.doc;
+ if (_2f9) {
+ _2f9 = d.byId(_2f9);
+ doc = _2f9.ownerDocument;
+ }
+ if (d.isString(tag)) {
+ tag = doc.createElement(tag);
+ }
+ if (_2f8) {
+ d.attr(tag, _2f8);
+ }
+ if (_2f9) {
+ d.place(tag, _2f9, pos);
+ }
+ return tag;
+ };
+ d.empty = d.isIE ? function(node) {
+ node = d.byId(node);
+ for (var c; c = node.lastChild;) {
+ d.destroy(c);
+ }
+ } : function(node) {
+ d.byId(node).innerHTML = "";
+ };
+ var _2ff = {option:["select"],tbody:["table"],thead:["table"],tfoot:["table"],tr:["table","tbody"],td:["table","tbody","tr"],th:["table","thead","tr"],legend:["fieldset"],caption:["table"],colgroup:["table"],col:["table","colgroup"],li:["ul"]},_300 = /<\s*([\w\:]+)/,_301 = {},_302 = 0,_303 = "__"
+ + d._scopeName + "ToDomId";
+ for (var _304 in _2ff) {
+ var tw = _2ff[_304];
+ tw.pre = _304 == "option" ? "<select multiple=\"multiple\">"
+ : "<" + tw.join("><") + ">";
+ tw.post = "</" + tw.reverse().join("></") + ">";
+ }
+ d._toDom = function(frag, doc) {
+ doc = doc || d.doc;
+ var _308 = doc[_303];
+ if (!_308) {
+ doc[_303] = _308 = ++_302 + "";
+ _301[_308] = doc.createElement("div");
+ }
+ frag += "";
+ var _309 = frag.match(_300),tag = _309 ? _309[1].toLowerCase()
+ : "",_30b = _301[_308],wrap,i,fc,df;
+ if (_309 && _2ff[tag]) {
+ wrap = _2ff[tag];
+ _30b.innerHTML = wrap.pre + frag + wrap.post;
+ for (i = wrap.length; i; --i) {
+ _30b = _30b.firstChild;
+ }
+ } else {
+ _30b.innerHTML = frag;
+ }
+ if (_30b.childNodes.length == 1) {
+ return _30b.removeChild(_30b.firstChild);
+ }
+ df = doc.createDocumentFragment();
+ while (fc = _30b.firstChild) {
+ df.appendChild(fc);
+ }
+ return df;
+ };
+ var _30f = "className";
+ dojo.hasClass = function(node, _311) {
+ return ((" " + d.byId(node)[_30f] + " ").indexOf(" " + _311
+ + " ") >= 0);
+ };
+ dojo.addClass = function(node, _313) {
+ node = d.byId(node);
+ var cls = node[_30f];
+ if ((" " + cls + " ").indexOf(" " + _313 + " ") < 0) {
+ node[_30f] = cls + (cls ? " " : "") + _313;
+ }
+ };
+ dojo.removeClass = function(node, _316) {
+ node = d.byId(node);
+ var t = d.trim((" " + node[_30f] + " ").replace(" " + _316
+ + " ", " "));
+ if (node[_30f] != t) {
+ node[_30f] = t;
+ }
+ };
+ dojo.toggleClass = function(node, _319, _31a) {
+ if (_31a === undefined) {
+ _31a = !d.hasClass(node, _319);
+ }
+ d[_31a ? "addClass" : "removeClass"](node, _319);
+ };
+ })();
+ }
+ if (!dojo._hasResource["dojo._base.NodeList"]) {
+ dojo._hasResource["dojo._base.NodeList"] = true;
+ dojo.provide("dojo._base.NodeList");
+ (function() {
+ var d = dojo;
+ var ap = Array.prototype,aps = ap.slice,apc = ap.concat;
+ var tnl = function(a) {
+ a.constructor = d.NodeList;
+ dojo._mixin(a, d.NodeList.prototype);
+ return a;
+ };
+ var _321 = function(f, a, o) {
+ a = [0].concat(aps.call(a, 0));
+ o = o || d.global;
+ return function(node) {
+ a[0] = node;
+ return f.apply(o, a);
+ };
+ };
+ var _326 = function(f, o) {
+ return function() {
+ this.forEach(_321(f, arguments, o));
+ return this;
+ };
+ };
+ var _329 = function(f, o) {
+ return function() {
+ return this.map(_321(f, arguments, o));
+ };
+ };
+ var _32c = function(f, o) {
+ return function() {
+ return this.filter(_321(f, arguments, o));
+ };
+ };
+ var _32f = function(f, g, o) {
+ return function() {
+ var a = arguments,body = _321(f, a, o);
+ if (g.call(o || d.global, a)) {
+ return this.map(body);
+ }
+ this.forEach(body);
+ return this;
+ };
+ };
+ var _335 = function(a) {
+ return a.length == 1 && d.isString(a[0]);
+ };
+ var _337 = function(node) {
+ var p = node.parentNode;
+ if (p) {
+ p.removeChild(node);
+ }
+ };
+ dojo.NodeList = function() {
+ return tnl(Array.apply(null, arguments));
+ };
+ var nl = d.NodeList,nlp = nl.prototype;
+ nl._wrap = tnl;
+ nl._adaptAsMap = _329;
+ nl._adaptAsForEach = _326;
+ nl._adaptAsFilter = _32c;
+ nl._adaptWithCondition = _32f;
+ d.forEach(["slice","splice"], function(name) {
+ var f = ap[name];
+ nlp[name] = function() {
+ return tnl(f.apply(this, arguments));
+ };
+ });
+ d.forEach(["indexOf","lastIndexOf","every","some"], function(name) {
+ var f = d[name];
+ nlp[name] = function() {
+ return f.apply(d, [this].concat(aps.call(arguments, 0)));
+ };
+ });
+ d.forEach(["attr","style"], function(name) {
+ nlp[name] = _32f(d[name], _335);
+ });
+ d.forEach(["connect","addClass","removeClass","toggleClass","empty"], function(
+ name) {
+ nlp[name] = _326(d[name]);
+ });
+ dojo.extend(dojo.NodeList, {concat:function(item) {
+ var t = d.isArray(this) ? this
+ : aps.call(this, 0),m = d.map(arguments, function(a) {
+ return a && !d.isArray(a) && (a.constructor === NodeList
+ || a.constructor == nl) ? aps.call(a, 0) : a;
+ });
+ return tnl(apc.apply(t, m));
+ },map:function(func, obj) {
+ return tnl(d.map(this, func, obj));
+ },forEach:function(_348, _349) {
+ d.forEach(this, _348, _349);
+ return this;
+ },coords:_329(d.coords),place:function(_34a, _34b) {
+ var item = d.query(_34a)[0];
+ return this.forEach(function(node) {
+ d.place(node, item, _34b);
+ });
+ },orphan:function(_34e) {
+ return (_34e ? d._filterQueryResult(this, _34e)
+ : this).forEach(_337);
+ },adopt:function(_34f, _350) {
+ return d.query(_34f).place(item[0], _350);
+ },query:function(_351) {
+ if (!_351) {
+ return this;
+ }
+ var ret = this.map(function(node) {
+ return d.query(_351, node).filter(function(_354) {
+ return _354 !== undefined;
+ });
+ });
+ return tnl(apc.apply([], ret));
+ },filter:function(_355) {
+ var a = arguments,_357 = this,_358 = 0;
+ if (d.isString(_355)) {
+ _357 = d._filterQueryResult(this, a[0]);
+ if (a.length == 1) {
+ return _357;
+ }
+ _358 = 1;
+ }
+ return tnl(d.filter(_357, a[_358], a[_358 + 1]));
+ },addContent:function(_359, _35a) {
+ var c = d.isString(_359) ? d._toDom(_359, this[0]
+ && this[0].ownerDocument) : _359,i,l = this.length - 1;
+ for (i = 0; i < l; ++i) {
+ d.place(c.cloneNode(true), this[i], _35a);
+ }
+ if (l >= 0) {
+ d.place(c, this[l], _35a);
+ }
+ return this;
+ },instantiate:function(_35d, _35e) {
+ var c = d.isFunction(_35d) ? _35d : d.getObject(_35d);
+ _35e = _35e || {};
+ return this.forEach(function(node) {
+ new c(_35e, node);
+ });
+ },at:function() {
+ var t = new dojo.NodeList();
+ d.forEach(arguments, function(i) {
+ if (this[i]) {
+ t.push(this[i]);
+ }
+ }, this);
+ return t;
+ }});
+ d.forEach(["blur","focus","change","click","error","keydown","keypress","keyup","load","mousedown","mouseenter","mouseleave","mousemove","mouseout","mouseover","mouseup","submit"], function(
+ evt) {
+ var _oe = "on" + evt;
+ nlp[_oe] = function(a, b) {
+ return this.connect(_oe, a, b);
+ };
+ });
+ })();
+ }
+ if (!dojo._hasResource["dojo._base.query"]) {
+ dojo._hasResource["dojo._base.query"] = true;
+ if (typeof dojo != "undefined") {
+ dojo.provide("dojo._base.query");
+ }
+ (function(d) {
+ var trim = d.trim;
+ var each = d.forEach;
+ var qlc = d._queryListCtor = d.NodeList;
+ var _36b = d.isString;
+ var _36c = function() {
+ return d.doc;
+ };
+ var _36d = (d.isWebKit && ((_36c().compatMode) == "BackCompat"));
+ var _36e = !!_36c().firstChild["children"] ? "children"
+ : "childNodes";
+ var _36f = ">~+";
+ var _370 = false;
+ var _371 = function() {
+ return true;
+ };
+ var _372 = function(_373) {
+ if (_36f.indexOf(_373.slice(-1)) >= 0) {
+ _373 += " * ";
+ } else {
+ _373 += " ";
+ }
+ var ts = function(s, e) {
+ return trim(_373.slice(s, e));
+ };
+ var _377 = [];
+ var _378 = -1,_379 = -1,_37a = -1,_37b = -1,_37c = -1,inId = -1,_37e = -1,lc = "",cc = "",_381;
+ var x = 0,ql = _373.length,_384 = null,_cp = null;
+ var _386 = function() {
+ if (_37e >= 0) {
+ var tv = (_37e == x) ? null : ts(_37e, x);
+ _384[(_36f.indexOf(tv) < 0) ? "tag" : "oper"] = tv;
+ _37e = -1;
+ }
+ };
+ var _388 = function() {
+ if (inId >= 0) {
+ _384.id = ts(inId, x).replace(/\\/g, "");
+ inId = -1;
+ }
+ };
+ var _389 = function() {
+ if (_37c >= 0) {
+ _384.classes.push(ts(_37c + 1, x).replace(/\\/g, ""));
+ _37c = -1;
+ }
+ };
+ var _38a = function() {
+ _388();
+ _386();
+ _389();
+ };
+ var _38b = function() {
+ _38a();
+ if (_37b >= 0) {
+ _384.pseudos.push({name:ts(_37b + 1, x)});
+ }
+ _384.loops = (_384.pseudos.length || _384.attrs.length
+ || _384.classes.length);
+ _384.oquery = _384.query = ts(_381, x);
+ _384.otag = _384.tag = (_384["oper"]) ? null : (_384.tag
+ || "*");
+ if (_384.tag) {
+ _384.tag = _384.tag.toUpperCase();
+ }
+ if (_377.length && (_377[_377.length - 1].oper)) {
+ _384.infixOper = _377.pop();
+ _384.query = _384.infixOper.query + " " + _384.query;
+ }
+ _377.push(_384);
+ _384 = null;
+ };
+ for (; lc = cc,cc = _373.charAt(x),x < ql; x++) {
+ if (lc == "\\") {
+ continue;
+ }
+ if (!_384) {
+ _381 = x;
+ _384 = {query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function() {
+ return (_370) ? this.otag : this.tag;
+ }};
+ _37e = x;
+ }
+ if (_378 >= 0) {
+ if (cc == "]") {
+ if (!_cp.attr) {
+ _cp.attr = ts(_378 + 1, x);
+ } else {
+ _cp.matchFor = ts((_37a || _378 + 1), x);
+ }
+ var cmf = _cp.matchFor;
+ if (cmf) {
+ if ((cmf.charAt(0) == "\"") || (cmf.charAt(0)
+ == "'")) {
+ _cp.matchFor = cmf.slice(1, -1);
+ }
+ }
+ _384.attrs.push(_cp);
+ _cp = null;
+ _378 = _37a = -1;
+ } else {
+ if (cc == "=") {
+ var _38d = ("|~^$*".indexOf(lc) >= 0) ? lc : "";
+ _cp.type = _38d + cc;
+ _cp.attr = ts(_378 + 1, x - _38d.length);
+ _37a = x + 1;
+ }
+ }
+ } else {
+ if (_379 >= 0) {
+ if (cc == ")") {
+ if (_37b >= 0) {
+ _cp.value = ts(_379 + 1, x);
+ }
+ _37b = _379 = -1;
+ }
+ } else {
+ if (cc == "#") {
+ _38a();
+ inId = x + 1;
+ } else {
+ if (cc == ".") {
+ _38a();
+ _37c = x;
+ } else {
+ if (cc == ":") {
+ _38a();
+ _37b = x;
+ } else {
+ if (cc == "[") {
+ _38a();
+ _378 = x;
+ _cp = {};
+ } else {
+ if (cc == "(") {
+ if (_37b >= 0) {
+ _cp = {name:ts(_37b
+ + 1, x),value:null};
+ _384.pseudos.push(_cp);
+ }
+ _379 = x;
+ } else {
+ if ((cc == " ") && (lc != cc)) {
+ _38b();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return _377;
+ };
+ var _38e = function(_38f, _390) {
+ if (!_38f) {
+ return _390;
+ }
+ if (!_390) {
+ return _38f;
+ }
+ return function() {
+ return _38f.apply(window, arguments)
+ && _390.apply(window, arguments);
+ };
+ };
+ var _391 = function(i, arr) {
+ var r = arr || [];
+ if (i) {
+ r.push(i);
+ }
+ return r;
+ };
+ var _395 = function(n) {
+ return (1 == n.nodeType);
+ };
+ var _397 = "";
+ var _398 = function(elem, attr) {
+ if (!elem) {
+ return _397;
+ }
+ if (attr == "class") {
+ return elem.className || _397;
+ }
+ if (attr == "for") {
+ return elem.htmlFor || _397;
+ }
+ if (attr == "style") {
+ return elem.style.cssText || _397;
+ }
+ return (_370 ? elem.getAttribute(attr)
+ : elem.getAttribute(attr, 2)) || _397;
+ };
+ var _39b = {"*=":function(attr, _39d) {
+ return function(elem) {
+ return (_398(elem, attr).indexOf(_39d) >= 0);
+ };
+ },"^=":function(attr, _3a0) {
+ return function(elem) {
+ return (_398(elem, attr).indexOf(_3a0) == 0);
+ };
+ },"$=":function(attr, _3a3) {
+ var tval = " " + _3a3;
+ return function(elem) {
+ var ea = " " + _398(elem, attr);
+ return (ea.lastIndexOf(_3a3) == (ea.length - _3a3.length));
+ };
+ },"~=":function(attr, _3a8) {
+ var tval = " " + _3a8 + " ";
+ return function(elem) {
+ var ea = " " + _398(elem, attr) + " ";
+ return (ea.indexOf(tval) >= 0);
+ };
+ },"|=":function(attr, _3ad) {
+ var _3ae = " " + _3ad + "-";
+ return function(elem) {
+ var ea = " " + _398(elem, attr);
+ return ((ea == _3ad) || (ea.indexOf(_3ae) == 0));
+ };
+ },"=":function(attr, _3b2) {
+ return function(elem) {
+ return (_398(elem, attr) == _3b2);
+ };
+ }};
+ var _3b4 = (typeof _36c().firstChild.nextElementSibling
+ == "undefined");
+ var _ns = !_3b4 ? "nextElementSibling" : "nextSibling";
+ var _ps = !_3b4 ? "previousElementSibling" : "previousSibling";
+ var _3b7 = (_3b4 ? _395 : _371);
+ var _3b8 = function(node) {
+ while (node = node[_ps]) {
+ if (_3b7(node)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ var _3ba = function(node) {
+ while (node = node[_ns]) {
+ if (_3b7(node)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ var _3bc = function(node) {
+ var root = node.parentNode;
+ var i = 0,tret = root[_36e],ci = (node["_i"]
+ || -1),cl = (root["_l"] || -1);
+ if (!tret) {
+ return -1;
+ }
+ var l = tret.length;
+ if (cl == l && ci >= 0 && cl >= 0) {
+ return ci;
+ }
+ root["_l"] = l;
+ ci = -1;
+ for (var te = root["firstElementChild"] || root["firstChild"];
+ te; te = te[_ns]) {
+ if (_3b7(te)) {
+ te["_i"] = ++i;
+ if (node === te) {
+ ci = i;
+ }
+ }
+ }
+ return ci;
+ };
+ var _3c5 = function(elem) {
+ return !((_3bc(elem)) % 2);
+ };
+ var _3c7 = function(elem) {
+ return ((_3bc(elem)) % 2);
+ };
+ var _3c9 = {"checked":function(name, _3cb) {
+ return function(elem) {
+ return !!d.attr(elem, "checked");
+ };
+ },"first-child":function() {
+ return _3b8;
+ },"last-child":function() {
+ return _3ba;
+ },"only-child":function(name, _3ce) {
+ return function(node) {
+ if (!_3b8(node)) {
+ return false;
+ }
+ if (!_3ba(node)) {
+ return false;
+ }
+ return true;
+ };
+ },"empty":function(name, _3d1) {
+ return function(elem) {
+ var cn = elem.childNodes;
+ var cnl = elem.childNodes.length;
+ for (var x = cnl - 1; x >= 0; x--) {
+ var nt = cn[x].nodeType;
+ if ((nt === 1) || (nt == 3)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ },"contains":function(name, _3d8) {
+ var cz = _3d8.charAt(0);
+ if (cz == "\"" || cz == "'") {
+ _3d8 = _3d8.slice(1, -1);
+ }
+ return function(elem) {
+ return (elem.innerHTML.indexOf(_3d8) >= 0);
+ };
+ },"not":function(name, _3dc) {
+ var p = _372(_3dc)[0];
+ var _3de = {el:1};
+ if (p.tag != "*") {
+ _3de.tag = 1;
+ }
+ if (!p.classes.length) {
+ _3de.classes = 1;
+ }
+ var ntf = _3e0(p, _3de);
+ return function(elem) {
+ return (!ntf(elem));
+ };
+ },"nth-child":function(name, _3e3) {
+ var pi = parseInt;
+ if (_3e3 == "odd") {
+ return _3c7;
+ } else {
+ if (_3e3 == "even") {
+ return _3c5;
+ }
+ }
+ if (_3e3.indexOf("n") != -1) {
+ var _3e5 = _3e3.split("n", 2);
+ var pred = _3e5[0] ? ((_3e5[0] == "-") ? -1 : pi(_3e5[0]))
+ : 1;
+ var idx = _3e5[1] ? pi(_3e5[1]) : 0;
+ var lb = 0,ub = -1;
+ if (pred > 0) {
+ if (idx < 0) {
+ idx = (idx % pred) && (pred + (idx % pred));
+ } else {
+ if (idx > 0) {
+ if (idx >= pred) {
+ lb = idx - idx % pred;
+ }
+ idx = idx % pred;
+ }
+ }
+ } else {
+ if (pred < 0) {
+ pred *= -1;
+ if (idx > 0) {
+ ub = idx;
+ idx = idx % pred;
+ }
+ }
+ }
+ if (pred > 0) {
+ return function(elem) {
+ var i = _3bc(elem);
+ return (i >= lb) && (ub < 0 || i <= ub) && ((i
+ % pred) == idx);
+ };
+ } else {
+ _3e3 = idx;
+ }
+ }
+ var _3ec = pi(_3e3);
+ return function(elem) {
+ return (_3bc(elem) == _3ec);
+ };
+ }};
+ var _3ee = (d.isIE) ? function(cond) {
+ var clc = cond.toLowerCase();
+ if (clc == "class") {
+ cond = "className";
+ }
+ return function(elem) {
+ return (_370 ? elem.getAttribute(cond) : elem[cond]
+ || elem[clc]);
+ };
+ } : function(cond) {
+ return function(elem) {
+ return (elem && elem.getAttribute
+ && elem.hasAttribute(cond));
+ };
+ };
+ var _3e0 = function(_3f4, _3f5) {
+ if (!_3f4) {
+ return _371;
+ }
+ _3f5 = _3f5 || {};
+ var ff = null;
+ if (!("el" in _3f5)) {
+ ff = _38e(ff, _395);
+ }
+ if (!("tag" in _3f5)) {
+ if (_3f4.tag != "*") {
+ ff = _38e(ff, function(elem) {
+ return (elem && (elem.tagName == _3f4.getTag()));
+ });
+ }
+ }
+ if (!("classes" in _3f5)) {
+ each(_3f4.classes, function(_3f8, idx, arr) {
+ var re = new RegExp("(?:^|\\s)" + _3f8 + "(?:\\s|$)");
+ ff = _38e(ff, function(elem) {
+ return re.test(elem.className);
+ });
+ ff.count = idx;
+ });
+ }
+ if (!("pseudos" in _3f5)) {
+ each(_3f4.pseudos, function(_3fd) {
+ var pn = _3fd.name;
+ if (_3c9[pn]) {
+ ff = _38e(ff, _3c9[pn](pn, _3fd.value));
+ }
+ });
+ }
+ if (!("attrs" in _3f5)) {
+ each(_3f4.attrs, function(attr) {
+ var _400;
+ var a = attr.attr;
+ if (attr.type && _39b[attr.type]) {
+ _400 = _39b[attr.type](a, attr.matchFor);
+ } else {
+ if (a.length) {
+ _400 = _3ee(a);
+ }
+ }
+ if (_400) {
+ ff = _38e(ff, _400);
+ }
+ });
+ }
+ if (!("id" in _3f5)) {
+ if (_3f4.id) {
+ ff = _38e(ff, function(elem) {
+ return (!!elem && (elem.id == _3f4.id));
+ });
+ }
+ }
+ if (!ff) {
+ if (!("default" in _3f5)) {
+ ff = _371;
+ }
+ }
+ return ff;
+ };
+ var _403 = function(_404) {
+ return function(node, ret, bag) {
+ while (node = node[_ns]) {
+ if (_3b4 && (!_395(node))) {
+ continue;
+ }
+ if ((!bag || _408(node, bag)) && _404(node)) {
+ ret.push(node);
+ }
+ break;
+ }
+ return ret;
+ };
+ };
+ var _409 = function(_40a) {
+ return function(root, ret, bag) {
+ var te = root[_ns];
+ while (te) {
+ if (_3b7(te)) {
+ if (bag && !_408(te, bag)) {
+ break;
+ }
+ if (_40a(te)) {
+ ret.push(te);
+ }
+ }
+ te = te[_ns];
+ }
+ return ret;
+ };
+ };
+ var _40f = function(_410) {
+ _410 = _410 || _371;
+ return function(root, ret, bag) {
+ var te,x = 0,tret = root[_36e];
+ while (te = tret[x++]) {
+ if (_3b7(te) && (!bag || _408(te, bag))
+ && (_410(te, x))) {
+ ret.push(te);
+ }
+ }
+ return ret;
+ };
+ };
+ var _417 = function(node, root) {
+ var pn = node.parentNode;
+ while (pn) {
+ if (pn == root) {
+ break;
+ }
+ pn = pn.parentNode;
+ }
+ return !!pn;
+ };
+ var _41b = {};
+ var _41c = function(_41d) {
+ var _41e = _41b[_41d.query];
+ if (_41e) {
+ return _41e;
+ }
+ var io = _41d.infixOper;
+ var oper = (io ? io.oper : "");
+ var _421 = _3e0(_41d, {el:1});
+ var qt = _41d.tag;
+ var _423 = ("*" == qt);
+ var ecs = _36c()["getElementsByClassName"];
+ if (!oper) {
+ if (_41d.id) {
+ _421 = (!_41d.loops && _423) ? _371
+ : _3e0(_41d, {el:1,id:1});
+ _41e = function(root, arr) {
+ var te = d.byId(_41d.id, (root.ownerDocument
+ || root));
+ if (!te || !_421(te)) {
+ return;
+ }
+ if (9 == root.nodeType) {
+ return _391(te, arr);
+ } else {
+ if (_417(te, root)) {
+ return _391(te, arr);
+ }
+ }
+ };
+ } else {
+ if (ecs && /\{\s*\[native code\]\s*\}/.test(String(ecs))
+ && _41d.classes.length && !_36d) {
+ _421 = _3e0(_41d, {el:1,classes:1,id:1});
+ var _428 = _41d.classes.join(" ");
+ _41e = function(root, arr, bag) {
+ var ret = _391(0, arr),te,x = 0;
+ var tret = root.getElementsByClassName(_428);
+ while ((te = tret[x++])) {
+ if (_421(te, root) && _408(te, bag)) {
+ ret.push(te);
+ }
+ }
+ return ret;
+ };
+ } else {
+ if (!_423 && !_41d.loops) {
+ _41e = function(root, arr, bag) {
+ var ret = _391(0, arr),te,x = 0;
+ var tret = root.getElementsByTagName(_41d.getTag());
+ while ((te = tret[x++])) {
+ if (_408(te, bag)) {
+ ret.push(te);
+ }
+ }
+ return ret;
+ };
+ } else {
+ _421 = _3e0(_41d, {el:1,tag:1,id:1});
+ _41e = function(root, arr, bag) {
+ var ret = _391(0, arr),te,x = 0;
+ var tret = root.getElementsByTagName(_41d.getTag());
+ while ((te = tret[x++])) {
+ if (_421(te, root) && _408(te, bag)) {
+ ret.push(te);
+ }
+ }
+ return ret;
+ };
+ }
+ }
+ }
+ } else {
+ var _43e = {el:1};
+ if (_423) {
+ _43e.tag = 1;
+ }
+ _421 = _3e0(_41d, _43e);
+ if ("+" == oper) {
+ _41e = _403(_421);
+ } else {
+ if ("~" == oper) {
+ _41e = _409(_421);
+ } else {
+ if (">" == oper) {
+ _41e = _40f(_421);
+ }
+ }
+ }
+ }
+ return _41b[_41d.query] = _41e;
+ };
+ var _43f = function(root, _441) {
+ var _442 = _391(root),qp,x,te,qpl = _441.length,bag,ret;
+ for (var i = 0; i < qpl; i++) {
+ ret = [];
+ qp = _441[i];
+ x = _442.length - 1;
+ if (x > 0) {
+ bag = {};
+ ret.nozip = true;
+ }
+ var gef = _41c(qp);
+ while (te = _442[x--]) {
+ gef(te, ret, bag);
+ }
+ if (!ret.length) {
+ break;
+ }
+ _442 = ret;
+ }
+ return ret;
+ };
+ var _44b = {},_44c = {};
+ var _44d = function(_44e) {
+ var _44f = _372(trim(_44e));
+ if (_44f.length == 1) {
+ var tef = _41c(_44f[0]);
+ return function(root) {
+ var r = tef(root, new qlc());
+ if (r) {
+ r.nozip = true;
+ }
+ return r;
+ };
+ }
+ return function(root) {
+ return _43f(root, _44f);
+ };
+ };
+ var nua = navigator.userAgent;
+ var wk = "WebKit/";
+ var _456 = (d.isWebKit && (nua.indexOf(wk) > 0)
+ && (parseFloat(nua.split(wk)[1]) > 528));
+ var _457 = d.isIE ? "commentStrip" : "nozip";
+ var qsa = "querySelectorAll";
+ var _459 = (!!_36c()[qsa] && (!d.isSafari || (d.isSafari > 3.1)
+ || _456));
+ var _45a = function(_45b, _45c) {
+ if (_459) {
+ var _45d = _44c[_45b];
+ if (_45d && !_45c) {
+ return _45d;
+ }
+ }
+ var _45e = _44b[_45b];
+ if (_45e) {
+ return _45e;
+ }
+ var qcz = _45b.charAt(0);
+ var _460 = (-1 == _45b.indexOf(" "));
+ if ((_45b.indexOf("#") >= 0) && (_460)) {
+ _45c = true;
+ }
+ var _461 = (_459 && (!_45c) && (_36f.indexOf(qcz) == -1)
+ && (!d.isIE || (_45b.indexOf(":") == -1)) && (!(_36d
+ && (_45b.indexOf(".") >= 0)))
+ && (_45b.indexOf(":contains") == -1)
+ && (_45b.indexOf("|=") == -1));
+ if (_461) {
+ var tq = (_36f.indexOf(_45b.charAt(_45b.length - 1)) >= 0)
+ ? (_45b + " *") : _45b;
+ return _44c[_45b] = function(root) {
+ try {
+ if (!((9 == root.nodeType) || _460)) {
+ throw "";
+ }
+ var r = root[qsa](tq);
+ r[_457] = true;
+ return r;
+ } catch(e) {
+ return _45a(_45b, true)(root);
+ }
+ };
+ } else {
+ var _465 = _45b.split(/\s*,\s*/);
+ return _44b[_45b] = ((_465.length < 2) ? _44d(_45b)
+ : function(root) {
+ var _467 = 0,ret = [],tp;
+ while ((tp = _465[_467++])) {
+ ret = ret.concat(_44d(tp)(root));
+ }
+ return ret;
+ });
+ }
+ };
+ var _46a = 0;
+ var _46b = d.isIE ? function(node) {
+ if (_370) {
+ return (node.getAttribute("_uid")
+ || node.setAttribute("_uid", ++_46a) || _46a);
+ } else {
+ return node.uniqueID;
+ }
+ } : function(node) {
+ return (node._uid || (node._uid = ++_46a));
+ };
+ var _408 = function(node, bag) {
+ if (!bag) {
+ return 1;
+ }
+ var id = _46b(node);
+ if (!bag[id]) {
+ return bag[id] = 1;
+ }
+ return 0;
+ };
+ var _471 = "_zipIdx";
+ var _zip = function(arr) {
+ if (arr && arr.nozip) {
+ return (qlc._wrap) ? qlc._wrap(arr) : arr;
+ }
+ var ret = new qlc();
+ if (!arr || !arr.length) {
+ return ret;
+ }
+ if (arr[0]) {
+ ret.push(arr[0]);
+ }
+ if (arr.length < 2) {
+ return ret;
+ }
+ _46a++;
+ if (d.isIE && _370) {
+ var _475 = _46a + "";
+ arr[0].setAttribute(_471, _475);
+ for (var x = 1,te; te = arr[x]; x++) {
+ if (arr[x].getAttribute(_471) != _475) {
+ ret.push(te);
+ }
+ te.setAttribute(_471, _475);
+ }
+ } else {
+ if (d.isIE && arr.commentStrip) {
+ try {
+ for (var x = 1,te; te = arr[x]; x++) {
+ if (_395(te)) {
+ ret.push(te);
+ }
+ }
+ } catch(e) {
+ }
+ } else {
+ if (arr[0]) {
+ arr[0][_471] = _46a;
+ }
+ for (var x = 1,te; te = arr[x]; x++) {
+ if (arr[x][_471] != _46a) {
+ ret.push(te);
+ }
+ te[_471] = _46a;
+ }
+ }
+ }
+ return ret;
+ };
+ d.query = function(_478, root) {
+ qlc = d._queryListCtor;
+ if (!_478) {
+ return new qlc();
+ }
+ if (_478.constructor == qlc) {
+ return _478;
+ }
+ if (!_36b(_478)) {
+ return new qlc(_478);
+ }
+ if (_36b(root)) {
+ root = d.byId(root);
+ if (!root) {
+ return new qlc();
+ }
+ }
+ root = root || _36c();
+ var od = root.ownerDocument || root.documentElement;
+ _370 = (root.contentType && root.contentType
+ == "application/xml") || (d.isOpera && (root.doctype
+ || od.toString() == "[object XMLDocument]")) || (!!od)
+ && (d.isIE ? od.xml : (root.xmlVersion
+ || od.xmlVersion));
+ var r = _45a(_478)(root);
+ if (r && r.nozip && !qlc._wrap) {
+ return r;
+ }
+ return _zip(r);
+ };
+ d.query.pseudos = _3c9;
+ d._filterQueryResult = function(_47c, _47d) {
+ var _47e = new d._queryListCtor();
+ var _47f = _3e0(_372(_47d)[0]);
+ for (var x = 0,te; te = _47c[x]; x++) {
+ if (_47f(te)) {
+ _47e.push(te);
+ }
+ }
+ return _47e;
+ };
+ })(this["queryPortability"] || this["acme"] || dojo);
+ }
+ if (!dojo._hasResource["dojo._base.xhr"]) {
+ dojo._hasResource["dojo._base.xhr"] = true;
+ dojo.provide("dojo._base.xhr");
+ (function() {
+ var _d = dojo;
+
+ function _483(obj, name, _486) {
+ var val = obj[name];
+ if (_d.isString(val)) {
+ obj[name] = [val,_486];
+ } else {
+ if (_d.isArray(val)) {
+ val.push(_486);
+ } else {
+ obj[name] = _486;
+ }
+ }
+ }
+
+ ;
+ dojo.formToObject = function(_488) {
+ var ret = {};
+ var _48a = "file|submit|image|reset|button|";
+ _d.forEach(dojo.byId(_488).elements, function(item) {
+ var _in = item.name;
+ var type = (item.type || "").toLowerCase();
+ if (_in && type && _48a.indexOf(type) == -1
+ && !item.disabled) {
+ if (type == "radio" || type == "checkbox") {
+ if (item.checked) {
+ _483(ret, _in, item.value);
+ }
+ } else {
+ if (item.multiple) {
+ ret[_in] = [];
+ _d.query("option", item).forEach(function(opt) {
+ if (opt.selected) {
+ _483(ret, _in, opt.value);
+ }
+ });
+ } else {
+ _483(ret, _in, item.value);
+ if (type == "image") {
+ ret[_in + ".x"] = ret[_in + ".y"]
+ = ret[_in].x = ret[_in].y = 0;
+ }
+ }
+ }
+ }
+ });
+ return ret;
+ };
+ dojo.objectToQuery = function(map) {
+ var enc = encodeURIComponent;
+ var _491 = [];
+ var _492 = {};
+ for (var name in map) {
+ var _494 = map[name];
+ if (_494 != _492[name]) {
+ var _495 = enc(name) + "=";
+ if (_d.isArray(_494)) {
+ for (var i = 0; i < _494.length; i++) {
+ _491.push(_495 + enc(_494[i]));
+ }
+ } else {
+ _491.push(_495 + enc(_494));
+ }
+ }
+ }
+ return _491.join("&");
+ };
+ dojo.formToQuery = function(_497) {
+ return _d.objectToQuery(_d.formToObject(_497));
+ };
+ dojo.formToJson = function(_498, _499) {
+ return _d.toJson(_d.formToObject(_498), _499);
+ };
+ dojo.queryToObject = function(str) {
+ var ret = {};
+ var qp = str.split("&");
+ var dec = decodeURIComponent;
+ _d.forEach(qp, function(item) {
+ if (item.length) {
+ var _49f = item.split("=");
+ var name = dec(_49f.shift());
+ var val = dec(_49f.join("="));
+ if (_d.isString(ret[name])) {
+ ret[name] = [ret[name]];
+ }
+ if (_d.isArray(ret[name])) {
+ ret[name].push(val);
+ } else {
+ ret[name] = val;
+ }
+ }
+ });
+ return ret;
+ };
+ dojo._blockAsync = false;
+ dojo._contentHandlers = {text:function(xhr) {
+ return xhr.responseText;
+ },json:function(xhr) {
+ return _d.fromJson(xhr.responseText || null);
+ },"json-comment-filtered":function(xhr) {
+ if (!dojo.config.useCommentedJson) {
+ console.warn("Consider using the standard mimetype:application/json."
+ + " json-commenting can introduce security issues. To"
+ + " decrease the chances of hijacking, use the standard the 'json' handler and"
+ + " prefix your json with: {}&&\n"
+ + "Use djConfig.useCommentedJson=true to turn off this message.");
+ }
+ var _4a5 = xhr.responseText;
+ var _4a6 = _4a5.indexOf("/*");
+ var _4a7 = _4a5.lastIndexOf("*/");
+ if (_4a6 == -1 || _4a7 == -1) {
+ throw new Error("JSON was not comment filtered");
+ }
+ return _d.fromJson(_4a5.substring(_4a6 + 2, _4a7));
+ },javascript:function(xhr) {
+ return _d.eval(xhr.responseText);
+ },xml:function(xhr) {
+ var _4aa = xhr.responseXML;
+ if (_d.isIE && (!_4aa || !_4aa.documentElement)) {
+ var ms = function(n) {
+ return "MSXML" + n + ".DOMDocument";
+ };
+ var dp = ["Microsoft.XMLDOM",ms(6),ms(4),ms(3),ms(2)];
+ _d.some(dp, function(p) {
+ try {
+ var dom = new ActiveXObject(p);
+ dom.async = false;
+ dom.loadXML(xhr.responseText);
+ _4aa = dom;
+ } catch(e) {
+ return false;
+ }
+ return true;
+ });
+ }
+ return _4aa;
+ }};
+ dojo._contentHandlers["json-comment-optional"] = function(xhr) {
+ var _4b1 = _d._contentHandlers;
+ if (xhr.responseText && xhr.responseText.indexOf("/*") != -1) {
+ return _4b1["json-comment-filtered"](xhr);
+ } else {
+ return _4b1["json"](xhr);
+ }
+ };
+ dojo._ioSetArgs = function(args, _4b3, _4b4, _4b5) {
+ var _4b6 = {args:args,url:args.url};
+ var _4b7 = null;
+ if (args.form) {
+ var form = _d.byId(args.form);
+ var _4b9 = form.getAttributeNode("action");
+ _4b6.url = _4b6.url || (_4b9 ? _4b9.value : null);
+ _4b7 = _d.formToObject(form);
+ }
+ var _4ba = [
+ {}
+ ];
+ if (_4b7) {
+ _4ba.push(_4b7);
+ }
+ if (args.content) {
+ _4ba.push(args.content);
+ }
+ if (args.preventCache) {
+ _4ba.push({"dojo.preventCache":new Date().valueOf()});
+ }
+ _4b6.query = _d.objectToQuery(_d.mixin.apply(null, _4ba));
+ _4b6.handleAs = args.handleAs || "text";
+ var d = new _d.Deferred(_4b3);
+ d.addCallbacks(_4b4, function(_4bc) {
+ return _4b5(_4bc, d);
+ });
+ var ld = args.load;
+ if (ld && _d.isFunction(ld)) {
+ d.addCallback(function(_4be) {
+ return ld.call(args, _4be, _4b6);
+ });
+ }
+ var err = args.error;
+ if (err && _d.isFunction(err)) {
+ d.addErrback(function(_4c0) {
+ return err.call(args, _4c0, _4b6);
+ });
+ }
+ var _4c1 = args.handle;
+ if (_4c1 && _d.isFunction(_4c1)) {
+ d.addBoth(function(_4c2) {
+ return _4c1.call(args, _4c2, _4b6);
+ });
+ }
+ d.ioArgs = _4b6;
+ return d;
+ };
+ var _4c3 = function(dfd) {
+ dfd.canceled = true;
+ var xhr = dfd.ioArgs.xhr;
+ var _at = typeof xhr.abort;
+ if (_at == "function" || _at == "object" || _at == "unknown") {
+ xhr.abort();
+ }
+ var err = dfd.ioArgs.error;
+ if (!err) {
+ err = new Error("xhr cancelled");
+ err.dojoType = "cancel";
+ }
+ return err;
+ };
+ var _4c8 = function(dfd) {
+ var ret = _d._contentHandlers[dfd.ioArgs.handleAs](dfd.ioArgs.xhr);
+ return ret === undefined ? null : ret;
+ };
+ var _4cb = function(_4cc, dfd) {
+ console.error(_4cc);
+ return _4cc;
+ };
+ var _4ce = null;
+ var _4cf = [];
+ var _4d0 = function() {
+ var now = (new Date()).getTime();
+ if (!_d._blockAsync) {
+ for (var i = 0,tif; i < _4cf.length && (tif = _4cf[i]);
+ i++) {
+ var dfd = tif.dfd;
+ var func = function() {
+ if (!dfd || dfd.canceled || !tif.validCheck(dfd)) {
+ _4cf.splice(i--, 1);
+ } else {
+ if (tif.ioCheck(dfd)) {
+ _4cf.splice(i--, 1);
+ tif.resHandle(dfd);
+ } else {
+ if (dfd.startTime) {
+ if (dfd.startTime
+ + (dfd.ioArgs.args.timeout || 0)
+ < now) {
+ _4cf.splice(i--, 1);
+ var err = new Error("timeout exceeded");
+ err.dojoType = "timeout";
+ dfd.errback(err);
+ dfd.cancel();
+ }
+ }
+ }
+ }
+ };
+ if (dojo.config.debugAtAllCosts) {
+ func.call(this);
+ } else {
+ try {
+ func.call(this);
+ } catch(e) {
+ dfd.errback(e);
+ }
+ }
+ }
+ }
+ if (!_4cf.length) {
+ clearInterval(_4ce);
+ _4ce = null;
+ return;
+ }
+ };
+ dojo._ioCancelAll = function() {
+ try {
+ _d.forEach(_4cf, function(i) {
+ try {
+ i.dfd.cancel();
+ } catch(e) {
+ }
+ });
+ } catch(e) {
+ }
+ };
+ if (_d.isIE) {
+ _d.addOnWindowUnload(_d._ioCancelAll);
+ }
+ _d._ioWatch = function(dfd, _4d9, _4da, _4db) {
+ var args = dfd.ioArgs.args;
+ if (args.timeout) {
+ dfd.startTime = (new Date()).getTime();
+ }
+ _4cf.push({dfd:dfd,validCheck:_4d9,ioCheck:_4da,resHandle:_4db});
+ if (!_4ce) {
+ _4ce = setInterval(_4d0, 50);
+ }
+ if (args.sync) {
+ _4d0();
+ }
+ };
+ var _4dd = "application/x-www-form-urlencoded";
+ var _4de = function(dfd) {
+ return dfd.ioArgs.xhr.readyState;
+ };
+ var _4e0 = function(dfd) {
+ return 4 == dfd.ioArgs.xhr.readyState;
+ };
+ var _4e2 = function(dfd) {
+ var xhr = dfd.ioArgs.xhr;
+ if (_d._isDocumentOk(xhr)) {
+ dfd.callback(dfd);
+ } else {
+ var err = new Error("Unable to load " + dfd.ioArgs.url
+ + " status:" + xhr.status);
+ err.status = xhr.status;
+ err.responseText = xhr.responseText;
+ dfd.errback(err);
+ }
+ };
+ dojo._ioAddQueryToUrl = function(_4e6) {
+ if (_4e6.query.length) {
+ _4e6.url += (_4e6.url.indexOf("?") == -1 ? "?" : "&")
+ + _4e6.query;
+ _4e6.query = null;
+ }
+ };
+ dojo.xhr = function(_4e7, args, _4e9) {
+ var dfd = _d._ioSetArgs(args, _4c3, _4c8, _4cb);
+ dfd.ioArgs.xhr = _d._xhrObj(dfd.ioArgs.args);
+ if (_4e9) {
+ if ("postData" in args) {
+ dfd.ioArgs.query = args.postData;
+ } else {
+ if ("putData" in args) {
+ dfd.ioArgs.query = args.putData;
+ }
+ }
+ } else {
+ _d._ioAddQueryToUrl(dfd.ioArgs);
+ }
+ var _4eb = dfd.ioArgs;
+ var xhr = _4eb.xhr;
+ xhr.open(_4e7, _4eb.url, args.sync !== true, args.user
+ || undefined, args.password || undefined);
+ if (args.headers) {
+ for (var hdr in args.headers) {
+ if (hdr.toLowerCase() === "content-type"
+ && !args.contentType) {
+ args.contentType = args.headers[hdr];
+ } else {
+ xhr.setRequestHeader(hdr, args.headers[hdr]);
+ }
+ }
+ }
+ xhr.setRequestHeader("Content-Type", args.contentType || _4dd);
+ if (!args.headers || !args.headers["X-Requested-With"]) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
+ if (dojo.config.debugAtAllCosts) {
+ xhr.send(_4eb.query);
+ } else {
+ try {
+ xhr.send(_4eb.query);
+ } catch(e) {
+ dfd.ioArgs.error = e;
+ dfd.cancel();
+ }
+ }
+ _d._ioWatch(dfd, _4de, _4e0, _4e2);
+ xhr = null;
+ return dfd;
+ };
+ dojo.xhrGet = function(args) {
+ return _d.xhr("GET", args);
+ };
+ dojo.rawXhrPost = dojo.xhrPost = function(args) {
+ return _d.xhr("POST", args, true);
+ };
+ dojo.rawXhrPut = dojo.xhrPut = function(args) {
+ return _d.xhr("PUT", args, true);
+ };
+ dojo.xhrDelete = function(args) {
+ return _d.xhr("DELETE", args);
+ };
+ })();
+ }
+ if (!dojo._hasResource["dojo._base.fx"]) {
+ dojo._hasResource["dojo._base.fx"] = true;
+ dojo.provide("dojo._base.fx");
+ (function() {
+ var d = dojo;
+ var _4f3 = d.mixin;
+ dojo._Line = function(_4f4, end) {
+ this.start = _4f4;
+ this.end = end;
+ };
+ dojo._Line.prototype.getValue = function(n) {
+ return ((this.end - this.start) * n) + this.start;
+ };
+ d.declare("dojo._Animation", null, {constructor:function(args) {
+ _4f3(this, args);
+ if (d.isArray(this.curve)) {
+ this.curve = new d._Line(this.curve[0], this.curve[1]);
+ }
+ },duration:350,repeat:0,rate:10,_percent:0,_startRepeatCount:0,_fire:function(
+ evt, args) {
+ if (this[evt]) {
+ if (dojo.config.debugAtAllCosts) {
+ this[evt].apply(this, args || []);
+ } else {
+ try {
+ this[evt].apply(this, args || []);
+ } catch(e) {
+ console.error("exception in animation handler for:", evt);
+ console.error(e);
+ }
+ }
+ }
+ return this;
+ },play:function(_4fa, _4fb) {
+ var _t = this;
+ if (_t._delayTimer) {
+ _t._clearTimer();
+ }
+ if (_4fb) {
+ _t._stopTimer();
+ _t._active = _t._paused = false;
+ _t._percent = 0;
+ } else {
+ if (_t._active && !_t._paused) {
+ return _t;
+ }
+ }
+ _t._fire("beforeBegin");
+ var de = _4fa || _t.delay,_p = dojo.hitch(_t, "_play", _4fb);
+ if (de > 0) {
+ _t._delayTimer = setTimeout(_p, de);
+ return _t;
+ }
+ _p();
+ return _t;
+ },_play:function(_4ff) {
+ var _t = this;
+ if (_t._delayTimer) {
+ _t._clearTimer();
+ }
+ _t._startTime = new Date().valueOf();
+ if (_t._paused) {
+ _t._startTime -= _t.duration * _t._percent;
+ }
+ _t._endTime = _t._startTime + _t.duration;
+ _t._active = true;
+ _t._paused = false;
+ var _501 = _t.curve.getValue(_t._percent);
+ if (!_t._percent) {
+ if (!_t._startRepeatCount) {
+ _t._startRepeatCount = _t.repeat;
+ }
+ _t._fire("onBegin", [_501]);
+ }
+ _t._fire("onPlay", [_501]);
+ _t._cycle();
+ return _t;
+ },pause:function() {
+ var _t = this;
+ if (_t._delayTimer) {
+ _t._clearTimer();
+ }
+ _t._stopTimer();
+ if (!_t._active) {
+ return _t;
+ }
+ _t._paused = true;
+ _t._fire("onPause", [_t.curve.getValue(_t._percent)]);
+ return _t;
+ },gotoPercent:function(_503, _504) {
+ var _t = this;
+ _t._stopTimer();
+ _t._active = _t._paused = true;
+ _t._percent = _503;
+ if (_504) {
+ _t.play();
+ }
+ return _t;
+ },stop:function(_506) {
+ var _t = this;
+ if (_t._delayTimer) {
+ _t._clearTimer();
+ }
+ if (!_t._timer) {
+ return _t;
+ }
+ _t._stopTimer();
+ if (_506) {
+ _t._percent = 1;
+ }
+ _t._fire("onStop", [_t.curve.getValue(_t._percent)]);
+ _t._active = _t._paused = false;
+ return _t;
+ },status:function() {
+ if (this._active) {
+ return this._paused ? "paused" : "playing";
+ }
+ return "stopped";
+ },_cycle:function() {
+ var _t = this;
+ if (_t._active) {
+ var curr = new Date().valueOf();
+ var step = (curr - _t._startTime) / (_t._endTime
+ - _t._startTime);
+ if (step >= 1) {
+ step = 1;
+ }
+ _t._percent = step;
+ if (_t.easing) {
+ step = _t.easing(step);
+ }
+ _t._fire("onAnimate", [_t.curve.getValue(step)]);
+ if (_t._percent < 1) {
+ _t._startTimer();
+ } else {
+ _t._active = false;
+ if (_t.repeat > 0) {
+ _t.repeat--;
+ _t.play(null, true);
+ } else {
+ if (_t.repeat == -1) {
+ _t.play(null, true);
+ } else {
+ if (_t._startRepeatCount) {
+ _t.repeat = _t._startRepeatCount;
+ _t._startRepeatCount = 0;
+ }
+ }
+ }
+ _t._percent = 0;
+ _t._fire("onEnd");
+ _t._stopTimer();
+ }
+ }
+ return _t;
+ },_clearTimer:function() {
+ clearTimeout(this._delayTimer);
+ delete this._delayTimer;
+ }});
+ var ctr = 0,_50c = [],_50d = null,_50e = {run:function() {
+ }};
+ dojo._Animation.prototype._startTimer = function() {
+ if (!this._timer) {
+ this._timer = d.connect(_50e, "run", this, "_cycle");
+ ctr++;
+ }
+ if (!_50d) {
+ _50d = setInterval(d.hitch(_50e, "run"), this.rate);
+ }
+ };
+ dojo._Animation.prototype._stopTimer = function() {
+ if (this._timer) {
+ d.disconnect(this._timer);
+ this._timer = null;
+ ctr--;
+ }
+ if (ctr <= 0) {
+ clearInterval(_50d);
+ _50d = null;
+ ctr = 0;
+ }
+ };
+ var _50f = d.isIE ? function(node) {
+ var ns = node.style;
+ if (!ns.width.length && d.style(node, "width") == "auto") {
+ ns.width = "auto";
+ }
+ } : function() {
+ };
+ dojo._fade = function(args) {
+ args.node = d.byId(args.node);
+ var _513 = _4f3({properties:{}}, args),_514 = (_513.properties.opacity
+ = {});
+ _514.start = !("start" in _513) ? function() {
+ return +d.style(_513.node, "opacity") || 0;
+ } : _513.start;
+ _514.end = _513.end;
+ var anim = d.animateProperty(_513);
+ d.connect(anim, "beforeBegin", d.partial(_50f, _513.node));
+ return anim;
+ };
+ dojo.fadeIn = function(args) {
+ return d._fade(_4f3({end:1}, args));
+ };
+ dojo.fadeOut = function(args) {
+ return d._fade(_4f3({end:0}, args));
+ };
+ dojo._defaultEasing = function(n) {
+ return 0.5 + ((Math.sin((n + 1.5) * Math.PI)) / 2);
+ };
+ var _519 = function(_51a) {
+ this._properties = _51a;
+ for (var p in _51a) {
+ var prop = _51a[p];
+ if (prop.start instanceof d.Color) {
+ prop.tempColor = new d.Color();
+ }
+ }
+ };
+ _519.prototype.getValue = function(r) {
+ var ret = {};
+ for (var p in this._properties) {
+ var prop = this._properties[p],_521 = prop.start;
+ if (_521 instanceof d.Color) {
+ ret[p] = d.blendColors(_521, prop.end, r, prop.tempColor).toCss();
+ } else {
+ if (!d.isArray(_521)) {
+ ret[p] = ((prop.end - _521) * r) + _521 + (p
+ != "opacity" ? prop.units || "px" : 0);
+ }
+ }
+ }
+ return ret;
+ };
+ dojo.animateProperty = function(args) {
+ args.node = d.byId(args.node);
+ if (!args.easing) {
+ args.easing = d._defaultEasing;
+ }
+ var anim = new d._Animation(args);
+ d.connect(anim, "beforeBegin", anim, function() {
+ var pm = {};
+ for (var p in this.properties) {
+ if (p == "width" || p == "height") {
+ this.node.display = "block";
+ }
+ var prop = this.properties[p];
+ prop = pm[p] = _4f3({}, (d.isObject(prop) ? prop
+ : {end:prop}));
+ if (d.isFunction(prop.start)) {
+ prop.start = prop.start();
+ }
+ if (d.isFunction(prop.end)) {
+ prop.end = prop.end();
+ }
+ var _527 = (p.toLowerCase().indexOf("color") >= 0);
+
+ function _528(node, p) {
+ var v = {height:node.offsetHeight,width:node.offsetWidth}[p];
+ if (v !== undefined) {
+ return v;
+ }
+ v = d.style(node, p);
+ return (p == "opacity") ? +v : (_527 ? v
+ : parseFloat(v));
+ }
+
+ ;
+ if (!("end" in prop)) {
+ prop.end = _528(this.node, p);
+ } else {
+ if (!("start" in prop)) {
+ prop.start = _528(this.node, p);
+ }
+ }
+ if (_527) {
+ prop.start = new d.Color(prop.start);
+ prop.end = new d.Color(prop.end);
+ } else {
+ prop.start = (p == "opacity") ? +prop.start
+ : parseFloat(prop.start);
+ }
+ }
+ this.curve = new _519(pm);
+ });
+ d.connect(anim, "onAnimate", d.hitch(d, "style", anim.node));
+ return anim;
+ };
+ dojo.anim = function(node, _52d, _52e, _52f, _530, _531) {
+ return d.animateProperty({node:node,duration:_52e
+ || d._Animation.prototype.duration,properties:_52d,easing:_52f,onEnd:_530}).play(_531
+ || 0);
+ };
+ })();
+ }
+ if (!dojo._hasResource["dojo._base.browser"]) {
+ dojo._hasResource["dojo._base.browser"] = true;
+ dojo.provide("dojo._base.browser");
+ dojo.forEach(dojo.config.require, function(i) {
+ dojo["require"](i);
+ });
+ }
+ if (dojo.config.afterOnLoad && dojo.isBrowser) {
+ window.setTimeout(dojo._loadInit, 1000);
+ }
+})();
diff --git a/samples/src/main/java/gwtquery/samples/public/ext-all.js b/samples/src/main/java/gwtquery/samples/public/ext-all.js
index 862e75f3..96c6792d 100644
--- a/samples/src/main/java/gwtquery/samples/public/ext-all.js
+++ b/samples/src/main/java/gwtquery/samples/public/ext-all.js
@@ -6,152 +6,22170 @@
* http://extjs.com/license
*/
-Ext.DomHelper=function(){var L=null;var F=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var B=/^table|tbody|tr|td$/i;var A=function(T){if(typeof T=="string"){return T}var O="";if(Ext.isArray(T)){for(var R=0,P=T.length;R<P;R++){O+=A(T[R])}return O}if(!T.tag){T.tag="div"}O+="<"+T.tag;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||typeof T[N]=="function"){continue}if(N=="style"){var S=T["style"];if(typeof S=="function"){S=S.call()}if(typeof S=="string"){O+=" style=\""+S+"\""}else{if(typeof S=="object"){O+=" style=\"";for(var Q in S){if(typeof S[Q]!="function"){O+=Q+":"+S[Q]+";"}}O+="\""}}}else{if(N=="cls"){O+=" class=\""+T["cls"]+"\""}else{if(N=="htmlFor"){O+=" for=\""+T["htmlFor"]+"\""}else{O+=" "+N+"=\""+T[N]+"\""}}}}if(F.test(T.tag)){O+="/>"}else{O+=">";var U=T.children||T.cn;if(U){O+=A(U)}else{if(T.html){O+=T.html}}O+="</"+T.tag+">"}return O};var M=function(T,O){var S;if(Ext.isArray(T)){S=document.createDocumentFragment();for(var R=0,P=T.length;R<P;R++){M(T[R],S)}}else{if(typeof T=="string)"){S=document.createTextNode(T)}else{S=document.createElement(T.tag||"div");var Q=!!S.setAttribute;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||N=="style"||typeof T[N]=="function"){continue}if(N=="cls"){S.className=T["cls"]}else{if(Q){S.setAttribute(N,T[N])}else{S[N]=T[N]}}}Ext.DomHelper.applyStyles(S,T.style);var U=T.children||T.cn;if(U){M(U,S)}else{if(T.html){S.innerHTML=T.html}}}}if(O){O.appendChild(S)}return S};var I=function(S,Q,P,R){L.innerHTML=[Q,P,R].join("");var N=-1,O=L;while(++N<S){O=O.firstChild}return O};var J="<table>",E="</table>",C=J+"<tbody>",K="</tbody>"+E,H=C+"<tr>",D="</tr>"+K;var G=function(N,O,Q,P){if(!L){L=document.createElement("div")}var R;var S=null;if(N=="td"){if(O=="afterbegin"||O=="beforeend"){return }if(O=="beforebegin"){S=Q;Q=Q.parentNode}else{S=Q.nextSibling;Q=Q.parentNode}R=I(4,H,P,D)}else{if(N=="tr"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(4,H,P,D)}}}else{if(N=="tbody"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(3,C,P,K)}}}else{if(O=="beforebegin"||O=="afterend"){return }if(O=="afterbegin"){S=Q.firstChild}R=I(2,J,P,E)}}}Q.insertBefore(R,S);return R};return{useDom:false,markup:function(N){return A(N)},applyStyles:function(P,Q){if(Q){P=Ext.fly(P);if(typeof Q=="string"){var O=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var R;while((R=O.exec(Q))!=null){P.setStyle(R[1],R[2])}}else{if(typeof Q=="object"){for(var N in Q){P.setStyle(N,Q[N])}}else{if(typeof Q=="function"){Ext.DomHelper.applyStyles(P,Q.call())}}}}},insertHtml:function(P,R,Q){P=P.toLowerCase();if(R.insertAdjacentHTML){if(B.test(R.tagName)){var O;if(O=G(R.tagName.toLowerCase(),P,R,Q)){return O}}switch(P){case"beforebegin":R.insertAdjacentHTML("BeforeBegin",Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin",Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd",Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd",Q);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""}var N=R.ownerDocument.createRange();var S;switch(P){case"beforebegin":N.setStartBefore(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R);return R.previousSibling;case"afterbegin":if(R.firstChild){N.setStartBefore(R.firstChild);S=N.createContextualFragment(Q);R.insertBefore(S,R.firstChild);return R.firstChild}else{R.innerHTML=Q;return R.firstChild}case"beforeend":if(R.lastChild){N.setStartAfter(R.lastChild);S=N.createContextualFragment(Q);R.appendChild(S);return R.lastChild}else{R.innerHTML=Q;return R.lastChild}case"afterend":N.setStartAfter(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R.nextSibling);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""},insertBefore:function(N,P,O){return this.doInsert(N,P,O,"beforeBegin")},insertAfter:function(N,P,O){return this.doInsert(N,P,O,"afterEnd","nextSibling")},insertFirst:function(N,P,O){return this.doInsert(N,P,O,"afterBegin","firstChild")},doInsert:function(Q,S,R,T,P){Q=Ext.getDom(Q);var O;if(this.useDom){O=M(S,null);(P==="firstChild"?Q:Q.parentNode).insertBefore(O,P?Q[P]:Q)}else{var N=A(S);O=this.insertHtml(T,Q,N)}return R?Ext.get(O,true):O},append:function(P,R,Q){P=Ext.getDom(P);var O;if(this.useDom){O=M(R,null);P.appendChild(O)}else{var N=A(R);O=this.insertHtml("beforeEnd",P,N)}return Q?Ext.get(O,true):O},overwrite:function(N,P,O){N=Ext.getDom(N);N.innerHTML=A(P);return O?Ext.get(N.firstChild,true):N.firstChild},createTemplate:function(O){var N=A(O);return new Ext.Template(N)}}}();
-Ext.Template=function(E){var B=arguments;if(Ext.isArray(E)){E=E.join("")}else{if(B.length>1){var C=[];for(var D=0,A=B.length;D<A;D++){if(typeof B[D]=="object"){Ext.apply(this,B[D])}else{C[C.length]=B[D]}}E=C.join("")}}this.html=E;if(this.compiled){this.compile()}};Ext.Template.prototype={applyTemplate:function(B){if(this.compiled){return this.compiled(B)}var A=this.disableFormats!==true;var E=Ext.util.Format,C=this;var D=function(G,I,L,H){if(L&&A){if(L.substr(0,5)=="this."){return C.call(L.substr(5),B[I],B)}else{if(H){var K=/^\s*['"](.*)["']\s*$/;H=H.split(",");for(var J=0,F=H.length;J<F;J++){H[J]=H[J].replace(K,"$1")}H=[B[I]].concat(H)}else{H=[B[I]]}return E[L].apply(E,H)}}else{return B[I]!==undefined?B[I]:""}};return this.html.replace(this.re,D)},set:function(A,B){this.html=A;this.compiled=null;if(B){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(C,B,A){return this[C](B,A)},insertFirst:function(B,A,C){return this.doInsert("afterBegin",B,A,C)},insertBefore:function(B,A,C){return this.doInsert("beforeBegin",B,A,C)},insertAfter:function(B,A,C){return this.doInsert("afterEnd",B,A,C)},append:function(B,A,C){return this.doInsert("beforeEnd",B,A,C)},doInsert:function(C,E,B,A){E=Ext.getDom(E);var D=Ext.DomHelper.insertHtml(C,E,this.applyTemplate(B));return A?Ext.get(D,true):D},overwrite:function(B,A,C){B=Ext.getDom(B);B.innerHTML=this.applyTemplate(A);return C?Ext.get(B.firstChild,true):B.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomHelper.Template=Ext.Template;Ext.Template.from=function(B,A){B=Ext.getDom(B);return new Ext.Template(B.value||B.innerHTML,A||"")};
-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 A=this.events[arguments[0].toLowerCase()];if(typeof A=="object"){return A.fire.apply(A,Array.prototype.slice.call(arguments,1))}}return true},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A,C,B,F){if(typeof A=="object"){F=A;for(var E in F){if(this.filterOptRe.test(E)){continue}if(typeof F[E]=="function"){this.addListener(E,F[E],F.scope,F)}else{this.addListener(E,F[E].fn,F[E].scope,F[E])}}return }F=(!F||typeof F=="boolean")?{}:F;A=A.toLowerCase();var D=this.events[A]||true;if(typeof D=="boolean"){D=new Ext.util.Event(this,A);this.events[A]=D}D.addListener(C,B,F)},removeListener:function(A,C,B){var D=this.events[A.toLowerCase()];if(typeof D=="object"){D.removeListener(C,B)}},purgeListeners:function(){for(var A in this.events){if(typeof this.events[A]=="object"){this.events[A].clearListeners()}}},relayEvents:function(F,D){var E=function(G){return function(){return this.fireEvent.apply(this,Ext.combine(G,Array.prototype.slice.call(arguments,0)))}};for(var C=0,A=D.length;C<A;C++){var B=D[C];if(!this.events[B]){this.events[B]=true}F.on(B,E(B),this)}},addEvents:function(D){if(!this.events){this.events={}}if(typeof D=="string"){for(var C=0,A=arguments,B;B=A[C];C++){if(!this.events[A[C]]){D[A[C]]=true}}}else{Ext.applyIf(this.events,D)}},hasListener:function(A){var B=this.events[A];return typeof B=="object"&&B.listeners.length>0},suspendEvents:function(){this.eventsSuspended=true},resumeEvents:function(){this.eventsSuspended=false},getMethodEvent:function(G){if(!this.methodEvents){this.methodEvents={}}var F=this.methodEvents[G];if(!F){F={};this.methodEvents[G]=F;F.originalFn=this[G];F.methodName=G;F.before=[];F.after=[];var C,B,D;var E=this;var A=function(J,I,H){if((B=J.apply(I||E,H))!==undefined){if(typeof B==="object"){if(B.returnValue!==undefined){C=B.returnValue}else{C=B}if(B.cancel===true){D=true}}else{if(B===false){D=true}else{C=B}}}};this[G]=function(){C=B=undefined;D=false;var I=Array.prototype.slice.call(arguments,0);for(var J=0,H=F.before.length;J<H;J++){A(F.before[J].fn,F.before[J].scope,I);if(D){return C}}if((B=F.originalFn.apply(E,I))!==undefined){C=B}for(var J=0,H=F.after.length;J<H;J++){A(F.after[J].fn,F.after[J].scope,I);if(D){return C}}return C}}return F},beforeMethod:function(D,B,A){var C=this.getMethodEvent(D);C.before.push({fn:B,scope:A})},afterMethod:function(D,B,A){var C=this.getMethodEvent(D);C.after.push({fn:B,scope:A})},removeMethodListener:function(F,D,C){var E=this.getMethodEvent(F);for(var B=0,A=E.before.length;B<A;B++){if(E.before[B].fn==D&&E.before[B].scope==C){E.before.splice(B,1);return }}for(var B=0,A=E.after.length;B<A;B++){if(E.after[B].fn==D&&E.after[B].scope==C){E.after.splice(B,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(C,B,A){C.fireEvent=C.fireEvent.createInterceptor(B,A)};Ext.util.Observable.releaseCapture=function(A){A.fireEvent=Ext.util.Observable.prototype.fireEvent};(function(){var B=function(F,G,E){var D=new Ext.util.DelayedTask();return function(){D.delay(G.buffer,F,E,Array.prototype.slice.call(arguments,0))}};var C=function(F,G,E,D){return function(){G.removeListener(E,D);return F.apply(D,arguments)}};var A=function(E,F,D){return function(){var G=Array.prototype.slice.call(arguments,0);setTimeout(function(){E.apply(D,G)},F.delay||10)}};Ext.util.Event=function(E,D){this.name=D;this.obj=E;this.listeners=[]};Ext.util.Event.prototype={addListener:function(G,F,E){F=F||this.obj;if(!this.isListening(G,F)){var D=this.createListener(G,F,E);if(!this.firing){this.listeners.push(D)}else{this.listeners=this.listeners.slice(0);this.listeners.push(D)}}},createListener:function(G,F,H){H=H||{};F=F||this.obj;var D={fn:G,scope:F,options:H};var E=G;if(H.delay){E=A(E,H,F)}if(H.single){E=C(E,this,G,F)}if(H.buffer){E=B(E,H,F)}D.fireFn=E;return D},findListener:function(I,H){H=H||this.obj;var F=this.listeners;for(var G=0,D=F.length;G<D;G++){var E=F[G];if(E.fn==I&&E.scope==H){return G}}return -1},isListening:function(E,D){return this.findListener(E,D)!=-1},removeListener:function(F,E){var D;if((D=this.findListener(F,E))!=-1){if(!this.firing){this.listeners.splice(D,1)}else{this.listeners=this.listeners.slice(0);this.listeners.splice(D,1)}return true}return false},clearListeners:function(){this.listeners=[]},fire:function(){var F=this.listeners,I,D=F.length;if(D>0){this.firing=true;var G=Array.prototype.slice.call(arguments,0);for(var H=0;H<D;H++){var E=F[H];if(E.fireFn.apply(E.scope||this.obj||window,arguments)===false){this.firing=false;return false}}this.firing=false}return true}}})();
-Ext.EventManager=function(){var T,M,I=false;var K,S,C,O;var L=Ext.lib.Event;var N=Ext.lib.Dom;var B=function(){if(!I){I=true;Ext.isReady=true;if(M){clearInterval(M)}if(Ext.isGecko||Ext.isOpera){document.removeEventListener("DOMContentLoaded",B,false)}if(Ext.isIE){var D=document.getElementById("ie-deferred-loader");if(D){D.onreadystatechange=null;D.parentNode.removeChild(D)}}if(T){T.fire();T.clearListeners()}}};var A=function(){T=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){document.addEventListener("DOMContentLoaded",B,false)}else{if(Ext.isIE){document.write("<s"+"cript id=\"ie-deferred-loader\" defer=\"defer\" src=\"/"+"/:\"></s"+"cript>");var D=document.getElementById("ie-deferred-loader");D.onreadystatechange=function(){if(this.readyState=="complete"){B()}}}else{if(Ext.isSafari){M=setInterval(function(){var E=document.readyState;if(E=="complete"){B()}},10)}}}L.on(window,"load",B)};var R=function(E,U){var D=new Ext.util.DelayedTask(E);return function(V){V=new Ext.EventObjectImpl(V);D.delay(U.buffer,E,null,[V])}};var P=function(V,U,D,E){return function(W){Ext.EventManager.removeListener(U,D,E);V(W)}};var F=function(D,E){return function(U){U=new Ext.EventObjectImpl(U);setTimeout(function(){D(U)},E.delay||10)}};var J=function(U,E,D,Y,X){var Z=(!D||typeof D=="boolean")?{}:D;Y=Y||Z.fn;X=X||Z.scope;var W=Ext.getDom(U);if(!W){throw"Error listening for \""+E+"\". Element \""+U+"\" doesn't exist."}var V=function(b){b=Ext.EventObject.setEvent(b);var a;if(Z.delegate){a=b.getTarget(Z.delegate,W);if(!a){return }}else{a=b.target}if(Z.stopEvent===true){b.stopEvent()}if(Z.preventDefault===true){b.preventDefault()}if(Z.stopPropagation===true){b.stopPropagation()}if(Z.normalized===false){b=b.browserEvent}Y.call(X||W,b,a,Z)};if(Z.delay){V=F(V,Z)}if(Z.single){V=P(V,W,E,Y)}if(Z.buffer){V=R(V,Z)}Y._handlers=Y._handlers||[];Y._handlers.push([Ext.id(W),E,V]);L.on(W,E,V);if(E=="mousewheel"&&W.addEventListener){W.addEventListener("DOMMouseScroll",V,false);L.on(window,"unload",function(){W.removeEventListener("DOMMouseScroll",V,false)})}if(E=="mousedown"&&W==document){Ext.EventManager.stoppedMouseDownEvent.addListener(V)}return V};var G=function(E,U,Z){var D=Ext.id(E),a=Z._handlers,X=Z;if(a){for(var V=0,Y=a.length;V<Y;V++){var W=a[V];if(W[0]==D&&W[1]==U){X=W[2];a.splice(V,1);break}}}L.un(E,U,X);E=Ext.getDom(E);if(U=="mousewheel"&&E.addEventListener){E.removeEventListener("DOMMouseScroll",X,false)}if(U=="mousedown"&&E==document){Ext.EventManager.stoppedMouseDownEvent.removeListener(X)}};var H=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var Q={addListener:function(U,D,W,V,E){if(typeof D=="object"){var Y=D;for(var X in Y){if(H.test(X)){continue}if(typeof Y[X]=="function"){J(U,X,Y,Y[X],Y.scope)}else{J(U,X,Y[X])}}return }return J(U,D,E,W,V)},removeListener:function(E,D,U){return G(E,D,U)},onDocumentReady:function(U,E,D){if(I){T.addListener(U,E,D);T.fire();T.clearListeners();return }if(!T){A()}T.addListener(U,E,D)},onWindowResize:function(U,E,D){if(!K){K=new Ext.util.Event();S=new Ext.util.DelayedTask(function(){K.fire(N.getViewWidth(),N.getViewHeight())});L.on(window,"resize",this.fireWindowResize,this)}K.addListener(U,E,D)},fireWindowResize:function(){if(K){if((Ext.isIE||Ext.isAir)&&S){S.delay(50)}else{K.fire(N.getViewWidth(),N.getViewHeight())}}},onTextResize:function(V,U,D){if(!C){C=new Ext.util.Event();var E=new Ext.Element(document.createElement("div"));E.dom.className="x-text-resize";E.dom.innerHTML="X";E.appendTo(document.body);O=E.dom.offsetHeight;setInterval(function(){if(E.dom.offsetHeight!=O){C.fire(O,O=E.dom.offsetHeight)}},this.textResizeInterval)}C.addListener(V,U,D)},removeResizeListener:function(E,D){if(K){K.removeListener(E,D)}},fireResize:function(){if(K){K.fire(N.getViewWidth(),N.getViewHeight())}},ieDeferSrc:false,textResizeInterval:50};Q.on=Q.addListener;Q.un=Q.removeListener;Q.stoppedMouseDownEvent=new Ext.util.Event();return Q}();Ext.onReady=Ext.EventManager.onDocumentReady;Ext.onReady(function(){var B=Ext.getBody();if(!B){return }var A=[Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":"ext-ie7"):Ext.isGecko?"ext-gecko":Ext.isOpera?"ext-opera":Ext.isSafari?"ext-safari":""];if(Ext.isMac){A.push("ext-mac")}if(Ext.isLinux){A.push("ext-linux")}if(Ext.isBorderBox){A.push("ext-border-box")}if(Ext.isStrict){var C=B.dom.parentNode;if(C){C.className+=" ext-strict"}}B.addClass(A.join(" "))});Ext.EventObject=function(){var B=Ext.lib.Event;var A={63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};var C=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(D){if(D){this.setEvent(D.browserEvent||D)}};Ext.EventObjectImpl.prototype={browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(D){if(D==this||(D&&D.browserEvent)){return D}this.browserEvent=D;if(D){this.button=D.button?C[D.button]:(D.which?D.which-1:-1);if(D.type=="click"&&this.button==-1){this.button=0}this.type=D.type;this.shiftKey=D.shiftKey;this.ctrlKey=D.ctrlKey||D.metaKey;this.altKey=D.altKey;this.keyCode=D.keyCode;this.charCode=D.charCode;this.target=B.getTarget(D);this.xy=B.getXY(D)}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)}B.stopEvent(this.browserEvent)}},preventDefault:function(){if(this.browserEvent){B.preventDefault(this.browserEvent)}},isNavKeyPress:function(){var D=this.keyCode;D=Ext.isSafari?(A[D]||D):D;return(D>=33&&D<=40)||D==this.RETURN||D==this.TAB||D==this.ESC},isSpecialKey:function(){var D=this.keyCode;return(this.type=="keypress"&&this.ctrlKey)||D==9||D==13||D==40||D==27||(D==16)||(D==17)||(D>=18&&D<=20)||(D>=33&&D<=35)||(D>=36&&D<=39)||(D>=44&&D<=45)},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}B.stopPropagation(this.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){var D=this.keyCode||this.charCode;return Ext.isSafari?(A[D]||D):D},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getTime:function(){if(this.browserEvent){return B.getTime(this.browserEvent)}return null},getXY:function(){return this.xy},getTarget:function(E,G,D){var F=Ext.get(this.target);return E?F.findParent(E,G,D):(D?F:this.target)},getRelatedTarget:function(){if(this.browserEvent){return B.getRelatedTarget(this.browserEvent)}return null},getWheelDelta:function(){var D=this.browserEvent;var E=0;if(D.wheelDelta){E=D.wheelDelta/120}else{if(D.detail){E=-D.detail/3}}return E},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false},within:function(E,F){var D=this[F?"getRelatedTarget":"getTarget"]();return D&&Ext.fly(E).contains(D)},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)||0.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,unique){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(0.01);this.setVisible(true)}this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,0.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){Ext.EventManager.removeListener(this.dom,eventName,fn);return this},removeAllListeners:function(){E.purgeElement(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,0.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.isGecko){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*0.5);y=r(h*0.5);break;case"t":x=r(w*0.5);y=0;break;case"l":x=0;y=r(h*0.5);break;case"r":x=w;y=r(h*0.5);break;case"b":x=r(w*0.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+="<span id=\""+id+"\"></span>";E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}var el=document.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},load:function(){var um=this.getUpdater();um.update.apply(um,arguments);return this},getUpdater:function(){if(!this.updateManager){this.updateManager=new Ext.Updater(this)}return this.updateManager},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(centerIn){this.alignTo(centerIn||document,"c-c");return this},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY()}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top]}var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)}}bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides))},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"))}this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint")},1);return this},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0}}else{return this.addStyles(side,El.margins)}},addStyles:function(sides,styles){var val=0,v,w;for(var i=0,len=sides.length;i<len;i++){v=this.getStyle(styles[sides.charAt(i)]);if(v){w=parseInt(v,10);if(w){val+=(w>=0?w:-1*w)}}}return val},createProxy:function(config,renderTo,matchBox){config=typeof config=="object"?config:{tag:"div",cls:config};var proxy;if(renderTo){proxy=Ext.DomHelper.append(renderTo,config,true)}else{proxy=Ext.DomHelper.insertBefore(this.dom,config,true)}if(matchBox){proxy.setBox(this.getBox())}return proxy},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative")}if(this._maskMsg){this._maskMsg.remove()}if(this._mask){this._mask.remove()}this._mask=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask"},true);this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=="string"){this._maskMsg=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask-msg",cn:{tag:"div"}},true);var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&this.getStyle("height")=="auto"){this._mask.setSize(this.dom.clientWidth,this.getHeight())}return this._mask},unmask:function(){if(this._mask){if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg}this._mask.remove();delete this._mask}this.removeClass("x-masked")},isMasked:function(){return this._mask&&this._mask.isVisible()},createShim:function(){var el=document.createElement("iframe");el.frameBorder="no";el.className="ext-shim";if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL}var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},remove:function(){Ext.removeNode(this.dom);delete El.cache[this.dom.id]},hover:function(overFn,outFn,scope){var preOverFn=function(e){if(!e.within(this,true)){overFn.apply(scope||this,arguments)}};var preOutFn=function(e){if(!e.within(this,true)){outFn.apply(scope||this,arguments)}};this.on("mouseover",preOverFn,this.dom);this.on("mouseout",preOutFn,this.dom);return this},addClassOnOver:function(className,preventFlicker){this.hover(function(){Ext.fly(this,"_internal").addClass(className)},function(){Ext.fly(this,"_internal").removeClass(className)});return this},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,"_internal").addClass(className)},this.dom);this.on("blur",function(){Ext.fly(this,"_internal").removeClass(className)},this.dom);return this},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,"_internal").addClass(className);var d=Ext.getDoc();var fn=function(){Ext.fly(dom,"_internal").removeClass(className);d.removeListener("mouseup",fn)};d.on("mouseup",fn)});return this},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){for(var i=0,len=eventName.length;i<len;i++){this.on(eventName[i],fn)}return this}this.on(eventName,fn);return this},parent:function(selector,returnDom){return this.matchNode("parentNode","parentNode",selector,returnDom)},next:function(selector,returnDom){return this.matchNode("nextSibling","nextSibling",selector,returnDom)},prev:function(selector,returnDom){return this.matchNode("previousSibling","previousSibling",selector,returnDom)},first:function(selector,returnDom){return this.matchNode("nextSibling","firstChild",selector,returnDom)},last:function(selector,returnDom){return this.matchNode("previousSibling","lastChild",selector,returnDom)},matchNode:function(dir,start,selector,returnDom){var n=this.dom[start];while(n){if(n.nodeType==1&&(!selector||Ext.DomQuery.is(n,selector))){return !returnDom?Ext.get(n):n}n=n[dir]}return null},appendChild:function(el){el=Ext.get(el);el.appendTo(this);return this},createChild:function(config,insertBefore,returnDom){config=config||{tag:"div"};if(insertBefore){return Ext.DomHelper.insertBefore(insertBefore,config,returnDom!==true)}return Ext.DomHelper[!this.dom.firstChild?"overwrite":"append"](this.dom,config,returnDom!==true)},appendTo:function(el){el=Ext.getDom(el);el.appendChild(this.dom);return this},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this},insertFirst:function(el,returnDom){el=el||{};if(typeof el=="object"&&!el.nodeType&&!el.dom){return this.createChild(el,this.dom.firstChild,returnDom)}else{el=Ext.getDom(el);this.dom.insertBefore(el,this.dom.firstChild);return !returnDom?Ext.get(el):el}},insertSibling:function(el,where,returnDom){var rt;if(Ext.isArray(el)){for(var i=0,len=el.length;i<len;i++){rt=this.insertSibling(el[i],where,returnDom)}return rt}where=where?where.toLowerCase():"before";el=el||{};var refNode=where=="before"?this.dom:this.dom.nextSibling;if(typeof el=="object"&&!el.nodeType&&!el.dom){if(where=="after"&&!this.dom.nextSibling){rt=Ext.DomHelper.append(this.dom.parentNode,el,!returnDom)}else{rt=Ext.DomHelper[where=="after"?"insertAfter":"insertBefore"](this.dom,el,!returnDom)}}else{rt=this.dom.parentNode.insertBefore(Ext.getDom(el),refNode);if(!returnDom){rt=Ext.get(rt)}}return rt},wrap:function(config,returnDom){if(!config){config={tag:"div"}}var newEl=Ext.DomHelper.insertBefore(this.dom,config,!returnDom);newEl.dom?newEl.dom.appendChild(this.dom):newEl.appendChild(this.dom);return newEl},replace:function(el){el=Ext.get(el);this.insertBefore(el);el.remove();return this},replaceWith:function(el){if(typeof el=="object"&&!el.nodeType&&!el.dom){el=this.insertSibling(el,"before")}else{el=Ext.getDom(el);this.dom.parentNode.insertBefore(el,this.dom)}El.uncache(this.id);this.dom.parentNode.removeChild(this.dom);this.dom=el;this.id=Ext.id(el);El.cache[this.id]=this;return this},insertHtml:function(where,html,returnEl){var el=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el},set:function(o,useSet){var el=this.dom;useSet=typeof useSet=="undefined"?(el.setAttribute?true:false):useSet;for(var attr in o){if(attr=="style"||typeof o[attr]=="function"){continue}if(attr=="cls"){el.className=o["cls"]}else{if(o.hasOwnProperty(attr)){if(useSet){el.setAttribute(attr,o[attr])}else{el[attr]=o[attr]}}}}if(o.style){Ext.DomHelper.applyStyles(el,o.style)}return this},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||Ext.isArray(key)){config={key:key,fn:fn,scope:scope}}else{config={key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}}return new Ext.KeyMap(this,config)},addKeyMap:function(config){return new Ext.KeyMap(this,config)},isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),"scroll")}return this},scroll:function(direction,distance,animate){if(!this.isScrollable()){return }var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true}break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true}break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true}break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true}break}return scrolled},translatePoints:function(x,y){if(typeof x=="object"||Ext.isArray(x)){y=x[1];x=x[0]}var p=this.getStyle("position");var o=this.getXY();var l=parseInt(this.getStyle("left"),10);var t=parseInt(this.getStyle("top"),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft}if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop}return{left:(x-o[0]+l),top:(y-o[1]+t)}},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l,t;if(Ext.isIE&&Ext.isStrict){l=doc.documentElement.scrollLeft||(doc.body.scrollLeft||0);t=doc.documentElement.scrollTop||(doc.body.scrollTop||0)}else{l=window.pageXOffset||(doc.body.scrollLeft||0);t=window.pageYOffset||(doc.body.scrollTop||0)}return{left:l,top:t}}else{return{left:d.scrollLeft,top:d.scrollTop}}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue}var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]);var s=h.toString(16);if(h<16){s="0"+s}color+=s}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c}}else{if(v.length==7){color+=v.substr(1)}}}}return(color.length>5?color.toLowerCase():defaultValue)},boxWrap:function(cls){cls=cls||"x-box";var el=Ext.get(this.insertHtml("beforeBegin",String.format("<div class=\"{0}\">"+El.boxMarkup+"</div>",cls)));el.child("."+cls+"-mc").dom.appendChild(this.dom);return el},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]}return d[name]}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name]},getTextWidth:function(text,min,max){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(text,this.dom.innerHTML,true)).width).constrain(min||0,max||1000000)}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.getUpdateManager=ep.getUpdater;ep.un=ep.removeListener;ep.autoBoxAdjust=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v}if(v===undefined){return""}if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||"px")}return v};El.boxMarkup="<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div><div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div><div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>";El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null}if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null}if(ex=El.cache[el]){ex.dom=elm}else{ex=El.cache[el]=new El(elm)}return ex}else{if(el.tagName){if(!(id=el.id)){id=Ext.id(el)}if(ex=El.cache[id]){ex.dom=el}else{ex=El.cache[id]=new El(el)}return ex}else{if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el}return el}else{if(el.isComposite){return el}else{if(Ext.isArray(el)){return El.select(el)}else{if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document}return docEl}}}}}}return null};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i]){delete El.cache[a[i].id||a[i]]}}};El.garbageCollect=function(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThread);return }for(var eid in El.cache){var el=El.cache[eid],d=el.dom;if(!d||!d.parentNode||(!d.offsetParent&&!document.getElementById(eid))){delete El.cache[eid];if(d&&Ext.enableListenerCollection){E.purgeElement(d)}}}};El.collectorThreadId=setInterval(El.garbageCollect,30000);var flyFn=function(){};flyFn.prototype=El.prototype;var _cls=new flyFn();El.Flyweight=function(dom){this.dom=dom};El.Flyweight.prototype=_cls;El.Flyweight.prototype.isFlyweight=true;El._flyweights={};El.fly=function(el,named){named=named||"_global";el=Ext.getDom(el);if(!el){return null}if(!El._flyweights[named]){El._flyweights[named]=new El.Flyweight()}El._flyweights[named].dom=el;return El._flyweights[named]};Ext.get=El.get;Ext.fly=El.fly;var noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){noBoxAdjust["button"]=1}Ext.EventManager.on(window,"unload",function(){delete El.cache;delete El._flyweights})})();
-Ext.enableFx=true;Ext.Fx={slideIn:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";this.fixDisplay();var D=this.getFxRestore();var I=this.getBox();this.setSize(I);var F=this.fxWrap(D.pos,C,"hidden");var K=this.dom.style;K.visibility="visible";K.position="absolute";var E=function(){B.fxUnwrap(F,D.pos,C);K.width=D.width;K.height=D.height;B.afterFx(C)};var J,L={to:[I.x,I.y]},H={to:I.width},G={to:I.height};switch(A.toLowerCase()){case"t":F.setSize(I.width,0);K.left=K.bottom="0";J={height:G};break;case"l":F.setSize(0,I.height);K.right=K.top="0";J={width:H};break;case"r":F.setSize(0,I.height);F.setX(I.right);K.left=K.top="0";J={width:H,points:L};break;case"b":F.setSize(I.width,0);F.setY(I.bottom);K.left=K.top="0";J={height:G,points:L};break;case"tl":F.setSize(0,0);K.right=K.bottom="0";J={width:H,height:G};break;case"bl":F.setSize(0,0);F.setY(I.y+I.height);K.right=K.top="0";J={width:H,height:G,points:L};break;case"br":F.setSize(0,0);F.setXY([I.right,I.bottom]);K.left=K.top="0";J={width:H,height:G,points:L};break;case"tr":F.setSize(0,0);F.setX(I.x+I.width);K.left=K.bottom="0";J={width:H,height:G,points:L};break}this.dom.style.visibility="visible";F.show();arguments.callee.anim=F.fxanim(J,C,"motion",0.5,"easeOut",E)});return this},slideOut:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";var I=this.getFxRestore();var D=this.getBox();this.setSize(D);var G=this.fxWrap(I.pos,C,"visible");var F=this.dom.style;F.visibility="visible";F.position="absolute";G.setSize(D);var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.fxUnwrap(G,I.pos,C);F.width=I.width;F.height=I.height;B.afterFx(C)};var E,H={to:0};switch(A.toLowerCase()){case"t":F.left=F.bottom="0";E={height:H};break;case"l":F.right=F.top="0";E={width:H};break;case"r":F.left=F.top="0";E={width:H,points:{to:[D.right,D.y]}};break;case"b":F.left=F.top="0";E={height:H,points:{to:[D.x,D.bottom]}};break;case"tl":F.right=F.bottom="0";E={width:H,height:H};break;case"bl":F.right=F.top="0";E={width:H,height:H,points:{to:[D.x,D.bottom]}};break;case"br":F.left=F.top="0";E={width:H,height:H,points:{to:[D.x+D.width,D.bottom]}};break;case"tr":F.left=F.bottom="0";E={width:H,height:H,points:{to:[D.right,D.y]}};break}arguments.callee.anim=G.fxanim(E,C,"motion",0.5,"easeOut",J)});return this},puff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.show();var F=this.getFxRestore();var D=this.dom.style;var G=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(F.pos);D.width=F.width;D.height=F.height;D.fontSize="";A.afterFx(B)};var E=this.getWidth();var C=this.getHeight();arguments.callee.anim=this.fxanim({width:{to:this.adjustWidth(E*2)},height:{to:this.adjustHeight(C*2)},points:{by:[-(E*0.5),-(C*0.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}},B,"motion",0.5,"easeOut",G)});return this},switchOff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.clip();var D=this.getFxRestore();var C=this.dom.style;var E=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(D.pos);C.width=D.width;C.height=D.height;A.afterFx(B)};this.fxanim({opacity:{to:0.3}},null,null,0.1,null,function(){this.clearOpacity();(function(){this.fxanim({height:{to:1},points:{by:[0,this.getHeight()*0.5]}},B,"motion",0.3,"easeIn",E)}).defer(100,this)})});return this},highlight:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"ffff9c";var D=C.attr||"backgroundColor";this.clearOpacity();this.show();var G=this.getColor(D);var H=this.dom.style[D];var F=(C.endColor||G)||"ffffff";var I=function(){B.dom.style[D]=H;B.afterFx(C)};var E={};E[D]={from:A,to:F};arguments.callee.anim=this.fxanim(E,C,"color",1,"easeIn",I)});return this},frame:function(A,C,D){var B=this.getFxEl();D=D||{};B.queueFx(D,function(){A=A||"#C3DAF9";if(A.length==6){A="#"+A}C=C||1;var G=D.duration||1;this.show();var E=this.getBox();var F=function(){var H=Ext.getBody().createChild({style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "+A}});var I=Ext.isBorderBox?2:1;H.animate({top:{from:E.y,to:E.y-20},left:{from:E.x,to:E.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:E.height,to:(E.height+(20*I))},width:{from:E.width,to:(E.width+(20*I))}},G,function(){H.remove();if(--C>0){F()}else{B.afterFx(D)}})};F.call(this)});return this},pause:function(C){var A=this.getFxEl();var B={};A.queueFx(B,function(){setTimeout(function(){A.afterFx(B)},C*1000)});return this},fadeIn:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility="visible";var C=B.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:C}},B,null,0.5,"easeOut",function(){if(C==1){this.clearOpacity()}A.afterFx(B)})});return this},fadeOut:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){arguments.callee.anim=this.fxanim({opacity:{to:B.endOpacity||0}},B,null,0.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||B.useDisplay){this.dom.style.display="none"}else{this.dom.style.visibility="hidden"}this.clearOpacity();A.afterFx(B)})});return this},scale:function(A,B,C){this.shift(Ext.apply({},C,{width:A,height:B}));return this},shift:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){var E={},D=B.width,F=B.height,C=B.x,H=B.y,G=B.opacity;if(D!==undefined){E.width={to:this.adjustWidth(D)}}if(F!==undefined){E.height={to:this.adjustHeight(F)}}if(C!==undefined||H!==undefined){E.points={to:[C!==undefined?C:this.getX(),H!==undefined?H:this.getY()]}}if(G!==undefined){E.opacity={to:G}}if(B.xy!==undefined){E.points={to:B.xy}}arguments.callee.anim=this.fxanim(E,B,"motion",0.35,"easeOut",function(){A.afterFx(B)})});return this},ghost:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"b";var H=this.getFxRestore();var E=this.getWidth(),G=this.getHeight();var F=this.dom.style;var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.clearOpacity();B.setPositioning(H.pos);F.width=H.width;F.height=H.height;B.afterFx(C)};var D={opacity:{to:0},points:{}},I=D.points;switch(A.toLowerCase()){case"t":I.by=[0,-G];break;case"l":I.by=[-E,0];break;case"r":I.by=[E,0];break;case"b":I.by=[0,G];break;case"tl":I.by=[-E,-G];break;case"bl":I.by=[-E,G];break;case"br":I.by=[E,G];break;case"tr":I.by=[E,-G];break}arguments.callee.anim=this.fxanim(D,C,"motion",0.5,"easeOut",J)});return this},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this},nextFx:function(){var A=this.fxQueue[0];if(A){A.call(this)}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0]},stopFx:function(){if(this.hasActiveFx()){var A=this.fxQueue[0];if(A&&A.anim&&A.anim.isAnimated()){this.fxQueue=[A];A.anim.stop(true)}}return this},beforeFx:function(A){if(this.hasActiveFx()&&!A.concurrent){if(A.stopFx){this.stopFx();return true}return false}return true},hasFxBlock:function(){var A=this.fxQueue;return A&&A[0]&&A[0].block},queueFx:function(C,A){if(!this.fxQueue){this.fxQueue=[]}if(!this.hasFxBlock()){Ext.applyIf(C,this.fxDefaults);if(!C.concurrent){var B=this.beforeFx(C);A.block=C.block;this.fxQueue.push(A);if(B){this.nextFx()}}else{A.call(this)}}return this},fxWrap:function(F,D,C){var B;if(!D.wrap||!(B=Ext.get(D.wrap))){var A;if(D.fixPosition){A=this.getXY()}var E=document.createElement("div");E.style.visibility=C;B=Ext.get(this.dom.parentNode.insertBefore(E,this.dom));B.setPositioning(F);if(B.getStyle("position")=="static"){B.position("relative")}this.clearPositioning("auto");B.clip();B.dom.appendChild(this.dom);if(A){B.setXY(A)}}return B},fxUnwrap:function(A,C,B){this.clearPositioning();this.setPositioning(C);if(!B.wrap){A.dom.parentNode.insertBefore(this.dom,A.dom);A.remove()}},getFxRestore:function(){var A=this.dom.style;return{pos:this.getPositioning(),width:A.width,height:A.height}},afterFx:function(A){if(A.afterStyle){this.applyStyles(A.afterStyle)}if(A.afterCls){this.addClass(A.afterCls)}if(A.remove===true){this.remove()}Ext.callback(A.callback,A.scope,[this]);if(!A.concurrent){this.fxQueue.shift();this.nextFx()}},getFxEl:function(){return Ext.get(this.dom)},fxanim:function(D,E,B,F,C,A){B=B||"run";E=E||{};var G=Ext.lib.Anim[B](this.dom,D,(E.duration||F)||0.35,(E.easing||C)||"easeOut",function(){Ext.callback(A,this)},this);E.anim=G;return G}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx);
-Ext.CompositeElement=function(A){this.elements=[];this.addElements(A)};Ext.CompositeElement.prototype={isComposite:true,addElements:function(E){if(!E){return this}if(typeof E=="string"){E=Ext.Element.selectorFunction(E)}var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=Ext.get(E[C])}return this},fill:function(A){this.elements=[];this.add(A);return this},filter:function(A){var B=[];this.each(function(C){if(C.is(A)){B[B.length]=C.dom}});this.fill(B);return this},invoke:function(E,B){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.Element.prototype[E].apply(D[C],B)}return this},add:function(A){if(typeof A=="string"){this.addElements(Ext.Element.selectorFunction(A))}else{if(A.length!==undefined){this.addElements(A)}else{this.addElements([A])}}return this},each:function(E,D){var C=this.elements;for(var B=0,A=C.length;B<A;B++){if(E.call(D||C[B],C[B],this,B)===false){break}}return this},item:function(A){return this.elements[A]||null},first:function(){return this.item(0)},last:function(){return this.item(this.elements.length-1)},getCount:function(){return this.elements.length},contains:function(A){return this.indexOf(A)!==-1},indexOf:function(A){return this.elements.indexOf(Ext.get(A))},removeElement:function(D,F){if(Ext.isArray(D)){for(var C=0,A=D.length;C<A;C++){this.removeElement(D[C])}return this}var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1&&this.elements[B]){if(F){var E=this.elements[B];if(E.dom){E.remove()}else{Ext.removeNode(E)}}this.elements.splice(B,1)}return this},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){if(A){this.elements[B].replaceWith(C)}else{this.elements.splice(B,1,Ext.get(C))}}return this},clear:function(){this.elements=[]}};(function(){Ext.CompositeElement.createCall=function(B,C){if(!B[C]){B[C]=function(){return this.invoke(C,arguments)}}};for(var A in Ext.Element.prototype){if(typeof Ext.Element.prototype[A]=="function"){Ext.CompositeElement.createCall(Ext.CompositeElement.prototype,A)}}})();Ext.CompositeElementLite=function(A){Ext.CompositeElementLite.superclass.constructor.call(this,A);this.el=new Ext.Element.Flyweight()};Ext.extend(Ext.CompositeElementLite,Ext.CompositeElement,{addElements:function(E){if(E){if(Ext.isArray(E)){this.elements=this.elements.concat(E)}else{var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=E[C]}}}return this},invoke:function(F,B){var D=this.elements;var E=this.el;for(var C=0,A=D.length;C<A;C++){E.dom=D[C];Ext.Element.prototype[F].apply(E,B)}return this},item:function(A){if(!this.elements[A]){return null}this.el.dom=this.elements[A];return this.el},addListener:function(B,G,F,E){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.EventManager.on(D[C],B,G,F||D[C],E)}return this},each:function(F,E){var C=this.elements;var D=this.el;for(var B=0,A=C.length;B<A;B++){D.dom=C[B];if(F.call(E||D,D,this,B)===false){break}}return this},indexOf:function(A){return this.elements.indexOf(Ext.getDom(A))},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){C=Ext.getDom(C);if(A){var E=this.elements[B];E.parentNode.insertBefore(C,E);Ext.removeNode(E)}this.elements.splice(B,1,C)}return this}});Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(A,D,B){var C;if(typeof A=="string"){C=Ext.Element.selectorFunction(A,B)}else{if(A.length!==undefined){C=A}else{throw"Invalid selector"}}if(D===true){return new Ext.CompositeElement(C)}else{return new Ext.CompositeElementLite(C)}};Ext.select=Ext.Element.select;
-Ext.data.Connection=function(A){Ext.apply(this,A);this.addEvents("beforerequest","requestcomplete","requestexception");Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,request:function(E){if(this.fireEvent("beforerequest",this,E)!==false){var C=E.params;if(typeof C=="function"){C=C.call(E.scope||window,E)}if(typeof C=="object"){C=Ext.urlEncode(C)}if(this.extraParams){var G=Ext.urlEncode(this.extraParams);C=C?(C+"&"+G):G}var B=E.url||this.url;if(typeof B=="function"){B=B.call(E.scope||window,E)}if(E.form){var D=Ext.getDom(E.form);B=B||D.action;var I=D.getAttribute("enctype");if(E.isUpload||(I&&I.toLowerCase()=="multipart/form-data")){return this.doFormUpload(E,C,B)}var H=Ext.lib.Ajax.serializeForm(D);C=C?(C+"&"+H):H}var J=E.headers;if(this.defaultHeaders){J=Ext.apply(J||{},this.defaultHeaders);if(!E.headers){E.headers=J}}var F={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:E},timeout:E.timeout||this.timeout};var A=E.method||this.method||(C?"POST":"GET");if(A=="GET"&&(this.disableCaching&&E.disableCaching!==false)||E.disableCaching===true){B+=(B.indexOf("?")!=-1?"&":"?")+"_dc="+(new Date().getTime())}if(typeof E.autoAbort=="boolean"){if(E.autoAbort){this.abort()}}else{if(this.autoAbort!==false){this.abort()}}if((A=="GET"&&C)||E.xmlData||E.jsonData){B+=(B.indexOf("?")!=-1?"&":"?")+C;C=""}this.transId=Ext.lib.Ajax.request(A,B,F,C,E);return this.transId}else{Ext.callback(E.callback,E.scope,[E,null,null]);return null}},isLoading:function(A){if(A){return Ext.lib.Ajax.isCallInProgress(A)}else{return this.transId?true:false}},abort:function(A){if(A||this.isLoading()){Ext.lib.Ajax.abort(A||this.transId)}},handleResponse:function(A){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestcomplete",this,A,B);Ext.callback(B.success,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,true,A])},handleFailure:function(A,C){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestexception",this,A,B,C);Ext.callback(B.failure,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,false,A])},doFormUpload:function(E,A,B){var C=Ext.id();var F=document.createElement("iframe");F.id=C;F.name=C;F.className="x-hidden";if(Ext.isIE){F.src=Ext.SSL_SECURE_URL}document.body.appendChild(F);if(Ext.isIE){document.frames[C].name=C}var D=Ext.getDom(E.form);D.target=C;D.method="POST";D.enctype=D.encoding="multipart/form-data";if(B){D.action=B}var L,J;if(A){L=[];A=Ext.urlDecode(A,false);for(var H in A){if(A.hasOwnProperty(H)){J=document.createElement("input");J.type="hidden";J.name=H;J.value=A[H];D.appendChild(J);L.push(J)}}}function G(){var M={responseText:"",responseXML:null};M.argument=E?E.argument:null;try{var O;if(Ext.isIE){O=F.contentWindow.document}else{O=(F.contentDocument||window.frames[C].document)}if(O&&O.body){M.responseText=O.body.innerHTML}if(O&&O.XMLDocument){M.responseXML=O.XMLDocument}else{M.responseXML=O}}catch(N){}Ext.EventManager.removeListener(F,"load",G,this);this.fireEvent("requestcomplete",this,M,E);Ext.callback(E.success,E.scope,[M,E]);Ext.callback(E.callback,E.scope,[E,true,M]);setTimeout(function(){Ext.removeNode(F)},100)}Ext.EventManager.on(F,"load",G,this);D.submit();if(L){for(var I=0,K=L.length;I<K;I++){Ext.removeNode(L[I])}}}});Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(A){return Ext.lib.Ajax.serializeForm(A)}});
-Ext.Updater=function(B,A){B=Ext.get(B);if(!A&&B.updateManager){return B.updateManager}this.el=B;this.defaultUrl=null;this.addEvents("beforeupdate","update","failure");var C=Ext.Updater.defaults;this.sslBlankUrl=C.sslBlankUrl;this.disableCaching=C.disableCaching;this.indicatorText=C.indicatorText;this.showLoadIndicator=C.showLoadIndicator;this.timeout=C.timeout;this.loadScripts=C.loadScripts;this.transaction=null;this.autoRefreshProcId=null;this.refreshDelegate=this.refresh.createDelegate(this);this.updateDelegate=this.update.createDelegate(this);this.formUpdateDelegate=this.formUpdate.createDelegate(this);if(!this.renderer){this.renderer=new Ext.Updater.BasicRenderer()}Ext.Updater.superclass.constructor.call(this)};Ext.extend(Ext.Updater,Ext.util.Observable,{getEl:function(){return this.el},update:function(B,F,H,D){if(this.fireEvent("beforeupdate",this.el,B,F)!==false){var G=this.method,A,C;if(typeof B=="object"){A=B;B=A.url;F=F||A.params;H=H||A.callback;D=D||A.discardUrl;C=A.scope;if(typeof A.method!="undefined"){G=A.method}if(typeof A.nocache!="undefined"){this.disableCaching=A.nocache}if(typeof A.text!="undefined"){this.indicatorText="<div class=\"loading-indicator\">"+A.text+"</div>"}if(typeof A.scripts!="undefined"){this.loadScripts=A.scripts}if(typeof A.timeout!="undefined"){this.timeout=A.timeout}}this.showLoading();if(!D){this.defaultUrl=B}if(typeof B=="function"){B=B.call(this)}G=G||(F?"POST":"GET");if(G=="GET"){B=this.prepareUrl(B)}var E=Ext.apply(A||{},{url:B,params:(typeof F=="function"&&C)?F.createDelegate(C):F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout*1000),argument:{"options":A,"url":B,"form":null,"callback":H,"scope":C||window,"params":F}});this.transaction=Ext.Ajax.request(E)}},formUpdate:function(C,A,B,D){if(this.fireEvent("beforeupdate",this.el,C,A)!==false){if(typeof A=="function"){A=A.call(this)}C=Ext.getDom(C);this.transaction=Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout*1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});this.showLoading.defer(1,this)}},refresh:function(A){if(this.defaultUrl==null){return }this.update(this.defaultUrl,null,A,true)},startAutoRefresh:function(B,C,D,E,A){if(A){this.update(C||this.defaultUrl,D,E,true)}if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId)}this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[C||this.defaultUrl,D,E,true]),B*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText)}},prepareUrl:function(B){if(this.disableCaching){var A="_dc="+(new Date().getTime());if(B.indexOf("?")!==-1){B+="&"+A}else{B+="?"+A}}return B},processSuccess:function(A){this.transaction=null;if(A.argument.form&&A.argument.reset){try{A.argument.form.reset()}catch(B){}}if(this.loadScripts){this.renderer.render(this.el,A,this,this.updateComplete.createDelegate(this,[A]))}else{this.renderer.render(this.el,A,this);this.updateComplete(A)}},updateComplete:function(A){this.fireEvent("update",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,true,A,A.argument.options)}},processFailure:function(A){this.transaction=null;this.fireEvent("failure",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,false,A,A.argument.options)}},setRenderer:function(A){this.renderer=A},getRenderer:function(){return this.renderer},setDefaultUrl:function(A){this.defaultUrl=A},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){if(this.transaction){return Ext.Ajax.isLoading(this.transaction)}return false}});Ext.Updater.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"<div class=\"loading-indicator\">Loading...</div>"};Ext.Updater.updateElement=function(D,C,E,B){var A=Ext.get(D).getUpdater();Ext.apply(A,B);A.update(C,E,B?B.callback:null)};Ext.Updater.update=Ext.Updater.updateElement;Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(C,A,B,D){C.update(A.responseText,B.loadScripts,D)}};Ext.UpdateManager=Ext.Updater;
-Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(B){if(Date.formatFunctions[B]==null){Date.createNewFormat(B)}var A=Date.formatFunctions[B];return this[A]()};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function(){return ";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;code+="'"+String.escape(ch)+"' + "}else{code+=Date.getFormatCode(ch)}}}eval(code.substring(0,code.length-3)+";}")};Date.getFormatCode=function(D){switch(D){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.getShortDayName(this.getDay()) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"N":return"(this.getDay() ? this.getDay() : 7) + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"String.leftPad(this.getWeekOfYear(), 2, '0') + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.getShortMonthName(this.getMonth()) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"o":return"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0))) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"u":return"String.leftPad(this.getMilliseconds(), 3, '0') + ";case"O":return"this.getGMTOffset() + ";case"P":return"this.getGMTOffset(true) + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";case"c":for(var F=Date.getFormatCode,G="Y-m-dTH:i:sP",C="",B=0,A=G.length;B<A;++B){var E=G.charAt(B);C+=E=="T"?"'T' + ":F(E)}return C;case"U":return"Math.round(this.getTime() / 1000) + ";default:return"'"+String.escape(D)+"' + "}};Date.parseDate=function(A,C){if(Date.parseFunctions[C]==null){Date.createParser(C)}var B=Date.parseFunctions[C];return Date[B](A)};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input){\n"+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, ms = -1, o, z, u, v;\n"+"input = String(input);var d = new Date();\n"+"y = d.getFullYear();\n"+"m = d.getMonth();\n"+"d = d.getDate();\n"+"var results = input.match(Date.parseRegexes["+regexNum+"]);\n"+"if (results && results.length > 0) {";var regex="";var special=false;var ch="";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true}else{if(special){special=false;regex+=String.escape(ch)}else{var obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c}}}}code+="if (u)\n"+"{v = new Date(u * 1000);}"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n"+"{v = new Date(y, m, d, h, i, s, ms);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"+"{v = new Date(y, m, d, h, i, s);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"+"{v = new Date(y, m, d, h, i);}\n"+"else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"+"{v = new Date(y, m, d, h);}\n"+"else if (y >= 0 && m >= 0 && d > 0)\n"+"{v = new Date(y, m, d);}\n"+"else if (y >= 0 && m >= 0)\n"+"{v = new Date(y, m);}\n"+"else if (y >= 0)\n"+"{v = new Date(y);}\n"+"}return (v && (z || o))?\n"+" (z ? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"+" v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"+";}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$","i");eval(code)};Date.formatCodeToRegex=function(G,F){switch(G){case"d":return{g:1,c:"d = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"D":for(var C=[],E=0;E<7;C.push(Date.getShortDayName(E)),++E){}return{g:0,c:null,s:"(?:"+C.join("|")+")"};case"j":return{g:1,c:"d = parseInt(results["+F+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"N":return{g:0,c:null,s:"[1-7]"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"[0-6]"};case"z":return{g:0,c:null,s:"(?:\\d{1,3}"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+F+"]), 10);\n",s:"("+Date.monthNames.join("|")+")"};case"m":return{g:1,c:"m = parseInt(results["+F+"], 10) - 1;\n",s:"(\\d{2})"};case"M":for(var C=[],E=0;E<12;C.push(Date.getShortMonthName(E)),++E){}return{g:1,c:"m = parseInt(Date.getMonthNumber(results["+F+"]), 10);\n",s:"("+C.join("|")+")"};case"n":return{g:1,c:"m = parseInt(results["+F+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"(?:\\d{2})"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"o":case"Y":return{g:1,c:"y = parseInt(results["+F+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+F+"], 10);\n"+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+F+"] == 'am') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+F+"] == 'AM') {\n"+"if (h == 12) { h = 0; }\n"+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":return{g:1,c:"h = parseInt(results["+F+"], 10);\n",s:"(\\d{1,2})"};case"h":case"H":return{g:1,c:"h = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"i":return{g:1,c:"i = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+F+"], 10);\n",s:"(\\d{2})"};case"u":return{g:1,c:"ms = parseInt(results["+F+"], 10);\n",s:"(\\d{3})"};case"O":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n","var mn = o.substring(3,5) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{4})"};case"P":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);\n","var mn = o.substring(4,6) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{2}:\\d{2})"};case"T":return{g:0,c:null,s:"[A-Z]{1,4}"};case"Z":return{g:1,c:"z = results["+F+"] * 1;\n"+"z = (-43200 <= z && z <= 50400)? z : null;\n",s:"([+-]?\\d{1,5})"};case"c":var H=Date.formatCodeToRegex,D=[];var A=[H("Y",1),H("m",2),H("d",3),H("h",4),H("i",5),H("s",6),H("P",7)];for(var E=0,B=A.length;E<B;++E){D.push(A[E].c)}return{g:1,c:D.join(""),s:A[0].s+"-"+A[1].s+"-"+A[2].s+"T"+A[3].s+":"+A[4].s+":"+A[5].s+A[6].s};case"U":return{g:1,c:"u = parseInt(results["+F+"], 10);\n",s:"(-?\\d+)"};default:return{g:0,c:null,s:Ext.escapeRe(G)}}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")};Date.prototype.getGMTOffset=function(A){return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset()/60)),2,"0")+(A?":":"")+String.leftPad(this.getTimezoneOffset()%60,2,"0")};Date.prototype.getDayOfYear=function(){var A=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var B=0;B<this.getMonth();++B){A+=Date.daysInMonth[B]}return A+this.getDate()-1};Date.prototype.getWeekOfYear=function(){var B=86400000;var C=7*B;var D=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/B;var A=Math.floor(D/7);var E=new Date(A*C).getUTCFullYear();return A-Math.floor(Date.UTC(E,0,7)/C)+1};Date.prototype.isLeapYear=function(){var A=this.getFullYear();return !!((A&3)==0&&(A%100||(A%400==0&&A)))};Date.prototype.getFirstDayOfMonth=function(){var A=(this.getDay()-(this.getDate()-1))%7;return(A<0)?(A+7):A};Date.prototype.getLastDayOfMonth=function(){var A=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(A<0)?(A+7):A};Date.prototype.getFirstDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),1)};Date.prototype.getLastDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()]};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.getShortMonthName=function(A){return Date.monthNames[A].substring(0,3)};Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.getShortDayName=function(A){return Date.dayNames[A].substring(0,3)};Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.getMonthNumber=function(A){return Date.monthNumbers[A.substring(0,1).toUpperCase()+A.substring(1,3).toLowerCase()]};Date.prototype.clone=function(){return new Date(this.getTime())};Date.prototype.clearTime=function(A){if(A){return this.clone().clearTime()}this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this};if(Ext.isSafari){Date.brokenSetMonth=Date.prototype.setMonth;Date.prototype.setMonth=function(A){if(A<=-1){var D=Math.ceil(-A);var C=Math.ceil(D/12);var B=(D%12)?12-D%12:0;this.setFullYear(this.getFullYear()-C);return Date.brokenSetMonth.call(this,B)}else{return Date.brokenSetMonth.apply(this,arguments)}}}Date.MILLI="ms";Date.SECOND="s";Date.MINUTE="mi";Date.HOUR="h";Date.DAY="d";Date.MONTH="mo";Date.YEAR="y";Date.prototype.add=function(B,C){var D=this.clone();if(!B||C===0){return D}switch(B.toLowerCase()){case Date.MILLI:D.setMilliseconds(this.getMilliseconds()+C);break;case Date.SECOND:D.setSeconds(this.getSeconds()+C);break;case Date.MINUTE:D.setMinutes(this.getMinutes()+C);break;case Date.HOUR:D.setHours(this.getHours()+C);break;case Date.DAY:D.setDate(this.getDate()+C);break;case Date.MONTH:var A=this.getDate();if(A>28){A=Math.min(A,this.getFirstDateOfMonth().add("mo",C).getLastDateOfMonth().getDate())}D.setDate(A);D.setMonth(this.getMonth()+C);break;case Date.YEAR:D.setFullYear(this.getFullYear()+C);break}return D};Date.prototype.between=function(C,A){var B=this.getTime();return C.getTime()<=B&&B<=A.getTime()};
-Ext.util.DelayedTask=function(E,D,A){var G=null,F,B;var C=function(){var H=new Date().getTime();if(H-B>=F){clearInterval(G);G=null;E.apply(D,A||[])}};this.delay=function(I,K,J,H){if(G&&I!=F){this.cancel()}F=I;B=new Date().getTime();E=K||E;D=J||D;A=H||A;if(!G){G=setInterval(C,F)}};this.cancel=function(){if(G){clearInterval(G);G=null}}};
-Ext.util.TaskRunner=function(E){E=E||10;var F=[],A=[];var B=0;var G=false;var D=function(){G=false;clearInterval(B);B=0};var H=function(){if(!G){G=true;B=setInterval(I,E)}};var C=function(J){A.push(J);if(J.onStop){J.onStop.apply(J.scope||J)}};var I=function(){if(A.length>0){for(var O=0,K=A.length;O<K;O++){F.remove(A[O])}A=[];if(F.length<1){D();return }}var M=new Date().getTime();for(var O=0,K=F.length;O<K;++O){var N=F[O];var J=M-N.taskRunTime;if(N.interval<=J){var L=N.run.apply(N.scope||N,N.args||[++N.taskRunCount]);N.taskRunTime=M;if(L===false||N.taskRunCount===N.repeat){C(N);return }}if(N.duration&&N.duration<=(M-N.taskStartTime)){C(N)}}};this.start=function(J){F.push(J);J.taskStartTime=new Date().getTime();J.taskRunTime=0;J.taskRunCount=0;H();return J};this.stop=function(J){C(J);return J};this.stopAll=function(){D();for(var K=0,J=F.length;K<J;K++){if(F[K].onStop){F[K].onStop()}}F=[];A=[]}};Ext.TaskMgr=new Ext.util.TaskRunner();
-Ext.util.MixedCollection=function(B,A){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents("clear","add","replace","remove","sort");this.allowFunctions=B===true;if(A){this.getKey=A}Ext.util.MixedCollection.superclass.constructor.call(this)};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(B,C){if(arguments.length==1){C=arguments[0];B=this.getKey(C)}if(typeof B=="undefined"||B===null){this.length++;this.items.push(C);this.keys.push(null)}else{var A=this.map[B];if(A){return this.replace(B,C)}this.length++;this.items.push(C);this.map[B]=C;this.keys.push(B)}this.fireEvent("add",this.length-1,C,B);return C},getKey:function(A){return A.id},replace:function(C,D){if(arguments.length==1){D=arguments[0];C=this.getKey(D)}var A=this.item(C);if(typeof C=="undefined"||C===null||typeof A=="undefined"){return this.add(C,D)}var B=this.indexOfKey(C);this.items[B]=D;this.map[C]=D;this.fireEvent("replace",C,A,D);return D},addAll:function(E){if(arguments.length>1||Ext.isArray(E)){var B=arguments.length>1?arguments:E;for(var D=0,A=B.length;D<A;D++){this.add(B[D])}}else{for(var C in E){if(this.allowFunctions||typeof E[C]!="function"){this.add(C,E[C])}}}},each:function(E,D){var B=[].concat(this.items);for(var C=0,A=B.length;C<A;C++){if(E.call(D||B[C],B[C],C,A)===false){break}}},eachKey:function(D,C){for(var B=0,A=this.keys.length;B<A;B++){D.call(C||window,this.keys[B],this.items[B],B,A)}},find:function(D,C){for(var B=0,A=this.items.length;B<A;B++){if(D.call(C||window,this.items[B],this.keys[B])){return this.items[B]}}return null},insert:function(A,B,C){if(arguments.length==2){C=arguments[1];B=this.getKey(C)}if(A>=this.length){return this.add(B,C)}this.length++;this.items.splice(A,0,C);if(typeof B!="undefined"&&B!=null){this.map[B]=C}this.keys.splice(A,0,B);this.fireEvent("add",A,C,B);return C},remove:function(A){return this.removeAt(this.indexOf(A))},removeAt:function(A){if(A<this.length&&A>=0){this.length--;var C=this.items[A];this.items.splice(A,1);var B=this.keys[A];if(typeof B!="undefined"){delete this.map[B]}this.keys.splice(A,1);this.fireEvent("remove",C,B);return C}return false},removeKey:function(A){return this.removeAt(this.indexOfKey(A))},getCount:function(){return this.length},indexOf:function(A){return this.items.indexOf(A)},indexOfKey:function(A){return this.keys.indexOf(A)},item:function(A){var B=typeof this.map[A]!="undefined"?this.map[A]:this.items[A];return typeof B!="function"||this.allowFunctions?B:null},itemAt:function(A){return this.items[A]},key:function(A){return this.map[A]},contains:function(A){return this.indexOf(A)!=-1},containsKey:function(A){return typeof this.map[A]!="undefined"},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear")},first:function(){return this.items[0]},last:function(){return this.items[this.length-1]},_sort:function(I,A,H){var C=String(A).toUpperCase()=="DESC"?-1:1;H=H||function(K,J){return K-J};var G=[],B=this.keys,F=this.items;for(var D=0,E=F.length;D<E;D++){G[G.length]={key:B[D],value:F[D],index:D}}G.sort(function(K,J){var L=H(K[I],J[I])*C;if(L==0){L=(K.index<J.index?-1:1)}return L});for(var D=0,E=G.length;D<E;D++){F[D]=G[D].value;B[D]=G[D].key}this.fireEvent("sort",this)},sort:function(A,B){this._sort("value",A,B)},keySort:function(A,B){this._sort("key",A,B||function(D,C){return String(D).toUpperCase()-String(C).toUpperCase()})},getRange:function(E,A){var B=this.items;if(B.length<1){return[]}E=E||0;A=Math.min(typeof A=="undefined"?this.length-1:A,this.length-1);var D=[];if(E<=A){for(var C=E;C<=A;C++){D[D.length]=B[C]}}else{for(var C=E;C>=A;C--){D[D.length]=B[C]}}return D},filter:function(C,B,D,A){if(Ext.isEmpty(B,false)){return this.clone()}B=this.createValueMatcher(B,D,A);return this.filterBy(function(E){return E&&B.test(E[C])})},filterBy:function(F,E){var G=new Ext.util.MixedCollection();G.getKey=this.getKey;var B=this.keys,D=this.items;for(var C=0,A=D.length;C<A;C++){if(F.call(E||this,D[C],B[C])){G.add(B[C],D[C])}}return G},findIndex:function(C,B,E,D,A){if(Ext.isEmpty(B,false)){return -1}B=this.createValueMatcher(B,D,A);return this.findIndexBy(function(F){return F&&B.test(F[C])},null,E)},findIndexBy:function(F,E,G){var B=this.keys,D=this.items;for(var C=(G||0),A=D.length;C<A;C++){if(F.call(E||this,D[C],B[C])){return C}}if(typeof G=="number"&&G>0){for(var C=0;C<G;C++){if(F.call(E||this,D[C],B[C])){return C}}}return -1},createValueMatcher:function(B,C,A){if(!B.exec){B=String(B);B=new RegExp((C===true?"":"^")+Ext.escapeRe(B),A?"":"i")}return B},clone:function(){var E=new Ext.util.MixedCollection();var B=this.keys,D=this.items;for(var C=0,A=D.length;C<A;C++){E.add(B[C],D[C])}E.getKey=this.getKey;return E}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item;
-Ext.util.JSON=new (function(){var useHasOwn={}.hasOwnProperty?true:false;var pad=function(n){return n<10?"0"+n:n};var m={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"};var encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return"\""+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c}c=b.charCodeAt();return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)})+"\""}return"\""+s+"\""};var encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(v===null?"null":Ext.util.JSON.encode(v));b=true}}a.push("]");return a.join("")};var encodeDate=function(o){return"\""+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+"\""};this.encode=function(o){if(typeof o=="undefined"||o===null){return"null"}else{if(Ext.isArray(o)){return encodeArray(o)}else{if(Ext.isDate(o)){return encodeDate(o)}else{if(typeof o=="string"){return encodeString(o)}else{if(typeof o=="number"){return isFinite(o)?String(o):"null"}else{if(typeof o=="boolean"){return String(o)}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(",")}a.push(this.encode(i),":",v===null?"null":this.encode(v));b=true}}}a.push("}");return a.join("")}}}}}}};this.decode=function(json){return eval("("+json+")")}})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode;
-Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g;return{ellipsis:function(value,len){if(value&&value.length>len){return value.substr(0,len-3)+"..."}return value},undef:function(value){return value!==undefined?value:""},defaultValue:function(value,defaultValue){return value!==undefined&&value!==""?value:defaultValue},htmlEncode:function(value){return !value?value:String(value).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")},htmlDecode:function(value){return !value?value:String(value).replace(/&amp;/g,"&").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,"\"")},trim:function(value){return String(value).replace(trimRe,"")},substr:function(value,start,length){return String(value).substr(start,length)},lowercase:function(value){return String(value).toLowerCase()},uppercase:function(value){return String(value).toUpperCase()},capitalize:function(value){return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args)}else{return eval(fn).call(window,value)}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);v=String(v);var ps=v.split(".");var whole=ps[0];var sub=ps[1]?"."+ps[1]:".00";var r=/(\d+)(\d{3})/;while(r.test(whole)){whole=whole.replace(r,"$1"+","+"$2")}v=whole+sub;if(v.charAt(0)=="-"){return"-$"+v.substr(1)}return"$"+v},date:function(v,format){if(!v){return""}if(!Ext.isDate(v)){v=new Date(Date.parse(v))}return v.dateFormat(format||"m/d/Y")},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format)}},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return !v?v:String(v).replace(this.stripTagsRE,"")},stripScriptsRe:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,stripScripts:function(v){return !v?v:String(v).replace(this.stripScriptsRe,"")},fileSize:function(size){if(size<1024){return size+" bytes"}else{if(size<1048576){return(Math.round(((size*10)/1024))/10)+" KB"}else{return(Math.round(((size*10)/1048576))/10)+" MB"}}},math:function(){var fns={};return function(v,a){if(!fns[a]){fns[a]=new Function("v","return v "+a+";")}return fns[a](v)}}()}}();
-Ext.XTemplate=function(){Ext.XTemplate.superclass.constructor.apply(this,arguments);var P=this.html;P=["<tpl>",P,"</tpl>"].join("");var O=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;var N=/^<tpl\b[^>]*?for="(.*?)"/;var L=/^<tpl\b[^>]*?if="(.*?)"/;var J=/^<tpl\b[^>]*?exec="(.*?)"/;var C,B=0;var G=[];while(C=P.match(O)){var M=C[0].match(N);var K=C[0].match(L);var I=C[0].match(J);var E=null,H=null,D=null;var A=M&&M[1]?M[1]:"";if(K){E=K&&K[1]?K[1]:null;if(E){H=new Function("values","parent","xindex","xcount","with(values){ return "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(I){E=I&&I[1]?I[1]:null;if(E){D=new Function("values","parent","xindex","xcount","with(values){ "+(Ext.util.Format.htmlDecode(E))+"; }")}}if(A){switch(A){case".":A=new Function("values","parent","with(values){ return values; }");break;case"..":A=new Function("values","parent","with(values){ return parent; }");break;default:A=new Function("values","parent","with(values){ return "+A+"; }")}}G.push({id:B,target:A,exec:D,test:H,body:C[1]||""});P=P.replace(C[0],"{xtpl"+B+"}");++B}for(var F=G.length-1;F>=0;--F){this.compileTpl(G[F])}this.master=G[G.length-1];this.tpls=G};Ext.extend(Ext.XTemplate,Ext.Template,{re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(A,H,G,D,C){var J=this.tpls[A];if(J.test&&!J.test.call(this,H,G,D,C)){return""}if(J.exec&&J.exec.call(this,H,G,D,C)){return""}var I=J.target?J.target.call(this,H,G):H;G=J.target?H:G;if(J.target&&Ext.isArray(I)){var B=[];for(var E=0,F=I.length;E<F;E++){B[B.length]=J.compiled.call(this,I[E],G,E+1,F)}return B.join("")}return J.compiled.call(this,I,G,D,C)},compileTpl:function(tpl){var fm=Ext.util.Format;var useF=this.disableFormats!==true;var sep=Ext.isGecko?"+":",";var fn=function(m,name,format,args,math){if(name.substr(0,4)=="xtpl"){return"'"+sep+"this.applySubTemplate("+name.substr(4)+", values, parent, xindex, xcount)"+sep+"'"}var v;if(name==="."){v="values"}else{if(name==="#"){v="xindex"}else{if(name.indexOf(".")!=-1){v=name}else{v="values['"+name+"']"}}}if(math){v="("+v+math+")"}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="("+v+" === undefined ? '' : "}return"'"+sep+format+v+args+")"+sep+"'"};var codeFn=function(m,code){return"'"+sep+"("+code+")"+sep+"'"};var body;if(Ext.isGecko){body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"}else{body=["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];body.push(tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn));body.push("'].join('');};");body=body.join("")}eval(body);return this},apply:function(A){return this.master.compiled.call(this,A,{},1,1)},applyTemplate:function(A){return this.master.compiled.call(this,A,{},1,1)},compile:function(){return this}});Ext.XTemplate.from=function(A){A=Ext.getDom(A);return new Ext.XTemplate(A.value||A.innerHTML)};
-Ext.util.CSS=function(){var D=null;var C=document;var B=/(-[a-z])/gi;var A=function(E,F){return F.charAt(1).toUpperCase()};return{createStyleSheet:function(G,J){var F;var E=C.getElementsByTagName("head")[0];var I=C.createElement("style");I.setAttribute("type","text/css");if(J){I.setAttribute("id",J)}if(Ext.isIE){E.appendChild(I);F=I.styleSheet;F.cssText=G}else{try{I.appendChild(C.createTextNode(G))}catch(H){I.cssText=G}E.appendChild(I);F=I.styleSheet?I.styleSheet:(I.sheet||C.styleSheets[C.styleSheets.length-1])}this.cacheStyleSheet(F);return F},removeStyleSheet:function(F){var E=C.getElementById(F);if(E){E.parentNode.removeChild(E)}},swapStyleSheet:function(G,E){this.removeStyleSheet(G);var F=C.createElement("link");F.setAttribute("rel","stylesheet");F.setAttribute("type","text/css");F.setAttribute("id",G);F.setAttribute("href",E);C.getElementsByTagName("head")[0].appendChild(F)},refreshCache:function(){return this.getRules(true)},cacheStyleSheet:function(F){if(!D){D={}}try{var H=F.cssRules||F.rules;for(var E=H.length-1;E>=0;--E){D[H[E].selectorText]=H[E]}}catch(G){}},getRules:function(F){if(D==null||F){D={};var H=C.styleSheets;for(var G=0,E=H.length;G<E;G++){try{this.cacheStyleSheet(H[G])}catch(I){}}}return D},getRule:function(E,G){var F=this.getRules(G);if(!Ext.isArray(E)){return F[E]}for(var H=0;H<E.length;H++){if(F[E[H]]){return F[E[H]]}}return null},updateRule:function(E,H,G){if(!Ext.isArray(E)){var I=this.getRule(E);if(I){I.style[H.replace(B,A)]=G;return true}}else{for(var F=0;F<E.length;F++){if(this.updateRule(E[F],H,G)){return true}}}return false}}}();
-Ext.util.ClickRepeater=function(B,A){this.el=Ext.get(B);this.el.unselectable();Ext.apply(this,A);this.addEvents("mousedown","click","mouseup");this.el.on("mousedown",this.handleMouseDown,this);if(this.preventDefault||this.stopDefault){this.el.on("click",function(C){if(this.preventDefault){C.preventDefault()}if(this.stopDefault){C.stopEvent()}},this)}if(this.handler){this.on("click",this.handler,this.scope||this)}Ext.util.ClickRepeater.superclass.constructor.call(this)};Ext.extend(Ext.util.ClickRepeater,Ext.util.Observable,{interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,handleMouseDown:function(){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass)}this.mousedownTime=new Date();Ext.getDoc().on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this);this.fireEvent("click",this);if(this.accelerate){this.delay=400}this.timer=this.click.defer(this.delay||this.interval,this)},click:function(){this.fireEvent("click",this);this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this)},easeOutExpo:function(B,A,D,C){return(B==C)?A+D:D*(-Math.pow(2,-10*B/C)+1)+A},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass)}this.el.on("mouseover",this.handleMouseReturn,this)},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn);if(this.pressClass){this.el.addClass(this.pressClass)}this.click()},handleMouseUp:function(){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn);this.el.un("mouseout",this.handleMouseOut);Ext.getDoc().un("mouseup",this.handleMouseUp);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this)}});
-Ext.KeyNav=function(B,A){this.el=Ext.get(B);Ext.apply(this,A);if(!this.disabled){this.disabled=true;this.enable()}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,prepareEvent:function(C){var A=C.getKey();var B=this.keyToHandler[A];if(Ext.isSafari&&B&&A>=37&&A<=40){C.stopEvent()}},relay:function(C){var A=C.getKey();var B=this.keyToHandler[A];if(B&&this[B]){if(this.doRelay(C,this[B],B)!==true){C[this.defaultEventAction]()}}},doRelay:function(C,B,A){return B.call(this.scope||this,C)},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isAir){this.el.on("keydown",this.relay,this)}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this)}this.disabled=false}},disable:function(){if(!this.disabled){if(this.forceKeyDown||Ext.isIE||Ext.isAir){this.el.un("keydown",this.relay)}else{this.el.un("keydown",this.prepareEvent);this.el.un("keypress",this.relay)}this.disabled=true}}};
-Ext.KeyMap=function(C,B,A){this.el=Ext.get(C);this.eventName=A||"keydown";this.bindings=[];if(B){this.addBinding(B)}this.enable()};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(D){if(Ext.isArray(D)){for(var F=0,H=D.length;F<H;F++){this.addBinding(D[F])}return }var N=D.key,C=D.shift,A=D.ctrl,G=D.alt,J=D.fn||D.handler,M=D.scope;if(typeof N=="string"){var K=[];var I=N.toUpperCase();for(var E=0,H=I.length;E<H;E++){K.push(I.charCodeAt(E))}N=K}var B=Ext.isArray(N);var L=function(R){if((!C||R.shiftKey)&&(!A||R.ctrlKey)&&(!G||R.altKey)){var P=R.getKey();if(B){for(var Q=0,O=N.length;Q<O;Q++){if(N[Q]==P){if(this.stopEvent){R.stopEvent()}J.call(M||window,P,R);return }}}else{if(P==N){if(this.stopEvent){R.stopEvent()}J.call(M||window,P,R)}}}};this.bindings.push(L)},on:function(B,D,C){var G,A,E,F;if(typeof B=="object"&&!Ext.isArray(B)){G=B.key;A=B.shift;E=B.ctrl;F=B.alt}else{G=B}this.addBinding({key:G,shift:A,ctrl:E,alt:F,fn:D,scope:C})},handleKeyDown:function(D){if(this.enabled){var B=this.bindings;for(var C=0,A=B.length;C<A;C++){B[C].call(this,D)}}},isEnabled:function(){return this.enabled},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.handleKeyDown,this);this.enabled=true}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.handleKeyDown,this);this.enabled=false}}};
-Ext.util.TextMetrics=function(){var A;return{measure:function(B,C,D){if(!A){A=Ext.util.TextMetrics.Instance(B,D)}A.bind(B);A.setFixedWidth(D||"auto");return A.getSize(C)},createInstance:function(B,C){return Ext.util.TextMetrics.Instance(B,C)}}}();Ext.util.TextMetrics.Instance=function(B,D){var C=new Ext.Element(document.createElement("div"));document.body.appendChild(C.dom);C.position("absolute");C.setLeftTop(-1000,-1000);C.hide();if(D){C.setWidth(D)}var A={getSize:function(F){C.update(F);var E=C.getSize();C.update("");return E},bind:function(E){C.setStyle(Ext.fly(E).getStyles("font-size","font-style","font-weight","font-family","line-height"))},setFixedWidth:function(E){C.setWidth(E)},getWidth:function(E){C.dom.style.width="auto";return this.getSize(E).width},getHeight:function(E){return this.getSize(E).height}};A.bind(B);return A};Ext.Element.measureText=Ext.util.TextMetrics.measure;
-(function(){var A=Ext.EventManager;var B=Ext.lib.Dom;Ext.dd.DragDrop=function(E,C,D){if(E){this.init(E,C,D)}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true},unlock:function(){this.locked=false},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:function(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:function(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:function(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvalidDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4MouseDown:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(H,F,M){if(typeof F=="number"){F={left:F,right:F,top:F,bottom:F}}F=F||this.defaultPadding;var J=Ext.get(this.getEl()).getBox();var C=Ext.get(H);var L=C.getScroll();var I,D=C.dom;if(D==document.body){I={x:L.left,y:L.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}}else{var K=C.getXY();I={x:K[0]+L.left,y:K[1]+L.top,width:D.clientWidth,height:D.clientHeight}}var G=J.y-I.y;var E=J.x-I.x;this.resetConstraints();this.setXConstraint(E-(F.left||0),I.width-E-J.width-(F.right||0),this.xTickSize);this.setYConstraint(G-(F.top||0),I.height-G-J.height-(F.bottom||0),this.yTickSize)},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id)}return this._domRef},getDragEl:function(){return Ext.getDom(this.dragElId)},init:function(E,C,D){this.initTarget(E,C,D);A.on(this.id,"mousedown",this.handleMouseDown,this)},initTarget:function(E,C,D){this.config=D||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof E!=="string"){E=Ext.id(E)}this.id=E;this.addToGroup((C)?C:"default");this.handleElId=E;this.setDragElId(E);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable()},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable()},setPadding:function(E,C,F,D){if(!C&&0!==C){this.padding=[E,E,E,E]}else{if(!F&&0!==F){this.padding=[E,C,E,C]}else{this.padding=[E,C,F,D]}}},setInitPosition:function(F,E){var G=this.getEl();if(!this.DDM.verifyEl(G)){return }var D=F||0;var C=E||0;var H=B.getXY(G);this.initPageX=H[0]-D;this.initPageY=H[1]-C;this.lastPageX=H[0];this.lastPageY=H[1];this.setStartPosition(H)},setStartPosition:function(D){var C=D||B.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=C[0];this.startPageY=C[1]},addToGroup:function(C){this.groups[C]=true;this.DDM.regDragDrop(this,C)},removeFromGroup:function(C){if(this.groups[C]){delete this.groups[C]}this.DDM.removeDDFromGroup(this,C)},setDragElId:function(C){this.dragElId=C},setHandleElId:function(C){if(typeof C!=="string"){C=Ext.id(C)}this.handleElId=C;this.DDM.regHandle(this.id,C)},setOuterHandleElId:function(C){if(typeof C!=="string"){C=Ext.id(C)}A.on(C,"mousedown",this.handleMouseDown,this);this.setHandleElId(C);this.hasOuterHandles=true},unreg:function(){A.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this)},destroy:function(){this.unreg()},isLocked:function(){return(this.DDM.isLocked()||this.locked)},handleMouseDown:function(E,D){if(this.primaryButtonOnly&&E.button!=0){return }if(this.isLocked()){return }this.DDM.refreshCache(this.groups);var C=new Ext.lib.Point(Ext.lib.Event.getPageX(E),Ext.lib.Event.getPageY(E));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(C,this)){}else{if(this.clickValidator(E)){this.setStartPosition();this.b4MouseDown(E);this.onMouseDown(E);this.DDM.handleMouseDown(E,this);this.DDM.stopEvent(E)}else{}}},clickValidator:function(D){var C=D.getTarget();return(this.isValidHandleChild(C)&&(this.id==this.handleElId||this.DDM.handleWasClicked(C,this.id)))},addInvalidHandleType:function(C){var D=C.toUpperCase();this.invalidHandleTypes[D]=D},addInvalidHandleId:function(C){if(typeof C!=="string"){C=Ext.id(C)}this.invalidHandleIds[C]=C},addInvalidHandleClass:function(C){this.invalidHandleClasses.push(C)},removeInvalidHandleType:function(C){var D=C.toUpperCase();delete this.invalidHandleTypes[D]},removeInvalidHandleId:function(C){if(typeof C!=="string"){C=Ext.id(C)}delete this.invalidHandleIds[C]},removeInvalidHandleClass:function(D){for(var E=0,C=this.invalidHandleClasses.length;E<C;++E){if(this.invalidHandleClasses[E]==D){delete this.invalidHandleClasses[E]}}},isValidHandleChild:function(F){var E=true;var H;try{H=F.nodeName.toUpperCase()}catch(G){H=F.nodeName}E=E&&!this.invalidHandleTypes[H];E=E&&!this.invalidHandleIds[F.id];for(var D=0,C=this.invalidHandleClasses.length;E&&D<C;++D){E=!B.hasClass(F,this.invalidHandleClasses[D])}return E},setXTicks:function(F,C){this.xTicks=[];this.xTickSize=C;var E={};for(var D=this.initPageX;D>=this.minX;D=D-C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}for(D=this.initPageX;D<=this.maxX;D=D+C){if(!E[D]){this.xTicks[this.xTicks.length]=D;E[D]=true}}this.xTicks.sort(this.DDM.numericSort)},setYTicks:function(F,C){this.yTicks=[];this.yTickSize=C;var E={};for(var D=this.initPageY;D>=this.minY;D=D-C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}for(D=this.initPageY;D<=this.maxY;D=D+C){if(!E[D]){this.yTicks[this.yTicks.length]=D;E[D]=true}}this.yTicks.sort(this.DDM.numericSort)},setXConstraint:function(E,D,C){this.leftConstraint=E;this.rightConstraint=D;this.minX=this.initPageX-E;this.maxX=this.initPageX+D;if(C){this.setXTicks(this.initPageX,C)}this.constrainX=true},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks()},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0},setYConstraint:function(C,E,D){this.topConstraint=C;this.bottomConstraint=E;this.minY=this.initPageY-C;this.maxY=this.initPageY+E;if(D){this.setYTicks(this.initPageY,D)}this.constrainY=true},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var D=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var C=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(D,C)}else{this.setInitPosition()}if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)}if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)}},getTick:function(I,F){if(!F){return I}else{if(F[0]>=I){return F[0]}else{for(var D=0,C=F.length;D<C;++D){var E=D+1;if(F[E]&&F[E]>=I){var H=I-F[D];var G=F[E]-I;return(G>H)?F[D]:F[E]}}return F[F.length-1]}}},toString:function(){return("DragDrop "+this.id)}}})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var A=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(D,C){for(var E in this.ids){for(var B in this.ids[E]){var F=this.ids[E][B];if(!this.isTypeOfDD(F)){continue}F[D].apply(F,C)}}},_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.on(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._onResize,this,true)},_onResize:function(B){this._execOnAll("resetConstraints",[])},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(C,B){if(!this.initialized){this.init()}if(!this.ids[B]){this.ids[B]={}}this.ids[B][C.id]=C},removeDDFromGroup:function(D,B){if(!this.ids[B]){this.ids[B]={}}var C=this.ids[B];if(C&&C[D.id]){delete C[D.id]}},_remove:function(C){for(var B in C.groups){if(B&&this.ids[B][C.id]){delete this.ids[B][C.id]}}delete this.handleIds[C.id]},regHandle:function(C,B){if(!this.handleIds[C]){this.handleIds[C]={}}this.handleIds[C][B]=B},isDragDrop:function(B){return(this.getDDById(B))?true:false},getRelated:function(F,C){var E=[];for(var D in F.groups){for(j in this.ids[D]){var B=this.ids[D][j];if(!this.isTypeOfDD(B)){continue}if(!C||B.isTarget){E[E.length]=B}}}return E},isLegalTarget:function(F,E){var C=this.getRelated(F,true);for(var D=0,B=C.length;D<B;++D){if(C[D].id==E.id){return true}}return false},isTypeOfDD:function(B){return(B&&B.__ygDragDrop)},isHandle:function(C,B){return(this.handleIds[C]&&this.handleIds[C][B])},getDDById:function(C){for(var B in this.ids){if(this.ids[B][C]){return this.ids[B][C]}}return null},handleMouseDown:function(D,C){if(Ext.QuickTips){Ext.QuickTips.disable()}this.currentTarget=D.getTarget();this.dragCurrent=C;var B=C.getEl();this.startX=D.getPageX();this.startY=D.getPageY();this.deltaX=this.startX-B.offsetLeft;this.deltaY=this.startY-B.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var E=Ext.dd.DDM;E.startDrag(E.startX,E.startY)},this.clickTimeThresh)},startDrag:function(B,C){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(B,C);this.dragCurrent.startDrag(B,C)}this.dragThreshMet=true},handleMouseUp:function(B){if(Ext.QuickTips){Ext.QuickTips.enable()}if(!this.dragCurrent){return }clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(B,true)}else{}this.stopDrag(B);this.stopEvent(B)},stopEvent:function(B){if(this.stopPropagation){B.stopPropagation()}if(this.preventDefault){B.preventDefault()}},stopDrag:function(B){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(B);this.dragCurrent.endDrag(B)}this.dragCurrent.onMouseUp(B)}this.dragCurrent=null;this.dragOvers={}},handleMouseMove:function(D){if(!this.dragCurrent){return true}if(Ext.isIE&&(D.button!==0&&D.button!==1&&D.button!==2)){this.stopEvent(D);return this.handleMouseUp(D)}if(!this.dragThreshMet){var C=Math.abs(this.startX-D.getPageX());var B=Math.abs(this.startY-D.getPageY());if(C>this.clickPixelThresh||B>this.clickPixelThresh){this.startDrag(this.startX,this.startY)}}if(this.dragThreshMet){this.dragCurrent.b4Drag(D);this.dragCurrent.onDrag(D);if(!this.dragCurrent.moveOnly){this.fireEvents(D,false)}}this.stopEvent(D);return true},fireEvents:function(K,L){var N=this.dragCurrent;if(!N||N.isLocked()){return }var O=K.getPoint();var B=[];var E=[];var I=[];var G=[];var D=[];for(var F in this.dragOvers){var C=this.dragOvers[F];if(!this.isTypeOfDD(C)){continue}if(!this.isOverTarget(O,C,this.mode)){E.push(C)}B[F]=true;delete this.dragOvers[F]}for(var M in N.groups){if("string"!=typeof M){continue}for(F in this.ids[M]){var H=this.ids[M][F];if(!this.isTypeOfDD(H)){continue}if(H.isTarget&&!H.isLocked()&&H!=N){if(this.isOverTarget(O,H,this.mode)){if(L){G.push(H)}else{if(!B[H.id]){D.push(H)}else{I.push(H)}this.dragOvers[H.id]=H}}}}}if(this.mode){if(E.length){N.b4DragOut(K,E);N.onDragOut(K,E)}if(D.length){N.onDragEnter(K,D)}if(I.length){N.b4DragOver(K,I);N.onDragOver(K,I)}if(G.length){N.b4DragDrop(K,G);N.onDragDrop(K,G)}}else{var J=0;for(F=0,J=E.length;F<J;++F){N.b4DragOut(K,E[F].id);N.onDragOut(K,E[F].id)}for(F=0,J=D.length;F<J;++F){N.onDragEnter(K,D[F].id)}for(F=0,J=I.length;F<J;++F){N.b4DragOver(K,I[F].id);N.onDragOver(K,I[F].id)}for(F=0,J=G.length;F<J;++F){N.b4DragDrop(K,G[F].id);N.onDragDrop(K,G[F].id)}}if(L&&!G.length){N.onInvalidDrop(K)}},getBestMatch:function(D){var F=null;var C=D.length;if(C==1){F=D[0]}else{for(var E=0;E<C;++E){var B=D[E];if(B.cursorIsOver){F=B;break}else{if(!F||F.overlap.getArea()<B.overlap.getArea()){F=B}}}}return F},refreshCache:function(C){for(var B in C){if("string"!=typeof B){continue}for(var D in this.ids[B]){var E=this.ids[B][D];if(this.isTypeOfDD(E)){var F=this.getLocation(E);if(F){this.locationCache[E.id]=F}else{delete this.locationCache[E.id]}}}}},verifyEl:function(C){if(C){var B;if(Ext.isIE){try{B=C.offsetParent}catch(D){}}else{B=C.offsetParent}if(B){return true}}return false},getLocation:function(G){if(!this.isTypeOfDD(G)){return null}var E=G.getEl(),J,D,C,L,K,M,B,I,F;try{J=Ext.lib.Dom.getXY(E)}catch(H){}if(!J){return null}D=J[0];C=D+E.offsetWidth;L=J[1];K=L+E.offsetHeight;M=L-G.padding[0];B=C+G.padding[1];I=K+G.padding[2];F=D-G.padding[3];return new Ext.lib.Region(M,B,I,F)},isOverTarget:function(J,B,D){var F=this.locationCache[B.id];if(!F||!this.useCache){F=this.getLocation(B);this.locationCache[B.id]=F}if(!F){return false}B.cursorIsOver=F.contains(J);var I=this.dragCurrent;if(!I||!I.getTargetCoord||(!D&&!I.constrainX&&!I.constrainY)){return B.cursorIsOver}B.overlap=null;var G=I.getTargetCoord(J.x,J.y);var C=I.getDragEl();var E=new Ext.lib.Region(G.y,G.x+C.offsetWidth,G.y+C.offsetHeight,G.x);var H=E.intersect(F);if(H){B.overlap=H;return(D)?true:B.cursorIsOver}else{return false}},_onUnload:function(C,B){Ext.dd.DragDropMgr.unregAll()},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null}this._execOnAll("unreg",[]);for(var B in this.elementCache){delete this.elementCache[B]}this.elementCache={};this.ids={}},elementCache:{},getElWrapper:function(C){var B=this.elementCache[C];if(!B||!B.el){B=this.elementCache[C]=new this.ElementWrapper(Ext.getDom(C))}return B},getElement:function(B){return Ext.getDom(B)},getCss:function(C){var B=Ext.getDom(C);return(B)?B.style:null},ElementWrapper:function(B){this.el=B||null;this.id=this.el&&B.id;this.css=this.el&&B.style},getPosX:function(B){return Ext.lib.Dom.getX(B)},getPosY:function(B){return Ext.lib.Dom.getY(B)},swapNode:function(D,B){if(D.swapNode){D.swapNode(B)}else{var E=B.parentNode;var C=B.nextSibling;if(C==D){E.insertBefore(D,B)}else{if(B==D.nextSibling){E.insertBefore(B,D)}else{D.parentNode.replaceChild(B,D);E.insertBefore(D,C)}}}},getScroll:function(){var D,B,E=document.documentElement,C=document.body;if(E&&(E.scrollTop||E.scrollLeft)){D=E.scrollTop;B=E.scrollLeft}else{if(C){D=C.scrollTop;B=C.scrollLeft}else{}}return{top:D,left:B}},getStyle:function(C,B){return Ext.fly(C).getStyle(B)},getScrollTop:function(){return this.getScroll().top},getScrollLeft:function(){return this.getScroll().left},moveToEl:function(B,D){var C=Ext.lib.Dom.getXY(D);Ext.lib.Dom.setXY(B,C)},numericSort:function(C,B){return(C-B)},_timeoutCount:0,_addListeners:function(){var B=Ext.dd.DDM;if(Ext.lib.Event&&document){B._onLoad()}else{if(B._timeoutCount>2000){}else{setTimeout(B._addListeners,10);if(document&&document.body){B._timeoutCount+=1}}}},handleWasClicked:function(B,D){if(this.isHandle(D,B.id)){return true}else{var C=B.parentNode;while(C){if(this.isHandle(D,C.id)){return true}else{C=C.parentNode}}}return false}}}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners()}Ext.dd.DD=function(C,A,B){if(C){this.init(C,A,B)}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(C,B){var A=C-this.startPageX;var D=B-this.startPageY;this.setDelta(A,D)},setDelta:function(B,A){this.deltaX=B;this.deltaY=A},setDragElPos:function(C,B){var A=this.getDragEl();this.alignElWithMouse(A,C,B)},alignElWithMouse:function(C,G,F){var E=this.getTargetCoord(G,F);var B=C.dom?C:Ext.fly(C,"_dd");if(!this.deltaSetXY){var H=[E.x,E.y];B.setXY(H);var D=B.getLeft(true);var A=B.getTop(true);this.deltaSetXY=[D-E.x,A-E.y]}else{B.setLeftTop(E.x+this.deltaSetXY[0],E.y+this.deltaSetXY[1])}this.cachePosition(E.x,E.y);this.autoScroll(E.x,E.y,C.offsetHeight,C.offsetWidth);return E},cachePosition:function(B,A){if(B){this.lastPageX=B;this.lastPageY=A}else{var C=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=C[0];this.lastPageY=C[1]}},autoScroll:function(J,I,E,K){if(this.scroll){var L=Ext.lib.Dom.getViewHeight();var B=Ext.lib.Dom.getViewWidth();var N=this.DDM.getScrollTop();var D=this.DDM.getScrollLeft();var H=E+I;var M=K+J;var G=(L+N-I-this.deltaY);var F=(B+D-J-this.deltaX);var C=40;var A=(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A)}if(I<N&&N>0&&I-N<C){window.scrollTo(D,N-A)}if(M>B&&F<C){window.scrollTo(D+A,N)}if(J<D&&D>0&&J-D<C){window.scrollTo(D-A,N)}}},getTargetCoord:function(C,B){var A=C-this.deltaX;var D=B-this.deltaY;if(this.constrainX){if(A<this.minX){A=this.minX}if(A>this.maxX){A=this.maxX}}if(this.constrainY){if(D<this.minY){D=this.minY}if(D>this.maxY){D=this.maxY}}A=this.getTick(A,this.xTicks);D=this.getTick(D,this.yTicks);return{x:A,y:D}},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false)},b4MouseDown:function(A){this.autoOffset(A.getPageX(),A.getPageY())},b4Drag:function(A){this.setDragElPos(A.getPageX(),A.getPageY())},toString:function(){return("DD "+this.id)}});Ext.dd.DDProxy=function(C,A,B){if(C){this.init(C,A,B);this.initFrame()}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var B=this;var A=document.body;if(!A||!A.firstChild){setTimeout(function(){B.createFrame()},50);return }var D=this.getDragEl();if(!D){D=document.createElement("div");D.id=this.dragElId;var C=D.style;C.position="absolute";C.visibility="hidden";C.cursor="move";C.border="2px solid #aaa";C.zIndex=999;A.insertBefore(D,A.firstChild)}},initFrame:function(){this.createFrame()},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)},showFrame:function(E,D){var C=this.getEl();var A=this.getDragEl();var B=A.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2))}this.setDragElPos(E,D);Ext.fly(A).show()},_resizeProxy:function(){if(this.resizeFrame){var A=this.getEl();Ext.fly(this.getDragEl()).setSize(A.offsetWidth,A.offsetHeight)}},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C);this.setDragElPos(A,C)},b4StartDrag:function(A,B){this.showFrame(A,B)},b4EndDrag:function(A){Ext.fly(this.getDragEl()).hide()},endDrag:function(C){var B=this.getEl();var A=this.getDragEl();A.style.visibility="";this.beforeMove();B.style.visibility="hidden";Ext.dd.DDM.moveToEl(B,A);A.style.visibility="hidden";B.style.visibility="";this.afterDrag()},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id)}});Ext.dd.DDTarget=function(C,A,B){if(C){this.initTarget(C,A,B)}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{toString:function(){return("DDTarget "+this.id)}});
-Ext.dd.DragTracker=function(A){Ext.apply(this,A);this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");this.dragRegion=new Ext.lib.Region(0,0,0,0);if(this.el){this.initEl(this.el)}};Ext.extend(Ext.dd.DragTracker,Ext.util.Observable,{active:false,tolerance:5,autoStart:false,initEl:function(A){this.el=Ext.get(A);A.on("mousedown",this.onMouseDown,this,this.delegate?{delegate:this.delegate}:undefined)},destroy:function(){this.el.un("mousedown",this.onMouseDown,this)},onMouseDown:function(C,B){if(this.fireEvent("mousedown",this,C)!==false&&this.onBeforeStart(C)!==false){this.startXY=this.lastXY=C.getXY();this.dragTarget=this.delegate?B:this.el.dom;C.preventDefault();var A=Ext.getDoc();A.on("mouseup",this.onMouseUp,this);A.on("mousemove",this.onMouseMove,this);A.on("selectstart",this.stopSelect,this);if(this.autoStart){this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this)}}},onMouseMove:function(D,C){D.preventDefault();var B=D.getXY(),A=this.startXY;this.lastXY=B;if(!this.active){if(Math.abs(A[0]-B[0])>this.tolerance||Math.abs(A[1]-B[1])>this.tolerance){this.triggerStart()}else{return }}this.fireEvent("mousemove",this,D);this.onDrag(D);this.fireEvent("drag",this,D)},onMouseUp:function(B){var A=Ext.getDoc();A.un("mousemove",this.onMouseMove,this);A.un("mouseup",this.onMouseUp,this);A.un("selectstart",this.stopSelect,this);B.preventDefault();this.clearStart();this.active=false;delete this.elRegion;this.fireEvent("mouseup",this,B);this.onEnd(B);this.fireEvent("dragend",this,B)},triggerStart:function(A){this.clearStart();this.active=true;this.onStart(this.startXY);this.fireEvent("dragstart",this,this.startXY)},clearStart:function(){if(this.timer){clearTimeout(this.timer);delete this.timer}},stopSelect:function(A){A.stopEvent();return false},onBeforeStart:function(A){},onStart:function(A){},onDrag:function(A){},onEnd:function(A){},getDragTarget:function(){return this.dragTarget},getDragCt:function(){return this.el},getXY:function(A){return A?this.constrainModes[A].call(this,this.lastXY):this.lastXY},getOffset:function(C){var B=this.getXY(C);var A=this.startXY;return[A[0]-B[0],A[1]-B[1]]},constrainModes:{"point":function(B){if(!this.elRegion){this.elRegion=this.getDragCt().getRegion()}var A=this.dragRegion;A.left=B[0];A.top=B[1];A.right=B[0];A.bottom=B[1];A.constrainTo(this.elRegion);return[A.left,A.top]}}});
-Ext.dd.ScrollManager=function(){var C=Ext.dd.DragDropMgr;var E={};var B=null;var H={};var G=function(K){B=null;A()};var I=function(){if(C.dragCurrent){C.refreshCache(C.dragCurrent.groups)}};var D=function(){if(C.dragCurrent){var K=Ext.dd.ScrollManager;var L=H.el.ddScrollConfig?H.el.ddScrollConfig.increment:K.increment;if(!K.animate){if(H.el.scroll(H.dir,L)){I()}}else{H.el.scroll(H.dir,L,true,K.animDuration,I)}}};var A=function(){if(H.id){clearInterval(H.id)}H.id=0;H.el=null;H.dir=""};var F=function(L,K){A();H.el=L;H.dir=K;H.id=setInterval(D,Ext.dd.ScrollManager.frequency)};var J=function(N,P){if(P||!C.dragCurrent){return }var Q=Ext.dd.ScrollManager;if(!B||B!=C.dragCurrent){B=C.dragCurrent;Q.refreshCache()}var R=Ext.lib.Event.getXY(N);var S=new Ext.lib.Point(R[0],R[1]);for(var L in E){var M=E[L],K=M._region;var O=M.ddScrollConfig?M.ddScrollConfig:Q;if(K&&K.contains(S)&&M.isScrollable()){if(K.bottom-S.y<=O.vthresh){if(H.el!=M){F(M,"down")}return }else{if(K.right-S.x<=O.hthresh){if(H.el!=M){F(M,"left")}return }else{if(S.y-K.top<=O.vthresh){if(H.el!=M){F(M,"up")}return }else{if(S.x-K.left<=O.hthresh){if(H.el!=M){F(M,"right")}return }}}}}}A()};C.fireEvents=C.fireEvents.createSequence(J,C);C.stopDrag=C.stopDrag.createSequence(G,C);return{register:function(M){if(Ext.isArray(M)){for(var L=0,K=M.length;L<K;L++){this.register(M[L])}}else{M=Ext.get(M);E[M.id]=M}},unregister:function(M){if(Ext.isArray(M)){for(var L=0,K=M.length;L<K;L++){this.unregister(M[L])}}else{M=Ext.get(M);delete E[M.id]}},vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,refreshCache:function(){for(var K in E){if(typeof E[K]=="object"){E[K]._region=E[K].getRegion()}}}}}();
-Ext.dd.Registry=function(){var D={};var B={};var A=0;var C=function(F,E){if(typeof F=="string"){return F}var G=F.id;if(!G&&E!==false){G="extdd-"+(++A);F.id=G}return G};return{register:function(H,I){I=I||{};if(typeof H=="string"){H=document.getElementById(H)}I.ddel=H;D[C(H)]=I;if(I.isHandle!==false){B[I.ddel.id]=I}if(I.handles){var G=I.handles;for(var F=0,E=G.length;F<E;F++){B[C(G[F])]=I}}},unregister:function(H){var J=C(H,false);var I=D[J];if(I){delete D[J];if(I.handles){var G=I.handles;for(var F=0,E=G.length;F<E;F++){delete B[C(G[F],false)]}}}},getHandle:function(E){if(typeof E!="string"){E=E.id}return B[E]},getHandleFromEvent:function(F){var E=Ext.lib.Event.getTarget(F);return E?B[E.id]:null},getTarget:function(E){if(typeof E!="string"){E=E.id}return D[E]},getTargetFromEvent:function(F){var E=Ext.lib.Event.getTarget(F);return E?D[E.id]||B[E.id]:null}}}();
-Ext.dd.StatusProxy=function(A){Ext.apply(this,A);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "+this.dropNotAllowed,children:[{tag:"div",cls:"x-dd-drop-icon"},{tag:"div",cls:"x-dd-drag-ghost"}]},shadow:!A||A.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1]);this.dropStatus=this.dropNotAllowed};Ext.dd.StatusProxy.prototype={dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(A){A=A||this.dropNotAllowed;if(this.dropStatus!=A){this.el.replaceClass(this.dropStatus,A);this.dropStatus=A}},reset:function(A){this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;this.dropStatus=this.dropNotAllowed;if(A){this.ghost.update("")}},update:function(A){if(typeof A=="string"){this.ghost.update(A)}else{this.ghost.update("");A.style.margin="0";this.ghost.dom.appendChild(A)}},getEl:function(){return this.el},getGhost:function(){return this.ghost},hide:function(A){this.el.hide();if(A){this.reset(true)}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop()}},show:function(){this.el.show()},sync:function(){this.el.sync()},repair:function(B,C,A){this.callback=C;this.scope=A;if(B&&this.animRepair!==false){this.el.addClass("x-dd-drag-repair");this.el.hideUnders(true);this.anim=this.el.shift({duration:this.repairDuration||0.5,easing:"easeOut",xy:B,stopFx:true,callback:this.afterRepair,scope:this})}else{this.afterRepair()}},afterRepair:function(){this.hide(true);if(typeof this.callback=="function"){this.callback.call(this.scope||this)}this.callback=null;this.scope=null}};
-Ext.dd.DragSource=function(B,A){this.el=Ext.get(B);if(!this.dragData){this.dragData={}}Ext.apply(this,A);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy()}Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true});this.dragging=false};Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(A){return this.dragData},onDragEnter:function(C,D){var B=Ext.dd.DragDropMgr.getDDById(D);this.cachedTarget=B;if(this.beforeDragEnter(B,C,D)!==false){if(B.isNotifyTarget){var A=B.notifyEnter(this,C,this.dragData);this.proxy.setStatus(A)}else{this.proxy.setStatus(this.dropAllowed)}if(this.afterDragEnter){this.afterDragEnter(B,C,D)}}},beforeDragEnter:function(B,A,C){return true},alignElWithMouse:function(){Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);this.proxy.sync()},onDragOver:function(C,D){var B=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(D);if(this.beforeDragOver(B,C,D)!==false){if(B.isNotifyTarget){var A=B.notifyOver(this,C,this.dragData);this.proxy.setStatus(A)}if(this.afterDragOver){this.afterDragOver(B,C,D)}}},beforeDragOver:function(B,A,C){return true},onDragOut:function(B,C){var A=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(C);if(this.beforeDragOut(A,B,C)!==false){if(A.isNotifyTarget){A.notifyOut(this,B,this.dragData)}this.proxy.reset();if(this.afterDragOut){this.afterDragOut(A,B,C)}}this.cachedTarget=null},beforeDragOut:function(B,A,C){return true},onDragDrop:function(B,C){var A=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(C);if(this.beforeDragDrop(A,B,C)!==false){if(A.isNotifyTarget){if(A.notifyDrop(this,B,this.dragData)){this.onValidDrop(A,B,C)}else{this.onInvalidDrop(A,B,C)}}else{this.onValidDrop(A,B,C)}if(this.afterDragDrop){this.afterDragDrop(A,B,C)}}delete this.cachedTarget},beforeDragDrop:function(B,A,C){return true},onValidDrop:function(B,A,C){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(B,A,C)}},getRepairXY:function(B,A){return this.el.getXY()},onInvalidDrop:function(B,A,C){this.beforeInvalidDrop(B,A,C);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,A,this.dragData)}this.cacheTarget=null}this.proxy.repair(this.getRepairXY(A,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(A,C)}},afterRepair:function(){if(Ext.enableFx){this.el.highlight(this.hlColor||"c3daf9")}this.dragging=false},beforeInvalidDrop:function(B,A,C){return true},handleMouseDown:function(B){if(this.dragging){return }var A=this.getDragData(B);if(A&&this.onBeforeDrag(A,B)!==false){this.dragData=A;this.proxy.stop();Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments)}},onBeforeDrag:function(A,B){return true},onStartDrag:Ext.emptyFn,startDrag:function(A,B){this.proxy.reset();this.dragging=true;this.proxy.update("");this.onInitDrag(A,B);this.proxy.show()},onInitDrag:function(A,C){var B=this.el.dom.cloneNode(true);B.id=Ext.id();this.proxy.update(B);this.onStartDrag(A,C);return true},getProxy:function(){return this.proxy},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)},b4EndDrag:function(A){},endDrag:function(A){this.onEndDrag(this.dragData,A)},onEndDrag:function(A,B){},autoOffset:function(A,B){this.setDelta(-12,-20)}});
-Ext.dd.DropTarget=function(B,A){this.el=Ext.get(B);Ext.apply(this,A);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true})};Ext.extend(Ext.dd.DropTarget,Ext.dd.DDTarget,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(A,C,B){if(this.overClass){this.el.addClass(this.overClass)}return this.dropAllowed},notifyOver:function(A,C,B){return this.dropAllowed},notifyOut:function(A,C,B){if(this.overClass){this.el.removeClass(this.overClass)}},notifyDrop:function(A,C,B){return false}});
-Ext.dd.DragZone=function(B,A){Ext.dd.DragZone.superclass.constructor.call(this,B,A);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el)}};Ext.extend(Ext.dd.DragZone,Ext.dd.DragSource,{getDragData:function(A){return Ext.dd.Registry.getHandleFromEvent(A)},onInitDrag:function(A,B){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(A,B);return true},afterRepair:function(){if(Ext.enableFx){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")}this.dragging=false},getRepairXY:function(A){return Ext.Element.fly(this.dragData.ddel).getXY()}});
-Ext.dd.DropZone=function(B,A){Ext.dd.DropZone.superclass.constructor.call(this,B,A)};Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{getTargetFromEvent:function(A){return Ext.dd.Registry.getTargetFromEvent(A)},onNodeEnter:function(D,A,C,B){},onNodeOver:function(D,A,C,B){return this.dropAllowed},onNodeOut:function(D,A,C,B){},onNodeDrop:function(D,A,C,B){return false},onContainerOver:function(A,C,B){return this.dropNotAllowed},onContainerDrop:function(A,C,B){return false},notifyEnter:function(A,C,B){return this.dropNotAllowed},notifyOver:function(A,C,B){var D=this.getTargetFromEvent(C);if(!D){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}return this.onContainerOver(A,C,B)}if(this.lastOverNode!=D){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B)}this.onNodeEnter(D,A,C,B);this.lastOverNode=D}return this.onNodeOver(D,A,C,B)},notifyOut:function(A,C,B){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}},notifyDrop:function(A,C,B){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,A,C,B);this.lastOverNode=null}var D=this.getTargetFromEvent(C);return D?this.onNodeDrop(D,A,C,B):this.onContainerDrop(A,C,B)},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups)}});
-Ext.data.SortTypes={none:function(A){return A},stripTagsRE:/<\/?[^>]+>/gi,asText:function(A){return String(A).replace(this.stripTagsRE,"")},asUCText:function(A){return String(A).toUpperCase().replace(this.stripTagsRE,"")},asUCString:function(A){return String(A).toUpperCase()},asDate:function(A){if(!A){return 0}if(Ext.isDate(A)){return A.getTime()}return Date.parse(String(A))},asFloat:function(A){var B=parseFloat(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B},asInt:function(A){var B=parseInt(String(A).replace(/,/g,""));if(isNaN(B)){B=0}return B}};
-Ext.data.Record=function(A,B){this.id=(B||B===0)?B:++Ext.data.Record.AUTO_ID;this.data=A};Ext.data.Record.create=function(E){var C=Ext.extend(Ext.data.Record,{});var D=C.prototype;D.fields=new Ext.util.MixedCollection(false,function(F){return F.name});for(var B=0,A=E.length;B<A;B++){D.fields.add(new Ext.data.Field(E[B]))}C.getField=function(F){return D.fields.get(F)};return C};Ext.data.Record.AUTO_ID=1000;Ext.data.Record.EDIT="edit";Ext.data.Record.REJECT="reject";Ext.data.Record.COMMIT="commit";Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,join:function(A){this.store=A},set:function(A,B){if(String(this.data[A])==String(B)){return }this.dirty=true;if(!this.modified){this.modified={}}if(typeof this.modified[A]=="undefined"){this.modified[A]=this.data[A]}this.data[A]=B;if(!this.editing&&this.store){this.store.afterEdit(this)}},get:function(A){return this.data[A]},beginEdit:function(){this.editing=true;this.modified={}},cancelEdit:function(){this.editing=false;delete this.modified},endEdit:function(){this.editing=false;if(this.dirty&&this.store){this.store.afterEdit(this)}},reject:function(B){var A=this.modified;for(var C in A){if(typeof A[C]!="function"){this.data[C]=A[C]}}this.dirty=false;delete this.modified;this.editing=false;if(this.store&&B!==true){this.store.afterReject(this)}},commit:function(A){this.dirty=false;delete this.modified;this.editing=false;if(this.store&&A!==true){this.store.afterCommit(this)}},getChanges:function(){var A=this.modified,B={};for(var C in A){if(A.hasOwnProperty(C)){B[C]=this.data[C]}}return B},hasError:function(){return this.error!=null},clearError:function(){this.error=null},copy:function(A){return new this.constructor(Ext.apply({},this.data),A||this.id)},isModified:function(A){return this.modified&&this.modified.hasOwnProperty(A)}};
-Ext.StoreMgr=Ext.apply(new Ext.util.MixedCollection(),{register:function(){for(var A=0,B;B=arguments[A];A++){this.add(B)}},unregister:function(){for(var A=0,B;B=arguments[A];A++){this.remove(this.lookup(B))}},lookup:function(A){return typeof A=="object"?A:this.get(A)},getKey:function(A){return A.storeId||A.id}});
-Ext.data.Store=function(A){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(B){return B.id};this.baseParams={};this.paramNames={"start":"start","limit":"limit","sort":"sort","dir":"dir"};if(A&&A.data){this.inlineData=A.data;delete A.data}Ext.apply(this,A);if(this.url&&!this.proxy){this.proxy=new Ext.data.HttpProxy({url:this.url})}if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType}if(this.reader.onMetaChange){this.reader.onMetaChange=this.onMetaChange.createDelegate(this)}}if(this.recordType){this.fields=this.recordType.prototype.fields}this.modified=[];this.addEvents("datachanged","metachange","add","remove","update","clear","beforeload","load","loadexception");if(this.proxy){this.relayEvents(this.proxy,["loadexception"])}this.sortToggle={};if(this.sortInfo){this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)}Ext.data.Store.superclass.constructor.call(this);if(this.storeId||this.id){Ext.StoreMgr.register(this)}if(this.inlineData){this.loadData(this.inlineData);delete this.inlineData}else{if(this.autoLoad){this.load.defer(10,this,[typeof this.autoLoad=="object"?this.autoLoad:undefined])}}};Ext.extend(Ext.data.Store,Ext.util.Observable,{remoteSort:false,pruneModifiedRecords:false,lastOptions:null,destroy:function(){if(this.id){Ext.StoreMgr.unregister(this)}this.data=null;this.purgeListeners()},add:function(B){B=[].concat(B);if(B.length<1){return }for(var D=0,A=B.length;D<A;D++){B[D].join(this)}var C=this.data.length;this.data.addAll(B);if(this.snapshot){this.snapshot.addAll(B)}this.fireEvent("add",this,B,C)},addSorted:function(A){var B=this.findInsertIndex(A);this.insert(B,A)},remove:function(A){var B=this.data.indexOf(A);this.data.removeAt(B);if(this.pruneModifiedRecords){this.modified.remove(A)}if(this.snapshot){this.snapshot.remove(A)}this.fireEvent("remove",this,A,B)},removeAll:function(){this.data.clear();if(this.snapshot){this.snapshot.clear()}if(this.pruneModifiedRecords){this.modified=[]}this.fireEvent("clear",this)},insert:function(C,B){B=[].concat(B);for(var D=0,A=B.length;D<A;D++){this.data.insert(C,B[D]);B[D].join(this)}this.fireEvent("add",this,B,C)},indexOf:function(A){return this.data.indexOf(A)},indexOfId:function(A){return this.data.indexOfKey(A)},getById:function(A){return this.data.key(A)},getAt:function(A){return this.data.itemAt(A)},getRange:function(B,A){return this.data.getRange(B,A)},storeOptions:function(A){A=Ext.apply({},A);delete A.callback;delete A.scope;this.lastOptions=A},load:function(B){B=B||{};if(this.fireEvent("beforeload",this,B)!==false){this.storeOptions(B);var C=Ext.apply(B.params||{},this.baseParams);if(this.sortInfo&&this.remoteSort){var A=this.paramNames;C[A["sort"]]=this.sortInfo.field;C[A["dir"]]=this.sortInfo.direction}this.proxy.load(C,this.reader,this.loadRecords,this,B);return true}else{return false}},reload:function(A){this.load(Ext.applyIf(A||{},this.lastOptions))},loadRecords:function(G,B,F){if(!G||F===false){if(F!==false){this.fireEvent("load",this,[],B)}if(B.callback){B.callback.call(B.scope||this,[],B,false)}return }var E=G.records,D=G.totalRecords||E.length;if(!B||B.add!==true){if(this.pruneModifiedRecords){this.modified=[]}for(var C=0,A=E.length;C<A;C++){E[C].join(this)}if(this.snapshot){this.data=this.snapshot;delete this.snapshot}this.data.clear();this.data.addAll(E);this.totalLength=D;this.applySort();this.fireEvent("datachanged",this)}else{this.totalLength=Math.max(D,this.data.length+E.length);this.add(E)}this.fireEvent("load",this,E,B);if(B.callback){B.callback.call(B.scope||this,E,B,true)}},loadData:function(C,A){var B=this.reader.readRecords(C);this.loadRecords(B,{add:A},true)},getCount:function(){return this.data.length||0},getTotalCount:function(){return this.totalLength||0},getSortState:function(){return this.sortInfo},applySort:function(){if(this.sortInfo&&!this.remoteSort){var A=this.sortInfo,B=A.field;this.sortData(B,A.direction)}},sortData:function(C,D){D=D||"ASC";var A=this.fields.get(C).sortType;var B=function(F,E){var H=A(F.data[C]),G=A(E.data[C]);return H>G?1:(H<G?-1:0)};this.data.sort(D,B);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(D,B)}},setDefaultSort:function(B,A){A=A?A.toUpperCase():"ASC";this.sortInfo={field:B,direction:A};this.sortToggle[B]=A},sort:function(E,C){var D=this.fields.get(E);if(!D){return false}if(!C){if(this.sortInfo&&this.sortInfo.field==D.name){C=(this.sortToggle[D.name]||"ASC").toggle("ASC","DESC")}else{C=D.sortDir}}var B=(this.sortToggle)?this.sortToggle[D.name]:null;var A=(this.sortInfo)?this.sortInfo:null;this.sortToggle[D.name]=C;this.sortInfo={field:D.name,direction:C};if(!this.remoteSort){this.applySort();this.fireEvent("datachanged",this)}else{if(!this.load(this.lastOptions)){if(B){this.sortToggle[D.name]=B}if(A){this.sortInfo=A}}}},each:function(B,A){this.data.each(B,A)},getModifiedRecords:function(){return this.modified},createFilterFn:function(C,B,D,A){if(Ext.isEmpty(B,false)){return false}B=this.data.createValueMatcher(B,D,A);return function(E){return B.test(E.data[C])}},sum:function(E,F,A){var C=this.data.items,B=0;F=F||0;A=(A||A===0)?A:C.length-1;for(var D=F;D<=A;D++){B+=(C[D].data[E]||0)}return B},filter:function(D,C,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.filterBy(B):this.clearFilter()},filterBy:function(B,A){this.snapshot=this.snapshot||this.data;this.data=this.queryBy(B,A||this);this.fireEvent("datachanged",this)},query:function(D,C,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.queryBy(B):this.data.clone()},queryBy:function(B,A){var C=this.snapshot||this.data;return C.filterBy(B,A||this)},find:function(D,C,F,E,A){var B=this.createFilterFn(D,C,E,A);return B?this.data.findIndexBy(B,null,F):-1},findBy:function(B,A,C){return this.data.findIndexBy(B,A,C)},collect:function(G,H,B){var F=(B===true&&this.snapshot)?this.snapshot.items:this.data.items;var I,J,A=[],C={};for(var D=0,E=F.length;D<E;D++){I=F[D].data[G];J=String(I);if((H||!Ext.isEmpty(I))&&!C[J]){C[J]=true;A[A.length]=I}}return A},clearFilter:function(A){if(this.isFiltered()){this.data=this.snapshot;delete this.snapshot;if(A!==true){this.fireEvent("datachanged",this)}}},isFiltered:function(){return this.snapshot&&this.snapshot!=this.data},afterEdit:function(A){if(this.modified.indexOf(A)==-1){this.modified.push(A)}this.fireEvent("update",this,A,Ext.data.Record.EDIT)},afterReject:function(A){this.modified.remove(A);this.fireEvent("update",this,A,Ext.data.Record.REJECT)},afterCommit:function(A){this.modified.remove(A);this.fireEvent("update",this,A,Ext.data.Record.COMMIT)},commitChanges:function(){var B=this.modified.slice(0);this.modified=[];for(var C=0,A=B.length;C<A;C++){B[C].commit()}},rejectChanges:function(){var B=this.modified.slice(0);this.modified=[];for(var C=0,A=B.length;C<A;C++){B[C].reject()}},onMetaChange:function(B,A,C){this.recordType=A;this.fields=A.prototype.fields;delete this.snapshot;this.sortInfo=B.sortInfo;this.modified=[];this.fireEvent("metachange",this,this.reader.meta)},findInsertIndex:function(A){this.suspendEvents();var C=this.data.clone();this.data.add(A);this.applySort();var B=this.data.indexOf(A);this.data=C;this.resumeEvents();return B}});
-Ext.data.SimpleStore=function(A){Ext.data.SimpleStore.superclass.constructor.call(this,Ext.apply(A,{reader:new Ext.data.ArrayReader({id:A.id},Ext.data.Record.create(A.fields))}))};Ext.extend(Ext.data.SimpleStore,Ext.data.Store,{loadData:function(E,B){if(this.expandData===true){var D=[];for(var C=0,A=E.length;C<A;C++){D[D.length]=[E[C]]}E=D}Ext.data.SimpleStore.superclass.loadData.call(this,E,B)}});
-Ext.data.JsonStore=function(A){Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(A,{proxy:!A.data?new Ext.data.HttpProxy({url:A.url}):undefined,reader:new Ext.data.JsonReader(A,A.fields)}))};Ext.extend(Ext.data.JsonStore,Ext.data.Store);
-Ext.data.Field=function(D){if(typeof D=="string"){D={name:D}}Ext.apply(this,D);if(!this.type){this.type="auto"}var C=Ext.data.SortTypes;if(typeof this.sortType=="string"){this.sortType=C[this.sortType]}if(!this.sortType){switch(this.type){case"string":this.sortType=C.asUCString;break;case"date":this.sortType=C.asDate;break;default:this.sortType=C.none}}var E=/[\$,%]/g;if(!this.convert){var B,A=this.dateFormat;switch(this.type){case"":case"auto":case undefined:B=function(F){return F};break;case"string":B=function(F){return(F===undefined||F===null)?"":String(F)};break;case"int":B=function(F){return F!==undefined&&F!==null&&F!==""?parseInt(String(F).replace(E,""),10):""};break;case"float":B=function(F){return F!==undefined&&F!==null&&F!==""?parseFloat(String(F).replace(E,""),10):""};break;case"bool":case"boolean":B=function(F){return F===true||F==="true"||F==1};break;case"date":B=function(G){if(!G){return""}if(Ext.isDate(G)){return G}if(A){if(A=="timestamp"){return new Date(G*1000)}if(A=="time"){return new Date(parseInt(G,10))}return Date.parseDate(G,A)}var F=Date.parse(G);return F?new Date(F):null};break}this.convert=B}};Ext.data.Field.prototype={dateFormat:null,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC"};
-Ext.data.DataReader=function(A,B){this.meta=A;this.recordType=Ext.isArray(B)?Ext.data.Record.create(B):B};Ext.data.DataReader.prototype={};
-Ext.data.DataProxy=function(){this.addEvents("beforeload","load","loadexception");Ext.data.DataProxy.superclass.constructor.call(this)};Ext.extend(Ext.data.DataProxy,Ext.util.Observable);
-Ext.data.MemoryProxy=function(A){Ext.data.MemoryProxy.superclass.constructor.call(this);this.data=A};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{load:function(F,C,G,D,B){F=F||{};var A;try{A=C.readRecords(this.data)}catch(E){this.fireEvent("loadexception",this,B,null,E);G.call(D,null,B,false);return }G.call(D,A,B,true)},update:function(B,A){}});
-Ext.data.HttpProxy=function(A){Ext.data.HttpProxy.superclass.constructor.call(this);this.conn=A;this.useAjax=!A||!A.events};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.useAjax?Ext.Ajax:this.conn},load:function(E,B,F,C,A){if(this.fireEvent("beforeload",this,E)!==false){var D={params:E||{},request:{callback:F,scope:C,arg:A},reader:B,callback:this.loadResponse,scope:this};if(this.useAjax){Ext.applyIf(D,this.conn);if(this.activeRequest){Ext.Ajax.abort(this.activeRequest)}this.activeRequest=Ext.Ajax.request(D)}else{this.conn.request(D)}}else{F.call(C||this,null,A,false)}},loadResponse:function(E,D,B){delete this.activeRequest;if(!D){this.fireEvent("loadexception",this,E,B);E.request.callback.call(E.request.scope,null,E.request.arg,false);return }var A;try{A=E.reader.read(B)}catch(C){this.fireEvent("loadexception",this,E,B,C);E.request.callback.call(E.request.scope,null,E.request.arg,false);return }this.fireEvent("load",this,E,E.request.arg);E.request.callback.call(E.request.scope,A,E.request.arg,true)},update:function(A){},updateResponse:function(A){}});
-Ext.data.ScriptTagProxy=function(A){Ext.data.ScriptTagProxy.superclass.constructor.call(this);Ext.apply(this,A);this.head=document.getElementsByTagName("head")[0]};Ext.data.ScriptTagProxy.TRANS_ID=1000;Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{timeout:30000,callbackParam:"callback",nocache:true,load:function(E,F,H,I,J){if(this.fireEvent("beforeload",this,E)!==false){var C=Ext.urlEncode(Ext.apply(E,this.extraParams));var B=this.url;B+=(B.indexOf("?")!=-1?"&":"?")+C;if(this.nocache){B+="&_dc="+(new Date().getTime())}var A=++Ext.data.ScriptTagProxy.TRANS_ID;var K={id:A,cb:"stcCallback"+A,scriptId:"stcScript"+A,params:E,arg:J,url:B,callback:H,scope:I,reader:F};var D=this;window[K.cb]=function(L){D.handleResponse(L,K)};B+=String.format("&{0}={1}",this.callbackParam,K.cb);if(this.autoAbort!==false){this.abort()}K.timeoutId=this.handleFailure.defer(this.timeout,this,[K]);var G=document.createElement("script");G.setAttribute("src",B);G.setAttribute("type","text/javascript");G.setAttribute("id",K.scriptId);this.head.appendChild(G);this.trans=K}else{H.call(I||this,null,J,false)}},isLoading:function(){return this.trans?true:false},abort:function(){if(this.isLoading()){this.destroyTrans(this.trans)}},destroyTrans:function(B,A){this.head.removeChild(document.getElementById(B.scriptId));clearTimeout(B.timeoutId);if(A){window[B.cb]=undefined;try{delete window[B.cb]}catch(C){}}else{window[B.cb]=function(){window[B.cb]=undefined;try{delete window[B.cb]}catch(D){}}}},handleResponse:function(D,B){this.trans=false;this.destroyTrans(B,true);var A;try{A=B.reader.readRecords(D)}catch(C){this.fireEvent("loadexception",this,D,B.arg,C);B.callback.call(B.scope||window,null,B.arg,false);return }this.fireEvent("load",this,D,B.arg);B.callback.call(B.scope||window,A,B.arg,true)},handleFailure:function(A){this.trans=false;this.destroyTrans(A,false);this.fireEvent("loadexception",this,null,A.arg);A.callback.call(A.scope||window,null,A.arg,false)}});
-Ext.data.JsonReader=function(A,B){A=A||{};Ext.data.JsonReader.superclass.constructor.call(this,A,B||A.fields)};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(response){var json=response.responseText;var o=eval("("+json+")");if(!o){throw {message:"JsonReader.read: Json object not found"}}if(o.metaData){delete this.ef;this.meta=o.metaData;this.recordType=Ext.data.Record.create(o.metaData.fields);this.onMetaChange(this.meta,this.recordType,o)}return this.readRecords(o)},onMetaChange:function(A,C,B){},simpleAccess:function(B,A){return B[A]},getJsonAccessor:function(){var A=/[\[\.]/;return function(C){try{return(A.test(C))?new Function("obj","return obj."+C):function(D){return D[C]}}catch(B){}return Ext.emptyFn}}(),readRecords:function(K){this.jsonData=K;var H=this.meta,A=this.recordType,R=A.prototype.fields,F=R.items,E=R.length;if(!this.ef){if(H.totalProperty){this.getTotal=this.getJsonAccessor(H.totalProperty)}if(H.successProperty){this.getSuccess=this.getJsonAccessor(H.successProperty)}this.getRoot=H.root?this.getJsonAccessor(H.root):function(U){return U};if(H.id){var Q=this.getJsonAccessor(H.id);this.getId=function(V){var U=Q(V);return(U===undefined||U==="")?null:U}}else{this.getId=function(){return null}}this.ef=[];for(var O=0;O<E;O++){R=F[O];var T=(R.mapping!==undefined&&R.mapping!==null)?R.mapping:R.name;this.ef[O]=this.getJsonAccessor(T)}}var M=this.getRoot(K),S=M.length,I=S,D=true;if(H.totalProperty){var G=parseInt(this.getTotal(K),10);if(!isNaN(G)){I=G}}if(H.successProperty){var G=this.getSuccess(K);if(G===false||G==="false"){D=false}}var P=[];for(var O=0;O<S;O++){var L=M[O];var B={};var J=this.getId(L);for(var N=0;N<E;N++){R=F[N];var G=this.ef[N](L);B[R.name]=R.convert((G!==undefined)?G:R.defaultValue,L)}var C=new A(B,J);C.json=L;P[O]=C}return{success:D,records:P,totalRecords:I}}});
-Ext.data.XmlReader=function(A,B){A=A||{};Ext.data.XmlReader.superclass.constructor.call(this,A,B||A.fields)};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(A){var B=A.responseXML;if(!B){throw {message:"XmlReader.read: XML Document not available"}}return this.readRecords(B)},readRecords:function(T){this.xmlData=T;var N=T.documentElement||T;var I=Ext.DomQuery;var B=this.recordType,L=B.prototype.fields;var D=this.meta.id;var G=0,E=true;if(this.meta.totalRecords){G=I.selectNumber(this.meta.totalRecords,N,0)}if(this.meta.success){var K=I.selectValue(this.meta.success,N,true);E=K!==false&&K!=="false"}var Q=[];var U=I.select(this.meta.record,N);for(var P=0,R=U.length;P<R;P++){var M=U[P];var A={};var J=D?I.selectValue(D,M):undefined;for(var O=0,H=L.length;O<H;O++){var S=L.items[O];var F=I.selectValue(S.mapping||S.name,M,S.defaultValue);F=S.convert(F,M);A[S.name]=F}var C=new B(A,J);C.node=M;Q[Q.length]=C}return{success:E,records:Q,totalRecords:G||Q.length}}});
-Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{readRecords:function(C){var B=this.meta?this.meta.id:null;var G=this.recordType,K=G.prototype.fields;var E=[];var M=C;for(var I=0;I<M.length;I++){var D=M[I];var O={};var A=((B||B===0)&&D[B]!==undefined&&D[B]!==""?D[B]:null);for(var H=0,P=K.length;H<P;H++){var L=K.items[H];var F=L.mapping!==undefined&&L.mapping!==null?L.mapping:H;var N=D[F]!==undefined?D[F]:L.defaultValue;N=L.convert(N,D);O[L.name]=N}var J=new G(O,A);J.json=D;E[E.length]=J}return{records:E,totalRecords:E.length}}});
-Ext.data.Tree=function(A){this.nodeHash={};this.root=null;if(A){this.setRootNode(A)}this.addEvents("append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert");Ext.data.Tree.superclass.constructor.call(this)};Ext.extend(Ext.data.Tree,Ext.util.Observable,{pathSeparator:"/",proxyNodeEvent:function(){return this.fireEvent.apply(this,arguments)},getRootNode:function(){return this.root},setRootNode:function(A){this.root=A;A.ownerTree=this;A.isRoot=true;this.registerNode(A);return A},getNodeById:function(A){return this.nodeHash[A]},registerNode:function(A){this.nodeHash[A.id]=A},unregisterNode:function(A){delete this.nodeHash[A.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"}});Ext.data.Node=function(A){this.attributes=A||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"ynode-");this.attributes.id=this.id}this.childNodes=[];if(!this.childNodes.indexOf){this.childNodes.indexOf=function(D){for(var C=0,B=this.length;C<B;C++){if(this[C]==D){return C}}return -1}}this.parentNode=null;this.firstChild=null;this.lastChild=null;this.previousSibling=null;this.nextSibling=null;this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});this.listeners=this.attributes.listeners;Ext.data.Node.superclass.constructor.call(this)};Ext.extend(Ext.data.Node,Ext.util.Observable,{fireEvent:function(B){if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){return false}var A=this.getOwnerTree();if(A){if(A.proxyNodeEvent.apply(A,arguments)===false){return false}}return true},isLeaf:function(){return this.leaf===true},setFirstChild:function(A){this.firstChild=A},setLastChild:function(A){this.lastChild=A},isLast:function(){return(!this.parentNode?true:this.parentNode.lastChild==this)},isFirst:function(){return(!this.parentNode?true:this.parentNode.firstChild==this)},hasChildNodes:function(){return !this.isLeaf()&&this.childNodes.length>0},appendChild:function(E){var F=false;if(Ext.isArray(E)){F=E}else{if(arguments.length>1){F=arguments}}if(F){for(var D=0,A=F.length;D<A;D++){this.appendChild(F[D])}}else{if(this.fireEvent("beforeappend",this.ownerTree,this,E)===false){return false}var B=this.childNodes.length;var C=E.parentNode;if(C){if(E.fireEvent("beforemove",E.getOwnerTree(),E,C,this,B)===false){return false}C.removeChild(E)}B=this.childNodes.length;if(B==0){this.setFirstChild(E)}this.childNodes.push(E);E.parentNode=this;var G=this.childNodes[B-1];if(G){E.previousSibling=G;G.nextSibling=E}else{E.previousSibling=null}E.nextSibling=null;this.setLastChild(E);E.setOwnerTree(this.getOwnerTree());this.fireEvent("append",this.ownerTree,this,E,B);if(C){E.fireEvent("move",this.ownerTree,E,C,this,B)}return E}},removeChild:function(B){var A=this.childNodes.indexOf(B);if(A==-1){return false}if(this.fireEvent("beforeremove",this.ownerTree,this,B)===false){return false}this.childNodes.splice(A,1);if(B.previousSibling){B.previousSibling.nextSibling=B.nextSibling}if(B.nextSibling){B.nextSibling.previousSibling=B.previousSibling}if(this.firstChild==B){this.setFirstChild(B.nextSibling)}if(this.lastChild==B){this.setLastChild(B.previousSibling)}B.setOwnerTree(null);B.parentNode=null;B.previousSibling=null;B.nextSibling=null;this.fireEvent("remove",this.ownerTree,this,B);return B},insertBefore:function(D,A){if(!A){return this.appendChild(D)}if(D==A){return false}if(this.fireEvent("beforeinsert",this.ownerTree,this,D,A)===false){return false}var B=this.childNodes.indexOf(A);var C=D.parentNode;var E=B;if(C==this&&this.childNodes.indexOf(D)<B){E--}if(C){if(D.fireEvent("beforemove",D.getOwnerTree(),D,C,this,B,A)===false){return false}C.removeChild(D)}if(E==0){this.setFirstChild(D)}this.childNodes.splice(E,0,D);D.parentNode=this;var F=this.childNodes[E-1];if(F){D.previousSibling=F;F.nextSibling=D}else{D.previousSibling=null}D.nextSibling=A;A.previousSibling=D;D.setOwnerTree(this.getOwnerTree());this.fireEvent("insert",this.ownerTree,this,D,A);if(C){D.fireEvent("move",this.ownerTree,D,C,this,E,A)}return D},remove:function(){this.parentNode.removeChild(this);return this},item:function(A){return this.childNodes[A]},replaceChild:function(A,B){this.insertBefore(A,B);this.removeChild(B);return B},indexOf:function(A){return this.childNodes.indexOf(A)},getOwnerTree:function(){if(!this.ownerTree){var A=this;while(A){if(A.ownerTree){this.ownerTree=A.ownerTree;break}A=A.parentNode}}return this.ownerTree},getDepth:function(){var B=0;var A=this;while(A.parentNode){++B;A=A.parentNode}return B},setOwnerTree:function(B){if(B!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this)}this.ownerTree=B;var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].setOwnerTree(B)}if(B){B.registerNode(this)}}},getPath:function(B){B=B||"id";var D=this.parentNode;var A=[this.attributes[B]];while(D){A.unshift(D.attributes[B]);D=D.parentNode}var C=this.getOwnerTree().pathSeparator;return C+A.join(C)},bubble:function(C,B,A){var D=this;while(D){if(C.apply(B||D,A||[D])===false){break}D=D.parentNode}},cascade:function(F,E,B){if(F.apply(E||this,B||[this])!==false){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].cascade(F,E,B)}}},eachChild:function(F,E,B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){if(F.apply(E||this,B||[D[C]])===false){break}}},findChild:function(D,E){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){if(C[B].attributes[D]==E){return C[B]}}return null},findChildBy:function(E,D){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){if(E.call(D||C[B],C[B])===true){return C[B]}}return null},sort:function(E,D){var C=this.childNodes;var A=C.length;if(A>0){var F=D?function(){E.apply(D,arguments)}:E;C.sort(F);for(var B=0;B<A;B++){var G=C[B];G.previousSibling=C[B-1];G.nextSibling=C[B+1];if(B==0){this.setFirstChild(G)}if(B==A-1){this.setLastChild(G)}}}},contains:function(A){return A.isAncestor(this)},isAncestor:function(A){var B=this.parentNode;while(B){if(B==A){return true}B=B.parentNode}return false},toString:function(){return"[Node"+(this.id?" "+this.id:"")+"]"}});
-Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{remoteGroup:false,groupOnSort:false,clearGrouping:function(){this.groupField=false;if(this.remoteGroup){if(this.baseParams){delete this.baseParams.groupBy}this.reload()}else{this.applySort();this.fireEvent("datachanged",this)}},groupBy:function(C,B){if(this.groupField==C&&!B){return }this.groupField=C;if(this.remoteGroup){if(!this.baseParams){this.baseParams={}}this.baseParams["groupBy"]=C}if(this.groupOnSort){this.sort(C);return }if(this.remoteGroup){this.reload()}else{var A=this.sortInfo||{};if(A.field!=C){this.applySort()}else{this.sortData(C)}this.fireEvent("datachanged",this)}},applySort:function(){Ext.data.GroupingStore.superclass.applySort.call(this);if(!this.groupOnSort&&!this.remoteGroup){var A=this.getGroupState();if(A&&A!=this.sortInfo.field){this.sortData(this.groupField)}}},applyGrouping:function(A){if(this.groupField!==false){this.groupBy(this.groupField,true);return true}else{if(A===true){this.fireEvent("datachanged",this)}return false}},getGroupState:function(){return this.groupOnSort&&this.groupField!==false?(this.sortInfo?this.sortInfo.field:undefined):this.groupField}});
-Ext.ComponentMgr=function(){var B=new Ext.util.MixedCollection();var A={};return{register:function(C){B.add(C)},unregister:function(C){B.remove(C)},get:function(C){return B.get(C)},onAvailable:function(E,D,C){B.on("add",function(F,G){if(G.id==E){D.call(C||G,G);B.un("add",D,C)}})},all:B,registerType:function(D,C){A[D]=C;C.xtype=D},create:function(C,D){return new A[C.xtype||D](C)}}}();Ext.reg=Ext.ComponentMgr.registerType;
-Ext.Component=function(B){B=B||{};if(B.initialConfig){if(B.isAction){this.baseAction=B}B=B.initialConfig}else{if(B.tagName||B.dom||typeof B=="string"){B={applyTo:B,id:B.id||B}}}this.initialConfig=B;Ext.apply(this,B);this.addEvents("disable","enable","beforeshow","show","beforehide","hide","beforerender","render","beforedestroy","destroy","beforestaterestore","staterestore","beforestatesave","statesave");this.getId();Ext.ComponentMgr.register(this);Ext.Component.superclass.constructor.call(this);if(this.baseAction){this.baseAction.addComponent(this)}this.initComponent();if(this.plugins){if(Ext.isArray(this.plugins)){for(var C=0,A=this.plugins.length;C<A;C++){this.plugins[C].init(this)}}else{this.plugins.init(this)}}if(this.stateful!==false){this.initState(B)}if(this.applyTo){this.applyToMarkup(this.applyTo);delete this.applyTo}else{if(this.renderTo){this.render(this.renderTo);delete this.renderTo}}};Ext.Component.AUTO_ID=1000;Ext.extend(Ext.Component,Ext.util.Observable,{disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,hidden:false,disabled:false,rendered:false,ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode]},initComponent:Ext.emptyFn,render:function(B,A){if(!this.rendered&&this.fireEvent("beforerender",this)!==false){if(!B&&this.el){this.el=Ext.get(this.el);B=this.el.dom.parentNode;this.allowDomMove=false}this.container=Ext.get(B);if(this.ctCls){this.container.addClass(this.ctCls)}this.rendered=true;if(A!==undefined){if(typeof A=="number"){A=this.container.dom.childNodes[A]}else{A=Ext.getDom(A)}}this.onRender(this.container,A||null);if(this.autoShow){this.el.removeClass(["x-hidden","x-hide-"+this.hideMode])}if(this.cls){this.el.addClass(this.cls);delete this.cls}if(this.style){this.el.applyStyles(this.style);delete this.style}this.fireEvent("render",this);this.afterRender(this.container);if(this.hidden){this.hide()}if(this.disabled){this.disable()}this.initStateEvents()}return this},initState:function(A){if(Ext.state.Manager){var B=Ext.state.Manager.get(this.stateId||this.id);if(B){if(this.fireEvent("beforestaterestore",this,B)!==false){this.applyState(B);this.fireEvent("staterestore",this,B)}}}},initStateEvents:function(){if(this.stateEvents){for(var A=0,B;B=this.stateEvents[A];A++){this.on(B,this.saveState,this,{delay:100})}}},applyState:function(B,A){if(B){Ext.apply(this,B)}},getState:function(){return null},saveState:function(){if(Ext.state.Manager){var A=this.getState();if(this.fireEvent("beforestatesave",this,A)!==false){Ext.state.Manager.set(this.stateId||this.id,A);this.fireEvent("statesave",this,A)}}},applyToMarkup:function(A){this.allowDomMove=false;this.el=Ext.get(A);this.render(this.el.dom.parentNode)},addClass:function(A){if(this.el){this.el.addClass(A)}else{this.cls=this.cls?this.cls+" "+A:A}},removeClass:function(A){if(this.el){this.el.removeClass(A)}else{if(this.cls){this.cls=this.cls.split(" ").remove(A).join(" ")}}},onRender:function(B,A){if(this.autoEl){if(typeof this.autoEl=="string"){this.el=document.createElement(this.autoEl)}else{var C=document.createElement("div");Ext.DomHelper.overwrite(C,this.autoEl);this.el=C.firstChild}if(!this.el.id){this.el.id=this.getId()}}if(this.el){this.el=Ext.get(this.el);if(this.allowDomMove!==false){B.dom.insertBefore(this.el.dom,A)}}},getAutoCreate:function(){var A=typeof this.autoCreate=="object"?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!A.id){A.id=this.id}return A},afterRender:Ext.emptyFn,destroy:function(){if(this.fireEvent("beforedestroy",this)!==false){this.beforeDestroy();if(this.rendered){this.el.removeAllListeners();this.el.remove();if(this.actionMode=="container"){this.container.remove()}}this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);this.purgeListeners()}},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function(){return this.el},getId:function(){return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))},getItemId:function(){return this.itemId||this.getId()},focus:function(B,A){if(A){this.focus.defer(typeof A=="number"?A:10,this,[B,false]);return }if(this.rendered){this.el.focus();if(B===true){this.el.dom.select()}}return this},blur:function(){if(this.rendered){this.el.blur()}return this},disable:function(){if(this.rendered){this.onDisable()}this.disabled=true;this.fireEvent("disable",this);return this},onDisable:function(){this.getActionEl().addClass(this.disabledClass);this.el.dom.disabled=true},enable:function(){if(this.rendered){this.onEnable()}this.disabled=false;this.fireEvent("enable",this);return this},onEnable:function(){this.getActionEl().removeClass(this.disabledClass);this.el.dom.disabled=false},setDisabled:function(A){this[A?"disable":"enable"]()},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.autoRender){this.render(typeof this.autoRender=="boolean"?Ext.getBody():this.autoRender)}if(this.rendered){this.onShow()}this.fireEvent("show",this)}return this},onShow:function(){if(this.hideParent){this.container.removeClass("x-hide-"+this.hideMode)}else{this.getActionEl().removeClass("x-hide-"+this.hideMode)}},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.hidden=true;if(this.rendered){this.onHide()}this.fireEvent("hide",this)}return this},onHide:function(){if(this.hideParent){this.container.addClass("x-hide-"+this.hideMode)}else{this.getActionEl().addClass("x-hide-"+this.hideMode)}},setVisible:function(A){if(A){this.show()}else{this.hide()}return this},isVisible:function(){return this.rendered&&this.getActionEl().isVisible()},cloneConfig:function(B){B=B||{};var C=B.id||Ext.id();var A=Ext.applyIf(B,this.initialConfig);A.id=C;return new this.constructor(A)},getXType:function(){return this.constructor.xtype},isXType:function(B,A){return !A?("/"+this.getXTypes()+"/").indexOf("/"+B+"/")!=-1:this.constructor.xtype==B},getXTypes:function(){var A=this.constructor;if(!A.xtypes){var C=[],B=this;while(B&&B.constructor.xtype){C.unshift(B.constructor.xtype);B=B.constructor.superclass}A.xtypeChain=C;A.xtypes=C.join("/")}return A.xtypes},findParentBy:function(A){for(var B=this.ownerCt;(B!=null)&&!A(B,this);B=B.ownerCt){}return B||null},findParentByType:function(A){return typeof A=="function"?this.findParentBy(function(B){return B.constructor===A}):this.findParentBy(function(B){return B.constructor.xtype===A})}});Ext.reg("component",Ext.Component);
-Ext.Action=function(A){this.initialConfig=A;this.items=[]};Ext.Action.prototype={isAction:true,setText:function(A){this.initialConfig.text=A;this.callEach("setText",[A])},getText:function(){return this.initialConfig.text},setIconClass:function(A){this.initialConfig.iconCls=A;this.callEach("setIconClass",[A])},getIconClass:function(){return this.initialConfig.iconCls},setDisabled:function(A){this.initialConfig.disabled=A;this.callEach("setDisabled",[A])},enable:function(){this.setDisabled(false)},disable:function(){this.setDisabled(true)},isDisabled:function(){return this.initialConfig.disabled},setHidden:function(A){this.initialConfig.hidden=A;this.callEach("setVisible",[!A])},show:function(){this.setHidden(false)},hide:function(){this.setHidden(true)},isHidden:function(){return this.initialConfig.hidden},setHandler:function(B,A){this.initialConfig.handler=B;this.initialConfig.scope=A;this.callEach("setHandler",[B,A])},each:function(B,A){Ext.each(this.items,B,A)},callEach:function(E,B){var D=this.items;for(var C=0,A=D.length;C<A;C++){D[C][E].apply(D[C],B)}},addComponent:function(A){this.items.push(A);A.on("destroy",this.removeComponent,this)},removeComponent:function(A){this.items.remove(A)},execute:function(){this.initialConfig.handler.apply(this.initialConfig.scope||window,arguments)}};
-(function(){Ext.Layer=function(D,C){D=D||{};var E=Ext.DomHelper;var G=D.parentEl,F=G?Ext.getDom(G):document.body;if(C){this.dom=Ext.getDom(C)}if(!this.dom){var H=D.dh||{tag:"div",cls:"x-layer"};this.dom=E.append(F,H)}if(D.cls){this.addClass(D.cls)}this.constrain=D.constrain!==false;this.visibilityMode=Ext.Element.VISIBILITY;if(D.id){this.id=this.dom.id=D.id}else{this.id=Ext.id(this.dom)}this.zindex=D.zindex||this.getZIndex();this.position("absolute",this.zindex);if(D.shadow){this.shadowOffset=D.shadowOffset||4;this.shadow=new Ext.Shadow({offset:this.shadowOffset,mode:D.shadow})}else{this.shadowOffset=0}this.useShim=D.shim!==false&&Ext.useShims;this.useDisplay=D.useDisplay;this.hide()};var A=Ext.Element.prototype;var B=[];Ext.extend(Ext.Layer,Ext.Element,{getZIndex:function(){return this.zindex||parseInt(this.getStyle("z-index"),10)||11000},getShim:function(){if(!this.useShim){return null}if(this.shim){return this.shim}var D=B.shift();if(!D){D=this.createShim();D.enableDisplayMode("block");D.dom.style.display="none";D.dom.style.visibility="visible"}var C=this.dom.parentNode;if(D.dom.parentNode!=C){C.insertBefore(D.dom,this.dom)}D.setStyle("z-index",this.getZIndex()-2);this.shim=D;return D},hideShim:function(){if(this.shim){this.shim.setDisplayed(false);B.push(this.shim);delete this.shim}},disableShadow:function(){if(this.shadow){this.shadowDisabled=true;this.shadow.hide();this.lastShadowOffset=this.shadowOffset;this.shadowOffset=0}},enableShadow:function(C){if(this.shadow){this.shadowDisabled=false;this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset;if(C){this.sync(true)}}},sync:function(C){var I=this.shadow;if(!this.updating&&this.isVisible()&&(I||this.useShim)){var F=this.getShim();var H=this.getWidth(),E=this.getHeight();var D=this.getLeft(true),J=this.getTop(true);if(I&&!this.shadowDisabled){if(C&&!I.isVisible()){I.show(this)}else{I.realign(D,J,H,E)}if(F){if(C){F.show()}var G=I.adjusts,K=F.dom.style;K.left=(Math.min(D,D+G.l))+"px";K.top=(Math.min(J,J+G.t))+"px";K.width=(H+G.w)+"px";K.height=(E+G.h)+"px"}}else{if(F){if(C){F.show()}F.setSize(H,E);F.setLeftTop(D,J)}}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide()}this.removeAllListeners();Ext.removeNode(this.dom);Ext.Element.uncache(this.id)},remove:function(){this.destroy()},beginUpdate:function(){this.updating=true},endUpdate:function(){this.updating=false;this.sync(true)},hideUnders:function(C){if(this.shadow){this.shadow.hide()}this.hideShim()},constrainXY:function(){if(this.constrain){var G=Ext.lib.Dom.getViewWidth(),C=Ext.lib.Dom.getViewHeight();var L=Ext.getDoc().getScroll();var K=this.getXY();var H=K[0],F=K[1];var I=this.dom.offsetWidth+this.shadowOffset,D=this.dom.offsetHeight+this.shadowOffset;var E=false;if((H+I)>G+L.left){H=G-I-this.shadowOffset;E=true}if((F+D)>C+L.top){F=C-D-this.shadowOffset;E=true}if(H<L.left){H=L.left;E=true}if(F<L.top){F=L.top;E=true}if(E){if(this.avoidY){var J=this.avoidY;if(F<=J&&(F+D)>=J){F=J-D-5}}K=[H,F];this.storeXY(K);A.setXY.call(this,K);this.sync()}}},isVisible:function(){return this.visible},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("")}else{if(this.lastXY){A.setXY.call(this,this.lastXY)}else{if(this.lastLT){A.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])}}}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false)}else{this.setLeftTop(-10000,-10000)}},setVisible:function(E,D,G,H,F){if(E){this.showAction()}if(D&&E){var C=function(){this.sync(true);if(H){H()}}.createDelegate(this);A.setVisible.call(this,true,true,G,C,F)}else{if(!E){this.hideUnders(true)}var C=H;if(D){C=function(){this.hideAction();if(H){H()}}.createDelegate(this)}A.setVisible.call(this,E,D,G,C,F);if(E){this.sync(true)}else{if(!D){this.hideAction()}}}},storeXY:function(C){delete this.lastLT;this.lastXY=C},storeLeftTop:function(D,C){delete this.lastXY;this.lastLT=[D,C]},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments)},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible())},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide()}},setLeft:function(C){this.storeLeftTop(C,this.getTop(true));A.setLeft.apply(this,arguments);this.sync()},setTop:function(C){this.storeLeftTop(this.getLeft(true),C);A.setTop.apply(this,arguments);this.sync()},setLeftTop:function(D,C){this.storeLeftTop(D,C);A.setLeftTop.apply(this,arguments);this.sync()},setXY:function(F,D,G,H,E){this.fixDisplay();this.beforeAction();this.storeXY(F);var C=this.createCB(H);A.setXY.call(this,F,D,G,C,E);if(!D){C()}},createCB:function(D){var C=this;return function(){C.constrainXY();C.sync(true);if(D){D()}}},setX:function(C,D,F,G,E){this.setXY([C,this.getY()],D,F,G,E)},setY:function(G,C,E,F,D){this.setXY([this.getX(),G],C,E,F,D)},setSize:function(E,F,D,H,I,G){this.beforeAction();var C=this.createCB(I);A.setSize.call(this,E,F,D,H,C,G);if(!D){C()}},setWidth:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setWidth.call(this,E,D,G,C,F);if(!D){C()}},setHeight:function(E,D,G,H,F){this.beforeAction();var C=this.createCB(H);A.setHeight.call(this,E,D,G,C,F);if(!D){C()}},setBounds:function(J,H,K,D,I,F,G,E){this.beforeAction();var C=this.createCB(G);if(!I){this.storeXY([J,H]);A.setXY.call(this,[J,H]);A.setSize.call(this,K,D,I,F,C,E);C()}else{A.setBounds.call(this,J,H,K,D,I,F,C,E)}return this},setZIndex:function(C){this.zindex=C;this.setStyle("z-index",C+2);if(this.shadow){this.shadow.setZIndex(C+1)}if(this.shim){this.shim.setStyle("z-index",C)}}})})();
-Ext.Shadow=function(C){Ext.apply(this,C);if(typeof this.mode!="string"){this.mode=this.defaultMode}var D=this.offset,B={h:0};var A=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":B.w=0;B.l=B.t=D;B.t-=1;if(Ext.isIE){B.l-=this.offset+A;B.t-=this.offset+A;B.w-=A;B.h-=A;B.t+=1}break;case"sides":B.w=(D*2);B.l=-D;B.t=D-1;if(Ext.isIE){B.l-=(this.offset-A);B.t-=this.offset+A;B.l+=1;B.w-=(this.offset-A)*2;B.w-=A+1;B.h-=1}break;case"frame":B.w=B.h=(D*2);B.l=B.t=-D;B.t+=1;B.h-=2;if(Ext.isIE){B.l-=(this.offset-A);B.t-=(this.offset-A);B.l+=1;B.w-=(this.offset+A+1);B.h-=(this.offset+A);B.h+=1}break}this.adjusts=B};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(A){A=Ext.get(A);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=A.dom){this.el.insertBefore(A)}}this.el.setStyle("z-index",this.zIndex||parseInt(A.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"}this.realign(A.getLeft(true),A.getTop(true),A.getWidth(),A.getHeight());this.el.dom.style.display="block"},isVisible:function(){return this.el?true:false},realign:function(A,M,L,D){if(!this.el){return }var I=this.adjusts,G=this.el.dom,N=G.style;var E=0;N.left=(A+I.l)+"px";N.top=(M+I.t)+"px";var K=(L+I.w),C=(D+I.h),F=K+"px",J=C+"px";if(N.width!=F||N.height!=J){N.width=F;N.height=J;if(!Ext.isIE){var H=G.childNodes;var B=Math.max(0,(K-12))+"px";H[0].childNodes[1].style.width=B;H[1].childNodes[1].style.width=B;H[2].childNodes[1].style.width=B;H[1].style.height=Math.max(0,(C-12))+"px"}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el}},setZIndex:function(A){this.zIndex=A;if(this.el){this.el.setStyle("z-index",A)}}};Ext.Shadow.Pool=function(){var B=[];var A=Ext.isIE?"<div class=\"x-ie-shadow\"></div>":"<div class=\"x-shadow\"><div class=\"xst\"><div class=\"xstl\"></div><div class=\"xstc\"></div><div class=\"xstr\"></div></div><div class=\"xsc\"><div class=\"xsml\"></div><div class=\"xsmc\"></div><div class=\"xsmr\"></div></div><div class=\"xsb\"><div class=\"xsbl\"></div><div class=\"xsbc\"></div><div class=\"xsbr\"></div></div></div>";return{pull:function(){var C=B.shift();if(!C){C=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,A));C.autoBoxAdjust=false}return C},push:function(C){B.push(C)}}}();
-Ext.BoxComponent=Ext.extend(Ext.Component,{initComponent:function(){Ext.BoxComponent.superclass.initComponent.call(this);this.addEvents("resize","move")},boxReady:false,deferHeight:false,setSize:function(B,D){if(typeof B=="object"){D=B.height;B=B.width}if(!this.boxReady){this.width=B;this.height=D;return this}if(this.lastSize&&this.lastSize.width==B&&this.lastSize.height==D){return this}this.lastSize={width:B,height:D};var C=this.adjustSize(B,D);var F=C.width,A=C.height;if(F!==undefined||A!==undefined){var E=this.getResizeEl();if(!this.deferHeight&&F!==undefined&&A!==undefined){E.setSize(F,A)}else{if(!this.deferHeight&&A!==undefined){E.setHeight(A)}else{if(F!==undefined){E.setWidth(F)}}}this.onResize(F,A,B,D);this.fireEvent("resize",this,F,A,B,D)}return this},setWidth:function(A){return this.setSize(A)},setHeight:function(A){return this.setSize(undefined,A)},getSize:function(){return this.el.getSize()},getPosition:function(A){if(A===true){return[this.el.getLeft(true),this.el.getTop(true)]}return this.xy||this.el.getXY()},getBox:function(A){var B=this.el.getSize();if(A===true){B.x=this.el.getLeft(true);B.y=this.el.getTop(true)}else{var C=this.xy||this.el.getXY();B.x=C[0];B.y=C[1]}return B},updateBox:function(A){this.setSize(A.width,A.height);this.setPagePosition(A.x,A.y);return this},getResizeEl:function(){return this.resizeEl||this.el},getPositionEl:function(){return this.positionEl||this.el},setPosition:function(A,F){if(A&&typeof A[1]=="number"){F=A[1];A=A[0]}this.x=A;this.y=F;if(!this.boxReady){return this}var B=this.adjustPosition(A,F);var E=B.x,D=B.y;var C=this.getPositionEl();if(E!==undefined||D!==undefined){if(E!==undefined&&D!==undefined){C.setLeftTop(E,D)}else{if(E!==undefined){C.setLeft(E)}else{if(D!==undefined){C.setTop(D)}}}this.onPosition(E,D);this.fireEvent("move",this,E,D)}return this},setPagePosition:function(A,C){if(A&&typeof A[1]=="number"){C=A[1];A=A[0]}this.pageX=A;this.pageY=C;if(!this.boxReady){return }if(A===undefined||C===undefined){return }var B=this.el.translatePoints(A,C);this.setPosition(B.left,B.top);return this},onRender:function(B,A){Ext.BoxComponent.superclass.onRender.call(this,B,A);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl)}if(this.positionEl){this.positionEl=Ext.get(this.positionEl)}},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);this.boxReady=true;this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y)}else{if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY)}}},syncSize:function(){delete this.lastSize;this.setSize(this.autoWidth?undefined:this.el.getWidth(),this.autoHeight?undefined:this.el.getHeight());return this},onResize:function(D,B,A,C){},onPosition:function(A,B){},adjustSize:function(A,B){if(this.autoWidth){A="auto"}if(this.autoHeight){B="auto"}return{width:A,height:B}},adjustPosition:function(A,B){return{x:A,y:B}}});Ext.reg("box",Ext.BoxComponent);
-Ext.SplitBar=function(C,E,B,D,A){this.el=Ext.get(C,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(E,true);this.orientation=B||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!A){this.proxy=Ext.SplitBar.createProxy(this.orientation)}else{this.proxy=Ext.get(A).dom}this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=D||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h")}else{this.placement=D||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v")}this.addEvents("resize","moved","beforeresize","beforeapply");Ext.SplitBar.superclass.constructor.call(this)};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(A,E){this.fireEvent("beforeresize",this);this.overlay=Ext.DomHelper.append(document.body,{cls:"x-drag-overlay",html:"&#160;"},true);this.overlay.unselectable();this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var C=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();this.activeMaxSize=this.getMaximumSize();var D=C-this.activeMinSize;var B=Math.max(this.activeMaxSize-C,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?D:B,this.placement==Ext.SplitBar.LEFT?B:D);this.dd.setYConstraint(0,0)}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?D:B,this.placement==Ext.SplitBar.TOP?B:D)}this.dragSpecs.startSize=C;this.dragSpecs.startPoint=[A,E];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,A,E)},onEndProxyDrag:function(C){Ext.get(this.proxy).setDisplayed(false);var B=Ext.lib.Event.getXY(C);if(this.overlay){this.overlay.remove();delete this.overlay}var A;if(this.orientation==Ext.SplitBar.HORIZONTAL){A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?B[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-B[0])}else{A=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?B[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-B[1])}A=Math.min(Math.max(A,this.activeMinSize),this.activeMaxSize);if(A!=this.dragSpecs.startSize){if(this.fireEvent("beforeapply",this,A)!==false){this.adapter.setElementSize(this,A);this.fireEvent("moved",this,A);this.fireEvent("resize",this,A)}}},getAdapter:function(){return this.adapter},setAdapter:function(A){this.adapter=A;this.adapter.init(this)},getMinimumSize:function(){return this.minSize},setMinimumSize:function(A){this.minSize=A},getMaximumSize:function(){return this.maxSize},setMaximumSize:function(A){this.maxSize=A},setCurrentSize:function(B){var A=this.animate;this.animate=false;this.adapter.setElementSize(this,B);this.animate=A},destroy:function(A){if(this.shim){this.shim.remove()}this.dd.unreg();Ext.removeNode(this.proxy);if(A){this.el.remove()}}});Ext.SplitBar.createProxy=function(B){var C=new Ext.Element(document.createElement("div"));C.unselectable();var A="x-splitbar-proxy";C.addClass(A+" "+(B==Ext.SplitBar.HORIZONTAL?A+"-h":A+"-v"));document.body.appendChild(C.dom);return C.dom};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(A){},getElementSize:function(A){if(A.orientation==Ext.SplitBar.HORIZONTAL){return A.resizingEl.getWidth()}else{return A.resizingEl.getHeight()}},setElementSize:function(B,A,C){if(B.orientation==Ext.SplitBar.HORIZONTAL){if(!B.animate){B.resizingEl.setWidth(A);if(C){C(B,A)}}else{B.resizingEl.setWidth(A,true,0.1,C,"easeOut")}}else{if(!B.animate){B.resizingEl.setHeight(A);if(C){C(B,A)}}else{B.resizingEl.setHeight(A,true,0.1,C,"easeOut")}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(A){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(A)};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(A){this.basic.init(A)},getElementSize:function(A){return this.basic.getElementSize(A)},setElementSize:function(B,A,C){this.basic.setElementSize(B,A,this.moveSplitter.createDelegate(this,[B]))},moveSplitter:function(A){var B=Ext.SplitBar;switch(A.placement){case B.LEFT:A.el.setX(A.resizingEl.getRight());break;case B.RIGHT:A.el.setStyle("right",(this.container.getWidth()-A.resizingEl.getLeft())+"px");break;case B.TOP:A.el.setY(A.resizingEl.getBottom());break;case B.BOTTOM:A.el.setY(A.resizingEl.getTop()-A.el.getHeight());break}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4;
-Ext.Container=Ext.extend(Ext.BoxComponent,{autoDestroy:true,defaultType:"panel",initComponent:function(){Ext.Container.superclass.initComponent.call(this);this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");var A=this.items;if(A){delete this.items;if(Ext.isArray(A)){this.add.apply(this,A)}else{this.add(A)}}},initItems:function(){if(!this.items){this.items=new Ext.util.MixedCollection(false,this.getComponentId);this.getLayout()}},setLayout:function(A){if(this.layout&&this.layout!=A){this.layout.setContainer(null)}this.initItems();this.layout=A;A.setContainer(this)},render:function(){Ext.Container.superclass.render.apply(this,arguments);if(this.layout){if(typeof this.layout=="string"){this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)}this.setLayout(this.layout);if(this.activeItem!==undefined){var A=this.activeItem;delete this.activeItem;this.layout.setActiveItem(A);return }}if(!this.ownerCt){this.doLayout()}if(this.monitorResize===true){Ext.EventManager.onWindowResize(this.doLayout,this,[false])}},getLayoutTarget:function(){return this.el},getComponentId:function(A){return A.itemId||A.id},add:function(C){if(!this.items){this.initItems()}var B=arguments,A=B.length;if(A>1){for(var D=0;D<A;D++){this.add(B[D])}return }var F=this.lookupComponent(this.applyDefaults(C));var E=this.items.length;if(this.fireEvent("beforeadd",this,F,E)!==false&&this.onBeforeAdd(F)!==false){this.items.add(F);F.ownerCt=this;this.fireEvent("add",this,F,E)}return F},insert:function(D,C){if(!this.items){this.initItems()}var B=arguments,A=B.length;if(A>2){for(var E=A-1;E>=1;--E){this.insert(D,B[E])}return }var F=this.lookupComponent(this.applyDefaults(C));if(F.ownerCt==this&&this.items.indexOf(F)<D){--D}if(this.fireEvent("beforeadd",this,F,D)!==false&&this.onBeforeAdd(F)!==false){this.items.insert(D,F);F.ownerCt=this;this.fireEvent("add",this,F,D)}return F},applyDefaults:function(A){if(this.defaults){if(typeof A=="string"){A=Ext.ComponentMgr.get(A);Ext.apply(A,this.defaults)}else{if(!A.events){Ext.applyIf(A,this.defaults)}else{Ext.apply(A,this.defaults)}}}return A},onBeforeAdd:function(A){if(A.ownerCt){A.ownerCt.remove(A,false)}if(this.hideBorders===true){A.border=(A.border===true)}},remove:function(A,B){var C=this.getComponent(A);if(C&&this.fireEvent("beforeremove",this,C)!==false){this.items.remove(C);delete C.ownerCt;if(B===true||(B!==false&&this.autoDestroy)){C.destroy()}if(this.layout&&this.layout.activeItem==C){delete this.layout.activeItem}this.fireEvent("remove",this,C)}return C},getComponent:function(A){if(typeof A=="object"){return A}return this.items.get(A)},lookupComponent:function(A){if(typeof A=="string"){return Ext.ComponentMgr.get(A)}else{if(!A.events){return this.createComponent(A)}}return A},createComponent:function(A){return Ext.ComponentMgr.create(A,this.defaultType)},doLayout:function(D){if(this.rendered&&this.layout){this.layout.layout()}if(D!==false&&this.items){var C=this.items.items;for(var B=0,A=C.length;B<A;B++){var E=C[B];if(E.doLayout){E.doLayout()}}}},getLayout:function(){if(!this.layout){var A=new Ext.layout.ContainerLayout(this.layoutConfig);this.setLayout(A)}return this.layout},onDestroy:function(){if(this.items){var C=this.items.items;for(var B=0,A=C.length;B<A;B++){Ext.destroy(C[B])}}if(this.monitorResize){Ext.EventManager.removeResizeListener(this.doLayout,this)}Ext.Container.superclass.onDestroy.call(this)},bubble:function(C,B,A){var D=this;while(D){if(C.apply(B||D,A||[D])===false){break}D=D.ownerCt}},cascade:function(F,E,B){if(F.apply(E||this,B||[this])!==false){if(this.items){var D=this.items.items;for(var C=0,A=D.length;C<A;C++){if(D[C].cascade){D[C].cascade(F,E,B)}else{F.apply(E||this,B||[D[C]])}}}}},findById:function(C){var A,B=this;this.cascade(function(D){if(B!=D&&D.id===C){A=D;return false}});return A||null},findByType:function(A){return typeof A=="function"?this.findBy(function(B){return B.constructor===A}):this.findBy(function(B){return B.constructor.xtype===A})},find:function(B,A){return this.findBy(function(C){return C[B]===A})},findBy:function(D,C){var A=[],B=this;this.cascade(function(E){if(B!=E&&D.call(C||E,E,B)===true){A.push(E)}});return A}});Ext.Container.LAYOUTS={};Ext.reg("container",Ext.Container);
-Ext.layout.ContainerLayout=function(A){Ext.apply(this,A)};Ext.layout.ContainerLayout.prototype={monitorResize:false,activeItem:null,layout:function(){var A=this.container.getLayoutTarget();this.onLayout(this.container,A);this.container.fireEvent("afterlayout",this.container,this)},onLayout:function(A,B){this.renderAll(A,B)},isValidParent:function(C,B){var A=C.getPositionEl?C.getPositionEl():C.getEl();return A.dom.parentNode==B.dom},renderAll:function(D,E){var B=D.items.items;for(var C=0,A=B.length;C<A;C++){var F=B[C];if(F&&(!F.rendered||!this.isValidParent(F,E))){this.renderItem(F,C,E)}}},renderItem:function(D,A,C){if(D&&!D.rendered){D.render(C,A);if(this.extraCls){var B=D.getPositionEl?D.getPositionEl():D;B.addClass(this.extraCls)}if(this.renderHidden&&D!=this.activeItem){D.hide()}}else{if(D&&!this.isValidParent(D,C)){if(this.extraCls){D.addClass(this.extraCls)}if(typeof A=="number"){A=C.dom.childNodes[A]}C.dom.insertBefore(D.getEl().dom,A||null);if(this.renderHidden&&D!=this.activeItem){D.hide()}}}},onResize:function(){if(this.container.collapsed){return }var A=this.container.bufferResize;if(A){if(!this.resizeTask){this.resizeTask=new Ext.util.DelayedTask(this.layout,this);this.resizeBuffer=typeof A=="number"?A:100}this.resizeTask.delay(this.resizeBuffer)}else{this.layout()}},setContainer:function(A){if(this.monitorResize&&A!=this.container){if(this.container){this.container.un("resize",this.onResize,this)}if(A){A.on("resize",this.onResize,this)}}this.container=A},parseMargins:function(B){var C=B.split(" ");var A=C.length;if(A==1){C[1]=C[0];C[2]=C[0];C[3]=C[0]}if(A==2){C[2]=C[0];C[3]=C[1]}return{top:parseInt(C[0],10)||0,right:parseInt(C[1],10)||0,bottom:parseInt(C[2],10)||0,left:parseInt(C[3],10)||0}}};Ext.Container.LAYOUTS["auto"]=Ext.layout.ContainerLayout;
-Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,onLayout:function(A,B){Ext.layout.FitLayout.superclass.onLayout.call(this,A,B);if(!this.container.collapsed){this.setItemSize(this.activeItem||A.items.itemAt(0),B.getStyleSize())}},setItemSize:function(B,A){if(B&&A.height>0){B.setSize(A)}}});Ext.Container.LAYOUTS["fit"]=Ext.layout.FitLayout;
-Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{deferredRender:false,renderHidden:true,setActiveItem:function(A){A=this.container.getComponent(A);if(this.activeItem!=A){if(this.activeItem){this.activeItem.hide()}this.activeItem=A;A.show();this.layout()}},renderAll:function(A,B){if(this.deferredRender){this.renderItem(this.activeItem,undefined,B)}else{Ext.layout.CardLayout.superclass.renderAll.call(this,A,B)}}});Ext.Container.LAYOUTS["card"]=Ext.layout.CardLayout;
-Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,getAnchorViewSize:function(A,B){return B.dom==document.body?B.getViewSize():B.getStyleSize()},onLayout:function(F,I){Ext.layout.AnchorLayout.superclass.onLayout.call(this,F,I);var O=this.getAnchorViewSize(F,I);var M=O.width,E=O.height;if(M<20||E<20){return }var B,K;if(F.anchorSize){if(typeof F.anchorSize=="number"){B=F.anchorSize}else{B=F.anchorSize.width;K=F.anchorSize.height}}else{B=F.initialConfig.width;K=F.initialConfig.height}var H=F.items.items,G=H.length,D,J,L,C,A;for(D=0;D<G;D++){J=H[D];if(J.anchor){L=J.anchorSpec;if(!L){var N=J.anchor.split(" ");J.anchorSpec=L={right:this.parseAnchor(N[0],J.initialConfig.width,B),bottom:this.parseAnchor(N[1],J.initialConfig.height,K)}}C=L.right?this.adjustWidthAnchor(L.right(M),J):undefined;A=L.bottom?this.adjustHeightAnchor(L.bottom(E),J):undefined;if(C||A){J.setSize(C||undefined,A||undefined)}}}},parseAnchor:function(B,F,A){if(B&&B!="none"){var D;if(/^(r|right|b|bottom)$/i.test(B)){var E=A-F;return function(G){if(G!==D){D=G;return G-E}}}else{if(B.indexOf("%")!=-1){var C=parseFloat(B.replace("%",""))*0.01;return function(G){if(G!==D){D=G;return Math.floor(G*C)}}}else{B=parseInt(B,10);if(!isNaN(B)){return function(G){if(G!==D){D=G;return G+B}}}}}}return false},adjustWidthAnchor:function(B,A){return B},adjustHeightAnchor:function(B,A){return B}});Ext.Container.LAYOUTS["anchor"]=Ext.layout.AnchorLayout;
-Ext.layout.ColumnLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,extraCls:"x-column",scrollOffset:0,isValidParent:function(B,A){return B.getEl().dom.parentNode==this.innerCt.dom},onLayout:function(C,F){var D=C.items.items,E=D.length,G,A;if(!this.innerCt){F.addClass("x-column-layout-ct");this.innerCt=F.createChild({cls:"x-column-inner"});this.innerCt.createChild({cls:"x-clear"})}this.renderAll(C,this.innerCt);var J=F.getViewSize();if(J.width<1&&J.height<1){return }var H=J.width-F.getPadding("lr")-this.scrollOffset,B=J.height-F.getPadding("tb"),I=H;this.innerCt.setWidth(H);for(A=0;A<E;A++){G=D[A];if(!G.columnWidth){I-=(G.getSize().width+G.getEl().getMargins("lr"))}}I=I<0?0:I;for(A=0;A<E;A++){G=D[A];if(G.columnWidth){G.setSize(Math.floor(G.columnWidth*I)-G.getEl().getMargins("lr"))}}}});Ext.Container.LAYOUTS["column"]=Ext.layout.ColumnLayout;
-Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:true,rendered:false,onLayout:function(B,X){var C;if(!this.rendered){X.position();X.addClass("x-border-layout-ct");var M=B.items.items;C=[];for(var Q=0,R=M.length;Q<R;Q++){var U=M[Q];var F=U.region;if(U.collapsed){C.push(U)}U.collapsed=false;if(!U.rendered){U.cls=U.cls?U.cls+" x-border-panel":"x-border-panel";U.render(X,Q)}this[F]=F!="center"&&U.split?new Ext.layout.BorderLayout.SplitRegion(this,U.initialConfig,F):new Ext.layout.BorderLayout.Region(this,U.initialConfig,F);this[F].render(X,U)}this.rendered=true}var L=X.getViewSize();if(L.width<20||L.height<20){if(C){this.restoreCollapsed=C}return }else{if(this.restoreCollapsed){C=this.restoreCollapsed;delete this.restoreCollapsed}}var J=L.width,S=L.height;var I=J,P=S,G=0,H=0;var N=this.north,K=this.south,E=this.west,T=this.east,U=this.center;if(!U){throw"No center region defined in BorderLayout "+B.id}if(N&&N.isVisible()){var W=N.getSize();var O=N.getMargins();W.width=J-(O.left+O.right);W.x=O.left;W.y=O.top;G=W.height+W.y+O.bottom;P-=G;N.applyLayout(W)}if(K&&K.isVisible()){var W=K.getSize();var O=K.getMargins();W.width=J-(O.left+O.right);W.x=O.left;var V=(W.height+O.top+O.bottom);W.y=S-V+O.top;P-=V;K.applyLayout(W)}if(E&&E.isVisible()){var W=E.getSize();var O=E.getMargins();W.height=P-(O.top+O.bottom);W.x=O.left;W.y=G+O.top;var A=(W.width+O.left+O.right);H+=A;I-=A;E.applyLayout(W)}if(T&&T.isVisible()){var W=T.getSize();var O=T.getMargins();W.height=P-(O.top+O.bottom);var A=(W.width+O.left+O.right);W.x=J-A+O.left;W.y=G+O.top;I-=A;T.applyLayout(W)}var O=U.getMargins();var D={x:H+O.left,y:G+O.top,width:I-(O.left+O.right),height:P-(O.top+O.bottom)};U.applyLayout(D);if(C){for(var Q=0,R=C.length;Q<R;Q++){C[Q].collapse(false)}}if(Ext.isIE&&Ext.isStrict){X.repaint()}}});Ext.layout.BorderLayout.Region=function(B,A,C){Ext.apply(this,A);this.layout=B;this.position=C;this.state={};if(typeof this.margins=="string"){this.margins=this.layout.parseMargins(this.margins)}this.margins=Ext.applyIf(this.margins||{},this.defaultMargins);if(this.collapsible){if(typeof this.cmargins=="string"){this.cmargins=this.layout.parseMargins(this.cmargins)}if(this.collapseMode=="mini"&&!this.cmargins){this.cmargins={left:0,top:0,right:0,bottom:0}}else{this.cmargins=Ext.applyIf(this.cmargins||{},C=="north"||C=="south"?this.defaultNSCMargins:this.defaultEWCMargins)}}};Ext.layout.BorderLayout.Region.prototype={collapsible:false,split:false,floatable:true,minWidth:50,minHeight:50,defaultMargins:{left:0,top:0,right:0,bottom:0},defaultNSCMargins:{left:5,top:5,right:5,bottom:5},defaultEWCMargins:{left:5,top:0,right:5,bottom:0},isCollapsed:false,render:function(B,C){this.panel=C;C.el.enableDisplayMode();this.targetEl=B;this.el=C.el;var A=C.getState,D=this.position;C.getState=function(){return Ext.apply(A.call(C)||{},this.state)}.createDelegate(this);if(D!="center"){C.allowQueuedExpand=false;C.on({beforecollapse:this.beforeCollapse,collapse:this.onCollapse,beforeexpand:this.beforeExpand,expand:this.onExpand,hide:this.onHide,show:this.onShow,scope:this});if(this.collapsible){C.collapseEl="el";C.slideAnchor=this.getSlideAnchor()}if(C.tools&&C.tools.toggle){C.tools.toggle.addClass("x-tool-collapse-"+D);C.tools.toggle.addClassOnOver("x-tool-collapse-"+D+"-over")}}},getCollapsedEl:function(){if(!this.collapsedEl){if(!this.toolTemplate){var B=new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");B.disableFormats=true;B.compile();Ext.layout.BorderLayout.Region.prototype.toolTemplate=B}this.collapsedEl=this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"+this.position,id:this.panel.id+"-xcollapsed"});this.collapsedEl.enableDisplayMode("block");if(this.collapseMode=="mini"){this.collapsedEl.addClass("x-layout-cmini-"+this.position);this.miniCollapsedEl=this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"+this.position,html:"&#160;"});this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.onExpandClick,this,{stopEvent:true})}else{var A=this.toolTemplate.append(this.collapsedEl.dom,{id:"expand-"+this.position},true);A.addClassOnOver("x-tool-expand-"+this.position+"-over");A.on("click",this.onExpandClick,this,{stopEvent:true});if(this.floatable!==false){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.collapseClick,this)}}}return this.collapsedEl},onExpandClick:function(A){if(this.isSlid){this.afterSlideIn();this.panel.expand(false)}else{this.panel.expand()}},onCollapseClick:function(A){this.panel.collapse()},beforeCollapse:function(B,A){this.lastAnim=A;if(this.splitEl){this.splitEl.hide()}this.getCollapsedEl().show();this.panel.el.setStyle("z-index",100);this.isCollapsed=true;this.layout.layout()},onCollapse:function(A){this.panel.el.setStyle("z-index",1);if(this.lastAnim===false||this.panel.animCollapse===false){this.getCollapsedEl().dom.style.visibility="visible"}else{this.getCollapsedEl().slideIn(this.panel.slideAnchor,{duration:0.2})}this.state.collapsed=true;this.panel.saveState()},beforeExpand:function(A){var B=this.getCollapsedEl();this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,B.getHeight())}else{this.panel.setSize(B.getWidth(),undefined)}B.hide();B.dom.style.visibility="hidden";this.panel.el.setStyle("z-index",100)},onExpand:function(){this.isCollapsed=false;if(this.splitEl){this.splitEl.show()}this.layout.layout();this.panel.el.setStyle("z-index",1);this.state.collapsed=false;this.panel.saveState()},collapseClick:function(A){if(this.isSlid){A.stopPropagation();this.slideIn()}else{A.stopPropagation();this.slideOut()}},onHide:function(){if(this.isCollapsed){this.getCollapsedEl().hide()}else{if(this.splitEl){this.splitEl.hide()}}},onShow:function(){if(this.isCollapsed){this.getCollapsedEl().show()}else{if(this.splitEl){this.splitEl.show()}}},isVisible:function(){return !this.panel.hidden},getMargins:function(){return this.isCollapsed&&this.cmargins?this.cmargins:this.margins},getSize:function(){return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()},setPanel:function(A){this.panel=A},getMinWidth:function(){return this.minWidth},getMinHeight:function(){return this.minHeight},applyLayoutCollapsed:function(A){var B=this.getCollapsedEl();B.setLeftTop(A.x,A.y);B.setSize(A.width,A.height)},applyLayout:function(A){if(this.isCollapsed){this.applyLayoutCollapsed(A)}else{this.panel.setPosition(A.x,A.y);this.panel.setSize(A.width,A.height)}},beforeSlide:function(){this.panel.beforeEffect()},afterSlide:function(){this.panel.afterEffect()},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){var A=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={"mouseout":function(B){if(!B.within(this.el,true)){A.delay(500)}},"mouseover":function(B){A.cancel()},scope:this}}this.el.on(this.autoHideHd)}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover)}},clearMonitor:function(){Ext.getDoc().un("click",this.slideInIf,this)},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return }this.isSlid=true;var A=this.panel.tools;if(A&&A.toggle){A.toggle.hide()}this.el.show();if(this.position=="east"||this.position=="west"){this.panel.setSize(undefined,this.collapsedEl.getHeight())}else{this.panel.setSize(this.collapsedEl.getWidth(),undefined)}this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.el.setStyle("z-index",102);if(this.animFloat!==false){this.beforeSlide();this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)},scope:this,block:true})}else{this.initAutoHide();Ext.getDoc().on("click",this.slideInIf,this)}},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");this.el.dom.style.left=this.restoreLT[0];this.el.dom.style.top=this.restoreLT[1];var A=this.panel.tools;if(A&&A.toggle){A.toggle.show()}},slideIn:function(A){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(A);return }this.isSlid=false;if(this.animFloat!==false){this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.hide();this.afterSlide();this.afterSlideIn();Ext.callback(A)},scope:this,block:true})}else{this.el.hide();this.afterSlideIn()}},slideInIf:function(A){if(!A.within(this.el)){this.slideIn()}},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function(){return this.anchors[this.position]},getCollapseAnchor:function(){return this.canchors[this.position]},getSlideAnchor:function(){return this.sanchors[this.position]},getAlignAdj:function(){var A=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}},getExpandAdj:function(){var B=this.collapsedEl,A=this.cmargins;switch(this.position){case"west":return[-(A.right+B.getWidth()+A.left),0];break;case"east":return[A.right+B.getWidth()+A.left,0];break;case"north":return[0,-(A.top+A.bottom+B.getHeight())];break;case"south":return[0,A.top+A.bottom+B.getHeight()];break}}};Ext.layout.BorderLayout.SplitRegion=function(B,A,C){Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,B,A,C);this.applyLayout=this.applyFns[C]};Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;this.panel.setPosition(C.x,C.y);var A=D.offsetWidth;B.left=(C.x+C.width-A)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},east:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetWidth;this.panel.setPosition(C.x+A,C.y);B.left=(C.x)+"px";B.top=(C.y)+"px";B.height=Math.max(0,C.height)+"px";this.panel.setSize(C.width-A,C.height)},north:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y);B.left=(C.x)+"px";B.top=(C.y+C.height-A)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)},south:function(C){if(this.isCollapsed){return this.applyLayoutCollapsed(C)}var D=this.splitEl.dom,B=D.style;var A=D.offsetHeight;this.panel.setPosition(C.x,C.y+A);B.left=(C.x)+"px";B.top=(C.y)+"px";B.width=Math.max(0,C.width)+"px";this.panel.setSize(C.width,C.height-A)}},render:function(A,C){Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,A,C);var D=this.position;this.splitEl=A.createChild({cls:"x-layout-split x-layout-split-"+D,html:"&#160;",id:this.panel.id+"-xsplit"});if(this.collapseMode=="mini"){this.miniSplitEl=this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"+D,html:"&#160;"});this.miniSplitEl.addClassOnOver("x-layout-mini-over");this.miniSplitEl.on("click",this.onCollapseClick,this,{stopEvent:true})}var B=this.splitSettings[D];this.split=new Ext.SplitBar(this.splitEl.dom,C.el,B.orientation);this.split.placement=B.placement;this.split.getMaximumSize=this[B.maxFn].createDelegate(this);this.split.minSize=this.minSize||this[B.minProp];this.split.on("beforeapply",this.onSplitMove,this);this.split.useShim=this.useShim===true;this.maxSize=this.maxSize||this[B.maxProp];if(C.hidden){this.splitEl.hide()}if(this.useSplitTips){this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip}if(this.collapsible){this.splitEl.on("dblclick",this.onCollapseClick,this)}},getSize:function(){if(this.isCollapsed){return this.collapsedEl.getSize()}var A=this.panel.getSize();if(this.position=="north"||this.position=="south"){A.height+=this.splitEl.dom.offsetHeight}else{A.width+=this.splitEl.dom.offsetWidth}return A},getHMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getWidth()+A.el.getWidth())-A.getMinWidth())},getVMaxSize:function(){var B=this.maxSize||10000;var A=this.layout.center;return Math.min(B,(this.el.getHeight()+A.el.getHeight())-A.getMinHeight())},onSplitMove:function(B,A){var C=this.panel.getSize();this.lastSplitSize=A;if(this.position=="north"||this.position=="south"){this.panel.setSize(C.width,A);this.state.height=A}else{this.panel.setSize(A,C.height);this.state.width=A}this.layout.layout();this.panel.saveState();return false},getSplitBar:function(){return this.split}});Ext.Container.LAYOUTS["border"]=Ext.layout.BorderLayout;
-Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{labelSeparator:":",getAnchorViewSize:function(A,B){return A.body.getStyleSize()},setContainer:function(B){Ext.layout.FormLayout.superclass.setContainer.call(this,B);if(B.labelAlign){B.addClass("x-form-label-"+B.labelAlign)}if(B.hideLabels){this.labelStyle="display:none";this.elementStyle="padding-left:0;";this.labelAdjust=0}else{this.labelSeparator=B.labelSeparator||this.labelSeparator;B.labelWidth=B.labelWidth||100;if(typeof B.labelWidth=="number"){var C=(typeof B.labelPad=="number"?B.labelPad:5);this.labelAdjust=B.labelWidth+C;this.labelStyle="width:"+B.labelWidth+"px;";this.elementStyle="padding-left:"+(B.labelWidth+C)+"px"}if(B.labelAlign=="top"){this.labelStyle="width:auto;";this.labelAdjust=0;this.elementStyle="padding-left:0;"}}if(!this.fieldTpl){var A=new Ext.Template("<div class=\"x-form-item {5}\" tabIndex=\"-1\">","<label for=\"{0}\" style=\"{2}\" class=\"x-form-item-label\">{1}{4}</label>","<div class=\"x-form-element\" id=\"x-form-el-{0}\" style=\"{3}\">","</div><div class=\"{6}\"></div>","</div>");A.disableFormats=true;A.compile();Ext.layout.FormLayout.prototype.fieldTpl=A}},renderItem:function(D,A,C){if(D&&!D.rendered&&D.isFormField&&D.inputType!="hidden"){var B=[D.id,D.fieldLabel,D.labelStyle||this.labelStyle||"",this.elementStyle||"",typeof D.labelSeparator=="undefined"?this.labelSeparator:D.labelSeparator,(D.itemCls||this.container.itemCls||"")+(D.hideLabel?" x-hide-label":""),D.clearCls||"x-form-clear-left"];if(typeof A=="number"){A=C.dom.childNodes[A]||null}if(A){this.fieldTpl.insertBefore(A,B)}else{this.fieldTpl.append(C,B)}D.render("x-form-el-"+D.id)}else{Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)}},adjustWidthAnchor:function(B,A){return B-(A.isFormField?(A.hideLabel?0:this.labelAdjust):0)},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["form"]=Ext.layout.FormLayout;
-Ext.layout.Accordion=Ext.extend(Ext.layout.FitLayout,{fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,renderItem:function(A){if(this.animate===false){A.animCollapse=false}A.collapsible=true;if(this.autoWidth){A.autoWidth=true}if(this.titleCollapse){A.titleCollapse=true}if(this.hideCollapseTool){A.hideCollapseTool=true}if(this.collapseFirst!==undefined){A.collapseFirst=this.collapseFirst}if(!this.activeItem&&!A.collapsed){this.activeItem=A}else{if(this.activeItem){A.collapsed=true}}Ext.layout.Accordion.superclass.renderItem.apply(this,arguments);A.header.addClass("x-accordion-hd");A.on("beforeexpand",this.beforeExpand,this)},beforeExpand:function(C,B){var A=this.activeItem;if(A){if(this.sequence){delete this.activeItem;A.collapse({callback:function(){C.expand(B||true)},scope:this});return false}else{A.collapse(this.animate)}}this.activeItem=C;if(this.activeOnTop){C.el.dom.parentNode.insertBefore(C.el.dom,C.el.dom.parentNode.firstChild)}this.layout()},setItemSize:function(F,E){if(this.fill&&F){var B=this.container.items.items;var D=0;for(var C=0,A=B.length;C<A;C++){var G=B[C];if(G!=F){D+=(G.getSize().height-G.bwrap.getHeight())}}E.height-=D;F.setSize(E)}}});Ext.Container.LAYOUTS["accordion"]=Ext.layout.Accordion;
-Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{monitorResize:false,setContainer:function(A){Ext.layout.TableLayout.superclass.setContainer.call(this,A);this.currentRow=0;this.currentColumn=0;this.cells=[]},onLayout:function(C,E){var D=C.items.items,A=D.length,F,B;if(!this.table){E.addClass("x-table-layout-ct");this.table=E.createChild({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}},null,true);this.renderAll(C,E)}},getRow:function(A){var B=this.table.tBodies[0].childNodes[A];if(!B){B=document.createElement("tr");this.table.tBodies[0].appendChild(B)}return B},getNextCell:function(H){var A=this.getNextNonSpan(this.currentColumn,this.currentRow);var E=this.currentColumn=A[0],D=this.currentRow=A[1];for(var G=D;G<D+(H.rowspan||1);G++){if(!this.cells[G]){this.cells[G]=[]}for(var C=E;C<E+(H.colspan||1);C++){this.cells[G][C]=true}}var F=document.createElement("td");if(H.cellId){F.id=H.cellId}var B="x-table-layout-cell";if(H.cellCls){B+=" "+H.cellCls}F.className=B;if(H.colspan){F.colSpan=H.colspan}if(H.rowspan){F.rowSpan=H.rowspan}this.getRow(D).appendChild(F);return F},getNextNonSpan:function(A,C){var B=this.columns;while((B&&A>=B)||(this.cells[C]&&this.cells[C][A])){if(B&&A>=B){C++;A=0}else{A++}}return[A,C]},renderItem:function(C,A,B){if(C&&!C.rendered){C.render(this.getNextCell(C))}},isValidParent:function(B,A){return true}});Ext.Container.LAYOUTS["table"]=Ext.layout.TableLayout;
-Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{extraCls:"x-abs-layout-item",isForm:false,setContainer:function(A){Ext.layout.AbsoluteLayout.superclass.setContainer.call(this,A);if(A.isXType("form")){this.isForm=true}},onLayout:function(A,B){if(this.isForm){A.body.position()}else{B.position()}Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,A,B)},getAnchorViewSize:function(A,B){return this.isForm?A.body.getStyleSize():Ext.layout.AbsoluteLayout.superclass.getAnchorViewSize.call(this,A,B)},isValidParent:function(B,A){return this.isForm?true:Ext.layout.AbsoluteLayout.superclass.isValidParent.call(this,B,A)},adjustWidthAnchor:function(B,A){return B?B-A.getPosition(true)[0]:B},adjustHeightAnchor:function(B,A){return B?B-A.getPosition(true)[1]:B}});Ext.Container.LAYOUTS["absolute"]=Ext.layout.AbsoluteLayout;
-Ext.Viewport=Ext.extend(Ext.Container,{initComponent:function(){Ext.Viewport.superclass.initComponent.call(this);document.getElementsByTagName("html")[0].className+=" x-viewport";this.el=Ext.getBody();this.el.setHeight=Ext.emptyFn;this.el.setWidth=Ext.emptyFn;this.el.setSize=Ext.emptyFn;this.el.dom.scroll="no";this.allowDomMove=false;this.autoWidth=true;this.autoHeight=true;Ext.EventManager.onWindowResize(this.fireResize,this);this.renderTo=this.el},fireResize:function(A,B){this.fireEvent("resize",this,A,B,A,B)}});Ext.reg("viewport",Ext.Viewport);
-Ext.Panel=Ext.extend(Ext.Container,{baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function(){Ext.Panel.superclass.initComponent.call(this);this.addEvents("bodyresize","titlechange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");if(this.tbar){this.elements+=",tbar";if(typeof this.tbar=="object"){this.topToolbar=this.tbar}delete this.tbar}if(this.bbar){this.elements+=",bbar";if(typeof this.bbar=="object"){this.bottomToolbar=this.bbar}delete this.bbar}if(this.header===true){this.elements+=",header";delete this.header}else{if(this.title&&this.header!==false){this.elements+=",header"}}if(this.footer===true){this.elements+=",footer";delete this.footer}if(this.buttons){var C=this.buttons;this.buttons=[];for(var B=0,A=C.length;B<A;B++){if(C[B].render){this.buttons.push(C[B])}else{this.addButton(C[B])}}}if(this.autoLoad){this.on("render",this.doAutoLoad,this,{delay:10})}},createElement:function(A,C){if(this[A]){C.appendChild(this[A].dom);return }if(A==="bwrap"||this.elements.indexOf(A)!=-1){if(this[A+"Cfg"]){this[A]=Ext.fly(C).createChild(this[A+"Cfg"])}else{var B=document.createElement("div");B.className=this[A+"Cls"];this[A]=Ext.get(C.appendChild(B))}}},onRender:function(H,G){Ext.Panel.superclass.onRender.call(this,H,G);this.createClasses();if(this.el){this.el.addClass(this.baseCls);this.header=this.el.down("."+this.headerCls);this.bwrap=this.el.down("."+this.bwrapCls);var M=this.bwrap?this.bwrap:this.el;this.tbar=M.down("."+this.tbarCls);this.body=M.down("."+this.bodyCls);this.bbar=M.down("."+this.bbarCls);this.footer=M.down("."+this.footerCls);this.fromMarkup=true}else{this.el=H.createChild({id:this.id,cls:this.baseCls},G)}var A=this.el,K=A.dom;if(this.cls){this.el.addClass(this.cls)}if(this.buttons){this.elements+=",footer"}if(this.frame){A.insertHtml("afterBegin",String.format(Ext.Element.boxMarkup,this.baseCls));this.createElement("header",K.firstChild.firstChild.firstChild);this.createElement("bwrap",K);var O=this.bwrap.dom;var E=K.childNodes[1],B=K.childNodes[2];O.appendChild(E);O.appendChild(B);var P=O.firstChild.firstChild.firstChild;this.createElement("tbar",P);this.createElement("body",P);this.createElement("bbar",P);this.createElement("footer",O.lastChild.firstChild.firstChild);if(!this.footer){this.bwrap.dom.lastChild.className+=" x-panel-nofooter"}}else{this.createElement("header",K);this.createElement("bwrap",K);var O=this.bwrap.dom;this.createElement("tbar",O);this.createElement("body",O);this.createElement("bbar",O);this.createElement("footer",O);if(!this.header){this.body.addClass(this.bodyCls+"-noheader");if(this.tbar){this.tbar.addClass(this.tbarCls+"-noheader")}}}if(this.border===false){this.el.addClass(this.baseCls+"-noborder");this.body.addClass(this.bodyCls+"-noborder");if(this.header){this.header.addClass(this.headerCls+"-noborder")}if(this.footer){this.footer.addClass(this.footerCls+"-noborder")}if(this.tbar){this.tbar.addClass(this.tbarCls+"-noborder")}if(this.bbar){this.bbar.addClass(this.bbarCls+"-noborder")}}if(this.bodyBorder===false){this.body.addClass(this.bodyCls+"-noborder")}if(this.bodyStyle){this.body.applyStyles(this.bodyStyle)}this.bwrap.enableDisplayMode("block");if(this.header){this.header.unselectable();if(this.headerAsText){this.header.dom.innerHTML="<span class=\""+this.headerTextCls+"\">"+this.header.dom.innerHTML+"</span>";if(this.iconCls){this.setIconClass(this.iconCls)}}}if(this.floating){this.makeFloating(this.floating)}if(this.collapsible){this.tools=this.tools?this.tools.slice(0):[];if(!this.hideCollapseTool){this.tools[this.collapseFirst?"unshift":"push"]({id:"toggle",handler:this.toggleCollapse,scope:this})}if(this.titleCollapse&&this.header){this.header.on("click",this.toggleCollapse,this);this.header.setStyle("cursor","pointer")}}if(this.tools){var J=this.tools;this.tools={};this.addTool.apply(this,J)}else{this.tools={}}if(this.buttons&&this.buttons.length>0){var D=this.footer.createChild({cls:"x-panel-btns-ct",cn:{cls:"x-panel-btns x-panel-btns-"+this.buttonAlign,html:"<table cellspacing=\"0\"><tbody><tr></tr></tbody></table><div class=\"x-clear\"></div>"}},null,true);var L=D.getElementsByTagName("tr")[0];for(var F=0,I=this.buttons.length;F<I;F++){var N=this.buttons[F];var C=document.createElement("td");C.className="x-panel-btn-td";N.render(L.appendChild(C))}}if(this.tbar&&this.topToolbar){if(Ext.isArray(this.topToolbar)){this.topToolbar=new Ext.Toolbar(this.topToolbar)}this.topToolbar.render(this.tbar)}if(this.bbar&&this.bottomToolbar){if(Ext.isArray(this.bottomToolbar)){this.bottomToolbar=new Ext.Toolbar(this.bottomToolbar)}this.bottomToolbar.render(this.bbar)}},setIconClass:function(B){var A=this.iconCls;this.iconCls=B;if(this.rendered&&this.header){if(this.frame){this.header.addClass("x-panel-icon");this.header.replaceClass(A,this.iconCls)}else{var D=this.header.dom;var C=D.firstChild&&String(D.firstChild.tagName).toLowerCase()=="img"?D.firstChild:null;if(C){Ext.fly(C).replaceClass(A,this.iconCls)}else{Ext.DomHelper.insertBefore(D.firstChild,{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "+this.iconCls})}}}},makeFloating:function(A){this.floating=true;this.el=new Ext.Layer(typeof A=="object"?A:{shadow:this.shadow!==undefined?this.shadow:"sides",shadowOffset:this.shadowOffset,constrain:false,shim:this.shim===false?false:undefined},this.el)},getTopToolbar:function(){return this.topToolbar},getBottomToolbar:function(){return this.bottomToolbar},addButton:function(A,D,C){var E={handler:D,scope:C,minWidth:this.minButtonWidth,hideParent:true};if(typeof A=="string"){E.text=A}else{Ext.apply(E,A)}var B=new Ext.Button(E);B.ownerCt=this;if(!this.buttons){this.buttons=[]}this.buttons.push(B);return B},addTool:function(){if(!this[this.toolTarget]){return }if(!this.toolTemplate){var F=new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");F.disableFormats=true;F.compile();Ext.Panel.prototype.toolTemplate=F}for(var E=0,C=arguments,B=C.length;E<B;E++){var A=C[E],G="x-tool-"+A.id+"-over";var D=this.toolTemplate.insertFirst(this[this.toolTarget],A,true);this.tools[A.id]=D;D.enableDisplayMode("block");D.on("click",this.createToolHandler(D,A,G,this));if(A.on){D.on(A.on)}if(A.hidden){D.hide()}if(A.qtip){if(typeof A.qtip=="object"){Ext.QuickTips.register(Ext.apply({target:D.id},A.qtip))}else{D.dom.qtip=A.qtip}}D.addClassOnOver(G)}},onShow:function(){if(this.floating){return this.el.show()}Ext.Panel.superclass.onShow.call(this)},onHide:function(){if(this.floating){return this.el.hide()}Ext.Panel.superclass.onHide.call(this)},createToolHandler:function(C,A,D,B){return function(E){C.removeClass(D);E.stopEvent();if(A.handler){A.handler.call(A.scope||C,E,C,B)}}},afterRender:function(){if(this.fromMarkup&&this.height===undefined&&!this.autoHeight){this.height=this.el.getHeight()}if(this.floating&&!this.hidden&&!this.initHidden){this.el.show()}if(this.title){this.setTitle(this.title)}this.setAutoScroll();if(this.html){this.body.update(typeof this.html=="object"?Ext.DomHelper.markup(this.html):this.html);delete this.html}if(this.contentEl){var A=Ext.getDom(this.contentEl);Ext.fly(A).removeClass(["x-hidden","x-hide-display"]);this.body.dom.appendChild(A)}if(this.collapsed){this.collapsed=false;this.collapse(false)}Ext.Panel.superclass.afterRender.call(this);this.initEvents()},setAutoScroll:function(){if(this.rendered&&this.autoScroll){this.body.setOverflow("auto")}},getKeyMap:function(){if(!this.keyMap){this.keyMap=new Ext.KeyMap(this.el,this.keys)}return this.keyMap},initEvents:function(){if(this.keys){this.getKeyMap()}if(this.draggable){this.initDraggable()}},initDraggable:function(){this.dd=new Ext.Panel.DD(this,typeof this.draggable=="boolean"?null:this.draggable)},beforeEffect:function(){if(this.floating){this.el.beforeAction()}this.el.addClass("x-panel-animated")},afterEffect:function(){this.syncShadow();this.el.removeClass("x-panel-animated")},createEffect:function(B,A,C){var D={scope:C,block:true};if(B===true){D.callback=A;return D}else{if(!B.callback){D.callback=A}else{D.callback=function(){A.call(C);Ext.callback(B.callback,B.scope)}}}return Ext.applyIf(D,B)},collapse:function(B){if(this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforecollapse",this,B)===false){return }var A=B===true||(B!==false&&this.animCollapse);this.beforeEffect();this.onCollapse(A,B);return this},onCollapse:function(A,B){if(A){this[this.collapseEl].slideOut(this.slideAnchor,Ext.apply(this.createEffect(B||true,this.afterCollapse,this),this.collapseDefaults))}else{this[this.collapseEl].hide();this.afterCollapse()}},afterCollapse:function(){this.collapsed=true;this.el.addClass(this.collapsedCls);this.afterEffect();this.fireEvent("collapse",this)},expand:function(B){if(!this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforeexpand",this,B)===false){return }var A=B===true||(B!==false&&this.animCollapse);this.el.removeClass(this.collapsedCls);this.beforeEffect();this.onExpand(A,B);return this},onExpand:function(A,B){if(A){this[this.collapseEl].slideIn(this.slideAnchor,Ext.apply(this.createEffect(B||true,this.afterExpand,this),this.expandDefaults))}else{this[this.collapseEl].show();this.afterExpand()}},afterExpand:function(){this.collapsed=false;this.afterEffect();this.fireEvent("expand",this)},toggleCollapse:function(A){this[this.collapsed?"expand":"collapse"](A);return this},onDisable:function(){if(this.rendered&&this.maskDisabled){this.el.mask()}Ext.Panel.superclass.onDisable.call(this)},onEnable:function(){if(this.rendered&&this.maskDisabled){this.el.unmask()}Ext.Panel.superclass.onEnable.call(this)},onResize:function(A,B){if(A!==undefined||B!==undefined){if(!this.collapsed){if(typeof A=="number"){this.body.setWidth(this.adjustBodyWidth(A-this.getFrameWidth()))}else{if(A=="auto"){this.body.setWidth(A)}}if(typeof B=="number"){this.body.setHeight(this.adjustBodyHeight(B-this.getFrameHeight()))}else{if(B=="auto"){this.body.setHeight(B)}}}else{this.queuedBodySize={width:A,height:B};if(!this.queuedExpand&&this.allowQueuedExpand!==false){this.queuedExpand=true;this.on("expand",function(){delete this.queuedExpand;this.onResize(this.queuedBodySize.width,this.queuedBodySize.height);this.doLayout()},this,{single:true})}}this.fireEvent("bodyresize",this,A,B)}this.syncShadow()},adjustBodyHeight:function(A){return A},adjustBodyWidth:function(A){return A},onPosition:function(){this.syncShadow()},onDestroy:function(){if(this.tools){for(var B in this.tools){Ext.destroy(this.tools[B])}}if(this.buttons){for(var A in this.buttons){Ext.destroy(this.buttons[A])}}Ext.destroy(this.topToolbar,this.bottomToolbar);Ext.Panel.superclass.onDestroy.call(this)},getFrameWidth:function(){var B=this.el.getFrameWidth("lr");if(this.frame){var A=this.bwrap.dom.firstChild;B+=(Ext.fly(A).getFrameWidth("l")+Ext.fly(A.firstChild).getFrameWidth("r"));var C=this.bwrap.dom.firstChild.firstChild.firstChild;B+=Ext.fly(C).getFrameWidth("lr")}return B},getFrameHeight:function(){var A=this.el.getFrameWidth("tb");A+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);if(this.frame){var C=this.el.dom.firstChild;var D=this.bwrap.dom.lastChild;A+=(C.offsetHeight+D.offsetHeight);var B=this.bwrap.dom.firstChild.firstChild.firstChild;A+=Ext.fly(B).getFrameWidth("tb")}else{A+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0)}return A},getInnerWidth:function(){return this.getSize().width-this.getFrameWidth()},getInnerHeight:function(){return this.getSize().height-this.getFrameHeight()},syncShadow:function(){if(this.floating){this.el.sync(true)}},getLayoutTarget:function(){return this.body},setTitle:function(B,A){this.title=B;if(this.header&&this.headerAsText){this.header.child("span").update(B)}if(A){this.setIconClass(A)}this.fireEvent("titlechange",this,B);return this},getUpdater:function(){return this.body.getUpdater()},load:function(){var A=this.body.getUpdater();A.update.apply(A,arguments);return this},beforeDestroy:function(){Ext.Element.uncache(this.header,this.tbar,this.bbar,this.footer,this.body)},createClasses:function(){this.headerCls=this.baseCls+"-header";this.headerTextCls=this.baseCls+"-header-text";this.bwrapCls=this.baseCls+"-bwrap";this.tbarCls=this.baseCls+"-tbar";this.bodyCls=this.baseCls+"-body";this.bbarCls=this.baseCls+"-bbar";this.footerCls=this.baseCls+"-footer"},createGhost:function(A,E,B){var D=document.createElement("div");D.className="x-panel-ghost "+(A?A:"");if(this.header){D.appendChild(this.el.dom.firstChild.cloneNode(true))}Ext.fly(D.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());D.style.width=this.el.dom.offsetWidth+"px";if(!B){this.container.dom.appendChild(D)}else{Ext.getDom(B).appendChild(D)}if(E!==false&&this.el.useShim!==false){var C=new Ext.Layer({shadow:false,useDisplay:true,constrain:false},D);C.show();return C}else{return new Ext.Element(D)}},doAutoLoad:function(){this.body.load(typeof this.autoLoad=="object"?this.autoLoad:{url:this.autoLoad})}});Ext.reg("panel",Ext.Panel);
-Ext.Window=Ext.extend(Ext.Panel,{baseCls:"x-window",resizable:true,draggable:true,closable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,closeAction:"close",collapsible:false,initHidden:true,monitorResize:true,elements:"header,body",frame:true,floating:true,initComponent:function(){Ext.Window.superclass.initComponent.call(this);this.addEvents("resize","maximize","minimize","restore")},getState:function(){return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox())},onRender:function(B,A){Ext.Window.superclass.onRender.call(this,B,A);if(this.plain){this.el.addClass("x-window-plain")}this.focusEl=this.el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1",html:"&#160;"});this.focusEl.swallowEvent("click",true);this.proxy=this.el.createProxy("x-window-proxy");this.proxy.enableDisplayMode("block");if(this.modal){this.mask=this.container.createChild({cls:"ext-el-mask"},this.el.dom);this.mask.enableDisplayMode("block");this.mask.hide()}},initEvents:function(){Ext.Window.superclass.initEvents.call(this);if(this.animateTarget){this.setAnimateTarget(this.animateTarget)}if(this.resizable){this.resizer=new Ext.Resizable(this.el,{minWidth:this.minWidth,minHeight:this.minHeight,handles:this.resizeHandles||"all",pinned:true,resizeElement:this.resizerAction});this.resizer.window=this;this.resizer.on("beforeresize",this.beforeResize,this)}if(this.draggable){this.header.addClass("x-window-draggable")}this.initTools();this.el.on("mousedown",this.toFront,this);this.manager=this.manager||Ext.WindowMgr;this.manager.register(this);this.hidden=true;if(this.maximized){this.maximized=false;this.maximize()}if(this.closable){var A=this.getKeyMap();A.on(27,this.onEsc,this);A.disable()}},initDraggable:function(){this.dd=new Ext.Window.DD(this)},onEsc:function(){this[this.closeAction]()},beforeDestroy:function(){Ext.destroy(this.resizer,this.dd,this.proxy,this.mask);Ext.Window.superclass.beforeDestroy.call(this)},onDestroy:function(){if(this.manager){this.manager.unregister(this)}Ext.Window.superclass.onDestroy.call(this)},initTools:function(){if(this.minimizable){this.addTool({id:"minimize",handler:this.minimize.createDelegate(this,[])})}if(this.maximizable){this.addTool({id:"maximize",handler:this.maximize.createDelegate(this,[])});this.addTool({id:"restore",handler:this.restore.createDelegate(this,[]),hidden:true});this.header.on("dblclick",this.toggleMaximize,this)}if(this.closable){this.addTool({id:"close",handler:this[this.closeAction].createDelegate(this,[])})}},resizerAction:function(){var A=this.proxy.getBox();this.proxy.hide();this.window.handleResize(A);return A},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getFrameHeight()+40);this.resizer.minWidth=Math.max(this.minWidth,this.getFrameWidth()+40);this.resizeBox=this.el.getBox()},updateHandles:function(){if(Ext.isIE&&this.resizer){this.resizer.syncHandleHeight();this.el.repaint()}},handleResize:function(B){var A=this.resizeBox;if(A.x!=B.x||A.y!=B.y){this.updateBox(B)}else{this.setSize(B)}this.focus();this.updateHandles();this.saveState();this.fireEvent("resize",this,B.width,B.height)},focus:function(){var C=this.focusEl,A=this.defaultButton,B=typeof A;if(B!="undefined"){if(B=="number"){C=this.buttons[A]}else{if(B=="string"){C=Ext.getCmp(A)}else{C=A}}}C.focus.defer(10,C)},setAnimateTarget:function(A){A=Ext.get(A);this.animateTarget=A},beforeShow:function(){delete this.el.lastXY;delete this.el.lastLT;if(this.x===undefined||this.y===undefined){var A=this.el.getAlignToXY(this.container,"c-c");var B=this.el.translatePoints(A[0],A[1]);this.x=this.x===undefined?B.left:this.x;this.y=this.y===undefined?B.top:this.y}this.el.setLeftTop(this.x,this.y);if(this.expandOnShow){this.expand(false)}if(this.modal){Ext.getBody().addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show()}},show:function(C,A,B){if(!this.rendered){this.render(Ext.getBody())}if(this.hidden===false){this.toFront();return }if(this.fireEvent("beforeshow",this)===false){return }if(A){this.on("show",A,B,{single:true})}this.hidden=false;if(C!==undefined){this.setAnimateTarget(C)}this.beforeShow();if(this.animateTarget){this.animShow()}else{this.afterShow()}},afterShow:function(){this.proxy.hide();this.el.setStyle("display","block");this.el.show();if(this.maximized){this.fitContainer()}if(Ext.isMac&&Ext.isGecko){this.cascade(this.setAutoScroll)}if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.onWindowResize(this.onWindowResize,this)}this.doConstrain();if(this.layout){this.doLayout()}if(this.keyMap){this.keyMap.enable()}this.toFront();this.updateHandles();this.fireEvent("show",this)},animShow:function(){this.proxy.show();this.proxy.setBox(this.animateTarget.getBox());this.proxy.setOpacity(0);var A=this.getBox(false);A.callback=this.afterShow;A.scope=this;A.duration=0.25;A.easing="easeNone";A.opacity=0.5;A.block=true;this.el.setStyle("display","none");this.proxy.shift(A)},hide:function(C,A,B){if(this.hidden||this.fireEvent("beforehide",this)===false){return }if(A){this.on("hide",A,B,{single:true})}this.hidden=true;if(C!==undefined){this.setAnimateTarget(C)}if(this.animateTarget){this.animHide()}else{this.el.hide();this.afterHide()}},afterHide:function(){this.proxy.hide();if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){Ext.EventManager.removeResizeListener(this.onWindowResize,this)}if(this.modal){this.mask.hide();Ext.getBody().removeClass("x-body-masked")}if(this.keyMap){this.keyMap.disable()}this.fireEvent("hide",this)},animHide:function(){this.proxy.setOpacity(0.5);this.proxy.show();var B=this.getBox(false);this.proxy.setBox(B);this.el.hide();var A=this.animateTarget.getBox();A.callback=this.afterHide;A.scope=this;A.duration=0.25;A.easing="easeNone";A.block=true;A.opacity=0;this.proxy.shift(A)},onWindowResize:function(){if(this.maximized){this.fitContainer()}if(this.modal){this.mask.setSize("100%","100%");var A=this.mask.dom.offsetHeight;this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true))}this.doConstrain()},doConstrain:function(){if(this.constrain||this.constrainHeader){var B;if(this.constrain){B={right:this.el.shadowOffset,left:this.el.shadowOffset,bottom:this.el.shadowOffset}}else{var A=this.getSize();B={right:-(A.width-100),bottom:-(A.height-25)}}var C=this.el.getConstrainToXY(this.container,true,B);if(C){this.setPosition(C[0],C[1])}}},ghost:function(A){var C=this.createGhost(A);var B=this.getBox(true);C.setLeftTop(B.x,B.y);C.setWidth(B.width);this.el.hide();this.activeGhost=C;return C},unghost:function(B,A){if(B!==false){this.el.show();this.focus();if(Ext.isMac&&Ext.isGecko){this.cascade(this.setAutoScroll)}}if(A!==false){this.setPosition(this.activeGhost.getLeft(true),this.activeGhost.getTop(true))}this.activeGhost.hide();this.activeGhost.remove();delete this.activeGhost},minimize:function(){this.fireEvent("minimize",this)},close:function(){if(this.fireEvent("beforeclose",this)!==false){this.hide(null,function(){this.fireEvent("close",this);this.destroy()},this)}},maximize:function(){if(!this.maximized){this.expand(false);this.restoreSize=this.getSize();this.restorePos=this.getPosition(true);this.tools.maximize.hide();this.tools.restore.show();this.maximized=true;this.el.disableShadow();if(this.dd){this.dd.lock()}if(this.collapsible){this.tools.toggle.hide()}this.el.addClass("x-window-maximized");this.container.addClass("x-window-maximized-ct");this.setPosition(0,0);this.fitContainer();this.fireEvent("maximize",this)}},restore:function(){if(this.maximized){this.el.removeClass("x-window-maximized");this.tools.restore.hide();this.tools.maximize.show();this.setPosition(this.restorePos[0],this.restorePos[1]);this.setSize(this.restoreSize.width,this.restoreSize.height);delete this.restorePos;delete this.restoreSize;this.maximized=false;this.el.enableShadow(true);if(this.dd){this.dd.unlock()}if(this.collapsible){this.tools.toggle.show()}this.container.removeClass("x-window-maximized-ct");this.doConstrain();this.fireEvent("restore",this)}},toggleMaximize:function(){this[this.maximized?"restore":"maximize"]()},fitContainer:function(){var A=this.container.getViewSize();this.setSize(A.width,A.height)},setZIndex:function(A){if(this.modal){this.mask.setStyle("z-index",A)}this.el.setZIndex(++A);A+=5;if(this.resizer){this.resizer.proxy.setStyle("z-index",++A)}this.lastZIndex=A},alignTo:function(B,A,C){var D=this.el.getAlignToXY(B,A,C);this.setPagePosition(D[0],D[1]);return this},anchorTo:function(C,G,D,B,F){var E=function(){this.alignTo(C,G,D)};Ext.EventManager.onWindowResize(E,this);var A=typeof B;if(A!="undefined"){Ext.EventManager.on(window,"scroll",E,this,{buffer:A=="number"?B:50})}E.call(this);this[F]=E;return this},toFront:function(){if(this.manager.bringToFront(this)){this.focus()}return this},setActive:function(A){if(A){if(!this.maximized){this.el.enableShadow(true)}this.fireEvent("activate",this)}else{this.el.disableShadow();this.fireEvent("deactivate",this)}},toBack:function(){this.manager.sendToBack(this);return this},center:function(){var A=this.el.getAlignToXY(this.container,"c-c");this.setPagePosition(A[0],A[1]);return this}});Ext.reg("window",Ext.Window);Ext.Window.DD=function(A){this.win=A;Ext.Window.DD.superclass.constructor.call(this,A.el.id,"WindowDD-"+A.id);this.setHandleElId(A.header.id);this.scroll=false};Ext.extend(Ext.Window.DD,Ext.dd.DD,{moveOnly:true,headerOffsets:[100,25],startDrag:function(){var A=this.win;this.proxy=A.ghost();if(A.constrain!==false){var C=A.el.shadowOffset;this.constrainTo(A.container,{right:C,left:C,bottom:C})}else{if(A.constrainHeader!==false){var B=this.proxy.getSize();this.constrainTo(A.container,{right:-(B.width-this.headerOffsets[0]),bottom:-(B.height-this.headerOffsets[1])})}}},b4Drag:Ext.emptyFn,onDrag:function(A){this.alignElWithMouse(this.proxy,A.getPageX(),A.getPageY())},endDrag:function(A){this.win.unghost();this.win.saveState()}});
-Ext.WindowGroup=function(){var F={};var D=[];var E=null;var C=function(I,H){return(!I._lastAccess||I._lastAccess<H._lastAccess)?-1:1};var G=function(){var J=D,H=J.length;if(H>0){J.sort(C);var I=J[0].manager.zseed;for(var K=0;K<H;K++){var L=J[K];if(L&&!L.hidden){L.setZIndex(I+(K*10))}}}A()};var B=function(H){if(H!=E){if(E){E.setActive(false)}E=H;if(H){H.setActive(true)}}};var A=function(){for(var H=D.length-1;H>=0;--H){if(!D[H].hidden){B(D[H]);return }}B(null)};return{zseed:9000,register:function(H){F[H.id]=H;D.push(H);H.on("hide",A)},unregister:function(H){delete F[H.id];H.un("hide",A);D.remove(H)},get:function(H){return typeof H=="object"?H:F[H]},bringToFront:function(H){H=this.get(H);if(H!=E){H._lastAccess=new Date().getTime();G();return true}return false},sendToBack:function(H){H=this.get(H);H._lastAccess=-(new Date().getTime());G();return H},hideAll:function(){for(var H in F){if(F[H]&&typeof F[H]!="function"&&F[H].isVisible()){F[H].hide()}}},getActive:function(){return E},getBy:function(J,I){var K=[];for(var H=D.length-1;H>=0;--H){var L=D[H];if(J.call(I||L,L)!==false){K.push(L)}}return K},each:function(I,H){for(var J in F){if(F[J]&&typeof F[J]!="function"){if(I.call(H||F[J],F[J])===false){return }}}}}};Ext.WindowMgr=new Ext.WindowGroup();
-Ext.dd.PanelProxy=function(A,B){this.panel=A;this.id=this.panel.id+"-ddproxy";Ext.apply(this,B)};Ext.dd.PanelProxy.prototype={insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function(){return this.ghost},getGhost:function(){return this.ghost},getProxy:function(){return this.proxy},hide:function(){if(this.ghost){if(this.proxy){this.proxy.remove();delete this.proxy}this.panel.el.dom.style.display="";this.ghost.remove();delete this.ghost}},show:function(){if(!this.ghost){this.ghost=this.panel.createGhost(undefined,undefined,Ext.getBody());this.ghost.setXY(this.panel.el.getXY());if(this.insertProxy){this.proxy=this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});this.proxy.setSize(this.panel.getSize())}this.panel.el.dom.style.display="none"}},repair:function(B,C,A){this.hide();if(typeof C=="function"){C.call(A||this)}},moveProxy:function(A,B){if(this.proxy){A.insertBefore(this.proxy.dom,B)}}};Ext.Panel.DD=function(B,A){this.panel=B;this.dragData={panel:B};this.proxy=new Ext.dd.PanelProxy(B,A);Ext.Panel.DD.superclass.constructor.call(this,B.el,A);this.setHandleElId(B.header.id);B.header.setStyle("cursor","move");this.scroll=false};Ext.extend(Ext.Panel.DD,Ext.dd.DragSource,{showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(A,B){this.proxy.show()},b4MouseDown:function(B){var A=B.getPageX();var C=B.getPageY();this.autoOffset(A,C)},onInitDrag:function(A,B){this.onStartDrag(A,B);return true},createFrame:Ext.emptyFn,getDragEl:function(A){return this.proxy.ghost.dom},endDrag:function(A){this.proxy.hide();this.panel.saveState()},autoOffset:function(A,B){A-=this.startPageX;B-=this.startPageY;this.setDelta(A,B)}});
-Ext.state.Provider=function(){this.addEvents("statechange");this.state={};Ext.state.Provider.superclass.constructor.call(this)};Ext.extend(Ext.state.Provider,Ext.util.Observable,{get:function(B,A){return typeof this.state[B]=="undefined"?A:this.state[B]},clear:function(A){delete this.state[A];this.fireEvent("statechange",this,A,null)},set:function(A,B){this.state[A]=B;this.fireEvent("statechange",this,A,B)},decodeValue:function(A){var J=/^(a|n|d|b|s|o)\:(.*)$/;var C=J.exec(unescape(A));if(!C||!C[1]){return }var F=C[1];var H=C[2];switch(F){case"n":return parseFloat(H);case"d":return new Date(Date.parse(H));case"b":return(H=="1");case"a":var G=[];var I=H.split("^");for(var B=0,D=I.length;B<D;B++){G.push(this.decodeValue(I[B]))}return G;case"o":var G={};var I=H.split("^");for(var B=0,D=I.length;B<D;B++){var E=I[B].split("=");G[E[0]]=this.decodeValue(E[1])}return G;default:return H}},encodeValue:function(C){var B;if(typeof C=="number"){B="n:"+C}else{if(typeof C=="boolean"){B="b:"+(C?"1":"0")}else{if(Ext.isDate(C)){B="d:"+C.toGMTString()}else{if(Ext.isArray(C)){var F="";for(var E=0,A=C.length;E<A;E++){F+=this.encodeValue(C[E]);if(E!=A-1){F+="^"}}B="a:"+F}else{if(typeof C=="object"){var F="";for(var D in C){if(typeof C[D]!="function"&&C[D]!==undefined){F+=D+"="+this.encodeValue(C[D])+"^"}}B="o:"+F.substring(0,F.length-1)}else{B="s:"+C}}}}}return escape(B)}});
-Ext.state.Manager=function(){var A=new Ext.state.Provider();return{setProvider:function(B){A=B},get:function(C,B){return A.get(C,B)},set:function(B,C){A.set(B,C)},clear:function(B){A.clear(B)},getProvider:function(){return A}}}();
-Ext.state.CookieProvider=function(A){Ext.state.CookieProvider.superclass.constructor.call(this);this.path="/";this.expires=new Date(new Date().getTime()+(1000*60*60*24*7));this.domain=null;this.secure=false;Ext.apply(this,A);this.state=this.readCookies()};Ext.extend(Ext.state.CookieProvider,Ext.state.Provider,{set:function(A,B){if(typeof B=="undefined"||B===null){this.clear(A);return }this.setCookie(A,B);Ext.state.CookieProvider.superclass.set.call(this,A,B)},clear:function(A){this.clearCookie(A);Ext.state.CookieProvider.superclass.clear.call(this,A)},readCookies:function(){var C={};var F=document.cookie+";";var B=/\s?(.*?)=(.*?);/g;var E;while((E=B.exec(F))!=null){var A=E[1];var D=E[2];if(A&&A.substring(0,3)=="ys-"){C[A.substr(3)]=this.decodeValue(D)}}return C},setCookie:function(A,B){document.cookie="ys-"+A+"="+this.encodeValue(B)+((this.expires==null)?"":("; expires="+this.expires.toGMTString()))+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")},clearCookie:function(A){document.cookie="ys-"+A+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")}});
-Ext.DataView=Ext.extend(Ext.BoxComponent,{selectedClass:"x-view-selected",emptyText:"",last:false,initComponent:function(){Ext.DataView.superclass.initComponent.call(this);if(typeof this.tpl=="string"){this.tpl=new Ext.XTemplate(this.tpl)}this.addEvents("beforeclick","click","containerclick","dblclick","contextmenu","selectionchange","beforeselect");this.all=new Ext.CompositeElementLite();this.selected=new Ext.CompositeElementLite()},onRender:function(){if(!this.el){this.el=document.createElement("div")}Ext.DataView.superclass.onRender.apply(this,arguments)},afterRender:function(){Ext.DataView.superclass.afterRender.call(this);this.el.on({"click":this.onClick,"dblclick":this.onDblClick,"contextmenu":this.onContextMenu,scope:this});if(this.overClass){this.el.on({"mouseover":this.onMouseOver,"mouseout":this.onMouseOut,scope:this})}if(this.store){this.setStore(this.store,true)}},refresh:function(){this.clearSelections(false,true);this.el.update("");var B=[];var A=this.store.getRange();if(A.length<1){this.el.update(this.emptyText);this.all.clear();return }this.tpl.overwrite(this.el,this.collectData(A,0));this.all.fill(Ext.query(this.itemSelector,this.el.dom));this.updateIndexes(0)},prepareData:function(A){return A},collectData:function(B,E){var D=[];for(var C=0,A=B.length;C<A;C++){D[D.length]=this.prepareData(B[C].data,E+C,B[C])}return D},bufferRender:function(A){var B=document.createElement("div");this.tpl.overwrite(B,this.collectData(A));return Ext.query(this.itemSelector,B)},onUpdate:function(F,A){var B=this.store.indexOf(A);var E=this.isSelected(B);var C=this.all.elements[B];var D=this.bufferRender([A],B)[0];this.all.replaceElement(B,D,true);if(E){this.selected.replaceElement(C,D);this.all.item(B).addClass(this.selectedClass)}this.updateIndexes(B,B)},onAdd:function(D,B,C){if(this.all.getCount()==0){this.refresh();return }var A=this.bufferRender(B,C),E;if(C<this.all.getCount()){E=this.all.item(C).insertSibling(A,"before",true);this.all.elements.splice(C,0,E)}else{E=this.all.last().insertSibling(A,"after",true);this.all.elements.push(E)}this.updateIndexes(C)},onRemove:function(C,A,B){this.deselect(B);this.all.removeElement(B,true);this.updateIndexes(B)},refreshNode:function(A){this.onUpdate(this.store,this.store.getAt(A))},updateIndexes:function(D,C){var B=this.all.elements;D=D||0;C=C||((C===0)?0:(B.length-1));for(var A=D;A<=C;A++){B[A].viewIndex=A}},setStore:function(A,B){if(!B&&this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("datachanged",this.refresh,this);this.store.un("add",this.onAdd,this);this.store.un("remove",this.onRemove,this);this.store.un("update",this.onUpdate,this);this.store.un("clear",this.refresh,this)}if(A){A=Ext.StoreMgr.lookup(A);A.on("beforeload",this.onBeforeLoad,this);A.on("datachanged",this.refresh,this);A.on("add",this.onAdd,this);A.on("remove",this.onRemove,this);A.on("update",this.onUpdate,this);A.on("clear",this.refresh,this)}this.store=A;if(A){this.refresh()}},findItemFromChild:function(A){return Ext.fly(A).findParent(this.itemSelector,this.el)},onClick:function(C){var B=C.getTarget(this.itemSelector,this.el);if(B){var A=this.indexOf(B);if(this.onItemClick(B,A,C)!==false){this.fireEvent("click",this,A,B,C)}}else{if(this.fireEvent("containerclick",this,C)!==false){this.clearSelections()}}},onContextMenu:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A){this.fireEvent("contextmenu",this,this.indexOf(A),A,B)}},onDblClick:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A){this.fireEvent("dblclick",this,this.indexOf(A),A,B)}},onMouseOver:function(B){var A=B.getTarget(this.itemSelector,this.el);if(A&&A!==this.lastItem){this.lastItem=A;Ext.fly(A).addClass(this.overClass)}},onMouseOut:function(A){if(this.lastItem){if(!A.within(this.lastItem,true)){Ext.fly(this.lastItem).removeClass(this.overClass);delete this.lastItem}}},onItemClick:function(B,A,C){if(this.fireEvent("beforeclick",this,A,B,C)===false){return false}if(this.multiSelect){this.doMultiSelection(B,A,C);C.preventDefault()}else{if(this.singleSelect){this.doSingleSelection(B,A,C);C.preventDefault()}}return true},doSingleSelection:function(B,A,C){if(C.ctrlKey&&this.isSelected(A)){this.deselect(A)}else{this.select(A,false)}},doMultiSelection:function(C,A,D){if(D.shiftKey&&this.last!==false){var B=this.last;this.selectRange(B,A,D.ctrlKey);this.last=B}else{if((D.ctrlKey||this.simpleSelect)&&this.isSelected(A)){this.deselect(A)}else{this.select(A,D.ctrlKey||D.shiftKey||this.simpleSelect)}}},getSelectionCount:function(){return this.selected.getCount()},getSelectedNodes:function(){return this.selected.elements},getSelectedIndexes:function(){var B=[],D=this.selected.elements;for(var C=0,A=D.length;C<A;C++){B.push(D[C].viewIndex)}return B},getSelectedRecords:function(){var D=[],C=this.selected.elements;for(var B=0,A=C.length;B<A;B++){D[D.length]=this.store.getAt(C[B].viewIndex)}return D},getRecords:function(B){var E=[],D=B;for(var C=0,A=D.length;C<A;C++){E[E.length]=this.store.getAt(D[C].viewIndex)}return E},getRecord:function(A){return this.store.getAt(A.viewIndex)},clearSelections:function(A,B){if(this.multiSelect||this.singleSelect){if(!B){this.selected.removeClass(this.selectedClass)}this.selected.clear();this.last=false;if(!A){this.fireEvent("selectionchange",this,this.selected.elements)}}},isSelected:function(A){return this.selected.contains(this.getNode(A))},deselect:function(A){if(this.isSelected(A)){var A=this.getNode(A);this.selected.removeElement(A);if(this.last==A.viewIndex){this.last=false}Ext.fly(A).removeClass(this.selectedClass);this.fireEvent("selectionchange",this,this.selected.elements)}},select:function(D,F,B){if(Ext.isArray(D)){if(!F){this.clearSelections(true)}for(var C=0,A=D.length;C<A;C++){this.select(D[C],true,true)}}else{var E=this.getNode(D);if(!F){this.clearSelections(true)}if(E&&!this.isSelected(E)){if(this.fireEvent("beforeselect",this,E,this.selected.elements)!==false){Ext.fly(E).addClass(this.selectedClass);this.selected.add(E);this.last=E.viewIndex;if(!B){this.fireEvent("selectionchange",this,this.selected.elements)}}}}},selectRange:function(C,A,B){if(!B){this.clearSelections(true)}this.select(this.getNodes(C,A),true)},getNode:function(A){if(typeof A=="string"){return document.getElementById(A)}else{if(typeof A=="number"){return this.all.elements[A]}}return A},getNodes:function(E,A){var D=this.all.elements;E=E||0;A=typeof A=="undefined"?D.length-1:A;var B=[],C;if(E<=A){for(C=E;C<=A;C++){B.push(D[C])}}else{for(C=E;C>=A;C--){B.push(D[C])}}return B},indexOf:function(A){A=this.getNode(A);if(typeof A.viewIndex=="number"){return A.viewIndex}return this.all.indexOf(A)},onBeforeLoad:function(){if(this.loadingText){this.clearSelections(false,true);this.el.update("<div class=\"loading-indicator\">"+this.loadingText+"</div>");this.all.clear()}}});Ext.reg("dataview",Ext.DataView);
-Ext.ColorPalette=function(A){Ext.ColorPalette.superclass.constructor.call(this,A);this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope,true)}};Ext.extend(Ext.ColorPalette,Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(B,A){var C=this.tpl||new Ext.XTemplate("<tpl for=\".\"><a href=\"#\" class=\"color-{.}\" hidefocus=\"on\"><em><span style=\"background:#{.}\" unselectable=\"on\">&#160;</span></em></a></tpl>");var D=document.createElement("div");D.className=this.itemCls;C.overwrite(D,this.colors);B.dom.insertBefore(D,A);this.el=Ext.get(D);this.el.on(this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!="click"){this.el.on("click",Ext.emptyFn,this,{delegate:"a",preventDefault:true})}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var A=this.value;this.value=null;this.select(A)}},handleClick:function(B,A){B.preventDefault();if(!this.disabled){var C=A.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(C.toUpperCase())}},select:function(A){A=A.replace("#","");if(A!=this.value||this.allowReselect){var B=this.el;if(this.value){B.child("a.color-"+this.value).removeClass("x-color-palette-sel")}B.child("a.color-"+A).addClass("x-color-palette-sel");this.value=A;this.fireEvent("select",this,A)}}});Ext.reg("colorpalette",Ext.ColorPalette);
-Ext.DatePicker=Ext.extend(Ext.Component,{todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minDate:null,maxDate:null,minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDays:null,disabledDaysText:"",disabledDatesRE:null,disabledDatesText:"",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,initComponent:function(){Ext.DatePicker.superclass.initComponent.call(this);this.value=this.value?this.value.clearTime():new Date().clearTime();this.addEvents("select");if(this.handler){this.on("select",this.handler,this.scope||this)}this.initDisabledDays()},initDisabledDays:function(){if(!this.disabledDatesRE&&this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;B<A.length;B++){C+=A[B];if(B!=A.length-1){C+="|"}}this.disabledDatesRE=new RegExp(C+")")}},setValue:function(B){var A=this.value;this.value=B.clearTime(true);if(this.el){this.update(this.value)}},getValue:function(){return this.value},focus:function(){if(this.el){this.update(this.activeDate)}},onRender:function(A,F){var C=["<table cellspacing=\"0\">","<tr><td class=\"x-date-left\"><a href=\"#\" title=\"",this.prevText,"\">&#160;</a></td><td class=\"x-date-middle\" align=\"center\"></td><td class=\"x-date-right\"><a href=\"#\" title=\"",this.nextText,"\">&#160;</a></td></tr>","<tr><td colspan=\"3\"><table class=\"x-date-inner\" cellspacing=\"0\"><thead><tr>"];var E=this.dayNames;for(var D=0;D<7;D++){var G=this.startDay+D;if(G>6){G=G-7}C.push("<th><span>",E[G].substr(0,1),"</span></th>")}C[C.length]="</tr></thead><tbody><tr>";for(var D=0;D<42;D++){if(D%7==0&&D!=0){C[C.length]="</tr><tr>"}C[C.length]="<td><a href=\"#\" hidefocus=\"on\" class=\"x-date-date\" tabIndex=\"1\"><em><span></span></em></a></td>"}C[C.length]="</tr></tbody></table></td></tr><tr><td colspan=\"3\" class=\"x-date-bottom\" align=\"center\"></td></tr></table><div class=\"x-date-mp\"></div>";var B=document.createElement("div");B.className="x-date-picker";B.innerHTML=C.join("");A.dom.insertBefore(B,F);this.el=Ext.get(B);this.eventEl=Ext.get(B.firstChild);new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.eventEl.on("mousewheel",this.handleMouseWheel,this);this.monthPicker=this.el.down("div.x-date-mp");this.monthPicker.enableDisplayMode("block");var I=new Ext.KeyNav(this.eventEl,{"left":function(J){J.ctrlKey?this.showPrevMonth():this.update(this.activeDate.add("d",-1))},"right":function(J){J.ctrlKey?this.showNextMonth():this.update(this.activeDate.add("d",1))},"up":function(J){J.ctrlKey?this.showNextYear():this.update(this.activeDate.add("d",-7))},"down":function(J){J.ctrlKey?this.showPrevYear():this.update(this.activeDate.add("d",7))},"pageUp":function(J){this.showNextMonth()},"pageDown":function(J){this.showPrevMonth()},"enter":function(J){J.stopPropagation();return true},scope:this});this.eventEl.on("click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button({text:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle",true)});this.mbtn.on("click",this.showMonthPicker,this);this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");var H=(new Date()).dateFormat(this.format);this.todayBtn=new Ext.Button({renderTo:this.el.child("td.x-date-bottom",true),text:String.format(this.todayText,H),tooltip:String.format(this.todayTip,H),handler:this.selectToday,scope:this});if(Ext.isIE){this.el.repaint()}this.update(this.value)},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var A=["<table border=\"0\" cellspacing=\"0\">"];for(var B=0;B<6;B++){A.push("<tr><td class=\"x-date-mp-month\"><a href=\"#\">",this.monthNames[B].substr(0,3),"</a></td>","<td class=\"x-date-mp-month x-date-mp-sep\"><a href=\"#\">",this.monthNames[B+6].substr(0,3),"</a></td>",B==0?"<td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-prev\"></a></td><td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-next\"></a></td></tr>":"<td class=\"x-date-mp-year\"><a href=\"#\"></a></td><td class=\"x-date-mp-year\"><a href=\"#\"></a></td></tr>")}A.push("<tr class=\"x-date-mp-btns\"><td colspan=\"4\"><button type=\"button\" class=\"x-date-mp-ok\">",this.okText,"</button><button type=\"button\" class=\"x-date-mp-cancel\">",this.cancelText,"</button></td></tr>","</table>");this.monthPicker.update(A.join(""));this.monthPicker.on("click",this.onMonthClick,this);this.monthPicker.on("dblclick",this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select("td.x-date-mp-month");this.mpYears=this.monthPicker.select("td.x-date-mp-year");this.mpMonths.each(function(C,D,E){E+=1;if((E%2)==0){C.dom.xmonth=5+Math.round(E*0.5)}else{C.dom.xmonth=Math.round((E-1)*0.5)}})}},showMonthPicker:function(){this.createMonthPicker();var A=this.el.getSize();this.monthPicker.setSize(A);this.monthPicker.child("table").setSize(A);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn("t",{duration:0.2})},updateMPYear:function(E){this.mpyear=E;var C=this.mpYears.elements;for(var B=1;B<=10;B++){var D=C[B-1],A;if((B%2)==0){A=E+Math.round(B*0.5);D.firstChild.innerHTML=A;D.xyear=A}else{A=E-(5-Math.round(B*0.5));D.firstChild.innerHTML=A;D.xyear=A}this.mpYears.item(B-1)[A==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")}},updateMPMonth:function(A){this.mpMonths.each(function(B,C,D){B[B.dom.xmonth==A?"addClass":"removeClass"]("x-date-mp-sel")})},selectMPMonth:function(A){},onMonthClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(C.is("button.x-date-mp-cancel")){this.hideMonthPicker()}else{if(C.is("button.x-date-mp-ok")){this.update(new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-month",2)){this.mpMonths.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelMonth=A.dom.xmonth}else{if(A=C.up("td.x-date-mp-year",2)){this.mpYears.removeClass("x-date-mp-sel");A.addClass("x-date-mp-sel");this.mpSelYear=A.dom.xyear}else{if(C.is("a.x-date-mp-prev")){this.updateMPYear(this.mpyear-10)}else{if(C.is("a.x-date-mp-next")){this.updateMPYear(this.mpyear+10)}}}}}}},onMonthDblClick:function(D,B){D.stopEvent();var C=new Ext.Element(B),A;if(A=C.up("td.x-date-mp-month",2)){this.update(new Date(this.mpSelYear,A.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}else{if(A=C.up("td.x-date-mp-year",2)){this.update(new Date(A.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker()}}},hideMonthPicker:function(A){if(this.monthPicker){if(A===true){this.monthPicker.hide()}else{this.monthPicker.slideOut("t",{duration:0.2})}}},showPrevMonth:function(A){this.update(this.activeDate.add("mo",-1))},showNextMonth:function(A){this.update(this.activeDate.add("mo",1))},showPrevYear:function(){this.update(this.activeDate.add("y",-1))},showNextYear:function(){this.update(this.activeDate.add("y",1))},handleMouseWheel:function(A){var B=A.getWheelDelta();if(B>0){this.showPrevMonth();A.stopEvent()}else{if(B<0){this.showNextMonth();A.stopEvent()}}},handleDateClick:function(B,A){B.stopEvent();if(A.dateValue&&!Ext.fly(A.parentNode).hasClass("x-date-disabled")){this.setValue(new Date(A.dateValue));this.fireEvent("select",this,this.value)}},selectToday:function(){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value)},update:function(W){var A=this.activeDate;this.activeDate=W;if(A&&this.el){var I=W.getTime();if(A.getMonth()==W.getMonth()&&A.getFullYear()==W.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(a){if(a.dom.firstChild.dateValue==I){a.addClass("x-date-selected");setTimeout(function(){try{a.dom.firstChild.focus()}catch(b){}},50);return false}});return }}var F=W.getDaysInMonth();var J=W.getFirstDateOfMonth();var C=J.getDay()-this.startDay;if(C<=this.startDay){C+=7}var S=W.add("mo",-1);var D=S.getDaysInMonth()-C;var B=this.cells.elements;var K=this.textNodes;F+=C;var P=86400000;var U=(new Date(S.getFullYear(),S.getMonth(),D)).clearTime();var T=new Date().clearTime().getTime();var N=W.clearTime().getTime();var M=this.minDate?this.minDate.clearTime():Number.NEGATIVE_INFINITY;var Q=this.maxDate?this.maxDate.clearTime():Number.POSITIVE_INFINITY;var X=this.disabledDatesRE;var L=this.disabledDatesText;var Z=this.disabledDays?this.disabledDays.join(""):false;var V=this.disabledDaysText;var R=this.format;var G=function(d,a){a.title="";var b=U.getTime();a.firstChild.dateValue=b;if(b==T){a.className+=" x-date-today";a.title=d.todayText}if(b==N){a.className+=" x-date-selected";setTimeout(function(){try{a.firstChild.focus()}catch(f){}},50)}if(b<M){a.className=" x-date-disabled";a.title=d.minText;return }if(b>Q){a.className=" x-date-disabled";a.title=d.maxText;return }if(Z){if(Z.indexOf(U.getDay())!=-1){a.title=V;a.className=" x-date-disabled"}}if(X&&R){var c=U.dateFormat(R);if(X.test(c)){a.title=L.replace("%0",c);a.className=" x-date-disabled"}}};var O=0;for(;O<C;O++){K[O].innerHTML=(++D);U.setDate(U.getDate()+1);B[O].className="x-date-prevday";G(this,B[O])}for(;O<F;O++){intDay=O-C+1;K[O].innerHTML=(intDay);U.setDate(U.getDate()+1);B[O].className="x-date-active";G(this,B[O])}var Y=0;for(;O<42;O++){K[O].innerHTML=(++Y);U.setDate(U.getDate()+1);B[O].className="x-date-nextday";G(this,B[O])}this.mbtn.setText(this.monthNames[W.getMonth()]+" "+W.getFullYear());if(!this.internalRender){var E=this.el.dom.firstChild;var H=E.offsetWidth;this.el.setWidth(H+this.el.getBorderWidth("lr"));Ext.fly(E).setWidth(H);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){E.rows[0].cells[1].style.width=(H-(E.rows[0].cells[0].offsetWidth+E.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[W])}}},beforeDestroy:function(){this.mbtn.destroy();this.todayBtn.destroy()}});Ext.reg("datepicker",Ext.DatePicker);
-Ext.TabPanel=Ext.extend(Ext.Panel,{monitorResize:true,deferredRender:true,tabWidth:120,minTabWidth:30,resizeTabs:false,enableTabScroll:false,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,tabPosition:"top",baseCls:"x-tab-panel",autoTabs:false,autoTabSelector:"div.x-tab",activeTab:null,tabMargin:2,plain:false,wheelIncrement:20,idDelimiter:"__",itemCls:"x-tab-item",elements:"body",headerAsText:false,frame:false,hideBorders:true,initComponent:function(){this.frame=false;Ext.TabPanel.superclass.initComponent.call(this);this.addEvents("beforetabchange","tabchange","contextmenu");this.setLayout(new Ext.layout.CardLayout({deferredRender:this.deferredRender}));if(this.tabPosition=="top"){this.elements+=",header";this.stripTarget="header"}else{this.elements+=",footer";this.stripTarget="footer"}if(!this.stack){this.stack=Ext.TabPanel.AccessStack()}this.initItems()},render:function(){Ext.TabPanel.superclass.render.apply(this,arguments);if(this.activeTab!==undefined){var A=this.activeTab;delete this.activeTab;this.setActiveTab(A)}},onRender:function(C,A){Ext.TabPanel.superclass.onRender.call(this,C,A);if(this.plain){var E=this.tabPosition=="top"?"header":"footer";this[E].addClass("x-tab-panel-"+E+"-plain")}var B=this[this.stripTarget];this.stripWrap=B.createChild({cls:"x-tab-strip-wrap",cn:{tag:"ul",cls:"x-tab-strip x-tab-strip-"+this.tabPosition}});this.stripSpacer=B.createChild({cls:"x-tab-strip-spacer"});this.strip=new Ext.Element(this.stripWrap.dom.firstChild);this.edge=this.strip.createChild({tag:"li",cls:"x-tab-edge"});this.strip.createChild({cls:"x-clear"});this.body.addClass("x-tab-panel-body-"+this.tabPosition);if(!this.itemTpl){var D=new Ext.Template("<li class=\"{cls}\" id=\"{id}\"><a class=\"x-tab-strip-close\" onclick=\"return false;\"></a>","<a class=\"x-tab-right\" href=\"#\" onclick=\"return false;\"><em class=\"x-tab-left\">","<span class=\"x-tab-strip-inner\"><span class=\"x-tab-strip-text {iconCls}\">{text}</span></span>","</em></a></li>");D.disableFormats=true;D.compile();Ext.TabPanel.prototype.itemTpl=D}this.items.each(this.initTab,this)},afterRender:function(){Ext.TabPanel.superclass.afterRender.call(this);if(this.autoTabs){this.readTabs(false)}},initEvents:function(){Ext.TabPanel.superclass.initEvents.call(this);this.on("add",this.onAdd,this);this.on("remove",this.onRemove,this);this.strip.on("mousedown",this.onStripMouseDown,this);this.strip.on("click",this.onStripClick,this);this.strip.on("contextmenu",this.onStripContextMenu,this);if(this.enableTabScroll){this.strip.on("mousewheel",this.onWheel,this)}},findTargets:function(C){var B=null;var A=C.getTarget("li",this.strip);if(A){B=this.getComponent(A.id.split(this.idDelimiter)[1]);if(B.disabled){return{close:null,item:null,el:null}}}return{close:C.getTarget(".x-tab-strip-close",this.strip),item:B,el:A}},onStripMouseDown:function(B){B.preventDefault();if(B.button!=0){return }var A=this.findTargets(B);if(A.close){this.remove(A.item);return }if(A.item&&A.item!=this.activeTab){this.setActiveTab(A.item)}},onStripClick:function(B){var A=this.findTargets(B);if(!A.close&&A.item&&A.item!=this.activeTab){this.setActiveTab(A.item)}},onStripContextMenu:function(B){B.preventDefault();var A=this.findTargets(B);if(A.item){this.fireEvent("contextmenu",this,A.item,B)}},readTabs:function(D){if(D===true){this.items.each(function(G){this.remove(G)},this)}var C=this.el.query(this.autoTabSelector);for(var B=0,A=C.length;B<A;B++){var E=C[B];var F=E.getAttribute("title");E.removeAttribute("title");this.add({title:F,el:E})}},initTab:function(D,B){var E=this.strip.dom.childNodes[B];var A=D.closable?"x-tab-strip-closable":"";if(D.disabled){A+=" x-item-disabled"}if(D.iconCls){A+=" x-tab-with-icon"}if(D.tabCls){A+=" "+D.tabCls}var F={id:this.id+this.idDelimiter+D.getItemId(),text:D.title,cls:A,iconCls:D.iconCls||""};var C=E?this.itemTpl.insertBefore(E,F):this.itemTpl.append(this.strip,F);Ext.fly(C).addClassOnOver("x-tab-strip-over");if(D.tabTip){Ext.fly(C).child("span.x-tab-strip-text",true).qtip=D.tabTip}D.on("disable",this.onItemDisabled,this);D.on("enable",this.onItemEnabled,this);D.on("titlechange",this.onItemTitleChanged,this);D.on("beforeshow",this.onBeforeShowItem,this)},onAdd:function(C,B,A){this.initTab(B,A);if(this.items.getCount()==1){this.syncSize()}this.delegateUpdates()},onBeforeAdd:function(B){var A=B.events?(this.items.containsKey(B.getItemId())?B:null):this.items.get(B);if(A){this.setActiveTab(B);return false}Ext.TabPanel.superclass.onBeforeAdd.apply(this,arguments);var C=B.elements;B.elements=C?C.replace(",header",""):C;B.border=(B.border===true)},onRemove:function(C,B){Ext.removeNode(this.getTabEl(B));this.stack.remove(B);if(B==this.activeTab){var A=this.stack.next();if(A){this.setActiveTab(A)}else{this.setActiveTab(0)}}this.delegateUpdates()},onBeforeShowItem:function(A){if(A!=this.activeTab){this.setActiveTab(A);return false}},onItemDisabled:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).addClass("x-item-disabled")}this.stack.remove(B)},onItemEnabled:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).removeClass("x-item-disabled")}},onItemTitleChanged:function(B){var A=this.getTabEl(B);if(A){Ext.fly(A).child("span.x-tab-strip-text",true).innerHTML=B.title}},getTabEl:function(A){var B=(typeof A==="number")?this.items.items[A].getItemId():A.getItemId();return document.getElementById(this.id+this.idDelimiter+B)},onResize:function(){Ext.TabPanel.superclass.onResize.apply(this,arguments);this.delegateUpdates()},beginUpdate:function(){this.suspendUpdates=true},endUpdate:function(){this.suspendUpdates=false;this.delegateUpdates()},hideTabStripItem:function(B){B=this.getComponent(B);var A=this.getTabEl(B);if(A){A.style.display="none";this.delegateUpdates()}},unhideTabStripItem:function(B){B=this.getComponent(B);var A=this.getTabEl(B);if(A){A.style.display="";this.delegateUpdates()}},delegateUpdates:function(){if(this.suspendUpdates){return }if(this.resizeTabs&&this.rendered){this.autoSizeTabs()}if(this.enableTabScroll&&this.rendered){this.autoScrollTabs()}},autoSizeTabs:function(){var G=this.items.length;var B=this.tabPosition!="bottom"?"header":"footer";var C=this[B].dom.offsetWidth;var A=this[B].dom.clientWidth;if(!this.resizeTabs||G<1||!A){return }var I=Math.max(Math.min(Math.floor((A-4)/G)-this.tabMargin,this.tabWidth),this.minTabWidth);this.lastTabWidth=I;var K=this.stripWrap.dom.getElementsByTagName("li");for(var E=0,H=K.length-1;E<H;E++){var J=K[E];var L=J.childNodes[1].firstChild.firstChild;var F=J.offsetWidth;var D=L.offsetWidth;L.style.width=(I-(F-D))+"px"}},adjustBodyWidth:function(A){if(this.header){this.header.setWidth(A)}if(this.footer){this.footer.setWidth(A)}return A},setActiveTab:function(C){C=this.getComponent(C);if(!C||this.fireEvent("beforetabchange",this,C,this.activeTab)===false){return }if(!this.rendered){this.activeTab=C;return }if(this.activeTab!=C){if(this.activeTab){var A=this.getTabEl(this.activeTab);if(A){Ext.fly(A).removeClass("x-tab-strip-active")}this.activeTab.fireEvent("deactivate",this.activeTab)}var B=this.getTabEl(C);Ext.fly(B).addClass("x-tab-strip-active");this.activeTab=C;this.stack.add(C);this.layout.setActiveItem(C);if(this.layoutOnTabChange&&C.doLayout){C.doLayout()}if(this.scrolling){this.scrollToTab(C,this.animScroll)}C.fireEvent("activate",C);this.fireEvent("tabchange",this,C)}},getActiveTab:function(){return this.activeTab||null},getItem:function(A){return this.getComponent(A)},autoScrollTabs:function(){var G=this.items.length;var D=this.header.dom.offsetWidth;var C=this.header.dom.clientWidth;var F=this.stripWrap;var E=F.dom;var B=E.offsetWidth;var H=this.getScrollPos();var A=this.edge.getOffsetsTo(this.stripWrap)[0]+H;if(!this.enableTabScroll||G<1||B<20){return }if(A<=C){E.scrollLeft=0;F.setWidth(C);if(this.scrolling){this.scrolling=false;this.header.removeClass("x-tab-scrolling");this.scrollLeft.hide();this.scrollRight.hide();if(Ext.isAir){E.style.marginLeft="";E.style.marginRight=""}}}else{if(!this.scrolling){this.header.addClass("x-tab-scrolling");if(Ext.isAir){E.style.marginLeft="18px";E.style.marginRight="18px"}}C-=F.getMargins("lr");F.setWidth(C>20?C:20);if(!this.scrolling){if(!this.scrollLeft){this.createScrollers()}else{this.scrollLeft.show();this.scrollRight.show()}}this.scrolling=true;if(H>(A-C)){E.scrollLeft=A-C}else{this.scrollToTab(this.activeTab,false)}this.updateScrollButtons()}},createScrollers:function(){var C=this.stripWrap.dom.offsetHeight;var A=this.header.insertFirst({cls:"x-tab-scroller-left"});A.setHeight(C);A.addClassOnOver("x-tab-scroller-left-over");this.leftRepeater=new Ext.util.ClickRepeater(A,{interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});this.scrollLeft=A;var B=this.header.insertFirst({cls:"x-tab-scroller-right"});B.setHeight(C);B.addClassOnOver("x-tab-scroller-right-over");this.rightRepeater=new Ext.util.ClickRepeater(B,{interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});this.scrollRight=B},getScrollWidth:function(){return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()},getScrollPos:function(){return parseInt(this.stripWrap.dom.scrollLeft,10)||0},getScrollArea:function(){return parseInt(this.stripWrap.dom.clientWidth,10)||0},getScrollAnim:function(){return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}},getScrollIncrement:function(){return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)},scrollToTab:function(E,A){if(!E){return }var C=this.getTabEl(E);var G=this.getScrollPos(),D=this.getScrollArea();var F=Ext.fly(C).getOffsetsTo(this.stripWrap)[0]+G;var B=F+C.offsetWidth;if(F<G){this.scrollTo(F,A)}else{if(B>(G+D)){this.scrollTo(B-D,A)}}},scrollTo:function(B,A){this.stripWrap.scrollTo("left",B,A?this.getScrollAnim():false);if(!A){this.updateScrollButtons()}},onWheel:function(D){var E=D.getWheelDelta()*this.wheelIncrement*-1;D.stopEvent();var F=this.getScrollPos();var C=F+E;var A=this.getScrollWidth()-this.getScrollArea();var B=Math.max(0,Math.min(A,C));if(B!=F){this.scrollTo(B,false)}},onScrollRight:function(){var A=this.getScrollWidth()-this.getScrollArea();var C=this.getScrollPos();var B=Math.min(A,C+this.getScrollIncrement());if(B!=C){this.scrollTo(B,this.animScroll)}},onScrollLeft:function(){var B=this.getScrollPos();var A=Math.max(0,B-this.getScrollIncrement());if(A!=B){this.scrollTo(A,this.animScroll)}},updateScrollButtons:function(){var A=this.getScrollPos();this.scrollLeft[A==0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");this.scrollRight[A>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")}});Ext.reg("tabpanel",Ext.TabPanel);Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;Ext.TabPanel.AccessStack=function(){var A=[];return{add:function(B){A.push(B);if(A.length>10){A.shift()}},remove:function(E){var D=[];for(var C=0,B=A.length;C<B;C++){if(A[C]!=E){D.push(A[C])}}A=D},next:function(){return A.pop()}}};
-Ext.Button=Ext.extend(Ext.Component,{hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first",initComponent:function(){Ext.Button.superclass.initComponent.call(this);this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu)}if(typeof this.toggleGroup==="string"){this.enableToggle=true}},onRender:function(C,A){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"x-btn-wrap\"><tbody><tr>","<td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><em unselectable=\"on\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></em></td><td class=\"x-btn-right\"><i>&#160;</i></td>","</tr></tbody></table>")}this.template=Ext.Button.buttonTemplate}var B,E=[this.text||"&#160;",this.type];if(A){B=this.template.insertBefore(A,E,true)}else{B=this.template.append(C,E,true)}var D=B.child(this.buttonSelector);D.on("focus",this.onFocus,this);D.on("blur",this.onBlur,this);this.initButtonEl(B,D);if(this.menu){this.el.child(this.menuClassTarget).addClass("x-btn-with-menu")}Ext.ButtonToggleMgr.register(this)},initButtonEl:function(B,C){this.el=B;B.addClass("x-btn");if(this.icon){C.setStyle("background-image","url("+this.icon+")")}if(this.iconCls){C.addClass(this.iconCls);if(!this.cls){B.addClass(this.text?"x-btn-text-icon":"x-btn-icon")}}if(this.tabIndex!==undefined){C.dom.tabIndex=this.tabIndex}if(this.tooltip){if(typeof this.tooltip=="object"){Ext.QuickTips.register(Ext.apply({target:C.id},this.tooltip))}else{C.dom[this.tooltipType]=this.tooltip}}if(this.pressed){this.el.addClass("x-btn-pressed")}if(this.handleMouseEvents){B.on("mouseover",this.onMouseOver,this);B.on("mousedown",this.onMouseDown,this)}if(this.menu){this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this)}if(this.id){this.el.dom.id=this.el.id=this.id}if(this.repeat){var A=new Ext.util.ClickRepeater(B,typeof this.repeat=="object"?this.repeat:{});A.on("click",this.onClick,this)}B.on(this.clickEvent,this.onClick,this)},afterRender:function(){Ext.Button.superclass.afterRender.call(this);if(Ext.isIE6){this.autoWidth.defer(1,this)}else{this.autoWidth()}},setIconClass:function(A){if(this.el){this.el.child(this.buttonSelector).replaceClass(this.iconCls,A)}this.iconCls=A},beforeDestroy:function(){if(this.rendered){var A=this.el.child(this.buttonSelector);if(A){A.removeAllListeners()}}if(this.menu){Ext.destroy(this.menu)}},onDestroy:function(){if(this.rendered){Ext.ButtonToggleMgr.unregister(this)}},autoWidth:function(){if(this.el){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if(this.el.getWidth()<this.minWidth){this.el.setWidth(this.minWidth)}}}},setHandler:function(B,A){this.handler=B;this.scope=A},setText:function(A){this.text=A;if(this.el){this.el.child("td.x-btn-center "+this.buttonSelector).update(A)}this.autoWidth()},getText:function(){return this.text},toggle:function(A){A=A===undefined?!this.pressed:A;if(A!=this.pressed){if(A){this.el.addClass("x-btn-pressed");this.pressed=true;this.fireEvent("toggle",this,true)}else{this.el.removeClass("x-btn-pressed");this.pressed=false;this.fireEvent("toggle",this,false)}if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,A)}}},focus:function(){this.el.child(this.buttonSelector).focus()},onDisable:function(){if(this.el){if(!Ext.isIE6||!this.text){this.el.addClass(this.disabledClass)}this.el.dom.disabled=true}this.disabled=true},onEnable:function(){if(this.el){if(!Ext.isIE6||!this.text){this.el.removeClass(this.disabledClass)}this.el.dom.disabled=false}this.disabled=false},showMenu:function(){if(this.menu){this.menu.show(this.el,this.menuAlign)}return this},hideMenu:function(){if(this.menu){this.menu.hide()}return this},hasVisibleMenu:function(){return this.menu&&this.menu.isVisible()},onClick:function(A){if(A){A.preventDefault()}if(A.button!=0){return }if(!this.disabled){if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle()}if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("click",this,A);if(this.handler){this.handler.call(this.scope||this,this,A)}}},isMenuTriggerOver:function(B,A){return this.menu&&!A},isMenuTriggerOut:function(B,A){return this.menu&&!A},onMouseOver:function(B){if(!this.disabled){var A=B.within(this.el,true);if(!A){this.el.addClass("x-btn-over");Ext.getDoc().on("mouseover",this.monitorMouseOver,this);this.fireEvent("mouseover",this,B)}if(this.isMenuTriggerOver(B,A)){this.fireEvent("menutriggerover",this,this.menu,B)}}},monitorMouseOver:function(A){if(A.target!=this.el.dom&&!A.within(this.el)){Ext.getDoc().un("mouseover",this.monitorMouseOver,this);this.onMouseOut(A)}},onMouseOut:function(B){var A=B.within(this.el)&&B.target!=this.el.dom;this.el.removeClass("x-btn-over");this.fireEvent("mouseout",this,B);if(this.isMenuTriggerOut(B,A)){this.fireEvent("menutriggerout",this,this.menu,B)}},onFocus:function(A){if(!this.disabled){this.el.addClass("x-btn-focus")}},onBlur:function(A){this.el.removeClass("x-btn-focus")},getClickEl:function(B,A){return this.el},onMouseDown:function(A){if(!this.disabled&&A.button==0){this.getClickEl(A).addClass("x-btn-click");Ext.getDoc().on("mouseup",this.onMouseUp,this)}},onMouseUp:function(A){if(A.button==0){this.getClickEl(A,true).removeClass("x-btn-click");Ext.getDoc().un("mouseup",this.onMouseUp,this)}},onMenuShow:function(A){this.ignoreNextClick=0;this.el.addClass("x-btn-menu-active");this.fireEvent("menushow",this,this.menu)},onMenuHide:function(A){this.el.removeClass("x-btn-menu-active");this.ignoreNextClick=this.restoreClick.defer(250,this);this.fireEvent("menuhide",this,this.menu)},restoreClick:function(){this.ignoreNextClick=0}});Ext.reg("button",Ext.Button);Ext.ButtonToggleMgr=function(){var A={};function B(E,G){if(G){var F=A[E.toggleGroup];for(var D=0,C=F.length;D<C;D++){if(F[D]!=E){F[D].toggle(false)}}}}return{register:function(C){if(!C.toggleGroup){return }var D=A[C.toggleGroup];if(!D){D=A[C.toggleGroup]=[]}D.push(C);C.on("toggle",B)},unregister:function(C){if(!C.toggleGroup){return }var D=A[C.toggleGroup];if(D){D.remove(C);C.un("toggle",B)}}}}();
-Ext.SplitButton=Ext.extend(Ext.Button,{arrowSelector:"button:last",initComponent:function(){Ext.SplitButton.superclass.initComponent.call(this);this.addEvents("arrowclick")},onRender:function(D,A){var B=new Ext.Template("<table cellspacing=\"0\" class=\"x-btn-menu-wrap x-btn\"><tr><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-text-wrap\"><tbody>","<tr><td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></td></tr>","</tbody></table></td><td>","<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-arrow-wrap\"><tbody>","<tr><td class=\"x-btn-center\"><button class=\"x-btn-menu-arrow-el\" type=\"button\">&#160;</button></td><td class=\"x-btn-right\"><i>&#160;</i></td></tr>","</tbody></table></td></tr></table>");var C,F=[this.text||"&#160;",this.type];if(A){C=B.insertBefore(A,F,true)}else{C=B.append(D,F,true)}var E=C.child(this.buttonSelector);this.initButtonEl(C,E);this.arrowBtnTable=C.child("table:last");if(this.arrowTooltip){C.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip}},autoWidth:function(){if(this.el){var C=this.el.child("table:first");var B=this.el.child("table:last");this.el.setWidth("auto");C.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var A=this.el.child(this.buttonSelector);if(A&&A.getWidth()>20){A.clip();A.setWidth(Ext.util.TextMetrics.measure(A,this.text).width+A.getFrameWidth("lr"))}}if(this.minWidth){if((C.getWidth()+B.getWidth())<this.minWidth){C.setWidth(this.minWidth-B.getWidth())}}this.el.setWidth(C.getWidth()+B.getWidth())}},setArrowHandler:function(B,A){this.arrowHandler=B;this.scope=A},onClick:function(A){A.preventDefault();if(!this.disabled){if(A.getTarget(".x-btn-menu-arrow-wrap")){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu()}this.fireEvent("arrowclick",this,A);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,A)}}else{if(this.enableToggle){this.toggle()}this.fireEvent("click",this,A);if(this.handler){this.handler.call(this.scope||this,this,A)}}}},getClickEl:function(B,A){if(!A){return(this.lastClickEl=B.getTarget("table",10,true))}return this.lastClickEl},onDisable:function(){if(this.el){if(!Ext.isIE6){this.el.addClass("x-item-disabled")}this.el.child(this.buttonSelector).dom.disabled=true;this.el.child(this.arrowSelector).dom.disabled=true}this.disabled=true},onEnable:function(){if(this.el){if(!Ext.isIE6){this.el.removeClass("x-item-disabled")}this.el.child(this.buttonSelector).dom.disabled=false;this.el.child(this.arrowSelector).dom.disabled=false}this.disabled=false},isMenuTriggerOver:function(A){return this.menu&&A.within(this.arrowBtnTable)&&!A.within(this.arrowBtnTable,true)},isMenuTriggerOut:function(B,A){return this.menu&&!B.within(this.arrowBtnTable)},onDestroy:function(){Ext.destroy(this.arrowBtnTable);Ext.SplitButton.superclass.onDestroy.call(this)}});Ext.MenuButton=Ext.SplitButton;Ext.reg("splitbutton",Ext.SplitButton);
-Ext.CycleButton=Ext.extend(Ext.SplitButton,{getItemText:function(A){if(A&&this.showText===true){var B="";if(this.prependText){B+=this.prependText}B+=A.text;return B}return undefined},setActiveItem:function(C,A){if(typeof C!="object"){C=this.menu.items.get(C)}if(C){if(!this.rendered){this.text=this.getItemText(C);this.iconCls=C.iconCls}else{var B=this.getItemText(C);if(B){this.setText(B)}this.setIconClass(C.iconCls)}this.activeItem=C;if(!C.checked){C.setChecked(true,true)}if(this.forceIcon){this.setIconClass(this.forceIcon)}if(!A){this.fireEvent("change",this,C)}}},getActiveItem:function(){return this.activeItem},initComponent:function(){this.addEvents("change");if(this.changeHandler){this.on("change",this.changeHandler,this.scope||this);delete this.changeHandler}this.itemCount=this.items.length;this.menu={cls:"x-cycle-menu",items:[]};var D;for(var B=0,A=this.itemCount;B<A;B++){var C=this.items[B];C.group=C.group||this.id;C.itemIndex=B;C.checkHandler=this.checkHandler;C.scope=this;C.checked=C.checked||false;this.menu.items.push(C);if(C.checked){D=C}}this.setActiveItem(D,true);Ext.CycleButton.superclass.initComponent.call(this);this.on("click",this.toggleSelected,this)},checkHandler:function(A,B){if(B){this.setActiveItem(A)}},toggleSelected:function(){this.menu.render();var C,A;for(var B=1;B<this.itemCount;B++){C=(this.activeItem.itemIndex+B)%this.itemCount;A=this.menu.items.itemAt(C);if(!A.disabled){A.setChecked(true);break}}}});Ext.reg("cycle",Ext.CycleButton);
-Ext.Toolbar=function(A){if(Ext.isArray(A)){A={buttons:A}}Ext.Toolbar.superclass.constructor.call(this,A)};(function(){var A=Ext.Toolbar;Ext.extend(A,Ext.BoxComponent,{trackMenus:true,initComponent:function(){A.superclass.initComponent.call(this);if(this.items){this.buttons=this.items}this.items=new Ext.util.MixedCollection(false,function(B){return B.itemId||B.id||Ext.id()})},autoCreate:{cls:"x-toolbar x-small-editor",html:"<table cellspacing=\"0\"><tr></tr></table>"},onRender:function(C,B){this.el=C.createChild(Ext.apply({id:this.id},this.autoCreate),B);this.tr=this.el.child("tr",true)},afterRender:function(){A.superclass.afterRender.call(this);if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons}},add:function(){var C=arguments,B=C.length;for(var D=0;D<B;D++){var E=C[D];if(E.isFormField){this.addField(E)}else{if(E.render){this.addItem(E)}else{if(typeof E=="string"){if(E=="separator"||E=="-"){this.addSeparator()}else{if(E==" "){this.addSpacer()}else{if(E=="->"){this.addFill()}else{this.addText(E)}}}}else{if(E.tagName){this.addElement(E)}else{if(typeof E=="object"){if(E.xtype){this.addField(Ext.ComponentMgr.create(E,"button"))}else{this.addButton(E)}}}}}}}},addSeparator:function(){return this.addItem(new A.Separator())},addSpacer:function(){return this.addItem(new A.Spacer())},addFill:function(){return this.addItem(new A.Fill())},addElement:function(B){return this.addItem(new A.Item(B))},addItem:function(B){var C=this.nextBlock();this.initMenuTracking(B);B.render(C);this.items.add(B);return B},addButton:function(D){if(Ext.isArray(D)){var F=[];for(var E=0,C=D.length;E<C;E++){F.push(this.addButton(D[E]))}return F}var B=D;if(!(D instanceof A.Button)){B=D.split?new A.SplitButton(D):new A.Button(D)}var G=this.nextBlock();this.initMenuTracking(B);B.render(G);this.items.add(B);return B},initMenuTracking:function(B){if(this.trackMenus&&B.menu){B.on({"menutriggerover":this.onButtonTriggerOver,"menushow":this.onButtonMenuShow,"menuhide":this.onButtonMenuHide,scope:this})}},addText:function(B){return this.addItem(new A.TextItem(B))},insertButton:function(C,F){if(Ext.isArray(F)){var E=[];for(var D=0,B=F.length;D<B;D++){E.push(this.insertButton(C+D,F[D]))}return E}if(!(F instanceof A.Button)){F=new A.Button(F)}var G=document.createElement("td");this.tr.insertBefore(G,this.tr.childNodes[C]);this.initMenuTracking(F);F.render(G);this.items.insert(C,F);return F},addDom:function(C,B){var E=this.nextBlock();Ext.DomHelper.overwrite(E,C);var D=new A.Item(E.firstChild);D.render(E);this.items.add(D);return D},addField:function(C){var D=this.nextBlock();C.render(D);var B=new A.Item(D.firstChild);B.render(D);this.items.add(B);return B},nextBlock:function(){var B=document.createElement("td");this.tr.appendChild(B);return B},onDestroy:function(){Ext.Toolbar.superclass.onDestroy.call(this);if(this.rendered){if(this.items){Ext.destroy.apply(Ext,this.items.items)}Ext.Element.uncache(this.tr)}},onDisable:function(){this.items.each(function(B){if(B.disable){B.disable()}})},onEnable:function(){this.items.each(function(B){if(B.enable){B.enable()}})},onButtonTriggerOver:function(B){if(this.activeMenuBtn&&this.activeMenuBtn!=B){this.activeMenuBtn.hideMenu();B.showMenu();this.activeMenuBtn=B}},onButtonMenuShow:function(B){this.activeMenuBtn=B},onButtonMenuHide:function(B){delete this.activeMenuBtn}});Ext.reg("toolbar",Ext.Toolbar);A.Item=function(B){this.el=Ext.getDom(B);this.id=Ext.id(this.el);this.hidden=false};A.Item.prototype={getEl:function(){return this.el},render:function(B){this.td=B;B.appendChild(this.el)},destroy:function(){if(this.td&&this.td.parentNode){this.td.parentNode.removeChild(this.td)}},show:function(){this.hidden=false;this.td.style.display=""},hide:function(){this.hidden=true;this.td.style.display="none"},setVisible:function(B){if(B){this.show()}else{this.hide()}},focus:function(){Ext.fly(this.el).focus()},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false}};Ext.reg("tbitem",A.Item);A.Separator=function(){var B=document.createElement("span");B.className="ytb-sep";A.Separator.superclass.constructor.call(this,B)};Ext.extend(A.Separator,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbseparator",A.Separator);A.Spacer=function(){var B=document.createElement("div");B.className="ytb-spacer";A.Spacer.superclass.constructor.call(this,B)};Ext.extend(A.Spacer,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbspacer",A.Spacer);A.Fill=Ext.extend(A.Spacer,{render:function(B){B.style.width="100%";A.Fill.superclass.render.call(this,B)}});Ext.reg("tbfill",A.Fill);A.TextItem=function(B){var C=document.createElement("span");C.className="ytb-text";C.innerHTML=B.text?B.text:B;A.TextItem.superclass.constructor.call(this,C)};Ext.extend(A.TextItem,A.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.reg("tbtext",A.TextItem);A.Button=Ext.extend(Ext.Button,{hideParent:true,onDestroy:function(){A.Button.superclass.onDestroy.call(this);if(this.container){this.container.remove()}}});Ext.reg("tbbutton",A.Button);A.SplitButton=Ext.extend(Ext.SplitButton,{hideParent:true,onDestroy:function(){A.SplitButton.superclass.onDestroy.call(this);if(this.container){this.container.remove()}}});Ext.reg("tbsplit",A.SplitButton);A.MenuButton=A.SplitButton})();
-Ext.PagingToolbar=Ext.extend(Ext.Toolbar,{pageSize:20,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",paramNames:{start:"start",limit:"limit"},initComponent:function(){Ext.PagingToolbar.superclass.initComponent.call(this);this.cursor=0;this.bind(this.store)},onRender:function(B,A){Ext.PagingToolbar.superclass.onRender.call(this,B,A);this.first=this.addButton({tooltip:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.onClick.createDelegate(this,["first"])});this.prev=this.addButton({tooltip:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.onClick.createDelegate(this,["prev"])});this.addSeparator();this.add(this.beforePageText);this.field=Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-tbar-page-number"}).el);this.field.on("keydown",this.onPagingKeydown,this);this.field.on("focus",function(){this.dom.select()});this.afterTextEl=this.addText(String.format(this.afterPageText,1));this.field.setHeight(18);this.addSeparator();this.next=this.addButton({tooltip:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.onClick.createDelegate(this,["next"])});this.last=this.addButton({tooltip:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.onClick.createDelegate(this,["last"])});this.addSeparator();this.loading=this.addButton({tooltip:this.refreshText,iconCls:"x-tbar-loading",handler:this.onClick.createDelegate(this,["refresh"])});if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom).createChild({cls:"x-paging-info"})}if(this.dsLoaded){this.onLoad.apply(this,this.dsLoaded)}},updateInfo:function(){if(this.displayEl){var A=this.store.getCount();var B=A==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+A,this.store.getTotalCount());this.displayEl.update(B)}},onLoad:function(A,C,F){if(!this.rendered){this.dsLoaded=[A,C,F];return }this.cursor=F.params?F.params[this.paramNames.start]:0;var E=this.getPageData(),B=E.activePage,D=E.pages;this.afterTextEl.el.innerHTML=String.format(this.afterPageText,E.pages);this.field.dom.value=B;this.first.setDisabled(B==1);this.prev.setDisabled(B==1);this.next.setDisabled(B==D);this.last.setDisabled(B==D);this.loading.enable();this.updateInfo()},getPageData:function(){var A=this.store.getTotalCount();return{total:A,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:A<this.pageSize?1:Math.ceil(A/this.pageSize)}},onLoadError:function(){if(!this.rendered){return }this.loading.enable()},readPage:function(C){var A=this.field.dom.value,B;if(!A||isNaN(B=parseInt(A,10))){this.field.dom.value=C.activePage;return false}return B},onPagingKeydown:function(D){var B=D.getKey(),E=this.getPageData(),C;if(B==D.RETURN){D.stopEvent();if(C=this.readPage(E)){C=Math.min(Math.max(1,C),E.pages)-1;this.doLoad(C*this.pageSize)}}else{if(B==D.HOME||B==D.END){D.stopEvent();C=B==D.HOME?1:E.pages;this.field.dom.value=C}else{if(B==D.UP||B==D.PAGEUP||B==D.DOWN||B==D.PAGEDOWN){D.stopEvent();if(C=this.readPage(E)){var A=D.shiftKey?10:1;if(B==D.DOWN||B==D.PAGEDOWN){A*=-1}C+=A;if(C>=1&C<=E.pages){this.field.dom.value=C}}}}}},beforeLoad:function(){if(this.rendered&&this.loading){this.loading.disable()}},doLoad:function(C){var B={},A=this.paramNames;B[A.start]=C;B[A.limit]=this.pageSize;this.store.load({params:B})},onClick:function(E){var B=this.store;switch(E){case"first":this.doLoad(0);break;case"prev":this.doLoad(Math.max(0,this.cursor-this.pageSize));break;case"next":this.doLoad(this.cursor+this.pageSize);break;case"last":var D=B.getTotalCount();var A=D%this.pageSize;var C=A?(D-A):D-this.pageSize;this.doLoad(C);break;case"refresh":this.doLoad(this.cursor);break}},unbind:function(A){A=Ext.StoreMgr.lookup(A);A.un("beforeload",this.beforeLoad,this);A.un("load",this.onLoad,this);A.un("loadexception",this.onLoadError,this);this.store=undefined},bind:function(A){A=Ext.StoreMgr.lookup(A);A.on("beforeload",this.beforeLoad,this);A.on("load",this.onLoad,this);A.on("loadexception",this.onLoadError,this);this.store=A}});Ext.reg("paging",Ext.PagingToolbar);
-Ext.Resizable=function(D,E){this.el=Ext.get(D);if(E&&E.wrap){E.resizeChild=this.el;this.el=this.el.wrap(typeof E.wrap=="object"?E.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=E.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(E.resizeChild.getPositioning());E.resizeChild.clearPositioning();if(!E.width||!E.height){var F=E.resizeChild.getSize();this.el.setSize(F.width,F.height)}if(E.pinned&&!E.adjustments){E.adjustments="auto"}}this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"});this.proxy.unselectable();this.proxy.enableDisplayMode("block");Ext.apply(this,E);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned")}var I=this.el.getStyle("position");if(I!="absolute"&&I!="fixed"){this.el.setStyle("position","relative")}if(!this.handles){this.handles="s,e,se";if(this.multiDirectional){this.handles+=",n,w"}}if(this.handles=="all"){this.handles="n s e w ne nw se sw"}var M=this.handles.split(/\s*?[,;]\s*?| /);var C=Ext.Resizable.positions;for(var H=0,J=M.length;H<J;H++){if(M[H]&&C[M[H]]){var L=C[M[H]];this[L]=new Ext.Resizable.Handle(this,L,this.disableTrackOver,this.transparent)}}this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true}this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true)}else{this.resizeChild=Ext.get(this.resizeChild,true)}}if(this.adjustments=="auto"){var B=this.resizeChild;var K=this.west,G=this.east,A=this.north,M=this.south;if(B&&(K||A)){B.position("relative");B.setLeft(K?K.el.getWidth():0);B.setTop(A?A.el.getHeight():0)}this.adjustments=[(G?-G.el.getWidth():0)+(K?-K.el.getWidth():0),(A?-A.el.getHeight():0)+(M?-M.el.getHeight():0)-1]}if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id)}this.addEvents("beforeresize","resize");if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height)}else{this.updateChildSize()}if(Ext.isIE){this.el.dom.style.zoom=1}Ext.Resizable.superclass.constructor.call(this)};Ext.extend(Ext.Resizable,Ext.util.Observable,{resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:0.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:"easeOutStrong",widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,resizeTo:function(B,A){this.el.setSize(B,A);this.updateChildSize();this.fireEvent("resize",this,B,A,null)},startSizing:function(C,B){this.fireEvent("beforeresize",this,C);if(this.enabled){if(!this.overlay){this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:"&#160;"},Ext.getBody());this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on("mousemove",this.onMouseMove,this);this.overlay.on("mouseup",this.onMouseUp,this)}this.overlay.setStyle("cursor",B.el.getStyle("cursor"));this.resizing=true;this.startBox=this.el.getBox();this.startPoint=C.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(this.constrainTo){var A=Ext.get(this.constrainTo);this.resizeRegion=A.getRegion().adjust(A.getFrameWidth("t"),A.getFrameWidth("l"),-A.getFrameWidth("b"),-A.getFrameWidth("r"))}this.proxy.setStyle("visibility","hidden");this.proxy.show();this.proxy.setBox(this.startBox);if(!this.dynamic){this.proxy.setStyle("visibility","visible")}}},onMouseDown:function(A,B){if(this.enabled){B.stopEvent();this.activeHandle=A;this.startSizing(B,A)}},onMouseUp:function(B){var A=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.proxy.hide();this.fireEvent("resize",this,A.width,A.height,B)},updateChildSize:function(){if(this.resizeChild){var C=this.el;var D=this.resizeChild;var B=this.adjustments;if(C.dom.offsetWidth){var A=C.getSize(true);D.setSize(A.width+B[0],A.height+B[1])}if(Ext.isIE){setTimeout(function(){if(C.dom.offsetWidth){var E=C.getSize(true);D.setSize(E.width+B[0],E.height+B[1])}},10)}}},snap:function(C,E,B){if(!E||!C){return C}var D=C;var A=C%E;if(A>0){if(A>(E/2)){D=C+(E-A)}else{D=C-A}}return Math.max(B,D)},resizeElement:function(){var A=this.proxy.getBox();if(this.updateBox){this.el.setBox(A,false,this.animate,this.duration,null,this.easing)}else{this.el.setSize(A.width,A.height,this.animate,this.duration,null,this.easing)}this.updateChildSize();if(!this.dynamic){this.proxy.hide()}return A},constrain:function(B,C,A,D){if(B-C<A){C=B-A}else{if(B-C>D){C=D-B}}return C},onMouseMove:function(S){if(this.enabled){try{if(this.resizeRegion&&!this.resizeRegion.contains(S.getPoint())){return }var Q=this.curSize||this.startBox;var I=this.startBox.x,H=this.startBox.y;var C=I,B=H;var J=Q.width,R=Q.height;var D=J,L=R;var K=this.minWidth,T=this.minHeight;var P=this.maxWidth,W=this.maxHeight;var F=this.widthIncrement;var A=this.heightIncrement;var U=S.getXY();var O=-(this.startPoint[0]-Math.max(this.minX,U[0]));var M=-(this.startPoint[1]-Math.max(this.minY,U[1]));var G=this.activeHandle.position;switch(G){case"east":J+=O;J=Math.min(Math.max(K,J),P);break;case"south":R+=M;R=Math.min(Math.max(T,R),W);break;case"southeast":J+=O;R+=M;J=Math.min(Math.max(K,J),P);R=Math.min(Math.max(T,R),W);break;case"north":M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"west":O=this.constrain(J,O,K,P);I+=O;J-=O;break;case"northeast":J+=O;J=Math.min(Math.max(K,J),P);M=this.constrain(R,M,T,W);H+=M;R-=M;break;case"northwest":O=this.constrain(J,O,K,P);M=this.constrain(R,M,T,W);H+=M;R-=M;I+=O;J-=O;break;case"southwest":O=this.constrain(J,O,K,P);R+=M;R=Math.min(Math.max(T,R),W);I+=O;J-=O;break}var N=this.snap(J,F,K);var V=this.snap(R,A,T);if(N!=J||V!=R){switch(G){case"northeast":H-=V-R;break;case"north":H-=V-R;break;case"southwest":I-=N-J;break;case"west":I-=N-J;break;case"northwest":I-=N-J;H-=V-R;break}J=N;R=V}if(this.preserveRatio){switch(G){case"southeast":case"east":R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);break;case"south":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"northeast":J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);break;case"north":var X=J;J=D*(R/L);J=Math.min(Math.max(K,J),P);R=L*(J/D);I+=(X-J)/2;break;case"southwest":R=L*(J/D);R=Math.min(Math.max(T,R),W);var X=J;J=D*(R/L);I+=X-J;break;case"west":var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);H+=(E-R)/2;var X=J;J=D*(R/L);I+=X-J;break;case"northwest":var X=J;var E=R;R=L*(J/D);R=Math.min(Math.max(T,R),W);J=D*(R/L);H+=E-R;I+=X-J;break}}this.proxy.setBounds(I,H,J,R);if(this.dynamic){this.resizeElement()}}catch(S){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over")}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over")}},getEl:function(){return this.el},getResizeChild:function(){return this.resizeChild},destroy:function(C){this.proxy.remove();if(this.overlay){this.overlay.removeAllListeners();this.overlay.remove()}var D=Ext.Resizable.positions;for(var A in D){if(typeof D[A]!="function"&&this[D[A]]){var B=this[D[A]];B.el.removeAllListeners();B.el.remove()}}if(C){this.el.update("");this.el.remove()}},syncHandleHeight:function(){var A=this.el.getHeight(true);if(this.west){this.west.el.setHeight(A)}if(this.east){this.east.el.setHeight(A)}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(C,E,B,D){if(!this.tpl){var A=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});A.compile();Ext.Resizable.Handle.prototype.tpl=A}this.position=E;this.rz=C;this.el=this.tpl.append(C.el.dom,[this.position],true);this.el.unselectable();if(D){this.el.setOpacity(0)}this.el.on("mousedown",this.onMouseDown,this);if(!B){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this)}};Ext.Resizable.Handle.prototype={afterResize:function(A){},onMouseDown:function(A){this.rz.onMouseDown(this,A)},onMouseOver:function(A){this.rz.handleOver(this,A)},onMouseOut:function(A){this.rz.handleOut(this,A)}};
-Ext.Editor=function(B,A){this.field=B;Ext.Editor.superclass.constructor.call(this,A)};Ext.extend(Ext.Editor,Ext.Component,{value:"",alignment:"c-c?",shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:false,cancelOnEsc:false,updateEl:false,initComponent:function(){Ext.Editor.superclass.initComponent.call(this);this.addEvents("beforestartedit","startedit","beforecomplete","complete","specialkey")},onRender:function(B,A){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:B,shim:this.shim,shadowOffset:4,id:this.id,constrain:this.constrain});this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!="title"){this.field.msgTarget="qtip"}this.field.inEditor=true;this.field.render(this.el);if(Ext.isGecko){this.field.el.dom.setAttribute("autocomplete","off")}this.field.on("specialkey",this.onSpecialKey,this);if(this.swallowKeys){this.field.el.swallowEvent(["keydown","keypress"])}this.field.show();this.field.on("blur",this.onBlur,this);if(this.field.grow){this.field.on("autosize",this.el.sync,this.el,{delay:1})}},onSpecialKey:function(B,A){if(this.completeOnEnter&&A.getKey()==A.ENTER){A.stopEvent();this.completeEdit()}else{if(this.cancelOnEsc&&A.getKey()==A.ESC){this.cancelEdit()}else{this.fireEvent("specialkey",B,A)}}},startEdit:function(B,C){if(this.editing){this.completeEdit()}this.boundEl=Ext.get(B);var A=C!==undefined?C:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body)}if(this.fireEvent("beforestartedit",this,this.boundEl,A)===false){return }this.startValue=A;this.field.setValue(A);this.doAutoSize();this.el.alignTo(this.boundEl,this.alignment);this.editing=true;this.show()},doAutoSize:function(){if(this.autoSize){var A=this.boundEl.getSize();switch(this.autoSize){case"width":this.setSize(A.width,"");break;case"height":this.setSize("",A.height);break;default:this.setSize(A.width,A.height)}}},setSize:function(A,B){delete this.field.lastSize;this.field.setSize(A,B);if(this.el){this.el.sync()}},realign:function(){this.el.alignTo(this.boundEl,this.alignment)},completeEdit:function(A){if(!this.editing){return }var B=this.getValue();if(this.revertInvalid!==false&&!this.field.isValid()){B=this.startValue;this.cancelEdit(true)}if(String(B)===String(this.startValue)&&this.ignoreNoChange){this.editing=false;this.hide();return }if(this.fireEvent("beforecomplete",this,B,this.startValue)!==false){this.editing=false;if(this.updateEl&&this.boundEl){this.boundEl.update(B)}if(A!==true){this.hide()}this.fireEvent("complete",this,B,this.startValue)}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide()}this.field.show();if(Ext.isIE&&!this.fixIEFocus){this.fixIEFocus=true;this.deferredFocus.defer(50,this)}else{this.field.focus()}this.fireEvent("startedit",this.boundEl,this.startValue)},deferredFocus:function(){if(this.editing){this.field.focus()}},cancelEdit:function(A){if(this.editing){this.setValue(this.startValue);if(A!==true){this.hide()}}},onBlur:function(){if(this.allowBlur!==true&&this.editing){this.completeEdit()}},onHide:function(){if(this.editing){this.completeEdit();return }this.field.blur();if(this.field.collapse){this.field.collapse()}this.el.hide();if(this.hideEl!==false){this.boundEl.show()}},setValue:function(A){this.field.setValue(A)},getValue:function(){return this.field.getValue()},beforeDestroy:function(){this.field.destroy();this.field=null}});Ext.reg("editor",Ext.Editor);
-Ext.MessageBox=function(){var R,B,N,Q;var G,J,P,A,K,M,H,F;var O,S,L,C="";var D=function(U){R.hide();Ext.callback(B.fn,B.scope||window,[U,S.dom.value],1)};var T=function(){if(B&&B.cls){R.el.removeClass(B.cls)}K.reset()};var E=function(W,U,V){if(B&&B.closable!==false){R.hide()}if(V){V.stopEvent()}};var I=function(U){var W=0;if(!U){O["ok"].hide();O["cancel"].hide();O["yes"].hide();O["no"].hide();return W}R.footer.dom.style.display="";for(var V in O){if(typeof O[V]!="function"){if(U[V]){O[V].show();O[V].setText(typeof U[V]=="string"?U[V]:Ext.MessageBox.buttonText[V]);W+=O[V].el.getWidth()+15}else{O[V].hide()}}}return W};return{getDialog:function(U){if(!R){R=new Ext.Window({autoCreate:true,title:U,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function(){if(B&&B.buttons&&B.buttons.no&&!B.buttons.cancel){D("no")}else{D("cancel")}}});O={};var V=this.buttonText;O["ok"]=R.addButton(V["ok"],D.createCallback("ok"));O["yes"]=R.addButton(V["yes"],D.createCallback("yes"));O["no"]=R.addButton(V["no"],D.createCallback("no"));O["cancel"]=R.addButton(V["cancel"],D.createCallback("cancel"));O["ok"].hideMode=O["yes"].hideMode=O["no"].hideMode=O["cancel"].hideMode="offsets";R.render(document.body);R.getEl().addClass("x-window-dlg");N=R.mask;G=R.body.createChild({html:"<div class=\"ext-mb-icon\"></div><div class=\"ext-mb-content\"><span class=\"ext-mb-text\"></span><br /><input type=\"text\" class=\"ext-mb-input\" /><textarea class=\"ext-mb-textarea\"></textarea></div>"});H=Ext.get(G.dom.firstChild);var W=G.dom.childNodes[1];J=Ext.get(W.firstChild);P=Ext.get(W.childNodes[2]);P.enableDisplayMode();P.addKeyListener([10,13],function(){if(R.isVisible()&&B&&B.buttons){if(B.buttons.ok){D("ok")}else{if(B.buttons.yes){D("yes")}}}});A=Ext.get(W.childNodes[3]);A.enableDisplayMode();K=new Ext.ProgressBar({renderTo:G});G.createChild({cls:"x-clear"})}return R},updateText:function(X){if(!R.isVisible()&&!B.width){R.setSize(this.maxWidth,100)}J.update(X||"&#160;");var V=C!=""?(H.getWidth()+H.getMargins("lr")):0;var Z=J.getWidth()+J.getMargins("lr");var W=R.getFrameWidth("lr");var Y=R.body.getFrameWidth("lr");if(Ext.isIE&&V>0){V+=3}var U=Math.max(Math.min(B.width||V+Z+W+Y,this.maxWidth),Math.max(B.minWidth||this.minWidth,L||0));if(B.prompt===true){S.setWidth(U-V-W-Y)}if(B.progress===true||B.wait===true){K.setSize(U-V-W-Y)}R.setSize(U,"auto").center();return this},updateProgress:function(V,U,W){K.updateProgress(V,U);if(W){this.updateText(W)}return this},isVisible:function(){return R&&R.isVisible()},hide:function(){if(this.isVisible()){R.hide();T()}return this},show:function(X){if(this.isVisible()){this.hide()}B=X;var Y=this.getDialog(B.title||"&#160;");Y.setTitle(B.title||"&#160;");var U=(B.closable!==false&&B.progress!==true&&B.wait!==true);Y.tools.close.setDisplayed(U);S=P;B.prompt=B.prompt||(B.multiline?true:false);if(B.prompt){if(B.multiline){P.hide();A.show();A.setHeight(typeof B.multiline=="number"?B.multiline:this.defaultTextHeight);S=A}else{P.show();A.hide()}}else{P.hide();A.hide()}S.dom.value=B.value||"";if(B.prompt){Y.focusEl=S}else{var W=B.buttons;var V=null;if(W&&W.ok){V=O["ok"]}else{if(W&&W.yes){V=O["yes"]}}if(V){Y.focusEl=V}}this.setIcon(B.icon);L=I(B.buttons);K.setVisible(B.progress===true||B.wait===true);this.updateProgress(0,B.progressText);this.updateText(B.msg);if(B.cls){Y.el.addClass(B.cls)}Y.proxyDrag=B.proxyDrag===true;Y.modal=B.modal!==false;Y.mask=B.modal!==false?N:false;if(!Y.isVisible()){document.body.appendChild(R.el.dom);Y.setAnimateTarget(B.animEl);Y.show(B.animEl)}Y.on("show",function(){if(U===true){Y.keyMap.enable()}else{Y.keyMap.disable()}},this,{single:true});if(B.wait===true){K.wait(B.waitConfig)}return this},setIcon:function(U){if(U&&U!=""){H.removeClass("x-hidden");H.replaceClass(C,U);C=U}else{H.replaceClass(C,"x-hidden");C=""}return this},progress:function(W,V,U){this.show({title:W,msg:V,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:U});return this},wait:function(W,V,U){this.show({title:V,msg:W,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:U});return this},alert:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.OK,fn:V,scope:U});return this},confirm:function(X,W,V,U){this.show({title:X,msg:W,buttons:this.YESNO,fn:V,scope:U,icon:this.QUESTION});return this},prompt:function(Y,X,W,V,U){this.show({title:Y,msg:X,buttons:this.OKCANCEL,fn:W,minWidth:250,scope:V,prompt:true,multiline:U});return this},OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}}();Ext.Msg=Ext.MessageBox;
-Ext.Tip=Ext.extend(Ext.Panel,{minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,initComponent:function(){Ext.Tip.superclass.initComponent.call(this);if(this.closable&&!this.title){this.elements+=",header"}},afterRender:function(){Ext.Tip.superclass.afterRender.call(this);if(this.closable){this.addTool({id:"close",handler:this.hide,scope:this})}},showAt:function(A){Ext.Tip.superclass.show.call(this);if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){var B=this.body.getTextWidth();if(this.title){B=Math.max(B,this.header.child("span").getTextWidth(this.title))}B+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr");this.setWidth(B.constrain(this.minWidth,this.maxWidth))}if(this.constrainPosition){A=this.el.adjustForConstraints(A)}this.setPagePosition(A[0],A[1])},showBy:function(A,B){if(!this.rendered){this.render(Ext.getBody())}this.showAt(this.el.getAlignToXY(A,B||this.defaultAlign))},initDraggable:function(){this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);this.header.addClass("x-tip-draggable")}});Ext.Tip.DD=function(B,A){Ext.apply(this,A);this.tip=B;Ext.Tip.DD.superclass.constructor.call(this,B.el.id,"WindowDD-"+B.id);this.setHandleElId(B.header.id);this.scroll=false};Ext.extend(Ext.Tip.DD,Ext.dd.DD,{moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function(){this.tip.el.disableShadow()},endDrag:function(A){this.tip.el.enableShadow(true)}});
-Ext.ToolTip=Ext.extend(Ext.Tip,{showDelay:500,hideDelay:200,dismissDelay:5000,mouseOffset:[15,18],trackMouse:false,constrainPosition:true,initComponent:function(){Ext.ToolTip.superclass.initComponent.call(this);this.lastActive=new Date();this.initTarget()},initTarget:function(){if(this.target){this.target=Ext.get(this.target);this.target.on("mouseover",this.onTargetOver,this);this.target.on("mouseout",this.onTargetOut,this);this.target.on("mousemove",this.onMouseMove,this)}},onMouseMove:function(A){this.targetXY=A.getXY();if(!this.hidden&&this.trackMouse){this.setPagePosition(this.getTargetXY())}},getTargetXY:function(){return[this.targetXY[0]+this.mouseOffset[0],this.targetXY[1]+this.mouseOffset[1]]},onTargetOver:function(A){if(this.disabled||A.within(this.target.dom,true)){return }this.clearTimer("hide");this.targetXY=A.getXY();this.delayShow()},delayShow:function(){if(this.hidden&&!this.showTimer){if(this.lastActive.getElapsed()<this.quickShowInterval){this.show()}else{this.showTimer=this.show.defer(this.showDelay,this)}}else{if(!this.hidden&&this.autoHide!==false){this.show()}}},onTargetOut:function(A){if(this.disabled||A.within(this.target.dom,true)){return }this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},delayHide:function(){if(!this.hidden&&!this.hideTimer){this.hideTimer=this.hide.defer(this.hideDelay,this)}},hide:function(){this.clearTimer("dismiss");this.lastActive=new Date();Ext.ToolTip.superclass.hide.call(this)},show:function(){this.showAt(this.getTargetXY())},showAt:function(A){this.lastActive=new Date();this.clearTimers();Ext.ToolTip.superclass.showAt.call(this,A);if(this.dismissDelay&&this.autoHide!==false){this.dismissTimer=this.hide.defer(this.dismissDelay,this)}},clearTimer:function(A){A=A+"Timer";clearTimeout(this[A]);delete this[A]},clearTimers:function(){this.clearTimer("show");this.clearTimer("dismiss");this.clearTimer("hide")},onShow:function(){Ext.ToolTip.superclass.onShow.call(this);Ext.getDoc().on("mousedown",this.onDocMouseDown,this)},onHide:function(){Ext.ToolTip.superclass.onHide.call(this);Ext.getDoc().un("mousedown",this.onDocMouseDown,this)},onDocMouseDown:function(A){if(this.autoHide!==false&&!A.within(this.el.dom)){this.disable();this.enable.defer(100,this)}},onDisable:function(){this.clearTimers();this.hide()},adjustPosition:function(A,D){var C=this.targetXY[1],B=this.getSize().height;if(this.constrainPosition&&D<=C&&(D+B)>=C){D=C-B-5}return{x:A,y:D}},onDestroy:function(){Ext.ToolTip.superclass.onDestroy.call(this);if(this.target){this.target.un("mouseover",this.onTargetOver,this);this.target.un("mouseout",this.onTargetOut,this);this.target.un("mousemove",this.onMouseMove,this)}}});
-Ext.QuickTip=Ext.extend(Ext.ToolTip,{interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign"},initComponent:function(){this.target=this.target||Ext.getDoc();this.targets=this.targets||{};Ext.QuickTip.superclass.initComponent.call(this)},register:function(D){var F=Ext.isArray(D)?D:arguments;for(var E=0,A=F.length;E<A;E++){var H=F[E];var G=H.target;if(G){if(Ext.isArray(G)){for(var C=0,B=G.length;C<B;C++){this.targets[Ext.id(G[C])]=H}}else{this.targets[Ext.id(G)]=H}}}},unregister:function(A){delete this.targets[Ext.id(A)]},onTargetOver:function(G){if(this.disabled){return }this.targetXY=G.getXY();var C=G.getTarget();if(!C||C.nodeType!==1||C==document||C==document.body){return }if(this.activeTarget&&C==this.activeTarget.el){this.clearTimer("hide");this.show();return }if(C&&this.targets[C.id]){this.activeTarget=this.targets[C.id];this.activeTarget.el=C;this.delayShow();return }var E,F=Ext.fly(C),B=this.tagConfig;var D=B.namespace;if(this.interceptTitles&&C.title){E=C.title;C.qtip=E;C.removeAttribute("title");G.preventDefault()}else{E=C.qtip||F.getAttributeNS(D,B.attribute)}if(E){var A=F.getAttributeNS(D,B.hide);this.activeTarget={el:C,text:E,width:F.getAttributeNS(D,B.width),autoHide:A!="user"&&A!=="false",title:F.getAttributeNS(D,B.title),cls:F.getAttributeNS(D,B.cls),align:F.getAttributeNS(D,B.align)};this.delayShow()}},onTargetOut:function(A){this.clearTimer("show");if(this.autoHide!==false){this.delayHide()}},showAt:function(B){var A=this.activeTarget;if(A){if(!this.rendered){this.render(Ext.getBody());this.activeTarget=A}if(A.width){this.setWidth(A.width);this.body.setWidth(this.adjustBodyWidth(A.width-this.getFrameWidth()));this.measureWidth=false}else{this.measureWidth=true}this.setTitle(A.title||"");this.body.update(A.text);this.autoHide=A.autoHide;this.dismissDelay=A.dismissDelay||this.dismissDelay;if(this.lastCls){this.el.removeClass(this.lastCls);delete this.lastCls}if(A.cls){this.el.addClass(A.cls);this.lastCls=A.cls}if(A.align){B=this.el.getAlignToXY(A.el,A.align);this.constrainPosition=false}else{this.constrainPosition=true}}Ext.QuickTip.superclass.showAt.call(this,B)},hide:function(){delete this.activeTarget;Ext.QuickTip.superclass.hide.call(this)}});
-Ext.QuickTips=function(){var B,A=[];return{init:function(){if(!B){B=new Ext.QuickTip({elements:"header,body"})}},enable:function(){if(B){A.pop();if(A.length<1){B.enable()}}},disable:function(){if(B){B.disable()}A.push(1)},isEnabled:function(){return B&&!B.disabled},getQuickTip:function(){return B},register:function(){B.register.apply(B,arguments)},unregister:function(){B.unregister.apply(B,arguments)},tips:function(){B.register.apply(B,arguments)}}}();
-Ext.tree.TreePanel=Ext.extend(Ext.Panel,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",initComponent:function(){Ext.tree.TreePanel.superclass.initComponent.call(this);if(!this.eventModel){this.eventModel=new Ext.tree.TreeEventModel(this)}this.nodeHash={};if(this.root){this.setRootNode(this.root)}this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","checkchange","dblclick","contextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");if(this.singleExpand){this.on("beforeexpandnode",this.restrictExpand,this)}},proxyNodeEvent:function(C,B,A,G,F,E,D){if(C=="collapse"||C=="expand"||C=="beforecollapse"||C=="beforeexpand"||C=="move"||C=="beforemove"){C=C+"node"}return this.fireEvent(C,B,A,G,F,E,D)},getRootNode:function(){return this.root},setRootNode:function(B){this.root=B;B.ownerTree=this;B.isRoot=true;this.registerNode(B);if(!this.rootVisible){var A=B.attributes.uiProvider;B.ui=A?new A(B):new Ext.tree.RootTreeNodeUI(B)}return B},getNodeById:function(A){return this.nodeHash[A]},registerNode:function(A){this.nodeHash[A.id]=A},unregisterNode:function(A){delete this.nodeHash[A.id]},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]"},restrictExpand:function(A){var B=A.parentNode;if(B){if(B.expandedChild&&B.expandedChild.parentNode==B){B.expandedChild.collapse()}B.expandedChild=A}},getChecked:function(A,B){B=B||this.root;var C=[];var D=function(){if(this.attributes.checked){C.push(!A?this:(A=="id"?this.id:this.attributes[A]))}};B.cascade(D);return C},getEl:function(){return this.el},getLoader:function(){return this.loader},expandAll:function(){this.root.expand(true)},collapseAll:function(){this.root.collapse(true)},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.tree.DefaultSelectionModel()}return this.selModel},expandPath:function(F,A,G){A=A||"id";var D=F.split(this.pathSeparator);var C=this.root;if(C.attributes[A]!=D[1]){if(G){G(false,null)}return }var B=1;var E=function(){if(++B==D.length){if(G){G(true,C)}return }var H=C.findChild(A,D[B]);if(!H){if(G){G(false,C)}return }C=H;H.expand(false,false,E)};C.expand(false,false,E)},selectPath:function(E,A,F){A=A||"id";var C=E.split(this.pathSeparator);var B=C.pop();if(C.length>0){var D=function(H,G){if(H&&G){var I=G.findChild(A,B);if(I){I.select();if(F){F(true,I)}}else{if(F){F(false,I)}}}else{if(F){F(false,I)}}};this.expandPath(C.join(this.pathSeparator),A,D)}else{this.root.select();if(F){F(true,this.root)}}},getTreeEl:function(){return this.body},onRender:function(B,A){Ext.tree.TreePanel.superclass.onRender.call(this,B,A);this.el.addClass("x-tree");this.innerCt=this.body.createChild({tag:"ul",cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")})},initEvents:function(){Ext.tree.TreePanel.superclass.initEvents.call(this);if(this.containerScroll){Ext.dd.ScrollManager.register(this.body)}if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true})}if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll})}this.getSelectionModel().init(this)},afterRender:function(){Ext.tree.TreePanel.superclass.afterRender.call(this);this.root.render();if(!this.rootVisible){this.root.renderChildren()}},onDestroy:function(){if(this.rendered){this.body.removeAllListeners();Ext.dd.ScrollManager.unregister(this.body);if(this.dropZone){this.dropZone.unreg()}if(this.dragZone){this.dragZone.unreg()}}this.root.destroy();this.nodeHash=null;Ext.tree.TreePanel.superclass.onDestroy.call(this)}});Ext.reg("treepanel",Ext.tree.TreePanel);
-Ext.tree.TreeEventModel=function(A){this.tree=A;this.tree.on("render",this.initEvents,this)};Ext.tree.TreeEventModel.prototype={initEvents:function(){var A=this.tree.getTreeEl();A.on("click",this.delegateClick,this);if(this.tree.trackMouseOver!==false){A.on("mouseover",this.delegateOver,this);A.on("mouseout",this.delegateOut,this)}A.on("dblclick",this.delegateDblClick,this);A.on("contextmenu",this.delegateContextMenu,this)},getNode:function(B){var A;if(A=B.getTarget(".x-tree-node-el",10)){var C=Ext.fly(A,"_treeEvents").getAttributeNS("ext","tree-node-id");if(C){return this.tree.getNodeById(C)}}return null},getNodeTarget:function(B){var A=B.getTarget(".x-tree-node-icon",1);if(!A){A=B.getTarget(".x-tree-node-el",6)}return A},delegateOut:function(B,A){if(!this.beforeEvent(B)){return }if(B.getTarget(".x-tree-ec-icon",1)){var C=this.getNode(B);this.onIconOut(B,C);if(C==this.lastEcOver){delete this.lastEcOver}}if((A=this.getNodeTarget(B))&&!B.within(A,true)){this.onNodeOut(B,this.getNode(B))}},delegateOver:function(B,A){if(!this.beforeEvent(B)){return }if(this.lastEcOver){this.onIconOut(B,this.lastEcOver);delete this.lastEcOver}if(B.getTarget(".x-tree-ec-icon",1)){this.lastEcOver=this.getNode(B);this.onIconOver(B,this.lastEcOver)}if(A=this.getNodeTarget(B)){this.onNodeOver(B,this.getNode(B))}},delegateClick:function(B,A){if(!this.beforeEvent(B)){return }if(B.getTarget("input[type=checkbox]",1)){this.onCheckboxClick(B,this.getNode(B))}else{if(B.getTarget(".x-tree-ec-icon",1)){this.onIconClick(B,this.getNode(B))}else{if(this.getNodeTarget(B)){this.onNodeClick(B,this.getNode(B))}}}},delegateDblClick:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeDblClick(B,this.getNode(B))}},delegateContextMenu:function(B,A){if(this.beforeEvent(B)&&this.getNodeTarget(B)){this.onNodeContextMenu(B,this.getNode(B))}},onNodeClick:function(B,A){A.ui.onClick(B)},onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)},onIconOver:function(B,A){A.ui.addClass("x-tree-ec-over")},onIconOut:function(B,A){A.ui.removeClass("x-tree-ec-over")},onIconClick:function(B,A){A.ui.ecClick(B)},onCheckboxClick:function(B,A){A.ui.onCheckChange(B)},onNodeDblClick:function(B,A){A.ui.onDblClick(B)},onNodeContextMenu:function(B,A){A.ui.onContextMenu(B)},beforeEvent:function(A){if(this.disabled){A.stopEvent();return false}return true},disable:function(){this.disabled=true},enable:function(){this.disabled=false}};
-Ext.tree.DefaultSelectionModel=function(A){this.selNode=null;this.addEvents("selectionchange","beforeselect");Ext.apply(this,A);Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.DefaultSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A)},select:function(B){var A=this.selNode;if(A!=B&&this.fireEvent("beforeselect",this,B,A)!==false){if(A){A.ui.onSelectedChange(false)}this.selNode=B;B.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,B,A)}return B},unselect:function(A){if(this.selNode==A){this.clearSelections()}},clearSelections:function(){var A=this.selNode;if(A){A.ui.onSelectedChange(false);this.selNode=null;this.fireEvent("selectionchange",this,null)}return A},getSelectedNode:function(){return this.selNode},isSelected:function(A){return this.selNode==A},selectPrevious:function(){var A=this.selNode||this.lastSelNode;if(!A){return null}var C=A.previousSibling;if(C){if(!C.isExpanded()||C.childNodes.length<1){return this.select(C)}else{var B=C.lastChild;while(B&&B.isExpanded()&&B.childNodes.length>0){B=B.lastChild}return this.select(B)}}else{if(A.parentNode&&(this.tree.rootVisible||!A.parentNode.isRoot)){return this.select(A.parentNode)}}return null},selectNext:function(){var B=this.selNode||this.lastSelNode;if(!B){return null}if(B.firstChild&&B.isExpanded()){return this.select(B.firstChild)}else{if(B.nextSibling){return this.select(B.nextSibling)}else{if(B.parentNode){var A=null;B.parentNode.bubble(function(){if(this.nextSibling){A=this.getOwnerTree().selModel.select(this.nextSibling);return false}});return A}}}return null},onKeyDown:function(C){var B=this.selNode||this.lastSelNode;var D=this;if(!B){return }var A=C.getKey();switch(A){case C.DOWN:C.stopEvent();this.selectNext();break;case C.UP:C.stopEvent();this.selectPrevious();break;case C.RIGHT:C.preventDefault();if(B.hasChildNodes()){if(!B.isExpanded()){B.expand()}else{if(B.firstChild){this.select(B.firstChild,C)}}}break;case C.LEFT:C.preventDefault();if(B.hasChildNodes()&&B.isExpanded()){B.collapse()}else{if(B.parentNode&&(this.tree.rootVisible||B.parentNode!=this.tree.getRootNode())){this.select(B.parentNode,C)}}break}}});Ext.tree.MultiSelectionModel=function(A){this.selNodes=[];this.selMap={};this.addEvents("selectionchange");Ext.apply(this,A);Ext.tree.MultiSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.tree.MultiSelectionModel,Ext.util.Observable,{init:function(A){this.tree=A;A.getTreeEl().on("keydown",this.onKeyDown,this);A.on("click",this.onNodeClick,this)},onNodeClick:function(A,B){this.select(A,B,B.ctrlKey)},select:function(A,C,B){if(B!==true){this.clearSelections(true)}if(this.isSelected(A)){this.lastSelNode=A;return A}this.selNodes.push(A);this.selMap[A.id]=A;this.lastSelNode=A;A.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return A},unselect:function(B){if(this.selMap[B.id]){B.ui.onSelectedChange(false);var C=this.selNodes;var A=C.indexOf(B);if(A!=-1){this.selNodes.splice(A,1)}delete this.selMap[B.id];this.fireEvent("selectionchange",this,this.selNodes)}},clearSelections:function(B){var D=this.selNodes;if(D.length>0){for(var C=0,A=D.length;C<A;C++){D[C].ui.onSelectedChange(false)}this.selNodes=[];this.selMap={};if(B!==true){this.fireEvent("selectionchange",this,this.selNodes)}}},isSelected:function(A){return this.selMap[A.id]?true:false},getSelectedNodes:function(){return this.selNodes},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});
-Ext.tree.TreeNode=function(A){A=A||{};if(typeof A=="string"){A={text:A}}this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,A);this.expanded=A.expanded===true;this.isTarget=A.isTarget!==false;this.draggable=A.draggable!==false&&A.allowDrag!==false;this.allowChildren=A.allowChildren!==false&&A.allowDrop!==false;this.text=A.text;this.disabled=A.disabled===true;this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","dblclick","contextmenu","beforechildrenrendered");var B=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;this.ui=new B(this)};Ext.extend(Ext.tree.TreeNode,Ext.data.Node,{preventHScroll:true,isExpanded:function(){return this.expanded},getUI:function(){return this.ui},setFirstChild:function(A){var B=this.firstChild;Ext.tree.TreeNode.superclass.setFirstChild.call(this,A);if(this.childrenRendered&&B&&A!=B){B.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},setLastChild:function(B){var A=this.lastChild;Ext.tree.TreeNode.superclass.setLastChild.call(this,B);if(this.childrenRendered&&A&&B!=A){A.renderIndent(true,true)}if(this.rendered){this.renderIndent(true,true)}},appendChild:function(){var A=Ext.tree.TreeNode.superclass.appendChild.apply(this,arguments);if(A&&this.childrenRendered){A.render()}this.ui.updateExpandIcon();return A},removeChild:function(A){this.ownerTree.getSelectionModel().unselect(A);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(this.childrenRendered){A.ui.remove()}if(this.childNodes.length<1){this.collapse(false,false)}else{this.ui.updateExpandIcon()}if(!this.firstChild&&!this.isHiddenRoot()){this.childrenRendered=false}return A},insertBefore:function(C,A){var B=Ext.tree.TreeNode.superclass.insertBefore.apply(this,arguments);if(B&&A&&this.childrenRendered){C.render()}this.ui.updateExpandIcon();return B},setText:function(B){var A=this.text;this.text=B;this.attributes.text=B;if(this.rendered){this.ui.onTextChange(this,B,A)}this.fireEvent("textchange",this,B,A)},select:function(){this.getOwnerTree().getSelectionModel().select(this)},unselect:function(){this.getOwnerTree().getSelectionModel().unselect(this)},isSelected:function(){return this.getOwnerTree().getSelectionModel().isSelected(this)},expand:function(A,B,C){if(!this.expanded){if(this.fireEvent("beforeexpand",this,A,B)===false){return }if(!this.childrenRendered){this.renderChildren()}this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&B!==false)||B){this.ui.animExpand(function(){this.fireEvent("expand",this);if(typeof C=="function"){C(this)}if(A===true){this.expandChildNodes(true)}}.createDelegate(this));return }else{this.ui.expand();this.fireEvent("expand",this);if(typeof C=="function"){C(this)}}}else{if(typeof C=="function"){C(this)}}if(A===true){this.expandChildNodes(true)}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible},collapse:function(B,E){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,B,E)===false){return }this.expanded=false;if((this.getOwnerTree().animate&&E!==false)||E){this.ui.animCollapse(function(){this.fireEvent("collapse",this);if(B===true){this.collapseChildNodes(true)}}.createDelegate(this));return }else{this.ui.collapse();this.fireEvent("collapse",this)}}if(B===true){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].collapse(true,false)}}},delayedExpand:function(A){if(!this.expandProcId){this.expandProcId=this.expand.defer(A,this)}},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId)}this.expandProcId=false},toggle:function(){if(this.expanded){this.collapse()}else{this.expand()}},ensureVisible:function(B){var A=this.getOwnerTree();A.expandPath(this.parentNode.getPath(),false,function(){var C=A.getNodeById(this.id);A.getTreeEl().scrollChildIntoView(C.ui.anchor);Ext.callback(B)}.createDelegate(this))},expandChildNodes:function(B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].expand(B)}},collapseChildNodes:function(B){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].collapse(B)}},disable:function(){this.disabled=true;this.unselect();if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,true)}this.fireEvent("disabledchange",this,true)},enable:function(){this.disabled=false;if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,false)}this.fireEvent("disabledchange",this,false)},renderChildren:function(B){if(B!==false){this.fireEvent("beforechildrenrendered",this)}var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].render(true)}this.childrenRendered=true},sort:function(E,D){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.childrenRendered){var C=this.childNodes;for(var B=0,A=C.length;B<A;B++){C[B].render(true)}}},render:function(A){this.ui.render(A);if(!this.rendered){this.getOwnerTree().registerNode(this);this.rendered=true;if(this.expanded){this.expanded=false;this.expand(false,false)}}},renderIndent:function(B,E){if(E){this.ui.childIndent=null}this.ui.renderIndent();if(B===true&&this.childrenRendered){var D=this.childNodes;for(var C=0,A=D.length;C<A;C++){D[C].renderIndent(true,E)}}},beginUpdate:function(){this.childrenRendered=false},endUpdate:function(){if(this.expanded){this.renderChildren()}},destroy:function(){for(var B=0,A=this.childNodes.length;B<A;B++){this.childNodes[B].destroy()}this.childNodes=null;if(this.ui.destroy){this.ui.destroy()}}});
-Ext.tree.AsyncTreeNode=function(A){this.loaded=false;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents("beforeload","load")};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(B,D,F){if(this.loading){var E;var C=function(){if(!this.loading){clearInterval(E);this.expand(B,D,F)}}.createDelegate(this);E=setInterval(C,200);return }if(!this.loaded){if(this.fireEvent("beforeload",this)===false){return }this.loading=true;this.ui.beforeLoad(this);var A=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();if(A){A.load(this,this.loadComplete.createDelegate(this,[B,D,F]));return }}Ext.tree.AsyncTreeNode.superclass.expand.call(this,B,D,F)},isLoading:function(){return this.loading},loadComplete:function(A,B,C){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(A,B,C)},isLoaded:function(){return this.loaded},hasChildNodes:function(){if(!this.isLeaf()&&!this.loaded){return true}else{return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)}},reload:function(A){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild)}this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false}this.expand(false,false,A)}});
-Ext.tree.TreeNodeUI=function(A){this.node=A;this.rendered=false;this.animating=false;this.wasLeaf=true;this.ecc="x-tree-ec-icon x-tree-elbow";this.emptyIcon=Ext.BLANK_IMAGE_URL};Ext.tree.TreeNodeUI.prototype={removeChild:function(A){if(this.rendered){this.ctNode.removeChild(A.ui.getEl())}},beforeLoad:function(){this.addClass("x-tree-node-loading")},afterLoad:function(){this.removeClass("x-tree-node-loading")},onTextChange:function(B,C,A){if(this.rendered){this.textNode.innerHTML=C}},onDisableChange:function(A,B){this.disabled=B;if(this.checkbox){this.checkbox.disabled=B}if(B){this.addClass("x-tree-node-disabled")}else{this.removeClass("x-tree-node-disabled")}},onSelectedChange:function(A){if(A){this.focus();this.addClass("x-tree-selected")}else{this.removeClass("x-tree-selected")}},onMove:function(A,G,E,F,D,B){this.childIndent=null;if(this.rendered){var H=F.ui.getContainer();if(!H){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return }var C=B?B.ui.getEl():null;if(C){H.insertBefore(this.wrap,C)}else{H.appendChild(this.wrap)}this.node.renderIndent(true)}},addClass:function(A){if(this.elNode){Ext.fly(this.elNode).addClass(A)}},removeClass:function(A){if(this.elNode){Ext.fly(this.elNode).removeClass(A)}},remove:function(){if(this.rendered){this.holder=document.createElement("div");this.holder.appendChild(this.wrap)}},fireEvent:function(){return this.node.fireEvent.apply(this.node,arguments)},initEvents:function(){this.node.on("move",this.onMove,this);if(this.node.disabled){this.addClass("x-tree-node-disabled");if(this.checkbox){this.checkbox.disabled=true}}if(this.node.hidden){this.hide()}var B=this.node.getOwnerTree();var A=B.enableDD||B.enableDrag||B.enableDrop;if(A&&(!this.node.isRoot||B.rootVisible)){Ext.dd.Registry.register(this.elNode,{node:this.node,handles:this.getDDHandles(),isHandle:false})}},getDDHandles:function(){return[this.iconNode,this.textNode,this.elNode]},hide:function(){this.node.hidden=true;if(this.wrap){this.wrap.style.display="none"}},show:function(){this.node.hidden=false;if(this.wrap){this.wrap.style.display=""}},onContextMenu:function(A){if(this.node.hasListener("contextmenu")||this.node.getOwnerTree().hasListener("contextmenu")){A.preventDefault();this.focus();this.fireEvent("contextmenu",this.node,A)}},onClick:function(B){if(this.dropping){B.stopEvent();return }if(this.fireEvent("beforeclick",this.node,B)!==false){var A=B.getTarget("a");if(!this.disabled&&this.node.attributes.href&&A){this.fireEvent("click",this.node,B);return }else{if(A&&B.ctrlKey){B.stopEvent()}}B.preventDefault();if(this.disabled){return }if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.hasChildNodes()){this.node.toggle()}this.fireEvent("click",this.node,B)}else{B.stopEvent()}},onDblClick:function(A){A.preventDefault();if(this.disabled){return }if(this.checkbox){this.toggleCheck()}if(!this.animating&&this.node.hasChildNodes()){this.node.toggle()}this.fireEvent("dblclick",this.node,A)},onOver:function(A){this.addClass("x-tree-node-over")},onOut:function(A){this.removeClass("x-tree-node-over")},onCheckChange:function(){var A=this.checkbox.checked;this.node.attributes.checked=A;this.fireEvent("checkchange",this.node,A)},ecClick:function(A){if(!this.animating&&(this.node.hasChildNodes()||this.node.attributes.expandable)){this.node.toggle()}},startDrop:function(){this.dropping=true},endDrop:function(){setTimeout(function(){this.dropping=false}.createDelegate(this),50)},expand:function(){this.updateExpandIcon();this.ctNode.style.display=""},focus:function(){if(!this.node.preventHScroll){try{this.anchor.focus()}catch(C){}}else{if(!Ext.isIE){try{var B=this.node.getOwnerTree().getTreeEl().dom;var A=B.scrollLeft;this.anchor.focus();B.scrollLeft=A}catch(C){}}}},toggleCheck:function(B){var A=this.checkbox;if(A){A.checked=(B===undefined?!A.checked:B)}},blur:function(){try{this.anchor.blur()}catch(A){}},animExpand:function(B){var A=Ext.get(this.ctNode);A.stopFx();if(!this.node.hasChildNodes()){this.updateExpandIcon();this.ctNode.style.display="";Ext.callback(B);return }this.animating=true;this.updateExpandIcon();A.slideIn("t",{callback:function(){this.animating=false;Ext.callback(B)},scope:this,duration:this.node.ownerTree.duration||0.25})},highlight:function(){var A=this.node.getOwnerTree();Ext.fly(this.wrap).highlight(A.hlColor||"C3DAF9",{endColor:A.hlBaseColor})},collapse:function(){this.updateExpandIcon();this.ctNode.style.display="none"},animCollapse:function(B){var A=Ext.get(this.ctNode);A.enableDisplayMode("block");A.stopFx();this.animating=true;this.updateExpandIcon();A.slideOut("t",{callback:function(){this.animating=false;Ext.callback(B)},scope:this,duration:this.node.ownerTree.duration||0.25})},getContainer:function(){return this.ctNode},getEl:function(){return this.wrap},appendDDGhost:function(A){A.appendChild(this.elNode.cloneNode(true))},getDDRepairXY:function(){return Ext.lib.Dom.getXY(this.iconNode)},onRender:function(){this.render()},render:function(B){var D=this.node,A=D.attributes;var C=D.parentNode?D.parentNode.ui.getContainer():D.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(D,A,C,B);if(A.qtip){if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",A.qtip);if(A.qtipTitle){this.textNode.setAttributeNS("ext","qtitle",A.qtipTitle)}}else{this.textNode.setAttribute("ext:qtip",A.qtip);if(A.qtipTitle){this.textNode.setAttribute("ext:qtitle",A.qtipTitle)}}}else{if(A.qtipCfg){A.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(A.qtipCfg)}}this.initEvents();if(!this.node.expanded){this.updateExpandIcon(true)}}else{if(B===true){C.appendChild(this.wrap)}}},renderElements:function(D,I,H,J){this.indentMarkup=D.parentNode?D.parentNode.ui.getChildIndent():"";var E=typeof I.checked=="boolean";var B=I.href?I.href:Ext.isGecko?"":"#";var C=["<li class=\"x-tree-node\"><div ext:tree-node-id=\"",D.id,"\" class=\"x-tree-node-el x-tree-node-leaf x-unselectable ",I.cls,"\" unselectable=\"on\">","<span class=\"x-tree-node-indent\">",this.indentMarkup,"</span>","<img src=\"",this.emptyIcon,"\" class=\"x-tree-ec-icon x-tree-elbow\" />","<img src=\"",I.icon||this.emptyIcon,"\" class=\"x-tree-node-icon",(I.icon?" x-tree-node-inline-icon":""),(I.iconCls?" "+I.iconCls:""),"\" unselectable=\"on\" />",E?("<input class=\"x-tree-node-cb\" type=\"checkbox\" "+(I.checked?"checked=\"checked\" />":"/>")):"","<a hidefocus=\"on\" class=\"x-tree-node-anchor\" href=\"",B,"\" tabIndex=\"1\" ",I.hrefTarget?" target=\""+I.hrefTarget+"\"":"","><span unselectable=\"on\">",D.text,"</span></a></div>","<ul class=\"x-tree-node-ct\" style=\"display:none;\"></ul>","</li>"].join("");var A;if(J!==true&&D.nextSibling&&(A=D.nextSibling.ui.getEl())){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",A,C)}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",H,C)}this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var G=this.elNode.childNodes;this.indentNode=G[0];this.ecNode=G[1];this.iconNode=G[2];var F=3;if(E){this.checkbox=G[3];F++}this.anchor=G[F];this.textNode=G[F].firstChild},getAnchor:function(){return this.anchor},getTextEl:function(){return this.textNode},getIconEl:function(){return this.iconNode},isChecked:function(){return this.checkbox?this.checkbox.checked:false},updateExpandIcon:function(){if(this.rendered){var F=this.node,D,C;var A=F.isLast()?"x-tree-elbow-end":"x-tree-elbow";var E=F.hasChildNodes();if(E||F.attributes.expandable){if(F.expanded){A+="-minus";D="x-tree-node-collapsed";C="x-tree-node-expanded"}else{A+="-plus";D="x-tree-node-expanded";C="x-tree-node-collapsed"}if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false}if(this.c1!=D||this.c2!=C){Ext.fly(this.elNode).replaceClass(D,C);this.c1=D;this.c2=C}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-leaf");delete this.c1;delete this.c2;this.wasLeaf=true}}var B="x-tree-ec-icon "+A;if(this.ecc!=B){this.ecNode.className=B;this.ecc=B}}},getChildIndent:function(){if(!this.childIndent){var A=[];var B=this.node;while(B){if(!B.isRoot||(B.isRoot&&B.ownerTree.rootVisible)){if(!B.isLast()){A.unshift("<img src=\""+this.emptyIcon+"\" class=\"x-tree-elbow-line\" />")}else{A.unshift("<img src=\""+this.emptyIcon+"\" class=\"x-tree-icon\" />")}}B=B.parentNode}this.childIndent=A.join("")}return this.childIndent},renderIndent:function(){if(this.rendered){var A="";var B=this.node.parentNode;if(B){A=B.ui.getChildIndent()}if(this.indentMarkup!=A){this.indentNode.innerHTML=A;this.indentMarkup=A}this.updateExpandIcon()}},destroy:function(){if(this.elNode){Ext.dd.Registry.unregister(this.elNode.id)}delete this.elNode;delete this.ctNode;delete this.indentNode;delete this.ecNode;delete this.iconNode;delete this.checkbox;delete this.anchor;delete this.textNode;Ext.removeNode(this.ctNode)}};Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var A=this.node.ownerTree.innerCt.dom;this.node.expanded=true;A.innerHTML="<div class=\"x-tree-root-node\"></div>";this.wrap=this.ctNode=A.firstChild}},collapse:Ext.emptyFn,expand:Ext.emptyFn});
-Ext.tree.TreeLoader=function(A){this.baseParams={};this.requestMethod="POST";Ext.apply(this,A);this.addEvents("beforeload","load","loadexception");Ext.tree.TreeLoader.superclass.constructor.call(this)};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,load:function(A,B){if(this.clearOnLoad){while(A.firstChild){A.removeChild(A.firstChild)}}if(this.doPreload(A)){if(typeof B=="function"){B()}}else{if(this.dataUrl||this.url){this.requestData(A,B)}}},doPreload:function(D){if(D.attributes.children){if(D.childNodes.length<1){var C=D.attributes.children;D.beginUpdate();for(var B=0,A=C.length;B<A;B++){var E=D.appendChild(this.createNode(C[B]));if(this.preloadChildren){this.doPreload(E)}}D.endUpdate()}return true}else{return false}},getParams:function(D){var A=[],C=this.baseParams;for(var B in C){if(typeof C[B]!="function"){A.push(encodeURIComponent(B),"=",encodeURIComponent(C[B]),"&")}}A.push("node=",encodeURIComponent(D.id));return A.join("")},requestData:function(A,B){if(this.fireEvent("beforeload",this,A,B)!==false){this.transId=Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl||this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:B,node:A},params:this.getParams(A)})}else{if(typeof B=="function"){B()}}},isLoading:function(){return this.transId?true:false},abort:function(){if(this.isLoading()){Ext.Ajax.abort(this.transId)}},createNode:function(attr){if(this.baseAttrs){Ext.applyIf(attr,this.baseAttrs)}if(this.applyLoader!==false){attr.loader=this}if(typeof attr.uiProvider=="string"){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)}return(attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr))},processResponse:function(response,node,callback){var json=response.responseText;try{var o=eval("("+json+")");node.beginUpdate();for(var i=0,len=o.length;i<len;i++){var n=this.createNode(o[i]);if(n){node.appendChild(n)}}node.endUpdate();if(typeof callback=="function"){callback(this,node)}}catch(e){this.handleFailure(response)}},handleResponse:function(B){this.transId=false;var A=B.argument;this.processResponse(B,A.node,A.callback);this.fireEvent("load",this,A.node,B)},handleFailure:function(B){this.transId=false;var A=B.argument;this.fireEvent("loadexception",this,A.node,B);if(typeof A.callback=="function"){A.callback(this,A.node)}}});
-Ext.tree.TreeFilter=function(A,B){this.tree=A;this.filtered={};Ext.apply(this,B)};Ext.tree.TreeFilter.prototype={clearBlank:false,reverse:false,autoClear:false,remove:false,filter:function(D,A,B){A=A||"text";var C;if(typeof D=="string"){var E=D.length;if(E==0&&this.clearBlank){this.clear();return }D=D.toLowerCase();C=function(F){return F.attributes[A].substr(0,E).toLowerCase()==D}}else{if(D.exec){C=function(F){return D.test(F.attributes[A])}}else{throw"Illegal filter type, must be string or regex"}}this.filterBy(C,null,B)},filterBy:function(D,C,B){B=B||this.tree.root;if(this.autoClear){this.clear()}var A=this.filtered,H=this.reverse;var E=function(J){if(J==B){return true}if(A[J.id]){return false}var I=D.call(C||J,J);if(!I||H){A[J.id]=J;J.ui.hide();return false}return true};B.cascade(E);if(this.remove){for(var G in A){if(typeof G!="function"){var F=A[G];if(F&&F.parentNode){F.parentNode.removeChild(F)}}}}},clear:function(){var B=this.tree;var A=this.filtered;for(var D in A){if(typeof D!="function"){var C=A[D];if(C){C.ui.show()}}}this.filtered={}}};
-Ext.tree.TreeSorter=function(B,C){Ext.apply(this,C);B.on("beforechildrenrendered",this.doSort,this);B.on("append",this.updateSort,this);B.on("insert",this.updateSort,this);B.on("textchange",this.updateSortParent,this);var E=this.dir&&this.dir.toLowerCase()=="desc";var F=this.property||"text";var G=this.sortType;var A=this.folderSort;var D=this.caseSensitive===true;var H=this.leafAttr||"leaf";this.sortFn=function(J,I){if(A){if(J.attributes[H]&&!I.attributes[H]){return 1}if(!J.attributes[H]&&I.attributes[H]){return -1}}var L=G?G(J):(D?J.attributes[F]:J.attributes[F].toUpperCase());var K=G?G(I):(D?I.attributes[F]:I.attributes[F].toUpperCase());if(L<K){return E?+1:-1}else{if(L>K){return E?-1:+1}else{return 0}}}};Ext.tree.TreeSorter.prototype={doSort:function(A){A.sort(this.sortFn)},compareNodes:function(B,A){return(B.text.toUpperCase()>A.text.toUpperCase()?1:-1)},updateSort:function(A,B){if(B.childrenRendered){this.doSort.defer(1,this,[B])}},updateSortParent:function(A){var B=A.parentNode;if(B&&B.childrenRendered){this.doSort.defer(1,this,[B])}}};
-if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(A,B){this.allowParentInsert=false;this.allowContainerDrop=false;this.appendOnly=false;Ext.tree.TreeDropZone.superclass.constructor.call(this,A.innerCt,B);this.tree=A;this.dragOverData={};this.lastInsertClass="x-tree-no-status"};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(A){if(A.hasChildNodes()&&!A.isExpanded()){A.expand(false,null,this.triggerCacheRefresh.createDelegate(this))}},queueExpand:function(A){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[A])},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false}},isValidDropPoint:function(A,I,G,D,C){if(!A||!C){return false}var E=A.node;var F=C.node;if(!(E&&E.isTarget&&I)){return false}if(I=="append"&&E.allowChildren===false){return false}if((I=="above"||I=="below")&&(E.parentNode&&E.parentNode.allowChildren===false)){return false}if(F&&(E==F||F.contains(E))){return false}var B=this.dragOverData;B.tree=this.tree;B.target=E;B.data=C;B.point=I;B.source=G;B.rawEvent=D;B.dropNode=F;B.cancel=false;var H=this.tree.fireEvent("nodedragover",B);return B.cancel===false&&H!==false},getDropPoint:function(E,D,I){var J=D.node;if(J.isRoot){return J.allowChildren!==false?"append":false}var B=D.ddel;var K=Ext.lib.Dom.getY(B),G=K+B.offsetHeight;var F=Ext.lib.Event.getPageY(E);var H=J.allowChildren===false||J.isLeaf();if(this.appendOnly||J.parentNode.allowChildren===false){return H?false:"append"}var C=false;if(!this.allowParentInsert){C=J.hasChildNodes()&&J.isExpanded()}var A=(G-K)/(H?2:3);if(F>=K&&F<(K+A)){return"above"}else{if(!C&&(H||F>=G-A&&F<=G)){return"below"}else{return"append"}}},onNodeEnter:function(D,A,C,B){this.cancelExpand()},onNodeOver:function(B,G,F,E){var I=this.getDropPoint(F,B,G);var C=B.node;if(!this.expandProcId&&I=="append"&&C.hasChildNodes()&&!B.node.isExpanded()){this.queueExpand(C)}else{if(I!="append"){this.cancelExpand()}}var D=this.dropNotAllowed;if(this.isValidDropPoint(B,I,G,F,E)){if(I){var A=B.ddel;var H;if(I=="above"){D=B.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";H="x-tree-drag-insert-above"}else{if(I=="below"){D=B.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";H="x-tree-drag-insert-below"}else{D="x-tree-drop-ok-append";H="x-tree-drag-append"}}if(this.lastInsertClass!=H){Ext.fly(A).replaceClass(this.lastInsertClass,H);this.lastInsertClass=H}}}return D},onNodeOut:function(D,A,C,B){this.cancelExpand();this.removeDropIndicators(D)},onNodeDrop:function(C,I,E,D){var H=this.getDropPoint(E,C,I);var F=C.node;F.ui.startDrop();if(!this.isValidDropPoint(C,H,I,E,D)){F.ui.endDrop();return false}var G=D.node||(I.getTreeNode?I.getTreeNode(D,F,H,E):null);var B={tree:this.tree,target:F,data:D,point:H,source:I,rawEvent:E,dropNode:G,cancel:!G,dropStatus:false};var A=this.tree.fireEvent("beforenodedrop",B);if(A===false||B.cancel===true||!B.dropNode){F.ui.endDrop();return B.dropStatus}F=B.target;if(H=="append"&&!F.isExpanded()){F.expand(false,null,function(){this.completeDrop(B)}.createDelegate(this))}else{this.completeDrop(B)}return true},completeDrop:function(G){var D=G.dropNode,E=G.point,C=G.target;if(!Ext.isArray(D)){D=[D]}var F;for(var B=0,A=D.length;B<A;B++){F=D[B];if(E=="above"){C.parentNode.insertBefore(F,C)}else{if(E=="below"){C.parentNode.insertBefore(F,C.nextSibling)}else{C.appendChild(F)}}}F.ui.focus();if(this.tree.hlDrop){F.ui.highlight()}C.ui.endDrop();this.tree.fireEvent("nodedrop",G)},afterNodeMoved:function(A,C,E,D,B){if(this.tree.hlDrop){B.ui.focus();B.ui.highlight()}this.tree.fireEvent("nodedrop",this.tree,D,C,A,E)},getTree:function(){return this.tree},removeDropIndicators:function(B){if(B&&B.ddel){var A=B.ddel;Ext.fly(A).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);this.lastInsertClass="_noclass"}},beforeDragDrop:function(B,A,C){this.cancelExpand();return true},afterRepair:function(A){if(A&&Ext.enableFx){A.node.ui.highlight()}this.hideProxy()}})};
-if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(A,B){Ext.tree.TreeDragZone.superclass.constructor.call(this,A.getTreeEl(),B);this.tree=A};Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{ddGroup:"TreeDD",onBeforeDrag:function(A,B){var C=A.node;return C&&C.draggable&&!C.disabled},onInitDrag:function(B){var A=this.dragData;this.tree.getSelectionModel().select(A.node);this.tree.eventModel.disable();this.proxy.update("");A.node.ui.appendDDGhost(this.proxy.ghost.dom);this.tree.fireEvent("startdrag",this.tree,A.node,B)},getRepairXY:function(B,A){return A.node.ui.getDDRepairXY()},onEndDrag:function(A,B){this.tree.eventModel.enable.defer(100,this.tree.eventModel);this.tree.fireEvent("enddrag",this.tree,A.node,B)},onValidDrop:function(A,B,C){this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,A,B);this.hideProxy()},beforeInvalidDrop:function(A,C){var B=this.tree.getSelectionModel();B.clearSelections();B.select(this.dragData.node)}})};
-Ext.tree.TreeEditor=function(A,B){B=B||{};var C=B.events?B:new Ext.form.TextField(B);Ext.tree.TreeEditor.superclass.constructor.call(this,C);this.tree=A;if(!A.rendered){A.on("render",this.initEditor,this)}else{this.initEditor(A)}};Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,editDelay:350,initEditor:function(A){A.on("beforeclick",this.beforeNodeClick,this);A.on("dblclick",this.onNodeDblClick,this);this.on("complete",this.updateNode,this);this.on("beforestartedit",this.fitToTree,this);this.on("startedit",this.bindScroll,this,{delay:10});this.on("specialkey",this.onSpecialKey,this)},fitToTree:function(B,C){var E=this.tree.getTreeEl().dom,D=C.dom;if(E.scrollLeft>D.offsetLeft){E.scrollLeft=D.offsetLeft}var A=Math.min(this.maxWidth,(E.clientWidth>20?E.clientWidth:E.offsetWidth)-Math.max(0,D.offsetLeft-E.scrollLeft)-5);this.setSize(A,"")},triggerEdit:function(A,B){this.completeEdit();if(A.attributes.editable!==false){this.editNode=A;this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[A.ui.textNode,A.text]);return false}},bindScroll:function(){this.tree.getTreeEl().on("scroll",this.cancelEdit,this)},beforeNodeClick:function(A,B){clearTimeout(this.autoEditTimer);if(this.tree.getSelectionModel().isSelected(A)){B.stopEvent();return this.triggerEdit(A)}},onNodeDblClick:function(A,B){clearTimeout(this.autoEditTimer)},updateNode:function(A,B){this.tree.getTreeEl().un("scroll",this.cancelEdit,this);this.editNode.setText(B)},onHide:function(){Ext.tree.TreeEditor.superclass.onHide.call(this);if(this.editNode){this.editNode.ui.focus.defer(50,this.editNode.ui)}},onSpecialKey:function(C,B){var A=B.getKey();if(A==B.ESC){B.stopEvent();this.cancelEdit()}else{if(A==B.ENTER&&!B.hasModifier()){B.stopEvent();this.completeEdit()}}}});
-Ext.menu.Menu=function(A){if(Ext.isArray(A)){A={items:A}}Ext.apply(this,A);this.id=this.id||Ext.id();this.addEvents("beforeshow","beforehide","show","hide","click","mouseover","mouseout","itemclick");Ext.menu.MenuMgr.register(this);Ext.menu.Menu.superclass.constructor.call(this);var B=this.items;this.items=new Ext.util.MixedCollection();if(B){this.add.apply(this,B)}};Ext.extend(Ext.menu.Menu,Ext.util.Observable,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,hidden:true,createEl:function(){return new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:15000})},render:function(){if(this.el){return }var B=this.el=this.createEl();if(!this.keyNav){this.keyNav=new Ext.menu.MenuNav(this)}if(this.plain){B.addClass("x-menu-plain")}if(this.cls){B.addClass(this.cls)}this.focusEl=B.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});var A=B.createChild({tag:"ul",cls:"x-menu-list"});A.on("click",this.onClick,this);A.on("mouseover",this.onMouseOver,this);A.on("mouseout",this.onMouseOut,this);this.items.each(function(D){var C=document.createElement("li");C.className="x-menu-list-item";A.dom.appendChild(C);D.render(C,this)},this);this.ul=A;this.autoWidth()},autoWidth:function(){var D=this.el,C=this.ul;if(!D){return }var A=this.width;if(A){D.setWidth(A)}else{if(Ext.isIE){D.setWidth(this.minWidth);var B=D.dom.offsetWidth;D.setWidth(C.getWidth()+D.getFrameWidth("lr"))}}},delayAutoWidth:function(){if(this.el){if(!this.awTask){this.awTask=new Ext.util.DelayedTask(this.autoWidth,this)}this.awTask.delay(20)}},findTargetItem:function(B){var A=B.getTarget(".x-menu-list-item",this.ul,true);if(A&&A.menuItemId){return this.items.get(A.menuItemId)}},onClick:function(B){var A;if(A=this.findTargetItem(B)){A.onClick(B);this.fireEvent("click",this,A,B)}},setActiveItem:function(A,B){if(A!=this.activeItem){if(this.activeItem){this.activeItem.deactivate()}this.activeItem=A;A.activate(B)}else{if(B){A.expandMenu()}}},tryActivate:function(F,E){var B=this.items;for(var C=F,A=B.length;C>=0&&C<A;C+=E){var D=B.get(C);if(!D.disabled&&D.canActivate){this.setActiveItem(D,false);return D}}return false},onMouseOver:function(B){var A;if(A=this.findTargetItem(B)){if(A.canActivate&&!A.disabled){this.setActiveItem(A,true)}}this.fireEvent("mouseover",this,B,A)},onMouseOut:function(B){var A;if(A=this.findTargetItem(B)){if(A==this.activeItem&&A.shouldDeactivate(B)){this.activeItem.deactivate();delete this.activeItem}}this.fireEvent("mouseout",this,B,A)},isVisible:function(){return this.el&&!this.hidden},show:function(B,C,A){this.parentMenu=A;if(!this.el){this.render()}this.fireEvent("beforeshow",this);this.showAt(this.el.getAlignToXY(B,C||this.defaultAlign),A,false)},showAt:function(C,B,A){this.parentMenu=B;if(!this.el){this.render()}if(A!==false){this.fireEvent("beforeshow",this);C=this.el.adjustForConstraints(C)}this.el.setXY(C);this.el.show();this.hidden=false;this.focus();this.fireEvent("show",this)},focus:function(){if(!this.hidden){this.doFocus.defer(50,this)}},doFocus:function(){if(!this.hidden){this.focusEl.focus()}},hide:function(A){if(this.el&&this.isVisible()){this.fireEvent("beforehide",this);if(this.activeItem){this.activeItem.deactivate();this.activeItem=null}this.el.hide();this.hidden=true;this.fireEvent("hide",this)}if(A===true&&this.parentMenu){this.parentMenu.hide(true)}},add:function(){var B=arguments,A=B.length,E;for(var C=0;C<A;C++){var D=B[C];if(D.render){E=this.addItem(D)}else{if(typeof D=="string"){if(D=="separator"||D=="-"){E=this.addSeparator()}else{E=this.addText(D)}}else{if(D.tagName||D.el){E=this.addElement(D)}else{if(typeof D=="object"){Ext.applyIf(D,this.defaults);E=this.addMenuItem(D)}}}}}return E},getEl:function(){if(!this.el){this.render()}return this.el},addSeparator:function(){return this.addItem(new Ext.menu.Separator())},addElement:function(A){return this.addItem(new Ext.menu.BaseItem(A))},addItem:function(B){this.items.add(B);if(this.ul){var A=document.createElement("li");A.className="x-menu-list-item";this.ul.dom.appendChild(A);B.render(A,this);this.delayAutoWidth()}return B},addMenuItem:function(A){if(!(A instanceof Ext.menu.Item)){if(typeof A.checked=="boolean"){A=new Ext.menu.CheckItem(A)}else{A=new Ext.menu.Item(A)}}return this.addItem(A)},addText:function(A){return this.addItem(new Ext.menu.TextItem(A))},insert:function(B,C){this.items.insert(B,C);if(this.ul){var A=document.createElement("li");A.className="x-menu-list-item";this.ul.dom.insertBefore(A,this.ul.dom.childNodes[B]);C.render(A,this);this.delayAutoWidth()}return C},remove:function(A){this.items.removeKey(A.id);A.destroy()},removeAll:function(){var A;while(A=this.items.first()){this.remove(A)}},destroy:function(){this.beforeDestroy();Ext.menu.MenuMgr.unregister(this);if(this.keyNav){this.keyNav.disable()}this.removeAll();if(this.ul){this.ul.removeAllListeners()}if(this.el){this.el.destroy()}},beforeDestroy:Ext.emptyFn});Ext.menu.MenuNav=function(A){Ext.menu.MenuNav.superclass.constructor.call(this,A.el);this.scope=this.menu=A};Ext.extend(Ext.menu.MenuNav,Ext.KeyNav,{doRelay:function(C,B){var A=C.getKey();if(!this.menu.activeItem&&C.isNavKeyPress()&&A!=C.SPACE&&A!=C.RETURN){this.menu.tryActivate(0,1);return false}return B.call(this.scope||this,C,this.menu)},up:function(B,A){if(!A.tryActivate(A.items.indexOf(A.activeItem)-1,-1)){A.tryActivate(A.items.length-1,-1)}},down:function(B,A){if(!A.tryActivate(A.items.indexOf(A.activeItem)+1,1)){A.tryActivate(0,1)}},right:function(B,A){if(A.activeItem){A.activeItem.expandMenu(true)}},left:function(B,A){A.hide();if(A.parentMenu&&A.parentMenu.activeItem){A.parentMenu.activeItem.activate()}},enter:function(B,A){if(A.activeItem){B.stopPropagation();A.activeItem.onClick(B);A.fireEvent("click",this,A.activeItem);return true}}});
-Ext.menu.MenuMgr=function(){var F,D,C={},A=false,K=new Date();function M(){F={};D=new Ext.util.MixedCollection();Ext.getDoc().addKeyListener(27,function(){if(D.length>0){H()}})}function H(){if(D&&D.length>0){var N=D.clone();N.each(function(O){O.hide()})}}function E(N){D.remove(N);if(D.length<1){Ext.getDoc().un("mousedown",L);A=false}}function J(N){var O=D.last();K=new Date();D.add(N);if(!A){Ext.getDoc().on("mousedown",L);A=true}if(N.parentMenu){N.getEl().setZIndex(parseInt(N.parentMenu.getEl().getStyle("z-index"),10)+3);N.parentMenu.activeChild=N}else{if(O&&O.isVisible()){N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"),10)+3)}}}function B(N){if(N.activeChild){N.activeChild.hide()}if(N.autoHideTimer){clearTimeout(N.autoHideTimer);delete N.autoHideTimer}}function G(N){var O=N.parentMenu;if(!O&&!N.allowOtherMenus){H()}else{if(O&&O.activeChild){O.activeChild.hide()}}}function L(N){if(K.getElapsed()>50&&D.length>0&&!N.getTarget(".x-menu")){H()}}function I(O,R){if(R){var Q=C[O.group];for(var P=0,N=Q.length;P<N;P++){if(Q[P]!=O){Q[P].setChecked(false)}}}}return{hideAll:function(){H()},register:function(O){if(!F){M()}F[O.id]=O;O.on("beforehide",B);O.on("hide",E);O.on("beforeshow",G);O.on("show",J);var N=O.group;if(N&&O.events["checkchange"]){if(!C[N]){C[N]=[]}C[N].push(O);O.on("checkchange",onCheck)}},get:function(N){if(typeof N=="string"){if(!F){return null}return F[N]}else{if(N.events){return N}else{if(typeof N.length=="number"){return new Ext.menu.Menu({items:N})}else{return new Ext.menu.Menu(N)}}}},unregister:function(O){delete F[O.id];O.un("beforehide",B);O.un("hide",E);O.un("beforeshow",G);O.un("show",J);var N=O.group;if(N&&O.events["checkchange"]){C[N].remove(O);O.un("checkchange",onCheck)}},registerCheckable:function(N){var O=N.group;if(O){if(!C[O]){C[O]=[]}C[O].push(N);N.on("beforecheckchange",I)}},unregisterCheckable:function(N){var O=N.group;if(O){C[O].remove(N);N.un("beforecheckchange",I)}},getCheckedItem:function(P){var Q=C[P];if(Q){for(var O=0,N=Q.length;O<N;O++){if(Q[O].checked){return Q[O]}}}return null},setCheckedItem:function(P,R){var Q=C[P];if(Q){for(var O=0,N=Q.length;O<N;O++){if(Q[O].id==R){Q[O].setChecked(true)}}}return null}}}();
-Ext.menu.BaseItem=function(A){Ext.menu.BaseItem.superclass.constructor.call(this,A);this.addEvents("click","activate","deactivate");if(this.handler){this.on("click",this.handler,this.scope)}};Ext.extend(Ext.menu.BaseItem,Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,hideDelay:100,ctype:"Ext.menu.BaseItem",actionMode:"container",render:function(A,B){this.parentMenu=B;Ext.menu.BaseItem.superclass.render.call(this,A);this.container.menuItemId=this.id},onRender:function(B,A){this.el=Ext.get(this.el);B.dom.appendChild(this.el.dom)},setHandler:function(B,A){if(this.handler){this.un("click",this.handler,this.scope)}this.on("click",this.handler=B,this.scope=A)},onClick:function(A){if(!this.disabled&&this.fireEvent("click",this,A)!==false&&this.parentMenu.fireEvent("itemclick",this,A)!==false){this.handleClick(A)}else{A.stopEvent()}},activate:function(){if(this.disabled){return false}var A=this.container;A.addClass(this.activeClass);this.region=A.getRegion().adjust(2,2,-2,-2);this.fireEvent("activate",this);return true},deactivate:function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate",this)},shouldDeactivate:function(A){return !this.region||!this.region.contains(A.getPoint())},handleClick:function(A){if(this.hideOnClick){this.parentMenu.hide.defer(this.hideDelay,this.parentMenu,[true])}},expandMenu:function(A){},hideMenu:function(){}});
-Ext.menu.TextItem=function(A){this.text=A;Ext.menu.TextItem.superclass.constructor.call(this)};Ext.extend(Ext.menu.TextItem,Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",onRender:function(){var A=document.createElement("span");A.className=this.itemCls;A.innerHTML=this.text;this.el=A;Ext.menu.TextItem.superclass.onRender.apply(this,arguments)}});
-Ext.menu.Separator=function(A){Ext.menu.Separator.superclass.constructor.call(this,A)};Ext.extend(Ext.menu.Separator,Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,onRender:function(A){var B=document.createElement("span");B.className=this.itemCls;B.innerHTML="&#160;";this.el=B;A.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments)}});
-Ext.menu.Item=function(A){Ext.menu.Item.superclass.constructor.call(this,A);if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu)}};Ext.extend(Ext.menu.Item,Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,showDelay:200,hideDelay:200,ctype:"Ext.menu.Item",onRender:function(B,A){var C=document.createElement("a");C.hideFocus=true;C.unselectable="on";C.href=this.href||"#";if(this.hrefTarget){C.target=this.hrefTarget}C.className=this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:"");C.innerHTML=String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\" />{1}",this.icon||Ext.BLANK_IMAGE_URL,this.itemText||this.text,this.iconCls||"");this.el=C;Ext.menu.Item.superclass.onRender.call(this,B,A)},setText:function(A){this.text=A;if(this.rendered){this.el.update(String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\">{1}",this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||""));this.parentMenu.autoWidth()}},setIconClass:function(A){var B=this.iconCls;this.iconCls=A;if(this.rendered){this.el.child("img.x-menu-item-icon").replaceClass(B,this.iconCls)}},handleClick:function(A){if(!this.href){A.stopEvent()}Ext.menu.Item.superclass.handleClick.apply(this,arguments)},activate:function(A){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(A){this.expandMenu()}}return true},shouldDeactivate:function(A){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,A)){if(this.menu&&this.menu.isVisible()){return !this.menu.getEl().getRegion().contains(A.getPoint())}return true}return false},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu()},expandMenu:function(A){if(!this.disabled&&this.menu){clearTimeout(this.hideTimer);delete this.hideTimer;if(!this.menu.isVisible()&&!this.showTimer){this.showTimer=this.deferExpand.defer(this.showDelay,this,[A])}else{if(this.menu.isVisible()&&A){this.menu.tryActivate(0,1)}}}},deferExpand:function(A){delete this.showTimer;this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);if(A){this.menu.tryActivate(0,1)}},hideMenu:function(){clearTimeout(this.showTimer);delete this.showTimer;if(!this.hideTimer&&this.menu&&this.menu.isVisible()){this.hideTimer=this.deferHide.defer(this.hideDelay,this)}},deferHide:function(){delete this.hideTimer;this.menu.hide()}});
-Ext.menu.CheckItem=function(A){Ext.menu.CheckItem.superclass.constructor.call(this,A);this.addEvents("beforecheckchange","checkchange");if(this.checkHandler){this.on("checkchange",this.checkHandler,this.scope)}Ext.menu.MenuMgr.registerCheckable(this)};Ext.extend(Ext.menu.CheckItem,Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(A){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass)}if(this.checked){this.checked=false;this.setChecked(true,true)}},destroy:function(){Ext.menu.MenuMgr.unregisterCheckable(this);Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)},setChecked:function(B,A){if(this.checked!=B&&this.fireEvent("beforecheckchange",this,B)!==false){if(this.container){this.container[B?"addClass":"removeClass"]("x-menu-item-checked")}this.checked=B;if(A!==true){this.fireEvent("checkchange",this,B)}}},handleClick:function(A){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked)}Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)}});
-Ext.menu.Adapter=function(B,A){Ext.menu.Adapter.superclass.constructor.call(this,A);this.component=B};Ext.extend(Ext.menu.Adapter,Ext.menu.BaseItem,{canActivate:true,onRender:function(B,A){this.component.render(B);this.el=this.component.getEl()},activate:function(){if(this.disabled){return false}this.component.focus();this.fireEvent("activate",this);return true},deactivate:function(){this.fireEvent("deactivate",this)},disable:function(){this.component.disable();Ext.menu.Adapter.superclass.disable.call(this)},enable:function(){this.component.enable();Ext.menu.Adapter.superclass.enable.call(this)}});
-Ext.menu.DateItem=function(A){Ext.menu.DateItem.superclass.constructor.call(this,new Ext.DatePicker(A),A);this.picker=this.component;this.addEvents("select");this.picker.on("render",function(B){B.getEl().swallowEvent("click");B.container.addClass("x-menu-date-item")});this.picker.on("select",this.onSelect,this)};Ext.extend(Ext.menu.DateItem,Ext.menu.Adapter,{onSelect:function(B,A){this.fireEvent("select",this,A,B);Ext.menu.DateItem.superclass.handleClick.call(this)}});
-Ext.menu.ColorItem=function(A){Ext.menu.ColorItem.superclass.constructor.call(this,new Ext.ColorPalette(A),A);this.palette=this.component;this.relayEvents(this.palette,["select"]);if(this.selectHandler){this.on("select",this.selectHandler,this.scope)}};Ext.extend(Ext.menu.ColorItem,Ext.menu.Adapter);
-Ext.menu.DateMenu=function(A){Ext.menu.DateMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.DateItem(A);this.add(B);this.picker=B.picker;this.relayEvents(B,["select"]);this.on("beforeshow",function(){if(this.picker){this.picker.hideMonthPicker(true)}},this)};Ext.extend(Ext.menu.DateMenu,Ext.menu.Menu,{cls:"x-date-menu",beforeDestroy:function(){this.picker.destroy()}});
-Ext.menu.ColorMenu=function(A){Ext.menu.ColorMenu.superclass.constructor.call(this,A);this.plain=true;var B=new Ext.menu.ColorItem(A);this.add(B);this.palette=B.palette;this.relayEvents(B,["select"])};Ext.extend(Ext.menu.ColorMenu,Ext.menu.Menu);
-Ext.form.Field=Ext.extend(Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,isFormField:true,hasFocus:false,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents("focus","blur","specialkey","change","invalid","valid")},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:(this.hiddenName||"")},onRender:function(C,A){Ext.form.Field.superclass.onRender.call(this,C,A);if(!this.el){var B=this.getAutoCreate();if(!B.name){B.name=this.name||this.id}if(this.inputType){B.type=this.inputType}this.el=C.createChild(B,A)}var D=this.el.dom.type;if(D){if(D=="password"){D="text"}this.el.addClass("x-form-"+D)}if(this.readOnly){this.el.dom.readOnly=true}if(this.tabIndex!==undefined){this.el.dom.setAttribute("tabIndex",this.tabIndex)}this.el.addClass([this.fieldClass,this.cls]);this.initValue()},initValue:function(){if(this.value!==undefined){this.setValue(this.value)}else{if(this.el.dom.value.length>0){this.setValue(this.el.dom.value)}}},isDirty:function(){if(this.disabled){return false}return String(this.getValue())!==String(this.originalValue)},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents()},fireKey:function(A){if(A.isSpecialKey()){this.fireEvent("specialkey",this,A)}},reset:function(){this.setValue(this.originalValue);this.clearInvalid()},initEvents:function(){this.el.on(Ext.isIE?"keydown":"keypress",this.fireKey,this);this.el.on("focus",this.onFocus,this);this.el.on("blur",this.onBlur,this);this.originalValue=this.getValue()},onFocus:function(){if(!Ext.isOpera&&this.focusClass){this.el.addClass(this.focusClass)}if(!this.hasFocus){this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this)}},beforeBlur:Ext.emptyFn,onBlur:function(){this.beforeBlur();if(!Ext.isOpera&&this.focusClass){this.el.removeClass(this.focusClass)}this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate()}var A=this.getValue();if(String(A)!==String(this.startValue)){this.fireEvent("change",this,A,this.startValue)}this.fireEvent("blur",this)},isValid:function(A){if(this.disabled){return true}var C=this.preventMark;this.preventMark=A===true;var B=this.validateValue(this.processValue(this.getRawValue()));this.preventMark=C;return B},validate:function(){if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){this.clearInvalid();return true}return false},processValue:function(A){return A},validateValue:function(A){return true},markInvalid:function(C){if(!this.rendered||this.preventMark){return }this.el.addClass(this.invalidClass);C=C||this.invalidText;switch(this.msgTarget){case"qtip":this.el.dom.qtip=C;this.el.dom.qclass="x-form-invalid-tip";if(Ext.QuickTips){Ext.QuickTips.enable()}break;case"title":this.el.dom.title=C;break;case"under":if(!this.errorEl){var B=this.el.findParent(".x-form-element",5,true);this.errorEl=B.createChild({cls:"x-form-invalid-msg"});this.errorEl.setWidth(B.getWidth(true)-20)}this.errorEl.update(C);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case"side":if(!this.errorIcon){var B=this.el.findParent(".x-form-element",5,true);this.errorIcon=B.createChild({cls:"x-form-invalid-icon"})}this.alignErrorIcon();this.errorIcon.dom.qtip=C;this.errorIcon.dom.qclass="x-form-invalid-tip";this.errorIcon.show();this.on("resize",this.alignErrorIcon,this);break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML=C;A.style.display=this.msgDisplay;break}this.fireEvent("invalid",this,C)},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,"tl-tr",[2,0])},clearInvalid:function(){if(!this.rendered||this.preventMark){return }this.el.removeClass(this.invalidClass);switch(this.msgTarget){case"qtip":this.el.dom.qtip="";break;case"title":this.el.dom.title="";break;case"under":if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this)}break;case"side":if(this.errorIcon){this.errorIcon.dom.qtip="";this.errorIcon.hide();this.un("resize",this.alignErrorIcon,this)}break;default:var A=Ext.getDom(this.msgTarget);A.innerHTML="";A.style.display="none";break}this.fireEvent("valid",this)},getRawValue:function(){var A=this.rendered?this.el.getValue():Ext.value(this.value,"");if(A===this.emptyText){A=""}return A},getValue:function(){if(!this.rendered){return this.value}var A=this.el.getValue();if(A===this.emptyText||A===undefined){A=""}return A},setRawValue:function(A){return this.el.dom.value=(A===null||A===undefined?"":A)},setValue:function(A){this.value=A;if(this.rendered){this.el.dom.value=(A===null||A===undefined?"":A);this.validate()}},adjustSize:function(A,C){var B=Ext.form.Field.superclass.adjustSize.call(this,A,C);B.width=this.adjustWidth(this.el.dom.tagName,B.width);return B},adjustWidth:function(A,B){A=A.toLowerCase();if(typeof B=="number"&&!Ext.isSafari){if(Ext.isIE&&(A=="input"||A=="textarea")){if(A=="input"&&!Ext.isStrict){return this.inEditor?B:B-3}if(A=="input"&&Ext.isStrict){return B-(Ext.isIE6?4:1)}if(A="textarea"&&Ext.isStrict){return B-2}}else{if(Ext.isOpera&&Ext.isStrict){if(A=="input"){return B+2}if(A="textarea"){return B-2}}}}return B}});Ext.form.Field.msgFx={normal:{show:function(A,B){A.setDisplayed("block")},hide:function(A,B){A.setDisplayed(false).update("")}},slide:{show:function(A,B){A.slideIn("t",{stopFx:true})},hide:function(A,B){A.slideOut("t",{stopFx:true,useDisplay:true})}},slideRight:{show:function(A,B){A.fixDisplay();A.alignTo(B.el,"tl-tr");A.slideIn("l",{stopFx:true})},hide:function(A,B){A.slideOut("l",{stopFx:true,useDisplay:true})}}};Ext.reg("field",Ext.form.Field);
-Ext.form.TextField=Ext.extend(Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function(){Ext.form.TextField.superclass.initComponent.call(this);this.addEvents("autosize")},initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=="keyup"){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.el.on("keyup",this.filterValidation,this)}else{if(this.validationEvent!==false){this.el.on(this.validationEvent,this.validate,this,{buffer:this.validationDelay})}}if(this.selectOnFocus||this.emptyText){this.on("focus",this.preFocus,this);if(this.emptyText){this.on("blur",this.postBlur,this);this.applyEmptyText()}}if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){this.el.on("keypress",this.filterKeys,this)}if(this.grow){this.el.on("keyup",this.onKeyUp,this,{buffer:50});this.el.on("click",this.autoSize,this)}},processValue:function(A){if(this.stripCharsRe){var B=A.replace(this.stripCharsRe,"");if(B!==A){this.setRawValue(B);return B}}return A},filterValidation:function(A){if(!A.isNavKeyPress()){this.validationTask.delay(this.validationDelay)}},onKeyUp:function(A){if(!A.isNavKeyPress()){this.autoSize()}},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText()},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass)}},preFocus:function(){if(this.emptyText){if(this.el.dom.value==this.emptyText){this.setRawValue("")}this.el.removeClass(this.emptyClass)}if(this.selectOnFocus){this.el.dom.select()}},postBlur:function(){this.applyEmptyText()},filterKeys:function(B){var A=B.getKey();if(!Ext.isIE&&(B.isNavKeyPress()||A==B.BACKSPACE||(A==B.DELETE&&B.button==-1))){return }var D=B.getCharCode(),C=String.fromCharCode(D);if(Ext.isIE&&(B.isSpecialKey()||!C)){return }if(!this.maskRe.test(C)){B.stopEvent()}},setValue:function(A){if(this.emptyText&&this.el&&A!==undefined&&A!==null&&A!==""){this.el.removeClass(this.emptyClass)}Ext.form.TextField.superclass.setValue.apply(this,arguments);this.applyEmptyText();this.autoSize()},validateValue:function(A){if(A.length<1||A===this.emptyText){if(this.allowBlank){this.clearInvalid();return true}else{this.markInvalid(this.blankText);return false}}if(A.length<this.minLength){this.markInvalid(String.format(this.minLengthText,this.minLength));return false}if(A.length>this.maxLength){this.markInvalid(String.format(this.maxLengthText,this.maxLength));return false}if(this.vtype){var C=Ext.form.VTypes;if(!C[this.vtype](A,this)){this.markInvalid(this.vtypeText||C[this.vtype+"Text"]);return false}}if(typeof this.validator=="function"){var B=this.validator(A);if(B!==true){this.markInvalid(B);return false}}if(this.regex&&!this.regex.test(A)){this.markInvalid(this.regexText);return false}return true},selectText:function(E,A){var C=this.getRawValue();if(C.length>0){E=E===undefined?0:E;A=A===undefined?C.length:A;var D=this.el.dom;if(D.setSelectionRange){D.setSelectionRange(E,A)}else{if(D.createTextRange){var B=D.createTextRange();B.moveStart("character",E);B.moveEnd("character",A-C.length);B.select()}}}},autoSize:function(){if(!this.grow||!this.rendered){return }if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el)}var C=this.el;var B=C.dom.value;var D=document.createElement("div");D.appendChild(document.createTextNode(B));B=D.innerHTML;D=null;B+="&#160;";var A=Math.min(this.growMax,Math.max(this.metrics.getWidth(B)+10,this.growMin));this.el.setWidth(A);this.fireEvent("autosize",this,A)}});Ext.reg("textfield",Ext.form.TextField);
-Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,onResize:function(A,B){Ext.form.TriggerField.superclass.onResize.call(this,A,B);if(typeof A=="number"){this.el.setWidth(this.adjustWidth("input",A-this.trigger.getWidth()))}this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])},onRender:function(B,A){Ext.form.TriggerField.superclass.onRender.call(this,B,A);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(this.hideTrigger){this.trigger.setDisplayed(false)}this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())}},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver("x-form-trigger-over");this.trigger.addClassOnClick("x-form-trigger-click")},onDestroy:function(){if(this.trigger){this.trigger.removeAllListeners();this.trigger.remove()}if(this.wrap){this.wrap.remove()}Ext.form.TriggerField.superclass.onDestroy.call(this)},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass("x-trigger-wrap-focus");this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this,{delay:10});if(this.monitorTab){this.el.on("keydown",this.checkTab,this)}}},checkTab:function(A){if(A.getKey()==A.TAB){this.triggerBlur()}},onBlur:function(){},mimicBlur:function(A){if(!this.wrap.contains(A.target)&&this.validateBlur(A)){this.triggerBlur()}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur);if(this.monitorTab){this.el.un("keydown",this.checkTab,this)}this.beforeBlur();this.wrap.removeClass("x-trigger-wrap-focus");Ext.form.TriggerField.superclass.onBlur.call(this)},beforeBlur:Ext.emptyFn,validateBlur:function(A){return true},onDisable:function(){Ext.form.TriggerField.superclass.onDisable.call(this);if(this.wrap){this.wrap.addClass("x-item-disabled")}},onEnable:function(){Ext.form.TriggerField.superclass.onEnable.call(this);if(this.wrap){this.wrap.removeClass("x-item-disabled")}},onShow:function(){if(this.wrap){this.wrap.dom.style.display="";this.wrap.dom.style.visibility="visible"}},onHide:function(){this.wrap.dom.style.display="none"},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:"span",cls:"x-form-twin-triggers",cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger2Class}]}},getTrigger:function(A){return this.triggers[A]},initTrigger:function(){var A=this.trigger.select(".x-form-trigger",true);this.wrap.setStyle("overflow","hidden");var B=this;A.each(function(D,F,C){D.hide=function(){var G=B.wrap.getWidth();this.dom.style.display="none";B.el.setWidth(G-B.trigger.getWidth())};D.show=function(){var G=B.wrap.getWidth();this.dom.style.display="";B.el.setWidth(G-B.trigger.getWidth())};var E="Trigger"+(C+1);if(this["hide"+E]){D.dom.style.display="none"}D.on("click",this["on"+E+"Click"],this,{preventDefault:true});D.addClassOnOver("x-form-trigger-over");D.addClassOnClick("x-form-trigger-click")},this);this.triggers=A.elements},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn});Ext.reg("trigger",Ext.form.TriggerField);
-Ext.form.TextArea=Ext.extend(Ext.form.TextField,{growMin:60,growMax:1000,growAppend:"&#160;\n&#160;",growPad:0,enterIsSpecial:false,preventScrollbars:false,onRender:function(B,A){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:100px;height:60px;",autocomplete:"off"}}Ext.form.TextArea.superclass.onRender.call(this,B,A);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden")}this.el.setHeight(this.growMin)}},onDestroy:function(){if(this.textSizeEl){Ext.removeNode(this.textSizeEl)}Ext.form.TextArea.superclass.onDestroy.call(this)},fireKey:function(A){if(A.isSpecialKey()&&(this.enterIsSpecial||(A.getKey()!=A.ENTER||A.hasModifier()))){this.fireEvent("specialkey",this,A)}},onKeyUp:function(A){if(!A.isNavKeyPress()||A.getKey()==A.ENTER){this.autoSize()}},autoSize:function(){if(!this.grow||!this.textSizeEl){return }var C=this.el;var A=C.dom.value;var D=this.textSizeEl;D.innerHTML="";D.appendChild(document.createTextNode(A));A=D.innerHTML;Ext.fly(D).setWidth(this.el.getWidth());if(A.length<1){A="&#160;&#160;"}else{if(Ext.isIE){A=A.replace(/\n/g,"<p>&#160;</p>")}A+=this.growAppend}D.innerHTML=A;var B=Math.min(this.growMax,Math.max(D.offsetHeight,this.growMin)+this.growPad);if(B!=this.lastHeight){this.lastHeight=B;this.el.setHeight(B);this.fireEvent("autosize",this,B)}}});Ext.reg("textarea",Ext.form.TextArea);
-Ext.form.NumberField=Ext.extend(Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",initEvents:function(){Ext.form.NumberField.superclass.initEvents.call(this);var B=this.baseChars+"";if(this.allowDecimals){B+=this.decimalSeparator}if(this.allowNegative){B+="-"}this.stripCharsRe=new RegExp("[^"+B+"]","gi");var A=function(D){var C=D.getKey();if(!Ext.isIE&&(D.isSpecialKey()||C==D.BACKSPACE||C==D.DELETE)){return }var E=D.getCharCode();if(B.indexOf(String.fromCharCode(E))===-1){D.stopEvent()}};this.el.on("keypress",A,this)},validateValue:function(B){if(!Ext.form.NumberField.superclass.validateValue.call(this,B)){return false}if(B.length<1){return true}B=String(B).replace(this.decimalSeparator,".");if(isNaN(B)){this.markInvalid(String.format(this.nanText,B));return false}var A=this.parseValue(B);if(A<this.minValue){this.markInvalid(String.format(this.minText,this.minValue));return false}if(A>this.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false}return true},getValue:function(){return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))},setValue:function(A){A=parseFloat(A);A=isNaN(A)?"":String(A).replace(".",this.decimalSeparator);Ext.form.NumberField.superclass.setValue.call(this,A)},parseValue:function(A){A=parseFloat(String(A).replace(this.decimalSeparator,"."));return isNaN(A)?"":A},fixPrecision:function(B){var A=isNaN(B);if(!this.allowDecimals||this.decimalPrecision==-1||A||!B){return A?"":B}return parseFloat(parseFloat(B).toFixed(this.decimalPrecision))},beforeBlur:function(){var A=this.parseValue(this.getRawValue());if(A){this.setValue(this.fixPrecision(A))}}});Ext.reg("numberfield",Ext.form.NumberField);
-Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initComponent:function(){Ext.form.DateField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}this.ddMatch=null;if(this.disabledDates){var A=this.disabledDates;var C="(?:";for(var B=0;B<A.length;B++){C+=A[B];if(B!=A.length-1){C+="|"}}this.ddMatch=new RegExp(C+")")}},validateValue:function(E){E=this.formatDate(E);if(!Ext.form.DateField.superclass.validateValue.call(this,E)){return false}if(E.length<1){return true}var C=E;E=this.parseDate(E);if(!E){this.markInvalid(String.format(this.invalidText,C,this.format));return false}var F=E.getTime();if(this.minValue&&F<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));return false}if(this.maxValue&&F>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false}if(this.disabledDays){var A=E.getDay();for(var B=0;B<this.disabledDays.length;B++){if(A===this.disabledDays[B]){this.markInvalid(this.disabledDaysText);return false}}}var D=this.formatDate(E);if(this.ddMatch&&this.ddMatch.test(D)){this.markInvalid(String.format(this.disabledDatesText,D));return false}return true},validateBlur:function(){return !this.menu||!this.menu.isVisible()},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""},setValue:function(A){Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)))},parseDate:function(D){if(!D||Ext.isDate(D)){return D}var B=Date.parseDate(D,this.format);if(!B&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|")}for(var C=0,A=this.altFormatsArray.length;C<A&&!B;C++){B=Date.parseDate(D,this.altFormatsArray[C])}}return B},onDestroy:function(){if(this.menu){this.menu.destroy()}if(this.wrap){this.wrap.remove()}Ext.form.DateField.superclass.onDestroy.call(this)},formatDate:function(A){return Ext.isDate(A)?A.dateFormat(this.format):A},menuListeners:{select:function(A,B){this.setValue(B)},show:function(){this.onFocus()},hide:function(){this.focus.defer(10,this);var A=this.menuListeners;this.menu.un("select",A.select,this);this.menu.un("show",A.show,this);this.menu.un("hide",A.hide,this)}},onTriggerClick:function(){if(this.disabled){return }if(this.menu==null){this.menu=new Ext.menu.DateMenu()}Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?")},beforeBlur:function(){var A=this.parseDate(this.getRawValue());if(A){this.setValue(A)}}});Ext.reg("datefield",Ext.form.DateField);
-Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,editable:true,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,initComponent:function(){Ext.form.ComboBox.superclass.initComponent.call(this);this.addEvents("expand","collapse","beforeselect","select","beforequery");if(this.transform){this.allowDomMove=false;var C=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=C.name}if(!this.store){this.mode="local";var G=[],D=C.options;for(var B=0,A=D.length;B<A;B++){var F=D[B];var E=(Ext.isIE?F.getAttributeNode("value").specified:F.hasAttribute("value"))?F.value:F.text;if(F.selected){this.value=E}G.push([E,F.text])}this.store=new Ext.data.SimpleStore({"id":0,fields:["value","text"],data:G});this.valueField="value";this.displayField="text"}C.name=Ext.id();if(!this.lazyRender){this.target=true;this.el=Ext.DomHelper.insertBefore(C,this.autoCreate||this.defaultAutoCreate);Ext.removeNode(C);this.render(this.el.parentNode)}else{Ext.removeNode(C)}}this.selectedIndex=-1;if(this.mode=="local"){if(this.initialConfig.queryDelay===undefined){this.queryDelay=10}if(this.initialConfig.minChars===undefined){this.minChars=0}}},onRender:function(B,A){Ext.form.ComboBox.superclass.onRender.call(this,B,A);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:"input",type:"hidden",name:this.hiddenName,id:(this.hiddenId||this.hiddenName)},"before",true);this.hiddenField.value=this.hiddenValue!==undefined?this.hiddenValue:this.value!==undefined?this.value:"";this.el.dom.removeAttribute("name")}if(Ext.isGecko){this.el.dom.setAttribute("autocomplete","off")}if(!this.lazyInit){this.initList()}else{this.on("focus",this.initList,this,{single:true})}if(!this.editable){this.editable=true;this.setEditable(false)}},initList:function(){if(!this.list){var A="x-combo-list";this.list=new Ext.Layer({shadow:this.shadow,cls:[A,this.listClass].join(" "),constrain:false});var B=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setWidth(B);this.list.swallowEvent("mousewheel");this.assetHeight=0;if(this.title){this.header=this.list.createChild({cls:A+"-hd",html:this.title});this.assetHeight+=this.header.getHeight()}this.innerList=this.list.createChild({cls:A+"-inner"});this.innerList.on("mouseover",this.onViewOver,this);this.innerList.on("mousemove",this.onViewMove,this);this.innerList.setWidth(B-this.list.getFrameWidth("lr"));if(this.pageSize){this.footer=this.list.createChild({cls:A+"-ft"});this.pageTb=new Ext.PagingToolbar({store:this.store,pageSize:this.pageSize,renderTo:this.footer});this.assetHeight+=this.footer.getHeight()}if(!this.tpl){this.tpl="<tpl for=\".\"><div class=\""+A+"-item\">{"+this.displayField+"}</div></tpl>"}this.view=new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector||"."+A+"-item"});this.view.on("click",this.onViewClick,this);this.bindStore(this.store,true);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:"se"});this.resizer.on("resize",function(E,C,D){this.maxHeight=D-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;this.listWidth=C;this.innerList.setWidth(C-this.list.getFrameWidth("lr"));this.restrictHeight()},this);this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")}}},bindStore:function(A,B){if(this.store&&!B){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.collapse,this);if(!A){this.store=null;if(this.view){this.view.setStore(null)}}}if(A){this.store=Ext.StoreMgr.lookup(A);this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.collapse,this);if(this.view){this.view.setStore(A)}}},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{"up":function(A){this.inKeyMode=true;this.selectPrev()},"down":function(A){if(!this.isExpanded()){this.onTriggerClick()}else{this.inKeyMode=true;this.selectNext()}},"enter":function(A){this.onViewClick();this.delayedCheck=true;this.unsetDelayCheck.defer(10,this)},"esc":function(A){this.collapse()},"tab":function(A){this.onViewClick(false);return true},scope:this,doRelay:function(C,B,A){if(A=="down"||this.scope.isExpanded()){return Ext.KeyNav.prototype.doRelay.apply(this,arguments)}return true},forceKeyDown:true});this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)}if(this.editable!==false){this.el.on("keyup",this.onKeyUp,this)}if(this.forceSelection){this.on("blur",this.doForce,this)}},onDestroy:function(){if(this.view){this.view.el.removeAllListeners();this.view.el.remove();this.view.purgeListeners()}if(this.list){this.list.destroy()}this.bindStore(null);Ext.form.ComboBox.superclass.onDestroy.call(this)},unsetDelayCheck:function(){delete this.delayedCheck},fireKey:function(A){if(A.isNavKeyPress()&&!this.isExpanded()&&!this.delayedCheck){this.fireEvent("specialkey",this,A)}},onResize:function(A,B){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(this.list&&this.listWidth===undefined){var C=Math.max(A,this.minListWidth);this.list.setWidth(C);this.innerList.setWidth(C-this.list.getFrameWidth("lr"))}},onEnable:function(){Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=false}},onDisable:function(){Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);if(this.hiddenField){this.hiddenField.disabled=true}},setEditable:function(A){if(A==this.editable){return }this.editable=A;if(!A){this.el.dom.setAttribute("readOnly",true);this.el.on("mousedown",this.onTriggerClick,this);this.el.addClass("x-combo-noedit")}else{this.el.dom.setAttribute("readOnly",false);this.el.un("mousedown",this.onTriggerClick,this);this.el.removeClass("x-combo-noedit")}},onBeforeLoad:function(){if(!this.hasFocus){return }this.innerList.update(this.loadingText?"<div class=\"loading-indicator\">"+this.loadingText+"</div>":"");this.restrictHeight();this.selectedIndex=-1},onLoad:function(){if(!this.hasFocus){return }if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select()}if(!this.selectByValue(this.value,true)){this.select(0,true)}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay)}}}else{this.onEmptyResults()}},onTypeAhead:function(){if(this.store.getCount()>0){var B=this.store.getAt(0);var C=B.data[this.displayField];var A=C.length;var D=this.getRawValue().length;if(D!=A){this.setRawValue(C);this.selectText(D,C.length)}}},onSelect:function(A,B){if(this.fireEvent("beforeselect",this,A,B)!==false){this.setValue(A.data[this.valueField||this.displayField]);this.collapse();this.fireEvent("select",this,A,B)}},getValue:function(){if(this.valueField){return typeof this.value!="undefined"?this.value:""}else{return Ext.form.ComboBox.superclass.getValue.call(this)}},clearValue:function(){if(this.hiddenField){this.hiddenField.value=""}this.setRawValue("");this.lastSelectionText="";this.applyEmptyText();this.value=""},setValue:function(A){var C=A;if(this.valueField){var B=this.findRecord(this.valueField,A);if(B){C=B.data[this.displayField]}else{if(this.valueNotFoundText!==undefined){C=this.valueNotFoundText}}}this.lastSelectionText=C;if(this.hiddenField){this.hiddenField.value=A}Ext.form.ComboBox.superclass.setValue.call(this,C);this.value=A},findRecord:function(C,B){var A;if(this.store.getCount()>0){this.store.each(function(D){if(D.data[C]==B){A=D;return false}})}return A},onViewMove:function(B,A){this.inKeyMode=false},onViewOver:function(D,B){if(this.inKeyMode){return }var C=this.view.findItemFromChild(B);if(C){var A=this.view.indexOf(C);this.select(A,false)}},onViewClick:function(B){var A=this.view.getSelectedIndexes()[0];var C=this.store.getAt(A);if(C){this.onSelect(C,A)}if(B!==false){this.el.focus()}},restrictHeight:function(){this.innerList.dom.style.height="";var B=this.innerList.dom;var E=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight;var C=Math.max(B.clientHeight,B.offsetHeight,B.scrollHeight);var A=this.getPosition()[1]-Ext.getBody().getScroll().top;var F=Ext.lib.Dom.getViewHeight()-A-this.getSize().height;var D=Math.max(A,F,this.minHeight||0)-this.list.shadow.offset-E-2;C=Math.min(C,D,this.maxHeight);this.innerList.setHeight(C);this.list.beginUpdate();this.list.setHeight(C+E);this.list.alignTo(this.el,this.listAlign);this.list.endUpdate()},onEmptyResults:function(){this.collapse()},isExpanded:function(){return this.list&&this.list.isVisible()},selectByValue:function(A,C){if(A!==undefined&&A!==null){var B=this.findRecord(this.valueField||this.displayField,A);if(B){this.select(this.store.indexOf(B),C);return true}}return false},select:function(A,C){this.selectedIndex=A;this.view.select(A);if(C!==false){var B=this.view.getNode(A);if(B){this.innerList.scrollChildIntoView(B,false)}}},selectNext:function(){var A=this.store.getCount();if(A>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex<A-1){this.select(this.selectedIndex+1)}}}},selectPrev:function(){var A=this.store.getCount();if(A>0){if(this.selectedIndex==-1){this.select(0)}else{if(this.selectedIndex!=0){this.select(this.selectedIndex-1)}}}},onKeyUp:function(A){if(this.editable!==false&&!A.isSpecialKey()){this.lastKey=A.getKey();this.dqTask.delay(this.queryDelay)}},validateBlur:function(){return !this.list||!this.list.isVisible()},initQuery:function(){this.doQuery(this.getRawValue())},doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?"":this.lastSelectionText;this.applyEmptyText()}},doQuery:function(C,B){if(C===undefined||C===null){C=""}var A={query:C,forceAll:B,combo:this,cancel:false};if(this.fireEvent("beforequery",A)===false||A.cancel){return false}C=A.query;B=A.forceAll;if(B===true||(C.length>=this.minChars)){if(this.lastQuery!==C){this.lastQuery=C;if(this.mode=="local"){this.selectedIndex=-1;if(B){this.store.clearFilter()}else{this.store.filter(this.displayField,C)}this.onLoad()}else{this.store.baseParams[this.queryParam]=C;this.store.load({params:this.getParams(C)});this.expand()}}else{this.selectedIndex=-1;this.onLoad()}}},getParams:function(A){var B={};if(this.pageSize){B.start=0;B.limit=this.pageSize}return B},collapse:function(){if(!this.isExpanded()){return }this.list.hide();Ext.getDoc().un("mousewheel",this.collapseIf,this);Ext.getDoc().un("mousedown",this.collapseIf,this);this.fireEvent("collapse",this)},collapseIf:function(A){if(!A.within(this.wrap)&&!A.within(this.list)){this.collapse()}},expand:function(){if(this.isExpanded()||!this.hasFocus){return }this.list.alignTo(this.wrap,this.listAlign);this.list.show();this.innerList.setOverflow("auto");Ext.getDoc().on("mousewheel",this.collapseIf,this);Ext.getDoc().on("mousedown",this.collapseIf,this);this.fireEvent("expand",this)},onTriggerClick:function(){if(this.disabled){return }if(this.isExpanded()){this.collapse();this.el.focus()}else{this.onFocus({});if(this.triggerAction=="all"){this.doQuery(this.allQuery,true)}else{this.doQuery(this.getRawValue())}this.el.focus()}}});Ext.reg("combo",Ext.form.ComboBox);
-Ext.form.Checkbox=Ext.extend(Ext.form.Field,{focusClass:undefined,fieldClass:"x-form-field",checked:false,defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},initComponent:function(){Ext.form.Checkbox.superclass.initComponent.call(this);this.addEvents("check")},onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel){this.el.alignTo(this.wrap,"c-c")}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.el.on("click",this.onClick,this);this.el.on("change",this.onClick,this)},getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,onRender:function(B,A){Ext.form.Checkbox.superclass.onRender.call(this,B,A);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue}this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})}if(this.checked){this.setValue(true)}else{this.checked=this.el.dom.checked}},onDestroy:function(){if(this.wrap){this.wrap.remove()}Ext.form.Checkbox.superclass.onDestroy.call(this)},initValue:Ext.emptyFn,getValue:function(){if(this.rendered){return this.el.dom.checked}return false},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked)}},setValue:function(A){this.checked=(A===true||A==="true"||A=="1"||String(A).toLowerCase()=="on");if(this.el&&this.el.dom){this.el.dom.checked=this.checked;this.el.dom.defaultChecked=this.checked}this.fireEvent("check",this,this.checked)}});Ext.reg("checkbox",Ext.form.Checkbox);
-Ext.form.Radio=Ext.extend(Ext.form.Checkbox,{inputType:"radio",markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,getGroupValue:function(){var A=this.el.up("form")||Ext.getBody();var B=A.child("input[name="+this.el.dom.name+"]:checked",true);return B?B.value:null},onClick:function(){if(this.el.dom.checked!=this.checked){var B=this.el.up("form")||Ext.getBody();var A=B.select("input[name="+this.el.dom.name+"]");A.each(function(C){if(C.dom.id==this.id){this.setValue(true)}else{Ext.getCmp(C.dom.id).setValue(false)}},this)}},setValue:function(A){if(typeof A=="boolean"){Ext.form.Radio.superclass.setValue.call(this,A)}else{var B=this.el.up("form").child("input[name="+this.el.dom.name+"][value="+A+"]",true);if(B){B.checked=true}}}});Ext.reg("radio",Ext.form.Radio);
-Ext.form.Hidden=Ext.extend(Ext.form.Field,{inputType:"hidden",onRender:function(){Ext.form.Hidden.superclass.onRender.apply(this,arguments)},initEvents:function(){this.originalValue=this.getValue()},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});Ext.reg("hidden",Ext.form.Hidden);
-Ext.form.BasicForm=function(B,A){Ext.apply(this,A);this.items=new Ext.util.MixedCollection(false,function(C){return C.id||(C.id=Ext.id())});this.addEvents("beforeaction","actionfailed","actioncomplete");if(B){this.initEl(B)}Ext.form.BasicForm.superclass.constructor.call(this)};Ext.extend(Ext.form.BasicForm,Ext.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,initEl:function(A){this.el=Ext.get(A);this.id=this.el.id||Ext.id();if(!this.standardSubmit){this.el.on("submit",this.onSubmit,this)}this.el.addClass("x-form")},getEl:function(){return this.el},onSubmit:function(A){A.stopEvent()},destroy:function(){this.items.each(function(A){Ext.destroy(A)});if(this.el){this.el.removeAllListeners();this.el.remove()}this.purgeListeners()},isValid:function(){var A=true;this.items.each(function(B){if(!B.validate()){A=false}});return A},isDirty:function(){var A=false;this.items.each(function(B){if(B.isDirty()){A=true;return false}});return A},doAction:function(B,A){if(typeof B=="string"){B=new Ext.form.Action.ACTION_TYPES[B](this,A)}if(this.fireEvent("beforeaction",this,B)!==false){this.beforeAction(B);B.run.defer(100,B)}return this},submit:function(B){if(this.standardSubmit){var A=this.isValid();if(A){this.el.dom.submit()}return A}this.doAction("submit",B);return this},load:function(A){this.doAction("load",A);return this},updateRecord:function(B){B.beginEdit();var A=B.fields;A.each(function(C){var D=this.findField(C.name);if(D){B.set(C.name,D.getValue())}},this);B.endEdit();return this},loadRecord:function(A){this.setValues(A.data);return this},beforeAction:function(A){var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.mask(B.waitMsg,"x-mask-loading")}else{if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(B.waitMsg,"x-mask-loading")}else{Ext.MessageBox.wait(B.waitMsg,B.waitTitle||this.waitTitle||"Please Wait...")}}}},afterAction:function(A,C){this.activeAction=null;var B=A.options;if(B.waitMsg){if(this.waitMsgTarget===true){this.el.unmask()}else{if(this.waitMsgTarget){this.waitMsgTarget.unmask()}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide()}}}if(C){if(B.reset){this.reset()}Ext.callback(B.success,B.scope,[this,A]);this.fireEvent("actioncomplete",this,A)}else{Ext.callback(B.failure,B.scope,[this,A]);this.fireEvent("actionfailed",this,A)}},findField:function(B){var A=this.items.get(B);if(!A){this.items.each(function(C){if(C.isFormField&&(C.dataIndex==B||C.id==B||C.getName()==B)){A=C;return false}})}return A||null},markInvalid:function(G){if(Ext.isArray(G)){for(var C=0,A=G.length;C<A;C++){var B=G[C];var D=this.findField(B.id);if(D){D.markInvalid(B.msg)}}}else{var E,F;for(F in G){if(typeof G[F]!="function"&&(E=this.findField(F))){E.markInvalid(G[F])}}}return this},setValues:function(C){if(Ext.isArray(C)){for(var D=0,A=C.length;D<A;D++){var B=C[D];var E=this.findField(B.id);if(E){E.setValue(B.value);if(this.trackResetOnLoad){E.originalValue=E.getValue()}}}}else{var F,G;for(G in C){if(typeof C[G]!="function"&&(F=this.findField(G))){F.setValue(C[G]);if(this.trackResetOnLoad){F.originalValue=F.getValue()}}}}return this},getValues:function(B){var A=Ext.lib.Ajax.serializeForm(this.el.dom);if(B===true){return A}return Ext.urlDecode(A)},clearInvalid:function(){this.items.each(function(A){A.clearInvalid()});return this},reset:function(){this.items.each(function(A){A.reset()});return this},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this},remove:function(A){this.items.remove(A);return this},render:function(){this.items.each(function(A){if(A.isFormField&&!A.rendered&&document.getElementById(A.id)){A.applyToMarkup(A.id)}});return this},applyToFields:function(A){this.items.each(function(B){Ext.apply(B,A)});return this},applyIfToFields:function(A){this.items.each(function(B){Ext.applyIf(B,A)});return this}});Ext.BasicForm=Ext.form.BasicForm;
-Ext.FormPanel=Ext.extend(Ext.Panel,{buttonAlign:"center",minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function(){this.form=this.createForm();Ext.FormPanel.superclass.initComponent.call(this);this.addEvents("clientvalidation");this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])},createForm:function(){delete this.initialConfig.listeners;return new Ext.form.BasicForm(null,this.initialConfig)},initFields:function(){var C=this.form;var A=this;var B=function(D){if(D.doLayout&&D!=A){Ext.applyIf(D,{labelAlign:D.ownerCt.labelAlign,labelWidth:D.ownerCt.labelWidth,itemCls:D.ownerCt.itemCls});if(D.items){D.items.each(B)}}else{if(D.isFormField){C.add(D)}}};this.items.each(B)},getLayoutTarget:function(){return this.form.el},getForm:function(){return this.form},onRender:function(B,A){this.initFields();Ext.FormPanel.superclass.onRender.call(this,B,A);var C={tag:"form",method:this.method||"POST",id:this.formId||Ext.id()};if(this.fileUpload){C.enctype="multipart/form-data"}this.form.initEl(this.body.createChild(C))},beforeDestroy:function(){Ext.FormPanel.superclass.beforeDestroy.call(this);Ext.destroy(this.form)},initEvents:function(){Ext.FormPanel.superclass.initEvents.call(this);this.items.on("remove",this.onRemove,this);this.items.on("add",this.onAdd,this);if(this.monitorValid){this.startMonitoring()}},onAdd:function(A,B){if(B.isFormField){this.form.add(B)}},onRemove:function(A){if(A.isFormField){Ext.destroy(A.container.up(".x-form-item"));this.form.remove(A)}},startMonitoring:function(){if(!this.bound){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this})}},stopMonitoring:function(){this.bound=false},load:function(){this.form.load.apply(this.form,arguments)},onDisable:function(){Ext.FormPanel.superclass.onDisable.call(this);if(this.form){this.form.items.each(function(){this.disable()})}},onEnable:function(){Ext.FormPanel.superclass.onEnable.call(this);if(this.form){this.form.items.each(function(){this.enable()})}},bindHandler:function(){if(!this.bound){return false}var D=true;this.form.items.each(function(E){if(!E.isValid(true)){D=false;return false}});if(this.buttons){for(var C=0,A=this.buttons.length;C<A;C++){var B=this.buttons[C];if(B.formBind===true&&B.disabled===D){B.setDisabled(!D)}}}this.fireEvent("clientvalidation",this,D)}});Ext.reg("form",Ext.FormPanel);Ext.form.FormPanel=Ext.FormPanel;
-Ext.form.FieldSet=Ext.extend(Ext.Panel,{baseCls:"x-fieldset",layout:"form",onRender:function(B,A){if(!this.el){this.el=document.createElement("fieldset");this.el.id=this.id;if(this.title||this.header||this.checkboxToggle){this.el.appendChild(document.createElement("legend")).className="x-fieldset-header"}}Ext.form.FieldSet.superclass.onRender.call(this,B,A);if(this.checkboxToggle){var C=typeof this.checkboxToggle=="object"?this.checkboxToggle:{tag:"input",type:"checkbox",name:this.checkboxName||this.id+"-checkbox"};this.checkbox=this.header.insertFirst(C);this.checkbox.dom.checked=!this.collapsed;this.checkbox.on("click",this.onCheckClick,this)}},onCollapse:function(A,B){if(this.checkbox){this.checkbox.dom.checked=false}this.afterCollapse()},onExpand:function(A,B){if(this.checkbox){this.checkbox.dom.checked=true}this.afterExpand()},onCheckClick:function(){this[this.checkbox.dom.checked?"expand":"collapse"]()}});Ext.reg("fieldset",Ext.form.FieldSet);
-Ext.form.HtmlEditor=Ext.extend(Ext.form.Field,{enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http:/"+"/",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultFont:"tahoma",validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Ext.emptyFn,iframePad:3,hideMode:"offsets",defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"off"},initComponent:function(){this.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange")},createFontOptions:function(){var D=[],B=this.fontFamilies,C,F;for(var E=0,A=B.length;E<A;E++){C=B[E];F=C.toLowerCase();D.push("<option value=\"",F,"\" style=\"font-family:",C,";\"",(this.defaultFont==F?" selected=\"true\">":">"),C,"</option>")}return D.join("")},createToolbar:function(C){function B(F,D,E){return{itemId:F,cls:"x-btn-icon x-edit-"+F,enableToggle:D!==false,scope:C,handler:E||C.relayBtnCmd,clickEvent:"mousedown",tooltip:C.buttonTips[F]||undefined,tabIndex:-1}}var A=new Ext.Toolbar({renderTo:this.wrap.dom.firstChild});A.el.on("click",function(D){D.preventDefault()});if(this.enableFont&&!Ext.isSafari){this.fontSelect=A.el.createChild({tag:"select",cls:"x-font-select",html:this.createFontOptions()});this.fontSelect.on("change",function(){var D=this.fontSelect.dom.value;this.relayCmd("fontname",D);this.deferFocus()},this);A.add(this.fontSelect.dom,"-")}if(this.enableFormat){A.add(B("bold"),B("italic"),B("underline"))}if(this.enableFontSize){A.add("-",B("increasefontsize",false,this.adjustFont),B("decreasefontsize",false,this.adjustFont))}if(this.enableColors){A.add("-",{itemId:"forecolor",cls:"x-btn-icon x-edit-forecolor",clickEvent:"mousedown",tooltip:C.buttonTips["forecolor"]||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,selectHandler:function(E,D){this.execCmd("forecolor",Ext.isSafari||Ext.isIE?"#"+D:D);this.deferFocus()},scope:this,clickEvent:"mousedown"})},{itemId:"backcolor",cls:"x-btn-icon x-edit-backcolor",clickEvent:"mousedown",tooltip:C.buttonTips["backcolor"]||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,selectHandler:function(E,D){if(Ext.isGecko){this.execCmd("useCSS",false);this.execCmd("hilitecolor",D);this.execCmd("useCSS",true);this.deferFocus()}else{this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isSafari||Ext.isIE?"#"+D:D);this.deferFocus()}},scope:this,clickEvent:"mousedown"})})}if(this.enableAlignments){A.add("-",B("justifyleft"),B("justifycenter"),B("justifyright"))}if(!Ext.isSafari){if(this.enableLinks){A.add("-",B("createlink",false,this.createLink))}if(this.enableLists){A.add("-",B("insertorderedlist"),B("insertunorderedlist"))}if(this.enableSourceEdit){A.add("-",B("sourceedit",true,function(D){this.toggleSourceEdit(D.pressed)}))}}this.tb=A},getDocMarkup:function(){return"<html><head><style type=\"text/css\">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>"},getEditorBody:function(){return this.doc.body||this.doc.documentElement},onRender:function(C,A){Ext.form.HtmlEditor.superclass.onRender.call(this,C,A);this.el.dom.style.border="0 none";this.el.dom.setAttribute("tabIndex",-1);this.el.addClass("x-hidden");if(Ext.isIE){this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")}this.wrap=this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});this.createToolbar(this);this.tb.items.each(function(E){if(E.itemId!="sourceedit"){E.disable()}});var D=document.createElement("iframe");D.name=Ext.id();D.frameBorder="no";D.src=(Ext.SSL_SECURE_URL||"javascript:false");this.wrap.dom.appendChild(D);this.iframe=D;if(Ext.isIE){D.contentWindow.document.designMode="on";this.doc=D.contentWindow.document;this.win=D.contentWindow}else{this.doc=(D.contentDocument||window.frames[D.name].document);this.win=window.frames[D.name];this.doc.designMode="on"}this.doc.open();this.doc.write(this.getDocMarkup());this.doc.close();var B={run:function(){if(this.doc.body||this.doc.readyState=="complete"){Ext.TaskMgr.stop(B);this.doc.designMode="on";this.initEditor.defer(10,this)}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(B);if(!this.width){this.setSize(this.el.getSize())}},onResize:function(B,C){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(typeof B=="number"){var D=B-this.wrap.getFrameWidth("lr");this.el.setWidth(this.adjustWidth("textarea",D));this.iframe.style.width=D+"px"}if(typeof C=="number"){var A=C-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();this.el.setHeight(this.adjustWidth("textarea",A));this.iframe.style.height=A+"px";if(this.doc){this.getEditorBody().style.height=(A-(this.iframePad*2))+"px"}}}},toggleSourceEdit:function(A){if(A===undefined){A=!this.sourceEditMode}this.sourceEditMode=A===true;var C=this.tb.items.get("sourceedit");if(C.pressed!==this.sourceEditMode){C.toggle(this.sourceEditMode);return }if(this.sourceEditMode){this.tb.items.each(function(D){if(D.itemId!="sourceedit"){D.disable()}});this.syncValue();this.iframe.className="x-hidden";this.el.removeClass("x-hidden");this.el.dom.removeAttribute("tabIndex");this.el.focus()}else{if(this.initialized){this.tb.items.each(function(D){D.enable()})}this.pushValue();this.iframe.className="";this.el.addClass("x-hidden");this.el.dom.setAttribute("tabIndex",-1);this.deferFocus()}var B=this.lastSize;if(B){delete this.lastSize;this.setSize(B)}this.fireEvent("editmodechange",this,this.sourceEditMode)},createLink:function(){var A=prompt(this.createLinkText,this.defaultLinkValue);if(A&&A!="http:/"+"/"){this.relayCmd("createlink",A)}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap},getPositionEl:function(){return this.wrap},initEvents:function(){this.originalValue=this.getValue()},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(A){Ext.form.HtmlEditor.superclass.setValue.call(this,A);this.pushValue()},cleanHtml:function(A){A=String(A);if(A.length>5){if(Ext.isSafari){A=A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")}}if(A=="&nbsp;"){A=""}return A},syncValue:function(){if(this.initialized){var D=this.getEditorBody();var C=D.innerHTML;if(Ext.isSafari){var B=D.getAttribute("style");var A=B.match(/text-align:(.*?);/i);if(A&&A[1]){C="<div style=\""+A[0]+"\">"+C+"</div>"}}C=this.cleanHtml(C);if(this.fireEvent("beforesync",this,C)!==false){this.el.dom.value=C;this.fireEvent("sync",this,C)}}},pushValue:function(){if(this.initialized){var A=this.el.dom.value;if(!this.activated&&A.length<1){A="&nbsp;"}if(this.fireEvent("beforepush",this,A)!==false){this.getEditorBody().innerHTML=A;this.fireEvent("push",this,A)}}},deferFocus:function(){this.focus.defer(10,this)},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus()}else{this.el.focus()}},initEditor:function(){var B=this.getEditorBody();var A=this.el.getStyles("font-size","font-family","background-image","background-repeat");A["background-attachment"]="fixed";B.bgProperties="fixed";Ext.DomHelper.applyStyles(B,A);Ext.EventManager.on(this.doc,{"mousedown":this.onEditorEvent,"dblclick":this.onEditorEvent,"click":this.onEditorEvent,"keyup":this.onEditorEvent,buffer:100,scope:this});if(Ext.isGecko){Ext.EventManager.on(this.doc,"keypress",this.applyCommand,this)}if(Ext.isIE||Ext.isSafari||Ext.isOpera){Ext.EventManager.on(this.doc,"keydown",this.fixKeys,this)}this.initialized=true;this.fireEvent("initialize",this);this.pushValue()},onDestroy:function(){if(this.rendered){this.tb.items.each(function(A){if(A.menu){A.menu.removeAll();if(A.menu.el){A.menu.el.destroy()}}A.destroy()});this.wrap.dom.innerHTML="";this.wrap.remove()}},onFirstFocus:function(){this.activated=true;this.tb.items.each(function(D){D.enable()});if(Ext.isGecko){this.win.focus();var A=this.win.getSelection();if(!A.focusNode||A.focusNode.nodeType!=3){var B=A.getRangeAt(0);B.selectNodeContents(this.getEditorBody());B.collapse(true);this.deferFocus()}try{this.execCmd("useCSS",true);this.execCmd("styleWithCSS",false)}catch(C){}}this.fireEvent("activate",this)},adjustFont:function(B){var C=B.itemId=="increasefontsize"?1:-1;var A=parseInt(this.doc.queryCommandValue("FontSize")||2,10);if(Ext.isSafari3||Ext.isAir){if(A<=10){A=1+C}else{if(A<=13){A=2+C}else{if(A<=16){A=3+C}else{if(A<=18){A=4+C}else{if(A<=24){A=5+C}else{A=6+C}}}}}A=A.constrain(1,6)}else{if(Ext.isSafari){C*=2}A=Math.max(1,A+C)+(Ext.isSafari?"px":0)}this.execCmd("FontSize",A)},onEditorEvent:function(A){this.updateToolbar()},updateToolbar:function(){if(!this.activated){this.onFirstFocus();return }var B=this.tb.items.map,C=this.doc;if(this.enableFont&&!Ext.isSafari){var A=(this.doc.queryCommandValue("FontName")||this.defaultFont).toLowerCase();if(A!=this.fontSelect.dom.value){this.fontSelect.dom.value=A}}if(this.enableFormat){B.bold.toggle(C.queryCommandState("bold"));B.italic.toggle(C.queryCommandState("italic"));B.underline.toggle(C.queryCommandState("underline"))}if(this.enableAlignments){B.justifyleft.toggle(C.queryCommandState("justifyleft"));B.justifycenter.toggle(C.queryCommandState("justifycenter"));B.justifyright.toggle(C.queryCommandState("justifyright"))}if(!Ext.isSafari&&this.enableLists){B.insertorderedlist.toggle(C.queryCommandState("insertorderedlist"));B.insertunorderedlist.toggle(C.queryCommandState("insertunorderedlist"))}Ext.menu.MenuMgr.hideAll();this.syncValue()},relayBtnCmd:function(A){this.relayCmd(A.itemId)},relayCmd:function(B,A){this.win.focus();this.execCmd(B,A);this.updateToolbar();this.deferFocus()},execCmd:function(B,A){this.doc.execCommand(B,false,A===undefined?null:A);this.syncValue()},applyCommand:function(B){if(B.ctrlKey){var C=B.getCharCode(),A;if(C>0){C=String.fromCharCode(C);switch(C){case"b":A="bold";break;case"i":A="italic";break;case"u":A="underline";break}if(A){this.win.focus();this.execCmd(A);this.deferFocus();B.preventDefault()}}}},insertAtCursor:function(B){if(!this.activated){return }if(Ext.isIE){this.win.focus();var A=this.doc.selection.createRange();if(A){A.collapse(true);A.pasteHTML(B);this.syncValue();this.deferFocus()}}else{if(Ext.isGecko||Ext.isOpera){this.win.focus();this.execCmd("InsertHTML",B);this.deferFocus()}else{if(Ext.isSafari){this.execCmd("InsertText",B);this.deferFocus()}}}},fixKeys:function(){if(Ext.isIE){return function(D){var A=D.getKey(),B;if(A==D.TAB){D.stopEvent();B=this.doc.selection.createRange();if(B){B.collapse(true);B.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}else{if(A==D.ENTER){B=this.doc.selection.createRange();if(B){var C=B.parentElement();if(!C||C.tagName.toLowerCase()!="li"){D.stopEvent();B.pasteHTML("<br />");B.collapse(false);B.select()}}}}}}else{if(Ext.isOpera){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.win.focus();this.execCmd("InsertHTML","&nbsp;&nbsp;&nbsp;&nbsp;");this.deferFocus()}}}else{if(Ext.isSafari){return function(B){var A=B.getKey();if(A==B.TAB){B.stopEvent();this.execCmd("InsertText","\t");this.deferFocus()}}}}}}(),getToolbar:function(){return this.tb},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});Ext.reg("htmleditor",Ext.form.HtmlEditor);
-Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{minValue:null,maxValue:null,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initComponent:function(){Ext.form.TimeField.superclass.initComponent.call(this);if(typeof this.minValue=="string"){this.minValue=this.parseDate(this.minValue)}if(typeof this.maxValue=="string"){this.maxValue=this.parseDate(this.maxValue)}if(!this.store){var B=this.parseDate(this.minValue);if(!B){B=new Date().clearTime()}var A=this.parseDate(this.maxValue);if(!A){A=new Date().clearTime().add("mi",(24*60)-1)}var C=[];while(B<=A){C.push([B.dateFormat(this.format)]);B=B.add("mi",this.increment)}this.store=new Ext.data.SimpleStore({fields:["text"],data:C});this.displayField="text"}},getValue:function(){var A=Ext.form.TimeField.superclass.getValue.call(this);return this.formatDate(this.parseDate(A))||""},setValue:function(A){Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(A)))},validateValue:Ext.form.DateField.prototype.validateValue,parseDate:Ext.form.DateField.prototype.parseDate,formatDate:Ext.form.DateField.prototype.formatDate,beforeBlur:function(){var A=this.parseDate(this.getRawValue());if(A){this.setValue(A.dateFormat(this.format))}}});Ext.reg("timefield",Ext.form.TimeField);
-Ext.form.Label=Ext.extend(Ext.BoxComponent,{onRender:function(B,A){if(!this.el){this.el=document.createElement("label");this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");if(this.forId){this.el.setAttribute("htmlFor",this.forId)}}Ext.form.Label.superclass.onRender.call(this,B,A)}});Ext.reg("label",Ext.form.Label);
-Ext.form.Action=function(B,A){this.form=B;this.options=A||{}};Ext.form.Action.CLIENT_INVALID="client";Ext.form.Action.SERVER_INVALID="server";Ext.form.Action.CONNECT_FAILURE="connect";Ext.form.Action.LOAD_FAILURE="load";Ext.form.Action.prototype={type:"default",run:function(A){},success:function(A){},handleResponse:function(A){},failure:function(A){this.response=A;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false)},processResponse:function(A){this.response=A;if(!A.responseText){return true}this.result=this.handleResponse(A);return this.result},getUrl:function(C){var A=this.options.url||this.form.url||this.form.el.dom.action;if(C){var B=this.getParams();if(B){A+=(A.indexOf("?")!=-1?"&":"?")+B}}return A},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||"POST").toUpperCase()},getParams:function(){var A=this.form.baseParams;var B=this.options.params;if(B){if(typeof B=="object"){B=Ext.urlEncode(Ext.applyIf(B,A))}else{if(typeof B=="string"&&A){B+="&"+Ext.urlEncode(A)}}}else{if(A){B=Ext.urlEncode(A)}}return B},createCallback:function(A){var A=A||{};return{success:this.success,failure:this.failure,scope:this,timeout:(A.timeout*1000)||(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined}}};Ext.form.Action.Submit=function(B,A){Ext.form.Action.Submit.superclass.constructor.call(this,B,A)};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:"submit",run:function(){var B=this.options;var C=this.getMethod();var A=C=="POST";if(B.clientValidation===false||this.form.isValid()){Ext.Ajax.request(Ext.apply(this.createCallback(B),{form:this.form.el.dom,url:this.getUrl(!A),method:C,params:A?this.getParams():null,isUpload:this.form.fileUpload}))}else{if(B.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false)}}},success:function(B){var A=this.processResponse(B);if(A===true||A.success){this.form.afterAction(this,true);return }if(A.errors){this.form.markInvalid(A.errors);this.failureType=Ext.form.Action.SERVER_INVALID}this.form.afterAction(this,false)},handleResponse:function(C){if(this.form.errorReader){var B=this.form.errorReader.read(C);var F=[];if(B.records){for(var D=0,A=B.records.length;D<A;D++){var E=B.records[D];F[D]=E.data}}if(F.length<1){F=null}return{success:B.success,errors:F}}return Ext.decode(C.responseText)}});Ext.form.Action.Load=function(B,A){Ext.form.Action.Load.superclass.constructor.call(this,B,A);this.reader=this.form.reader};Ext.extend(Ext.form.Action.Load,Ext.form.Action,{type:"load",run:function(){Ext.Ajax.request(Ext.apply(this.createCallback(this.options),{method:this.getMethod(),url:this.getUrl(false),params:this.getParams()}))},success:function(B){var A=this.processResponse(B);if(A===true||!A.success||!A.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return }this.form.clearInvalid();this.form.setValues(A.data);this.form.afterAction(this,true)},handleResponse:function(B){if(this.form.reader){var A=this.form.reader.read(B);var C=A.records&&A.records[0]?A.records[0].data:null;return{success:A.success,data:C}}return Ext.decode(B.responseText)}});Ext.form.Action.ACTION_TYPES={"load":Ext.form.Action.Load,"submit":Ext.form.Action.Submit};
-Ext.form.VTypes=function(){var C=/^[a-zA-Z_]+$/;var D=/^[a-zA-Z0-9_]+$/;var B=/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;var A=/(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{"email":function(E){return B.test(E)},"emailText":"This field should be an e-mail address in the format \"user@domain.com\"","emailMask":/[a-z0-9_\.\-@]/i,"url":function(E){return A.test(E)},"urlText":"This field should be a URL in the format \"http:/"+"/www.domain.com\"","alpha":function(E){return C.test(E)},"alphaText":"This field should only contain letters and _","alphaMask":/[a-z_]/i,"alphanum":function(E){return D.test(E)},"alphanumText":"This field should only contain letters, numbers and _","alphanumMask":/[a-z0-9_]/i}}();
-Ext.grid.GridPanel=Ext.extend(Ext.Panel,{ddText:"{0} selected row{1}",minColumnWidth:25,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableHdMenu:true,stripeRows:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,rendered:false,viewReady:false,stateEvents:["columnmove","columnresize","sortchange"],initComponent:function(){Ext.grid.GridPanel.superclass.initComponent.call(this);this.autoScroll=false;this.autoWidth=false;if(Ext.isArray(this.columns)){this.colModel=new Ext.grid.ColumnModel(this.columns);delete this.columns}if(this.ds){this.store=this.ds;delete this.ds}if(this.cm){this.colModel=this.cm;delete this.cm}if(this.sm){this.selModel=this.sm;delete this.sm}this.store=Ext.StoreMgr.lookup(this.store);this.addEvents("click","dblclick","contextmenu","mousedown","mouseup","mouseover","mouseout","keypress","keydown","cellmousedown","rowmousedown","headermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","bodyscroll","columnresize","columnmove","sortchange")},onRender:function(C,A){Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);var D=this.body;this.el.addClass("x-grid-panel");var B=this.getView();B.init(this);D.on("mousedown",this.onMouseDown,this);D.on("click",this.onClick,this);D.on("dblclick",this.onDblClick,this);D.on("contextmenu",this.onContextMenu,this);D.on("keydown",this.onKeyDown,this);this.relayEvents(D,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);this.view.render()},initEvents:function(){Ext.grid.GridPanel.superclass.initEvents.call(this);if(this.loadMask){this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:this.store},this.loadMask))}},initStateEvents:function(){Ext.grid.GridPanel.superclass.initStateEvents.call(this);this.colModel.on("hiddenchange",this.saveState,this,{delay:100})},applyState:function(F){var B=this.colModel;var E=F.columns;if(E){for(var C=0,A=E.length;C<A;C++){var D=E[C];var H=B.getColumnById(D.id);if(H){H.hidden=D.hidden;H.width=D.width;var G=B.getIndexById(D.id);if(G!=C){B.moveColumn(G,C)}}}}if(F.sort){this.store[this.store.remoteSort?"setDefaultSort":"sort"](F.sort.field,F.sort.direction)}},getState:function(){var C={columns:[]};for(var B=0,D;D=this.colModel.config[B];B++){C.columns[B]={id:D.id,width:D.width};if(D.hidden){C.columns[B].hidden=true}}var A=this.store.getSortState();if(A){C.sort=A}return C},afterRender:function(){Ext.grid.GridPanel.superclass.afterRender.call(this);this.view.layout();this.viewReady=true},reconfigure:function(A,B){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({store:A},this.initialConfig.loadMask))}this.view.bind(A,B);this.store=A;this.colModel=B;if(this.rendered){this.view.refresh(true)}},onKeyDown:function(A){this.fireEvent("keydown",A)},onDestroy:function(){if(this.rendered){if(this.loadMask){this.loadMask.destroy()}var A=this.body;A.removeAllListeners();this.view.destroy();A.update("")}this.colModel.purgeListeners();Ext.grid.GridPanel.superclass.onDestroy.call(this)},processEvent:function(C,E){this.fireEvent(C,E);var D=E.getTarget();var B=this.view;var G=B.findHeaderIndex(D);if(G!==false){this.fireEvent("header"+C,this,G,E)}else{var F=B.findRowIndex(D);var A=B.findCellIndex(D);if(F!==false){this.fireEvent("row"+C,this,F,E);if(A!==false){this.fireEvent("cell"+C,this,F,A,E)}}}},onClick:function(A){this.processEvent("click",A)},onMouseDown:function(A){this.processEvent("mousedown",A)},onContextMenu:function(B,A){this.processEvent("contextmenu",B)},onDblClick:function(A){this.processEvent("dblclick",A)},walkCells:function(J,C,B,E,I){var H=this.colModel,F=H.getColumnCount();var A=this.store,G=A.getCount(),D=true;if(B<0){if(C<0){J--;D=false}while(J>=0){if(!D){C=F-1}D=false;while(C>=0){if(E.call(I||this,J,C,H)===true){return[J,C]}C--}J--}}else{if(C>=F){J++;D=false}while(J<G){if(!D){C=0}D=false;while(C<F){if(E.call(I||this,J,C,H)===true){return[J,C]}C++}J++}}return null},getSelections:function(){return this.selModel.getSelections()},onResize:function(){Ext.grid.GridPanel.superclass.onResize.apply(this,arguments);if(this.viewReady){this.view.layout()}},getGridEl:function(){return this.body},stopEditing:function(){},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel(this.disableSelection?{selectRow:Ext.emptyFn}:null)}return this.selModel},getStore:function(){return this.store},getColumnModel:function(){return this.colModel},getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig)}return this.view},getDragDropText:function(){var A=this.selModel.getCount();return String.format(this.ddText,A,A==1?"":"s")}});Ext.reg("grid",Ext.grid.GridPanel);
-Ext.grid.GridView=function(A){Ext.apply(this,A);this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");Ext.grid.GridView.superclass.constructor.call(this)};Ext.extend(Ext.grid.GridView,Ext.util.Observable,{scrollOffset:19,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",columnsText:"Columns",borderWidth:2,initTemplates:function(){var C=this.templates||{};if(!C.master){C.master=new Ext.Template("<div class=\"x-grid3\" hidefocus=\"true\">","<div class=\"x-grid3-viewport\">","<div class=\"x-grid3-header\"><div class=\"x-grid3-header-inner\"><div class=\"x-grid3-header-offset\">{header}</div></div><div class=\"x-clear\"></div></div>","<div class=\"x-grid3-scroller\"><div class=\"x-grid3-body\">{body}</div><a href=\"#\" class=\"x-grid3-focus\" tabIndex=\"-1\"></a></div>","</div>","<div class=\"x-grid3-resize-marker\">&#160;</div>","<div class=\"x-grid3-resize-proxy\">&#160;</div>","</div>")}if(!C.header){C.header=new Ext.Template("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">","<thead><tr class=\"x-grid3-hd-row\">{cells}</tr></thead>","</table>")}if(!C.hcell){C.hcell=new Ext.Template("<td class=\"x-grid3-hd x-grid3-cell x-grid3-td-{id}\" style=\"{style}\"><div {tooltip} {attr} class=\"x-grid3-hd-inner x-grid3-hd-{id}\" unselectable=\"on\" style=\"{istyle}\">",this.grid.enableHdMenu?"<a class=\"x-grid3-hd-btn\" href=\"#\"></a>":"","{value}<img class=\"x-grid3-sort-icon\" src=\"",Ext.BLANK_IMAGE_URL,"\" />","</div></td>")}if(!C.body){C.body=new Ext.Template("{rows}")}if(!C.row){C.row=new Ext.Template("<div class=\"x-grid3-row {alt}\" style=\"{tstyle}\"><table class=\"x-grid3-row-table\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">","<tbody><tr>{cells}</tr>",(this.enableRowBody?"<tr class=\"x-grid3-row-body-tr\" style=\"{bodyStyle}\"><td colspan=\"{cols}\" class=\"x-grid3-body-cell\" tabIndex=\"0\" hidefocus=\"on\"><div class=\"x-grid3-row-body\">{body}</div></td></tr>":""),"</tbody></table></div>")}if(!C.cell){C.cell=new Ext.Template("<td class=\"x-grid3-col x-grid3-cell x-grid3-td-{id} {css}\" style=\"{style}\" tabIndex=\"0\" {cellAttr}>","<div class=\"x-grid3-cell-inner x-grid3-col-{id}\" unselectable=\"on\" {attr}>{value}</div>","</td>")}for(var A in C){var B=C[A];if(B&&typeof B.compile=="function"&&!B.compiled){B.disableFormats=true;B.compile()}}this.templates=C;this.tdClass="x-grid3-cell";this.cellSelector="td.x-grid3-cell";this.hdCls="x-grid3-hd";this.rowSelector="div.x-grid3-row";this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")},fly:function(A){if(!this._flyweight){this._flyweight=new Ext.Element.Flyweight(document.body)}this._flyweight.dom=A;return this._flyweight},getEditorParent:function(A){return this.scroller.dom},initElements:function(){var C=Ext.Element;var B=this.grid.getGridEl().dom.firstChild;var A=B.childNodes;this.el=new C(B);this.mainWrap=new C(A[0]);this.mainHd=new C(this.mainWrap.dom.firstChild);if(this.grid.hideHeaders){this.mainHd.setDisplayed(false)}this.innerHd=this.mainHd.dom.firstChild;this.scroller=new C(this.mainWrap.dom.childNodes[1]);if(this.forceFit){this.scroller.setStyle("overflow-x","hidden")}this.mainBody=new C(this.scroller.dom.firstChild);this.focusEl=new C(this.scroller.dom.childNodes[1]);this.focusEl.swallowEvent("click",true);this.resizeMarker=new C(A[1]);this.resizeProxy=new C(A[2])},getRows:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},findCell:function(A){if(!A){return false}return this.fly(A).findParent(this.cellSelector,3)},findCellIndex:function(C,B){var A=this.findCell(C);if(A&&(!B||this.fly(A).hasClass(B))){return this.getCellIndex(A)}return false},getCellIndex:function(B){if(B){var A=B.className.match(this.colRe);if(A&&A[1]){return this.cm.getIndexById(A[1])}}return false},findHeaderCell:function(B){var A=this.findCell(B);return A&&this.fly(A).hasClass(this.hdCls)?A:null},findHeaderIndex:function(A){return this.findCellIndex(A,this.hdCls)},findRow:function(A){if(!A){return false}return this.fly(A).findParent(this.rowSelector,10)},findRowIndex:function(A){var B=this.findRow(A);return B?B.rowIndex:false},getRow:function(A){return this.getRows()[A]},getCell:function(B,A){return this.getRow(B).getElementsByTagName("td")[A]},getHeaderCell:function(A){return this.mainHd.dom.getElementsByTagName("td")[A]},addRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).addClass(A)}},removeRowClass:function(C,A){var B=this.getRow(C);if(B){this.fly(B).removeClass(A)}},removeRow:function(A){Ext.removeNode(this.getRow(A))},removeRows:function(C,A){var B=this.mainBody.dom;for(var D=C;D<=A;D++){Ext.removeNode(B.childNodes[C])}},getScrollState:function(){var A=this.scroller.dom;return{left:A.scrollLeft,top:A.scrollTop}},restoreScroll:function(A){var B=this.scroller.dom;B.scrollLeft=A.left;B.scrollTop=A.top},scrollToTop:function(){this.scroller.dom.scrollTop=0;this.scroller.dom.scrollLeft=0},syncScroll:function(){this.syncHeaderScroll();var A=this.scroller.dom;this.grid.fireEvent("bodyscroll",A.scrollLeft,A.scrollTop)},syncHeaderScroll:function(){var A=this.scroller.dom;this.innerHd.scrollLeft=A.scrollLeft;this.innerHd.scrollLeft=A.scrollLeft},updateSortIcon:function(B,A){var D=this.sortClasses;var C=this.mainHd.select("td").removeClass(D);C.item(B).addClass(D[A=="DESC"?1:0])},updateAllColumnWidths:function(){var D=this.getTotalWidth();var H=this.cm.getColumnCount();var F=[];for(var B=0;B<H;B++){F[B]=this.getColumnWidth(B)}this.innerHd.firstChild.firstChild.style.width=D;for(var B=0;B<H;B++){var C=this.getHeaderCell(B);C.style.width=F[B]}var G=this.getRows();for(var B=0,E=G.length;B<E;B++){G[B].style.width=D;G[B].firstChild.style.width=D;var I=G[B].firstChild.rows[0];for(var A=0;A<H;A++){I.childNodes[A].style.width=F[A]}}this.onAllColumnWidthsUpdated(F,D)},updateColumnWidth:function(D,G){var B=this.getColumnWidth(D);var C=this.getTotalWidth();this.innerHd.firstChild.firstChild.style.width=C;var H=this.getHeaderCell(D);H.style.width=B;var F=this.getRows();for(var E=0,A=F.length;E<A;E++){F[E].style.width=C;F[E].firstChild.style.width=C;F[E].firstChild.rows[0].childNodes[D].style.width=B}this.onColumnWidthUpdated(D,B,C)},updateColumnHidden:function(C,F){var B=this.getTotalWidth();this.innerHd.firstChild.firstChild.style.width=B;var H=F?"none":"";var G=this.getHeaderCell(C);G.style.display=H;var E=this.getRows();for(var D=0,A=E.length;D<A;D++){E[D].style.width=B;E[D].firstChild.style.width=B;E[D].firstChild.rows[0].childNodes[C].style.display=H}this.onColumnHiddenUpdated(C,F,B);delete this.lastViewWidth;this.layout()},doRender:function(E,G,M,A,L,Q){var B=this.templates,D=B.cell,F=B.row,H=L-1;var C="width:"+this.getTotalWidth()+";";var T=[],N,U,O={},I={tstyle:C},K;for(var P=0,S=G.length;P<S;P++){K=G[P];N=[];var J=(P+A);for(var R=0;R<L;R++){U=E[R];O.id=U.id;O.css=R==0?"x-grid3-cell-first ":(R==H?"x-grid3-cell-last ":"");O.attr=O.cellAttr="";O.value=U.renderer(K.data[U.name],O,K,J,R,M);O.style=U.style;if(O.value==undefined||O.value===""){O.value="&#160;"}if(K.dirty&&typeof K.modified[U.name]!=="undefined"){O.css+=" x-grid3-dirty-cell"}N[N.length]=D.apply(O)}var V=[];if(Q&&((J+1)%2==0)){V[0]="x-grid3-row-alt"}if(K.dirty){V[1]=" x-grid3-dirty-row"}I.cols=L;if(this.getRowClass){V[2]=this.getRowClass(K,J,I,M)}I.alt=V.join(" ");I.cells=N.join("");T[T.length]=F.apply(I)}return T.join("")},processRows:function(E,D){if(this.ds.getCount()<1){return }D=D||!this.grid.stripeRows;E=E||0;var I=this.getRows();var F=" x-grid3-row-alt ";for(var B=E,C=I.length;B<C;B++){var H=I[B];H.rowIndex=B;if(!D){var A=((B+1)%2==0);var G=(" "+H.className+" ").indexOf(F)!=-1;if(A==G){continue}if(A){H.className+=" x-grid3-row-alt"}else{H.className=H.className.replace("x-grid3-row-alt","")}}}},renderUI:function(){var E=this.renderHeaders();var B=this.templates.body.apply({rows:""});var C=this.templates.master.apply({body:B,header:E});var D=this.grid;D.getGridEl().dom.innerHTML=C;this.initElements();this.mainBody.dom.innerHTML=this.renderRows();this.processRows(0,true);Ext.fly(this.innerHd).on("click",this.handleHdDown,this);this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("mousemove",this.handleHdMove,this);this.scroller.on("scroll",this.syncScroll,this);if(D.enableColumnResize!==false){this.splitone=new Ext.grid.GridView.SplitDragZone(D,this.mainHd.dom)}if(D.enableColumnMove){this.columnDrag=new Ext.grid.GridView.ColumnDragZone(D,this.innerHd);this.columnDrop=new Ext.grid.HeaderDropZone(D,this.mainHd.dom)}if(D.enableHdMenu!==false){if(D.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:D.id+"-hcols-menu"});this.colMenu.on("beforeshow",this.beforeColMenuShow,this);this.colMenu.on("itemclick",this.handleHdMenuClick,this)}this.hmenu=new Ext.menu.Menu({id:D.id+"-hctx"});this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(D.enableColumnHide!==false){this.hmenu.add("-",{id:"columns",text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})}this.hmenu.on("itemclick",this.handleHdMenuClick,this)}if(D.enableDragDrop||D.enableDrag){var A=new Ext.grid.GridDragZone(D,{ddGroup:D.ddGroup||"GridDD"})}this.updateHeaderSortState()},layout:function(){if(!this.mainBody){return }var E=this.grid;var G=E.getGridEl(),I=this.cm,B=E.autoExpandColumn,A=this;var C=G.getSize(true);var H=C.width;if(H<20||C.height<20){return }if(E.autoHeight){this.scroller.dom.style.overflow="visible"}else{this.el.setSize(C.width,C.height);var F=this.mainHd.getHeight();var D=C.height-(F);this.scroller.setSize(H,D);if(this.innerHd){this.innerHd.style.width=(H)+"px"}}if(this.forceFit){if(this.lastViewWidth!=H){this.fitColumns(false,false);this.lastViewWidth=H}}else{this.autoExpand();this.syncHeaderScroll()}this.onLayout(H,D)},onLayout:function(A,B){},onColumnWidthUpdated:function(C,A,B){},onAllColumnWidthsUpdated:function(A,B){},onColumnHiddenUpdated:function(B,C,A){},updateColumnText:function(A,B){},afterMove:function(A){},init:function(A){this.grid=A;this.initTemplates();this.initData(A.store,A.colModel);this.initUI(A)},getColumnId:function(A){return this.cm.getColumnId(A)},renderHeaders:function(){var C=this.cm,F=this.templates;var E=F.hcell;var B=[],H=[],G={};for(var D=0,A=C.getColumnCount();D<A;D++){G.id=C.getColumnId(D);G.value=C.getColumnHeader(D)||"";G.style=this.getColumnStyle(D,true);G.tooltip=this.getColumnTooltip(D);if(C.config[D].align=="right"){G.istyle="padding-right:16px"}else{delete G.istyle}B[B.length]=E.apply(G)}return F.header.apply({cells:B.join(""),tstyle:"width:"+this.getTotalWidth()+";"})},getColumnTooltip:function(A){var B=this.cm.getColumnTooltip(A);if(B){if(Ext.QuickTips.isEnabled()){return"ext:qtip=\""+B+"\""}else{return"title=\""+B+"\""}}return""},beforeUpdate:function(){this.grid.stopEditing(true)},updateHeaders:function(){this.innerHd.firstChild.innerHTML=this.renderHeaders()},focusRow:function(A){this.focusCell(A,0,false)},focusCell:function(D,A,C){var B=this.ensureVisible(D,A,C);this.focusEl.setXY(B);if(Ext.isGecko){this.focusEl.focus()}else{this.focusEl.focus.defer(1,this.focusEl)}},ensureVisible:function(P,E,D){if(typeof P!="number"){P=P.rowIndex}if(!this.ds){return }if(P<0||P>=this.ds.getCount()){return }E=(E!==undefined?E:0);var I=this.getRow(P),F;if(!(D===false&&E===0)){while(this.cm.isHidden(E)){E++}F=this.getCell(P,E)}if(!I){return }var L=this.scroller.dom;var O=0;var C=I,M=this.el.dom;while(C&&C!=M){O+=C.offsetTop;C=C.offsetParent}O-=this.mainHd.dom.offsetHeight;var N=O+I.offsetHeight;var A=L.clientHeight;var M=parseInt(L.scrollTop,10);var K=M+A;if(O<M){L.scrollTop=O}else{if(N>K){L.scrollTop=N-A}}if(D!==false){var J=parseInt(F.offsetLeft,10);var H=J+F.offsetWidth;var G=parseInt(L.scrollLeft,10);var B=G+L.clientWidth;if(J<G){L.scrollLeft=J}else{if(H>B){L.scrollLeft=H-L.clientWidth}}}return F?Ext.fly(F).getXY():[L.scrollLeft,Ext.fly(I).getY()]},insertRows:function(A,F,C,E){if(!E&&F===0&&C==A.getCount()-1){this.refresh()}else{if(!E){this.fireEvent("beforerowsinserted",this,F,C)}var B=this.renderRows(F,C);var D=this.getRow(F);if(D){Ext.DomHelper.insertHtml("beforeBegin",D,B)}else{Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,B)}if(!E){this.fireEvent("rowsinserted",this,F,C);this.processRows(F)}}},deleteRows:function(A,C,B){if(A.getRowCount()<1){this.refresh()}else{this.fireEvent("beforerowsdeleted",this,C,B);this.removeRows(C,B);this.processRows(C);this.fireEvent("rowsdeleted",this,C,B)}},getColumnStyle:function(A,C){var B=!C?(this.cm.config[A].css||""):"";B+="width:"+this.getColumnWidth(A)+";";if(this.cm.isHidden(A)){B+="display:none;"}var D=this.cm.config[A].align;if(D){B+="text-align:"+D+";"}return B},getColumnWidth:function(B){var A=this.cm.getColumnWidth(B);if(typeof A=="number"){return(Ext.isBorderBox?A:(A-this.borderWidth>0?A-this.borderWidth:0))+"px"}return A},getTotalWidth:function(){return this.cm.getTotalWidth()+"px"},fitColumns:function(D,G,E){var F=this.cm,S,L,O;var R=F.getTotalWidth(false);var J=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(J<20){return }var B=J-R;if(B===0){return false}var A=F.getColumnCount(true);var P=A-(typeof E=="number"?1:0);if(P===0){P=1;E=undefined}var K=F.getColumnCount();var I=[];var N=0;var M=0;var H;for(O=0;O<K;O++){if(!F.isHidden(O)&&!F.isFixed(O)&&O!==E){H=F.getColumnWidth(O);I.push(O);N=O;I.push(H);M+=H}}var C=(J-F.getTotalWidth())/M;while(I.length){H=I.pop();O=I.pop();F.setColumnWidth(O,Math.max(this.grid.minColumnWidth,Math.floor(H+H*C)),true)}if((R=F.getTotalWidth(false))>J){var Q=P!=A?E:N;F.setColumnWidth(Q,Math.max(1,F.getColumnWidth(Q)-(R-J)),true)}if(D!==true){this.updateAllColumnWidths()}return true},autoExpand:function(B){var G=this.grid,A=this.cm;if(!this.userResized&&G.autoExpandColumn){var D=A.getTotalWidth(false);var H=this.grid.getGridEl().getWidth(true)-this.scrollOffset;if(D!=H){var F=A.getIndexById(G.autoExpandColumn);var E=A.getColumnWidth(F);var C=Math.min(Math.max(((H-D)+E),G.autoExpandMin),G.autoExpandMax);if(C!=E){A.setColumnWidth(F,C,true);if(B!==true){this.updateColumnWidth(F,C)}}}}},getColumnData:function(){var D=[],A=this.cm,E=A.getColumnCount();for(var C=0;C<E;C++){var B=A.getDataIndex(C);D[C]={name:(typeof B=="undefined"?this.ds.fields.get(C).name:B),renderer:A.getRenderer(C),id:A.getColumnId(C),style:this.getColumnStyle(C)}}return D},renderRows:function(H,C){var D=this.grid,F=D.colModel,A=D.store,I=D.stripeRows;var G=F.getColumnCount();if(A.getCount()<1){return""}var E=this.getColumnData();H=H||0;C=typeof C=="undefined"?A.getCount()-1:C;var B=A.getRange(H,C);return this.doRender(E,B,A,H,G,I)},renderBody:function(){var A=this.renderRows();return this.templates.body.apply({rows:A})},refreshRow:function(B){var D=this.ds,C;if(typeof B=="number"){C=B;B=D.getAt(C)}else{C=D.indexOf(B)}var A=[];this.insertRows(D,C,C,true);this.getRow(C).rowIndex=C;this.onRemove(D,B,C+1,true);this.fireEvent("rowupdated",this,C,B)},refresh:function(B){this.fireEvent("beforerefresh",this);this.grid.stopEditing(true);var A=this.renderBody();this.mainBody.update(A);if(B===true){this.updateHeaders();this.updateHeaderSortState()}this.processRows(0,true);this.layout();this.applyEmptyText();this.fireEvent("refresh",this)},applyEmptyText:function(){if(this.emptyText&&!this.hasRows()){this.mainBody.update("<div class=\"x-grid-empty\">"+this.emptyText+"</div>")}},updateHeaderSortState:function(){var B=this.ds.getSortState();if(!B){return }if(!this.sortState||(this.sortState.field!=B.field||this.sortState.direction!=B.direction)){this.grid.fireEvent("sortchange",this.grid,B)}this.sortState=B;var C=this.cm.findColumnIndex(B.field);if(C!=-1){var A=B.direction;this.updateSortIcon(C,A)}},destroy:function(){if(this.colMenu){this.colMenu.removeAll();Ext.menu.MenuMgr.unregister(this.colMenu);this.colMenu.getEl().remove();delete this.colMenu}if(this.hmenu){this.hmenu.removeAll();Ext.menu.MenuMgr.unregister(this.hmenu);this.hmenu.getEl().remove();delete this.hmenu}if(this.grid.enableColumnMove){var C=Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id];if(C){for(var A in C){if(!C[A].config.isTarget&&C[A].dragElId){var B=C[A].dragElId;C[A].unreg();Ext.get(B).remove()}else{if(C[A].config.isTarget){C[A].proxyTop.remove();C[A].proxyBottom.remove();C[A].unreg()}}if(Ext.dd.DDM.locationCache[A]){delete Ext.dd.DDM.locationCache[A]}}delete Ext.dd.DDM.ids["gridHeader"+this.grid.getGridEl().id]}}Ext.destroy(this.resizeMarker,this.resizeProxy);this.initData(null,null);Ext.EventManager.removeResizeListener(this.onWindowResize,this)},onDenyColumnHide:function(){},render:function(){var A=this.cm;var B=A.getColumnCount();if(this.autoFill){this.fitColumns(true,true)}else{if(this.forceFit){this.fitColumns(true,false)}else{if(this.grid.autoExpandColumn){this.autoExpand(true)}}}this.renderUI()},initData:function(B,A){if(this.ds){this.ds.un("load",this.onLoad,this);this.ds.un("datachanged",this.onDataChange,this);this.ds.un("add",this.onAdd,this);this.ds.un("remove",this.onRemove,this);this.ds.un("update",this.onUpdate,this);this.ds.un("clear",this.onClear,this)}if(B){B.on("load",this.onLoad,this);B.on("datachanged",this.onDataChange,this);B.on("add",this.onAdd,this);B.on("remove",this.onRemove,this);B.on("update",this.onUpdate,this);B.on("clear",this.onClear,this)}this.ds=B;if(this.cm){this.cm.un("configchange",this.onColConfigChange,this);this.cm.un("widthchange",this.onColWidthChange,this);this.cm.un("headerchange",this.onHeaderChange,this);this.cm.un("hiddenchange",this.onHiddenChange,this);this.cm.un("columnmoved",this.onColumnMove,this);this.cm.un("columnlockchange",this.onColumnLock,this)}if(A){A.on("configchange",this.onColConfigChange,this);A.on("widthchange",this.onColWidthChange,this);A.on("headerchange",this.onHeaderChange,this);A.on("hiddenchange",this.onHiddenChange,this);A.on("columnmoved",this.onColumnMove,this);A.on("columnlockchange",this.onColumnLock,this)}this.cm=A},onDataChange:function(){this.refresh();this.updateHeaderSortState()},onClear:function(){this.refresh()},onUpdate:function(B,A){this.refreshRow(A)},onAdd:function(C,A,B){this.insertRows(C,B,B+(A.length-1))},onRemove:function(D,A,B,C){if(C!==true){this.fireEvent("beforerowremoved",this,B,A)}this.removeRow(B);if(C!==true){this.processRows(B);this.applyEmptyText();this.fireEvent("rowremoved",this,B,A)}},onLoad:function(){this.scrollToTop()},onColWidthChange:function(A,B,C){this.updateColumnWidth(B,C)},onHeaderChange:function(A,B,C){this.updateHeaders()},onHiddenChange:function(A,B,C){this.updateColumnHidden(B,C)},onColumnMove:function(A,D,B){this.indexMap=null;var C=this.getScrollState();this.refresh(true);this.restoreScroll(C);this.afterMove(B)},onColConfigChange:function(){delete this.lastViewWidth;this.indexMap=null;this.refresh(true)},initUI:function(A){A.on("headerclick",this.onHeaderClick,this);if(A.trackMouseOver){A.on("mouseover",this.onRowOver,this);A.on("mouseout",this.onRowOut,this)}},initEvents:function(){},onHeaderClick:function(B,A){if(this.headersDisabled||!this.cm.isSortable(A)){return }B.stopEditing(true);B.store.sort(this.cm.getDataIndex(A))},onRowOver:function(B,A){var C;if((C=this.findRowIndex(A))!==false){this.addRowClass(C,"x-grid3-row-over")}},onRowOut:function(B,A){var C;if((C=this.findRowIndex(A))!==false&&C!==this.findRowIndex(B.getRelatedTarget())){this.removeRowClass(C,"x-grid3-row-over")}},handleWheel:function(A){A.stopPropagation()},onRowSelect:function(A){this.addRowClass(A,"x-grid3-row-selected")},onRowDeselect:function(A){this.removeRowClass(A,"x-grid3-row-selected")},onCellSelect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).addClass("x-grid3-cell-selected")}},onCellDeselect:function(C,B){var A=this.getCell(C,B);if(A){this.fly(A).removeClass("x-grid3-cell-selected")}},onColumnSplitterMoved:function(C,B){this.userResized=true;var A=this.grid.colModel;A.setColumnWidth(C,B,true);if(this.forceFit){this.fitColumns(true,false,C);this.updateAllColumnWidths()}else{this.updateColumnWidth(C,B)}this.grid.fireEvent("columnresize",C,B)},handleHdMenuClick:function(C){var B=this.hdCtxIndex;var A=this.cm,D=this.ds;switch(C.id){case"asc":D.sort(A.getDataIndex(B),"ASC");break;case"desc":D.sort(A.getDataIndex(B),"DESC");break;default:B=A.getIndexById(C.id.substr(4));if(B!=-1){if(C.checked&&A.getColumnsBy(this.isHideableColumn,this).length<=1){this.onDenyColumnHide();return false}A.setHidden(B,C.checked)}}return true},isHideableColumn:function(A){return !A.hidden&&!A.fixed},beforeColMenuShow:function(){var A=this.cm,C=A.getColumnCount();this.colMenu.removeAll();for(var B=0;B<C;B++){if(A.config[B].fixed!==true&&A.config[B].hideable!==false){this.colMenu.add(new Ext.menu.CheckItem({id:"col-"+A.getColumnId(B),text:A.getColumnHeader(B),checked:!A.isHidden(B),hideOnClick:false,disabled:A.config[B].hideable===false}))}}},handleHdDown:function(F,D){if(Ext.fly(D).hasClass("x-grid3-hd-btn")){F.stopEvent();var E=this.findHeaderCell(D);Ext.fly(E).addClass("x-grid3-hd-menu-open");var C=this.getCellIndex(E);this.hdCtxIndex=C;var B=this.hmenu.items,A=this.cm;B.get("asc").setDisabled(!A.isSortable(C));B.get("desc").setDisabled(!A.isSortable(C));this.hmenu.on("hide",function(){Ext.fly(E).removeClass("x-grid3-hd-menu-open")},this,{single:true});this.hmenu.show(D,"tl-bl?")}},handleHdOver:function(D,A){var C=this.findHeaderCell(A);if(C&&!this.headersDisabled){this.activeHd=C;this.activeHdIndex=this.getCellIndex(C);var B=this.fly(C);this.activeHdRegion=B.getRegion();if(!this.cm.isMenuDisabled(this.activeHdIndex)){B.addClass("x-grid3-hd-over");this.activeHdBtn=B.child(".x-grid3-hd-btn");if(this.activeHdBtn){this.activeHdBtn.dom.style.height=(C.firstChild.offsetHeight-1)+"px"}}}},handleHdMove:function(F,D){if(this.activeHd&&!this.headersDisabled){var B=this.splitHandleWidth||5;var E=this.activeHdRegion;var A=F.getPageX();var C=this.activeHd.style;if(A-E.left<=B&&this.cm.isResizable(this.activeHdIndex-1)){C.cursor=Ext.isAir?"move":Ext.isSafari?"e-resize":"col-resize"}else{if(E.right-A<=(!this.activeHdBtn?B:2)&&this.cm.isResizable(this.activeHdIndex)){C.cursor=Ext.isAir?"move":Ext.isSafari?"w-resize":"col-resize"}else{C.cursor=""}}}},handleHdOut:function(C,A){var B=this.findHeaderCell(A);if(B&&(!Ext.isIE||!C.within(B,true))){this.activeHd=null;this.fly(B).removeClass("x-grid3-hd-over");B.style.cursor=""}},hasRows:function(){var A=this.mainBody.dom.firstChild;return A&&A.className!="x-grid-empty"},bind:function(A,B){this.initData(A,B)}});Ext.grid.GridView.SplitDragZone=function(A,B){this.grid=A;this.view=A.getView();this.marker=this.view.resizeMarker;this.proxy=this.view.resizeProxy;Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this,B,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.scroll=false;this.hw=this.view.splitHandleWidth||5};Ext.extend(Ext.grid.GridView.SplitDragZone,Ext.dd.DDProxy,{b4StartDrag:function(A,E){this.view.headersDisabled=true;var D=this.view.mainWrap.getHeight();this.marker.setHeight(D);this.marker.show();this.marker.alignTo(this.view.getHeaderCell(this.cellIndex),"tl-tl",[-2,0]);this.proxy.setHeight(D);var B=this.cm.getColumnWidth(this.cellIndex);var C=Math.max(B-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(C,1000);this.setYConstraint(0,0);this.minX=A-C;this.maxX=A+1000;this.startPos=A;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,A,E)},handleMouseDown:function(A){var H=this.view.findHeaderCell(A.getTarget());if(H){var K=this.view.fly(H).getXY(),E=K[0],D=K[1];var I=A.getXY(),C=I[0],B=I[1];var G=H.offsetWidth,F=false;if((C-E)<=this.hw){F=-1}else{if((E+G)-C<=this.hw){F=0}}if(F!==false){this.cm=this.grid.colModel;var J=this.view.getCellIndex(H);if(F==-1){if(J+F<0){return }while(this.cm.isHidden(J+F)){--F;if(J+F<0){return }}}this.cellIndex=J+F;this.split=H.dom;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}else{if(this.view.columnDrag){this.view.columnDrag.callHandleMouseDown(A)}}}},endDrag:function(D){this.marker.hide();var A=this.view;var B=Math.max(this.minX,D.getPageX());var C=B-this.startPos;A.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+C);setTimeout(function(){A.headersDisabled=false},50)},autoOffset:function(){this.setDelta(0,0)}});
-Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",gidSeed:1000,initTemplates:function(){Ext.grid.GroupingView.superclass.initTemplates.call(this);this.state={};var A=this.grid.getSelectionModel();A.on(A.selectRow?"beforerowselect":"beforecellselect",this.onBeforeRowSelect,this);if(!this.startGroup){this.startGroup=new Ext.XTemplate("<div id=\"{groupId}\" class=\"x-grid-group {cls}\">","<div id=\"{groupId}-hd\" class=\"x-grid-group-hd\" style=\"{style}\"><div>",this.groupTextTpl,"</div></div>","<div id=\"{groupId}-bd\" class=\"x-grid-group-body\">")}this.startGroup.compile();this.endGroup="</div></div>"},findGroup:function(A){return Ext.fly(A).up(".x-grid-group",this.mainBody.dom)},getGroups:function(){return this.hasRows()?this.mainBody.dom.childNodes:[]},onAdd:function(){if(this.enableGrouping&&!this.ignoreAdd){var A=this.getScrollState();this.refresh();this.restoreScroll(A)}else{if(!this.enableGrouping){Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)}}},onRemove:function(E,A,B,D){Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);var C=document.getElementById(A._groupId);if(C&&C.childNodes[1].childNodes.length<1){Ext.removeNode(C)}this.applyEmptyText()},refreshRow:function(A){if(this.ds.getCount()==1){this.refresh()}else{this.isUpdating=true;Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);this.isUpdating=false}},beforeMenuShow:function(){var C=this.getGroupField();var B=this.hmenu.items.get("groupBy");if(B){B.setDisabled(this.cm.config[this.hdCtxIndex].groupable===false)}var A=this.hmenu.items.get("showGroups");if(A){if(!!C){A.setDisabled(this.cm.config[this.hdCtxIndex].groupable===false)}A.setChecked(!!C)}},renderUI:function(){Ext.grid.GroupingView.superclass.renderUI.call(this);this.mainBody.on("mousedown",this.interceptMouse,this);if(this.enableGroupingMenu&&this.hmenu){this.hmenu.add("-",{id:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});if(this.enableNoGroups){this.hmenu.add({id:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})}this.hmenu.on("beforeshow",this.beforeMenuShow,this)}},onGroupByClick:function(){this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));this.beforeMenuShow()},onShowGroupsClick:function(A,B){if(B){this.onGroupByClick()}else{this.grid.store.clearGrouping()}},toggleGroup:function(C,B){this.grid.stopEditing(true);C=Ext.getDom(C);var A=Ext.fly(C);B=B!==undefined?B:A.hasClass("x-grid-group-collapsed");this.state[A.dom.id]=B;A[B?"removeClass":"addClass"]("x-grid-group-collapsed")},toggleAllGroups:function(C){var B=this.getGroups();for(var D=0,A=B.length;D<A;D++){this.toggleGroup(B[D],C)}},expandAllGroups:function(){this.toggleAllGroups(true)},collapseAllGroups:function(){this.toggleAllGroups(false)},interceptMouse:function(B){var A=B.getTarget(".x-grid-group-hd",this.mainBody);if(A){B.stopEvent();this.toggleGroup(A.parentNode)}},getGroup:function(A,D,F,G,B,E){var C=F?F(A,{},D,G,B,E):String(A);if(C===""){C=this.cm.config[B].emptyGroupText||this.emptyGroupText}return C},getGroupField:function(){return this.grid.store.getGroupState()},renderRows:function(){var A=this.getGroupField();var D=!!A;if(this.hideGroupedColumn){var B=this.cm.findColumnIndex(A);if(!D&&this.lastGroupField!==undefined){this.mainBody.update("");this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);delete this.lastGroupField}else{if(D&&this.lastGroupField===undefined){this.lastGroupField=A;this.cm.setHidden(B,true)}else{if(D&&this.lastGroupField!==undefined&&A!==this.lastGroupField){this.mainBody.update("");var C=this.cm.findColumnIndex(this.lastGroupField);this.cm.setHidden(C,false);this.lastGroupField=A;this.cm.setHidden(B,true)}}}}return Ext.grid.GroupingView.superclass.renderRows.apply(this,arguments)},doRender:function(D,G,P,A,O,R){if(G.length<1){return""}var Y=this.getGroupField();var N=this.cm.findColumnIndex(Y);this.enableGrouping=!!Y;if(!this.enableGrouping||this.isUpdating){return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)}var H="width:"+this.getTotalWidth()+";";var Q=this.grid.getGridEl().id;var F=this.cm.config[N];var B=F.groupRenderer||F.renderer;var S=this.showGroupName?(F.groupName||F.header)+": ":"";var X=[],K,T,U,M;for(T=0,U=G.length;T<U;T++){var J=A+T;var L=G[T],E=L.data[Y],V=this.getGroup(E,L,B,J,N,P);if(!K||K.group!=V){M=Q+"-gp-"+Y+"-"+Ext.util.Format.htmlEncode(V);var C=typeof this.state[M]!=="undefined"?!this.state[M]:this.startCollapsed;var I=C?"x-grid-group-collapsed":"";K={group:V,gvalue:E,text:S+V,groupId:M,startRow:J,rs:[L],cls:I,style:H};X.push(K)}else{K.rs.push(L)}L._groupId=M}var W=[];for(T=0,U=X.length;T<U;T++){var V=X[T];this.doGroupStart(W,V,D,P,O);W[W.length]=Ext.grid.GroupingView.superclass.doRender.call(this,D,V.rs,P,V.startRow,O,R);this.doGroupEnd(W,V,D,P,O)}return W.join("")},getGroupId:function(F){var D=this.grid.getGridEl().id;var C=this.getGroupField();var E=this.cm.findColumnIndex(C);var B=this.cm.config[E];var G=B.groupRenderer||B.renderer;var A=this.getGroup(F,{data:{}},G,0,E,this.ds);return D+"-gp-"+C+"-"+Ext.util.Format.htmlEncode(F)},doGroupStart:function(A,D,B,E,C){A[A.length]=this.startGroup.apply(D)},doGroupEnd:function(A,D,B,E,C){A[A.length]=this.endGroup},getRows:function(){if(!this.enableGrouping){return Ext.grid.GroupingView.superclass.getRows.call(this)}var G=[];var F,C=this.getGroups();for(var E=0,A=C.length;E<A;E++){F=C[E].childNodes[1].childNodes;for(var D=0,B=F.length;D<B;D++){G[G.length]=F[D]}}return G},updateGroupWidths:function(){if(!this.enableGrouping||!this.hasRows()){return }var C=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.scrollOffset)+"px";var B=this.getGroups();for(var D=0,A=B.length;D<A;D++){B[D].firstChild.style.width=C}},onColumnWidthUpdated:function(C,A,B){this.updateGroupWidths()},onAllColumnWidthsUpdated:function(A,B){this.updateGroupWidths()},onColumnHiddenUpdated:function(B,C,A){this.updateGroupWidths()},onLayout:function(){this.updateGroupWidths()},onBeforeRowSelect:function(D,C){if(!this.enableGrouping){return }var B=this.getRow(C);if(B&&!B.offsetParent){var A=this.findGroup(B);this.toggleGroup(A,true)}},groupByText:"Group By This Field",showGroupsText:"Show in Groups"});Ext.grid.GroupingView.GROUP_ID=1000;
-Ext.grid.HeaderDragZone=function(A,C,B){this.grid=A;this.view=A.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,C);if(B){this.setHandleElId(Ext.id(C));this.setOuterHandleElId(Ext.id(B))}this.scroll=false};Ext.extend(Ext.grid.HeaderDragZone,Ext.dd.DragZone,{maxDragWidth:120,getDragData:function(C){var A=Ext.lib.Event.getTarget(C);var B=this.view.findHeaderCell(A);if(B){return{ddel:B.firstChild,header:B}}return false},onInitDrag:function(A){this.view.headersDisabled=true;var B=this.dragData.ddel.cloneNode(true);B.id=Ext.id();B.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(B);return true},afterValidDrop:function(){var A=this.view;setTimeout(function(){A.headersDisabled=false},50)},afterInvalidDrop:function(){var A=this.view;setTimeout(function(){A.headersDisabled=false},50)}});Ext.grid.HeaderDropZone=function(A,C,B){this.grid=A;this.view=A.getView();this.proxyTop=Ext.DomHelper.append(document.body,{cls:"col-move-top",html:"&#160;"},true);this.proxyBottom=Ext.DomHelper.append(document.body,{cls:"col-move-bottom",html:"&#160;"},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden")};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,A.getGridEl().dom)};Ext.extend(Ext.grid.HeaderDropZone,Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,getTargetFromEvent:function(C){var A=Ext.lib.Event.getTarget(C);var B=this.view.findCellIndex(A);if(B!==false){return this.view.getHeaderCell(B)}},nextVisible:function(C){var B=this.view,A=this.grid.colModel;C=C.nextSibling;while(C){if(!A.isHidden(B.getCellIndex(C))){return C}C=C.nextSibling}return null},prevVisible:function(C){var B=this.view,A=this.grid.colModel;C=C.prevSibling;while(C){if(!A.isHidden(B.getCellIndex(C))){return C}C=C.prevSibling}return null},positionIndicator:function(D,B,E){var H=Ext.lib.Event.getPageX(E);var A=Ext.lib.Dom.getRegion(B.firstChild);var I,K,G=A.top+this.proxyOffsets[1];if((A.right-H)<=(A.right-A.left)/2){I=A.right+this.view.borderWidth;K="after"}else{I=A.left;K="before"}var F=this.view.getCellIndex(D);var J=this.view.getCellIndex(B);if(this.grid.colModel.isFixed(J)){return false}var C=this.grid.colModel.isLocked(J);if(K=="after"){J++}if(F<J){J--}if(F==J&&(C==this.grid.colModel.isLocked(F))){return false}I+=this.proxyOffsets[0];this.proxyTop.setLeftTop(I,G);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight()}this.proxyBottom.setLeftTop(I,G+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return K},onNodeEnter:function(D,A,C,B){if(B.header!=D){this.positionIndicator(B.header,D,C)}},onNodeOver:function(E,B,D,C){var A=false;if(C.header!=E){A=this.positionIndicator(C.header,E,D)}if(!A){this.proxyTop.hide();this.proxyBottom.hide()}return A?this.dropAllowed:this.dropNotAllowed},onNodeOut:function(D,A,C,B){this.proxyTop.hide();this.proxyBottom.hide()},onNodeDrop:function(B,K,F,D){var E=D.header;if(E!=B){var I=this.grid.colModel;var H=Ext.lib.Event.getPageX(F);var A=Ext.lib.Dom.getRegion(B.firstChild);var L=(A.right-H)<=((A.right-A.left)/2)?"after":"before";var G=this.view.getCellIndex(E);var J=this.view.getCellIndex(B);var C=I.isLocked(J);if(L=="after"){J++}if(G<J){J--}if(G==J&&(C==I.isLocked(G))){return false}I.setLocked(G,C,true);I.moveColumn(G,J);this.grid.fireEvent("columnmove",G,J);return true}return false}});Ext.grid.GridView.ColumnDragZone=function(A,B){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,A,B,null);this.proxy.el.addClass("x-grid3-col-dd")};Ext.extend(Ext.grid.GridView.ColumnDragZone,Ext.grid.HeaderDragZone,{handleMouseDown:function(A){},callHandleMouseDown:function(A){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,A)}});
-Ext.grid.SplitDragZone=function(A,C,B){this.grid=A;this.view=A.getView();this.proxy=this.view.resizeProxy;Ext.grid.SplitDragZone.superclass.constructor.call(this,C,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.setHandleElId(Ext.id(C));this.setOuterHandleElId(Ext.id(B));this.scroll=false};Ext.extend(Ext.grid.SplitDragZone,Ext.dd.DDProxy,{fly:Ext.Element.fly,b4StartDrag:function(A,D){this.view.headersDisabled=true;this.proxy.setHeight(this.view.mainWrap.getHeight());var B=this.cm.getColumnWidth(this.cellIndex);var C=Math.max(B-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(C,1000);this.setYConstraint(0,0);this.minX=A-C;this.maxX=A+1000;this.startPos=A;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,A,D)},handleMouseDown:function(B){ev=Ext.EventObject.setEvent(B);var A=this.fly(ev.getTarget());if(A.hasClass("x-grid-split")){this.cellIndex=this.view.getCellIndex(A.dom);this.split=A.dom;this.cm=this.grid.colModel;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)}}},endDrag:function(C){this.view.headersDisabled=false;var A=Math.max(this.minX,Ext.lib.Event.getPageX(C));var B=A-this.startPos;this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+B)},autoOffset:function(){this.setDelta(0,0)}});
-Ext.grid.GridDragZone=function(B,A){this.view=B.getView();Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,A);if(this.view.lockedBody){this.setHandleElId(Ext.id(this.view.mainBody.dom));this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom))}this.scroll=false;this.grid=B;this.ddel=document.createElement("div");this.ddel.className="x-grid-dd-wrap"};Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{ddGroup:"GridDD",getDragData:function(B){var A=Ext.lib.Event.getTarget(B);var D=this.view.findRowIndex(A);if(D!==false){var C=this.grid.selModel;if(!C.isSelected(D)||B.hasModifier()){C.handleMouseDown(this.grid,D,B)}return{grid:this.grid,ddel:this.ddel,rowIndex:D,selections:C.getSelections()}}return false},onInitDrag:function(B){var A=this.dragData;this.ddel.innerHTML=this.grid.getDragDropText();this.proxy.update(this.ddel)},afterRepair:function(){this.dragging=false},getRepairXY:function(B,A){return false},onEndDrag:function(A,B){},onValidDrop:function(A,B,C){this.hideProxy()},beforeInvalidDrop:function(A,B){}});
-Ext.grid.ColumnModel=function(A){this.defaultWidth=100;this.defaultSortable=false;if(A.columns){Ext.apply(this,A);this.setConfig(A.columns,true)}else{this.setConfig(A,true)}this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","columnlockchange","configchange");Ext.grid.ColumnModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.ColumnModel,Ext.util.Observable,{getColumnId:function(A){return this.config[A].id},setConfig:function(C,B){if(!B){delete this.totalWidth;for(var D=0,A=this.config.length;D<A;D++){var E=this.config[D];if(E.editor){E.editor.destroy()}}}this.config=C;this.lookup={};for(var D=0,A=C.length;D<A;D++){var E=C[D];if(typeof E.renderer=="string"){E.renderer=Ext.util.Format[E.renderer]}if(typeof E.id=="undefined"){E.id=D}if(E.editor&&E.editor.isFormField){E.editor=new Ext.grid.GridEditor(E.editor)}this.lookup[E.id]=E}if(!B){this.fireEvent("configchange",this)}},getColumnById:function(A){return this.lookup[A]},getIndexById:function(C){for(var B=0,A=this.config.length;B<A;B++){if(this.config[B].id==C){return B}}return -1},moveColumn:function(C,A){var B=this.config[C];this.config.splice(C,1);this.config.splice(A,0,B);this.dataMap=null;this.fireEvent("columnmoved",this,C,A)},isLocked:function(A){return this.config[A].locked===true},setLocked:function(B,C,A){if(this.isLocked(B)==C){return }this.config[B].locked=C;if(!A){this.fireEvent("columnlockchange",this,B,C)}},getTotalLockedWidth:function(){var A=0;for(var B=0;B<this.config.length;B++){if(this.isLocked(B)&&!this.isHidden(B)){this.totalWidth+=this.getColumnWidth(B)}}return A},getLockedCount:function(){for(var B=0,A=this.config.length;B<A;B++){if(!this.isLocked(B)){return B}}},getColumnCount:function(C){if(C===true){var D=0;for(var B=0,A=this.config.length;B<A;B++){if(!this.isHidden(B)){D++}}return D}return this.config.length},getColumnsBy:function(D,C){var E=[];for(var B=0,A=this.config.length;B<A;B++){var F=this.config[B];if(D.call(C||this,F,B)===true){E[E.length]=F}}return E},isSortable:function(A){if(typeof this.config[A].sortable=="undefined"){return this.defaultSortable}return this.config[A].sortable},isMenuDisabled:function(A){return !!this.config[A].menuDisabled},getRenderer:function(A){if(!this.config[A].renderer){return Ext.grid.ColumnModel.defaultRenderer}return this.config[A].renderer},setRenderer:function(A,B){this.config[A].renderer=B},getColumnWidth:function(A){return this.config[A].width||this.defaultWidth},setColumnWidth:function(B,C,A){this.config[B].width=C;this.totalWidth=null;if(!A){this.fireEvent("widthchange",this,B,C)}},getTotalWidth:function(B){if(!this.totalWidth){this.totalWidth=0;for(var C=0,A=this.config.length;C<A;C++){if(B||!this.isHidden(C)){this.totalWidth+=this.getColumnWidth(C)}}}return this.totalWidth},getColumnHeader:function(A){return this.config[A].header},setColumnHeader:function(A,B){this.config[A].header=B;this.fireEvent("headerchange",this,A,B)},getColumnTooltip:function(A){return this.config[A].tooltip},setColumnTooltip:function(A,B){this.config[A].tooltip=B},getDataIndex:function(A){return this.config[A].dataIndex},setDataIndex:function(A,B){this.config[A].dataIndex=B},findColumnIndex:function(C){var D=this.config;for(var B=0,A=D.length;B<A;B++){if(D[B].dataIndex==C){return B}}return -1},isCellEditable:function(A,B){return(this.config[A].editable||(typeof this.config[A].editable=="undefined"&&this.config[A].editor))?true:false},getCellEditor:function(A,B){return this.config[A].editor},setEditable:function(A,B){this.config[A].editable=B},isHidden:function(A){return this.config[A].hidden},isFixed:function(A){return this.config[A].fixed},isResizable:function(A){return A>=0&&this.config[A].resizable!==false&&this.config[A].fixed!==true},setHidden:function(A,B){var C=this.config[A];if(C.hidden!==B){C.hidden=B;this.totalWidth=null;this.fireEvent("hiddenchange",this,A,B)}},setEditor:function(A,B){this.config[A].editor=B}});Ext.grid.ColumnModel.defaultRenderer=function(A){if(typeof A=="string"&&A.length<1){return"&#160;"}return A};Ext.grid.DefaultColumnModel=Ext.grid.ColumnModel;
-Ext.grid.AbstractSelectionModel=function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.AbstractSelectionModel,Ext.util.Observable,{init:function(A){this.grid=A;this.initEvents()},lock:function(){this.locked=true},unlock:function(){this.locked=false},isLocked:function(){return this.locked}});
-Ext.grid.RowSelectionModel=function(A){Ext.apply(this,A);this.selections=new Ext.util.MixedCollection(false,function(B){return B.id});this.last=false;this.lastActive=false;this.addEvents("selectionchange","beforerowselect","rowselect","rowdeselect");Ext.grid.RowSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.RowSelectionModel,Ext.grid.AbstractSelectionModel,{singleSelect:false,initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("rowmousedown",this.handleMouseDown,this)}else{this.grid.on("rowclick",function(B,D,C){if(C.button===0&&!C.shiftKey&&!C.ctrlKey){this.selectRow(D,false);B.view.focusRow(D)}},this)}this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(C){if(!C.shiftKey){this.selectPrevious(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive-1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},"down":function(C){if(!C.shiftKey){this.selectNext(C.shiftKey)}else{if(this.last!==false&&this.lastActive!==false){var B=this.last;this.selectRange(this.last,this.lastActive+1);this.grid.getView().focusRow(this.lastActive);if(B!==false){this.last=B}}else{this.selectFirstRow()}}},scope:this});var A=this.grid.view;A.on("refresh",this.onRefresh,this);A.on("rowupdated",this.onRowUpdated,this);A.on("rowremoved",this.onRemove,this)},onRefresh:function(){var F=this.grid.store,B;var D=this.getSelections();this.clearSelections(true);for(var C=0,A=D.length;C<A;C++){var E=D[C];if((B=F.indexOfId(E.id))!=-1){this.selectRow(B,true)}}if(D.length!=this.selections.getCount()){this.fireEvent("selectionchange",this)}},onRemove:function(A,B,C){if(this.selections.remove(C)!==false){this.fireEvent("selectionchange",this)}},onRowUpdated:function(A,B,C){if(this.isSelected(C)){A.onRowSelect(B)}},selectRecords:function(B,E){if(!E){this.clearSelections()}var D=this.grid.store;for(var C=0,A=B.length;C<A;C++){this.selectRow(D.indexOf(B[C]),true)}},getCount:function(){return this.selections.length},selectFirstRow:function(){this.selectRow(0)},selectLastRow:function(A){this.selectRow(this.grid.store.getCount()-1,A)},selectNext:function(A){if(this.hasNext()){this.selectRow(this.last+1,A);this.grid.getView().focusRow(this.last);return true}return false},selectPrevious:function(A){if(this.hasPrevious()){this.selectRow(this.last-1,A);this.grid.getView().focusRow(this.last);return true}return false},hasNext:function(){return this.last!==false&&(this.last+1)<this.grid.store.getCount()},hasPrevious:function(){return !!this.last},getSelections:function(){return[].concat(this.selections.items)},getSelected:function(){return this.selections.itemAt(0)},each:function(E,D){var C=this.getSelections();for(var B=0,A=C.length;B<A;B++){if(E.call(D||this,C[B],B)===false){return false}}return true},clearSelections:function(A){if(this.locked){return }if(A!==true){var C=this.grid.store;var B=this.selections;B.each(function(D){this.deselectRow(C.indexOfId(D.id))},this);B.clear()}else{this.selections.clear()}this.last=false},selectAll:function(){if(this.locked){return }this.selections.clear();for(var B=0,A=this.grid.store.getCount();B<A;B++){this.selectRow(B,true)}},hasSelection:function(){return this.selections.length>0},isSelected:function(A){var B=typeof A=="number"?this.grid.store.getAt(A):A;return(B&&this.selections.key(B.id)?true:false)},isIdSelected:function(A){return(this.selections.key(A)?true:false)},handleMouseDown:function(D,F,E){if(E.button!==0||this.isLocked()){return }var A=this.grid.getView();if(E.shiftKey&&this.last!==false){var C=this.last;this.selectRange(C,F,E.ctrlKey);this.last=C;A.focusRow(F)}else{var B=this.isSelected(F);if(E.ctrlKey&&B){this.deselectRow(F)}else{if(!B||this.getCount()>1){this.selectRow(F,E.ctrlKey||E.shiftKey);A.focusRow(F)}}}},selectRows:function(C,D){if(!D){this.clearSelections()}for(var B=0,A=C.length;B<A;B++){this.selectRow(C[B],true)}},selectRange:function(B,A,D){if(this.locked){return }if(!D){this.clearSelections()}if(B<=A){for(var C=B;C<=A;C++){this.selectRow(C,true)}}else{for(var C=B;C>=A;C--){this.selectRow(C,true)}}},deselectRange:function(C,B,A){if(this.locked){return }for(var D=C;D<=B;D++){this.deselectRow(D,A)}},selectRow:function(B,D,A){if(this.locked||(B<0||B>=this.grid.store.getCount())){return }var C=this.grid.store.getAt(B);if(C&&this.fireEvent("beforerowselect",this,B,D,C)!==false){if(!D||this.singleSelect){this.clearSelections()}this.selections.add(C);this.last=this.lastActive=B;if(!A){this.grid.getView().onRowSelect(B)}this.fireEvent("rowselect",this,B,C);this.fireEvent("selectionchange",this)}},deselectRow:function(B,A){if(this.locked){return }if(this.last==B){this.last=false}if(this.lastActive==B){this.lastActive=false}var C=this.grid.store.getAt(B);if(C){this.selections.remove(C);if(!A){this.grid.getView().onRowDeselect(B)}this.fireEvent("rowdeselect",this,B,C);this.fireEvent("selectionchange",this)}},restoreLast:function(){if(this._last){this.last=this._last}},acceptsNav:function(C,B,A){return !A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(F,E){var C=E.getKey(),G,D=this.grid,B=D.activeEditor;var A=E.shiftKey;if(C==E.TAB){E.stopEvent();B.completeEdit();if(A){G=D.walkCells(B.row,B.col-1,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row,B.col+1,1,this.acceptsNav,this)}}else{if(C==E.ENTER){E.stopEvent();B.completeEdit();if(this.moveEditorOnEnter!==false){if(A){G=D.walkCells(B.row-1,B.col,-1,this.acceptsNav,this)}else{G=D.walkCells(B.row+1,B.col,1,this.acceptsNav,this)}}}else{if(C==E.ESC){B.cancelEdit()}}}if(G){D.startEditing(G[0],G[1])}}});
-Ext.grid.CellSelectionModel=function(A){Ext.apply(this,A);this.selection=null;this.addEvents("beforecellselect","cellselect","selectionchange");Ext.grid.CellSelectionModel.superclass.constructor.call(this)};Ext.extend(Ext.grid.CellSelectionModel,Ext.grid.AbstractSelectionModel,{initEvents:function(){this.grid.on("cellmousedown",this.handleMouseDown,this);this.grid.getGridEl().on(Ext.isIE?"keydown":"keypress",this.handleKeyDown,this);var A=this.grid.view;A.on("refresh",this.onViewChange,this);A.on("rowupdated",this.onRowUpdated,this);A.on("beforerowremoved",this.clearSelections,this);A.on("beforerowsinserted",this.clearSelections,this);if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this)}},beforeEdit:function(A){this.select(A.row,A.column,false,true,A.record)},onRowUpdated:function(A,B,C){if(this.selection&&this.selection.record==C){A.onCellSelect(B,this.selection.cell[1])}},onViewChange:function(){this.clearSelections(true)},getSelectedCell:function(){return this.selection?this.selection.cell:null},clearSelections:function(B){var A=this.selection;if(A){if(B!==true){this.grid.view.onCellDeselect(A.cell[0],A.cell[1])}this.selection=null;this.fireEvent("selectionchange",this,null)}},hasSelection:function(){return this.selection?true:false},handleMouseDown:function(B,D,A,C){if(C.button!==0||this.isLocked()){return }this.select(D,A)},select:function(F,C,B,E,D){if(this.fireEvent("beforecellselect",this,F,C)!==false){this.clearSelections();D=D||this.grid.store.getAt(F);this.selection={record:D,cell:[F,C]};if(!B){var A=this.grid.getView();A.onCellSelect(F,C);if(E!==true){A.focusCell(F,C)}}this.fireEvent("cellselect",this,F,C);this.fireEvent("selectionchange",this,this.selection)}},isSelectable:function(C,B,A){return !A.isHidden(B)},handleKeyDown:function(F){if(!F.isNavKeyPress()){return }var E=this.grid,J=this.selection;if(!J){F.stopEvent();var I=E.walkCells(0,0,1,this.isSelectable,this);if(I){this.select(I[0],I[1])}return }var B=this;var H=function(M,K,L){return E.walkCells(M,K,L,B.isSelectable,B)};var C=F.getKey(),A=J.cell[0],G=J.cell[1];var D;switch(C){case F.TAB:if(F.shiftKey){D=H(A,G-1,-1)}else{D=H(A,G+1,1)}break;case F.DOWN:D=H(A+1,G,1);break;case F.UP:D=H(A-1,G,-1);break;case F.RIGHT:D=H(A,G+1,1);break;case F.LEFT:D=H(A,G-1,-1);break;case F.ENTER:if(E.isEditor&&!E.editing){E.startEditing(A,G);F.stopEvent();return }break}if(D){this.select(D[0],D[1]);F.stopEvent()}},acceptsNav:function(C,B,A){return !A.isHidden(B)&&A.isCellEditable(B,C)},onEditorKey:function(E,D){var B=D.getKey(),F,C=this.grid,A=C.activeEditor;if(B==D.TAB){if(D.shiftKey){F=C.walkCells(A.row,A.col-1,-1,this.acceptsNav,this)}else{F=C.walkCells(A.row,A.col+1,1,this.acceptsNav,this)}D.stopEvent()}else{if(B==D.ENTER){A.completeEdit();D.stopEvent()}else{if(B==D.ESC){D.stopEvent();A.cancelEdit()}}}if(F){C.startEditing(F[0],F[1])}}});
-Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{clicksToEdit:2,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function(){Ext.grid.EditorGridPanel.superclass.initComponent.call(this);if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel()}this.activeEditor=null;this.addEvents("beforeedit","afteredit","validateedit")},initEvents:function(){Ext.grid.EditorGridPanel.superclass.initEvents.call(this);this.on("bodyscroll",this.stopEditing,this,[true]);if(this.clicksToEdit==1){this.on("cellclick",this.onCellDblClick,this)}else{if(this.clicksToEdit=="auto"&&this.view.mainBody){this.view.mainBody.on("mousedown",this.onAutoEditClick,this)}this.on("celldblclick",this.onCellDblClick,this)}this.getGridEl().addClass("xedit-grid")},onCellDblClick:function(B,C,A){this.startEditing(C,A)},onAutoEditClick:function(C,B){if(C.button!==0){return }var E=this.view.findRowIndex(B);var A=this.view.findCellIndex(B);if(E!==false&&A!==false){this.stopEditing();if(this.selModel.getSelectedCell){var D=this.selModel.getSelectedCell();if(D&&D.cell[0]===E&&D.cell[1]===A){this.startEditing(E,A)}}else{if(this.selModel.isSelected(E)){this.startEditing(E,A)}}}},onEditComplete:function(B,D,A){this.editing=false;this.activeEditor=null;B.un("specialkey",this.selModel.onEditorKey,this.selModel);var C=B.record;var F=this.colModel.getDataIndex(B.col);D=this.postEditValue(D,A,C,F);if(String(D)!==String(A)){var E={grid:this,record:C,field:F,originalValue:A,value:D,row:B.row,column:B.col,cancel:false};if(this.fireEvent("validateedit",E)!==false&&!E.cancel){C.set(F,E.value);delete E.cancel;this.fireEvent("afteredit",E)}}this.view.focusCell(B.row,B.col)},startEditing:function(F,B){this.stopEditing();if(this.colModel.isCellEditable(B,F)){this.view.ensureVisible(F,B,true);var C=this.store.getAt(F);var E=this.colModel.getDataIndex(B);var D={grid:this,record:C,field:E,value:C.data[E],row:F,column:B,cancel:false};if(this.fireEvent("beforeedit",D)!==false&&!D.cancel){this.editing=true;var A=this.colModel.getCellEditor(B,F);if(!A.rendered){A.render(this.view.getEditorParent(A))}(function(){A.row=F;A.col=B;A.record=C;A.on("complete",this.onEditComplete,this,{single:true});A.on("specialkey",this.selModel.onEditorKey,this.selModel);this.activeEditor=A;var G=this.preEditValue(C,E);A.startEdit(this.view.getCell(F,B),G)}).defer(50,this)}}},preEditValue:function(A,B){return this.autoEncode&&typeof value=="string"?Ext.util.Format.htmlDecode(A.data[B]):A.data[B]},postEditValue:function(C,A,B,D){return this.autoEncode&&typeof C=="string"?Ext.util.Format.htmlEncode(C):C},stopEditing:function(A){if(this.activeEditor){this.activeEditor[A===true?"cancelEdit":"completeEdit"]()}this.activeEditor=null}});Ext.reg("editorgrid",Ext.grid.EditorGridPanel);
-Ext.grid.GridEditor=function(B,A){Ext.grid.GridEditor.superclass.constructor.call(this,B,A);B.monitorTab=false};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});
-Ext.grid.PropertyRecord=Ext.data.Record.create([{name:"name",type:"string"},"value"]);Ext.grid.PropertyStore=function(A,B){this.grid=A;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on("update",this.onUpdate,this);if(B){this.setSource(B)}Ext.grid.PropertyStore.superclass.constructor.call(this)};Ext.extend(Ext.grid.PropertyStore,Ext.util.Observable,{setSource:function(C){this.source=C;this.store.removeAll();var B=[];for(var A in C){if(this.isEditableValue(C[A])){B.push(new Ext.grid.PropertyRecord({name:A,value:C[A]},A))}}this.store.loadRecords({records:B},{},true)},onUpdate:function(E,A,D){if(D==Ext.data.Record.EDIT){var B=A.data["value"];var C=A.modified["value"];if(this.grid.fireEvent("beforepropertychange",this.source,A.id,B,C)!==false){this.source[A.id]=B;A.commit();this.grid.fireEvent("propertychange",this.source,A.id,B,C)}else{A.reject()}}},getProperty:function(A){return this.store.getAt(A)},isEditableValue:function(A){if(Ext.isDate(A)){return true}else{if(typeof A=="object"||typeof A=="function"){return false}}return true},setValue:function(B,A){this.source[B]=A;this.store.getById(B).set("value",A)},getSource:function(){return this.source}});Ext.grid.PropertyColumnModel=function(C,B){this.grid=C;var D=Ext.grid;D.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,width:50,sortable:true,dataIndex:"name",id:"name",menuDisabled:true},{header:this.valueText,width:50,resizable:false,dataIndex:"value",id:"value",menuDisabled:true}]);this.store=B;this.bselect=Ext.DomHelper.append(document.body,{tag:"select",cls:"x-grid-editor x-hide-display",children:[{tag:"option",value:"true",html:"true"},{tag:"option",value:"false",html:"false"}]});var E=Ext.form;var A=new E.Field({el:this.bselect,bselect:this.bselect,autoShow:true,getValue:function(){return this.bselect.value=="true"}});this.editors={"date":new D.GridEditor(new E.DateField({selectOnFocus:true})),"string":new D.GridEditor(new E.TextField({selectOnFocus:true})),"number":new D.GridEditor(new E.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new D.GridEditor(A)};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this)};Ext.extend(Ext.grid.PropertyColumnModel,Ext.grid.ColumnModel,{nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",renderDate:function(A){return A.dateFormat(this.dateFormat)},renderBool:function(A){return A?"true":"false"},isCellEditable:function(A,B){return A==1},getRenderer:function(A){return A==1?this.renderCellDelegate:this.renderPropDelegate},renderProp:function(A){return this.getPropertyName(A)},renderCell:function(A){var B=A;if(Ext.isDate(A)){B=this.renderDate(A)}else{if(typeof A=="boolean"){B=this.renderBool(A)}}return Ext.util.Format.htmlEncode(B)},getPropertyName:function(B){var A=this.grid.propertyNames;return A&&A[B]?A[B]:B},getCellEditor:function(A,E){var B=this.store.getProperty(E);var D=B.data["name"],C=B.data["value"];if(this.grid.customEditors[D]){return this.grid.customEditors[D]}if(Ext.isDate(C)){return this.editors["date"]}else{if(typeof C=="number"){return this.editors["number"]}else{if(typeof C=="boolean"){return this.editors["boolean"]}else{return this.editors["string"]}}}}});Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function(){this.customEditors=this.customEditors||{};this.lastEditRow=null;var B=new Ext.grid.PropertyStore(this);this.propStore=B;var A=new Ext.grid.PropertyColumnModel(this,B);B.store.sort("name","ASC");this.addEvents("beforepropertychange","propertychange");this.cm=A;this.ds=B.store;Ext.grid.PropertyGrid.superclass.initComponent.call(this);this.selModel.on("beforecellselect",function(E,D,C){if(C===0){this.startEditing.defer(200,this,[D,1]);return false}},this)},onRender:function(){Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);this.getGridEl().addClass("x-props-grid")},afterRender:function(){Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);if(this.source){this.setSource(this.source)}},setSource:function(A){this.propStore.setSource(A)},getSource:function(){return this.propStore.getSource()}});
-Ext.grid.RowNumberer=function(A){Ext.apply(this,A);if(this.rowspan){this.renderer=this.renderer.createDelegate(this)}};Ext.grid.RowNumberer.prototype={header:"",width:23,sortable:false,fixed:true,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(B,C,A,D){if(this.rowspan){C.cellAttr="rowspan=\""+this.rowspan+"\""}return D+1}};
-Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{header:"<div class=\"x-grid3-hd-checker\">&#160;</div>",width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:"",id:"checker",initEvents:function(){Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);this.grid.on("render",function(){var A=this.grid.getView();A.mainBody.on("mousedown",this.onMouseDown,this);Ext.fly(A.innerHd).on("mousedown",this.onHdMouseDown,this)},this)},onMouseDown:function(C,B){if(C.button===0&&B.className=="x-grid3-row-checker"){C.stopEvent();var D=C.getTarget(".x-grid3-row");if(D){var A=D.rowIndex;if(this.isSelected(A)){this.deselectRow(A)}else{this.selectRow(A,true)}}}},onHdMouseDown:function(C,A){if(A.className=="x-grid3-hd-checker"){C.stopEvent();var B=Ext.fly(A.parentNode);var D=B.hasClass("x-grid3-hd-checker-on");if(D){B.removeClass("x-grid3-hd-checker-on");this.clearSelections()}else{B.addClass("x-grid3-hd-checker-on");this.selectAll()}}},renderer:function(B,C,A){return"<div class=\"x-grid3-row-checker\">&#160;</div>"}});
-Ext.LoadMask=function(C,B){this.el=Ext.get(C);Ext.apply(this,B);if(this.store){this.store.on("beforeload",this.onBeforeLoad,this);this.store.on("load",this.onLoad,this);this.store.on("loadexception",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,false)}else{var A=this.el.getUpdater();A.showLoadIndicator=false;A.on("beforeupdate",this.onBeforeLoad,this);A.on("update",this.onLoad,this);A.on("failure",this.onLoad,this);this.removeMask=Ext.value(this.removeMask,true)}};Ext.LoadMask.prototype={msg:"Loading...",msgCls:"x-mask-loading",disabled:false,disable:function(){this.disabled=true},enable:function(){this.disabled=false},onLoad:function(){this.el.unmask(this.removeMask)},onBeforeLoad:function(){if(!this.disabled){this.el.mask(this.msg,this.msgCls)}},show:function(){this.onBeforeLoad()},hide:function(){this.onLoad()},destroy:function(){if(this.store){this.store.un("beforeload",this.onBeforeLoad,this);this.store.un("load",this.onLoad,this);this.store.un("loadexception",this.onLoad,this)}else{var A=this.el.getUpdater();A.un("beforeupdate",this.onBeforeLoad,this);A.un("update",this.onLoad,this);A.un("failure",this.onLoad,this)}}};
-Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{baseCls:"x-progress",waitTimer:null,initComponent:function(){Ext.ProgressBar.superclass.initComponent.call(this);this.addEvents("update")},onRender:function(D,A){Ext.ProgressBar.superclass.onRender.call(this,D,A);var C=new Ext.Template("<div class=\"{cls}-wrap\">","<div class=\"{cls}-inner\">","<div class=\"{cls}-bar\">","<div class=\"{cls}-text\">","<div>&#160;</div>","</div>","</div>","<div class=\"{cls}-text {cls}-text-back\">","<div>&#160;</div>","</div>","</div>","</div>");if(A){this.el=C.insertBefore(A,{cls:this.baseCls},true)}else{this.el=C.append(D,{cls:this.baseCls},true)}if(this.id){this.el.dom.id=this.id}var B=this.el.dom.firstChild;this.progressBar=Ext.get(B.firstChild);if(this.textEl){this.textEl=Ext.get(this.textEl);delete this.textTopEl}else{this.textTopEl=Ext.get(this.progressBar.dom.firstChild);var E=Ext.get(B.childNodes[1]);this.textTopEl.setStyle("z-index",99).addClass("x-hidden");this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,E.dom.firstChild]);this.textEl.setWidth(B.offsetWidth)}if(this.value){this.updateProgress(this.value,this.text)}else{this.updateText(this.text)}this.setSize(this.width||"auto","auto");this.progressBar.setHeight(B.offsetHeight)},updateProgress:function(B,C){this.value=B||0;if(C){this.updateText(C)}var A=Math.floor(B*this.el.dom.firstChild.offsetWidth);this.progressBar.setWidth(A);if(this.textTopEl){this.textTopEl.removeClass("x-hidden").setWidth(A)}this.fireEvent("update",this,B,C);return this},wait:function(B){if(!this.waitTimer){var A=this;B=B||{};this.waitTimer=Ext.TaskMgr.start({run:function(C){var D=B.increment||10;this.updateProgress(((((C+D)%D)+1)*(100/D))*0.01)},interval:B.interval||1000,duration:B.duration,onStop:function(){if(B.fn){B.fn.apply(B.scope||this)}this.reset()},scope:A})}return this},isWaiting:function(){return this.waitTimer!=null},updateText:function(A){this.text=A||"&#160;";this.textEl.update(this.text);return this},setSize:function(A,C){Ext.ProgressBar.superclass.setSize.call(this,A,C);if(this.textTopEl){var B=this.el.dom.firstChild;this.textEl.setSize(B.offsetWidth,B.offsetHeight)}return this},reset:function(A){this.updateProgress(0);if(this.textTopEl){this.textTopEl.addClass("x-hidden")}if(this.waitTimer){this.waitTimer.onStop=null;Ext.TaskMgr.stop(this.waitTimer);this.waitTimer=null}if(A===true){this.hide()}return this}});Ext.reg("progress",Ext.ProgressBar);
+Ext.DomHelper = function() {
+ var L = null;
+ var F = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;
+ var B = /^table|tbody|tr|td$/i;
+ var A = function(T) {
+ if (typeof T == "string") {
+ return T
+ }
+ var O = "";
+ if (Ext.isArray(T)) {
+ for (var R = 0,P = T.length; R < P; R++) {
+ O += A(T[R])
+ }
+ return O
+ }
+ if (!T.tag) {
+ T.tag = "div"
+ }
+ O += "<" + T.tag;
+ for (var N in T) {
+ if (N == "tag" || N == "children" || N == "cn" || N == "html"
+ || typeof T[N] == "function") {
+ continue
+ }
+ if (N == "style") {
+ var S = T["style"];
+ if (typeof S == "function") {
+ S = S.call()
+ }
+ if (typeof S == "string") {
+ O += " style=\"" + S + "\""
+ } else {
+ if (typeof S == "object") {
+ O += " style=\"";
+ for (var Q in S) {
+ if (typeof S[Q] != "function") {
+ O += Q + ":" + S[Q] + ";"
+ }
+ }
+ O += "\""
+ }
+ }
+ } else {
+ if (N == "cls") {
+ O += " class=\"" + T["cls"] + "\""
+ } else {
+ if (N == "htmlFor") {
+ O += " for=\"" + T["htmlFor"] + "\""
+ } else {
+ O += " " + N + "=\"" + T[N] + "\""
+ }
+ }
+ }
+ }
+ if (F.test(T.tag)) {
+ O += "/>"
+ } else {
+ O += ">";
+ var U = T.children || T.cn;
+ if (U) {
+ O += A(U)
+ } else {
+ if (T.html) {
+ O += T.html
+ }
+ }
+ O += "</" + T.tag + ">"
+ }
+ return O
+ };
+ var M = function(T, O) {
+ var S;
+ if (Ext.isArray(T)) {
+ S = document.createDocumentFragment();
+ for (var R = 0,P = T.length; R < P; R++) {
+ M(T[R], S)
+ }
+ } else {
+ if (typeof T == "string)") {
+ S = document.createTextNode(T)
+ } else {
+ S = document.createElement(T.tag || "div");
+ var Q = !!S.setAttribute;
+ for (var N in T) {
+ if (N == "tag" || N == "children" || N == "cn" || N
+ == "html" || N == "style" || typeof T[N]
+ == "function") {
+ continue
+ }
+ if (N == "cls") {
+ S.className = T["cls"]
+ } else {
+ if (Q) {
+ S.setAttribute(N, T[N])
+ } else {
+ S[N] = T[N]
+ }
+ }
+ }
+ Ext.DomHelper.applyStyles(S, T.style);
+ var U = T.children || T.cn;
+ if (U) {
+ M(U, S)
+ } else {
+ if (T.html) {
+ S.innerHTML = T.html
+ }
+ }
+ }
+ }
+ if (O) {
+ O.appendChild(S)
+ }
+ return S
+ };
+ var I = function(S, Q, P, R) {
+ L.innerHTML = [Q,P,R].join("");
+ var N = -1,O = L;
+ while (++N < S) {
+ O = O.firstChild
+ }
+ return O
+ };
+ var J = "<table>",E = "</table>",C = J + "<tbody>",K = "</tbody>" + E,H = C
+ + "<tr>",D = "</tr>" + K;
+ var G = function(N, O, Q, P) {
+ if (!L) {
+ L = document.createElement("div")
+ }
+ var R;
+ var S = null;
+ if (N == "td") {
+ if (O == "afterbegin" || O == "beforeend") {
+ return
+ }
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode
+ } else {
+ S = Q.nextSibling;
+ Q = Q.parentNode
+ }
+ R = I(4, H, P, D)
+ } else {
+ if (N == "tr") {
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode;
+ R = I(3, C, P, K)
+ } else {
+ if (O == "afterend") {
+ S = Q.nextSibling;
+ Q = Q.parentNode;
+ R = I(3, C, P, K)
+ } else {
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(4, H, P, D)
+ }
+ }
+ } else {
+ if (N == "tbody") {
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode;
+ R = I(2, J, P, E)
+ } else {
+ if (O == "afterend") {
+ S = Q.nextSibling;
+ Q = Q.parentNode;
+ R = I(2, J, P, E)
+ } else {
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(3, C, P, K)
+ }
+ }
+ } else {
+ if (O == "beforebegin" || O == "afterend") {
+ return
+ }
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(2, J, P, E)
+ }
+ }
+ }
+ Q.insertBefore(R, S);
+ return R
+ };
+ return{useDom:false,markup:function(N) {
+ return A(N)
+ },applyStyles:function(P, Q) {
+ if (Q) {
+ P = Ext.fly(P);
+ if (typeof Q == "string") {
+ var O = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+ var R;
+ while ((R = O.exec(Q)) != null) {
+ P.setStyle(R[1], R[2])
+ }
+ } else {
+ if (typeof Q == "object") {
+ for (var N in Q) {
+ P.setStyle(N, Q[N])
+ }
+ } else {
+ if (typeof Q == "function") {
+ Ext.DomHelper.applyStyles(P, Q.call())
+ }
+ }
+ }
+ }
+ },insertHtml:function(P, R, Q) {
+ P = P.toLowerCase();
+ if (R.insertAdjacentHTML) {
+ if (B.test(R.tagName)) {
+ var O;
+ if (O = G(R.tagName.toLowerCase(), P, R, Q)) {
+ return O
+ }
+ }
+ switch (P) {case"beforebegin":R.insertAdjacentHTML("BeforeBegin", Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin", Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd", Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd", Q);return R.nextSibling}
+ throw"Illegal insertion point -> \"" + P + "\""
+ }
+ var N = R.ownerDocument.createRange();
+ var S;
+ switch (P) {case"beforebegin":N.setStartBefore(R);S
+ = N.createContextualFragment(Q);R.parentNode.insertBefore(S, R);return R.previousSibling;case"afterbegin":if (R.firstChild) {
+ N.setStartBefore(R.firstChild);
+ S = N.createContextualFragment(Q);
+ R.insertBefore(S, R.firstChild);
+ return R.firstChild
+ } else {
+ R.innerHTML = Q;
+ return R.firstChild
+ }case"beforeend":if (R.lastChild) {
+ N.setStartAfter(R.lastChild);
+ S = N.createContextualFragment(Q);
+ R.appendChild(S);
+ return R.lastChild
+ } else {
+ R.innerHTML = Q;
+ return R.lastChild
+ }case"afterend":N.setStartAfter(R);S
+ = N.createContextualFragment(Q);R.parentNode.insertBefore(S, R.nextSibling);return R.nextSibling}
+ throw"Illegal insertion point -> \"" + P + "\""
+ },insertBefore:function(N, P, O) {
+ return this.doInsert(N, P, O, "beforeBegin")
+ },insertAfter:function(N, P, O) {
+ return this.doInsert(N, P, O, "afterEnd", "nextSibling")
+ },insertFirst:function(N, P, O) {
+ return this.doInsert(N, P, O, "afterBegin", "firstChild")
+ },doInsert:function(Q, S, R, T, P) {
+ Q = Ext.getDom(Q);
+ var O;
+ if (this.useDom) {
+ O = M(S, null);
+ (P === "firstChild" ? Q : Q.parentNode).insertBefore(O, P ? Q[P]
+ : Q)
+ } else {
+ var N = A(S);
+ O = this.insertHtml(T, Q, N)
+ }
+ return R ? Ext.get(O, true) : O
+ },append:function(P, R, Q) {
+ P = Ext.getDom(P);
+ var O;
+ if (this.useDom) {
+ O = M(R, null);
+ P.appendChild(O)
+ } else {
+ var N = A(R);
+ O = this.insertHtml("beforeEnd", P, N)
+ }
+ return Q ? Ext.get(O, true) : O
+ },overwrite:function(N, P, O) {
+ N = Ext.getDom(N);
+ N.innerHTML = A(P);
+ return O ? Ext.get(N.firstChild, true) : N.firstChild
+ },createTemplate:function(O) {
+ var N = A(O);
+ return new Ext.Template(N)
+ }}
+}();
+Ext.Template = function(E) {
+ var B = arguments;
+ if (Ext.isArray(E)) {
+ E = E.join("")
+ } else {
+ if (B.length > 1) {
+ var C = [];
+ for (var D = 0,A = B.length; D < A; D++) {
+ if (typeof B[D] == "object") {
+ Ext.apply(this, B[D])
+ } else {
+ C[C.length] = B[D]
+ }
+ }
+ E = C.join("")
+ }
+ }
+ this.html = E;
+ if (this.compiled) {
+ this.compile()
+ }
+};
+Ext.Template.prototype = {applyTemplate:function(B) {
+ if (this.compiled) {
+ return this.compiled(B)
+ }
+ var A = this.disableFormats !== true;
+ var E = Ext.util.Format,C = this;
+ var D = function(G, I, L, H) {
+ if (L && A) {
+ if (L.substr(0, 5) == "this.") {
+ return C.call(L.substr(5), B[I], B)
+ } else {
+ if (H) {
+ var K = /^\s*['"](.*)["']\s*$/;
+ H = H.split(",");
+ for (var J = 0,F = H.length; J < F; J++) {
+ H[J] = H[J].replace(K, "$1")
+ }
+ H = [B[I]].concat(H)
+ } else {
+ H = [B[I]]
+ }
+ return E[L].apply(E, H)
+ }
+ } else {
+ return B[I] !== undefined ? B[I] : ""
+ }
+ };
+ return this.html.replace(this.re, D)
+},set:function(A, B) {
+ this.html = A;
+ this.compiled = null;
+ if (B) {
+ 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(C, B, A) {
+ return this[C](B, A)
+},insertFirst:function(B, A, C) {
+ return this.doInsert("afterBegin", B, A, C)
+},insertBefore:function(B, A, C) {
+ return this.doInsert("beforeBegin", B, A, C)
+},insertAfter:function(B, A, C) {
+ return this.doInsert("afterEnd", B, A, C)
+},append:function(B, A, C) {
+ return this.doInsert("beforeEnd", B, A, C)
+},doInsert:function(C, E, B, A) {
+ E = Ext.getDom(E);
+ var D = Ext.DomHelper.insertHtml(C, E, this.applyTemplate(B));
+ return A ? Ext.get(D, true) : D
+},overwrite:function(B, A, C) {
+ B = Ext.getDom(B);
+ B.innerHTML = this.applyTemplate(A);
+ return C ? Ext.get(B.firstChild, true) : B.firstChild
+}};
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+Ext.DomHelper.Template = Ext.Template;
+Ext.Template.from = function(B, A) {
+ B = Ext.getDom(B);
+ return new Ext.Template(B.value || B.innerHTML, A || "")
+};
+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 A = this.events[arguments[0].toLowerCase()];
+ if (typeof A == "object") {
+ return A.fire.apply(A, Array.prototype.slice.call(arguments, 1))
+ }
+ }
+ return true
+},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A, C, B,
+ F) {
+ if (typeof A == "object") {
+ F = A;
+ for (var E in F) {
+ if (this.filterOptRe.test(E)) {
+ continue
+ }
+ if (typeof F[E] == "function") {
+ this.addListener(E, F[E], F.scope, F)
+ } else {
+ this.addListener(E, F[E].fn, F[E].scope, F[E])
+ }
+ }
+ return
+ }
+ F = (!F || typeof F == "boolean") ? {} : F;
+ A = A.toLowerCase();
+ var D = this.events[A] || true;
+ if (typeof D == "boolean") {
+ D = new Ext.util.Event(this, A);
+ this.events[A] = D
+ }
+ D.addListener(C, B, F)
+},removeListener:function(A, C, B) {
+ var D = this.events[A.toLowerCase()];
+ if (typeof D == "object") {
+ D.removeListener(C, B)
+ }
+},purgeListeners:function() {
+ for (var A in this.events) {
+ if (typeof this.events[A] == "object") {
+ this.events[A].clearListeners()
+ }
+ }
+},relayEvents:function(F, D) {
+ var E = function(G) {
+ return function() {
+ return this.fireEvent.apply(this, Ext.combine(G, Array.prototype.slice.call(arguments, 0)))
+ }
+ };
+ for (var C = 0,A = D.length; C < A; C++) {
+ var B = D[C];
+ if (!this.events[B]) {
+ this.events[B] = true
+ }
+ F.on(B, E(B), this)
+ }
+},addEvents:function(D) {
+ if (!this.events) {
+ this.events = {}
+ }
+ if (typeof D == "string") {
+ for (var C = 0,A = arguments,B; B = A[C]; C++) {
+ if (!this.events[A[C]]) {
+ D[A[C]] = true
+ }
+ }
+ } else {
+ Ext.applyIf(this.events, D)
+ }
+},hasListener:function(A) {
+ var B = this.events[A];
+ return typeof B == "object" && B.listeners.length > 0
+},suspendEvents:function() {
+ this.eventsSuspended = true
+},resumeEvents:function() {
+ this.eventsSuspended = false
+},getMethodEvent:function(G) {
+ if (!this.methodEvents) {
+ this.methodEvents = {}
+ }
+ var F = this.methodEvents[G];
+ if (!F) {
+ F = {};
+ this.methodEvents[G] = F;
+ F.originalFn = this[G];
+ F.methodName = G;
+ F.before = [];
+ F.after = [];
+ var C,B,D;
+ var E = this;
+ var A = function(J, I, H) {
+ if ((B = J.apply(I || E, H)) !== undefined) {
+ if (typeof B === "object") {
+ if (B.returnValue !== undefined) {
+ C = B.returnValue
+ } else {
+ C = B
+ }
+ if (B.cancel === true) {
+ D = true
+ }
+ } else {
+ if (B === false) {
+ D = true
+ } else {
+ C = B
+ }
+ }
+ }
+ };
+ this[G] = function() {
+ C = B = undefined;
+ D = false;
+ var I = Array.prototype.slice.call(arguments, 0);
+ for (var J = 0,H = F.before.length; J < H; J++) {
+ A(F.before[J].fn, F.before[J].scope, I);
+ if (D) {
+ return C
+ }
+ }
+ if ((B = F.originalFn.apply(E, I)) !== undefined) {
+ C = B
+ }
+ for (var J = 0,H = F.after.length; J < H; J++) {
+ A(F.after[J].fn, F.after[J].scope, I);
+ if (D) {
+ return C
+ }
+ }
+ return C
+ }
+ }
+ return F
+},beforeMethod:function(D, B, A) {
+ var C = this.getMethodEvent(D);
+ C.before.push({fn:B,scope:A})
+},afterMethod:function(D, B, A) {
+ var C = this.getMethodEvent(D);
+ C.after.push({fn:B,scope:A})
+},removeMethodListener:function(F, D, C) {
+ var E = this.getMethodEvent(F);
+ for (var B = 0,A = E.before.length; B < A; B++) {
+ if (E.before[B].fn == D && E.before[B].scope == C) {
+ E.before.splice(B, 1);
+ return
+ }
+ }
+ for (var B = 0,A = E.after.length; B < A; B++) {
+ if (E.after[B].fn == D && E.after[B].scope == C) {
+ E.after.splice(B, 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(C, B, A) {
+ C.fireEvent = C.fireEvent.createInterceptor(B, A)
+};
+Ext.util.Observable.releaseCapture = function(A) {
+ A.fireEvent = Ext.util.Observable.prototype.fireEvent
+};
+(function() {
+ var B = function(F, G, E) {
+ var D = new Ext.util.DelayedTask();
+ return function() {
+ D.delay(G.buffer, F, E, Array.prototype.slice.call(arguments, 0))
+ }
+ };
+ var C = function(F, G, E, D) {
+ return function() {
+ G.removeListener(E, D);
+ return F.apply(D, arguments)
+ }
+ };
+ var A = function(E, F, D) {
+ return function() {
+ var G = Array.prototype.slice.call(arguments, 0);
+ setTimeout(function() {
+ E.apply(D, G)
+ }, F.delay || 10)
+ }
+ };
+ Ext.util.Event = function(E, D) {
+ this.name = D;
+ this.obj = E;
+ this.listeners = []
+ };
+ Ext.util.Event.prototype = {addListener:function(G, F, E) {
+ F = F || this.obj;
+ if (!this.isListening(G, F)) {
+ var D = this.createListener(G, F, E);
+ if (!this.firing) {
+ this.listeners.push(D)
+ } else {
+ this.listeners = this.listeners.slice(0);
+ this.listeners.push(D)
+ }
+ }
+ },createListener:function(G, F, H) {
+ H = H || {};
+ F = F || this.obj;
+ var D = {fn:G,scope:F,options:H};
+ var E = G;
+ if (H.delay) {
+ E = A(E, H, F)
+ }
+ if (H.single) {
+ E = C(E, this, G, F)
+ }
+ if (H.buffer) {
+ E = B(E, H, F)
+ }
+ D.fireFn = E;
+ return D
+ },findListener:function(I, H) {
+ H = H || this.obj;
+ var F = this.listeners;
+ for (var G = 0,D = F.length; G < D; G++) {
+ var E = F[G];
+ if (E.fn == I && E.scope == H) {
+ return G
+ }
+ }
+ return -1
+ },isListening:function(E, D) {
+ return this.findListener(E, D) != -1
+ },removeListener:function(F, E) {
+ var D;
+ if ((D = this.findListener(F, E)) != -1) {
+ if (!this.firing) {
+ this.listeners.splice(D, 1)
+ } else {
+ this.listeners = this.listeners.slice(0);
+ this.listeners.splice(D, 1)
+ }
+ return true
+ }
+ return false
+ },clearListeners:function() {
+ this.listeners = []
+ },fire:function() {
+ var F = this.listeners,I,D = F.length;
+ if (D > 0) {
+ this.firing = true;
+ var G = Array.prototype.slice.call(arguments, 0);
+ for (var H = 0; H < D; H++) {
+ var E = F[H];
+ if (E.fireFn.apply(E.scope || this.obj || window, arguments)
+ === false) {
+ this.firing = false;
+ return false
+ }
+ }
+ this.firing = false
+ }
+ return true
+ }}
+})();
+Ext.EventManager = function() {
+ var T,M,I = false;
+ var K,S,C,O;
+ var L = Ext.lib.Event;
+ var N = Ext.lib.Dom;
+ var B = function() {
+ if (!I) {
+ I = true;
+ Ext.isReady = true;
+ if (M) {
+ clearInterval(M)
+ }
+ if (Ext.isGecko || Ext.isOpera) {
+ document.removeEventListener("DOMContentLoaded", B, false)
+ }
+ if (Ext.isIE) {
+ var D = document.getElementById("ie-deferred-loader");
+ if (D) {
+ D.onreadystatechange = null;
+ D.parentNode.removeChild(D)
+ }
+ }
+ if (T) {
+ T.fire();
+ T.clearListeners()
+ }
+ }
+ };
+ var A = function() {
+ T = new Ext.util.Event();
+ if (Ext.isGecko || Ext.isOpera) {
+ document.addEventListener("DOMContentLoaded", B, false)
+ } else {
+ if (Ext.isIE) {
+ document.write("<s"
+ + "cript id=\"ie-deferred-loader\" defer=\"defer\" src=\"/"
+ + "/:\"></s" + "cript>");
+ var D = document.getElementById("ie-deferred-loader");
+ D.onreadystatechange = function() {
+ if (this.readyState == "complete") {
+ B()
+ }
+ }
+ } else {
+ if (Ext.isSafari) {
+ M = setInterval(function() {
+ var E = document.readyState;
+ if (E == "complete") {
+ B()
+ }
+ }, 10)
+ }
+ }
+ }
+ L.on(window, "load", B)
+ };
+ var R = function(E, U) {
+ var D = new Ext.util.DelayedTask(E);
+ return function(V) {
+ V = new Ext.EventObjectImpl(V);
+ D.delay(U.buffer, E, null, [V])
+ }
+ };
+ var P = function(V, U, D, E) {
+ return function(W) {
+ Ext.EventManager.removeListener(U, D, E);
+ V(W)
+ }
+ };
+ var F = function(D, E) {
+ return function(U) {
+ U = new Ext.EventObjectImpl(U);
+ setTimeout(function() {
+ D(U)
+ }, E.delay || 10)
+ }
+ };
+ var J = function(U, E, D, Y, X) {
+ var Z = (!D || typeof D == "boolean") ? {} : D;
+ Y = Y || Z.fn;
+ X = X || Z.scope;
+ var W = Ext.getDom(U);
+ if (!W) {
+ throw"Error listening for \"" + E + "\". Element \"" + U
+ + "\" doesn't exist."
+ }
+ var V = function(b) {
+ b = Ext.EventObject.setEvent(b);
+ var a;
+ if (Z.delegate) {
+ a = b.getTarget(Z.delegate, W);
+ if (!a) {
+ return
+ }
+ } else {
+ a = b.target
+ }
+ if (Z.stopEvent === true) {
+ b.stopEvent()
+ }
+ if (Z.preventDefault === true) {
+ b.preventDefault()
+ }
+ if (Z.stopPropagation === true) {
+ b.stopPropagation()
+ }
+ if (Z.normalized === false) {
+ b = b.browserEvent
+ }
+ Y.call(X || W, b, a, Z)
+ };
+ if (Z.delay) {
+ V = F(V, Z)
+ }
+ if (Z.single) {
+ V = P(V, W, E, Y)
+ }
+ if (Z.buffer) {
+ V = R(V, Z)
+ }
+ Y._handlers = Y._handlers || [];
+ Y._handlers.push([Ext.id(W),E,V]);
+ L.on(W, E, V);
+ if (E == "mousewheel" && W.addEventListener) {
+ W.addEventListener("DOMMouseScroll", V, false);
+ L.on(window, "unload", function() {
+ W.removeEventListener("DOMMouseScroll", V, false)
+ })
+ }
+ if (E == "mousedown" && W == document) {
+ Ext.EventManager.stoppedMouseDownEvent.addListener(V)
+ }
+ return V
+ };
+ var G = function(E, U, Z) {
+ var D = Ext.id(E),a = Z._handlers,X = Z;
+ if (a) {
+ for (var V = 0,Y = a.length; V < Y; V++) {
+ var W = a[V];
+ if (W[0] == D && W[1] == U) {
+ X = W[2];
+ a.splice(V, 1);
+ break
+ }
+ }
+ }
+ L.un(E, U, X);
+ E = Ext.getDom(E);
+ if (U == "mousewheel" && E.addEventListener) {
+ E.removeEventListener("DOMMouseScroll", X, false)
+ }
+ if (U == "mousedown" && E == document) {
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(X)
+ }
+ };
+ var H = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
+ var Q = {addListener:function(U, D, W, V, E) {
+ if (typeof D == "object") {
+ var Y = D;
+ for (var X in Y) {
+ if (H.test(X)) {
+ continue
+ }
+ if (typeof Y[X] == "function") {
+ J(U, X, Y, Y[X], Y.scope)
+ } else {
+ J(U, X, Y[X])
+ }
+ }
+ return
+ }
+ return J(U, D, E, W, V)
+ },removeListener:function(E, D, U) {
+ return G(E, D, U)
+ },onDocumentReady:function(U, E, D) {
+ if (I) {
+ T.addListener(U, E, D);
+ T.fire();
+ T.clearListeners();
+ return
+ }
+ if (!T) {
+ A()
+ }
+ T.addListener(U, E, D)
+ },onWindowResize:function(U, E, D) {
+ if (!K) {
+ K = new Ext.util.Event();
+ S = new Ext.util.DelayedTask(function() {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ });
+ L.on(window, "resize", this.fireWindowResize, this)
+ }
+ K.addListener(U, E, D)
+ },fireWindowResize:function() {
+ if (K) {
+ if ((Ext.isIE || Ext.isAir) && S) {
+ S.delay(50)
+ } else {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ }
+ }
+ },onTextResize:function(V, U, D) {
+ if (!C) {
+ C = new Ext.util.Event();
+ var E = new Ext.Element(document.createElement("div"));
+ E.dom.className = "x-text-resize";
+ E.dom.innerHTML = "X";
+ E.appendTo(document.body);
+ O = E.dom.offsetHeight;
+ setInterval(function() {
+ if (E.dom.offsetHeight != O) {
+ C.fire(O, O = E.dom.offsetHeight)
+ }
+ }, this.textResizeInterval)
+ }
+ C.addListener(V, U, D)
+ },removeResizeListener:function(E, D) {
+ if (K) {
+ K.removeListener(E, D)
+ }
+ },fireResize:function() {
+ if (K) {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ }
+ },ieDeferSrc:false,textResizeInterval:50};
+ Q.on = Q.addListener;
+ Q.un = Q.removeListener;
+ Q.stoppedMouseDownEvent = new Ext.util.Event();
+ return Q
+}();
+Ext.onReady = Ext.EventManager.onDocumentReady;
+Ext.onReady(function() {
+ var B = Ext.getBody();
+ if (!B) {
+ return
+ }
+ var A = [Ext.isIE ? "ext-ie " + (Ext.isIE6 ? "ext-ie6" : "ext-ie7")
+ : Ext.isGecko ? "ext-gecko" : Ext.isOpera ? "ext-opera"
+ : Ext.isSafari ? "ext-safari" : ""];
+ if (Ext.isMac) {
+ A.push("ext-mac")
+ }
+ if (Ext.isLinux) {
+ A.push("ext-linux")
+ }
+ if (Ext.isBorderBox) {
+ A.push("ext-border-box")
+ }
+ if (Ext.isStrict) {
+ var C = B.dom.parentNode;
+ if (C) {
+ C.className += " ext-strict"
+ }
+ }
+ B.addClass(A.join(" "))
+});
+Ext.EventObject = function() {
+ var B = Ext.lib.Event;
+ var A = {63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};
+ var C = 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(D) {
+ if (D) {
+ this.setEvent(D.browserEvent || D)
+ }
+ };
+ Ext.EventObjectImpl.prototype
+ = {browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(
+ D) {
+ if (D == this || (D && D.browserEvent)) {
+ return D
+ }
+ this.browserEvent = D;
+ if (D) {
+ this.button = D.button ? C[D.button] : (D.which ? D.which - 1 : -1);
+ if (D.type == "click" && this.button == -1) {
+ this.button = 0
+ }
+ this.type = D.type;
+ this.shiftKey = D.shiftKey;
+ this.ctrlKey = D.ctrlKey || D.metaKey;
+ this.altKey = D.altKey;
+ this.keyCode = D.keyCode;
+ this.charCode = D.charCode;
+ this.target = B.getTarget(D);
+ this.xy = B.getXY(D)
+ } 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)
+ }
+ B.stopEvent(this.browserEvent)
+ }
+ },preventDefault:function() {
+ if (this.browserEvent) {
+ B.preventDefault(this.browserEvent)
+ }
+ },isNavKeyPress:function() {
+ var D = this.keyCode;
+ D = Ext.isSafari ? (A[D] || D) : D;
+ return(D >= 33 && D <= 40) || D == this.RETURN || D == this.TAB || D
+ == this.ESC
+ },isSpecialKey:function() {
+ var D = this.keyCode;
+ return(this.type == "keypress" && this.ctrlKey) || D == 9 || D == 13
+ || D == 40 || D == 27 || (D == 16) || (D == 17) || (D >= 18 && D
+ <= 20) || (D >= 33 && D <= 35) || (D >= 36 && D <= 39) || (D
+ >= 44 && D <= 45)
+ },stopPropagation:function() {
+ if (this.browserEvent) {
+ if (this.browserEvent.type == "mousedown") {
+ Ext.EventManager.stoppedMouseDownEvent.fire(this)
+ }
+ B.stopPropagation(this.browserEvent)
+ }
+ },getCharCode:function() {
+ return this.charCode || this.keyCode
+ },getKey:function() {
+ var D = this.keyCode || this.charCode;
+ return Ext.isSafari ? (A[D] || D) : D
+ },getPageX:function() {
+ return this.xy[0]
+ },getPageY:function() {
+ return this.xy[1]
+ },getTime:function() {
+ if (this.browserEvent) {
+ return B.getTime(this.browserEvent)
+ }
+ return null
+ },getXY:function() {
+ return this.xy
+ },getTarget:function(E, G, D) {
+ var F = Ext.get(this.target);
+ return E ? F.findParent(E, G, D) : (D ? F : this.target)
+ },getRelatedTarget:function() {
+ if (this.browserEvent) {
+ return B.getRelatedTarget(this.browserEvent)
+ }
+ return null
+ },getWheelDelta:function() {
+ var D = this.browserEvent;
+ var E = 0;
+ if (D.wheelDelta) {
+ E = D.wheelDelta / 120
+ } else {
+ if (D.detail) {
+ E = -D.detail / 3
+ }
+ }
+ return E
+ },hasModifier:function() {
+ return((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false
+ },within:function(E, F) {
+ var D = this[F ? "getRelatedTarget" : "getTarget"]();
+ return D && Ext.fly(E).contains(D)
+ },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) || 0.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, unique) {
+ 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(0.01);
+ this.setVisible(true)
+ }
+ this.anim({opacity:{to:(visible ? 1
+ : 0)}}, this.preanim(arguments, 1), null, 0.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) {
+ Ext.EventManager.removeListener(this.dom, eventName, fn);
+ return this
+ },removeAllListeners:function() {
+ E.purgeElement(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, 0.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.isGecko) {
+ 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 * 0.5);y = r(h
+ * 0.5);break;case"t":x = r(w * 0.5);y = 0;break;case"l":x = 0;y
+ = r(h * 0.5);break;case"r":x = w;y = r(h * 0.5);break;case"b":x
+ = r(w * 0.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 += "<span id=\"" + id + "\"></span>";
+ E.onAvailable(id, function() {
+ var hd = document.getElementsByTagName("head")[0];
+ var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;
+ var srcRe = /\ssrc=([\'\"])(.*?)\1/i;
+ var typeRe = /\stype=([\'\"])(.*?)\1/i;
+ var match;
+ while (match = re.exec(html)) {
+ var attrs = match[1];
+ var srcMatch = attrs ? attrs.match(srcRe) : false;
+ if (srcMatch && srcMatch[2]) {
+ var s = document.createElement("script");
+ s.src = srcMatch[2];
+ var typeMatch = attrs.match(typeRe);
+ if (typeMatch && typeMatch[2]) {
+ s.type = typeMatch[2]
+ }
+ hd.appendChild(s)
+ } else {
+ if (match[2] && match[2].length > 0) {
+ if (window.execScript) {
+ window.execScript(match[2])
+ } else {
+ window.eval(match[2])
+ }
+ }
+ }
+ }
+ var el = document.getElementById(id);
+ if (el) {
+ Ext.removeNode(el)
+ }
+ if (typeof callback == "function") {
+ callback()
+ }
+ });
+ dom.innerHTML
+ = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
+ return this
+ },load:function() {
+ var um = this.getUpdater();
+ um.update.apply(um, arguments);
+ return this
+ },getUpdater:function() {
+ if (!this.updateManager) {
+ this.updateManager = new Ext.Updater(this)
+ }
+ return this.updateManager
+ },unselectable:function() {
+ this.dom.unselectable = "on";
+ this.swallowEvent("selectstart", true);
+ this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");
+ this.addClass("x-unselectable");
+ return this
+ },getCenterXY:function() {
+ return this.getAlignToXY(document, "c-c")
+ },center:function(centerIn) {
+ this.alignTo(centerIn || document, "c-c");
+ return this
+ },isBorderBox:function() {
+ return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox
+ },getBox:function(contentBox, local) {
+ var xy;
+ if (!local) {
+ xy = this.getXY()
+ } else {
+ var left = parseInt(this.getStyle("left"), 10) || 0;
+ var top = parseInt(this.getStyle("top"), 10) || 0;
+ xy = [left,top]
+ }
+ var el = this.dom,w = el.offsetWidth,h = el.offsetHeight,bx;
+ if (!contentBox) {
+ bx = {x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}
+ } else {
+ var l = this.getBorderWidth("l") + this.getPadding("l");
+ var r = this.getBorderWidth("r") + this.getPadding("r");
+ var t = this.getBorderWidth("t") + this.getPadding("t");
+ var b = this.getBorderWidth("b") + this.getPadding("b");
+ bx = {x:xy[0] + l,y:xy[1] + t,0:xy[0] + l,1:xy[1] + t,width:w - (l
+ + r),height:h - (t + b)}
+ }
+ bx.right = bx.x + bx.width;
+ bx.bottom = bx.y + bx.height;
+ return bx
+ },getFrameWidth:function(sides, onlyContentBox) {
+ return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides)
+ + this.getBorderWidth(sides))
+ },setBox:function(box, adjust, animate) {
+ var w = box.width,h = box.height;
+ if ((adjust && !this.autoBoxAdjust) && !this.isBorderBox()) {
+ w -= (this.getBorderWidth("lr") + this.getPadding("lr"));
+ h -= (this.getBorderWidth("tb") + this.getPadding("tb"))
+ }
+ this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2));
+ return this
+ },repaint:function() {
+ var dom = this.dom;
+ this.addClass("x-repaint");
+ setTimeout(function() {
+ Ext.get(dom).removeClass("x-repaint")
+ }, 1);
+ return this
+ },getMargins:function(side) {
+ if (!side) {
+ return{top:parseInt(this.getStyle("margin-top"), 10)
+ || 0,left:parseInt(this.getStyle("margin-left"), 10)
+ || 0,bottom:parseInt(this.getStyle("margin-bottom"), 10)
+ || 0,right:parseInt(this.getStyle("margin-right"), 10) || 0}
+ } else {
+ return this.addStyles(side, El.margins)
+ }
+ },addStyles:function(sides, styles) {
+ var val = 0,v,w;
+ for (var i = 0,len = sides.length; i < len; i++) {
+ v = this.getStyle(styles[sides.charAt(i)]);
+ if (v) {
+ w = parseInt(v, 10);
+ if (w) {
+ val += (w >= 0 ? w : -1 * w)
+ }
+ }
+ }
+ return val
+ },createProxy:function(config, renderTo, matchBox) {
+ config = typeof config == "object" ? config : {tag:"div",cls:config};
+ var proxy;
+ if (renderTo) {
+ proxy = Ext.DomHelper.append(renderTo, config, true)
+ } else {
+ proxy = Ext.DomHelper.insertBefore(this.dom, config, true)
+ }
+ if (matchBox) {
+ proxy.setBox(this.getBox())
+ }
+ return proxy
+ },mask:function(msg, msgCls) {
+ if (this.getStyle("position") == "static") {
+ this.setStyle("position", "relative")
+ }
+ if (this._maskMsg) {
+ this._maskMsg.remove()
+ }
+ if (this._mask) {
+ this._mask.remove()
+ }
+ this._mask = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask"}, true);
+ this.addClass("x-masked");
+ this._mask.setDisplayed(true);
+ if (typeof msg == "string") {
+ this._maskMsg
+ = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask-msg",cn:{tag:"div"}}, true);
+ var mm = this._maskMsg;
+ mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls
+ : "ext-el-mask-msg";
+ mm.dom.firstChild.innerHTML = msg;
+ mm.setDisplayed(true);
+ mm.center(this)
+ }
+ if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle("height")
+ == "auto") {
+ this._mask.setSize(this.dom.clientWidth, this.getHeight())
+ }
+ return this._mask
+ },unmask:function() {
+ if (this._mask) {
+ if (this._maskMsg) {
+ this._maskMsg.remove();
+ delete this._maskMsg
+ }
+ this._mask.remove();
+ delete this._mask
+ }
+ this.removeClass("x-masked")
+ },isMasked:function() {
+ return this._mask && this._mask.isVisible()
+ },createShim:function() {
+ var el = document.createElement("iframe");
+ el.frameBorder = "no";
+ el.className = "ext-shim";
+ if (Ext.isIE && Ext.isSecure) {
+ el.src = Ext.SSL_SECURE_URL
+ }
+ var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
+ shim.autoBoxAdjust = false;
+ return shim
+ },remove:function() {
+ Ext.removeNode(this.dom);
+ delete El.cache[this.dom.id]
+ },hover:function(overFn, outFn, scope) {
+ var preOverFn = function(e) {
+ if (!e.within(this, true)) {
+ overFn.apply(scope || this, arguments)
+ }
+ };
+ var preOutFn = function(e) {
+ if (!e.within(this, true)) {
+ outFn.apply(scope || this, arguments)
+ }
+ };
+ this.on("mouseover", preOverFn, this.dom);
+ this.on("mouseout", preOutFn, this.dom);
+ return this
+ },addClassOnOver:function(className, preventFlicker) {
+ this.hover(function() {
+ Ext.fly(this, "_internal").addClass(className)
+ }, function() {
+ Ext.fly(this, "_internal").removeClass(className)
+ });
+ return this
+ },addClassOnFocus:function(className) {
+ this.on("focus", function() {
+ Ext.fly(this, "_internal").addClass(className)
+ }, this.dom);
+ this.on("blur", function() {
+ Ext.fly(this, "_internal").removeClass(className)
+ }, this.dom);
+ return this
+ },addClassOnClick:function(className) {
+ var dom = this.dom;
+ this.on("mousedown", function() {
+ Ext.fly(dom, "_internal").addClass(className);
+ var d = Ext.getDoc();
+ var fn = function() {
+ Ext.fly(dom, "_internal").removeClass(className);
+ d.removeListener("mouseup", fn)
+ };
+ d.on("mouseup", fn)
+ });
+ return this
+ },swallowEvent:function(eventName, preventDefault) {
+ var fn = function(e) {
+ e.stopPropagation();
+ if (preventDefault) {
+ e.preventDefault()
+ }
+ };
+ if (Ext.isArray(eventName)) {
+ for (var i = 0,len = eventName.length; i < len; i++) {
+ this.on(eventName[i], fn)
+ }
+ return this
+ }
+ this.on(eventName, fn);
+ return this
+ },parent:function(selector, returnDom) {
+ return this.matchNode("parentNode", "parentNode", selector, returnDom)
+ },next:function(selector, returnDom) {
+ return this.matchNode("nextSibling", "nextSibling", selector, returnDom)
+ },prev:function(selector, returnDom) {
+ return this.matchNode("previousSibling", "previousSibling", selector, returnDom)
+ },first:function(selector, returnDom) {
+ return this.matchNode("nextSibling", "firstChild", selector, returnDom)
+ },last:function(selector, returnDom) {
+ return this.matchNode("previousSibling", "lastChild", selector, returnDom)
+ },matchNode:function(dir, start, selector, returnDom) {
+ var n = this.dom[start];
+ while (n) {
+ if (n.nodeType == 1 && (!selector
+ || Ext.DomQuery.is(n, selector))) {
+ return !returnDom ? Ext.get(n) : n
+ }
+ n = n[dir]
+ }
+ return null
+ },appendChild:function(el) {
+ el = Ext.get(el);
+ el.appendTo(this);
+ return this
+ },createChild:function(config, insertBefore, returnDom) {
+ config = config || {tag:"div"};
+ if (insertBefore) {
+ return Ext.DomHelper.insertBefore(insertBefore, config, returnDom
+ !== true)
+ }
+ return Ext.DomHelper[!this.dom.firstChild ? "overwrite"
+ : "append"](this.dom, config, returnDom !== true)
+ },appendTo:function(el) {
+ el = Ext.getDom(el);
+ el.appendChild(this.dom);
+ return this
+ },insertBefore:function(el) {
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el);
+ return this
+ },insertAfter:function(el) {
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el.nextSibling);
+ return this
+ },insertFirst:function(el, returnDom) {
+ el = el || {};
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ return this.createChild(el, this.dom.firstChild, returnDom)
+ } else {
+ el = Ext.getDom(el);
+ this.dom.insertBefore(el, this.dom.firstChild);
+ return !returnDom ? Ext.get(el) : el
+ }
+ },insertSibling:function(el, where, returnDom) {
+ var rt;
+ if (Ext.isArray(el)) {
+ for (var i = 0,len = el.length; i < len; i++) {
+ rt = this.insertSibling(el[i], where, returnDom)
+ }
+ return rt
+ }
+ where = where ? where.toLowerCase() : "before";
+ el = el || {};
+ var refNode = where == "before" ? this.dom : this.dom.nextSibling;
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ if (where == "after" && !this.dom.nextSibling) {
+ rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom)
+ } else {
+ rt = Ext.DomHelper[where == "after" ? "insertAfter"
+ : "insertBefore"](this.dom, el, !returnDom)
+ }
+ } else {
+ rt = this.dom.parentNode.insertBefore(Ext.getDom(el), refNode);
+ if (!returnDom) {
+ rt = Ext.get(rt)
+ }
+ }
+ return rt
+ },wrap:function(config, returnDom) {
+ if (!config) {
+ config = {tag:"div"}
+ }
+ var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom);
+ newEl.dom ? newEl.dom.appendChild(this.dom)
+ : newEl.appendChild(this.dom);
+ return newEl
+ },replace:function(el) {
+ el = Ext.get(el);
+ this.insertBefore(el);
+ el.remove();
+ return this
+ },replaceWith:function(el) {
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ el = this.insertSibling(el, "before")
+ } else {
+ el = Ext.getDom(el);
+ this.dom.parentNode.insertBefore(el, this.dom)
+ }
+ El.uncache(this.id);
+ this.dom.parentNode.removeChild(this.dom);
+ this.dom = el;
+ this.id = Ext.id(el);
+ El.cache[this.id] = this;
+ return this
+ },insertHtml:function(where, html, returnEl) {
+ var el = Ext.DomHelper.insertHtml(where, this.dom, html);
+ return returnEl ? Ext.get(el) : el
+ },set:function(o, useSet) {
+ var el = this.dom;
+ useSet = typeof useSet == "undefined" ? (el.setAttribute ? true : false)
+ : useSet;
+ for (var attr in o) {
+ if (attr == "style" || typeof o[attr] == "function") {
+ continue
+ }
+ if (attr == "cls") {
+ el.className = o["cls"]
+ } else {
+ if (o.hasOwnProperty(attr)) {
+ if (useSet) {
+ el.setAttribute(attr, o[attr])
+ } else {
+ el[attr] = o[attr]
+ }
+ }
+ }
+ }
+ if (o.style) {
+ Ext.DomHelper.applyStyles(el, o.style)
+ }
+ return this
+ },addKeyListener:function(key, fn, scope) {
+ var config;
+ if (typeof key != "object" || Ext.isArray(key)) {
+ config = {key:key,fn:fn,scope:scope}
+ } else {
+ config = {key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}
+ }
+ return new Ext.KeyMap(this, config)
+ },addKeyMap:function(config) {
+ return new Ext.KeyMap(this, config)
+ },isScrollable:function() {
+ var dom = this.dom;
+ return dom.scrollHeight > dom.clientHeight || dom.scrollWidth
+ > dom.clientWidth
+ },scrollTo:function(side, value, animate) {
+ var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop";
+ if (!animate || !A) {
+ this.dom[prop] = value
+ } else {
+ var to = prop == "scrollLeft" ? [value,this.dom.scrollTop]
+ : [this.dom.scrollLeft,value];
+ this.anim({scroll:{"to":to}}, this.preanim(arguments, 2), "scroll")
+ }
+ return this
+ },scroll:function(direction, distance, animate) {
+ if (!this.isScrollable()) {
+ return
+ }
+ var el = this.dom;
+ var l = el.scrollLeft,t = el.scrollTop;
+ var w = el.scrollWidth,h = el.scrollHeight;
+ var cw = el.clientWidth,ch = el.clientHeight;
+ direction = direction.toLowerCase();
+ var scrolled = false;
+ var a = this.preanim(arguments, 2);
+ switch (direction) {case"l":case"left":if (w - l > cw) {
+ var v = Math.min(l + distance, w - cw);
+ this.scrollTo("left", v, a);
+ scrolled = true
+ }break;case"r":case"right":if (l > 0) {
+ var v = Math.max(l - distance, 0);
+ this.scrollTo("left", v, a);
+ scrolled = true
+ }break;case"t":case"top":case"up":if (t > 0) {
+ var v = Math.max(t - distance, 0);
+ this.scrollTo("top", v, a);
+ scrolled = true
+ }break;case"b":case"bottom":case"down":if (h - t > ch) {
+ var v = Math.min(t + distance, h - ch);
+ this.scrollTo("top", v, a);
+ scrolled = true
+ }break}
+ return scrolled
+ },translatePoints:function(x, y) {
+ if (typeof x == "object" || Ext.isArray(x)) {
+ y = x[1];
+ x = x[0]
+ }
+ var p = this.getStyle("position");
+ var o = this.getXY();
+ var l = parseInt(this.getStyle("left"), 10);
+ var t = parseInt(this.getStyle("top"), 10);
+ if (isNaN(l)) {
+ l = (p == "relative") ? 0 : this.dom.offsetLeft
+ }
+ if (isNaN(t)) {
+ t = (p == "relative") ? 0 : this.dom.offsetTop
+ }
+ return{left:(x - o[0] + l),top:(y - o[1] + t)}
+ },getScroll:function() {
+ var d = this.dom,doc = document;
+ if (d == doc || d == doc.body) {
+ var l,t;
+ if (Ext.isIE && Ext.isStrict) {
+ l = doc.documentElement.scrollLeft || (doc.body.scrollLeft
+ || 0);
+ t = doc.documentElement.scrollTop || (doc.body.scrollTop || 0)
+ } else {
+ l = window.pageXOffset || (doc.body.scrollLeft || 0);
+ t = window.pageYOffset || (doc.body.scrollTop || 0)
+ }
+ return{left:l,top:t}
+ } else {
+ return{left:d.scrollLeft,top:d.scrollTop}
+ }
+ },getColor:function(attr, defaultValue, prefix) {
+ var v = this.getStyle(attr);
+ if (!v || v == "transparent" || v == "inherit") {
+ return defaultValue
+ }
+ var color = typeof prefix == "undefined" ? "#" : prefix;
+ if (v.substr(0, 4) == "rgb(") {
+ var rvs = v.slice(4, v.length - 1).split(",");
+ for (var i = 0; i < 3; i++) {
+ var h = parseInt(rvs[i]);
+ var s = h.toString(16);
+ if (h < 16) {
+ s = "0" + s
+ }
+ color += s
+ }
+ } else {
+ if (v.substr(0, 1) == "#") {
+ if (v.length == 4) {
+ for (var i = 1; i < 4; i++) {
+ var c = v.charAt(i);
+ color += c + c
+ }
+ } else {
+ if (v.length == 7) {
+ color += v.substr(1)
+ }
+ }
+ }
+ }
+ return(color.length > 5 ? color.toLowerCase() : defaultValue)
+ },boxWrap:function(cls) {
+ cls = cls || "x-box";
+ var el = Ext.get(this.insertHtml("beforeBegin", String.format("<div class=\"{0}\">"
+ + El.boxMarkup + "</div>", cls)));
+ el.child("." + cls + "-mc").dom.appendChild(this.dom);
+ return el
+ },getAttributeNS:Ext.isIE ? function(ns, name) {
+ var d = this.dom;
+ var type = typeof d[ns + ":" + name];
+ if (type != "undefined" && type != "unknown") {
+ return d[ns + ":" + name]
+ }
+ return d[name]
+ } : function(ns, name) {
+ var d = this.dom;
+ return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name)
+ || d.getAttribute(name) || d[name]
+ },getTextWidth:function(text, min, max) {
+ return(Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min
+ || 0, max || 1000000)
+ }};
+ var ep = El.prototype;
+ ep.on = ep.addListener;
+ ep.mon = ep.addListener;
+ ep.getUpdateManager = ep.getUpdater;
+ ep.un = ep.removeListener;
+ ep.autoBoxAdjust = true;
+ El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;
+ El.addUnits = function(v, defaultUnit) {
+ if (v === "" || v == "auto") {
+ return v
+ }
+ if (v === undefined) {
+ return""
+ }
+ if (typeof v == "number" || !El.unitPattern.test(v)) {
+ return v + (defaultUnit || "px")
+ }
+ return v
+ };
+ El.boxMarkup
+ = "<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div><div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div><div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>";
+ El.VISIBILITY = 1;
+ El.DISPLAY = 2;
+ El.borders
+ = {l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};
+ El.paddings
+ = {l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};
+ El.margins
+ = {l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};
+ El.cache = {};
+ var docEl;
+ El.get = function(el) {
+ var ex,elm,id;
+ if (!el) {
+ return null
+ }
+ if (typeof el == "string") {
+ if (!(elm = document.getElementById(el))) {
+ return null
+ }
+ if (ex = El.cache[el]) {
+ ex.dom = elm
+ } else {
+ ex = El.cache[el] = new El(elm)
+ }
+ return ex
+ } else {
+ if (el.tagName) {
+ if (!(id = el.id)) {
+ id = Ext.id(el)
+ }
+ if (ex = El.cache[id]) {
+ ex.dom = el
+ } else {
+ ex = El.cache[id] = new El(el)
+ }
+ return ex
+ } else {
+ if (el instanceof El) {
+ if (el != docEl) {
+ el.dom = document.getElementById(el.id) || el.dom;
+ El.cache[el.id] = el
+ }
+ return el
+ } else {
+ if (el.isComposite) {
+ return el
+ } else {
+ if (Ext.isArray(el)) {
+ return El.select(el)
+ } else {
+ if (el == document) {
+ if (!docEl) {
+ var f = function() {
+ };
+ f.prototype = El.prototype;
+ docEl = new f();
+ docEl.dom = document
+ }
+ return docEl
+ }
+ }
+ }
+ }
+ }
+ }
+ return null
+ };
+ El.uncache = function(el) {
+ for (var i = 0,a = arguments,len = a.length; i < len; i++) {
+ if (a[i]) {
+ delete El.cache[a[i].id || a[i]]
+ }
+ }
+ };
+ El.garbageCollect = function() {
+ if (!Ext.enableGarbageCollector) {
+ clearInterval(El.collectorThread);
+ return
+ }
+ for (var eid in El.cache) {
+ var el = El.cache[eid],d = el.dom;
+ if (!d || !d.parentNode || (!d.offsetParent
+ && !document.getElementById(eid))) {
+ delete El.cache[eid];
+ if (d && Ext.enableListenerCollection) {
+ E.purgeElement(d)
+ }
+ }
+ }
+ };
+ El.collectorThreadId = setInterval(El.garbageCollect, 30000);
+ var flyFn = function() {
+ };
+ flyFn.prototype = El.prototype;
+ var _cls = new flyFn();
+ El.Flyweight = function(dom) {
+ this.dom = dom
+ };
+ El.Flyweight.prototype = _cls;
+ El.Flyweight.prototype.isFlyweight = true;
+ El._flyweights = {};
+ El.fly = function(el, named) {
+ named = named || "_global";
+ el = Ext.getDom(el);
+ if (!el) {
+ return null
+ }
+ if (!El._flyweights[named]) {
+ El._flyweights[named] = new El.Flyweight()
+ }
+ El._flyweights[named].dom = el;
+ return El._flyweights[named]
+ };
+ Ext.get = El.get;
+ Ext.fly = El.fly;
+ var noBoxAdjust = Ext.isStrict ? {select:1} : {input:1,select:1,textarea:1};
+ if (Ext.isIE || Ext.isGecko) {
+ noBoxAdjust["button"] = 1
+ }
+ Ext.EventManager.on(window, "unload", function() {
+ delete El.cache;
+ delete El._flyweights
+ })
+})();
+Ext.enableFx = true;
+Ext.Fx = {slideIn:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "t";
+ this.fixDisplay();
+ var D = this.getFxRestore();
+ var I = this.getBox();
+ this.setSize(I);
+ var F = this.fxWrap(D.pos, C, "hidden");
+ var K = this.dom.style;
+ K.visibility = "visible";
+ K.position = "absolute";
+ var E = function() {
+ B.fxUnwrap(F, D.pos, C);
+ K.width = D.width;
+ K.height = D.height;
+ B.afterFx(C)
+ };
+ var J,L = {to:[I.x,I.y]},H = {to:I.width},G = {to:I.height};
+ switch (A.toLowerCase()) {case"t":F.setSize(I.width, 0);K.left
+ = K.bottom = "0";J
+ = {height:G};break;case"l":F.setSize(0, I.height);K.right
+ = K.top = "0";J
+ = {width:H};break;case"r":F.setSize(0, I.height);F.setX(I.right);K.left
+ = K.top = "0";J
+ = {width:H,points:L};break;case"b":F.setSize(I.width, 0);F.setY(I.bottom);K.left
+ = K.top = "0";J
+ = {height:G,points:L};break;case"tl":F.setSize(0, 0);K.right
+ = K.bottom = "0";J
+ = {width:H,height:G};break;case"bl":F.setSize(0, 0);F.setY(I.y
+ + I.height);K.right = K.top = "0";J
+ = {width:H,height:G,points:L};break;case"br":F.setSize(0, 0);F.setXY([I.right,I.bottom]);K.left
+ = K.top = "0";J
+ = {width:H,height:G,points:L};break;case"tr":F.setSize(0, 0);F.setX(I.x
+ + I.width);K.left = K.bottom = "0";J
+ = {width:H,height:G,points:L};break}
+ this.dom.style.visibility = "visible";
+ F.show();
+ arguments.callee.anim = F.fxanim(J, C, "motion", 0.5, "easeOut", E)
+ });
+ return this
+},slideOut:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "t";
+ var I = this.getFxRestore();
+ var D = this.getBox();
+ this.setSize(D);
+ var G = this.fxWrap(I.pos, C, "visible");
+ var F = this.dom.style;
+ F.visibility = "visible";
+ F.position = "absolute";
+ G.setSize(D);
+ var J = function() {
+ if (C.useDisplay) {
+ B.setDisplayed(false)
+ } else {
+ B.hide()
+ }
+ B.fxUnwrap(G, I.pos, C);
+ F.width = I.width;
+ F.height = I.height;
+ B.afterFx(C)
+ };
+ var E,H = {to:0};
+ switch (A.toLowerCase()) {case"t":F.left = F.bottom = "0";E
+ = {height:H};break;case"l":F.right = F.top = "0";E
+ = {width:H};break;case"r":F.left = F.top = "0";E
+ = {width:H,points:{to:[D.right,D.y]}};break;case"b":F.left
+ = F.top = "0";E
+ = {height:H,points:{to:[D.x,D.bottom]}};break;case"tl":F.right
+ = F.bottom = "0";E = {width:H,height:H};break;case"bl":F.right
+ = F.top = "0";E
+ = {width:H,height:H,points:{to:[D.x,D.bottom]}};break;case"br":F.left
+ = F.top = "0";E = {width:H,height:H,points:{to:[D.x
+ + D.width,D.bottom]}};break;case"tr":F.left = F.bottom = "0";E
+ = {width:H,height:H,points:{to:[D.right,D.y]}};break}
+ arguments.callee.anim = G.fxanim(E, C, "motion", 0.5, "easeOut", J)
+ });
+ return this
+},puff:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.clearOpacity();
+ this.show();
+ var F = this.getFxRestore();
+ var D = this.dom.style;
+ var G = function() {
+ if (B.useDisplay) {
+ A.setDisplayed(false)
+ } else {
+ A.hide()
+ }
+ A.clearOpacity();
+ A.setPositioning(F.pos);
+ D.width = F.width;
+ D.height = F.height;
+ D.fontSize = "";
+ A.afterFx(B)
+ };
+ var E = this.getWidth();
+ var C = this.getHeight();
+ arguments.callee.anim = this.fxanim({width:{to:this.adjustWidth(E
+ * 2)},height:{to:this.adjustHeight(C * 2)},points:{by:[-(E
+ * 0.5),-(C
+ * 0.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}}, B, "motion", 0.5, "easeOut", G)
+ });
+ return this
+},switchOff:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.clearOpacity();
+ this.clip();
+ var D = this.getFxRestore();
+ var C = this.dom.style;
+ var E = function() {
+ if (B.useDisplay) {
+ A.setDisplayed(false)
+ } else {
+ A.hide()
+ }
+ A.clearOpacity();
+ A.setPositioning(D.pos);
+ C.width = D.width;
+ C.height = D.height;
+ A.afterFx(B)
+ };
+ this.fxanim({opacity:{to:0.3}}, null, null, 0.1, null, function() {
+ this.clearOpacity();
+ (function() {
+ this.fxanim({height:{to:1},points:{by:[0,this.getHeight()
+ * 0.5]}}, B, "motion", 0.3, "easeIn", E)
+ }).defer(100, this)
+ })
+ });
+ return this
+},highlight:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "ffff9c";
+ var D = C.attr || "backgroundColor";
+ this.clearOpacity();
+ this.show();
+ var G = this.getColor(D);
+ var H = this.dom.style[D];
+ var F = (C.endColor || G) || "ffffff";
+ var I = function() {
+ B.dom.style[D] = H;
+ B.afterFx(C)
+ };
+ var E = {};
+ E[D] = {from:A,to:F};
+ arguments.callee.anim = this.fxanim(E, C, "color", 1, "easeIn", I)
+ });
+ return this
+},frame:function(A, C, D) {
+ var B = this.getFxEl();
+ D = D || {};
+ B.queueFx(D, function() {
+ A = A || "#C3DAF9";
+ if (A.length == 6) {
+ A = "#" + A
+ }
+ C = C || 1;
+ var G = D.duration || 1;
+ this.show();
+ var E = this.getBox();
+ var F = function() {
+ var H = Ext.getBody().createChild({style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "
+ + A}});
+ var I = Ext.isBorderBox ? 2 : 1;
+ H.animate({top:{from:E.y,to:E.y - 20},left:{from:E.x,to:E.x
+ - 20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:E.height,to:(E.height
+ + (20 * I))},width:{from:E.width,to:(E.width + (20
+ * I))}}, G, function() {
+ H.remove();
+ if (--C > 0) {
+ F()
+ } else {
+ B.afterFx(D)
+ }
+ })
+ };
+ F.call(this)
+ });
+ return this
+},pause:function(C) {
+ var A = this.getFxEl();
+ var B = {};
+ A.queueFx(B, function() {
+ setTimeout(function() {
+ A.afterFx(B)
+ }, C * 1000)
+ });
+ return this
+},fadeIn:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.setOpacity(0);
+ this.fixDisplay();
+ this.dom.style.visibility = "visible";
+ var C = B.endOpacity || 1;
+ arguments.callee.anim
+ = this.fxanim({opacity:{to:C}}, B, null, 0.5, "easeOut", function() {
+ if (C == 1) {
+ this.clearOpacity()
+ }
+ A.afterFx(B)
+ })
+ });
+ return this
+},fadeOut:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ arguments.callee.anim = this.fxanim({opacity:{to:B.endOpacity
+ || 0}}, B, null, 0.5, "easeOut", function() {
+ if (this.visibilityMode == Ext.Element.DISPLAY || B.useDisplay) {
+ this.dom.style.display = "none"
+ } else {
+ this.dom.style.visibility = "hidden"
+ }
+ this.clearOpacity();
+ A.afterFx(B)
+ })
+ });
+ return this
+},scale:function(A, B, C) {
+ this.shift(Ext.apply({}, C, {width:A,height:B}));
+ return this
+},shift:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ var E = {},D = B.width,F = B.height,C = B.x,H = B.y,G = B.opacity;
+ if (D !== undefined) {
+ E.width = {to:this.adjustWidth(D)}
+ }
+ if (F !== undefined) {
+ E.height = {to:this.adjustHeight(F)}
+ }
+ if (C !== undefined || H !== undefined) {
+ E.points = {to:[C !== undefined ? C : this.getX(),H !== undefined
+ ? H : this.getY()]}
+ }
+ if (G !== undefined) {
+ E.opacity = {to:G}
+ }
+ if (B.xy !== undefined) {
+ E.points = {to:B.xy}
+ }
+ arguments.callee.anim
+ = this.fxanim(E, B, "motion", 0.35, "easeOut", function() {
+ A.afterFx(B)
+ })
+ });
+ return this
+},ghost:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "b";
+ var H = this.getFxRestore();
+ var E = this.getWidth(),G = this.getHeight();
+ var F = this.dom.style;
+ var J = function() {
+ if (C.useDisplay) {
+ B.setDisplayed(false)
+ } else {
+ B.hide()
+ }
+ B.clearOpacity();
+ B.setPositioning(H.pos);
+ F.width = H.width;
+ F.height = H.height;
+ B.afterFx(C)
+ };
+ var D = {opacity:{to:0},points:{}},I = D.points;
+ switch (A.toLowerCase()) {case"t":I.by = [0,-G];break;case"l":I.by
+ = [-E,0];break;case"r":I.by = [E,0];break;case"b":I.by
+ = [0,G];break;case"tl":I.by = [-E,-G];break;case"bl":I.by
+ = [-E,G];break;case"br":I.by = [E,G];break;case"tr":I.by
+ = [E,-G];break}
+ arguments.callee.anim = this.fxanim(D, C, "motion", 0.5, "easeOut", J)
+ });
+ return this
+},syncFx:function() {
+ this.fxDefaults = Ext.apply(this.fxDefaults
+ || {}, {block:false,concurrent:true,stopFx:false});
+ return this
+},sequenceFx:function() {
+ this.fxDefaults = Ext.apply(this.fxDefaults
+ || {}, {block:false,concurrent:false,stopFx:false});
+ return this
+},nextFx:function() {
+ var A = this.fxQueue[0];
+ if (A) {
+ A.call(this)
+ }
+},hasActiveFx:function() {
+ return this.fxQueue && this.fxQueue[0]
+},stopFx:function() {
+ if (this.hasActiveFx()) {
+ var A = this.fxQueue[0];
+ if (A && A.anim && A.anim.isAnimated()) {
+ this.fxQueue = [A];
+ A.anim.stop(true)
+ }
+ }
+ return this
+},beforeFx:function(A) {
+ if (this.hasActiveFx() && !A.concurrent) {
+ if (A.stopFx) {
+ this.stopFx();
+ return true
+ }
+ return false
+ }
+ return true
+},hasFxBlock:function() {
+ var A = this.fxQueue;
+ return A && A[0] && A[0].block
+},queueFx:function(C, A) {
+ if (!this.fxQueue) {
+ this.fxQueue = []
+ }
+ if (!this.hasFxBlock()) {
+ Ext.applyIf(C, this.fxDefaults);
+ if (!C.concurrent) {
+ var B = this.beforeFx(C);
+ A.block = C.block;
+ this.fxQueue.push(A);
+ if (B) {
+ this.nextFx()
+ }
+ } else {
+ A.call(this)
+ }
+ }
+ return this
+},fxWrap:function(F, D, C) {
+ var B;
+ if (!D.wrap || !(B = Ext.get(D.wrap))) {
+ var A;
+ if (D.fixPosition) {
+ A = this.getXY()
+ }
+ var E = document.createElement("div");
+ E.style.visibility = C;
+ B = Ext.get(this.dom.parentNode.insertBefore(E, this.dom));
+ B.setPositioning(F);
+ if (B.getStyle("position") == "static") {
+ B.position("relative")
+ }
+ this.clearPositioning("auto");
+ B.clip();
+ B.dom.appendChild(this.dom);
+ if (A) {
+ B.setXY(A)
+ }
+ }
+ return B
+},fxUnwrap:function(A, C, B) {
+ this.clearPositioning();
+ this.setPositioning(C);
+ if (!B.wrap) {
+ A.dom.parentNode.insertBefore(this.dom, A.dom);
+ A.remove()
+ }
+},getFxRestore:function() {
+ var A = this.dom.style;
+ return{pos:this.getPositioning(),width:A.width,height:A.height}
+},afterFx:function(A) {
+ if (A.afterStyle) {
+ this.applyStyles(A.afterStyle)
+ }
+ if (A.afterCls) {
+ this.addClass(A.afterCls)
+ }
+ if (A.remove === true) {
+ this.remove()
+ }
+ Ext.callback(A.callback, A.scope, [this]);
+ if (!A.concurrent) {
+ this.fxQueue.shift();
+ this.nextFx()
+ }
+},getFxEl:function() {
+ return Ext.get(this.dom)
+},fxanim:function(D, E, B, F, C, A) {
+ B = B || "run";
+ E = E || {};
+ var G = Ext.lib.Anim[B](this.dom, D, (E.duration || F) || 0.35, (E.easing
+ || C) || "easeOut", function() {
+ Ext.callback(A, this)
+ }, this);
+ E.anim = G;
+ return G
+}};
+Ext.Fx.resize = Ext.Fx.scale;
+Ext.apply(Ext.Element.prototype, Ext.Fx);
+Ext.CompositeElement = function(A) {
+ this.elements = [];
+ this.addElements(A)
+};
+Ext.CompositeElement.prototype = {isComposite:true,addElements:function(E) {
+ if (!E) {
+ return this
+ }
+ if (typeof E == "string") {
+ E = Ext.Element.selectorFunction(E)
+ }
+ var D = this.elements;
+ var B = D.length - 1;
+ for (var C = 0,A = E.length; C < A; C++) {
+ D[++B] = Ext.get(E[C])
+ }
+ return this
+},fill:function(A) {
+ this.elements = [];
+ this.add(A);
+ return this
+},filter:function(A) {
+ var B = [];
+ this.each(function(C) {
+ if (C.is(A)) {
+ B[B.length] = C.dom
+ }
+ });
+ this.fill(B);
+ return this
+},invoke:function(E, B) {
+ var D = this.elements;
+ for (var C = 0,A = D.length; C < A; C++) {
+ Ext.Element.prototype[E].apply(D[C], B)
+ }
+ return this
+},add:function(A) {
+ if (typeof A == "string") {
+ this.addElements(Ext.Element.selectorFunction(A))
+ } else {
+ if (A.length !== undefined) {
+ this.addElements(A)
+ } else {
+ this.addElements([A])
+ }
+ }
+ return this
+},each:function(E, D) {
+ var C = this.elements;
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (E.call(D || C[B], C[B], this, B) === false) {
+ break
+ }
+ }
+ return this
+},item:function(A) {
+ return this.elements[A] || null
+},first:function() {
+ return this.item(0)
+},last:function() {
+ return this.item(this.elements.length - 1)
+},getCount:function() {
+ return this.elements.length
+},contains:function(A) {
+ return this.indexOf(A) !== -1
+},indexOf:function(A) {
+ return this.elements.indexOf(Ext.get(A))
+},removeElement:function(D, F) {
+ if (Ext.isArray(D)) {
+ for (var C = 0,A = D.length; C < A; C++) {
+ this.removeElement(D[C])
+ }
+ return this
+ }
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1 && this.elements[B]) {
+ if (F) {
+ var E = this.elements[B];
+ if (E.dom) {
+ E.remove()
+ } else {
+ Ext.removeNode(E)
+ }
+ }
+ this.elements.splice(B, 1)
+ }
+ return this
+},replaceElement:function(D, C, A) {
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1) {
+ if (A) {
+ this.elements[B].replaceWith(C)
+ } else {
+ this.elements.splice(B, 1, Ext.get(C))
+ }
+ }
+ return this
+},clear:function() {
+ this.elements = []
+}};
+(function() {
+ Ext.CompositeElement.createCall = function(B, C) {
+ if (!B[C]) {
+ B[C] = function() {
+ return this.invoke(C, arguments)
+ }
+ }
+ };
+ for (var A in Ext.Element.prototype) {
+ if (typeof Ext.Element.prototype[A] == "function") {
+ Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, A)
+ }
+ }
+})();
+Ext.CompositeElementLite = function(A) {
+ Ext.CompositeElementLite.superclass.constructor.call(this, A);
+ this.el = new Ext.Element.Flyweight()
+};
+Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, {addElements:function(
+ E) {
+ if (E) {
+ if (Ext.isArray(E)) {
+ this.elements = this.elements.concat(E)
+ } else {
+ var D = this.elements;
+ var B = D.length - 1;
+ for (var C = 0,A = E.length; C < A; C++) {
+ D[++B] = E[C]
+ }
+ }
+ }
+ return this
+},invoke:function(F, B) {
+ var D = this.elements;
+ var E = this.el;
+ for (var C = 0,A = D.length; C < A; C++) {
+ E.dom = D[C];
+ Ext.Element.prototype[F].apply(E, B)
+ }
+ return this
+},item:function(A) {
+ if (!this.elements[A]) {
+ return null
+ }
+ this.el.dom = this.elements[A];
+ return this.el
+},addListener:function(B, G, F, E) {
+ var D = this.elements;
+ for (var C = 0,A = D.length; C < A; C++) {
+ Ext.EventManager.on(D[C], B, G, F || D[C], E)
+ }
+ return this
+},each:function(F, E) {
+ var C = this.elements;
+ var D = this.el;
+ for (var B = 0,A = C.length; B < A; B++) {
+ D.dom = C[B];
+ if (F.call(E || D, D, this, B) === false) {
+ break
+ }
+ }
+ return this
+},indexOf:function(A) {
+ return this.elements.indexOf(Ext.getDom(A))
+},replaceElement:function(D, C, A) {
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1) {
+ C = Ext.getDom(C);
+ if (A) {
+ var E = this.elements[B];
+ E.parentNode.insertBefore(C, E);
+ Ext.removeNode(E)
+ }
+ this.elements.splice(B, 1, C)
+ }
+ return this
+}});
+Ext.CompositeElementLite.prototype.on
+ = Ext.CompositeElementLite.prototype.addListener;
+if (Ext.DomQuery) {
+ Ext.Element.selectorFunction = Ext.DomQuery.select
+}
+Ext.Element.select = function(A, D, B) {
+ var C;
+ if (typeof A == "string") {
+ C = Ext.Element.selectorFunction(A, B)
+ } else {
+ if (A.length !== undefined) {
+ C = A
+ } else {
+ throw"Invalid selector"
+ }
+ }
+ if (D === true) {
+ return new Ext.CompositeElement(C)
+ } else {
+ return new Ext.CompositeElementLite(C)
+ }
+};
+Ext.select = Ext.Element.select;
+Ext.data.Connection = function(A) {
+ Ext.apply(this, A);
+ this.addEvents("beforerequest", "requestcomplete", "requestexception");
+ Ext.data.Connection.superclass.constructor.call(this)
+};
+Ext.extend(Ext.data.Connection, Ext.util.Observable, {timeout:30000,autoAbort:false,disableCaching:true,request:function(
+ E) {
+ if (this.fireEvent("beforerequest", this, E) !== false) {
+ var C = E.params;
+ if (typeof C == "function") {
+ C = C.call(E.scope || window, E)
+ }
+ if (typeof C == "object") {
+ C = Ext.urlEncode(C)
+ }
+ if (this.extraParams) {
+ var G = Ext.urlEncode(this.extraParams);
+ C = C ? (C + "&" + G) : G
+ }
+ var B = E.url || this.url;
+ if (typeof B == "function") {
+ B = B.call(E.scope || window, E)
+ }
+ if (E.form) {
+ var D = Ext.getDom(E.form);
+ B = B || D.action;
+ var I = D.getAttribute("enctype");
+ if (E.isUpload || (I && I.toLowerCase() == "multipart/form-data")) {
+ return this.doFormUpload(E, C, B)
+ }
+ var H = Ext.lib.Ajax.serializeForm(D);
+ C = C ? (C + "&" + H) : H
+ }
+ var J = E.headers;
+ if (this.defaultHeaders) {
+ J = Ext.apply(J || {}, this.defaultHeaders);
+ if (!E.headers) {
+ E.headers = J
+ }
+ }
+ var F = {success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:E},timeout:E.timeout
+ || this.timeout};
+ var A = E.method || this.method || (C ? "POST" : "GET");
+ if (A == "GET" && (this.disableCaching && E.disableCaching !== false)
+ || E.disableCaching === true) {
+ B += (B.indexOf("?") != -1 ? "&" : "?") + "_dc="
+ + (new Date().getTime())
+ }
+ if (typeof E.autoAbort == "boolean") {
+ if (E.autoAbort) {
+ this.abort()
+ }
+ } else {
+ if (this.autoAbort !== false) {
+ this.abort()
+ }
+ }
+ if ((A == "GET" && C) || E.xmlData || E.jsonData) {
+ B += (B.indexOf("?") != -1 ? "&" : "?") + C;
+ C = ""
+ }
+ this.transId = Ext.lib.Ajax.request(A, B, F, C, E);
+ return this.transId
+ } else {
+ Ext.callback(E.callback, E.scope, [E,null,null]);
+ return null
+ }
+},isLoading:function(A) {
+ if (A) {
+ return Ext.lib.Ajax.isCallInProgress(A)
+ } else {
+ return this.transId ? true : false
+ }
+},abort:function(A) {
+ if (A || this.isLoading()) {
+ Ext.lib.Ajax.abort(A || this.transId)
+ }
+},handleResponse:function(A) {
+ this.transId = false;
+ var B = A.argument.options;
+ A.argument = B ? B.argument : null;
+ this.fireEvent("requestcomplete", this, A, B);
+ Ext.callback(B.success, B.scope, [A,B]);
+ Ext.callback(B.callback, B.scope, [B,true,A])
+},handleFailure:function(A, C) {
+ this.transId = false;
+ var B = A.argument.options;
+ A.argument = B ? B.argument : null;
+ this.fireEvent("requestexception", this, A, B, C);
+ Ext.callback(B.failure, B.scope, [A,B]);
+ Ext.callback(B.callback, B.scope, [B,false,A])
+},doFormUpload:function(E, A, B) {
+ var C = Ext.id();
+ var F = document.createElement("iframe");
+ F.id = C;
+ F.name = C;
+ F.className = "x-hidden";
+ if (Ext.isIE) {
+ F.src = Ext.SSL_SECURE_URL
+ }
+ document.body.appendChild(F);
+ if (Ext.isIE) {
+ document.frames[C].name = C
+ }
+ var D = Ext.getDom(E.form);
+ D.target = C;
+ D.method = "POST";
+ D.enctype = D.encoding = "multipart/form-data";
+ if (B) {
+ D.action = B
+ }
+ var L,J;
+ if (A) {
+ L = [];
+ A = Ext.urlDecode(A, false);
+ for (var H in A) {
+ if (A.hasOwnProperty(H)) {
+ J = document.createElement("input");
+ J.type = "hidden";
+ J.name = H;
+ J.value = A[H];
+ D.appendChild(J);
+ L.push(J)
+ }
+ }
+ }
+ function G() {
+ var M = {responseText:"",responseXML:null};
+ M.argument = E ? E.argument : null;
+ try {
+ var O;
+ if (Ext.isIE) {
+ O = F.contentWindow.document
+ } else {
+ O = (F.contentDocument || window.frames[C].document)
+ }
+ if (O && O.body) {
+ M.responseText = O.body.innerHTML
+ }
+ if (O && O.XMLDocument) {
+ M.responseXML = O.XMLDocument
+ } else {
+ M.responseXML = O
+ }
+ } catch(N) {
+ }
+ Ext.EventManager.removeListener(F, "load", G, this);
+ this.fireEvent("requestcomplete", this, M, E);
+ Ext.callback(E.success, E.scope, [M,E]);
+ Ext.callback(E.callback, E.scope, [E,true,M]);
+ setTimeout(function() {
+ Ext.removeNode(F)
+ }, 100)
+ }
+
+ Ext.EventManager.on(F, "load", G, this);
+ D.submit();
+ if (L) {
+ for (var I = 0,K = L.length; I < K; I++) {
+ Ext.removeNode(L[I])
+ }
+ }
+}});
+Ext.Ajax = new Ext.data.Connection({autoAbort:false,serializeForm:function(A) {
+ return Ext.lib.Ajax.serializeForm(A)
+}});
+Ext.Updater = function(B, A) {
+ B = Ext.get(B);
+ if (!A && B.updateManager) {
+ return B.updateManager
+ }
+ this.el = B;
+ this.defaultUrl = null;
+ this.addEvents("beforeupdate", "update", "failure");
+ var C = Ext.Updater.defaults;
+ this.sslBlankUrl = C.sslBlankUrl;
+ this.disableCaching = C.disableCaching;
+ this.indicatorText = C.indicatorText;
+ this.showLoadIndicator = C.showLoadIndicator;
+ this.timeout = C.timeout;
+ this.loadScripts = C.loadScripts;
+ this.transaction = null;
+ this.autoRefreshProcId = null;
+ this.refreshDelegate = this.refresh.createDelegate(this);
+ this.updateDelegate = this.update.createDelegate(this);
+ this.formUpdateDelegate = this.formUpdate.createDelegate(this);
+ if (!this.renderer) {
+ this.renderer = new Ext.Updater.BasicRenderer()
+ }
+ Ext.Updater.superclass.constructor.call(this)
+};
+Ext.extend(Ext.Updater, Ext.util.Observable, {getEl:function() {
+ return this.el
+},update:function(B, F, H, D) {
+ if (this.fireEvent("beforeupdate", this.el, B, F) !== false) {
+ var G = this.method,A,C;
+ if (typeof B == "object") {
+ A = B;
+ B = A.url;
+ F = F || A.params;
+ H = H || A.callback;
+ D = D || A.discardUrl;
+ C = A.scope;
+ if (typeof A.method != "undefined") {
+ G = A.method
+ }
+ if (typeof A.nocache != "undefined") {
+ this.disableCaching = A.nocache
+ }
+ if (typeof A.text != "undefined") {
+ this.indicatorText = "<div class=\"loading-indicator\">"
+ + A.text + "</div>"
+ }
+ if (typeof A.scripts != "undefined") {
+ this.loadScripts = A.scripts
+ }
+ if (typeof A.timeout != "undefined") {
+ this.timeout = A.timeout
+ }
+ }
+ this.showLoading();
+ if (!D) {
+ this.defaultUrl = B
+ }
+ if (typeof B == "function") {
+ B = B.call(this)
+ }
+ G = G || (F ? "POST" : "GET");
+ if (G == "GET") {
+ B = this.prepareUrl(B)
+ }
+ var E = Ext.apply(A || {}, {url:B,params:(typeof F == "function" && C)
+ ? F.createDelegate(C)
+ : F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout
+ * 1000),argument:{"options":A,"url":B,"form":null,"callback":H,"scope":C
+ || window,"params":F}});
+ this.transaction = Ext.Ajax.request(E)
+ }
+},formUpdate:function(C, A, B, D) {
+ if (this.fireEvent("beforeupdate", this.el, C, A) !== false) {
+ if (typeof A == "function") {
+ A = A.call(this)
+ }
+ C = Ext.getDom(C);
+ this.transaction
+ = Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout
+ * 1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});
+ this.showLoading.defer(1, this)
+ }
+},refresh:function(A) {
+ if (this.defaultUrl == null) {
+ return
+ }
+ this.update(this.defaultUrl, null, A, true)
+},startAutoRefresh:function(B, C, D, E, A) {
+ if (A) {
+ this.update(C || this.defaultUrl, D, E, true)
+ }
+ if (this.autoRefreshProcId) {
+ clearInterval(this.autoRefreshProcId)
+ }
+ this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [C
+ || this.defaultUrl,D,E,true]), B * 1000)
+},stopAutoRefresh:function() {
+ if (this.autoRefreshProcId) {
+ clearInterval(this.autoRefreshProcId);
+ delete this.autoRefreshProcId
+ }
+},isAutoRefreshing:function() {
+ return this.autoRefreshProcId ? true : false
+},showLoading:function() {
+ if (this.showLoadIndicator) {
+ this.el.update(this.indicatorText)
+ }
+},prepareUrl:function(B) {
+ if (this.disableCaching) {
+ var A = "_dc=" + (new Date().getTime());
+ if (B.indexOf("?") !== -1) {
+ B += "&" + A
+ } else {
+ B += "?" + A
+ }
+ }
+ return B
+},processSuccess:function(A) {
+ this.transaction = null;
+ if (A.argument.form && A.argument.reset) {
+ try {
+ A.argument.form.reset()
+ } catch(B) {
+ }
+ }
+ if (this.loadScripts) {
+ this.renderer.render(this.el, A, this, this.updateComplete.createDelegate(this, [A]))
+ } else {
+ this.renderer.render(this.el, A, this);
+ this.updateComplete(A)
+ }
+},updateComplete:function(A) {
+ this.fireEvent("update", this.el, A);
+ if (typeof A.argument.callback == "function") {
+ A.argument.callback.call(A.argument.scope, this.el, true, A, A.argument.options)
+ }
+},processFailure:function(A) {
+ this.transaction = null;
+ this.fireEvent("failure", this.el, A);
+ if (typeof A.argument.callback == "function") {
+ A.argument.callback.call(A.argument.scope, this.el, false, A, A.argument.options)
+ }
+},setRenderer:function(A) {
+ this.renderer = A
+},getRenderer:function() {
+ return this.renderer
+},setDefaultUrl:function(A) {
+ this.defaultUrl = A
+},abort:function() {
+ if (this.transaction) {
+ Ext.Ajax.abort(this.transaction)
+ }
+},isUpdating:function() {
+ if (this.transaction) {
+ return Ext.Ajax.isLoading(this.transaction)
+ }
+ return false
+}});
+Ext.Updater.defaults
+ = {timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL
+ || "javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"<div class=\"loading-indicator\">Loading...</div>"};
+Ext.Updater.updateElement = function(D, C, E, B) {
+ var A = Ext.get(D).getUpdater();
+ Ext.apply(A, B);
+ A.update(C, E, B ? B.callback : null)
+};
+Ext.Updater.update = Ext.Updater.updateElement;
+Ext.Updater.BasicRenderer = function() {
+};
+Ext.Updater.BasicRenderer.prototype = {render:function(C, A, B, D) {
+ C.update(A.responseText, B.loadScripts, D)
+}};
+Ext.UpdateManager = Ext.Updater;
+Date.parseFunctions = {count:0};
+Date.parseRegexes = [];
+Date.formatFunctions = {count:0};
+Date.prototype.dateFormat = function(B) {
+ if (Date.formatFunctions[B] == null) {
+ Date.createNewFormat(B)
+ }
+ var A = Date.formatFunctions[B];
+ return this[A]()
+};
+Date.prototype.format = Date.prototype.dateFormat;
+Date.createNewFormat = function(format) {
+ var funcName = "format" + Date.formatFunctions.count++;
+ Date.formatFunctions[format] = funcName;
+ var code = "Date.prototype." + funcName + " = function(){return ";
+ var special = false;
+ var ch = "";
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true
+ } else {
+ if (special) {
+ special = false;
+ code += "'" + String.escape(ch) + "' + "
+ } else {
+ code += Date.getFormatCode(ch)
+ }
+ }
+ }
+ eval(code.substring(0, code.length - 3) + ";}")
+};
+Date.getFormatCode = function(D) {
+ switch (D) {case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.getShortDayName(this.getDay()) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"N":return"(this.getDay() ? this.getDay() : 7) + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"String.leftPad(this.getWeekOfYear(), 2, '0') + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.getShortMonthName(this.getMonth()) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"o":return"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0))) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() % 12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"u":return"String.leftPad(this.getMilliseconds(), 3, '0') + ";case"O":return"this.getGMTOffset() + ";case"P":return"this.getGMTOffset(true) + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";case"c":for (var F = Date.getFormatCode,G = "Y-m-dTH:i:sP",C = "",B = 0,A = G.length;
+ B < A;
+ ++B) {
+ var E = G.charAt(B);
+ C += E == "T" ? "'T' + " : F(E)
+ }return C;case"U":return"Math.round(this.getTime() / 1000) + ";default:return"'"
+ + String.escape(D) + "' + "}
+};
+Date.parseDate = function(A, C) {
+ if (Date.parseFunctions[C] == null) {
+ Date.createParser(C)
+ }
+ var B = Date.parseFunctions[C];
+ return Date[B](A)
+};
+Date.createParser = function(format) {
+ var funcName = "parse" + Date.parseFunctions.count++;
+ var regexNum = Date.parseRegexes.length;
+ var currentGroup = 1;
+ Date.parseFunctions[format] = funcName;
+ var code = "Date." + funcName + " = function(input){\n"
+ + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, ms = -1, o, z, u, v;\n"
+ + "input = String(input);var d = new Date();\n"
+ + "y = d.getFullYear();\n" + "m = d.getMonth();\n"
+ + "d = d.getDate();\n"
+ + "var results = input.match(Date.parseRegexes[" + regexNum
+ + "]);\n" + "if (results && results.length > 0) {";
+ var regex = "";
+ var special = false;
+ var ch = "";
+ for (var i = 0; i < format.length; ++i) {
+ ch = format.charAt(i);
+ if (!special && ch == "\\") {
+ special = true
+ } else {
+ if (special) {
+ special = false;
+ regex += String.escape(ch)
+ } else {
+ var obj = Date.formatCodeToRegex(ch, currentGroup);
+ currentGroup += obj.g;
+ regex += obj.s;
+ if (obj.g && obj.c) {
+ code += obj.c
+ }
+ }
+ }
+ }
+ code += "if (u)\n" + "{v = new Date(u * 1000);}"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0 && ms >= 0)\n"
+ + "{v = new Date(y, m, d, h, i, s, ms);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n"
+ + "{v = new Date(y, m, d, h, i, s);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n"
+ + "{v = new Date(y, m, d, h, i);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0 && h >= 0)\n"
+ + "{v = new Date(y, m, d, h);}\n"
+ + "else if (y >= 0 && m >= 0 && d > 0)\n"
+ + "{v = new Date(y, m, d);}\n" + "else if (y >= 0 && m >= 0)\n"
+ + "{v = new Date(y, m);}\n" + "else if (y >= 0)\n"
+ + "{v = new Date(y);}\n" + "}return (v && (z || o))?\n"
+ + " (z ? v.add(Date.SECOND, (v.getTimezoneOffset() * 60) + (z*1)) :\n"
+ + " v.add(Date.HOUR, (v.getGMTOffset() / 100) + (o / -100))) : v\n"
+ + ";}";
+ Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$", "i");
+ eval(code)
+};
+Date.formatCodeToRegex = function(G, F) {
+ switch (G) {case"d":return{g:1,c:"d = parseInt(results[" + F
+ + "], 10);\n",s:"(\\d{2})"};case"D":for (var C = [],E = 0; E < 7;
+ C.push(Date.getShortDayName(E)),++E) {
+ }return{g:0,c:null,s:"(?:" + C.join("|")
+ + ")"};case"j":return{g:1,c:"d = parseInt(results[" + F
+ + "], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"
+ + Date.dayNames.join("|")
+ + ")"};case"N":return{g:0,c:null,s:"[1-7]"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"[0-6]"};case"z":return{g:0,c:null,s:"(?:\\d{1,3}"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.getMonthNumber(results["
+ + F + "]), 10);\n",s:"(" + Date.monthNames.join("|")
+ + ")"};case"m":return{g:1,c:"m = parseInt(results[" + F
+ + "], 10) - 1;\n",s:"(\\d{2})"};case"M":for (var C = [],E = 0;
+ E < 12;
+ C.push(Date.getShortMonthName(E)),++E) {
+ }return{g:1,c:"m = parseInt(Date.getMonthNumber(results[" + F
+ + "]), 10);\n",s:"(" + C.join("|")
+ + ")"};case"n":return{g:1,c:"m = parseInt(results[" + F
+ + "], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"(?:\\d{2})"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"o":case"Y":return{g:1,c:"y = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["
+ + F + "], 10);\n"
+ + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["
+ + F + "] == 'am') {\n" + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["
+ + F + "] == 'AM') {\n" + "if (h == 12) { h = 0; }\n"
+ + "} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":return{g:1,c:"h = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{1,2})"};case"h":case"H":return{g:1,c:"h = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{2})"};case"i":return{g:1,c:"i = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{2})"};case"u":return{g:1,c:"ms = parseInt(results["
+ + F
+ + "], 10);\n",s:"(\\d{3})"};case"O":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60);\n","var mn = o.substring(3,5) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{4})"};case"P":return{g:1,c:["o = results[",F,"];\n","var sn = o.substring(0,1);\n","var hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60);\n","var mn = o.substring(4,6) % 60;\n","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))?\n"," (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join(""),s:"([+-]\\d{2}:\\d{2})"};case"T":return{g:0,c:null,s:"[A-Z]{1,4}"};case"Z":return{g:1,c:"z = results["
+ + F + "] * 1;\n"
+ + "z = (-43200 <= z && z <= 50400)? z : null;\n",s:"([+-]?\\d{1,5})"};case"c":var H = Date.formatCodeToRegex,D = [];var A = [H("Y", 1),H("m", 2),H("d", 3),H("h", 4),H("i", 5),H("s", 6),H("P", 7)];for (var E = 0,B = A.length;
+ E < B;
+ ++E) {
+ D.push(A[E].c)
+ }return{g:1,c:D.join(""),s:A[0].s + "-" + A[1].s + "-" + A[2].s + "T"
+ + A[3].s + ":" + A[4].s + ":" + A[5].s
+ + A[6].s};case"U":return{g:1,c:"u = parseInt(results[" + F
+ + "], 10);\n",s:"(-?\\d+)"};default:return{g:0,c:null,s:Ext.escapeRe(G)}}
+};
+Date.prototype.getTimezone = function() {
+ return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/, "$1$2").replace(/[^A-Z]/g, "")
+};
+Date.prototype.getGMTOffset = function(A) {
+ return(this.getTimezoneOffset() > 0 ? "-" : "+")
+ + String.leftPad(Math.abs(Math.floor(this.getTimezoneOffset()
+ / 60)), 2, "0") + (A ? ":" : "")
+ + String.leftPad(this.getTimezoneOffset() % 60, 2, "0")
+};
+Date.prototype.getDayOfYear = function() {
+ var A = 0;
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ for (var B = 0; B < this.getMonth(); ++B) {
+ A += Date.daysInMonth[B]
+ }
+ return A + this.getDate() - 1
+};
+Date.prototype.getWeekOfYear = function() {
+ var B = 86400000;
+ var C = 7 * B;
+ var D = Date.UTC(this.getFullYear(), this.getMonth(), this.getDate() + 3)
+ / B;
+ var A = Math.floor(D / 7);
+ var E = new Date(A * C).getUTCFullYear();
+ return A - Math.floor(Date.UTC(E, 0, 7) / C) + 1
+};
+Date.prototype.isLeapYear = function() {
+ var A = this.getFullYear();
+ return !!((A & 3) == 0 && (A % 100 || (A % 400 == 0 && A)))
+};
+Date.prototype.getFirstDayOfMonth = function() {
+ var A = (this.getDay() - (this.getDate() - 1)) % 7;
+ return(A < 0) ? (A + 7) : A
+};
+Date.prototype.getLastDayOfMonth = function() {
+ var A = (this.getDay() + (Date.daysInMonth[this.getMonth()]
+ - this.getDate())) % 7;
+ return(A < 0) ? (A + 7) : A
+};
+Date.prototype.getFirstDateOfMonth = function() {
+ return new Date(this.getFullYear(), this.getMonth(), 1)
+};
+Date.prototype.getLastDateOfMonth = function() {
+ return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth())
+};
+Date.prototype.getDaysInMonth = function() {
+ Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28;
+ return Date.daysInMonth[this.getMonth()]
+};
+Date.prototype.getSuffix = function() {
+ switch (this.getDate()) {case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th"}
+};
+Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
+Date.monthNames
+ = ["January","February","March","April","May","June","July","August","September","October","November","December"];
+Date.getShortMonthName = function(A) {
+ return Date.monthNames[A].substring(0, 3)
+};
+Date.dayNames
+ = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
+Date.getShortDayName = function(A) {
+ return Date.dayNames[A].substring(0, 3)
+};
+Date.y2kYear = 50;
+Date.monthNumbers
+ = {Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};
+Date.getMonthNumber = function(A) {
+ return Date.monthNumbers[A.substring(0, 1).toUpperCase()
+ + A.substring(1, 3).toLowerCase()]
+};
+Date.prototype.clone = function() {
+ return new Date(this.getTime())
+};
+Date.prototype.clearTime = function(A) {
+ if (A) {
+ return this.clone().clearTime()
+ }
+ this.setHours(0);
+ this.setMinutes(0);
+ this.setSeconds(0);
+ this.setMilliseconds(0);
+ return this
+};
+if (Ext.isSafari) {
+ Date.brokenSetMonth = Date.prototype.setMonth;
+ Date.prototype.setMonth = function(A) {
+ if (A <= -1) {
+ var D = Math.ceil(-A);
+ var C = Math.ceil(D / 12);
+ var B = (D % 12) ? 12 - D % 12 : 0;
+ this.setFullYear(this.getFullYear() - C);
+ return Date.brokenSetMonth.call(this, B)
+ } else {
+ return Date.brokenSetMonth.apply(this, arguments)
+ }
+ }
+}
+Date.MILLI = "ms";
+Date.SECOND = "s";
+Date.MINUTE = "mi";
+Date.HOUR = "h";
+Date.DAY = "d";
+Date.MONTH = "mo";
+Date.YEAR = "y";
+Date.prototype.add = function(B, C) {
+ var D = this.clone();
+ if (!B || C === 0) {
+ return D
+ }
+ switch (B.toLowerCase()) {case Date.MILLI:D.setMilliseconds(this.getMilliseconds()
+ + C);break;case Date.SECOND:D.setSeconds(this.getSeconds()
+ + C);break;case Date.MINUTE:D.setMinutes(this.getMinutes()
+ + C);break;case Date.HOUR:D.setHours(this.getHours()
+ + C);break;case Date.DAY:D.setDate(this.getDate()
+ + C);break;case Date.MONTH:var A = this.getDate();if (A > 28) {
+ A = Math.min(A, this.getFirstDateOfMonth().add("mo", C).getLastDateOfMonth().getDate())
+ }D.setDate(A);D.setMonth(this.getMonth()
+ + C);break;case Date.YEAR:D.setFullYear(this.getFullYear()
+ + C);break}
+ return D
+};
+Date.prototype.between = function(C, A) {
+ var B = this.getTime();
+ return C.getTime() <= B && B <= A.getTime()
+};
+Ext.util.DelayedTask = function(E, D, A) {
+ var G = null,F,B;
+ var C = function() {
+ var H = new Date().getTime();
+ if (H - B >= F) {
+ clearInterval(G);
+ G = null;
+ E.apply(D, A || [])
+ }
+ };
+ this.delay = function(I, K, J, H) {
+ if (G && I != F) {
+ this.cancel()
+ }
+ F = I;
+ B = new Date().getTime();
+ E = K || E;
+ D = J || D;
+ A = H || A;
+ if (!G) {
+ G = setInterval(C, F)
+ }
+ };
+ this.cancel = function() {
+ if (G) {
+ clearInterval(G);
+ G = null
+ }
+ }
+};
+Ext.util.TaskRunner = function(E) {
+ E = E || 10;
+ var F = [],A = [];
+ var B = 0;
+ var G = false;
+ var D = function() {
+ G = false;
+ clearInterval(B);
+ B = 0
+ };
+ var H = function() {
+ if (!G) {
+ G = true;
+ B = setInterval(I, E)
+ }
+ };
+ var C = function(J) {
+ A.push(J);
+ if (J.onStop) {
+ J.onStop.apply(J.scope || J)
+ }
+ };
+ var I = function() {
+ if (A.length > 0) {
+ for (var O = 0,K = A.length; O < K; O++) {
+ F.remove(A[O])
+ }
+ A = [];
+ if (F.length < 1) {
+ D();
+ return
+ }
+ }
+ var M = new Date().getTime();
+ for (var O = 0,K = F.length; O < K; ++O) {
+ var N = F[O];
+ var J = M - N.taskRunTime;
+ if (N.interval <= J) {
+ var L = N.run.apply(N.scope || N, N.args || [++N.taskRunCount]);
+ N.taskRunTime = M;
+ if (L === false || N.taskRunCount === N.repeat) {
+ C(N);
+ return
+ }
+ }
+ if (N.duration && N.duration <= (M - N.taskStartTime)) {
+ C(N)
+ }
+ }
+ };
+ this.start = function(J) {
+ F.push(J);
+ J.taskStartTime = new Date().getTime();
+ J.taskRunTime = 0;
+ J.taskRunCount = 0;
+ H();
+ return J
+ };
+ this.stop = function(J) {
+ C(J);
+ return J
+ };
+ this.stopAll = function() {
+ D();
+ for (var K = 0,J = F.length; K < J; K++) {
+ if (F[K].onStop) {
+ F[K].onStop()
+ }
+ }
+ F = [];
+ A = []
+ }
+};
+Ext.TaskMgr = new Ext.util.TaskRunner();
+Ext.util.MixedCollection = function(B, A) {
+ this.items = [];
+ this.map = {};
+ this.keys = [];
+ this.length = 0;
+ this.addEvents("clear", "add", "replace", "remove", "sort");
+ this.allowFunctions = B === true;
+ if (A) {
+ this.getKey = A
+ }
+ Ext.util.MixedCollection.superclass.constructor.call(this)
+};
+Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, {allowFunctions:false,add:function(
+ B, C) {
+ if (arguments.length == 1) {
+ C = arguments[0];
+ B = this.getKey(C)
+ }
+ if (typeof B == "undefined" || B === null) {
+ this.length++;
+ this.items.push(C);
+ this.keys.push(null)
+ } else {
+ var A = this.map[B];
+ if (A) {
+ return this.replace(B, C)
+ }
+ this.length++;
+ this.items.push(C);
+ this.map[B] = C;
+ this.keys.push(B)
+ }
+ this.fireEvent("add", this.length - 1, C, B);
+ return C
+},getKey:function(A) {
+ return A.id
+},replace:function(C, D) {
+ if (arguments.length == 1) {
+ D = arguments[0];
+ C = this.getKey(D)
+ }
+ var A = this.item(C);
+ if (typeof C == "undefined" || C === null || typeof A == "undefined") {
+ return this.add(C, D)
+ }
+ var B = this.indexOfKey(C);
+ this.items[B] = D;
+ this.map[C] = D;
+ this.fireEvent("replace", C, A, D);
+ return D
+},addAll:function(E) {
+ if (arguments.length > 1 || Ext.isArray(E)) {
+ var B = arguments.length > 1 ? arguments : E;
+ for (var D = 0,A = B.length; D < A; D++) {
+ this.add(B[D])
+ }
+ } else {
+ for (var C in E) {
+ if (this.allowFunctions || typeof E[C] != "function") {
+ this.add(C, E[C])
+ }
+ }
+ }
+},each:function(E, D) {
+ var B = [].concat(this.items);
+ for (var C = 0,A = B.length; C < A; C++) {
+ if (E.call(D || B[C], B[C], C, A) === false) {
+ break
+ }
+ }
+},eachKey:function(D, C) {
+ for (var B = 0,A = this.keys.length; B < A; B++) {
+ D.call(C || window, this.keys[B], this.items[B], B, A)
+ }
+},find:function(D, C) {
+ for (var B = 0,A = this.items.length; B < A; B++) {
+ if (D.call(C || window, this.items[B], this.keys[B])) {
+ return this.items[B]
+ }
+ }
+ return null
+},insert:function(A, B, C) {
+ if (arguments.length == 2) {
+ C = arguments[1];
+ B = this.getKey(C)
+ }
+ if (A >= this.length) {
+ return this.add(B, C)
+ }
+ this.length++;
+ this.items.splice(A, 0, C);
+ if (typeof B != "undefined" && B != null) {
+ this.map[B] = C
+ }
+ this.keys.splice(A, 0, B);
+ this.fireEvent("add", A, C, B);
+ return C
+},remove:function(A) {
+ return this.removeAt(this.indexOf(A))
+},removeAt:function(A) {
+ if (A < this.length && A >= 0) {
+ this.length--;
+ var C = this.items[A];
+ this.items.splice(A, 1);
+ var B = this.keys[A];
+ if (typeof B != "undefined") {
+ delete this.map[B]
+ }
+ this.keys.splice(A, 1);
+ this.fireEvent("remove", C, B);
+ return C
+ }
+ return false
+},removeKey:function(A) {
+ return this.removeAt(this.indexOfKey(A))
+},getCount:function() {
+ return this.length
+},indexOf:function(A) {
+ return this.items.indexOf(A)
+},indexOfKey:function(A) {
+ return this.keys.indexOf(A)
+},item:function(A) {
+ var B = typeof this.map[A] != "undefined" ? this.map[A] : this.items[A];
+ return typeof B != "function" || this.allowFunctions ? B : null
+},itemAt:function(A) {
+ return this.items[A]
+},key:function(A) {
+ return this.map[A]
+},contains:function(A) {
+ return this.indexOf(A) != -1
+},containsKey:function(A) {
+ return typeof this.map[A] != "undefined"
+},clear:function() {
+ this.length = 0;
+ this.items = [];
+ this.keys = [];
+ this.map = {};
+ this.fireEvent("clear")
+},first:function() {
+ return this.items[0]
+},last:function() {
+ return this.items[this.length - 1]
+},_sort:function(I, A, H) {
+ var C = String(A).toUpperCase() == "DESC" ? -1 : 1;
+ H = H || function(K, J) {
+ return K - J
+ };
+ var G = [],B = this.keys,F = this.items;
+ for (var D = 0,E = F.length; D < E; D++) {
+ G[G.length] = {key:B[D],value:F[D],index:D}
+ }
+ G.sort(function(K, J) {
+ var L = H(K[I], J[I]) * C;
+ if (L == 0) {
+ L = (K.index < J.index ? -1 : 1)
+ }
+ return L
+ });
+ for (var D = 0,E = G.length; D < E; D++) {
+ F[D] = G[D].value;
+ B[D] = G[D].key
+ }
+ this.fireEvent("sort", this)
+},sort:function(A, B) {
+ this._sort("value", A, B)
+},keySort:function(A, B) {
+ this._sort("key", A, B || function(D, C) {
+ return String(D).toUpperCase() - String(C).toUpperCase()
+ })
+},getRange:function(E, A) {
+ var B = this.items;
+ if (B.length < 1) {
+ return[]
+ }
+ E = E || 0;
+ A = Math.min(typeof A == "undefined" ? this.length - 1 : A, this.length
+ - 1);
+ var D = [];
+ if (E <= A) {
+ for (var C = E; C <= A; C++) {
+ D[D.length] = B[C]
+ }
+ } else {
+ for (var C = E; C >= A; C--) {
+ D[D.length] = B[C]
+ }
+ }
+ return D
+},filter:function(C, B, D, A) {
+ if (Ext.isEmpty(B, false)) {
+ return this.clone()
+ }
+ B = this.createValueMatcher(B, D, A);
+ return this.filterBy(function(E) {
+ return E && B.test(E[C])
+ })
+},filterBy:function(F, E) {
+ var G = new Ext.util.MixedCollection();
+ G.getKey = this.getKey;
+ var B = this.keys,D = this.items;
+ for (var C = 0,A = D.length; C < A; C++) {
+ if (F.call(E || this, D[C], B[C])) {
+ G.add(B[C], D[C])
+ }
+ }
+ return G
+},findIndex:function(C, B, E, D, A) {
+ if (Ext.isEmpty(B, false)) {
+ return -1
+ }
+ B = this.createValueMatcher(B, D, A);
+ return this.findIndexBy(function(F) {
+ return F && B.test(F[C])
+ }, null, E)
+},findIndexBy:function(F, E, G) {
+ var B = this.keys,D = this.items;
+ for (var C = (G || 0),A = D.length; C < A; C++) {
+ if (F.call(E || this, D[C], B[C])) {
+ return C
+ }
+ }
+ if (typeof G == "number" && G > 0) {
+ for (var C = 0; C < G; C++) {
+ if (F.call(E || this, D[C], B[C])) {
+ return C
+ }
+ }
+ }
+ return -1
+},createValueMatcher:function(B, C, A) {
+ if (!B.exec) {
+ B = String(B);
+ B = new RegExp((C === true ? "" : "^") + Ext.escapeRe(B), A ? "" : "i")
+ }
+ return B
+},clone:function() {
+ var E = new Ext.util.MixedCollection();
+ var B = this.keys,D = this.items;
+ for (var C = 0,A = D.length; C < A; C++) {
+ E.add(B[C], D[C])
+ }
+ E.getKey = this.getKey;
+ return E
+}});
+Ext.util.MixedCollection.prototype.get
+ = Ext.util.MixedCollection.prototype.item;
+Ext.util.JSON = new (function() {
+ var useHasOwn = {}.hasOwnProperty ? true : false;
+ var pad = function(n) {
+ return n < 10 ? "0" + n : n
+ };
+ var m = {"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\"":"\\\"","\\":"\\\\"};
+ var encodeString = function(s) {
+ if (/["\\\x00-\x1f]/.test(s)) {
+ return"\"" + s.replace(/([\x00-\x1f\\"])/g, function(a, b) {
+ var c = m[b];
+ if (c) {
+ return c
+ }
+ c = b.charCodeAt();
+ return"\\u00" + Math.floor(c / 16).toString(16) + (c
+ % 16).toString(16)
+ }) + "\""
+ }
+ return"\"" + s + "\""
+ };
+ var encodeArray = function(o) {
+ var a = ["["],b,i,l = o.length,v;
+ for (i = 0; i < l; i += 1) {
+ v = o[i];
+ switch (typeof v) {case"undefined":case"function":case"unknown":break;default:if (b) {
+ a.push(",")
+ }a.push(v === null ? "null" : Ext.util.JSON.encode(v));b = true}
+ }
+ a.push("]");
+ return a.join("")
+ };
+ var encodeDate = function(o) {
+ return"\"" + o.getFullYear() + "-" + pad(o.getMonth() + 1) + "-"
+ + pad(o.getDate()) + "T" + pad(o.getHours()) + ":"
+ + pad(o.getMinutes()) + ":" + pad(o.getSeconds()) + "\""
+ };
+ this.encode = function(o) {
+ if (typeof o == "undefined" || o === null) {
+ return"null"
+ } else {
+ if (Ext.isArray(o)) {
+ return encodeArray(o)
+ } else {
+ if (Ext.isDate(o)) {
+ return encodeDate(o)
+ } else {
+ if (typeof o == "string") {
+ return encodeString(o)
+ } else {
+ if (typeof o == "number") {
+ return isFinite(o) ? String(o) : "null"
+ } else {
+ if (typeof o == "boolean") {
+ return String(o)
+ } else {
+ var a = ["{"],b,i,v;
+ for (i in o) {
+ if (!useHasOwn || o.hasOwnProperty(i)) {
+ v = o[i];
+ switch (typeof v) {case"undefined":case"function":case"unknown":break;default:if (b) {
+ a.push(",")
+ }a.push(this.encode(i), ":", v === null
+ ? "null" : this.encode(v));b
+ = true}
+ }
+ }
+ a.push("}");
+ return a.join("")
+ }
+ }
+ }
+ }
+ }
+ }
+ };
+ this.decode = function(json) {
+ return eval("(" + json + ")")
+ }
+})();
+Ext.encode = Ext.util.JSON.encode;
+Ext.decode = Ext.util.JSON.decode;
+Ext.util.Format = function() {
+ var trimRe = /^\s+|\s+$/g;
+ return{ellipsis:function(value, len) {
+ if (value && value.length > len) {
+ return value.substr(0, len - 3) + "..."
+ }
+ return value
+ },undef:function(value) {
+ return value !== undefined ? value : ""
+ },defaultValue:function(value, defaultValue) {
+ return value !== undefined && value !== "" ? value : defaultValue
+ },htmlEncode:function(value) {
+ return !value ? value
+ : String(value).replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;")
+ },htmlDecode:function(value) {
+ return !value ? value
+ : String(value).replace(/&amp;/g, "&").replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&quot;/g, "\"")
+ },trim:function(value) {
+ return String(value).replace(trimRe, "")
+ },substr:function(value, start, length) {
+ return String(value).substr(start, length)
+ },lowercase:function(value) {
+ return String(value).toLowerCase()
+ },uppercase:function(value) {
+ return String(value).toUpperCase()
+ },capitalize:function(value) {
+ return !value ? value : value.charAt(0).toUpperCase()
+ + value.substr(1).toLowerCase()
+ },call:function(value, fn) {
+ if (arguments.length > 2) {
+ var args = Array.prototype.slice.call(arguments, 2);
+ args.unshift(value);
+ return eval(fn).apply(window, args)
+ } else {
+ return eval(fn).call(window, value)
+ }
+ },usMoney:function(v) {
+ v = (Math.round((v - 0) * 100)) / 100;
+ v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v * 10))
+ ? v + "0" : v);
+ v = String(v);
+ var ps = v.split(".");
+ var whole = ps[0];
+ var sub = ps[1] ? "." + ps[1] : ".00";
+ var r = /(\d+)(\d{3})/;
+ while (r.test(whole)) {
+ whole = whole.replace(r, "$1" + "," + "$2")
+ }
+ v = whole + sub;
+ if (v.charAt(0) == "-") {
+ return"-$" + v.substr(1)
+ }
+ return"$" + v
+ },date:function(v, format) {
+ if (!v) {
+ return""
+ }
+ if (!Ext.isDate(v)) {
+ v = new Date(Date.parse(v))
+ }
+ return v.dateFormat(format || "m/d/Y")
+ },dateRenderer:function(format) {
+ return function(v) {
+ return Ext.util.Format.date(v, format)
+ }
+ },stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v) {
+ return !v ? v : String(v).replace(this.stripTagsRE, "")
+ },stripScriptsRe:/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,stripScripts:function(
+ v) {
+ return !v ? v : String(v).replace(this.stripScriptsRe, "")
+ },fileSize:function(size) {
+ if (size < 1024) {
+ return size + " bytes"
+ } else {
+ if (size < 1048576) {
+ return(Math.round(((size * 10) / 1024)) / 10) + " KB"
+ } else {
+ return(Math.round(((size * 10) / 1048576)) / 10) + " MB"
+ }
+ }
+ },math:function() {
+ var fns = {};
+ return function(v, a) {
+ if (!fns[a]) {
+ fns[a] = new Function("v", "return v " + a + ";")
+ }
+ return fns[a](v)
+ }
+ }()}
+}();
+Ext.XTemplate = function() {
+ Ext.XTemplate.superclass.constructor.apply(this, arguments);
+ var P = this.html;
+ P = ["<tpl>",P,"</tpl>"].join("");
+ var O = /<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/;
+ var N = /^<tpl\b[^>]*?for="(.*?)"/;
+ var L = /^<tpl\b[^>]*?if="(.*?)"/;
+ var J = /^<tpl\b[^>]*?exec="(.*?)"/;
+ var C,B = 0;
+ var G = [];
+ while (C = P.match(O)) {
+ var M = C[0].match(N);
+ var K = C[0].match(L);
+ var I = C[0].match(J);
+ var E = null,H = null,D = null;
+ var A = M && M[1] ? M[1] : "";
+ if (K) {
+ E = K && K[1] ? K[1] : null;
+ if (E) {
+ H = new Function("values", "parent", "xindex", "xcount", "with(values){ return "
+ + (Ext.util.Format.htmlDecode(E)) + "; }")
+ }
+ }
+ if (I) {
+ E = I && I[1] ? I[1] : null;
+ if (E) {
+ D = new Function("values", "parent", "xindex", "xcount", "with(values){ "
+ + (Ext.util.Format.htmlDecode(E)) + "; }")
+ }
+ }
+ if (A) {
+ switch (A) {case".":A
+ = new Function("values", "parent", "with(values){ return values; }");break;case"..":A
+ = new Function("values", "parent", "with(values){ return parent; }");break;default:A
+ = new Function("values", "parent", "with(values){ return "
+ + A + "; }")}
+ }
+ G.push({id:B,target:A,exec:D,test:H,body:C[1] || ""});
+ P = P.replace(C[0], "{xtpl" + B + "}");
+ ++B
+ }
+ for (var F = G.length - 1; F >= 0; --F) {
+ this.compileTpl(G[F])
+ }
+ this.master = G[G.length - 1];
+ this.tpls = G
+};
+Ext.extend(Ext.XTemplate, Ext.Template, {re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,applySubTemplate:function(
+ A, H, G, D, C) {
+ var J = this.tpls[A];
+ if (J.test && !J.test.call(this, H, G, D, C)) {
+ return""
+ }
+ if (J.exec && J.exec.call(this, H, G, D, C)) {
+ return""
+ }
+ var I = J.target ? J.target.call(this, H, G) : H;
+ G = J.target ? H : G;
+ if (J.target && Ext.isArray(I)) {
+ var B = [];
+ for (var E = 0,F = I.length; E < F; E++) {
+ B[B.length] = J.compiled.call(this, I[E], G, E + 1, F)
+ }
+ return B.join("")
+ }
+ return J.compiled.call(this, I, G, D, C)
+},compileTpl:function(tpl) {
+ var fm = Ext.util.Format;
+ var useF = this.disableFormats !== true;
+ var sep = Ext.isGecko ? "+" : ",";
+ var fn = function(m, name, format, args, math) {
+ if (name.substr(0, 4) == "xtpl") {
+ return"'" + sep + "this.applySubTemplate(" + name.substr(4)
+ + ", values, parent, xindex, xcount)" + sep + "'"
+ }
+ var v;
+ if (name === ".") {
+ v = "values"
+ } else {
+ if (name === "#") {
+ v = "xindex"
+ } else {
+ if (name.indexOf(".") != -1) {
+ v = name
+ } else {
+ v = "values['" + name + "']"
+ }
+ }
+ }
+ if (math) {
+ v = "(" + v + math + ")"
+ }
+ 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 = "(" + v + " === undefined ? '' : "
+ }
+ return"'" + sep + format + v + args + ")" + sep + "'"
+ };
+ var codeFn = function(m, code) {
+ return"'" + sep + "(" + code + ")" + sep + "'"
+ };
+ var body;
+ if (Ext.isGecko) {
+ body = "tpl.compiled = function(values, parent, xindex, xcount){ return '"
+ + tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn)
+ + "';};"
+ } else {
+ body = ["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];
+ body.push(tpl.body.replace(/(\r\n|\n)/g, "\\n").replace(/'/g, "\\'").replace(this.re, fn).replace(this.codeRe, codeFn));
+ body.push("'].join('');};");
+ body = body.join("")
+ }
+ eval(body);
+ return this
+},apply:function(A) {
+ return this.master.compiled.call(this, A, {}, 1, 1)
+},applyTemplate:function(A) {
+ return this.master.compiled.call(this, A, {}, 1, 1)
+},compile:function() {
+ return this
+}});
+Ext.XTemplate.from = function(A) {
+ A = Ext.getDom(A);
+ return new Ext.XTemplate(A.value || A.innerHTML)
+};
+Ext.util.CSS = function() {
+ var D = null;
+ var C = document;
+ var B = /(-[a-z])/gi;
+ var A = function(E, F) {
+ return F.charAt(1).toUpperCase()
+ };
+ return{createStyleSheet:function(G, J) {
+ var F;
+ var E = C.getElementsByTagName("head")[0];
+ var I = C.createElement("style");
+ I.setAttribute("type", "text/css");
+ if (J) {
+ I.setAttribute("id", J)
+ }
+ if (Ext.isIE) {
+ E.appendChild(I);
+ F = I.styleSheet;
+ F.cssText = G
+ } else {
+ try {
+ I.appendChild(C.createTextNode(G))
+ } catch(H) {
+ I.cssText = G
+ }
+ E.appendChild(I);
+ F = I.styleSheet ? I.styleSheet : (I.sheet
+ || C.styleSheets[C.styleSheets.length - 1])
+ }
+ this.cacheStyleSheet(F);
+ return F
+ },removeStyleSheet:function(F) {
+ var E = C.getElementById(F);
+ if (E) {
+ E.parentNode.removeChild(E)
+ }
+ },swapStyleSheet:function(G, E) {
+ this.removeStyleSheet(G);
+ var F = C.createElement("link");
+ F.setAttribute("rel", "stylesheet");
+ F.setAttribute("type", "text/css");
+ F.setAttribute("id", G);
+ F.setAttribute("href", E);
+ C.getElementsByTagName("head")[0].appendChild(F)
+ },refreshCache:function() {
+ return this.getRules(true)
+ },cacheStyleSheet:function(F) {
+ if (!D) {
+ D = {}
+ }
+ try {
+ var H = F.cssRules || F.rules;
+ for (var E = H.length - 1; E >= 0; --E) {
+ D[H[E].selectorText] = H[E]
+ }
+ } catch(G) {
+ }
+ },getRules:function(F) {
+ if (D == null || F) {
+ D = {};
+ var H = C.styleSheets;
+ for (var G = 0,E = H.length; G < E; G++) {
+ try {
+ this.cacheStyleSheet(H[G])
+ } catch(I) {
+ }
+ }
+ }
+ return D
+ },getRule:function(E, G) {
+ var F = this.getRules(G);
+ if (!Ext.isArray(E)) {
+ return F[E]
+ }
+ for (var H = 0; H < E.length; H++) {
+ if (F[E[H]]) {
+ return F[E[H]]
+ }
+ }
+ return null
+ },updateRule:function(E, H, G) {
+ if (!Ext.isArray(E)) {
+ var I = this.getRule(E);
+ if (I) {
+ I.style[H.replace(B, A)] = G;
+ return true
+ }
+ } else {
+ for (var F = 0; F < E.length; F++) {
+ if (this.updateRule(E[F], H, G)) {
+ return true
+ }
+ }
+ }
+ return false
+ }}
+}();
+Ext.util.ClickRepeater = function(B, A) {
+ this.el = Ext.get(B);
+ this.el.unselectable();
+ Ext.apply(this, A);
+ this.addEvents("mousedown", "click", "mouseup");
+ this.el.on("mousedown", this.handleMouseDown, this);
+ if (this.preventDefault || this.stopDefault) {
+ this.el.on("click", function(C) {
+ if (this.preventDefault) {
+ C.preventDefault()
+ }
+ if (this.stopDefault) {
+ C.stopEvent()
+ }
+ }, this)
+ }
+ if (this.handler) {
+ this.on("click", this.handler, this.scope || this)
+ }
+ Ext.util.ClickRepeater.superclass.constructor.call(this)
+};
+Ext.extend(Ext.util.ClickRepeater, Ext.util.Observable, {interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,handleMouseDown:function() {
+ clearTimeout(this.timer);
+ this.el.blur();
+ if (this.pressClass) {
+ this.el.addClass(this.pressClass)
+ }
+ this.mousedownTime = new Date();
+ Ext.getDoc().on("mouseup", this.handleMouseUp, this);
+ this.el.on("mouseout", this.handleMouseOut, this);
+ this.fireEvent("mousedown", this);
+ this.fireEvent("click", this);
+ if (this.accelerate) {
+ this.delay = 400
+ }
+ this.timer = this.click.defer(this.delay || this.interval, this)
+},click:function() {
+ this.fireEvent("click", this);
+ this.timer = this.click.defer(this.accelerate
+ ? this.easeOutExpo(this.mousedownTime.getElapsed(), 400, -390, 12000)
+ : this.interval, this)
+},easeOutExpo:function(B, A, D, C) {
+ return(B == C) ? A + D : D * (-Math.pow(2, -10 * B / C) + 1) + A
+},handleMouseOut:function() {
+ clearTimeout(this.timer);
+ if (this.pressClass) {
+ this.el.removeClass(this.pressClass)
+ }
+ this.el.on("mouseover", this.handleMouseReturn, this)
+},handleMouseReturn:function() {
+ this.el.un("mouseover", this.handleMouseReturn);
+ if (this.pressClass) {
+ this.el.addClass(this.pressClass)
+ }
+ this.click()
+},handleMouseUp:function() {
+ clearTimeout(this.timer);
+ this.el.un("mouseover", this.handleMouseReturn);
+ this.el.un("mouseout", this.handleMouseOut);
+ Ext.getDoc().un("mouseup", this.handleMouseUp);
+ this.el.removeClass(this.pressClass);
+ this.fireEvent("mouseup", this)
+}});
+Ext.KeyNav = function(B, A) {
+ this.el = Ext.get(B);
+ Ext.apply(this, A);
+ if (!this.disabled) {
+ this.disabled = true;
+ this.enable()
+ }
+};
+Ext.KeyNav.prototype
+ = {disabled:false,defaultEventAction:"stopEvent",forceKeyDown:false,prepareEvent:function(
+ C) {
+ var A = C.getKey();
+ var B = this.keyToHandler[A];
+ if (Ext.isSafari && B && A >= 37 && A <= 40) {
+ C.stopEvent()
+ }
+},relay:function(C) {
+ var A = C.getKey();
+ var B = this.keyToHandler[A];
+ if (B && this[B]) {
+ if (this.doRelay(C, this[B], B) !== true) {
+ C[this.defaultEventAction]()
+ }
+ }
+},doRelay:function(C, B, A) {
+ return B.call(this.scope || this, C)
+},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function() {
+ if (this.disabled) {
+ if (this.forceKeyDown || Ext.isIE || Ext.isAir) {
+ this.el.on("keydown", this.relay, this)
+ } else {
+ this.el.on("keydown", this.prepareEvent, this);
+ this.el.on("keypress", this.relay, this)
+ }
+ this.disabled = false
+ }
+},disable:function() {
+ if (!this.disabled) {
+ if (this.forceKeyDown || Ext.isIE || Ext.isAir) {
+ this.el.un("keydown", this.relay)
+ } else {
+ this.el.un("keydown", this.prepareEvent);
+ this.el.un("keypress", this.relay)
+ }
+ this.disabled = true
+ }
+}};
+Ext.KeyMap = function(C, B, A) {
+ this.el = Ext.get(C);
+ this.eventName = A || "keydown";
+ this.bindings = [];
+ if (B) {
+ this.addBinding(B)
+ }
+ this.enable()
+};
+Ext.KeyMap.prototype = {stopEvent:false,addBinding:function(D) {
+ if (Ext.isArray(D)) {
+ for (var F = 0,H = D.length; F < H; F++) {
+ this.addBinding(D[F])
+ }
+ return
+ }
+ var N = D.key,C = D.shift,A = D.ctrl,G = D.alt,J = D.fn
+ || D.handler,M = D.scope;
+ if (typeof N == "string") {
+ var K = [];
+ var I = N.toUpperCase();
+ for (var E = 0,H = I.length; E < H; E++) {
+ K.push(I.charCodeAt(E))
+ }
+ N = K
+ }
+ var B = Ext.isArray(N);
+ var L = function(R) {
+ if ((!C || R.shiftKey) && (!A || R.ctrlKey) && (!G || R.altKey)) {
+ var P = R.getKey();
+ if (B) {
+ for (var Q = 0,O = N.length; Q < O; Q++) {
+ if (N[Q] == P) {
+ if (this.stopEvent) {
+ R.stopEvent()
+ }
+ J.call(M || window, P, R);
+ return
+ }
+ }
+ } else {
+ if (P == N) {
+ if (this.stopEvent) {
+ R.stopEvent()
+ }
+ J.call(M || window, P, R)
+ }
+ }
+ }
+ };
+ this.bindings.push(L)
+},on:function(B, D, C) {
+ var G,A,E,F;
+ if (typeof B == "object" && !Ext.isArray(B)) {
+ G = B.key;
+ A = B.shift;
+ E = B.ctrl;
+ F = B.alt
+ } else {
+ G = B
+ }
+ this.addBinding({key:G,shift:A,ctrl:E,alt:F,fn:D,scope:C})
+},handleKeyDown:function(D) {
+ if (this.enabled) {
+ var B = this.bindings;
+ for (var C = 0,A = B.length; C < A; C++) {
+ B[C].call(this, D)
+ }
+ }
+},isEnabled:function() {
+ return this.enabled
+},enable:function() {
+ if (!this.enabled) {
+ this.el.on(this.eventName, this.handleKeyDown, this);
+ this.enabled = true
+ }
+},disable:function() {
+ if (this.enabled) {
+ this.el.removeListener(this.eventName, this.handleKeyDown, this);
+ this.enabled = false
+ }
+}};
+Ext.util.TextMetrics = function() {
+ var A;
+ return{measure:function(B, C, D) {
+ if (!A) {
+ A = Ext.util.TextMetrics.Instance(B, D)
+ }
+ A.bind(B);
+ A.setFixedWidth(D || "auto");
+ return A.getSize(C)
+ },createInstance:function(B, C) {
+ return Ext.util.TextMetrics.Instance(B, C)
+ }}
+}();
+Ext.util.TextMetrics.Instance = function(B, D) {
+ var C = new Ext.Element(document.createElement("div"));
+ document.body.appendChild(C.dom);
+ C.position("absolute");
+ C.setLeftTop(-1000, -1000);
+ C.hide();
+ if (D) {
+ C.setWidth(D)
+ }
+ var A = {getSize:function(F) {
+ C.update(F);
+ var E = C.getSize();
+ C.update("");
+ return E
+ },bind:function(E) {
+ C.setStyle(Ext.fly(E).getStyles("font-size", "font-style", "font-weight", "font-family", "line-height"))
+ },setFixedWidth:function(E) {
+ C.setWidth(E)
+ },getWidth:function(E) {
+ C.dom.style.width = "auto";
+ return this.getSize(E).width
+ },getHeight:function(E) {
+ return this.getSize(E).height
+ }};
+ A.bind(B);
+ return A
+};
+Ext.Element.measureText = Ext.util.TextMetrics.measure;
+(function() {
+ var A = Ext.EventManager;
+ var B = Ext.lib.Dom;
+ Ext.dd.DragDrop = function(E, C, D) {
+ if (E) {
+ this.init(E, C, D)
+ }
+ };
+ Ext.dd.DragDrop.prototype
+ = {id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function() {
+ this.locked = true
+ },unlock:function() {
+ this.locked = false
+ },isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(
+ C, D) {
+ },startDrag:function(C, D) {
+ },b4Drag:function(C) {
+ },onDrag:function(C) {
+ },onDragEnter:function(C, D) {
+ },b4DragOver:function(C) {
+ },onDragOver:function(C, D) {
+ },b4DragOut:function(C) {
+ },onDragOut:function(C, D) {
+ },b4DragDrop:function(C) {
+ },onDragDrop:function(C, D) {
+ },onInvalidDrop:function(C) {
+ },b4EndDrag:function(C) {
+ },endDrag:function(C) {
+ },b4MouseDown:function(C) {
+ },onMouseDown:function(C) {
+ },onMouseUp:function(C) {
+ },onAvailable:function() {
+ },defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(H, F,
+ M) {
+ if (typeof F == "number") {
+ F = {left:F,right:F,top:F,bottom:F}
+ }
+ F = F || this.defaultPadding;
+ var J = Ext.get(this.getEl()).getBox();
+ var C = Ext.get(H);
+ var L = C.getScroll();
+ var I,D = C.dom;
+ if (D == document.body) {
+ I = {x:L.left,y:L.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()}
+ } else {
+ var K = C.getXY();
+ I = {x:K[0] + L.left,y:K[1]
+ + L.top,width:D.clientWidth,height:D.clientHeight}
+ }
+ var G = J.y - I.y;
+ var E = J.x - I.x;
+ this.resetConstraints();
+ this.setXConstraint(E - (F.left || 0), I.width - E - J.width - (F.right
+ || 0), this.xTickSize);
+ this.setYConstraint(G - (F.top || 0), I.height - G - J.height
+ - (F.bottom || 0), this.yTickSize)
+ },getEl:function() {
+ if (!this._domRef) {
+ this._domRef = Ext.getDom(this.id)
+ }
+ return this._domRef
+ },getDragEl:function() {
+ return Ext.getDom(this.dragElId)
+ },init:function(E, C, D) {
+ this.initTarget(E, C, D);
+ A.on(this.id, "mousedown", this.handleMouseDown, this)
+ },initTarget:function(E, C, D) {
+ this.config = D || {};
+ this.DDM = Ext.dd.DDM;
+ this.groups = {};
+ if (typeof E !== "string") {
+ E = Ext.id(E)
+ }
+ this.id = E;
+ this.addToGroup((C) ? C : "default");
+ this.handleElId = E;
+ this.setDragElId(E);
+ this.invalidHandleTypes = {A:"A"};
+ this.invalidHandleIds = {};
+ this.invalidHandleClasses = [];
+ this.applyConfig();
+ this.handleOnAvailable()
+ },applyConfig:function() {
+ this.padding = this.config.padding || [0,0,0,0];
+ this.isTarget = (this.config.isTarget !== false);
+ this.maintainOffset = (this.config.maintainOffset);
+ this.primaryButtonOnly = (this.config.primaryButtonOnly !== false)
+ },handleOnAvailable:function() {
+ this.available = true;
+ this.resetConstraints();
+ this.onAvailable()
+ },setPadding:function(E, C, F, D) {
+ if (!C && 0 !== C) {
+ this.padding = [E,E,E,E]
+ } else {
+ if (!F && 0 !== F) {
+ this.padding = [E,C,E,C]
+ } else {
+ this.padding = [E,C,F,D]
+ }
+ }
+ },setInitPosition:function(F, E) {
+ var G = this.getEl();
+ if (!this.DDM.verifyEl(G)) {
+ return
+ }
+ var D = F || 0;
+ var C = E || 0;
+ var H = B.getXY(G);
+ this.initPageX = H[0] - D;
+ this.initPageY = H[1] - C;
+ this.lastPageX = H[0];
+ this.lastPageY = H[1];
+ this.setStartPosition(H)
+ },setStartPosition:function(D) {
+ var C = D || B.getXY(this.getEl());
+ this.deltaSetXY = null;
+ this.startPageX = C[0];
+ this.startPageY = C[1]
+ },addToGroup:function(C) {
+ this.groups[C] = true;
+ this.DDM.regDragDrop(this, C)
+ },removeFromGroup:function(C) {
+ if (this.groups[C]) {
+ delete this.groups[C]
+ }
+ this.DDM.removeDDFromGroup(this, C)
+ },setDragElId:function(C) {
+ this.dragElId = C
+ },setHandleElId:function(C) {
+ if (typeof C !== "string") {
+ C = Ext.id(C)
+ }
+ this.handleElId = C;
+ this.DDM.regHandle(this.id, C)
+ },setOuterHandleElId:function(C) {
+ if (typeof C !== "string") {
+ C = Ext.id(C)
+ }
+ A.on(C, "mousedown", this.handleMouseDown, this);
+ this.setHandleElId(C);
+ this.hasOuterHandles = true
+ },unreg:function() {
+ A.un(this.id, "mousedown", this.handleMouseDown);
+ this._domRef = null;
+ this.DDM._remove(this)
+ },destroy:function() {
+ this.unreg()
+ },isLocked:function() {
+ return(this.DDM.isLocked() || this.locked)
+ },handleMouseDown:function(E, D) {
+ if (this.primaryButtonOnly && E.button != 0) {
+ return
+ }
+ if (this.isLocked()) {
+ return
+ }
+ this.DDM.refreshCache(this.groups);
+ var C = new Ext.lib.Point(Ext.lib.Event.getPageX(E), Ext.lib.Event.getPageY(E));
+ if (!this.hasOuterHandles && !this.DDM.isOverTarget(C, this)) {
+ } else {
+ if (this.clickValidator(E)) {
+ this.setStartPosition();
+ this.b4MouseDown(E);
+ this.onMouseDown(E);
+ this.DDM.handleMouseDown(E, this);
+ this.DDM.stopEvent(E)
+ } else {
+ }
+ }
+ },clickValidator:function(D) {
+ var C = D.getTarget();
+ return(this.isValidHandleChild(C) && (this.id == this.handleElId
+ || this.DDM.handleWasClicked(C, this.id)))
+ },addInvalidHandleType:function(C) {
+ var D = C.toUpperCase();
+ this.invalidHandleTypes[D] = D
+ },addInvalidHandleId:function(C) {
+ if (typeof C !== "string") {
+ C = Ext.id(C)
+ }
+ this.invalidHandleIds[C] = C
+ },addInvalidHandleClass:function(C) {
+ this.invalidHandleClasses.push(C)
+ },removeInvalidHandleType:function(C) {
+ var D = C.toUpperCase();
+ delete this.invalidHandleTypes[D]
+ },removeInvalidHandleId:function(C) {
+ if (typeof C !== "string") {
+ C = Ext.id(C)
+ }
+ delete this.invalidHandleIds[C]
+ },removeInvalidHandleClass:function(D) {
+ for (var E = 0,C = this.invalidHandleClasses.length; E < C; ++E) {
+ if (this.invalidHandleClasses[E] == D) {
+ delete this.invalidHandleClasses[E]
+ }
+ }
+ },isValidHandleChild:function(F) {
+ var E = true;
+ var H;
+ try {
+ H = F.nodeName.toUpperCase()
+ } catch(G) {
+ H = F.nodeName
+ }
+ E = E && !this.invalidHandleTypes[H];
+ E = E && !this.invalidHandleIds[F.id];
+ for (var D = 0,C = this.invalidHandleClasses.length; E && D < C; ++D) {
+ E = !B.hasClass(F, this.invalidHandleClasses[D])
+ }
+ return E
+ },setXTicks:function(F, C) {
+ this.xTicks = [];
+ this.xTickSize = C;
+ var E = {};
+ for (var D = this.initPageX; D >= this.minX; D = D - C) {
+ if (!E[D]) {
+ this.xTicks[this.xTicks.length] = D;
+ E[D] = true
+ }
+ }
+ for (D = this.initPageX; D <= this.maxX; D = D + C) {
+ if (!E[D]) {
+ this.xTicks[this.xTicks.length] = D;
+ E[D] = true
+ }
+ }
+ this.xTicks.sort(this.DDM.numericSort)
+ },setYTicks:function(F, C) {
+ this.yTicks = [];
+ this.yTickSize = C;
+ var E = {};
+ for (var D = this.initPageY; D >= this.minY; D = D - C) {
+ if (!E[D]) {
+ this.yTicks[this.yTicks.length] = D;
+ E[D] = true
+ }
+ }
+ for (D = this.initPageY; D <= this.maxY; D = D + C) {
+ if (!E[D]) {
+ this.yTicks[this.yTicks.length] = D;
+ E[D] = true
+ }
+ }
+ this.yTicks.sort(this.DDM.numericSort)
+ },setXConstraint:function(E, D, C) {
+ this.leftConstraint = E;
+ this.rightConstraint = D;
+ this.minX = this.initPageX - E;
+ this.maxX = this.initPageX + D;
+ if (C) {
+ this.setXTicks(this.initPageX, C)
+ }
+ this.constrainX = true
+ },clearConstraints:function() {
+ this.constrainX = false;
+ this.constrainY = false;
+ this.clearTicks()
+ },clearTicks:function() {
+ this.xTicks = null;
+ this.yTicks = null;
+ this.xTickSize = 0;
+ this.yTickSize = 0
+ },setYConstraint:function(C, E, D) {
+ this.topConstraint = C;
+ this.bottomConstraint = E;
+ this.minY = this.initPageY - C;
+ this.maxY = this.initPageY + E;
+ if (D) {
+ this.setYTicks(this.initPageY, D)
+ }
+ this.constrainY = true
+ },resetConstraints:function() {
+ if (this.initPageX || this.initPageX === 0) {
+ var D = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0;
+ var C = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0;
+ this.setInitPosition(D, C)
+ } else {
+ this.setInitPosition()
+ }
+ if (this.constrainX) {
+ this.setXConstraint(this.leftConstraint, this.rightConstraint, this.xTickSize)
+ }
+ if (this.constrainY) {
+ this.setYConstraint(this.topConstraint, this.bottomConstraint, this.yTickSize)
+ }
+ },getTick:function(I, F) {
+ if (!F) {
+ return I
+ } else {
+ if (F[0] >= I) {
+ return F[0]
+ } else {
+ for (var D = 0,C = F.length; D < C; ++D) {
+ var E = D + 1;
+ if (F[E] && F[E] >= I) {
+ var H = I - F[D];
+ var G = F[E] - I;
+ return(G > H) ? F[D] : F[E]
+ }
+ }
+ return F[F.length - 1]
+ }
+ }
+ },toString:function() {
+ return("DragDrop " + this.id)
+ }}
+})();
+if (!Ext.dd.DragDropMgr) {
+ Ext.dd.DragDropMgr = function() {
+ var A = Ext.EventManager;
+ return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function() {
+ this.initialized = true
+ },POINT:0,INTERSECT:1,mode:0,_execOnAll:function(D, C) {
+ for (var E in this.ids) {
+ for (var B in this.ids[E]) {
+ var F = this.ids[E][B];
+ if (!this.isTypeOfDD(F)) {
+ continue
+ }
+ F[D].apply(F, C)
+ }
+ }
+ },_onLoad:function() {
+ this.init();
+ A.on(document, "mouseup", this.handleMouseUp, this, true);
+ A.on(document, "mousemove", this.handleMouseMove, this, true);
+ A.on(window, "unload", this._onUnload, this, true);
+ A.on(window, "resize", this._onResize, this, true)
+ },_onResize:function(B) {
+ this._execOnAll("resetConstraints", [])
+ },lock:function() {
+ this.locked = true
+ },unlock:function() {
+ this.locked = false
+ },isLocked:function() {
+ return this.locked
+ },locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(
+ C, B) {
+ if (!this.initialized) {
+ this.init()
+ }
+ if (!this.ids[B]) {
+ this.ids[B] = {}
+ }
+ this.ids[B][C.id] = C
+ },removeDDFromGroup:function(D, B) {
+ if (!this.ids[B]) {
+ this.ids[B] = {}
+ }
+ var C = this.ids[B];
+ if (C && C[D.id]) {
+ delete C[D.id]
+ }
+ },_remove:function(C) {
+ for (var B in C.groups) {
+ if (B && this.ids[B][C.id]) {
+ delete this.ids[B][C.id]
+ }
+ }
+ delete this.handleIds[C.id]
+ },regHandle:function(C, B) {
+ if (!this.handleIds[C]) {
+ this.handleIds[C] = {}
+ }
+ this.handleIds[C][B] = B
+ },isDragDrop:function(B) {
+ return(this.getDDById(B)) ? true : false
+ },getRelated:function(F, C) {
+ var E = [];
+ for (var D in F.groups) {
+ for (j in this.ids[D]) {
+ var B = this.ids[D][j];
+ if (!this.isTypeOfDD(B)) {
+ continue
+ }
+ if (!C || B.isTarget) {
+ E[E.length] = B
+ }
+ }
+ }
+ return E
+ },isLegalTarget:function(F, E) {
+ var C = this.getRelated(F, true);
+ for (var D = 0,B = C.length; D < B; ++D) {
+ if (C[D].id == E.id) {
+ return true
+ }
+ }
+ return false
+ },isTypeOfDD:function(B) {
+ return(B && B.__ygDragDrop)
+ },isHandle:function(C, B) {
+ return(this.handleIds[C] && this.handleIds[C][B])
+ },getDDById:function(C) {
+ for (var B in this.ids) {
+ if (this.ids[B][C]) {
+ return this.ids[B][C]
+ }
+ }
+ return null
+ },handleMouseDown:function(D, C) {
+ if (Ext.QuickTips) {
+ Ext.QuickTips.disable()
+ }
+ this.currentTarget = D.getTarget();
+ this.dragCurrent = C;
+ var B = C.getEl();
+ this.startX = D.getPageX();
+ this.startY = D.getPageY();
+ this.deltaX = this.startX - B.offsetLeft;
+ this.deltaY = this.startY - B.offsetTop;
+ this.dragThreshMet = false;
+ this.clickTimeout = setTimeout(function() {
+ var E = Ext.dd.DDM;
+ E.startDrag(E.startX, E.startY)
+ }, this.clickTimeThresh)
+ },startDrag:function(B, C) {
+ clearTimeout(this.clickTimeout);
+ if (this.dragCurrent) {
+ this.dragCurrent.b4StartDrag(B, C);
+ this.dragCurrent.startDrag(B, C)
+ }
+ this.dragThreshMet = true
+ },handleMouseUp:function(B) {
+ if (Ext.QuickTips) {
+ Ext.QuickTips.enable()
+ }
+ if (!this.dragCurrent) {
+ return
+ }
+ clearTimeout(this.clickTimeout);
+ if (this.dragThreshMet) {
+ this.fireEvents(B, true)
+ } else {
+ }
+ this.stopDrag(B);
+ this.stopEvent(B)
+ },stopEvent:function(B) {
+ if (this.stopPropagation) {
+ B.stopPropagation()
+ }
+ if (this.preventDefault) {
+ B.preventDefault()
+ }
+ },stopDrag:function(B) {
+ if (this.dragCurrent) {
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4EndDrag(B);
+ this.dragCurrent.endDrag(B)
+ }
+ this.dragCurrent.onMouseUp(B)
+ }
+ this.dragCurrent = null;
+ this.dragOvers = {}
+ },handleMouseMove:function(D) {
+ if (!this.dragCurrent) {
+ return true
+ }
+ if (Ext.isIE && (D.button !== 0 && D.button !== 1 && D.button
+ !== 2)) {
+ this.stopEvent(D);
+ return this.handleMouseUp(D)
+ }
+ if (!this.dragThreshMet) {
+ var C = Math.abs(this.startX - D.getPageX());
+ var B = Math.abs(this.startY - D.getPageY());
+ if (C > this.clickPixelThresh || B > this.clickPixelThresh) {
+ this.startDrag(this.startX, this.startY)
+ }
+ }
+ if (this.dragThreshMet) {
+ this.dragCurrent.b4Drag(D);
+ this.dragCurrent.onDrag(D);
+ if (!this.dragCurrent.moveOnly) {
+ this.fireEvents(D, false)
+ }
+ }
+ this.stopEvent(D);
+ return true
+ },fireEvents:function(K, L) {
+ var N = this.dragCurrent;
+ if (!N || N.isLocked()) {
+ return
+ }
+ var O = K.getPoint();
+ var B = [];
+ var E = [];
+ var I = [];
+ var G = [];
+ var D = [];
+ for (var F in this.dragOvers) {
+ var C = this.dragOvers[F];
+ if (!this.isTypeOfDD(C)) {
+ continue
+ }
+ if (!this.isOverTarget(O, C, this.mode)) {
+ E.push(C)
+ }
+ B[F] = true;
+ delete this.dragOvers[F]
+ }
+ for (var M in N.groups) {
+ if ("string" != typeof M) {
+ continue
+ }
+ for (F in this.ids[M]) {
+ var H = this.ids[M][F];
+ if (!this.isTypeOfDD(H)) {
+ continue
+ }
+ if (H.isTarget && !H.isLocked() && H != N) {
+ if (this.isOverTarget(O, H, this.mode)) {
+ if (L) {
+ G.push(H)
+ } else {
+ if (!B[H.id]) {
+ D.push(H)
+ } else {
+ I.push(H)
+ }
+ this.dragOvers[H.id] = H
+ }
+ }
+ }
+ }
+ }
+ if (this.mode) {
+ if (E.length) {
+ N.b4DragOut(K, E);
+ N.onDragOut(K, E)
+ }
+ if (D.length) {
+ N.onDragEnter(K, D)
+ }
+ if (I.length) {
+ N.b4DragOver(K, I);
+ N.onDragOver(K, I)
+ }
+ if (G.length) {
+ N.b4DragDrop(K, G);
+ N.onDragDrop(K, G)
+ }
+ } else {
+ var J = 0;
+ for (F = 0,J = E.length; F < J; ++F) {
+ N.b4DragOut(K, E[F].id);
+ N.onDragOut(K, E[F].id)
+ }
+ for (F = 0,J = D.length; F < J; ++F) {
+ N.onDragEnter(K, D[F].id)
+ }
+ for (F = 0,J = I.length; F < J; ++F) {
+ N.b4DragOver(K, I[F].id);
+ N.onDragOver(K, I[F].id)
+ }
+ for (F = 0,J = G.length; F < J; ++F) {
+ N.b4DragDrop(K, G[F].id);
+ N.onDragDrop(K, G[F].id)
+ }
+ }
+ if (L && !G.length) {
+ N.onInvalidDrop(K)
+ }
+ },getBestMatch:function(D) {
+ var F = null;
+ var C = D.length;
+ if (C == 1) {
+ F = D[0]
+ } else {
+ for (var E = 0; E < C; ++E) {
+ var B = D[E];
+ if (B.cursorIsOver) {
+ F = B;
+ break
+ } else {
+ if (!F || F.overlap.getArea() < B.overlap.getArea()) {
+ F = B
+ }
+ }
+ }
+ }
+ return F
+ },refreshCache:function(C) {
+ for (var B in C) {
+ if ("string" != typeof B) {
+ continue
+ }
+ for (var D in this.ids[B]) {
+ var E = this.ids[B][D];
+ if (this.isTypeOfDD(E)) {
+ var F = this.getLocation(E);
+ if (F) {
+ this.locationCache[E.id] = F
+ } else {
+ delete this.locationCache[E.id]
+ }
+ }
+ }
+ }
+ },verifyEl:function(C) {
+ if (C) {
+ var B;
+ if (Ext.isIE) {
+ try {
+ B = C.offsetParent
+ } catch(D) {
+ }
+ } else {
+ B = C.offsetParent
+ }
+ if (B) {
+ return true
+ }
+ }
+ return false
+ },getLocation:function(G) {
+ if (!this.isTypeOfDD(G)) {
+ return null
+ }
+ var E = G.getEl(),J,D,C,L,K,M,B,I,F;
+ try {
+ J = Ext.lib.Dom.getXY(E)
+ } catch(H) {
+ }
+ if (!J) {
+ return null
+ }
+ D = J[0];
+ C = D + E.offsetWidth;
+ L = J[1];
+ K = L + E.offsetHeight;
+ M = L - G.padding[0];
+ B = C + G.padding[1];
+ I = K + G.padding[2];
+ F = D - G.padding[3];
+ return new Ext.lib.Region(M, B, I, F)
+ },isOverTarget:function(J, B, D) {
+ var F = this.locationCache[B.id];
+ if (!F || !this.useCache) {
+ F = this.getLocation(B);
+ this.locationCache[B.id] = F
+ }
+ if (!F) {
+ return false
+ }
+ B.cursorIsOver = F.contains(J);
+ var I = this.dragCurrent;
+ if (!I || !I.getTargetCoord || (!D && !I.constrainX
+ && !I.constrainY)) {
+ return B.cursorIsOver
+ }
+ B.overlap = null;
+ var G = I.getTargetCoord(J.x, J.y);
+ var C = I.getDragEl();
+ var E = new Ext.lib.Region(G.y, G.x + C.offsetWidth, G.y
+ + C.offsetHeight, G.x);
+ var H = E.intersect(F);
+ if (H) {
+ B.overlap = H;
+ return(D) ? true : B.cursorIsOver
+ } else {
+ return false
+ }
+ },_onUnload:function(C, B) {
+ Ext.dd.DragDropMgr.unregAll()
+ },unregAll:function() {
+ if (this.dragCurrent) {
+ this.stopDrag();
+ this.dragCurrent = null
+ }
+ this._execOnAll("unreg", []);
+ for (var B in this.elementCache) {
+ delete this.elementCache[B]
+ }
+ this.elementCache = {};
+ this.ids = {}
+ },elementCache:{},getElWrapper:function(C) {
+ var B = this.elementCache[C];
+ if (!B || !B.el) {
+ B = this.elementCache[C]
+ = new this.ElementWrapper(Ext.getDom(C))
+ }
+ return B
+ },getElement:function(B) {
+ return Ext.getDom(B)
+ },getCss:function(C) {
+ var B = Ext.getDom(C);
+ return(B) ? B.style : null
+ },ElementWrapper:function(B) {
+ this.el = B || null;
+ this.id = this.el && B.id;
+ this.css = this.el && B.style
+ },getPosX:function(B) {
+ return Ext.lib.Dom.getX(B)
+ },getPosY:function(B) {
+ return Ext.lib.Dom.getY(B)
+ },swapNode:function(D, B) {
+ if (D.swapNode) {
+ D.swapNode(B)
+ } else {
+ var E = B.parentNode;
+ var C = B.nextSibling;
+ if (C == D) {
+ E.insertBefore(D, B)
+ } else {
+ if (B == D.nextSibling) {
+ E.insertBefore(B, D)
+ } else {
+ D.parentNode.replaceChild(B, D);
+ E.insertBefore(D, C)
+ }
+ }
+ }
+ },getScroll:function() {
+ var D,B,E = document.documentElement,C = document.body;
+ if (E && (E.scrollTop || E.scrollLeft)) {
+ D = E.scrollTop;
+ B = E.scrollLeft
+ } else {
+ if (C) {
+ D = C.scrollTop;
+ B = C.scrollLeft
+ } else {
+ }
+ }
+ return{top:D,left:B}
+ },getStyle:function(C, B) {
+ return Ext.fly(C).getStyle(B)
+ },getScrollTop:function() {
+ return this.getScroll().top
+ },getScrollLeft:function() {
+ return this.getScroll().left
+ },moveToEl:function(B, D) {
+ var C = Ext.lib.Dom.getXY(D);
+ Ext.lib.Dom.setXY(B, C)
+ },numericSort:function(C, B) {
+ return(C - B)
+ },_timeoutCount:0,_addListeners:function() {
+ var B = Ext.dd.DDM;
+ if (Ext.lib.Event && document) {
+ B._onLoad()
+ } else {
+ if (B._timeoutCount > 2000) {
+ } else {
+ setTimeout(B._addListeners, 10);
+ if (document && document.body) {
+ B._timeoutCount += 1
+ }
+ }
+ }
+ },handleWasClicked:function(B, D) {
+ if (this.isHandle(D, B.id)) {
+ return true
+ } else {
+ var C = B.parentNode;
+ while (C) {
+ if (this.isHandle(D, C.id)) {
+ return true
+ } else {
+ C = C.parentNode
+ }
+ }
+ }
+ return false
+ }}
+ }();
+ Ext.dd.DDM = Ext.dd.DragDropMgr;
+ Ext.dd.DDM._addListeners()
+}
+Ext.dd.DD = function(C, A, B) {
+ if (C) {
+ this.init(C, A, B)
+ }
+};
+Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, {scroll:true,autoOffset:function(C, B) {
+ var A = C - this.startPageX;
+ var D = B - this.startPageY;
+ this.setDelta(A, D)
+},setDelta:function(B, A) {
+ this.deltaX = B;
+ this.deltaY = A
+},setDragElPos:function(C, B) {
+ var A = this.getDragEl();
+ this.alignElWithMouse(A, C, B)
+},alignElWithMouse:function(C, G, F) {
+ var E = this.getTargetCoord(G, F);
+ var B = C.dom ? C : Ext.fly(C, "_dd");
+ if (!this.deltaSetXY) {
+ var H = [E.x,E.y];
+ B.setXY(H);
+ var D = B.getLeft(true);
+ var A = B.getTop(true);
+ this.deltaSetXY = [D - E.x,A - E.y]
+ } else {
+ B.setLeftTop(E.x + this.deltaSetXY[0], E.y + this.deltaSetXY[1])
+ }
+ this.cachePosition(E.x, E.y);
+ this.autoScroll(E.x, E.y, C.offsetHeight, C.offsetWidth);
+ return E
+},cachePosition:function(B, A) {
+ if (B) {
+ this.lastPageX = B;
+ this.lastPageY = A
+ } else {
+ var C = Ext.lib.Dom.getXY(this.getEl());
+ this.lastPageX = C[0];
+ this.lastPageY = C[1]
+ }
+},autoScroll:function(J, I, E, K) {
+ if (this.scroll) {
+ var L = Ext.lib.Dom.getViewHeight();
+ var B = Ext.lib.Dom.getViewWidth();
+ var N = this.DDM.getScrollTop();
+ var D = this.DDM.getScrollLeft();
+ var H = E + I;
+ var M = K + J;
+ var G = (L + N - I - this.deltaY);
+ var F = (B + D - J - this.deltaX);
+ var C = 40;
+ var A = (document.all) ? 80 : 30;
+ if (H > L && G < C) {
+ window.scrollTo(D, N + A)
+ }
+ if (I < N && N > 0 && I - N < C) {
+ window.scrollTo(D, N - A)
+ }
+ if (M > B && F < C) {
+ window.scrollTo(D + A, N)
+ }
+ if (J < D && D > 0 && J - D < C) {
+ window.scrollTo(D - A, N)
+ }
+ }
+},getTargetCoord:function(C, B) {
+ var A = C - this.deltaX;
+ var D = B - this.deltaY;
+ if (this.constrainX) {
+ if (A < this.minX) {
+ A = this.minX
+ }
+ if (A > this.maxX) {
+ A = this.maxX
+ }
+ }
+ if (this.constrainY) {
+ if (D < this.minY) {
+ D = this.minY
+ }
+ if (D > this.maxY) {
+ D = this.maxY
+ }
+ }
+ A = this.getTick(A, this.xTicks);
+ D = this.getTick(D, this.yTicks);
+ return{x:A,y:D}
+},applyConfig:function() {
+ Ext.dd.DD.superclass.applyConfig.call(this);
+ this.scroll = (this.config.scroll !== false)
+},b4MouseDown:function(A) {
+ this.autoOffset(A.getPageX(), A.getPageY())
+},b4Drag:function(A) {
+ this.setDragElPos(A.getPageX(), A.getPageY())
+},toString:function() {
+ return("DD " + this.id)
+}});
+Ext.dd.DDProxy = function(C, A, B) {
+ if (C) {
+ this.init(C, A, B);
+ this.initFrame()
+ }
+};
+Ext.dd.DDProxy.dragElId = "ygddfdiv";
+Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, {resizeFrame:true,centerFrame:false,createFrame:function() {
+ var B = this;
+ var A = document.body;
+ if (!A || !A.firstChild) {
+ setTimeout(function() {
+ B.createFrame()
+ }, 50);
+ return
+ }
+ var D = this.getDragEl();
+ if (!D) {
+ D = document.createElement("div");
+ D.id = this.dragElId;
+ var C = D.style;
+ C.position = "absolute";
+ C.visibility = "hidden";
+ C.cursor = "move";
+ C.border = "2px solid #aaa";
+ C.zIndex = 999;
+ A.insertBefore(D, A.firstChild)
+ }
+},initFrame:function() {
+ this.createFrame()
+},applyConfig:function() {
+ Ext.dd.DDProxy.superclass.applyConfig.call(this);
+ this.resizeFrame = (this.config.resizeFrame !== false);
+ this.centerFrame = (this.config.centerFrame);
+ this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId)
+},showFrame:function(E, D) {
+ var C = this.getEl();
+ var A = this.getDragEl();
+ var B = A.style;
+ this._resizeProxy();
+ if (this.centerFrame) {
+ this.setDelta(Math.round(parseInt(B.width, 10)
+ / 2), Math.round(parseInt(B.height, 10) / 2))
+ }
+ this.setDragElPos(E, D);
+ Ext.fly(A).show()
+},_resizeProxy:function() {
+ if (this.resizeFrame) {
+ var A = this.getEl();
+ Ext.fly(this.getDragEl()).setSize(A.offsetWidth, A.offsetHeight)
+ }
+},b4MouseDown:function(B) {
+ var A = B.getPageX();
+ var C = B.getPageY();
+ this.autoOffset(A, C);
+ this.setDragElPos(A, C)
+},b4StartDrag:function(A, B) {
+ this.showFrame(A, B)
+},b4EndDrag:function(A) {
+ Ext.fly(this.getDragEl()).hide()
+},endDrag:function(C) {
+ var B = this.getEl();
+ var A = this.getDragEl();
+ A.style.visibility = "";
+ this.beforeMove();
+ B.style.visibility = "hidden";
+ Ext.dd.DDM.moveToEl(B, A);
+ A.style.visibility = "hidden";
+ B.style.visibility = "";
+ this.afterDrag()
+},beforeMove:function() {
+},afterDrag:function() {
+},toString:function() {
+ return("DDProxy " + this.id)
+}});
+Ext.dd.DDTarget = function(C, A, B) {
+ if (C) {
+ this.initTarget(C, A, B)
+ }
+};
+Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, {toString:function() {
+ return("DDTarget " + this.id)
+}});
+Ext.dd.DragTracker = function(A) {
+ Ext.apply(this, A);
+ this.addEvents("mousedown", "mouseup", "mousemove", "dragstart", "dragend", "drag");
+ this.dragRegion = new Ext.lib.Region(0, 0, 0, 0);
+ if (this.el) {
+ this.initEl(this.el)
+ }
+};
+Ext.extend(Ext.dd.DragTracker, Ext.util.Observable, {active:false,tolerance:5,autoStart:false,initEl:function(
+ A) {
+ this.el = Ext.get(A);
+ A.on("mousedown", this.onMouseDown, this, this.delegate
+ ? {delegate:this.delegate} : undefined)
+},destroy:function() {
+ this.el.un("mousedown", this.onMouseDown, this)
+},onMouseDown:function(C, B) {
+ if (this.fireEvent("mousedown", this, C) !== false && this.onBeforeStart(C)
+ !== false) {
+ this.startXY = this.lastXY = C.getXY();
+ this.dragTarget = this.delegate ? B : this.el.dom;
+ C.preventDefault();
+ var A = Ext.getDoc();
+ A.on("mouseup", this.onMouseUp, this);
+ A.on("mousemove", this.onMouseMove, this);
+ A.on("selectstart", this.stopSelect, this);
+ if (this.autoStart) {
+ this.timer = this.triggerStart.defer(this.autoStart === true ? 1000
+ : this.autoStart, this)
+ }
+ }
+},onMouseMove:function(D, C) {
+ D.preventDefault();
+ var B = D.getXY(),A = this.startXY;
+ this.lastXY = B;
+ if (!this.active) {
+ if (Math.abs(A[0] - B[0]) > this.tolerance || Math.abs(A[1] - B[1])
+ > this.tolerance) {
+ this.triggerStart()
+ } else {
+ return
+ }
+ }
+ this.fireEvent("mousemove", this, D);
+ this.onDrag(D);
+ this.fireEvent("drag", this, D)
+},onMouseUp:function(B) {
+ var A = Ext.getDoc();
+ A.un("mousemove", this.onMouseMove, this);
+ A.un("mouseup", this.onMouseUp, this);
+ A.un("selectstart", this.stopSelect, this);
+ B.preventDefault();
+ this.clearStart();
+ this.active = false;
+ delete this.elRegion;
+ this.fireEvent("mouseup", this, B);
+ this.onEnd(B);
+ this.fireEvent("dragend", this, B)
+},triggerStart:function(A) {
+ this.clearStart();
+ this.active = true;
+ this.onStart(this.startXY);
+ this.fireEvent("dragstart", this, this.startXY)
+},clearStart:function() {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ delete this.timer
+ }
+},stopSelect:function(A) {
+ A.stopEvent();
+ return false
+},onBeforeStart:function(A) {
+},onStart:function(A) {
+},onDrag:function(A) {
+},onEnd:function(A) {
+},getDragTarget:function() {
+ return this.dragTarget
+},getDragCt:function() {
+ return this.el
+},getXY:function(A) {
+ return A ? this.constrainModes[A].call(this, this.lastXY) : this.lastXY
+},getOffset:function(C) {
+ var B = this.getXY(C);
+ var A = this.startXY;
+ return[A[0] - B[0],A[1] - B[1]]
+},constrainModes:{"point":function(B) {
+ if (!this.elRegion) {
+ this.elRegion = this.getDragCt().getRegion()
+ }
+ var A = this.dragRegion;
+ A.left = B[0];
+ A.top = B[1];
+ A.right = B[0];
+ A.bottom = B[1];
+ A.constrainTo(this.elRegion);
+ return[A.left,A.top]
+}}});
+Ext.dd.ScrollManager = function() {
+ var C = Ext.dd.DragDropMgr;
+ var E = {};
+ var B = null;
+ var H = {};
+ var G = function(K) {
+ B = null;
+ A()
+ };
+ var I = function() {
+ if (C.dragCurrent) {
+ C.refreshCache(C.dragCurrent.groups)
+ }
+ };
+ var D = function() {
+ if (C.dragCurrent) {
+ var K = Ext.dd.ScrollManager;
+ var L = H.el.ddScrollConfig ? H.el.ddScrollConfig.increment
+ : K.increment;
+ if (!K.animate) {
+ if (H.el.scroll(H.dir, L)) {
+ I()
+ }
+ } else {
+ H.el.scroll(H.dir, L, true, K.animDuration, I)
+ }
+ }
+ };
+ var A = function() {
+ if (H.id) {
+ clearInterval(H.id)
+ }
+ H.id = 0;
+ H.el = null;
+ H.dir = ""
+ };
+ var F = function(L, K) {
+ A();
+ H.el = L;
+ H.dir = K;
+ H.id = setInterval(D, Ext.dd.ScrollManager.frequency)
+ };
+ var J = function(N, P) {
+ if (P || !C.dragCurrent) {
+ return
+ }
+ var Q = Ext.dd.ScrollManager;
+ if (!B || B != C.dragCurrent) {
+ B = C.dragCurrent;
+ Q.refreshCache()
+ }
+ var R = Ext.lib.Event.getXY(N);
+ var S = new Ext.lib.Point(R[0], R[1]);
+ for (var L in E) {
+ var M = E[L],K = M._region;
+ var O = M.ddScrollConfig ? M.ddScrollConfig : Q;
+ if (K && K.contains(S) && M.isScrollable()) {
+ if (K.bottom - S.y <= O.vthresh) {
+ if (H.el != M) {
+ F(M, "down")
+ }
+ return
+ } else {
+ if (K.right - S.x <= O.hthresh) {
+ if (H.el != M) {
+ F(M, "left")
+ }
+ return
+ } else {
+ if (S.y - K.top <= O.vthresh) {
+ if (H.el != M) {
+ F(M, "up")
+ }
+ return
+ } else {
+ if (S.x - K.left <= O.hthresh) {
+ if (H.el != M) {
+ F(M, "right")
+ }
+ return
+ }
+ }
+ }
+ }
+ }
+ }
+ A()
+ };
+ C.fireEvents = C.fireEvents.createSequence(J, C);
+ C.stopDrag = C.stopDrag.createSequence(G, C);
+ return{register:function(M) {
+ if (Ext.isArray(M)) {
+ for (var L = 0,K = M.length; L < K; L++) {
+ this.register(M[L])
+ }
+ } else {
+ M = Ext.get(M);
+ E[M.id] = M
+ }
+ },unregister:function(M) {
+ if (Ext.isArray(M)) {
+ for (var L = 0,K = M.length; L < K; L++) {
+ this.unregister(M[L])
+ }
+ } else {
+ M = Ext.get(M);
+ delete E[M.id]
+ }
+ },vthresh:25,hthresh:25,increment:100,frequency:500,animate:true,animDuration:0.4,refreshCache:function() {
+ for (var K in E) {
+ if (typeof E[K] == "object") {
+ E[K]._region = E[K].getRegion()
+ }
+ }
+ }}
+}();
+Ext.dd.Registry = function() {
+ var D = {};
+ var B = {};
+ var A = 0;
+ var C = function(F, E) {
+ if (typeof F == "string") {
+ return F
+ }
+ var G = F.id;
+ if (!G && E !== false) {
+ G = "extdd-" + (++A);
+ F.id = G
+ }
+ return G
+ };
+ return{register:function(H, I) {
+ I = I || {};
+ if (typeof H == "string") {
+ H = document.getElementById(H)
+ }
+ I.ddel = H;
+ D[C(H)] = I;
+ if (I.isHandle !== false) {
+ B[I.ddel.id] = I
+ }
+ if (I.handles) {
+ var G = I.handles;
+ for (var F = 0,E = G.length; F < E; F++) {
+ B[C(G[F])] = I
+ }
+ }
+ },unregister:function(H) {
+ var J = C(H, false);
+ var I = D[J];
+ if (I) {
+ delete D[J];
+ if (I.handles) {
+ var G = I.handles;
+ for (var F = 0,E = G.length; F < E; F++) {
+ delete B[C(G[F], false)]
+ }
+ }
+ }
+ },getHandle:function(E) {
+ if (typeof E != "string") {
+ E = E.id
+ }
+ return B[E]
+ },getHandleFromEvent:function(F) {
+ var E = Ext.lib.Event.getTarget(F);
+ return E ? B[E.id] : null
+ },getTarget:function(E) {
+ if (typeof E != "string") {
+ E = E.id
+ }
+ return D[E]
+ },getTargetFromEvent:function(F) {
+ var E = Ext.lib.Event.getTarget(F);
+ return E ? D[E.id] || B[E.id] : null
+ }}
+}();
+Ext.dd.StatusProxy = function(A) {
+ Ext.apply(this, A);
+ this.id = this.id || Ext.id();
+ this.el = new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "
+ + this.dropNotAllowed,children:[
+ {
+ tag:"div",
+ cls:"x-dd-drop-icon"
+ },
+ {
+ tag:"div",
+ cls:"x-dd-drag-ghost"
+ }
+ ]},shadow:!A || A.shadow !== false});
+ this.ghost = Ext.get(this.el.dom.childNodes[1]);
+ this.dropStatus = this.dropNotAllowed
+};
+Ext.dd.StatusProxy.prototype
+ = {dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(
+ A) {
+ A = A || this.dropNotAllowed;
+ if (this.dropStatus != A) {
+ this.el.replaceClass(this.dropStatus, A);
+ this.dropStatus = A
+ }
+},reset:function(A) {
+ this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed;
+ this.dropStatus = this.dropNotAllowed;
+ if (A) {
+ this.ghost.update("")
+ }
+},update:function(A) {
+ if (typeof A == "string") {
+ this.ghost.update(A)
+ } else {
+ this.ghost.update("");
+ A.style.margin = "0";
+ this.ghost.dom.appendChild(A)
+ }
+},getEl:function() {
+ return this.el
+},getGhost:function() {
+ return this.ghost
+},hide:function(A) {
+ this.el.hide();
+ if (A) {
+ this.reset(true)
+ }
+},stop:function() {
+ if (this.anim && this.anim.isAnimated && this.anim.isAnimated()) {
+ this.anim.stop()
+ }
+},show:function() {
+ this.el.show()
+},sync:function() {
+ this.el.sync()
+},repair:function(B, C, A) {
+ this.callback = C;
+ this.scope = A;
+ if (B && this.animRepair !== false) {
+ this.el.addClass("x-dd-drag-repair");
+ this.el.hideUnders(true);
+ this.anim = this.el.shift({duration:this.repairDuration
+ || 0.5,easing:"easeOut",xy:B,stopFx:true,callback:this.afterRepair,scope:this})
+ } else {
+ this.afterRepair()
+ }
+},afterRepair:function() {
+ this.hide(true);
+ if (typeof this.callback == "function") {
+ this.callback.call(this.scope || this)
+ }
+ this.callback = null;
+ this.scope = null
+}};
+Ext.dd.DragSource = function(B, A) {
+ this.el = Ext.get(B);
+ if (!this.dragData) {
+ this.dragData = {}
+ }
+ Ext.apply(this, A);
+ if (!this.proxy) {
+ this.proxy = new Ext.dd.StatusProxy()
+ }
+ Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup
+ || this.group, {dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll
+ === true});
+ this.dragging = false
+};
+Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, {dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(
+ A) {
+ return this.dragData
+},onDragEnter:function(C, D) {
+ var B = Ext.dd.DragDropMgr.getDDById(D);
+ this.cachedTarget = B;
+ if (this.beforeDragEnter(B, C, D) !== false) {
+ if (B.isNotifyTarget) {
+ var A = B.notifyEnter(this, C, this.dragData);
+ this.proxy.setStatus(A)
+ } else {
+ this.proxy.setStatus(this.dropAllowed)
+ }
+ if (this.afterDragEnter) {
+ this.afterDragEnter(B, C, D)
+ }
+ }
+},beforeDragEnter:function(B, A, C) {
+ return true
+},alignElWithMouse:function() {
+ Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments);
+ this.proxy.sync()
+},onDragOver:function(C, D) {
+ var B = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(D);
+ if (this.beforeDragOver(B, C, D) !== false) {
+ if (B.isNotifyTarget) {
+ var A = B.notifyOver(this, C, this.dragData);
+ this.proxy.setStatus(A)
+ }
+ if (this.afterDragOver) {
+ this.afterDragOver(B, C, D)
+ }
+ }
+},beforeDragOver:function(B, A, C) {
+ return true
+},onDragOut:function(B, C) {
+ var A = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(C);
+ if (this.beforeDragOut(A, B, C) !== false) {
+ if (A.isNotifyTarget) {
+ A.notifyOut(this, B, this.dragData)
+ }
+ this.proxy.reset();
+ if (this.afterDragOut) {
+ this.afterDragOut(A, B, C)
+ }
+ }
+ this.cachedTarget = null
+},beforeDragOut:function(B, A, C) {
+ return true
+},onDragDrop:function(B, C) {
+ var A = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(C);
+ if (this.beforeDragDrop(A, B, C) !== false) {
+ if (A.isNotifyTarget) {
+ if (A.notifyDrop(this, B, this.dragData)) {
+ this.onValidDrop(A, B, C)
+ } else {
+ this.onInvalidDrop(A, B, C)
+ }
+ } else {
+ this.onValidDrop(A, B, C)
+ }
+ if (this.afterDragDrop) {
+ this.afterDragDrop(A, B, C)
+ }
+ }
+ delete this.cachedTarget
+},beforeDragDrop:function(B, A, C) {
+ return true
+},onValidDrop:function(B, A, C) {
+ this.hideProxy();
+ if (this.afterValidDrop) {
+ this.afterValidDrop(B, A, C)
+ }
+},getRepairXY:function(B, A) {
+ return this.el.getXY()
+},onInvalidDrop:function(B, A, C) {
+ this.beforeInvalidDrop(B, A, C);
+ if (this.cachedTarget) {
+ if (this.cachedTarget.isNotifyTarget) {
+ this.cachedTarget.notifyOut(this, A, this.dragData)
+ }
+ this.cacheTarget = null
+ }
+ this.proxy.repair(this.getRepairXY(A, this.dragData), this.afterRepair, this);
+ if (this.afterInvalidDrop) {
+ this.afterInvalidDrop(A, C)
+ }
+},afterRepair:function() {
+ if (Ext.enableFx) {
+ this.el.highlight(this.hlColor || "c3daf9")
+ }
+ this.dragging = false
+},beforeInvalidDrop:function(B, A, C) {
+ return true
+},handleMouseDown:function(B) {
+ if (this.dragging) {
+ return
+ }
+ var A = this.getDragData(B);
+ if (A && this.onBeforeDrag(A, B) !== false) {
+ this.dragData = A;
+ this.proxy.stop();
+ Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments)
+ }
+},onBeforeDrag:function(A, B) {
+ return true
+},onStartDrag:Ext.emptyFn,startDrag:function(A, B) {
+ this.proxy.reset();
+ this.dragging = true;
+ this.proxy.update("");
+ this.onInitDrag(A, B);
+ this.proxy.show()
+},onInitDrag:function(A, C) {
+ var B = this.el.dom.cloneNode(true);
+ B.id = Ext.id();
+ this.proxy.update(B);
+ this.onStartDrag(A, C);
+ return true
+},getProxy:function() {
+ return this.proxy
+},hideProxy:function() {
+ this.proxy.hide();
+ this.proxy.reset(true);
+ this.dragging = false
+},triggerCacheRefresh:function() {
+ Ext.dd.DDM.refreshCache(this.groups)
+},b4EndDrag:function(A) {
+},endDrag:function(A) {
+ this.onEndDrag(this.dragData, A)
+},onEndDrag:function(A, B) {
+},autoOffset:function(A, B) {
+ this.setDelta(-12, -20)
+}});
+Ext.dd.DropTarget = function(B, A) {
+ this.el = Ext.get(B);
+ Ext.apply(this, A);
+ if (this.containerScroll) {
+ Ext.dd.ScrollManager.register(this.el)
+ }
+ Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup
+ || this.group, {isTarget:true})
+};
+Ext.extend(Ext.dd.DropTarget, Ext.dd.DDTarget, {dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(
+ A, C, B) {
+ if (this.overClass) {
+ this.el.addClass(this.overClass)
+ }
+ return this.dropAllowed
+},notifyOver:function(A, C, B) {
+ return this.dropAllowed
+},notifyOut:function(A, C, B) {
+ if (this.overClass) {
+ this.el.removeClass(this.overClass)
+ }
+},notifyDrop:function(A, C, B) {
+ return false
+}});
+Ext.dd.DragZone = function(B, A) {
+ Ext.dd.DragZone.superclass.constructor.call(this, B, A);
+ if (this.containerScroll) {
+ Ext.dd.ScrollManager.register(this.el)
+ }
+};
+Ext.extend(Ext.dd.DragZone, Ext.dd.DragSource, {getDragData:function(A) {
+ return Ext.dd.Registry.getHandleFromEvent(A)
+},onInitDrag:function(A, B) {
+ this.proxy.update(this.dragData.ddel.cloneNode(true));
+ this.onStartDrag(A, B);
+ return true
+},afterRepair:function() {
+ if (Ext.enableFx) {
+ Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9")
+ }
+ this.dragging = false
+},getRepairXY:function(A) {
+ return Ext.Element.fly(this.dragData.ddel).getXY()
+}});
+Ext.dd.DropZone = function(B, A) {
+ Ext.dd.DropZone.superclass.constructor.call(this, B, A)
+};
+Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, {getTargetFromEvent:function(A) {
+ return Ext.dd.Registry.getTargetFromEvent(A)
+},onNodeEnter:function(D, A, C, B) {
+},onNodeOver:function(D, A, C, B) {
+ return this.dropAllowed
+},onNodeOut:function(D, A, C, B) {
+},onNodeDrop:function(D, A, C, B) {
+ return false
+},onContainerOver:function(A, C, B) {
+ return this.dropNotAllowed
+},onContainerDrop:function(A, C, B) {
+ return false
+},notifyEnter:function(A, C, B) {
+ return this.dropNotAllowed
+},notifyOver:function(A, C, B) {
+ var D = this.getTargetFromEvent(C);
+ if (!D) {
+ if (this.lastOverNode) {
+ this.onNodeOut(this.lastOverNode, A, C, B);
+ this.lastOverNode = null
+ }
+ return this.onContainerOver(A, C, B)
+ }
+ if (this.lastOverNode != D) {
+ if (this.lastOverNode) {
+ this.onNodeOut(this.lastOverNode, A, C, B)
+ }
+ this.onNodeEnter(D, A, C, B);
+ this.lastOverNode = D
+ }
+ return this.onNodeOver(D, A, C, B)
+},notifyOut:function(A, C, B) {
+ if (this.lastOverNode) {
+ this.onNodeOut(this.lastOverNode, A, C, B);
+ this.lastOverNode = null
+ }
+},notifyDrop:function(A, C, B) {
+ if (this.lastOverNode) {
+ this.onNodeOut(this.lastOverNode, A, C, B);
+ this.lastOverNode = null
+ }
+ var D = this.getTargetFromEvent(C);
+ return D ? this.onNodeDrop(D, A, C, B) : this.onContainerDrop(A, C, B)
+},triggerCacheRefresh:function() {
+ Ext.dd.DDM.refreshCache(this.groups)
+}});
+Ext.data.SortTypes = {none:function(A) {
+ return A
+},stripTagsRE:/<\/?[^>]+>/gi,asText:function(A) {
+ return String(A).replace(this.stripTagsRE, "")
+},asUCText:function(A) {
+ return String(A).toUpperCase().replace(this.stripTagsRE, "")
+},asUCString:function(A) {
+ return String(A).toUpperCase()
+},asDate:function(A) {
+ if (!A) {
+ return 0
+ }
+ if (Ext.isDate(A)) {
+ return A.getTime()
+ }
+ return Date.parse(String(A))
+},asFloat:function(A) {
+ var B = parseFloat(String(A).replace(/,/g, ""));
+ if (isNaN(B)) {
+ B = 0
+ }
+ return B
+},asInt:function(A) {
+ var B = parseInt(String(A).replace(/,/g, ""));
+ if (isNaN(B)) {
+ B = 0
+ }
+ return B
+}};
+Ext.data.Record = function(A, B) {
+ this.id = (B || B === 0) ? B : ++Ext.data.Record.AUTO_ID;
+ this.data = A
+};
+Ext.data.Record.create = function(E) {
+ var C = Ext.extend(Ext.data.Record, {});
+ var D = C.prototype;
+ D.fields = new Ext.util.MixedCollection(false, function(F) {
+ return F.name
+ });
+ for (var B = 0,A = E.length; B < A; B++) {
+ D.fields.add(new Ext.data.Field(E[B]))
+ }
+ C.getField = function(F) {
+ return D.fields.get(F)
+ };
+ return C
+};
+Ext.data.Record.AUTO_ID = 1000;
+Ext.data.Record.EDIT = "edit";
+Ext.data.Record.REJECT = "reject";
+Ext.data.Record.COMMIT = "commit";
+Ext.data.Record.prototype
+ = {dirty:false,editing:false,error:null,modified:null,join:function(A) {
+ this.store = A
+},set:function(A, B) {
+ if (String(this.data[A]) == String(B)) {
+ return
+ }
+ this.dirty = true;
+ if (!this.modified) {
+ this.modified = {}
+ }
+ if (typeof this.modified[A] == "undefined") {
+ this.modified[A] = this.data[A]
+ }
+ this.data[A] = B;
+ if (!this.editing && this.store) {
+ this.store.afterEdit(this)
+ }
+},get:function(A) {
+ return this.data[A]
+},beginEdit:function() {
+ this.editing = true;
+ this.modified = {}
+},cancelEdit:function() {
+ this.editing = false;
+ delete this.modified
+},endEdit:function() {
+ this.editing = false;
+ if (this.dirty && this.store) {
+ this.store.afterEdit(this)
+ }
+},reject:function(B) {
+ var A = this.modified;
+ for (var C in A) {
+ if (typeof A[C] != "function") {
+ this.data[C] = A[C]
+ }
+ }
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if (this.store && B !== true) {
+ this.store.afterReject(this)
+ }
+},commit:function(A) {
+ this.dirty = false;
+ delete this.modified;
+ this.editing = false;
+ if (this.store && A !== true) {
+ this.store.afterCommit(this)
+ }
+},getChanges:function() {
+ var A = this.modified,B = {};
+ for (var C in A) {
+ if (A.hasOwnProperty(C)) {
+ B[C] = this.data[C]
+ }
+ }
+ return B
+},hasError:function() {
+ return this.error != null
+},clearError:function() {
+ this.error = null
+},copy:function(A) {
+ return new this.constructor(Ext.apply({}, this.data), A || this.id)
+},isModified:function(A) {
+ return this.modified && this.modified.hasOwnProperty(A)
+}};
+Ext.StoreMgr = Ext.apply(new Ext.util.MixedCollection(), {register:function() {
+ for (var A = 0,B; B = arguments[A]; A++) {
+ this.add(B)
+ }
+},unregister:function() {
+ for (var A = 0,B; B = arguments[A]; A++) {
+ this.remove(this.lookup(B))
+ }
+},lookup:function(A) {
+ return typeof A == "object" ? A : this.get(A)
+},getKey:function(A) {
+ return A.storeId || A.id
+}});
+Ext.data.Store = function(A) {
+ this.data = new Ext.util.MixedCollection(false);
+ this.data.getKey = function(B) {
+ return B.id
+ };
+ this.baseParams = {};
+ this.paramNames
+ = {"start":"start","limit":"limit","sort":"sort","dir":"dir"};
+ if (A && A.data) {
+ this.inlineData = A.data;
+ delete A.data
+ }
+ Ext.apply(this, A);
+ if (this.url && !this.proxy) {
+ this.proxy = new Ext.data.HttpProxy({url:this.url})
+ }
+ if (this.reader) {
+ if (!this.recordType) {
+ this.recordType = this.reader.recordType
+ }
+ if (this.reader.onMetaChange) {
+ this.reader.onMetaChange = this.onMetaChange.createDelegate(this)
+ }
+ }
+ if (this.recordType) {
+ this.fields = this.recordType.prototype.fields
+ }
+ this.modified = [];
+ this.addEvents("datachanged", "metachange", "add", "remove", "update", "clear", "beforeload", "load", "loadexception");
+ if (this.proxy) {
+ this.relayEvents(this.proxy, ["loadexception"])
+ }
+ this.sortToggle = {};
+ if (this.sortInfo) {
+ this.setDefaultSort(this.sortInfo.field, this.sortInfo.direction)
+ }
+ Ext.data.Store.superclass.constructor.call(this);
+ if (this.storeId || this.id) {
+ Ext.StoreMgr.register(this)
+ }
+ if (this.inlineData) {
+ this.loadData(this.inlineData);
+ delete this.inlineData
+ } else {
+ if (this.autoLoad) {
+ this.load.defer(10, this, [typeof this.autoLoad == "object"
+ ? this.autoLoad : undefined])
+ }
+ }
+};
+Ext.extend(Ext.data.Store, Ext.util.Observable, {remoteSort:false,pruneModifiedRecords:false,lastOptions:null,destroy:function() {
+ if (this.id) {
+ Ext.StoreMgr.unregister(this)
+ }
+ this.data = null;
+ this.purgeListeners()
+},add:function(B) {
+ B = [].concat(B);
+ if (B.length < 1) {
+ return
+ }
+ for (var D = 0,A = B.length; D < A; D++) {
+ B[D].join(this)
+ }
+ var C = this.data.length;
+ this.data.addAll(B);
+ if (this.snapshot) {
+ this.snapshot.addAll(B)
+ }
+ this.fireEvent("add", this, B, C)
+},addSorted:function(A) {
+ var B = this.findInsertIndex(A);
+ this.insert(B, A)
+},remove:function(A) {
+ var B = this.data.indexOf(A);
+ this.data.removeAt(B);
+ if (this.pruneModifiedRecords) {
+ this.modified.remove(A)
+ }
+ if (this.snapshot) {
+ this.snapshot.remove(A)
+ }
+ this.fireEvent("remove", this, A, B)
+},removeAll:function() {
+ this.data.clear();
+ if (this.snapshot) {
+ this.snapshot.clear()
+ }
+ if (this.pruneModifiedRecords) {
+ this.modified = []
+ }
+ this.fireEvent("clear", this)
+},insert:function(C, B) {
+ B = [].concat(B);
+ for (var D = 0,A = B.length; D < A; D++) {
+ this.data.insert(C, B[D]);
+ B[D].join(this)
+ }
+ this.fireEvent("add", this, B, C)
+},indexOf:function(A) {
+ return this.data.indexOf(A)
+},indexOfId:function(A) {
+ return this.data.indexOfKey(A)
+},getById:function(A) {
+ return this.data.key(A)
+},getAt:function(A) {
+ return this.data.itemAt(A)
+},getRange:function(B, A) {
+ return this.data.getRange(B, A)
+},storeOptions:function(A) {
+ A = Ext.apply({}, A);
+ delete A.callback;
+ delete A.scope;
+ this.lastOptions = A
+},load:function(B) {
+ B = B || {};
+ if (this.fireEvent("beforeload", this, B) !== false) {
+ this.storeOptions(B);
+ var C = Ext.apply(B.params || {}, this.baseParams);
+ if (this.sortInfo && this.remoteSort) {
+ var A = this.paramNames;
+ C[A["sort"]] = this.sortInfo.field;
+ C[A["dir"]] = this.sortInfo.direction
+ }
+ this.proxy.load(C, this.reader, this.loadRecords, this, B);
+ return true
+ } else {
+ return false
+ }
+},reload:function(A) {
+ this.load(Ext.applyIf(A || {}, this.lastOptions))
+},loadRecords:function(G, B, F) {
+ if (!G || F === false) {
+ if (F !== false) {
+ this.fireEvent("load", this, [], B)
+ }
+ if (B.callback) {
+ B.callback.call(B.scope || this, [], B, false)
+ }
+ return
+ }
+ var E = G.records,D = G.totalRecords || E.length;
+ if (!B || B.add !== true) {
+ if (this.pruneModifiedRecords) {
+ this.modified = []
+ }
+ for (var C = 0,A = E.length; C < A; C++) {
+ E[C].join(this)
+ }
+ if (this.snapshot) {
+ this.data = this.snapshot;
+ delete this.snapshot
+ }
+ this.data.clear();
+ this.data.addAll(E);
+ this.totalLength = D;
+ this.applySort();
+ this.fireEvent("datachanged", this)
+ } else {
+ this.totalLength = Math.max(D, this.data.length + E.length);
+ this.add(E)
+ }
+ this.fireEvent("load", this, E, B);
+ if (B.callback) {
+ B.callback.call(B.scope || this, E, B, true)
+ }
+},loadData:function(C, A) {
+ var B = this.reader.readRecords(C);
+ this.loadRecords(B, {add:A}, true)
+},getCount:function() {
+ return this.data.length || 0
+},getTotalCount:function() {
+ return this.totalLength || 0
+},getSortState:function() {
+ return this.sortInfo
+},applySort:function() {
+ if (this.sortInfo && !this.remoteSort) {
+ var A = this.sortInfo,B = A.field;
+ this.sortData(B, A.direction)
+ }
+},sortData:function(C, D) {
+ D = D || "ASC";
+ var A = this.fields.get(C).sortType;
+ var B = function(F, E) {
+ var H = A(F.data[C]),G = A(E.data[C]);
+ return H > G ? 1 : (H < G ? -1 : 0)
+ };
+ this.data.sort(D, B);
+ if (this.snapshot && this.snapshot != this.data) {
+ this.snapshot.sort(D, B)
+ }
+},setDefaultSort:function(B, A) {
+ A = A ? A.toUpperCase() : "ASC";
+ this.sortInfo = {field:B,direction:A};
+ this.sortToggle[B] = A
+},sort:function(E, C) {
+ var D = this.fields.get(E);
+ if (!D) {
+ return false
+ }
+ if (!C) {
+ if (this.sortInfo && this.sortInfo.field == D.name) {
+ C = (this.sortToggle[D.name] || "ASC").toggle("ASC", "DESC")
+ } else {
+ C = D.sortDir
+ }
+ }
+ var B = (this.sortToggle) ? this.sortToggle[D.name] : null;
+ var A = (this.sortInfo) ? this.sortInfo : null;
+ this.sortToggle[D.name] = C;
+ this.sortInfo = {field:D.name,direction:C};
+ if (!this.remoteSort) {
+ this.applySort();
+ this.fireEvent("datachanged", this)
+ } else {
+ if (!this.load(this.lastOptions)) {
+ if (B) {
+ this.sortToggle[D.name] = B
+ }
+ if (A) {
+ this.sortInfo = A
+ }
+ }
+ }
+},each:function(B, A) {
+ this.data.each(B, A)
+},getModifiedRecords:function() {
+ return this.modified
+},createFilterFn:function(C, B, D, A) {
+ if (Ext.isEmpty(B, false)) {
+ return false
+ }
+ B = this.data.createValueMatcher(B, D, A);
+ return function(E) {
+ return B.test(E.data[C])
+ }
+},sum:function(E, F, A) {
+ var C = this.data.items,B = 0;
+ F = F || 0;
+ A = (A || A === 0) ? A : C.length - 1;
+ for (var D = F; D <= A; D++) {
+ B += (C[D].data[E] || 0)
+ }
+ return B
+},filter:function(D, C, E, A) {
+ var B = this.createFilterFn(D, C, E, A);
+ return B ? this.filterBy(B) : this.clearFilter()
+},filterBy:function(B, A) {
+ this.snapshot = this.snapshot || this.data;
+ this.data = this.queryBy(B, A || this);
+ this.fireEvent("datachanged", this)
+},query:function(D, C, E, A) {
+ var B = this.createFilterFn(D, C, E, A);
+ return B ? this.queryBy(B) : this.data.clone()
+},queryBy:function(B, A) {
+ var C = this.snapshot || this.data;
+ return C.filterBy(B, A || this)
+},find:function(D, C, F, E, A) {
+ var B = this.createFilterFn(D, C, E, A);
+ return B ? this.data.findIndexBy(B, null, F) : -1
+},findBy:function(B, A, C) {
+ return this.data.findIndexBy(B, A, C)
+},collect:function(G, H, B) {
+ var F = (B === true && this.snapshot) ? this.snapshot.items
+ : this.data.items;
+ var I,J,A = [],C = {};
+ for (var D = 0,E = F.length; D < E; D++) {
+ I = F[D].data[G];
+ J = String(I);
+ if ((H || !Ext.isEmpty(I)) && !C[J]) {
+ C[J] = true;
+ A[A.length] = I
+ }
+ }
+ return A
+},clearFilter:function(A) {
+ if (this.isFiltered()) {
+ this.data = this.snapshot;
+ delete this.snapshot;
+ if (A !== true) {
+ this.fireEvent("datachanged", this)
+ }
+ }
+},isFiltered:function() {
+ return this.snapshot && this.snapshot != this.data
+},afterEdit:function(A) {
+ if (this.modified.indexOf(A) == -1) {
+ this.modified.push(A)
+ }
+ this.fireEvent("update", this, A, Ext.data.Record.EDIT)
+},afterReject:function(A) {
+ this.modified.remove(A);
+ this.fireEvent("update", this, A, Ext.data.Record.REJECT)
+},afterCommit:function(A) {
+ this.modified.remove(A);
+ this.fireEvent("update", this, A, Ext.data.Record.COMMIT)
+},commitChanges:function() {
+ var B = this.modified.slice(0);
+ this.modified = [];
+ for (var C = 0,A = B.length; C < A; C++) {
+ B[C].commit()
+ }
+},rejectChanges:function() {
+ var B = this.modified.slice(0);
+ this.modified = [];
+ for (var C = 0,A = B.length; C < A; C++) {
+ B[C].reject()
+ }
+},onMetaChange:function(B, A, C) {
+ this.recordType = A;
+ this.fields = A.prototype.fields;
+ delete this.snapshot;
+ this.sortInfo = B.sortInfo;
+ this.modified = [];
+ this.fireEvent("metachange", this, this.reader.meta)
+},findInsertIndex:function(A) {
+ this.suspendEvents();
+ var C = this.data.clone();
+ this.data.add(A);
+ this.applySort();
+ var B = this.data.indexOf(A);
+ this.data = C;
+ this.resumeEvents();
+ return B
+}});
+Ext.data.SimpleStore = function(A) {
+ Ext.data.SimpleStore.superclass.constructor.call(this, Ext.apply(A, {reader:new Ext.data.ArrayReader({id:A.id}, Ext.data.Record.create(A.fields))}))
+};
+Ext.extend(Ext.data.SimpleStore, Ext.data.Store, {loadData:function(E, B) {
+ if (this.expandData === true) {
+ var D = [];
+ for (var C = 0,A = E.length; C < A; C++) {
+ D[D.length] = [E[C]]
+ }
+ E = D
+ }
+ Ext.data.SimpleStore.superclass.loadData.call(this, E, B)
+}});
+Ext.data.JsonStore = function(A) {
+ Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(A, {proxy:!A.data
+ ? new Ext.data.HttpProxy({url:A.url})
+ : undefined,reader:new Ext.data.JsonReader(A, A.fields)}))
+};
+Ext.extend(Ext.data.JsonStore, Ext.data.Store);
+Ext.data.Field = function(D) {
+ if (typeof D == "string") {
+ D = {name:D}
+ }
+ Ext.apply(this, D);
+ if (!this.type) {
+ this.type = "auto"
+ }
+ var C = Ext.data.SortTypes;
+ if (typeof this.sortType == "string") {
+ this.sortType = C[this.sortType]
+ }
+ if (!this.sortType) {
+ switch (this.type) {case"string":this.sortType
+ = C.asUCString;break;case"date":this.sortType
+ = C.asDate;break;default:this.sortType = C.none}
+ }
+ var E = /[\$,%]/g;
+ if (!this.convert) {
+ var B,A = this.dateFormat;
+ switch (this.type) {case"":case"auto":case undefined:B = function(F) {
+ return F
+ };break;case"string":B = function(F) {
+ return(F === undefined || F === null) ? "" : String(F)
+ };break;case"int":B = function(F) {
+ return F !== undefined && F !== null && F !== ""
+ ? parseInt(String(F).replace(E, ""), 10) : ""
+ };break;case"float":B = function(F) {
+ return F !== undefined && F !== null && F !== ""
+ ? parseFloat(String(F).replace(E, ""), 10) : ""
+ };break;case"bool":case"boolean":B = function(F) {
+ return F === true || F === "true" || F == 1
+ };break;case"date":B = function(G) {
+ if (!G) {
+ return""
+ }
+ if (Ext.isDate(G)) {
+ return G
+ }
+ if (A) {
+ if (A == "timestamp") {
+ return new Date(G * 1000)
+ }
+ if (A == "time") {
+ return new Date(parseInt(G, 10))
+ }
+ return Date.parseDate(G, A)
+ }
+ var F = Date.parse(G);
+ return F ? new Date(F) : null
+ };break}
+ this.convert = B
+ }
+};
+Ext.data.Field.prototype
+ = {dateFormat:null,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC"};
+Ext.data.DataReader = function(A, B) {
+ this.meta = A;
+ this.recordType = Ext.isArray(B) ? Ext.data.Record.create(B) : B
+};
+Ext.data.DataReader.prototype = {};
+Ext.data.DataProxy = function() {
+ this.addEvents("beforeload", "load", "loadexception");
+ Ext.data.DataProxy.superclass.constructor.call(this)
+};
+Ext.extend(Ext.data.DataProxy, Ext.util.Observable);
+Ext.data.MemoryProxy = function(A) {
+ Ext.data.MemoryProxy.superclass.constructor.call(this);
+ this.data = A
+};
+Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, {load:function(F, C, G, D,
+ B) {
+ F = F || {};
+ var A;
+ try {
+ A = C.readRecords(this.data)
+ } catch(E) {
+ this.fireEvent("loadexception", this, B, null, E);
+ G.call(D, null, B, false);
+ return
+ }
+ G.call(D, A, B, true)
+},update:function(B, A) {
+}});
+Ext.data.HttpProxy = function(A) {
+ Ext.data.HttpProxy.superclass.constructor.call(this);
+ this.conn = A;
+ this.useAjax = !A || !A.events
+};
+Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, {getConnection:function() {
+ return this.useAjax ? Ext.Ajax : this.conn
+},load:function(E, B, F, C, A) {
+ if (this.fireEvent("beforeload", this, E) !== false) {
+ var D = {params:E
+ || {},request:{callback:F,scope:C,arg:A},reader:B,callback:this.loadResponse,scope:this};
+ if (this.useAjax) {
+ Ext.applyIf(D, this.conn);
+ if (this.activeRequest) {
+ Ext.Ajax.abort(this.activeRequest)
+ }
+ this.activeRequest = Ext.Ajax.request(D)
+ } else {
+ this.conn.request(D)
+ }
+ } else {
+ F.call(C || this, null, A, false)
+ }
+},loadResponse:function(E, D, B) {
+ delete this.activeRequest;
+ if (!D) {
+ this.fireEvent("loadexception", this, E, B);
+ E.request.callback.call(E.request.scope, null, E.request.arg, false);
+ return
+ }
+ var A;
+ try {
+ A = E.reader.read(B)
+ } catch(C) {
+ this.fireEvent("loadexception", this, E, B, C);
+ E.request.callback.call(E.request.scope, null, E.request.arg, false);
+ return
+ }
+ this.fireEvent("load", this, E, E.request.arg);
+ E.request.callback.call(E.request.scope, A, E.request.arg, true)
+},update:function(A) {
+},updateResponse:function(A) {
+}});
+Ext.data.ScriptTagProxy = function(A) {
+ Ext.data.ScriptTagProxy.superclass.constructor.call(this);
+ Ext.apply(this, A);
+ this.head = document.getElementsByTagName("head")[0]
+};
+Ext.data.ScriptTagProxy.TRANS_ID = 1000;
+Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, {timeout:30000,callbackParam:"callback",nocache:true,load:function(
+ E, F, H, I, J) {
+ if (this.fireEvent("beforeload", this, E) !== false) {
+ var C = Ext.urlEncode(Ext.apply(E, this.extraParams));
+ var B = this.url;
+ B += (B.indexOf("?") != -1 ? "&" : "?") + C;
+ if (this.nocache) {
+ B += "&_dc=" + (new Date().getTime())
+ }
+ var A = ++Ext.data.ScriptTagProxy.TRANS_ID;
+ var K = {id:A,cb:"stcCallback" + A,scriptId:"stcScript"
+ + A,params:E,arg:J,url:B,callback:H,scope:I,reader:F};
+ var D = this;
+ window[K.cb] = function(L) {
+ D.handleResponse(L, K)
+ };
+ B += String.format("&{0}={1}", this.callbackParam, K.cb);
+ if (this.autoAbort !== false) {
+ this.abort()
+ }
+ K.timeoutId = this.handleFailure.defer(this.timeout, this, [K]);
+ var G = document.createElement("script");
+ G.setAttribute("src", B);
+ G.setAttribute("type", "text/javascript");
+ G.setAttribute("id", K.scriptId);
+ this.head.appendChild(G);
+ this.trans = K
+ } else {
+ H.call(I || this, null, J, false)
+ }
+},isLoading:function() {
+ return this.trans ? true : false
+},abort:function() {
+ if (this.isLoading()) {
+ this.destroyTrans(this.trans)
+ }
+},destroyTrans:function(B, A) {
+ this.head.removeChild(document.getElementById(B.scriptId));
+ clearTimeout(B.timeoutId);
+ if (A) {
+ window[B.cb] = undefined;
+ try {
+ delete window[B.cb]
+ } catch(C) {
+ }
+ } else {
+ window[B.cb] = function() {
+ window[B.cb] = undefined;
+ try {
+ delete window[B.cb]
+ } catch(D) {
+ }
+ }
+ }
+},handleResponse:function(D, B) {
+ this.trans = false;
+ this.destroyTrans(B, true);
+ var A;
+ try {
+ A = B.reader.readRecords(D)
+ } catch(C) {
+ this.fireEvent("loadexception", this, D, B.arg, C);
+ B.callback.call(B.scope || window, null, B.arg, false);
+ return
+ }
+ this.fireEvent("load", this, D, B.arg);
+ B.callback.call(B.scope || window, A, B.arg, true)
+},handleFailure:function(A) {
+ this.trans = false;
+ this.destroyTrans(A, false);
+ this.fireEvent("loadexception", this, null, A.arg);
+ A.callback.call(A.scope || window, null, A.arg, false)
+}});
+Ext.data.JsonReader = function(A, B) {
+ A = A || {};
+ Ext.data.JsonReader.superclass.constructor.call(this, A, B || A.fields)
+};
+Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, {read:function(response) {
+ var json = response.responseText;
+ var o = eval("(" + json + ")");
+ if (!o) {
+ throw {message:"JsonReader.read: Json object not found"}
+ }
+ if (o.metaData) {
+ delete this.ef;
+ this.meta = o.metaData;
+ this.recordType = Ext.data.Record.create(o.metaData.fields);
+ this.onMetaChange(this.meta, this.recordType, o)
+ }
+ return this.readRecords(o)
+},onMetaChange:function(A, C, B) {
+},simpleAccess:function(B, A) {
+ return B[A]
+},getJsonAccessor:function() {
+ var A = /[\[\.]/;
+ return function(C) {
+ try {
+ return(A.test(C)) ? new Function("obj", "return obj." + C)
+ : function(D) {
+ return D[C]
+ }
+ } catch(B) {
+ }
+ return Ext.emptyFn
+ }
+}(),readRecords:function(K) {
+ this.jsonData = K;
+ var H = this.meta,A = this.recordType,R = A.prototype.fields,F = R.items,E = R.length;
+ if (!this.ef) {
+ if (H.totalProperty) {
+ this.getTotal = this.getJsonAccessor(H.totalProperty)
+ }
+ if (H.successProperty) {
+ this.getSuccess = this.getJsonAccessor(H.successProperty)
+ }
+ this.getRoot = H.root ? this.getJsonAccessor(H.root) : function(U) {
+ return U
+ };
+ if (H.id) {
+ var Q = this.getJsonAccessor(H.id);
+ this.getId = function(V) {
+ var U = Q(V);
+ return(U === undefined || U === "") ? null : U
+ }
+ } else {
+ this.getId = function() {
+ return null
+ }
+ }
+ this.ef = [];
+ for (var O = 0; O < E; O++) {
+ R = F[O];
+ var T = (R.mapping !== undefined && R.mapping !== null) ? R.mapping
+ : R.name;
+ this.ef[O] = this.getJsonAccessor(T)
+ }
+ }
+ var M = this.getRoot(K),S = M.length,I = S,D = true;
+ if (H.totalProperty) {
+ var G = parseInt(this.getTotal(K), 10);
+ if (!isNaN(G)) {
+ I = G
+ }
+ }
+ if (H.successProperty) {
+ var G = this.getSuccess(K);
+ if (G === false || G === "false") {
+ D = false
+ }
+ }
+ var P = [];
+ for (var O = 0; O < S; O++) {
+ var L = M[O];
+ var B = {};
+ var J = this.getId(L);
+ for (var N = 0; N < E; N++) {
+ R = F[N];
+ var G = this.ef[N](L);
+ B[R.name] = R.convert((G !== undefined) ? G : R.defaultValue, L)
+ }
+ var C = new A(B, J);
+ C.json = L;
+ P[O] = C
+ }
+ return{success:D,records:P,totalRecords:I}
+}});
+Ext.data.XmlReader = function(A, B) {
+ A = A || {};
+ Ext.data.XmlReader.superclass.constructor.call(this, A, B || A.fields)
+};
+Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, {read:function(A) {
+ var B = A.responseXML;
+ if (!B) {
+ throw {message:"XmlReader.read: XML Document not available"}
+ }
+ return this.readRecords(B)
+},readRecords:function(T) {
+ this.xmlData = T;
+ var N = T.documentElement || T;
+ var I = Ext.DomQuery;
+ var B = this.recordType,L = B.prototype.fields;
+ var D = this.meta.id;
+ var G = 0,E = true;
+ if (this.meta.totalRecords) {
+ G = I.selectNumber(this.meta.totalRecords, N, 0)
+ }
+ if (this.meta.success) {
+ var K = I.selectValue(this.meta.success, N, true);
+ E = K !== false && K !== "false"
+ }
+ var Q = [];
+ var U = I.select(this.meta.record, N);
+ for (var P = 0,R = U.length; P < R; P++) {
+ var M = U[P];
+ var A = {};
+ var J = D ? I.selectValue(D, M) : undefined;
+ for (var O = 0,H = L.length; O < H; O++) {
+ var S = L.items[O];
+ var F = I.selectValue(S.mapping || S.name, M, S.defaultValue);
+ F = S.convert(F, M);
+ A[S.name] = F
+ }
+ var C = new B(A, J);
+ C.node = M;
+ Q[Q.length] = C
+ }
+ return{success:E,records:Q,totalRecords:G || Q.length}
+}});
+Ext.data.ArrayReader = Ext.extend(Ext.data.JsonReader, {readRecords:function(
+ C) {
+ var B = this.meta ? this.meta.id : null;
+ var G = this.recordType,K = G.prototype.fields;
+ var E = [];
+ var M = C;
+ for (var I = 0; I < M.length; I++) {
+ var D = M[I];
+ var O = {};
+ var A = ((B || B === 0) && D[B] !== undefined && D[B] !== "" ? D[B]
+ : null);
+ for (var H = 0,P = K.length; H < P; H++) {
+ var L = K.items[H];
+ var F = L.mapping !== undefined && L.mapping !== null ? L.mapping
+ : H;
+ var N = D[F] !== undefined ? D[F] : L.defaultValue;
+ N = L.convert(N, D);
+ O[L.name] = N
+ }
+ var J = new G(O, A);
+ J.json = D;
+ E[E.length] = J
+ }
+ return{records:E,totalRecords:E.length}
+}});
+Ext.data.Tree = function(A) {
+ this.nodeHash = {};
+ this.root = null;
+ if (A) {
+ this.setRootNode(A)
+ }
+ this.addEvents("append", "remove", "move", "insert", "beforeappend", "beforeremove", "beforemove", "beforeinsert");
+ Ext.data.Tree.superclass.constructor.call(this)
+};
+Ext.extend(Ext.data.Tree, Ext.util.Observable, {pathSeparator:"/",proxyNodeEvent:function() {
+ return this.fireEvent.apply(this, arguments)
+},getRootNode:function() {
+ return this.root
+},setRootNode:function(A) {
+ this.root = A;
+ A.ownerTree = this;
+ A.isRoot = true;
+ this.registerNode(A);
+ return A
+},getNodeById:function(A) {
+ return this.nodeHash[A]
+},registerNode:function(A) {
+ this.nodeHash[A.id] = A
+},unregisterNode:function(A) {
+ delete this.nodeHash[A.id]
+},toString:function() {
+ return"[Tree" + (this.id ? " " + this.id : "") + "]"
+}});
+Ext.data.Node = function(A) {
+ this.attributes = A || {};
+ this.leaf = this.attributes.leaf;
+ this.id = this.attributes.id;
+ if (!this.id) {
+ this.id = Ext.id(null, "ynode-");
+ this.attributes.id = this.id
+ }
+ this.childNodes = [];
+ if (!this.childNodes.indexOf) {
+ this.childNodes.indexOf = function(D) {
+ for (var C = 0,B = this.length; C < B; C++) {
+ if (this[C] == D) {
+ return C
+ }
+ }
+ return -1
+ }
+ }
+ this.parentNode = null;
+ this.firstChild = null;
+ this.lastChild = null;
+ this.previousSibling = null;
+ this.nextSibling = null;
+ this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});
+ this.listeners = this.attributes.listeners;
+ Ext.data.Node.superclass.constructor.call(this)
+};
+Ext.extend(Ext.data.Node, Ext.util.Observable, {fireEvent:function(B) {
+ if (Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false) {
+ return false
+ }
+ var A = this.getOwnerTree();
+ if (A) {
+ if (A.proxyNodeEvent.apply(A, arguments) === false) {
+ return false
+ }
+ }
+ return true
+},isLeaf:function() {
+ return this.leaf === true
+},setFirstChild:function(A) {
+ this.firstChild = A
+},setLastChild:function(A) {
+ this.lastChild = A
+},isLast:function() {
+ return(!this.parentNode ? true : this.parentNode.lastChild == this)
+},isFirst:function() {
+ return(!this.parentNode ? true : this.parentNode.firstChild == this)
+},hasChildNodes:function() {
+ return !this.isLeaf() && this.childNodes.length > 0
+},appendChild:function(E) {
+ var F = false;
+ if (Ext.isArray(E)) {
+ F = E
+ } else {
+ if (arguments.length > 1) {
+ F = arguments
+ }
+ }
+ if (F) {
+ for (var D = 0,A = F.length; D < A; D++) {
+ this.appendChild(F[D])
+ }
+ } else {
+ if (this.fireEvent("beforeappend", this.ownerTree, this, E) === false) {
+ return false
+ }
+ var B = this.childNodes.length;
+ var C = E.parentNode;
+ if (C) {
+ if (E.fireEvent("beforemove", E.getOwnerTree(), E, C, this, B)
+ === false) {
+ return false
+ }
+ C.removeChild(E)
+ }
+ B = this.childNodes.length;
+ if (B == 0) {
+ this.setFirstChild(E)
+ }
+ this.childNodes.push(E);
+ E.parentNode = this;
+ var G = this.childNodes[B - 1];
+ if (G) {
+ E.previousSibling = G;
+ G.nextSibling = E
+ } else {
+ E.previousSibling = null
+ }
+ E.nextSibling = null;
+ this.setLastChild(E);
+ E.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("append", this.ownerTree, this, E, B);
+ if (C) {
+ E.fireEvent("move", this.ownerTree, E, C, this, B)
+ }
+ return E
+ }
+},removeChild:function(B) {
+ var A = this.childNodes.indexOf(B);
+ if (A == -1) {
+ return false
+ }
+ if (this.fireEvent("beforeremove", this.ownerTree, this, B) === false) {
+ return false
+ }
+ this.childNodes.splice(A, 1);
+ if (B.previousSibling) {
+ B.previousSibling.nextSibling = B.nextSibling
+ }
+ if (B.nextSibling) {
+ B.nextSibling.previousSibling = B.previousSibling
+ }
+ if (this.firstChild == B) {
+ this.setFirstChild(B.nextSibling)
+ }
+ if (this.lastChild == B) {
+ this.setLastChild(B.previousSibling)
+ }
+ B.setOwnerTree(null);
+ B.parentNode = null;
+ B.previousSibling = null;
+ B.nextSibling = null;
+ this.fireEvent("remove", this.ownerTree, this, B);
+ return B
+},insertBefore:function(D, A) {
+ if (!A) {
+ return this.appendChild(D)
+ }
+ if (D == A) {
+ return false
+ }
+ if (this.fireEvent("beforeinsert", this.ownerTree, this, D, A) === false) {
+ return false
+ }
+ var B = this.childNodes.indexOf(A);
+ var C = D.parentNode;
+ var E = B;
+ if (C == this && this.childNodes.indexOf(D) < B) {
+ E--
+ }
+ if (C) {
+ if (D.fireEvent("beforemove", D.getOwnerTree(), D, C, this, B, A)
+ === false) {
+ return false
+ }
+ C.removeChild(D)
+ }
+ if (E == 0) {
+ this.setFirstChild(D)
+ }
+ this.childNodes.splice(E, 0, D);
+ D.parentNode = this;
+ var F = this.childNodes[E - 1];
+ if (F) {
+ D.previousSibling = F;
+ F.nextSibling = D
+ } else {
+ D.previousSibling = null
+ }
+ D.nextSibling = A;
+ A.previousSibling = D;
+ D.setOwnerTree(this.getOwnerTree());
+ this.fireEvent("insert", this.ownerTree, this, D, A);
+ if (C) {
+ D.fireEvent("move", this.ownerTree, D, C, this, E, A)
+ }
+ return D
+},remove:function() {
+ this.parentNode.removeChild(this);
+ return this
+},item:function(A) {
+ return this.childNodes[A]
+},replaceChild:function(A, B) {
+ this.insertBefore(A, B);
+ this.removeChild(B);
+ return B
+},indexOf:function(A) {
+ return this.childNodes.indexOf(A)
+},getOwnerTree:function() {
+ if (!this.ownerTree) {
+ var A = this;
+ while (A) {
+ if (A.ownerTree) {
+ this.ownerTree = A.ownerTree;
+ break
+ }
+ A = A.parentNode
+ }
+ }
+ return this.ownerTree
+},getDepth:function() {
+ var B = 0;
+ var A = this;
+ while (A.parentNode) {
+ ++B;
+ A = A.parentNode
+ }
+ return B
+},setOwnerTree:function(B) {
+ if (B != this.ownerTree) {
+ if (this.ownerTree) {
+ this.ownerTree.unregisterNode(this)
+ }
+ this.ownerTree = B;
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].setOwnerTree(B)
+ }
+ if (B) {
+ B.registerNode(this)
+ }
+ }
+},getPath:function(B) {
+ B = B || "id";
+ var D = this.parentNode;
+ var A = [this.attributes[B]];
+ while (D) {
+ A.unshift(D.attributes[B]);
+ D = D.parentNode
+ }
+ var C = this.getOwnerTree().pathSeparator;
+ return C + A.join(C)
+},bubble:function(C, B, A) {
+ var D = this;
+ while (D) {
+ if (C.apply(B || D, A || [D]) === false) {
+ break
+ }
+ D = D.parentNode
+ }
+},cascade:function(F, E, B) {
+ if (F.apply(E || this, B || [this]) !== false) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].cascade(F, E, B)
+ }
+ }
+},eachChild:function(F, E, B) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ if (F.apply(E || this, B || [D[C]]) === false) {
+ break
+ }
+ }
+},findChild:function(D, E) {
+ var C = this.childNodes;
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (C[B].attributes[D] == E) {
+ return C[B]
+ }
+ }
+ return null
+},findChildBy:function(E, D) {
+ var C = this.childNodes;
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (E.call(D || C[B], C[B]) === true) {
+ return C[B]
+ }
+ }
+ return null
+},sort:function(E, D) {
+ var C = this.childNodes;
+ var A = C.length;
+ if (A > 0) {
+ var F = D ? function() {
+ E.apply(D, arguments)
+ } : E;
+ C.sort(F);
+ for (var B = 0; B < A; B++) {
+ var G = C[B];
+ G.previousSibling = C[B - 1];
+ G.nextSibling = C[B + 1];
+ if (B == 0) {
+ this.setFirstChild(G)
+ }
+ if (B == A - 1) {
+ this.setLastChild(G)
+ }
+ }
+ }
+},contains:function(A) {
+ return A.isAncestor(this)
+},isAncestor:function(A) {
+ var B = this.parentNode;
+ while (B) {
+ if (B == A) {
+ return true
+ }
+ B = B.parentNode
+ }
+ return false
+},toString:function() {
+ return"[Node" + (this.id ? " " + this.id : "") + "]"
+}});
+Ext.data.GroupingStore
+ = Ext.extend(Ext.data.Store, {remoteGroup:false,groupOnSort:false,clearGrouping:function() {
+ this.groupField = false;
+ if (this.remoteGroup) {
+ if (this.baseParams) {
+ delete this.baseParams.groupBy
+ }
+ this.reload()
+ } else {
+ this.applySort();
+ this.fireEvent("datachanged", this)
+ }
+},groupBy:function(C, B) {
+ if (this.groupField == C && !B) {
+ return
+ }
+ this.groupField = C;
+ if (this.remoteGroup) {
+ if (!this.baseParams) {
+ this.baseParams = {}
+ }
+ this.baseParams["groupBy"] = C
+ }
+ if (this.groupOnSort) {
+ this.sort(C);
+ return
+ }
+ if (this.remoteGroup) {
+ this.reload()
+ } else {
+ var A = this.sortInfo || {};
+ if (A.field != C) {
+ this.applySort()
+ } else {
+ this.sortData(C)
+ }
+ this.fireEvent("datachanged", this)
+ }
+},applySort:function() {
+ Ext.data.GroupingStore.superclass.applySort.call(this);
+ if (!this.groupOnSort && !this.remoteGroup) {
+ var A = this.getGroupState();
+ if (A && A != this.sortInfo.field) {
+ this.sortData(this.groupField)
+ }
+ }
+},applyGrouping:function(A) {
+ if (this.groupField !== false) {
+ this.groupBy(this.groupField, true);
+ return true
+ } else {
+ if (A === true) {
+ this.fireEvent("datachanged", this)
+ }
+ return false
+ }
+},getGroupState:function() {
+ return this.groupOnSort && this.groupField !== false ? (this.sortInfo
+ ? this.sortInfo.field : undefined) : this.groupField
+}});
+Ext.ComponentMgr = function() {
+ var B = new Ext.util.MixedCollection();
+ var A = {};
+ return{register:function(C) {
+ B.add(C)
+ },unregister:function(C) {
+ B.remove(C)
+ },get:function(C) {
+ return B.get(C)
+ },onAvailable:function(E, D, C) {
+ B.on("add", function(F, G) {
+ if (G.id == E) {
+ D.call(C || G, G);
+ B.un("add", D, C)
+ }
+ })
+ },all:B,registerType:function(D, C) {
+ A[D] = C;
+ C.xtype = D
+ },create:function(C, D) {
+ return new A[C.xtype || D](C)
+ }}
+}();
+Ext.reg = Ext.ComponentMgr.registerType;
+Ext.Component = function(B) {
+ B = B || {};
+ if (B.initialConfig) {
+ if (B.isAction) {
+ this.baseAction = B
+ }
+ B = B.initialConfig
+ } else {
+ if (B.tagName || B.dom || typeof B == "string") {
+ B = {applyTo:B,id:B.id || B}
+ }
+ }
+ this.initialConfig = B;
+ Ext.apply(this, B);
+ this.addEvents("disable", "enable", "beforeshow", "show", "beforehide", "hide", "beforerender", "render", "beforedestroy", "destroy", "beforestaterestore", "staterestore", "beforestatesave", "statesave");
+ this.getId();
+ Ext.ComponentMgr.register(this);
+ Ext.Component.superclass.constructor.call(this);
+ if (this.baseAction) {
+ this.baseAction.addComponent(this)
+ }
+ this.initComponent();
+ if (this.plugins) {
+ if (Ext.isArray(this.plugins)) {
+ for (var C = 0,A = this.plugins.length; C < A; C++) {
+ this.plugins[C].init(this)
+ }
+ } else {
+ this.plugins.init(this)
+ }
+ }
+ if (this.stateful !== false) {
+ this.initState(B)
+ }
+ if (this.applyTo) {
+ this.applyToMarkup(this.applyTo);
+ delete this.applyTo
+ } else {
+ if (this.renderTo) {
+ this.render(this.renderTo);
+ delete this.renderTo
+ }
+ }
+};
+Ext.Component.AUTO_ID = 1000;
+Ext.extend(Ext.Component, Ext.util.Observable, {disabledClass:"x-item-disabled",allowDomMove:true,autoShow:false,hideMode:"display",hideParent:false,hidden:false,disabled:false,rendered:false,ctype:"Ext.Component",actionMode:"el",getActionEl:function() {
+ return this[this.actionMode]
+},initComponent:Ext.emptyFn,render:function(B, A) {
+ if (!this.rendered && this.fireEvent("beforerender", this) !== false) {
+ if (!B && this.el) {
+ this.el = Ext.get(this.el);
+ B = this.el.dom.parentNode;
+ this.allowDomMove = false
+ }
+ this.container = Ext.get(B);
+ if (this.ctCls) {
+ this.container.addClass(this.ctCls)
+ }
+ this.rendered = true;
+ if (A !== undefined) {
+ if (typeof A == "number") {
+ A = this.container.dom.childNodes[A]
+ } else {
+ A = Ext.getDom(A)
+ }
+ }
+ this.onRender(this.container, A || null);
+ if (this.autoShow) {
+ this.el.removeClass(["x-hidden","x-hide-" + this.hideMode])
+ }
+ if (this.cls) {
+ this.el.addClass(this.cls);
+ delete this.cls
+ }
+ if (this.style) {
+ this.el.applyStyles(this.style);
+ delete this.style
+ }
+ this.fireEvent("render", this);
+ this.afterRender(this.container);
+ if (this.hidden) {
+ this.hide()
+ }
+ if (this.disabled) {
+ this.disable()
+ }
+ this.initStateEvents()
+ }
+ return this
+},initState:function(A) {
+ if (Ext.state.Manager) {
+ var B = Ext.state.Manager.get(this.stateId || this.id);
+ if (B) {
+ if (this.fireEvent("beforestaterestore", this, B) !== false) {
+ this.applyState(B);
+ this.fireEvent("staterestore", this, B)
+ }
+ }
+ }
+},initStateEvents:function() {
+ if (this.stateEvents) {
+ for (var A = 0,B; B = this.stateEvents[A]; A++) {
+ this.on(B, this.saveState, this, {delay:100})
+ }
+ }
+},applyState:function(B, A) {
+ if (B) {
+ Ext.apply(this, B)
+ }
+},getState:function() {
+ return null
+},saveState:function() {
+ if (Ext.state.Manager) {
+ var A = this.getState();
+ if (this.fireEvent("beforestatesave", this, A) !== false) {
+ Ext.state.Manager.set(this.stateId || this.id, A);
+ this.fireEvent("statesave", this, A)
+ }
+ }
+},applyToMarkup:function(A) {
+ this.allowDomMove = false;
+ this.el = Ext.get(A);
+ this.render(this.el.dom.parentNode)
+},addClass:function(A) {
+ if (this.el) {
+ this.el.addClass(A)
+ } else {
+ this.cls = this.cls ? this.cls + " " + A : A
+ }
+},removeClass:function(A) {
+ if (this.el) {
+ this.el.removeClass(A)
+ } else {
+ if (this.cls) {
+ this.cls = this.cls.split(" ").remove(A).join(" ")
+ }
+ }
+},onRender:function(B, A) {
+ if (this.autoEl) {
+ if (typeof this.autoEl == "string") {
+ this.el = document.createElement(this.autoEl)
+ } else {
+ var C = document.createElement("div");
+ Ext.DomHelper.overwrite(C, this.autoEl);
+ this.el = C.firstChild
+ }
+ if (!this.el.id) {
+ this.el.id = this.getId()
+ }
+ }
+ if (this.el) {
+ this.el = Ext.get(this.el);
+ if (this.allowDomMove !== false) {
+ B.dom.insertBefore(this.el.dom, A)
+ }
+ }
+},getAutoCreate:function() {
+ var A = typeof this.autoCreate == "object" ? this.autoCreate
+ : Ext.apply({}, this.defaultAutoCreate);
+ if (this.id && !A.id) {
+ A.id = this.id
+ }
+ return A
+},afterRender:Ext.emptyFn,destroy:function() {
+ if (this.fireEvent("beforedestroy", this) !== false) {
+ this.beforeDestroy();
+ if (this.rendered) {
+ this.el.removeAllListeners();
+ this.el.remove();
+ if (this.actionMode == "container") {
+ this.container.remove()
+ }
+ }
+ this.onDestroy();
+ Ext.ComponentMgr.unregister(this);
+ this.fireEvent("destroy", this);
+ this.purgeListeners()
+ }
+},beforeDestroy:Ext.emptyFn,onDestroy:Ext.emptyFn,getEl:function() {
+ return this.el
+},getId:function() {
+ return this.id || (this.id = "ext-comp-" + (++Ext.Component.AUTO_ID))
+},getItemId:function() {
+ return this.itemId || this.getId()
+},focus:function(B, A) {
+ if (A) {
+ this.focus.defer(typeof A == "number" ? A : 10, this, [B,false]);
+ return
+ }
+ if (this.rendered) {
+ this.el.focus();
+ if (B === true) {
+ this.el.dom.select()
+ }
+ }
+ return this
+},blur:function() {
+ if (this.rendered) {
+ this.el.blur()
+ }
+ return this
+},disable:function() {
+ if (this.rendered) {
+ this.onDisable()
+ }
+ this.disabled = true;
+ this.fireEvent("disable", this);
+ return this
+},onDisable:function() {
+ this.getActionEl().addClass(this.disabledClass);
+ this.el.dom.disabled = true
+},enable:function() {
+ if (this.rendered) {
+ this.onEnable()
+ }
+ this.disabled = false;
+ this.fireEvent("enable", this);
+ return this
+},onEnable:function() {
+ this.getActionEl().removeClass(this.disabledClass);
+ this.el.dom.disabled = false
+},setDisabled:function(A) {
+ this[A ? "disable" : "enable"]()
+},show:function() {
+ if (this.fireEvent("beforeshow", this) !== false) {
+ this.hidden = false;
+ if (this.autoRender) {
+ this.render(typeof this.autoRender == "boolean" ? Ext.getBody()
+ : this.autoRender)
+ }
+ if (this.rendered) {
+ this.onShow()
+ }
+ this.fireEvent("show", this)
+ }
+ return this
+},onShow:function() {
+ if (this.hideParent) {
+ this.container.removeClass("x-hide-" + this.hideMode)
+ } else {
+ this.getActionEl().removeClass("x-hide-" + this.hideMode)
+ }
+},hide:function() {
+ if (this.fireEvent("beforehide", this) !== false) {
+ this.hidden = true;
+ if (this.rendered) {
+ this.onHide()
+ }
+ this.fireEvent("hide", this)
+ }
+ return this
+},onHide:function() {
+ if (this.hideParent) {
+ this.container.addClass("x-hide-" + this.hideMode)
+ } else {
+ this.getActionEl().addClass("x-hide-" + this.hideMode)
+ }
+},setVisible:function(A) {
+ if (A) {
+ this.show()
+ } else {
+ this.hide()
+ }
+ return this
+},isVisible:function() {
+ return this.rendered && this.getActionEl().isVisible()
+},cloneConfig:function(B) {
+ B = B || {};
+ var C = B.id || Ext.id();
+ var A = Ext.applyIf(B, this.initialConfig);
+ A.id = C;
+ return new this.constructor(A)
+},getXType:function() {
+ return this.constructor.xtype
+},isXType:function(B, A) {
+ return !A ? ("/" + this.getXTypes() + "/").indexOf("/" + B + "/") != -1
+ : this.constructor.xtype == B
+},getXTypes:function() {
+ var A = this.constructor;
+ if (!A.xtypes) {
+ var C = [],B = this;
+ while (B && B.constructor.xtype) {
+ C.unshift(B.constructor.xtype);
+ B = B.constructor.superclass
+ }
+ A.xtypeChain = C;
+ A.xtypes = C.join("/")
+ }
+ return A.xtypes
+},findParentBy:function(A) {
+ for (var B = this.ownerCt; (B != null) && !A(B, this); B = B.ownerCt) {
+ }
+ return B || null
+},findParentByType:function(A) {
+ return typeof A == "function" ? this.findParentBy(function(B) {
+ return B.constructor === A
+ }) : this.findParentBy(function(B) {
+ return B.constructor.xtype === A
+ })
+}});
+Ext.reg("component", Ext.Component);
+Ext.Action = function(A) {
+ this.initialConfig = A;
+ this.items = []
+};
+Ext.Action.prototype = {isAction:true,setText:function(A) {
+ this.initialConfig.text = A;
+ this.callEach("setText", [A])
+},getText:function() {
+ return this.initialConfig.text
+},setIconClass:function(A) {
+ this.initialConfig.iconCls = A;
+ this.callEach("setIconClass", [A])
+},getIconClass:function() {
+ return this.initialConfig.iconCls
+},setDisabled:function(A) {
+ this.initialConfig.disabled = A;
+ this.callEach("setDisabled", [A])
+},enable:function() {
+ this.setDisabled(false)
+},disable:function() {
+ this.setDisabled(true)
+},isDisabled:function() {
+ return this.initialConfig.disabled
+},setHidden:function(A) {
+ this.initialConfig.hidden = A;
+ this.callEach("setVisible", [!A])
+},show:function() {
+ this.setHidden(false)
+},hide:function() {
+ this.setHidden(true)
+},isHidden:function() {
+ return this.initialConfig.hidden
+},setHandler:function(B, A) {
+ this.initialConfig.handler = B;
+ this.initialConfig.scope = A;
+ this.callEach("setHandler", [B,A])
+},each:function(B, A) {
+ Ext.each(this.items, B, A)
+},callEach:function(E, B) {
+ var D = this.items;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C][E].apply(D[C], B)
+ }
+},addComponent:function(A) {
+ this.items.push(A);
+ A.on("destroy", this.removeComponent, this)
+},removeComponent:function(A) {
+ this.items.remove(A)
+},execute:function() {
+ this.initialConfig.handler.apply(this.initialConfig.scope
+ || window, arguments)
+}};
+(function() {
+ Ext.Layer = function(D, C) {
+ D = D || {};
+ var E = Ext.DomHelper;
+ var G = D.parentEl,F = G ? Ext.getDom(G) : document.body;
+ if (C) {
+ this.dom = Ext.getDom(C)
+ }
+ if (!this.dom) {
+ var H = D.dh || {tag:"div",cls:"x-layer"};
+ this.dom = E.append(F, H)
+ }
+ if (D.cls) {
+ this.addClass(D.cls)
+ }
+ this.constrain = D.constrain !== false;
+ this.visibilityMode = Ext.Element.VISIBILITY;
+ if (D.id) {
+ this.id = this.dom.id = D.id
+ } else {
+ this.id = Ext.id(this.dom)
+ }
+ this.zindex = D.zindex || this.getZIndex();
+ this.position("absolute", this.zindex);
+ if (D.shadow) {
+ this.shadowOffset = D.shadowOffset || 4;
+ this.shadow
+ = new Ext.Shadow({offset:this.shadowOffset,mode:D.shadow})
+ } else {
+ this.shadowOffset = 0
+ }
+ this.useShim = D.shim !== false && Ext.useShims;
+ this.useDisplay = D.useDisplay;
+ this.hide()
+ };
+ var A = Ext.Element.prototype;
+ var B = [];
+ Ext.extend(Ext.Layer, Ext.Element, {getZIndex:function() {
+ return this.zindex || parseInt(this.getStyle("z-index"), 10) || 11000
+ },getShim:function() {
+ if (!this.useShim) {
+ return null
+ }
+ if (this.shim) {
+ return this.shim
+ }
+ var D = B.shift();
+ if (!D) {
+ D = this.createShim();
+ D.enableDisplayMode("block");
+ D.dom.style.display = "none";
+ D.dom.style.visibility = "visible"
+ }
+ var C = this.dom.parentNode;
+ if (D.dom.parentNode != C) {
+ C.insertBefore(D.dom, this.dom)
+ }
+ D.setStyle("z-index", this.getZIndex() - 2);
+ this.shim = D;
+ return D
+ },hideShim:function() {
+ if (this.shim) {
+ this.shim.setDisplayed(false);
+ B.push(this.shim);
+ delete this.shim
+ }
+ },disableShadow:function() {
+ if (this.shadow) {
+ this.shadowDisabled = true;
+ this.shadow.hide();
+ this.lastShadowOffset = this.shadowOffset;
+ this.shadowOffset = 0
+ }
+ },enableShadow:function(C) {
+ if (this.shadow) {
+ this.shadowDisabled = false;
+ this.shadowOffset = this.lastShadowOffset;
+ delete this.lastShadowOffset;
+ if (C) {
+ this.sync(true)
+ }
+ }
+ },sync:function(C) {
+ var I = this.shadow;
+ if (!this.updating && this.isVisible() && (I || this.useShim)) {
+ var F = this.getShim();
+ var H = this.getWidth(),E = this.getHeight();
+ var D = this.getLeft(true),J = this.getTop(true);
+ if (I && !this.shadowDisabled) {
+ if (C && !I.isVisible()) {
+ I.show(this)
+ } else {
+ I.realign(D, J, H, E)
+ }
+ if (F) {
+ if (C) {
+ F.show()
+ }
+ var G = I.adjusts,K = F.dom.style;
+ K.left = (Math.min(D, D + G.l)) + "px";
+ K.top = (Math.min(J, J + G.t)) + "px";
+ K.width = (H + G.w) + "px";
+ K.height = (E + G.h) + "px"
+ }
+ } else {
+ if (F) {
+ if (C) {
+ F.show()
+ }
+ F.setSize(H, E);
+ F.setLeftTop(D, J)
+ }
+ }
+ }
+ },destroy:function() {
+ this.hideShim();
+ if (this.shadow) {
+ this.shadow.hide()
+ }
+ this.removeAllListeners();
+ Ext.removeNode(this.dom);
+ Ext.Element.uncache(this.id)
+ },remove:function() {
+ this.destroy()
+ },beginUpdate:function() {
+ this.updating = true
+ },endUpdate:function() {
+ this.updating = false;
+ this.sync(true)
+ },hideUnders:function(C) {
+ if (this.shadow) {
+ this.shadow.hide()
+ }
+ this.hideShim()
+ },constrainXY:function() {
+ if (this.constrain) {
+ var G = Ext.lib.Dom.getViewWidth(),C = Ext.lib.Dom.getViewHeight();
+ var L = Ext.getDoc().getScroll();
+ var K = this.getXY();
+ var H = K[0],F = K[1];
+ var I = this.dom.offsetWidth
+ + this.shadowOffset,D = this.dom.offsetHeight
+ + this.shadowOffset;
+ var E = false;
+ if ((H + I) > G + L.left) {
+ H = G - I - this.shadowOffset;
+ E = true
+ }
+ if ((F + D) > C + L.top) {
+ F = C - D - this.shadowOffset;
+ E = true
+ }
+ if (H < L.left) {
+ H = L.left;
+ E = true
+ }
+ if (F < L.top) {
+ F = L.top;
+ E = true
+ }
+ if (E) {
+ if (this.avoidY) {
+ var J = this.avoidY;
+ if (F <= J && (F + D) >= J) {
+ F = J - D - 5
+ }
+ }
+ K = [H,F];
+ this.storeXY(K);
+ A.setXY.call(this, K);
+ this.sync()
+ }
+ }
+ },isVisible:function() {
+ return this.visible
+ },showAction:function() {
+ this.visible = true;
+ if (this.useDisplay === true) {
+ this.setDisplayed("")
+ } else {
+ if (this.lastXY) {
+ A.setXY.call(this, this.lastXY)
+ } else {
+ if (this.lastLT) {
+ A.setLeftTop.call(this, this.lastLT[0], this.lastLT[1])
+ }
+ }
+ }
+ },hideAction:function() {
+ this.visible = false;
+ if (this.useDisplay === true) {
+ this.setDisplayed(false)
+ } else {
+ this.setLeftTop(-10000, -10000)
+ }
+ },setVisible:function(E, D, G, H, F) {
+ if (E) {
+ this.showAction()
+ }
+ if (D && E) {
+ var C = function() {
+ this.sync(true);
+ if (H) {
+ H()
+ }
+ }.createDelegate(this);
+ A.setVisible.call(this, true, true, G, C, F)
+ } else {
+ if (!E) {
+ this.hideUnders(true)
+ }
+ var C = H;
+ if (D) {
+ C = function() {
+ this.hideAction();
+ if (H) {
+ H()
+ }
+ }.createDelegate(this)
+ }
+ A.setVisible.call(this, E, D, G, C, F);
+ if (E) {
+ this.sync(true)
+ } else {
+ if (!D) {
+ this.hideAction()
+ }
+ }
+ }
+ },storeXY:function(C) {
+ delete this.lastLT;
+ this.lastXY = C
+ },storeLeftTop:function(D, C) {
+ delete this.lastXY;
+ this.lastLT = [D,C]
+ },beforeFx:function() {
+ this.beforeAction();
+ return Ext.Layer.superclass.beforeFx.apply(this, arguments)
+ },afterFx:function() {
+ Ext.Layer.superclass.afterFx.apply(this, arguments);
+ this.sync(this.isVisible())
+ },beforeAction:function() {
+ if (!this.updating && this.shadow) {
+ this.shadow.hide()
+ }
+ },setLeft:function(C) {
+ this.storeLeftTop(C, this.getTop(true));
+ A.setLeft.apply(this, arguments);
+ this.sync()
+ },setTop:function(C) {
+ this.storeLeftTop(this.getLeft(true), C);
+ A.setTop.apply(this, arguments);
+ this.sync()
+ },setLeftTop:function(D, C) {
+ this.storeLeftTop(D, C);
+ A.setLeftTop.apply(this, arguments);
+ this.sync()
+ },setXY:function(F, D, G, H, E) {
+ this.fixDisplay();
+ this.beforeAction();
+ this.storeXY(F);
+ var C = this.createCB(H);
+ A.setXY.call(this, F, D, G, C, E);
+ if (!D) {
+ C()
+ }
+ },createCB:function(D) {
+ var C = this;
+ return function() {
+ C.constrainXY();
+ C.sync(true);
+ if (D) {
+ D()
+ }
+ }
+ },setX:function(C, D, F, G, E) {
+ this.setXY([C,this.getY()], D, F, G, E)
+ },setY:function(G, C, E, F, D) {
+ this.setXY([this.getX(),G], C, E, F, D)
+ },setSize:function(E, F, D, H, I, G) {
+ this.beforeAction();
+ var C = this.createCB(I);
+ A.setSize.call(this, E, F, D, H, C, G);
+ if (!D) {
+ C()
+ }
+ },setWidth:function(E, D, G, H, F) {
+ this.beforeAction();
+ var C = this.createCB(H);
+ A.setWidth.call(this, E, D, G, C, F);
+ if (!D) {
+ C()
+ }
+ },setHeight:function(E, D, G, H, F) {
+ this.beforeAction();
+ var C = this.createCB(H);
+ A.setHeight.call(this, E, D, G, C, F);
+ if (!D) {
+ C()
+ }
+ },setBounds:function(J, H, K, D, I, F, G, E) {
+ this.beforeAction();
+ var C = this.createCB(G);
+ if (!I) {
+ this.storeXY([J,H]);
+ A.setXY.call(this, [J,H]);
+ A.setSize.call(this, K, D, I, F, C, E);
+ C()
+ } else {
+ A.setBounds.call(this, J, H, K, D, I, F, C, E)
+ }
+ return this
+ },setZIndex:function(C) {
+ this.zindex = C;
+ this.setStyle("z-index", C + 2);
+ if (this.shadow) {
+ this.shadow.setZIndex(C + 1)
+ }
+ if (this.shim) {
+ this.shim.setStyle("z-index", C)
+ }
+ }})
+})();
+Ext.Shadow = function(C) {
+ Ext.apply(this, C);
+ if (typeof this.mode != "string") {
+ this.mode = this.defaultMode
+ }
+ var D = this.offset,B = {h:0};
+ var A = Math.floor(this.offset / 2);
+ switch (this.mode.toLowerCase()) {case"drop":B.w = 0;B.l = B.t = D;B.t
+ -= 1;if (Ext.isIE) {
+ B.l -= this.offset + A;
+ B.t -= this.offset + A;
+ B.w -= A;
+ B.h -= A;
+ B.t += 1
+ }break;case"sides":B.w = (D * 2);B.l = -D;B.t = D - 1;if (Ext.isIE) {
+ B.l -= (this.offset - A);
+ B.t -= this.offset + A;
+ B.l += 1;
+ B.w -= (this.offset - A) * 2;
+ B.w -= A + 1;
+ B.h -= 1
+ }break;case"frame":B.w = B.h = (D * 2);B.l = B.t = -D;B.t += 1;B.h
+ -= 2;if (Ext.isIE) {
+ B.l -= (this.offset - A);
+ B.t -= (this.offset - A);
+ B.l += 1;
+ B.w -= (this.offset + A + 1);
+ B.h -= (this.offset + A);
+ B.h += 1
+ }break}
+ this.adjusts = B
+};
+Ext.Shadow.prototype = {offset:4,defaultMode:"drop",show:function(A) {
+ A = Ext.get(A);
+ if (!this.el) {
+ this.el = Ext.Shadow.Pool.pull();
+ if (this.el.dom.nextSibling != A.dom) {
+ this.el.insertBefore(A)
+ }
+ }
+ this.el.setStyle("z-index", this.zIndex
+ || parseInt(A.getStyle("z-index"), 10) - 1);
+ if (Ext.isIE) {
+ this.el.dom.style.filter
+ = "progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="
+ + (this.offset) + ")"
+ }
+ this.realign(A.getLeft(true), A.getTop(true), A.getWidth(), A.getHeight());
+ this.el.dom.style.display = "block"
+},isVisible:function() {
+ return this.el ? true : false
+},realign:function(A, M, L, D) {
+ if (!this.el) {
+ return
+ }
+ var I = this.adjusts,G = this.el.dom,N = G.style;
+ var E = 0;
+ N.left = (A + I.l) + "px";
+ N.top = (M + I.t) + "px";
+ var K = (L + I.w),C = (D + I.h),F = K + "px",J = C + "px";
+ if (N.width != F || N.height != J) {
+ N.width = F;
+ N.height = J;
+ if (!Ext.isIE) {
+ var H = G.childNodes;
+ var B = Math.max(0, (K - 12)) + "px";
+ H[0].childNodes[1].style.width = B;
+ H[1].childNodes[1].style.width = B;
+ H[2].childNodes[1].style.width = B;
+ H[1].style.height = Math.max(0, (C - 12)) + "px"
+ }
+ }
+},hide:function() {
+ if (this.el) {
+ this.el.dom.style.display = "none";
+ Ext.Shadow.Pool.push(this.el);
+ delete this.el
+ }
+},setZIndex:function(A) {
+ this.zIndex = A;
+ if (this.el) {
+ this.el.setStyle("z-index", A)
+ }
+}};
+Ext.Shadow.Pool = function() {
+ var B = [];
+ var A = Ext.isIE ? "<div class=\"x-ie-shadow\"></div>"
+ : "<div class=\"x-shadow\"><div class=\"xst\"><div class=\"xstl\"></div><div class=\"xstc\"></div><div class=\"xstr\"></div></div><div class=\"xsc\"><div class=\"xsml\"></div><div class=\"xsmc\"></div><div class=\"xsmr\"></div></div><div class=\"xsb\"><div class=\"xsbl\"></div><div class=\"xsbc\"></div><div class=\"xsbr\"></div></div></div>";
+ return{pull:function() {
+ var C = B.shift();
+ if (!C) {
+ C = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, A));
+ C.autoBoxAdjust = false
+ }
+ return C
+ },push:function(C) {
+ B.push(C)
+ }}
+}();
+Ext.BoxComponent = Ext.extend(Ext.Component, {initComponent:function() {
+ Ext.BoxComponent.superclass.initComponent.call(this);
+ this.addEvents("resize", "move")
+},boxReady:false,deferHeight:false,setSize:function(B, D) {
+ if (typeof B == "object") {
+ D = B.height;
+ B = B.width
+ }
+ if (!this.boxReady) {
+ this.width = B;
+ this.height = D;
+ return this
+ }
+ if (this.lastSize && this.lastSize.width == B && this.lastSize.height
+ == D) {
+ return this
+ }
+ this.lastSize = {width:B,height:D};
+ var C = this.adjustSize(B, D);
+ var F = C.width,A = C.height;
+ if (F !== undefined || A !== undefined) {
+ var E = this.getResizeEl();
+ if (!this.deferHeight && F !== undefined && A !== undefined) {
+ E.setSize(F, A)
+ } else {
+ if (!this.deferHeight && A !== undefined) {
+ E.setHeight(A)
+ } else {
+ if (F !== undefined) {
+ E.setWidth(F)
+ }
+ }
+ }
+ this.onResize(F, A, B, D);
+ this.fireEvent("resize", this, F, A, B, D)
+ }
+ return this
+},setWidth:function(A) {
+ return this.setSize(A)
+},setHeight:function(A) {
+ return this.setSize(undefined, A)
+},getSize:function() {
+ return this.el.getSize()
+},getPosition:function(A) {
+ if (A === true) {
+ return[this.el.getLeft(true),this.el.getTop(true)]
+ }
+ return this.xy || this.el.getXY()
+},getBox:function(A) {
+ var B = this.el.getSize();
+ if (A === true) {
+ B.x = this.el.getLeft(true);
+ B.y = this.el.getTop(true)
+ } else {
+ var C = this.xy || this.el.getXY();
+ B.x = C[0];
+ B.y = C[1]
+ }
+ return B
+},updateBox:function(A) {
+ this.setSize(A.width, A.height);
+ this.setPagePosition(A.x, A.y);
+ return this
+},getResizeEl:function() {
+ return this.resizeEl || this.el
+},getPositionEl:function() {
+ return this.positionEl || this.el
+},setPosition:function(A, F) {
+ if (A && typeof A[1] == "number") {
+ F = A[1];
+ A = A[0]
+ }
+ this.x = A;
+ this.y = F;
+ if (!this.boxReady) {
+ return this
+ }
+ var B = this.adjustPosition(A, F);
+ var E = B.x,D = B.y;
+ var C = this.getPositionEl();
+ if (E !== undefined || D !== undefined) {
+ if (E !== undefined && D !== undefined) {
+ C.setLeftTop(E, D)
+ } else {
+ if (E !== undefined) {
+ C.setLeft(E)
+ } else {
+ if (D !== undefined) {
+ C.setTop(D)
+ }
+ }
+ }
+ this.onPosition(E, D);
+ this.fireEvent("move", this, E, D)
+ }
+ return this
+},setPagePosition:function(A, C) {
+ if (A && typeof A[1] == "number") {
+ C = A[1];
+ A = A[0]
+ }
+ this.pageX = A;
+ this.pageY = C;
+ if (!this.boxReady) {
+ return
+ }
+ if (A === undefined || C === undefined) {
+ return
+ }
+ var B = this.el.translatePoints(A, C);
+ this.setPosition(B.left, B.top);
+ return this
+},onRender:function(B, A) {
+ Ext.BoxComponent.superclass.onRender.call(this, B, A);
+ if (this.resizeEl) {
+ this.resizeEl = Ext.get(this.resizeEl)
+ }
+ if (this.positionEl) {
+ this.positionEl = Ext.get(this.positionEl)
+ }
+},afterRender:function() {
+ Ext.BoxComponent.superclass.afterRender.call(this);
+ this.boxReady = true;
+ this.setSize(this.width, this.height);
+ if (this.x || this.y) {
+ this.setPosition(this.x, this.y)
+ } else {
+ if (this.pageX || this.pageY) {
+ this.setPagePosition(this.pageX, this.pageY)
+ }
+ }
+},syncSize:function() {
+ delete this.lastSize;
+ this.setSize(this.autoWidth ? undefined
+ : this.el.getWidth(), this.autoHeight ? undefined
+ : this.el.getHeight());
+ return this
+},onResize:function(D, B, A, C) {
+},onPosition:function(A, B) {
+},adjustSize:function(A, B) {
+ if (this.autoWidth) {
+ A = "auto"
+ }
+ if (this.autoHeight) {
+ B = "auto"
+ }
+ return{width:A,height:B}
+},adjustPosition:function(A, B) {
+ return{x:A,y:B}
+}});
+Ext.reg("box", Ext.BoxComponent);
+Ext.SplitBar = function(C, E, B, D, A) {
+ this.el = Ext.get(C, true);
+ this.el.dom.unselectable = "on";
+ this.resizingEl = Ext.get(E, true);
+ this.orientation = B || Ext.SplitBar.HORIZONTAL;
+ this.minSize = 0;
+ this.maxSize = 2000;
+ this.animate = false;
+ this.useShim = false;
+ this.shim = null;
+ if (!A) {
+ this.proxy = Ext.SplitBar.createProxy(this.orientation)
+ } else {
+ this.proxy = Ext.get(A).dom
+ }
+ this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId:this.proxy.id});
+ this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this);
+ this.dd.endDrag = this.onEndProxyDrag.createDelegate(this);
+ this.dragSpecs = {};
+ this.adapter = new Ext.SplitBar.BasicLayoutAdapter();
+ this.adapter.init(this);
+ if (this.orientation == Ext.SplitBar.HORIZONTAL) {
+ this.placement = D || (this.el.getX() > this.resizingEl.getX()
+ ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT);
+ this.el.addClass("x-splitbar-h")
+ } else {
+ this.placement = D || (this.el.getY() > this.resizingEl.getY()
+ ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM);
+ this.el.addClass("x-splitbar-v")
+ }
+ this.addEvents("resize", "moved", "beforeresize", "beforeapply");
+ Ext.SplitBar.superclass.constructor.call(this)
+};
+Ext.extend(Ext.SplitBar, Ext.util.Observable, {onStartProxyDrag:function(A, E) {
+ this.fireEvent("beforeresize", this);
+ this.overlay
+ = Ext.DomHelper.append(document.body, {cls:"x-drag-overlay",html:"&#160;"}, true);
+ this.overlay.unselectable();
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+ Ext.get(this.proxy).setDisplayed("block");
+ var C = this.adapter.getElementSize(this);
+ this.activeMinSize = this.getMinimumSize();
+ this.activeMaxSize = this.getMaximumSize();
+ var D = C - this.activeMinSize;
+ var B = Math.max(this.activeMaxSize - C, 0);
+ if (this.orientation == Ext.SplitBar.HORIZONTAL) {
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(this.placement == Ext.SplitBar.LEFT ? D
+ : B, this.placement == Ext.SplitBar.LEFT ? B : D);
+ this.dd.setYConstraint(0, 0)
+ } else {
+ this.dd.resetConstraints();
+ this.dd.setXConstraint(0, 0);
+ this.dd.setYConstraint(this.placement == Ext.SplitBar.TOP ? D
+ : B, this.placement == Ext.SplitBar.TOP ? B : D)
+ }
+ this.dragSpecs.startSize = C;
+ this.dragSpecs.startPoint = [A,E];
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, A, E)
+},onEndProxyDrag:function(C) {
+ Ext.get(this.proxy).setDisplayed(false);
+ var B = Ext.lib.Event.getXY(C);
+ if (this.overlay) {
+ this.overlay.remove();
+ delete this.overlay
+ }
+ var A;
+ if (this.orientation == Ext.SplitBar.HORIZONTAL) {
+ A = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.LEFT
+ ? B[0] - this.dragSpecs.startPoint[0]
+ : this.dragSpecs.startPoint[0] - B[0])
+ } else {
+ A = this.dragSpecs.startSize + (this.placement == Ext.SplitBar.TOP
+ ? B[1] - this.dragSpecs.startPoint[1]
+ : this.dragSpecs.startPoint[1] - B[1])
+ }
+ A = Math.min(Math.max(A, this.activeMinSize), this.activeMaxSize);
+ if (A != this.dragSpecs.startSize) {
+ if (this.fireEvent("beforeapply", this, A) !== false) {
+ this.adapter.setElementSize(this, A);
+ this.fireEvent("moved", this, A);
+ this.fireEvent("resize", this, A)
+ }
+ }
+},getAdapter:function() {
+ return this.adapter
+},setAdapter:function(A) {
+ this.adapter = A;
+ this.adapter.init(this)
+},getMinimumSize:function() {
+ return this.minSize
+},setMinimumSize:function(A) {
+ this.minSize = A
+},getMaximumSize:function() {
+ return this.maxSize
+},setMaximumSize:function(A) {
+ this.maxSize = A
+},setCurrentSize:function(B) {
+ var A = this.animate;
+ this.animate = false;
+ this.adapter.setElementSize(this, B);
+ this.animate = A
+},destroy:function(A) {
+ if (this.shim) {
+ this.shim.remove()
+ }
+ this.dd.unreg();
+ Ext.removeNode(this.proxy);
+ if (A) {
+ this.el.remove()
+ }
+}});
+Ext.SplitBar.createProxy = function(B) {
+ var C = new Ext.Element(document.createElement("div"));
+ C.unselectable();
+ var A = "x-splitbar-proxy";
+ C.addClass(A + " " + (B == Ext.SplitBar.HORIZONTAL ? A + "-h" : A + "-v"));
+ document.body.appendChild(C.dom);
+ return C.dom
+};
+Ext.SplitBar.BasicLayoutAdapter = function() {
+};
+Ext.SplitBar.BasicLayoutAdapter.prototype = {init:function(A) {
+},getElementSize:function(A) {
+ if (A.orientation == Ext.SplitBar.HORIZONTAL) {
+ return A.resizingEl.getWidth()
+ } else {
+ return A.resizingEl.getHeight()
+ }
+},setElementSize:function(B, A, C) {
+ if (B.orientation == Ext.SplitBar.HORIZONTAL) {
+ if (!B.animate) {
+ B.resizingEl.setWidth(A);
+ if (C) {
+ C(B, A)
+ }
+ } else {
+ B.resizingEl.setWidth(A, true, 0.1, C, "easeOut")
+ }
+ } else {
+ if (!B.animate) {
+ B.resizingEl.setHeight(A);
+ if (C) {
+ C(B, A)
+ }
+ } else {
+ B.resizingEl.setHeight(A, true, 0.1, C, "easeOut")
+ }
+ }
+}};
+Ext.SplitBar.AbsoluteLayoutAdapter = function(A) {
+ this.basic = new Ext.SplitBar.BasicLayoutAdapter();
+ this.container = Ext.get(A)
+};
+Ext.SplitBar.AbsoluteLayoutAdapter.prototype = {init:function(A) {
+ this.basic.init(A)
+},getElementSize:function(A) {
+ return this.basic.getElementSize(A)
+},setElementSize:function(B, A, C) {
+ this.basic.setElementSize(B, A, this.moveSplitter.createDelegate(this, [B]))
+},moveSplitter:function(A) {
+ var B = Ext.SplitBar;
+ switch (A.placement) {case B.LEFT:A.el.setX(A.resizingEl.getRight());break;case B.RIGHT:A.el.setStyle("right", (this.container.getWidth()
+ - A.resizingEl.getLeft())
+ + "px");break;case B.TOP:A.el.setY(A.resizingEl.getBottom());break;case B.BOTTOM:A.el.setY(A.resizingEl.getTop()
+ - A.el.getHeight());break}
+}};
+Ext.SplitBar.VERTICAL = 1;
+Ext.SplitBar.HORIZONTAL = 2;
+Ext.SplitBar.LEFT = 1;
+Ext.SplitBar.RIGHT = 2;
+Ext.SplitBar.TOP = 3;
+Ext.SplitBar.BOTTOM = 4;
+Ext.Container
+ = Ext.extend(Ext.BoxComponent, {autoDestroy:true,defaultType:"panel",initComponent:function() {
+ Ext.Container.superclass.initComponent.call(this);
+ this.addEvents("afterlayout", "beforeadd", "beforeremove", "add", "remove");
+ var A = this.items;
+ if (A) {
+ delete this.items;
+ if (Ext.isArray(A)) {
+ this.add.apply(this, A)
+ } else {
+ this.add(A)
+ }
+ }
+},initItems:function() {
+ if (!this.items) {
+ this.items = new Ext.util.MixedCollection(false, this.getComponentId);
+ this.getLayout()
+ }
+},setLayout:function(A) {
+ if (this.layout && this.layout != A) {
+ this.layout.setContainer(null)
+ }
+ this.initItems();
+ this.layout = A;
+ A.setContainer(this)
+},render:function() {
+ Ext.Container.superclass.render.apply(this, arguments);
+ if (this.layout) {
+ if (typeof this.layout == "string") {
+ this.layout
+ = new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)
+ }
+ this.setLayout(this.layout);
+ if (this.activeItem !== undefined) {
+ var A = this.activeItem;
+ delete this.activeItem;
+ this.layout.setActiveItem(A);
+ return
+ }
+ }
+ if (!this.ownerCt) {
+ this.doLayout()
+ }
+ if (this.monitorResize === true) {
+ Ext.EventManager.onWindowResize(this.doLayout, this, [false])
+ }
+},getLayoutTarget:function() {
+ return this.el
+},getComponentId:function(A) {
+ return A.itemId || A.id
+},add:function(C) {
+ if (!this.items) {
+ this.initItems()
+ }
+ var B = arguments,A = B.length;
+ if (A > 1) {
+ for (var D = 0; D < A; D++) {
+ this.add(B[D])
+ }
+ return
+ }
+ var F = this.lookupComponent(this.applyDefaults(C));
+ var E = this.items.length;
+ if (this.fireEvent("beforeadd", this, F, E) !== false && this.onBeforeAdd(F)
+ !== false) {
+ this.items.add(F);
+ F.ownerCt = this;
+ this.fireEvent("add", this, F, E)
+ }
+ return F
+},insert:function(D, C) {
+ if (!this.items) {
+ this.initItems()
+ }
+ var B = arguments,A = B.length;
+ if (A > 2) {
+ for (var E = A - 1; E >= 1; --E) {
+ this.insert(D, B[E])
+ }
+ return
+ }
+ var F = this.lookupComponent(this.applyDefaults(C));
+ if (F.ownerCt == this && this.items.indexOf(F) < D) {
+ --D
+ }
+ if (this.fireEvent("beforeadd", this, F, D) !== false && this.onBeforeAdd(F)
+ !== false) {
+ this.items.insert(D, F);
+ F.ownerCt = this;
+ this.fireEvent("add", this, F, D)
+ }
+ return F
+},applyDefaults:function(A) {
+ if (this.defaults) {
+ if (typeof A == "string") {
+ A = Ext.ComponentMgr.get(A);
+ Ext.apply(A, this.defaults)
+ } else {
+ if (!A.events) {
+ Ext.applyIf(A, this.defaults)
+ } else {
+ Ext.apply(A, this.defaults)
+ }
+ }
+ }
+ return A
+},onBeforeAdd:function(A) {
+ if (A.ownerCt) {
+ A.ownerCt.remove(A, false)
+ }
+ if (this.hideBorders === true) {
+ A.border = (A.border === true)
+ }
+},remove:function(A, B) {
+ var C = this.getComponent(A);
+ if (C && this.fireEvent("beforeremove", this, C) !== false) {
+ this.items.remove(C);
+ delete C.ownerCt;
+ if (B === true || (B !== false && this.autoDestroy)) {
+ C.destroy()
+ }
+ if (this.layout && this.layout.activeItem == C) {
+ delete this.layout.activeItem
+ }
+ this.fireEvent("remove", this, C)
+ }
+ return C
+},getComponent:function(A) {
+ if (typeof A == "object") {
+ return A
+ }
+ return this.items.get(A)
+},lookupComponent:function(A) {
+ if (typeof A == "string") {
+ return Ext.ComponentMgr.get(A)
+ } else {
+ if (!A.events) {
+ return this.createComponent(A)
+ }
+ }
+ return A
+},createComponent:function(A) {
+ return Ext.ComponentMgr.create(A, this.defaultType)
+},doLayout:function(D) {
+ if (this.rendered && this.layout) {
+ this.layout.layout()
+ }
+ if (D !== false && this.items) {
+ var C = this.items.items;
+ for (var B = 0,A = C.length; B < A; B++) {
+ var E = C[B];
+ if (E.doLayout) {
+ E.doLayout()
+ }
+ }
+ }
+},getLayout:function() {
+ if (!this.layout) {
+ var A = new Ext.layout.ContainerLayout(this.layoutConfig);
+ this.setLayout(A)
+ }
+ return this.layout
+},onDestroy:function() {
+ if (this.items) {
+ var C = this.items.items;
+ for (var B = 0,A = C.length; B < A; B++) {
+ Ext.destroy(C[B])
+ }
+ }
+ if (this.monitorResize) {
+ Ext.EventManager.removeResizeListener(this.doLayout, this)
+ }
+ Ext.Container.superclass.onDestroy.call(this)
+},bubble:function(C, B, A) {
+ var D = this;
+ while (D) {
+ if (C.apply(B || D, A || [D]) === false) {
+ break
+ }
+ D = D.ownerCt
+ }
+},cascade:function(F, E, B) {
+ if (F.apply(E || this, B || [this]) !== false) {
+ if (this.items) {
+ var D = this.items.items;
+ for (var C = 0,A = D.length; C < A; C++) {
+ if (D[C].cascade) {
+ D[C].cascade(F, E, B)
+ } else {
+ F.apply(E || this, B || [D[C]])
+ }
+ }
+ }
+ }
+},findById:function(C) {
+ var A,B = this;
+ this.cascade(function(D) {
+ if (B != D && D.id === C) {
+ A = D;
+ return false
+ }
+ });
+ return A || null
+},findByType:function(A) {
+ return typeof A == "function" ? this.findBy(function(B) {
+ return B.constructor === A
+ }) : this.findBy(function(B) {
+ return B.constructor.xtype === A
+ })
+},find:function(B, A) {
+ return this.findBy(function(C) {
+ return C[B] === A
+ })
+},findBy:function(D, C) {
+ var A = [],B = this;
+ this.cascade(function(E) {
+ if (B != E && D.call(C || E, E, B) === true) {
+ A.push(E)
+ }
+ });
+ return A
+}});
+Ext.Container.LAYOUTS = {};
+Ext.reg("container", Ext.Container);
+Ext.layout.ContainerLayout = function(A) {
+ Ext.apply(this, A)
+};
+Ext.layout.ContainerLayout.prototype
+ = {monitorResize:false,activeItem:null,layout:function() {
+ var A = this.container.getLayoutTarget();
+ this.onLayout(this.container, A);
+ this.container.fireEvent("afterlayout", this.container, this)
+},onLayout:function(A, B) {
+ this.renderAll(A, B)
+},isValidParent:function(C, B) {
+ var A = C.getPositionEl ? C.getPositionEl() : C.getEl();
+ return A.dom.parentNode == B.dom
+},renderAll:function(D, E) {
+ var B = D.items.items;
+ for (var C = 0,A = B.length; C < A; C++) {
+ var F = B[C];
+ if (F && (!F.rendered || !this.isValidParent(F, E))) {
+ this.renderItem(F, C, E)
+ }
+ }
+},renderItem:function(D, A, C) {
+ if (D && !D.rendered) {
+ D.render(C, A);
+ if (this.extraCls) {
+ var B = D.getPositionEl ? D.getPositionEl() : D;
+ B.addClass(this.extraCls)
+ }
+ if (this.renderHidden && D != this.activeItem) {
+ D.hide()
+ }
+ } else {
+ if (D && !this.isValidParent(D, C)) {
+ if (this.extraCls) {
+ D.addClass(this.extraCls)
+ }
+ if (typeof A == "number") {
+ A = C.dom.childNodes[A]
+ }
+ C.dom.insertBefore(D.getEl().dom, A || null);
+ if (this.renderHidden && D != this.activeItem) {
+ D.hide()
+ }
+ }
+ }
+},onResize:function() {
+ if (this.container.collapsed) {
+ return
+ }
+ var A = this.container.bufferResize;
+ if (A) {
+ if (!this.resizeTask) {
+ this.resizeTask = new Ext.util.DelayedTask(this.layout, this);
+ this.resizeBuffer = typeof A == "number" ? A : 100
+ }
+ this.resizeTask.delay(this.resizeBuffer)
+ } else {
+ this.layout()
+ }
+},setContainer:function(A) {
+ if (this.monitorResize && A != this.container) {
+ if (this.container) {
+ this.container.un("resize", this.onResize, this)
+ }
+ if (A) {
+ A.on("resize", this.onResize, this)
+ }
+ }
+ this.container = A
+},parseMargins:function(B) {
+ var C = B.split(" ");
+ var A = C.length;
+ if (A == 1) {
+ C[1] = C[0];
+ C[2] = C[0];
+ C[3] = C[0]
+ }
+ if (A == 2) {
+ C[2] = C[0];
+ C[3] = C[1]
+ }
+ return{top:parseInt(C[0], 10) || 0,right:parseInt(C[1], 10)
+ || 0,bottom:parseInt(C[2], 10) || 0,left:parseInt(C[3], 10) || 0}
+}};
+Ext.Container.LAYOUTS["auto"] = Ext.layout.ContainerLayout;
+Ext.layout.FitLayout
+ = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true,onLayout:function(
+ A, B) {
+ Ext.layout.FitLayout.superclass.onLayout.call(this, A, B);
+ if (!this.container.collapsed) {
+ this.setItemSize(this.activeItem || A.items.itemAt(0), B.getStyleSize())
+ }
+},setItemSize:function(B, A) {
+ if (B && A.height > 0) {
+ B.setSize(A)
+ }
+}});
+Ext.Container.LAYOUTS["fit"] = Ext.layout.FitLayout;
+Ext.layout.CardLayout
+ = Ext.extend(Ext.layout.FitLayout, {deferredRender:false,renderHidden:true,setActiveItem:function(
+ A) {
+ A = this.container.getComponent(A);
+ if (this.activeItem != A) {
+ if (this.activeItem) {
+ this.activeItem.hide()
+ }
+ this.activeItem = A;
+ A.show();
+ this.layout()
+ }
+},renderAll:function(A, B) {
+ if (this.deferredRender) {
+ this.renderItem(this.activeItem, undefined, B)
+ } else {
+ Ext.layout.CardLayout.superclass.renderAll.call(this, A, B)
+ }
+}});
+Ext.Container.LAYOUTS["card"] = Ext.layout.CardLayout;
+Ext.layout.AnchorLayout
+ = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true,getAnchorViewSize:function(
+ A, B) {
+ return B.dom == document.body ? B.getViewSize() : B.getStyleSize()
+},onLayout:function(F, I) {
+ Ext.layout.AnchorLayout.superclass.onLayout.call(this, F, I);
+ var O = this.getAnchorViewSize(F, I);
+ var M = O.width,E = O.height;
+ if (M < 20 || E < 20) {
+ return
+ }
+ var B,K;
+ if (F.anchorSize) {
+ if (typeof F.anchorSize == "number") {
+ B = F.anchorSize
+ } else {
+ B = F.anchorSize.width;
+ K = F.anchorSize.height
+ }
+ } else {
+ B = F.initialConfig.width;
+ K = F.initialConfig.height
+ }
+ var H = F.items.items,G = H.length,D,J,L,C,A;
+ for (D = 0; D < G; D++) {
+ J = H[D];
+ if (J.anchor) {
+ L = J.anchorSpec;
+ if (!L) {
+ var N = J.anchor.split(" ");
+ J.anchorSpec = L
+ = {right:this.parseAnchor(N[0], J.initialConfig.width, B),bottom:this.parseAnchor(N[1], J.initialConfig.height, K)}
+ }
+ C = L.right ? this.adjustWidthAnchor(L.right(M), J) : undefined;
+ A = L.bottom ? this.adjustHeightAnchor(L.bottom(E), J) : undefined;
+ if (C || A) {
+ J.setSize(C || undefined, A || undefined)
+ }
+ }
+ }
+},parseAnchor:function(B, F, A) {
+ if (B && B != "none") {
+ var D;
+ if (/^(r|right|b|bottom)$/i.test(B)) {
+ var E = A - F;
+ return function(G) {
+ if (G !== D) {
+ D = G;
+ return G - E
+ }
+ }
+ } else {
+ if (B.indexOf("%") != -1) {
+ var C = parseFloat(B.replace("%", "")) * 0.01;
+ return function(G) {
+ if (G !== D) {
+ D = G;
+ return Math.floor(G * C)
+ }
+ }
+ } else {
+ B = parseInt(B, 10);
+ if (!isNaN(B)) {
+ return function(G) {
+ if (G !== D) {
+ D = G;
+ return G + B
+ }
+ }
+ }
+ }
+ }
+ }
+ return false
+},adjustWidthAnchor:function(B, A) {
+ return B
+},adjustHeightAnchor:function(B, A) {
+ return B
+}});
+Ext.Container.LAYOUTS["anchor"] = Ext.layout.AnchorLayout;
+Ext.layout.ColumnLayout
+ = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true,extraCls:"x-column",scrollOffset:0,isValidParent:function(
+ B, A) {
+ return B.getEl().dom.parentNode == this.innerCt.dom
+},onLayout:function(C, F) {
+ var D = C.items.items,E = D.length,G,A;
+ if (!this.innerCt) {
+ F.addClass("x-column-layout-ct");
+ this.innerCt = F.createChild({cls:"x-column-inner"});
+ this.innerCt.createChild({cls:"x-clear"})
+ }
+ this.renderAll(C, this.innerCt);
+ var J = F.getViewSize();
+ if (J.width < 1 && J.height < 1) {
+ return
+ }
+ var H = J.width - F.getPadding("lr") - this.scrollOffset,B = J.height
+ - F.getPadding("tb"),I = H;
+ this.innerCt.setWidth(H);
+ for (A = 0; A < E; A++) {
+ G = D[A];
+ if (!G.columnWidth) {
+ I -= (G.getSize().width + G.getEl().getMargins("lr"))
+ }
+ }
+ I = I < 0 ? 0 : I;
+ for (A = 0; A < E; A++) {
+ G = D[A];
+ if (G.columnWidth) {
+ G.setSize(Math.floor(G.columnWidth * I)
+ - G.getEl().getMargins("lr"))
+ }
+ }
+}});
+Ext.Container.LAYOUTS["column"] = Ext.layout.ColumnLayout;
+Ext.layout.BorderLayout
+ = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:true,rendered:false,onLayout:function(
+ B, X) {
+ var C;
+ if (!this.rendered) {
+ X.position();
+ X.addClass("x-border-layout-ct");
+ var M = B.items.items;
+ C = [];
+ for (var Q = 0,R = M.length; Q < R; Q++) {
+ var U = M[Q];
+ var F = U.region;
+ if (U.collapsed) {
+ C.push(U)
+ }
+ U.collapsed = false;
+ if (!U.rendered) {
+ U.cls = U.cls ? U.cls + " x-border-panel" : "x-border-panel";
+ U.render(X, Q)
+ }
+ this[F] = F != "center" && U.split
+ ? new Ext.layout.BorderLayout.SplitRegion(this, U.initialConfig, F)
+ : new Ext.layout.BorderLayout.Region(this, U.initialConfig, F);
+ this[F].render(X, U)
+ }
+ this.rendered = true
+ }
+ var L = X.getViewSize();
+ if (L.width < 20 || L.height < 20) {
+ if (C) {
+ this.restoreCollapsed = C
+ }
+ return
+ } else {
+ if (this.restoreCollapsed) {
+ C = this.restoreCollapsed;
+ delete this.restoreCollapsed
+ }
+ }
+ var J = L.width,S = L.height;
+ var I = J,P = S,G = 0,H = 0;
+ var N = this.north,K = this.south,E = this.west,T = this.east,U = this.center;
+ if (!U) {
+ throw"No center region defined in BorderLayout " + B.id
+ }
+ if (N && N.isVisible()) {
+ var W = N.getSize();
+ var O = N.getMargins();
+ W.width = J - (O.left + O.right);
+ W.x = O.left;
+ W.y = O.top;
+ G = W.height + W.y + O.bottom;
+ P -= G;
+ N.applyLayout(W)
+ }
+ if (K && K.isVisible()) {
+ var W = K.getSize();
+ var O = K.getMargins();
+ W.width = J - (O.left + O.right);
+ W.x = O.left;
+ var V = (W.height + O.top + O.bottom);
+ W.y = S - V + O.top;
+ P -= V;
+ K.applyLayout(W)
+ }
+ if (E && E.isVisible()) {
+ var W = E.getSize();
+ var O = E.getMargins();
+ W.height = P - (O.top + O.bottom);
+ W.x = O.left;
+ W.y = G + O.top;
+ var A = (W.width + O.left + O.right);
+ H += A;
+ I -= A;
+ E.applyLayout(W)
+ }
+ if (T && T.isVisible()) {
+ var W = T.getSize();
+ var O = T.getMargins();
+ W.height = P - (O.top + O.bottom);
+ var A = (W.width + O.left + O.right);
+ W.x = J - A + O.left;
+ W.y = G + O.top;
+ I -= A;
+ T.applyLayout(W)
+ }
+ var O = U.getMargins();
+ var D = {x:H + O.left,y:G + O.top,width:I - (O.left + O.right),height:P
+ - (O.top + O.bottom)};
+ U.applyLayout(D);
+ if (C) {
+ for (var Q = 0,R = C.length; Q < R; Q++) {
+ C[Q].collapse(false)
+ }
+ }
+ if (Ext.isIE && Ext.isStrict) {
+ X.repaint()
+ }
+}});
+Ext.layout.BorderLayout.Region = function(B, A, C) {
+ Ext.apply(this, A);
+ this.layout = B;
+ this.position = C;
+ this.state = {};
+ if (typeof this.margins == "string") {
+ this.margins = this.layout.parseMargins(this.margins)
+ }
+ this.margins = Ext.applyIf(this.margins || {}, this.defaultMargins);
+ if (this.collapsible) {
+ if (typeof this.cmargins == "string") {
+ this.cmargins = this.layout.parseMargins(this.cmargins)
+ }
+ if (this.collapseMode == "mini" && !this.cmargins) {
+ this.cmargins = {left:0,top:0,right:0,bottom:0}
+ } else {
+ this.cmargins = Ext.applyIf(this.cmargins || {}, C == "north" || C
+ == "south" ? this.defaultNSCMargins
+ : this.defaultEWCMargins)
+ }
+ }
+};
+Ext.layout.BorderLayout.Region.prototype
+ = {collapsible:false,split:false,floatable:true,minWidth:50,minHeight:50,defaultMargins:{left:0,top:0,right:0,bottom:0},defaultNSCMargins:{left:5,top:5,right:5,bottom:5},defaultEWCMargins:{left:5,top:0,right:5,bottom:0},isCollapsed:false,render:function(
+ B, C) {
+ this.panel = C;
+ C.el.enableDisplayMode();
+ this.targetEl = B;
+ this.el = C.el;
+ var A = C.getState,D = this.position;
+ C.getState = function() {
+ return Ext.apply(A.call(C) || {}, this.state)
+ }.createDelegate(this);
+ if (D != "center") {
+ C.allowQueuedExpand = false;
+ C.on({beforecollapse:this.beforeCollapse,collapse:this.onCollapse,beforeexpand:this.beforeExpand,expand:this.onExpand,hide:this.onHide,show:this.onShow,scope:this});
+ if (this.collapsible) {
+ C.collapseEl = "el";
+ C.slideAnchor = this.getSlideAnchor()
+ }
+ if (C.tools && C.tools.toggle) {
+ C.tools.toggle.addClass("x-tool-collapse-" + D);
+ C.tools.toggle.addClassOnOver("x-tool-collapse-" + D + "-over")
+ }
+ }
+},getCollapsedEl:function() {
+ if (!this.collapsedEl) {
+ if (!this.toolTemplate) {
+ var B = new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");
+ B.disableFormats = true;
+ B.compile();
+ Ext.layout.BorderLayout.Region.prototype.toolTemplate = B
+ }
+ this.collapsedEl
+ = this.targetEl.createChild({cls:"x-layout-collapsed x-layout-collapsed-"
+ + this.position,id:this.panel.id + "-xcollapsed"});
+ this.collapsedEl.enableDisplayMode("block");
+ if (this.collapseMode == "mini") {
+ this.collapsedEl.addClass("x-layout-cmini-" + this.position);
+ this.miniCollapsedEl
+ = this.collapsedEl.createChild({cls:"x-layout-mini x-layout-mini-"
+ + this.position,html:"&#160;"});
+ this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on("click", this.onExpandClick, this, {stopEvent:true})
+ } else {
+ var A = this.toolTemplate.append(this.collapsedEl.dom, {id:"expand-"
+ + this.position}, true);
+ A.addClassOnOver("x-tool-expand-" + this.position + "-over");
+ A.on("click", this.onExpandClick, this, {stopEvent:true});
+ if (this.floatable !== false) {
+ this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
+ this.collapsedEl.on("click", this.collapseClick, this)
+ }
+ }
+ }
+ return this.collapsedEl
+},onExpandClick:function(A) {
+ if (this.isSlid) {
+ this.afterSlideIn();
+ this.panel.expand(false)
+ } else {
+ this.panel.expand()
+ }
+},onCollapseClick:function(A) {
+ this.panel.collapse()
+},beforeCollapse:function(B, A) {
+ this.lastAnim = A;
+ if (this.splitEl) {
+ this.splitEl.hide()
+ }
+ this.getCollapsedEl().show();
+ this.panel.el.setStyle("z-index", 100);
+ this.isCollapsed = true;
+ this.layout.layout()
+},onCollapse:function(A) {
+ this.panel.el.setStyle("z-index", 1);
+ if (this.lastAnim === false || this.panel.animCollapse === false) {
+ this.getCollapsedEl().dom.style.visibility = "visible"
+ } else {
+ this.getCollapsedEl().slideIn(this.panel.slideAnchor, {duration:0.2})
+ }
+ this.state.collapsed = true;
+ this.panel.saveState()
+},beforeExpand:function(A) {
+ var B = this.getCollapsedEl();
+ this.el.show();
+ if (this.position == "east" || this.position == "west") {
+ this.panel.setSize(undefined, B.getHeight())
+ } else {
+ this.panel.setSize(B.getWidth(), undefined)
+ }
+ B.hide();
+ B.dom.style.visibility = "hidden";
+ this.panel.el.setStyle("z-index", 100)
+},onExpand:function() {
+ this.isCollapsed = false;
+ if (this.splitEl) {
+ this.splitEl.show()
+ }
+ this.layout.layout();
+ this.panel.el.setStyle("z-index", 1);
+ this.state.collapsed = false;
+ this.panel.saveState()
+},collapseClick:function(A) {
+ if (this.isSlid) {
+ A.stopPropagation();
+ this.slideIn()
+ } else {
+ A.stopPropagation();
+ this.slideOut()
+ }
+},onHide:function() {
+ if (this.isCollapsed) {
+ this.getCollapsedEl().hide()
+ } else {
+ if (this.splitEl) {
+ this.splitEl.hide()
+ }
+ }
+},onShow:function() {
+ if (this.isCollapsed) {
+ this.getCollapsedEl().show()
+ } else {
+ if (this.splitEl) {
+ this.splitEl.show()
+ }
+ }
+},isVisible:function() {
+ return !this.panel.hidden
+},getMargins:function() {
+ return this.isCollapsed && this.cmargins ? this.cmargins : this.margins
+},getSize:function() {
+ return this.isCollapsed ? this.getCollapsedEl().getSize()
+ : this.panel.getSize()
+},setPanel:function(A) {
+ this.panel = A
+},getMinWidth:function() {
+ return this.minWidth
+},getMinHeight:function() {
+ return this.minHeight
+},applyLayoutCollapsed:function(A) {
+ var B = this.getCollapsedEl();
+ B.setLeftTop(A.x, A.y);
+ B.setSize(A.width, A.height)
+},applyLayout:function(A) {
+ if (this.isCollapsed) {
+ this.applyLayoutCollapsed(A)
+ } else {
+ this.panel.setPosition(A.x, A.y);
+ this.panel.setSize(A.width, A.height)
+ }
+},beforeSlide:function() {
+ this.panel.beforeEffect()
+},afterSlide:function() {
+ this.panel.afterEffect()
+},initAutoHide:function() {
+ if (this.autoHide !== false) {
+ if (!this.autoHideHd) {
+ var A = new Ext.util.DelayedTask(this.slideIn, this);
+ this.autoHideHd = {"mouseout":function(B) {
+ if (!B.within(this.el, true)) {
+ A.delay(500)
+ }
+ },"mouseover":function(B) {
+ A.cancel()
+ },scope:this}
+ }
+ this.el.on(this.autoHideHd)
+ }
+},clearAutoHide:function() {
+ if (this.autoHide !== false) {
+ this.el.un("mouseout", this.autoHideHd.mouseout);
+ this.el.un("mouseover", this.autoHideHd.mouseover)
+ }
+},clearMonitor:function() {
+ Ext.getDoc().un("click", this.slideInIf, this)
+},slideOut:function() {
+ if (this.isSlid || this.el.hasActiveFx()) {
+ return
+ }
+ this.isSlid = true;
+ var A = this.panel.tools;
+ if (A && A.toggle) {
+ A.toggle.hide()
+ }
+ this.el.show();
+ if (this.position == "east" || this.position == "west") {
+ this.panel.setSize(undefined, this.collapsedEl.getHeight())
+ } else {
+ this.panel.setSize(this.collapsedEl.getWidth(), undefined)
+ }
+ this.restoreLT = [this.el.dom.style.left,this.el.dom.style.top];
+ this.el.alignTo(this.collapsedEl, this.getCollapseAnchor());
+ this.el.setStyle("z-index", 102);
+ if (this.animFloat !== false) {
+ this.beforeSlide();
+ this.el.slideIn(this.getSlideAnchor(), {callback:function() {
+ this.afterSlide();
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this)
+ },scope:this,block:true})
+ } else {
+ this.initAutoHide();
+ Ext.getDoc().on("click", this.slideInIf, this)
+ }
+},afterSlideIn:function() {
+ this.clearAutoHide();
+ this.isSlid = false;
+ this.clearMonitor();
+ this.el.setStyle("z-index", "");
+ this.el.dom.style.left = this.restoreLT[0];
+ this.el.dom.style.top = this.restoreLT[1];
+ var A = this.panel.tools;
+ if (A && A.toggle) {
+ A.toggle.show()
+ }
+},slideIn:function(A) {
+ if (!this.isSlid || this.el.hasActiveFx()) {
+ Ext.callback(A);
+ return
+ }
+ this.isSlid = false;
+ if (this.animFloat !== false) {
+ this.beforeSlide();
+ this.el.slideOut(this.getSlideAnchor(), {callback:function() {
+ this.el.hide();
+ this.afterSlide();
+ this.afterSlideIn();
+ Ext.callback(A)
+ },scope:this,block:true})
+ } else {
+ this.el.hide();
+ this.afterSlideIn()
+ }
+},slideInIf:function(A) {
+ if (!A.within(this.el)) {
+ this.slideIn()
+ }
+},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function() {
+ return this.anchors[this.position]
+},getCollapseAnchor:function() {
+ return this.canchors[this.position]
+},getSlideAnchor:function() {
+ return this.sanchors[this.position]
+},getAlignAdj:function() {
+ var A = this.cmargins;
+ switch (this.position) {case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break}
+},getExpandAdj:function() {
+ var B = this.collapsedEl,A = this.cmargins;
+ switch (this.position) {case"west":return[-(A.right + B.getWidth()
+ + A.left),0];break;case"east":return[A.right + B.getWidth()
+ + A.left,0];break;case"north":return[0,-(A.top + A.bottom
+ + B.getHeight())];break;case"south":return[0,A.top + A.bottom
+ + B.getHeight()];break}
+}};
+Ext.layout.BorderLayout.SplitRegion = function(B, A, C) {
+ Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this, B, A, C);
+ this.applyLayout = this.applyFns[C]
+};
+Ext.extend(Ext.layout.BorderLayout.SplitRegion, Ext.layout.BorderLayout.Region, {splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,splitSettings:{north:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.TOP,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},south:{orientation:Ext.SplitBar.VERTICAL,placement:Ext.SplitBar.BOTTOM,maxFn:"getVMaxSize",minProp:"minHeight",maxProp:"maxHeight"},east:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.RIGHT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"},west:{orientation:Ext.SplitBar.HORIZONTAL,placement:Ext.SplitBar.LEFT,maxFn:"getHMaxSize",minProp:"minWidth",maxProp:"maxWidth"}},applyFns:{west:function(
+ C) {
+ if (this.isCollapsed) {
+ return this.applyLayoutCollapsed(C)
+ }
+ var D = this.splitEl.dom,B = D.style;
+ this.panel.setPosition(C.x, C.y);
+ var A = D.offsetWidth;
+ B.left = (C.x + C.width - A) + "px";
+ B.top = (C.y) + "px";
+ B.height = Math.max(0, C.height) + "px";
+ this.panel.setSize(C.width - A, C.height)
+},east:function(C) {
+ if (this.isCollapsed) {
+ return this.applyLayoutCollapsed(C)
+ }
+ var D = this.splitEl.dom,B = D.style;
+ var A = D.offsetWidth;
+ this.panel.setPosition(C.x + A, C.y);
+ B.left = (C.x) + "px";
+ B.top = (C.y) + "px";
+ B.height = Math.max(0, C.height) + "px";
+ this.panel.setSize(C.width - A, C.height)
+},north:function(C) {
+ if (this.isCollapsed) {
+ return this.applyLayoutCollapsed(C)
+ }
+ var D = this.splitEl.dom,B = D.style;
+ var A = D.offsetHeight;
+ this.panel.setPosition(C.x, C.y);
+ B.left = (C.x) + "px";
+ B.top = (C.y + C.height - A) + "px";
+ B.width = Math.max(0, C.width) + "px";
+ this.panel.setSize(C.width, C.height - A)
+},south:function(C) {
+ if (this.isCollapsed) {
+ return this.applyLayoutCollapsed(C)
+ }
+ var D = this.splitEl.dom,B = D.style;
+ var A = D.offsetHeight;
+ this.panel.setPosition(C.x, C.y + A);
+ B.left = (C.x) + "px";
+ B.top = (C.y) + "px";
+ B.width = Math.max(0, C.width) + "px";
+ this.panel.setSize(C.width, C.height - A)
+}},render:function(A, C) {
+ Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this, A, C);
+ var D = this.position;
+ this.splitEl = A.createChild({cls:"x-layout-split x-layout-split-"
+ + D,html:"&#160;",id:this.panel.id + "-xsplit"});
+ if (this.collapseMode == "mini") {
+ this.miniSplitEl
+ = this.splitEl.createChild({cls:"x-layout-mini x-layout-mini-"
+ + D,html:"&#160;"});
+ this.miniSplitEl.addClassOnOver("x-layout-mini-over");
+ this.miniSplitEl.on("click", this.onCollapseClick, this, {stopEvent:true})
+ }
+ var B = this.splitSettings[D];
+ this.split = new Ext.SplitBar(this.splitEl.dom, C.el, B.orientation);
+ this.split.placement = B.placement;
+ this.split.getMaximumSize = this[B.maxFn].createDelegate(this);
+ this.split.minSize = this.minSize || this[B.minProp];
+ this.split.on("beforeapply", this.onSplitMove, this);
+ this.split.useShim = this.useShim === true;
+ this.maxSize = this.maxSize || this[B.maxProp];
+ if (C.hidden) {
+ this.splitEl.hide()
+ }
+ if (this.useSplitTips) {
+ this.splitEl.dom.title = this.collapsible ? this.collapsibleSplitTip
+ : this.splitTip
+ }
+ if (this.collapsible) {
+ this.splitEl.on("dblclick", this.onCollapseClick, this)
+ }
+},getSize:function() {
+ if (this.isCollapsed) {
+ return this.collapsedEl.getSize()
+ }
+ var A = this.panel.getSize();
+ if (this.position == "north" || this.position == "south") {
+ A.height += this.splitEl.dom.offsetHeight
+ } else {
+ A.width += this.splitEl.dom.offsetWidth
+ }
+ return A
+},getHMaxSize:function() {
+ var B = this.maxSize || 10000;
+ var A = this.layout.center;
+ return Math.min(B, (this.el.getWidth() + A.el.getWidth()) - A.getMinWidth())
+},getVMaxSize:function() {
+ var B = this.maxSize || 10000;
+ var A = this.layout.center;
+ return Math.min(B, (this.el.getHeight() + A.el.getHeight())
+ - A.getMinHeight())
+},onSplitMove:function(B, A) {
+ var C = this.panel.getSize();
+ this.lastSplitSize = A;
+ if (this.position == "north" || this.position == "south") {
+ this.panel.setSize(C.width, A);
+ this.state.height = A
+ } else {
+ this.panel.setSize(A, C.height);
+ this.state.width = A
+ }
+ this.layout.layout();
+ this.panel.saveState();
+ return false
+},getSplitBar:function() {
+ return this.split
+}});
+Ext.Container.LAYOUTS["border"] = Ext.layout.BorderLayout;
+Ext.layout.FormLayout
+ = Ext.extend(Ext.layout.AnchorLayout, {labelSeparator:":",getAnchorViewSize:function(
+ A, B) {
+ return A.body.getStyleSize()
+},setContainer:function(B) {
+ Ext.layout.FormLayout.superclass.setContainer.call(this, B);
+ if (B.labelAlign) {
+ B.addClass("x-form-label-" + B.labelAlign)
+ }
+ if (B.hideLabels) {
+ this.labelStyle = "display:none";
+ this.elementStyle = "padding-left:0;";
+ this.labelAdjust = 0
+ } else {
+ this.labelSeparator = B.labelSeparator || this.labelSeparator;
+ B.labelWidth = B.labelWidth || 100;
+ if (typeof B.labelWidth == "number") {
+ var C = (typeof B.labelPad == "number" ? B.labelPad : 5);
+ this.labelAdjust = B.labelWidth + C;
+ this.labelStyle = "width:" + B.labelWidth + "px;";
+ this.elementStyle = "padding-left:" + (B.labelWidth + C) + "px"
+ }
+ if (B.labelAlign == "top") {
+ this.labelStyle = "width:auto;";
+ this.labelAdjust = 0;
+ this.elementStyle = "padding-left:0;"
+ }
+ }
+ if (!this.fieldTpl) {
+ var A = new Ext.Template("<div class=\"x-form-item {5}\" tabIndex=\"-1\">", "<label for=\"{0}\" style=\"{2}\" class=\"x-form-item-label\">{1}{4}</label>", "<div class=\"x-form-element\" id=\"x-form-el-{0}\" style=\"{3}\">", "</div><div class=\"{6}\"></div>", "</div>");
+ A.disableFormats = true;
+ A.compile();
+ Ext.layout.FormLayout.prototype.fieldTpl = A
+ }
+},renderItem:function(D, A, C) {
+ if (D && !D.rendered && D.isFormField && D.inputType != "hidden") {
+ var B = [D.id,D.fieldLabel,D.labelStyle || this.labelStyle
+ || "",this.elementStyle || "",typeof D.labelSeparator
+ == "undefined" ? this.labelSeparator
+ : D.labelSeparator,(D.itemCls || this.container.itemCls || "")
+ + (D.hideLabel ? " x-hide-label" : ""),D.clearCls
+ || "x-form-clear-left"];
+ if (typeof A == "number") {
+ A = C.dom.childNodes[A] || null
+ }
+ if (A) {
+ this.fieldTpl.insertBefore(A, B)
+ } else {
+ this.fieldTpl.append(C, B)
+ }
+ D.render("x-form-el-" + D.id)
+ } else {
+ Ext.layout.FormLayout.superclass.renderItem.apply(this, arguments)
+ }
+},adjustWidthAnchor:function(B, A) {
+ return B - (A.isFormField ? (A.hideLabel ? 0 : this.labelAdjust) : 0)
+},isValidParent:function(B, A) {
+ return true
+}});
+Ext.Container.LAYOUTS["form"] = Ext.layout.FormLayout;
+Ext.layout.Accordion
+ = Ext.extend(Ext.layout.FitLayout, {fill:true,autoWidth:true,titleCollapse:true,hideCollapseTool:false,collapseFirst:false,animate:false,sequence:false,activeOnTop:false,renderItem:function(
+ A) {
+ if (this.animate === false) {
+ A.animCollapse = false
+ }
+ A.collapsible = true;
+ if (this.autoWidth) {
+ A.autoWidth = true
+ }
+ if (this.titleCollapse) {
+ A.titleCollapse = true
+ }
+ if (this.hideCollapseTool) {
+ A.hideCollapseTool = true
+ }
+ if (this.collapseFirst !== undefined) {
+ A.collapseFirst = this.collapseFirst
+ }
+ if (!this.activeItem && !A.collapsed) {
+ this.activeItem = A
+ } else {
+ if (this.activeItem) {
+ A.collapsed = true
+ }
+ }
+ Ext.layout.Accordion.superclass.renderItem.apply(this, arguments);
+ A.header.addClass("x-accordion-hd");
+ A.on("beforeexpand", this.beforeExpand, this)
+},beforeExpand:function(C, B) {
+ var A = this.activeItem;
+ if (A) {
+ if (this.sequence) {
+ delete this.activeItem;
+ A.collapse({callback:function() {
+ C.expand(B || true)
+ },scope:this});
+ return false
+ } else {
+ A.collapse(this.animate)
+ }
+ }
+ this.activeItem = C;
+ if (this.activeOnTop) {
+ C.el.dom.parentNode.insertBefore(C.el.dom, C.el.dom.parentNode.firstChild)
+ }
+ this.layout()
+},setItemSize:function(F, E) {
+ if (this.fill && F) {
+ var B = this.container.items.items;
+ var D = 0;
+ for (var C = 0,A = B.length; C < A; C++) {
+ var G = B[C];
+ if (G != F) {
+ D += (G.getSize().height - G.bwrap.getHeight())
+ }
+ }
+ E.height -= D;
+ F.setSize(E)
+ }
+}});
+Ext.Container.LAYOUTS["accordion"] = Ext.layout.Accordion;
+Ext.layout.TableLayout
+ = Ext.extend(Ext.layout.ContainerLayout, {monitorResize:false,setContainer:function(
+ A) {
+ Ext.layout.TableLayout.superclass.setContainer.call(this, A);
+ this.currentRow = 0;
+ this.currentColumn = 0;
+ this.cells = []
+},onLayout:function(C, E) {
+ var D = C.items.items,A = D.length,F,B;
+ if (!this.table) {
+ E.addClass("x-table-layout-ct");
+ this.table
+ = E.createChild({tag:"table",cls:"x-table-layout",cellspacing:0,cn:{tag:"tbody"}}, null, true);
+ this.renderAll(C, E)
+ }
+},getRow:function(A) {
+ var B = this.table.tBodies[0].childNodes[A];
+ if (!B) {
+ B = document.createElement("tr");
+ this.table.tBodies[0].appendChild(B)
+ }
+ return B
+},getNextCell:function(H) {
+ var A = this.getNextNonSpan(this.currentColumn, this.currentRow);
+ var E = this.currentColumn = A[0],D = this.currentRow = A[1];
+ for (var G = D; G < D + (H.rowspan || 1); G++) {
+ if (!this.cells[G]) {
+ this.cells[G] = []
+ }
+ for (var C = E; C < E + (H.colspan || 1); C++) {
+ this.cells[G][C] = true
+ }
+ }
+ var F = document.createElement("td");
+ if (H.cellId) {
+ F.id = H.cellId
+ }
+ var B = "x-table-layout-cell";
+ if (H.cellCls) {
+ B += " " + H.cellCls
+ }
+ F.className = B;
+ if (H.colspan) {
+ F.colSpan = H.colspan
+ }
+ if (H.rowspan) {
+ F.rowSpan = H.rowspan
+ }
+ this.getRow(D).appendChild(F);
+ return F
+},getNextNonSpan:function(A, C) {
+ var B = this.columns;
+ while ((B && A >= B) || (this.cells[C] && this.cells[C][A])) {
+ if (B && A >= B) {
+ C++;
+ A = 0
+ } else {
+ A++
+ }
+ }
+ return[A,C]
+},renderItem:function(C, A, B) {
+ if (C && !C.rendered) {
+ C.render(this.getNextCell(C))
+ }
+},isValidParent:function(B, A) {
+ return true
+}});
+Ext.Container.LAYOUTS["table"] = Ext.layout.TableLayout;
+Ext.layout.AbsoluteLayout
+ = Ext.extend(Ext.layout.AnchorLayout, {extraCls:"x-abs-layout-item",isForm:false,setContainer:function(
+ A) {
+ Ext.layout.AbsoluteLayout.superclass.setContainer.call(this, A);
+ if (A.isXType("form")) {
+ this.isForm = true
+ }
+},onLayout:function(A, B) {
+ if (this.isForm) {
+ A.body.position()
+ } else {
+ B.position()
+ }
+ Ext.layout.AbsoluteLayout.superclass.onLayout.call(this, A, B)
+},getAnchorViewSize:function(A, B) {
+ return this.isForm ? A.body.getStyleSize()
+ : Ext.layout.AbsoluteLayout.superclass.getAnchorViewSize.call(this, A, B)
+},isValidParent:function(B, A) {
+ return this.isForm ? true
+ : Ext.layout.AbsoluteLayout.superclass.isValidParent.call(this, B, A)
+},adjustWidthAnchor:function(B, A) {
+ return B ? B - A.getPosition(true)[0] : B
+},adjustHeightAnchor:function(B, A) {
+ return B ? B - A.getPosition(true)[1] : B
+}});
+Ext.Container.LAYOUTS["absolute"] = Ext.layout.AbsoluteLayout;
+Ext.Viewport = Ext.extend(Ext.Container, {initComponent:function() {
+ Ext.Viewport.superclass.initComponent.call(this);
+ document.getElementsByTagName("html")[0].className += " x-viewport";
+ this.el = Ext.getBody();
+ this.el.setHeight = Ext.emptyFn;
+ this.el.setWidth = Ext.emptyFn;
+ this.el.setSize = Ext.emptyFn;
+ this.el.dom.scroll = "no";
+ this.allowDomMove = false;
+ this.autoWidth = true;
+ this.autoHeight = true;
+ Ext.EventManager.onWindowResize(this.fireResize, this);
+ this.renderTo = this.el
+},fireResize:function(A, B) {
+ this.fireEvent("resize", this, A, B, A, B)
+}});
+Ext.reg("viewport", Ext.Viewport);
+Ext.Panel
+ = Ext.extend(Ext.Container, {baseCls:"x-panel",collapsedCls:"x-panel-collapsed",maskDisabled:true,animCollapse:Ext.enableFx,headerAsText:true,buttonAlign:"right",collapsed:false,collapseFirst:true,minButtonWidth:75,elements:"body",toolTarget:"header",collapseEl:"bwrap",slideAnchor:"t",deferHeight:true,expandDefaults:{duration:0.25},collapseDefaults:{duration:0.25},initComponent:function() {
+ Ext.Panel.superclass.initComponent.call(this);
+ this.addEvents("bodyresize", "titlechange", "collapse", "expand", "beforecollapse", "beforeexpand", "beforeclose", "close", "activate", "deactivate");
+ if (this.tbar) {
+ this.elements += ",tbar";
+ if (typeof this.tbar == "object") {
+ this.topToolbar = this.tbar
+ }
+ delete this.tbar
+ }
+ if (this.bbar) {
+ this.elements += ",bbar";
+ if (typeof this.bbar == "object") {
+ this.bottomToolbar = this.bbar
+ }
+ delete this.bbar
+ }
+ if (this.header === true) {
+ this.elements += ",header";
+ delete this.header
+ } else {
+ if (this.title && this.header !== false) {
+ this.elements += ",header"
+ }
+ }
+ if (this.footer === true) {
+ this.elements += ",footer";
+ delete this.footer
+ }
+ if (this.buttons) {
+ var C = this.buttons;
+ this.buttons = [];
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (C[B].render) {
+ this.buttons.push(C[B])
+ } else {
+ this.addButton(C[B])
+ }
+ }
+ }
+ if (this.autoLoad) {
+ this.on("render", this.doAutoLoad, this, {delay:10})
+ }
+},createElement:function(A, C) {
+ if (this[A]) {
+ C.appendChild(this[A].dom);
+ return
+ }
+ if (A === "bwrap" || this.elements.indexOf(A) != -1) {
+ if (this[A + "Cfg"]) {
+ this[A] = Ext.fly(C).createChild(this[A + "Cfg"])
+ } else {
+ var B = document.createElement("div");
+ B.className = this[A + "Cls"];
+ this[A] = Ext.get(C.appendChild(B))
+ }
+ }
+},onRender:function(H, G) {
+ Ext.Panel.superclass.onRender.call(this, H, G);
+ this.createClasses();
+ if (this.el) {
+ this.el.addClass(this.baseCls);
+ this.header = this.el.down("." + this.headerCls);
+ this.bwrap = this.el.down("." + this.bwrapCls);
+ var M = this.bwrap ? this.bwrap : this.el;
+ this.tbar = M.down("." + this.tbarCls);
+ this.body = M.down("." + this.bodyCls);
+ this.bbar = M.down("." + this.bbarCls);
+ this.footer = M.down("." + this.footerCls);
+ this.fromMarkup = true
+ } else {
+ this.el = H.createChild({id:this.id,cls:this.baseCls}, G)
+ }
+ var A = this.el,K = A.dom;
+ if (this.cls) {
+ this.el.addClass(this.cls)
+ }
+ if (this.buttons) {
+ this.elements += ",footer"
+ }
+ if (this.frame) {
+ A.insertHtml("afterBegin", String.format(Ext.Element.boxMarkup, this.baseCls));
+ this.createElement("header", K.firstChild.firstChild.firstChild);
+ this.createElement("bwrap", K);
+ var O = this.bwrap.dom;
+ var E = K.childNodes[1],B = K.childNodes[2];
+ O.appendChild(E);
+ O.appendChild(B);
+ var P = O.firstChild.firstChild.firstChild;
+ this.createElement("tbar", P);
+ this.createElement("body", P);
+ this.createElement("bbar", P);
+ this.createElement("footer", O.lastChild.firstChild.firstChild);
+ if (!this.footer) {
+ this.bwrap.dom.lastChild.className += " x-panel-nofooter"
+ }
+ } else {
+ this.createElement("header", K);
+ this.createElement("bwrap", K);
+ var O = this.bwrap.dom;
+ this.createElement("tbar", O);
+ this.createElement("body", O);
+ this.createElement("bbar", O);
+ this.createElement("footer", O);
+ if (!this.header) {
+ this.body.addClass(this.bodyCls + "-noheader");
+ if (this.tbar) {
+ this.tbar.addClass(this.tbarCls + "-noheader")
+ }
+ }
+ }
+ if (this.border === false) {
+ this.el.addClass(this.baseCls + "-noborder");
+ this.body.addClass(this.bodyCls + "-noborder");
+ if (this.header) {
+ this.header.addClass(this.headerCls + "-noborder")
+ }
+ if (this.footer) {
+ this.footer.addClass(this.footerCls + "-noborder")
+ }
+ if (this.tbar) {
+ this.tbar.addClass(this.tbarCls + "-noborder")
+ }
+ if (this.bbar) {
+ this.bbar.addClass(this.bbarCls + "-noborder")
+ }
+ }
+ if (this.bodyBorder === false) {
+ this.body.addClass(this.bodyCls + "-noborder")
+ }
+ if (this.bodyStyle) {
+ this.body.applyStyles(this.bodyStyle)
+ }
+ this.bwrap.enableDisplayMode("block");
+ if (this.header) {
+ this.header.unselectable();
+ if (this.headerAsText) {
+ this.header.dom.innerHTML = "<span class=\"" + this.headerTextCls
+ + "\">" + this.header.dom.innerHTML + "</span>";
+ if (this.iconCls) {
+ this.setIconClass(this.iconCls)
+ }
+ }
+ }
+ if (this.floating) {
+ this.makeFloating(this.floating)
+ }
+ if (this.collapsible) {
+ this.tools = this.tools ? this.tools.slice(0) : [];
+ if (!this.hideCollapseTool) {
+ this.tools[this.collapseFirst ? "unshift"
+ : "push"]({id:"toggle",handler:this.toggleCollapse,scope:this})
+ }
+ if (this.titleCollapse && this.header) {
+ this.header.on("click", this.toggleCollapse, this);
+ this.header.setStyle("cursor", "pointer")
+ }
+ }
+ if (this.tools) {
+ var J = this.tools;
+ this.tools = {};
+ this.addTool.apply(this, J)
+ } else {
+ this.tools = {}
+ }
+ if (this.buttons && this.buttons.length > 0) {
+ var D = this.footer.createChild({cls:"x-panel-btns-ct",cn:{cls:"x-panel-btns x-panel-btns-"
+ + this.buttonAlign,html:"<table cellspacing=\"0\"><tbody><tr></tr></tbody></table><div class=\"x-clear\"></div>"}}, null, true);
+ var L = D.getElementsByTagName("tr")[0];
+ for (var F = 0,I = this.buttons.length; F < I; F++) {
+ var N = this.buttons[F];
+ var C = document.createElement("td");
+ C.className = "x-panel-btn-td";
+ N.render(L.appendChild(C))
+ }
+ }
+ if (this.tbar && this.topToolbar) {
+ if (Ext.isArray(this.topToolbar)) {
+ this.topToolbar = new Ext.Toolbar(this.topToolbar)
+ }
+ this.topToolbar.render(this.tbar)
+ }
+ if (this.bbar && this.bottomToolbar) {
+ if (Ext.isArray(this.bottomToolbar)) {
+ this.bottomToolbar = new Ext.Toolbar(this.bottomToolbar)
+ }
+ this.bottomToolbar.render(this.bbar)
+ }
+},setIconClass:function(B) {
+ var A = this.iconCls;
+ this.iconCls = B;
+ if (this.rendered && this.header) {
+ if (this.frame) {
+ this.header.addClass("x-panel-icon");
+ this.header.replaceClass(A, this.iconCls)
+ } else {
+ var D = this.header.dom;
+ var C = D.firstChild && String(D.firstChild.tagName).toLowerCase()
+ == "img" ? D.firstChild : null;
+ if (C) {
+ Ext.fly(C).replaceClass(A, this.iconCls)
+ } else {
+ Ext.DomHelper.insertBefore(D.firstChild, {tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-panel-inline-icon "
+ + this.iconCls})
+ }
+ }
+ }
+},makeFloating:function(A) {
+ this.floating = true;
+ this.el = new Ext.Layer(typeof A == "object" ? A : {shadow:this.shadow
+ !== undefined ? this.shadow
+ : "sides",shadowOffset:this.shadowOffset,constrain:false,shim:this.shim
+ === false ? false : undefined}, this.el)
+},getTopToolbar:function() {
+ return this.topToolbar
+},getBottomToolbar:function() {
+ return this.bottomToolbar
+},addButton:function(A, D, C) {
+ var E = {handler:D,scope:C,minWidth:this.minButtonWidth,hideParent:true};
+ if (typeof A == "string") {
+ E.text = A
+ } else {
+ Ext.apply(E, A)
+ }
+ var B = new Ext.Button(E);
+ B.ownerCt = this;
+ if (!this.buttons) {
+ this.buttons = []
+ }
+ this.buttons.push(B);
+ return B
+},addTool:function() {
+ if (!this[this.toolTarget]) {
+ return
+ }
+ if (!this.toolTemplate) {
+ var F = new Ext.Template("<div class=\"x-tool x-tool-{id}\">&#160;</div>");
+ F.disableFormats = true;
+ F.compile();
+ Ext.Panel.prototype.toolTemplate = F
+ }
+ for (var E = 0,C = arguments,B = C.length; E < B; E++) {
+ var A = C[E],G = "x-tool-" + A.id + "-over";
+ var D = this.toolTemplate.insertFirst(this[this.toolTarget], A, true);
+ this.tools[A.id] = D;
+ D.enableDisplayMode("block");
+ D.on("click", this.createToolHandler(D, A, G, this));
+ if (A.on) {
+ D.on(A.on)
+ }
+ if (A.hidden) {
+ D.hide()
+ }
+ if (A.qtip) {
+ if (typeof A.qtip == "object") {
+ Ext.QuickTips.register(Ext.apply({target:D.id}, A.qtip))
+ } else {
+ D.dom.qtip = A.qtip
+ }
+ }
+ D.addClassOnOver(G)
+ }
+},onShow:function() {
+ if (this.floating) {
+ return this.el.show()
+ }
+ Ext.Panel.superclass.onShow.call(this)
+},onHide:function() {
+ if (this.floating) {
+ return this.el.hide()
+ }
+ Ext.Panel.superclass.onHide.call(this)
+},createToolHandler:function(C, A, D, B) {
+ return function(E) {
+ C.removeClass(D);
+ E.stopEvent();
+ if (A.handler) {
+ A.handler.call(A.scope || C, E, C, B)
+ }
+ }
+},afterRender:function() {
+ if (this.fromMarkup && this.height === undefined && !this.autoHeight) {
+ this.height = this.el.getHeight()
+ }
+ if (this.floating && !this.hidden && !this.initHidden) {
+ this.el.show()
+ }
+ if (this.title) {
+ this.setTitle(this.title)
+ }
+ this.setAutoScroll();
+ if (this.html) {
+ this.body.update(typeof this.html == "object"
+ ? Ext.DomHelper.markup(this.html) : this.html);
+ delete this.html
+ }
+ if (this.contentEl) {
+ var A = Ext.getDom(this.contentEl);
+ Ext.fly(A).removeClass(["x-hidden","x-hide-display"]);
+ this.body.dom.appendChild(A)
+ }
+ if (this.collapsed) {
+ this.collapsed = false;
+ this.collapse(false)
+ }
+ Ext.Panel.superclass.afterRender.call(this);
+ this.initEvents()
+},setAutoScroll:function() {
+ if (this.rendered && this.autoScroll) {
+ this.body.setOverflow("auto")
+ }
+},getKeyMap:function() {
+ if (!this.keyMap) {
+ this.keyMap = new Ext.KeyMap(this.el, this.keys)
+ }
+ return this.keyMap
+},initEvents:function() {
+ if (this.keys) {
+ this.getKeyMap()
+ }
+ if (this.draggable) {
+ this.initDraggable()
+ }
+},initDraggable:function() {
+ this.dd = new Ext.Panel.DD(this, typeof this.draggable == "boolean" ? null
+ : this.draggable)
+},beforeEffect:function() {
+ if (this.floating) {
+ this.el.beforeAction()
+ }
+ this.el.addClass("x-panel-animated")
+},afterEffect:function() {
+ this.syncShadow();
+ this.el.removeClass("x-panel-animated")
+},createEffect:function(B, A, C) {
+ var D = {scope:C,block:true};
+ if (B === true) {
+ D.callback = A;
+ return D
+ } else {
+ if (!B.callback) {
+ D.callback = A
+ } else {
+ D.callback = function() {
+ A.call(C);
+ Ext.callback(B.callback, B.scope)
+ }
+ }
+ }
+ return Ext.applyIf(D, B)
+},collapse:function(B) {
+ if (this.collapsed || this.el.hasFxBlock()
+ || this.fireEvent("beforecollapse", this, B) === false) {
+ return
+ }
+ var A = B === true || (B !== false && this.animCollapse);
+ this.beforeEffect();
+ this.onCollapse(A, B);
+ return this
+},onCollapse:function(A, B) {
+ if (A) {
+ this[this.collapseEl].slideOut(this.slideAnchor, Ext.apply(this.createEffect(B
+ || true, this.afterCollapse, this), this.collapseDefaults))
+ } else {
+ this[this.collapseEl].hide();
+ this.afterCollapse()
+ }
+},afterCollapse:function() {
+ this.collapsed = true;
+ this.el.addClass(this.collapsedCls);
+ this.afterEffect();
+ this.fireEvent("collapse", this)
+},expand:function(B) {
+ if (!this.collapsed || this.el.hasFxBlock()
+ || this.fireEvent("beforeexpand", this, B) === false) {
+ return
+ }
+ var A = B === true || (B !== false && this.animCollapse);
+ this.el.removeClass(this.collapsedCls);
+ this.beforeEffect();
+ this.onExpand(A, B);
+ return this
+},onExpand:function(A, B) {
+ if (A) {
+ this[this.collapseEl].slideIn(this.slideAnchor, Ext.apply(this.createEffect(B
+ || true, this.afterExpand, this), this.expandDefaults))
+ } else {
+ this[this.collapseEl].show();
+ this.afterExpand()
+ }
+},afterExpand:function() {
+ this.collapsed = false;
+ this.afterEffect();
+ this.fireEvent("expand", this)
+},toggleCollapse:function(A) {
+ this[this.collapsed ? "expand" : "collapse"](A);
+ return this
+},onDisable:function() {
+ if (this.rendered && this.maskDisabled) {
+ this.el.mask()
+ }
+ Ext.Panel.superclass.onDisable.call(this)
+},onEnable:function() {
+ if (this.rendered && this.maskDisabled) {
+ this.el.unmask()
+ }
+ Ext.Panel.superclass.onEnable.call(this)
+},onResize:function(A, B) {
+ if (A !== undefined || B !== undefined) {
+ if (!this.collapsed) {
+ if (typeof A == "number") {
+ this.body.setWidth(this.adjustBodyWidth(A
+ - this.getFrameWidth()))
+ } else {
+ if (A == "auto") {
+ this.body.setWidth(A)
+ }
+ }
+ if (typeof B == "number") {
+ this.body.setHeight(this.adjustBodyHeight(B
+ - this.getFrameHeight()))
+ } else {
+ if (B == "auto") {
+ this.body.setHeight(B)
+ }
+ }
+ } else {
+ this.queuedBodySize = {width:A,height:B};
+ if (!this.queuedExpand && this.allowQueuedExpand !== false) {
+ this.queuedExpand = true;
+ this.on("expand", function() {
+ delete this.queuedExpand;
+ this.onResize(this.queuedBodySize.width, this.queuedBodySize.height);
+ this.doLayout()
+ }, this, {single:true})
+ }
+ }
+ this.fireEvent("bodyresize", this, A, B)
+ }
+ this.syncShadow()
+},adjustBodyHeight:function(A) {
+ return A
+},adjustBodyWidth:function(A) {
+ return A
+},onPosition:function() {
+ this.syncShadow()
+},onDestroy:function() {
+ if (this.tools) {
+ for (var B in this.tools) {
+ Ext.destroy(this.tools[B])
+ }
+ }
+ if (this.buttons) {
+ for (var A in this.buttons) {
+ Ext.destroy(this.buttons[A])
+ }
+ }
+ Ext.destroy(this.topToolbar, this.bottomToolbar);
+ Ext.Panel.superclass.onDestroy.call(this)
+},getFrameWidth:function() {
+ var B = this.el.getFrameWidth("lr");
+ if (this.frame) {
+ var A = this.bwrap.dom.firstChild;
+ B += (Ext.fly(A).getFrameWidth("l")
+ + Ext.fly(A.firstChild).getFrameWidth("r"));
+ var C = this.bwrap.dom.firstChild.firstChild.firstChild;
+ B += Ext.fly(C).getFrameWidth("lr")
+ }
+ return B
+},getFrameHeight:function() {
+ var A = this.el.getFrameWidth("tb");
+ A += (this.tbar ? this.tbar.getHeight() : 0) + (this.bbar
+ ? this.bbar.getHeight() : 0);
+ if (this.frame) {
+ var C = this.el.dom.firstChild;
+ var D = this.bwrap.dom.lastChild;
+ A += (C.offsetHeight + D.offsetHeight);
+ var B = this.bwrap.dom.firstChild.firstChild.firstChild;
+ A += Ext.fly(B).getFrameWidth("tb")
+ } else {
+ A += (this.header ? this.header.getHeight() : 0) + (this.footer
+ ? this.footer.getHeight() : 0)
+ }
+ return A
+},getInnerWidth:function() {
+ return this.getSize().width - this.getFrameWidth()
+},getInnerHeight:function() {
+ return this.getSize().height - this.getFrameHeight()
+},syncShadow:function() {
+ if (this.floating) {
+ this.el.sync(true)
+ }
+},getLayoutTarget:function() {
+ return this.body
+},setTitle:function(B, A) {
+ this.title = B;
+ if (this.header && this.headerAsText) {
+ this.header.child("span").update(B)
+ }
+ if (A) {
+ this.setIconClass(A)
+ }
+ this.fireEvent("titlechange", this, B);
+ return this
+},getUpdater:function() {
+ return this.body.getUpdater()
+},load:function() {
+ var A = this.body.getUpdater();
+ A.update.apply(A, arguments);
+ return this
+},beforeDestroy:function() {
+ Ext.Element.uncache(this.header, this.tbar, this.bbar, this.footer, this.body)
+},createClasses:function() {
+ this.headerCls = this.baseCls + "-header";
+ this.headerTextCls = this.baseCls + "-header-text";
+ this.bwrapCls = this.baseCls + "-bwrap";
+ this.tbarCls = this.baseCls + "-tbar";
+ this.bodyCls = this.baseCls + "-body";
+ this.bbarCls = this.baseCls + "-bbar";
+ this.footerCls = this.baseCls + "-footer"
+},createGhost:function(A, E, B) {
+ var D = document.createElement("div");
+ D.className = "x-panel-ghost " + (A ? A : "");
+ if (this.header) {
+ D.appendChild(this.el.dom.firstChild.cloneNode(true))
+ }
+ Ext.fly(D.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());
+ D.style.width = this.el.dom.offsetWidth + "px";
+ if (!B) {
+ this.container.dom.appendChild(D)
+ } else {
+ Ext.getDom(B).appendChild(D)
+ }
+ if (E !== false && this.el.useShim !== false) {
+ var C = new Ext.Layer({shadow:false,useDisplay:true,constrain:false}, D);
+ C.show();
+ return C
+ } else {
+ return new Ext.Element(D)
+ }
+},doAutoLoad:function() {
+ this.body.load(typeof this.autoLoad == "object" ? this.autoLoad
+ : {url:this.autoLoad})
+}});
+Ext.reg("panel", Ext.Panel);
+Ext.Window
+ = Ext.extend(Ext.Panel, {baseCls:"x-window",resizable:true,draggable:true,closable:true,constrain:false,constrainHeader:false,plain:false,minimizable:false,maximizable:false,minHeight:100,minWidth:200,expandOnShow:true,closeAction:"close",collapsible:false,initHidden:true,monitorResize:true,elements:"header,body",frame:true,floating:true,initComponent:function() {
+ Ext.Window.superclass.initComponent.call(this);
+ this.addEvents("resize", "maximize", "minimize", "restore")
+},getState:function() {
+ return Ext.apply(Ext.Window.superclass.getState.call(this)
+ || {}, this.getBox())
+},onRender:function(B, A) {
+ Ext.Window.superclass.onRender.call(this, B, A);
+ if (this.plain) {
+ this.el.addClass("x-window-plain")
+ }
+ this.focusEl
+ = this.el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1",html:"&#160;"});
+ this.focusEl.swallowEvent("click", true);
+ this.proxy = this.el.createProxy("x-window-proxy");
+ this.proxy.enableDisplayMode("block");
+ if (this.modal) {
+ this.mask
+ = this.container.createChild({cls:"ext-el-mask"}, this.el.dom);
+ this.mask.enableDisplayMode("block");
+ this.mask.hide()
+ }
+},initEvents:function() {
+ Ext.Window.superclass.initEvents.call(this);
+ if (this.animateTarget) {
+ this.setAnimateTarget(this.animateTarget)
+ }
+ if (this.resizable) {
+ this.resizer
+ = new Ext.Resizable(this.el, {minWidth:this.minWidth,minHeight:this.minHeight,handles:this.resizeHandles
+ || "all",pinned:true,resizeElement:this.resizerAction});
+ this.resizer.window = this;
+ this.resizer.on("beforeresize", this.beforeResize, this)
+ }
+ if (this.draggable) {
+ this.header.addClass("x-window-draggable")
+ }
+ this.initTools();
+ this.el.on("mousedown", this.toFront, this);
+ this.manager = this.manager || Ext.WindowMgr;
+ this.manager.register(this);
+ this.hidden = true;
+ if (this.maximized) {
+ this.maximized = false;
+ this.maximize()
+ }
+ if (this.closable) {
+ var A = this.getKeyMap();
+ A.on(27, this.onEsc, this);
+ A.disable()
+ }
+},initDraggable:function() {
+ this.dd = new Ext.Window.DD(this)
+},onEsc:function() {
+ this[this.closeAction]()
+},beforeDestroy:function() {
+ Ext.destroy(this.resizer, this.dd, this.proxy, this.mask);
+ Ext.Window.superclass.beforeDestroy.call(this)
+},onDestroy:function() {
+ if (this.manager) {
+ this.manager.unregister(this)
+ }
+ Ext.Window.superclass.onDestroy.call(this)
+},initTools:function() {
+ if (this.minimizable) {
+ this.addTool({id:"minimize",handler:this.minimize.createDelegate(this, [])})
+ }
+ if (this.maximizable) {
+ this.addTool({id:"maximize",handler:this.maximize.createDelegate(this, [])});
+ this.addTool({id:"restore",handler:this.restore.createDelegate(this, []),hidden:true});
+ this.header.on("dblclick", this.toggleMaximize, this)
+ }
+ if (this.closable) {
+ this.addTool({id:"close",handler:this[this.closeAction].createDelegate(this, [])})
+ }
+},resizerAction:function() {
+ var A = this.proxy.getBox();
+ this.proxy.hide();
+ this.window.handleResize(A);
+ return A
+},beforeResize:function() {
+ this.resizer.minHeight = Math.max(this.minHeight, this.getFrameHeight()
+ + 40);
+ this.resizer.minWidth = Math.max(this.minWidth, this.getFrameWidth() + 40);
+ this.resizeBox = this.el.getBox()
+},updateHandles:function() {
+ if (Ext.isIE && this.resizer) {
+ this.resizer.syncHandleHeight();
+ this.el.repaint()
+ }
+},handleResize:function(B) {
+ var A = this.resizeBox;
+ if (A.x != B.x || A.y != B.y) {
+ this.updateBox(B)
+ } else {
+ this.setSize(B)
+ }
+ this.focus();
+ this.updateHandles();
+ this.saveState();
+ this.fireEvent("resize", this, B.width, B.height)
+},focus:function() {
+ var C = this.focusEl,A = this.defaultButton,B = typeof A;
+ if (B != "undefined") {
+ if (B == "number") {
+ C = this.buttons[A]
+ } else {
+ if (B == "string") {
+ C = Ext.getCmp(A)
+ } else {
+ C = A
+ }
+ }
+ }
+ C.focus.defer(10, C)
+},setAnimateTarget:function(A) {
+ A = Ext.get(A);
+ this.animateTarget = A
+},beforeShow:function() {
+ delete this.el.lastXY;
+ delete this.el.lastLT;
+ if (this.x === undefined || this.y === undefined) {
+ var A = this.el.getAlignToXY(this.container, "c-c");
+ var B = this.el.translatePoints(A[0], A[1]);
+ this.x = this.x === undefined ? B.left : this.x;
+ this.y = this.y === undefined ? B.top : this.y
+ }
+ this.el.setLeftTop(this.x, this.y);
+ if (this.expandOnShow) {
+ this.expand(false)
+ }
+ if (this.modal) {
+ Ext.getBody().addClass("x-body-masked");
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.mask.show()
+ }
+},show:function(C, A, B) {
+ if (!this.rendered) {
+ this.render(Ext.getBody())
+ }
+ if (this.hidden === false) {
+ this.toFront();
+ return
+ }
+ if (this.fireEvent("beforeshow", this) === false) {
+ return
+ }
+ if (A) {
+ this.on("show", A, B, {single:true})
+ }
+ this.hidden = false;
+ if (C !== undefined) {
+ this.setAnimateTarget(C)
+ }
+ this.beforeShow();
+ if (this.animateTarget) {
+ this.animShow()
+ } else {
+ this.afterShow()
+ }
+},afterShow:function() {
+ this.proxy.hide();
+ this.el.setStyle("display", "block");
+ this.el.show();
+ if (this.maximized) {
+ this.fitContainer()
+ }
+ if (Ext.isMac && Ext.isGecko) {
+ this.cascade(this.setAutoScroll)
+ }
+ if (this.monitorResize || this.modal || this.constrain
+ || this.constrainHeader) {
+ Ext.EventManager.onWindowResize(this.onWindowResize, this)
+ }
+ this.doConstrain();
+ if (this.layout) {
+ this.doLayout()
+ }
+ if (this.keyMap) {
+ this.keyMap.enable()
+ }
+ this.toFront();
+ this.updateHandles();
+ this.fireEvent("show", this)
+},animShow:function() {
+ this.proxy.show();
+ this.proxy.setBox(this.animateTarget.getBox());
+ this.proxy.setOpacity(0);
+ var A = this.getBox(false);
+ A.callback = this.afterShow;
+ A.scope = this;
+ A.duration = 0.25;
+ A.easing = "easeNone";
+ A.opacity = 0.5;
+ A.block = true;
+ this.el.setStyle("display", "none");
+ this.proxy.shift(A)
+},hide:function(C, A, B) {
+ if (this.hidden || this.fireEvent("beforehide", this) === false) {
+ return
+ }
+ if (A) {
+ this.on("hide", A, B, {single:true})
+ }
+ this.hidden = true;
+ if (C !== undefined) {
+ this.setAnimateTarget(C)
+ }
+ if (this.animateTarget) {
+ this.animHide()
+ } else {
+ this.el.hide();
+ this.afterHide()
+ }
+},afterHide:function() {
+ this.proxy.hide();
+ if (this.monitorResize || this.modal || this.constrain
+ || this.constrainHeader) {
+ Ext.EventManager.removeResizeListener(this.onWindowResize, this)
+ }
+ if (this.modal) {
+ this.mask.hide();
+ Ext.getBody().removeClass("x-body-masked")
+ }
+ if (this.keyMap) {
+ this.keyMap.disable()
+ }
+ this.fireEvent("hide", this)
+},animHide:function() {
+ this.proxy.setOpacity(0.5);
+ this.proxy.show();
+ var B = this.getBox(false);
+ this.proxy.setBox(B);
+ this.el.hide();
+ var A = this.animateTarget.getBox();
+ A.callback = this.afterHide;
+ A.scope = this;
+ A.duration = 0.25;
+ A.easing = "easeNone";
+ A.block = true;
+ A.opacity = 0;
+ this.proxy.shift(A)
+},onWindowResize:function() {
+ if (this.maximized) {
+ this.fitContainer()
+ }
+ if (this.modal) {
+ this.mask.setSize("100%", "100%");
+ var A = this.mask.dom.offsetHeight;
+ this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true))
+ }
+ this.doConstrain()
+},doConstrain:function() {
+ if (this.constrain || this.constrainHeader) {
+ var B;
+ if (this.constrain) {
+ B = {right:this.el.shadowOffset,left:this.el.shadowOffset,bottom:this.el.shadowOffset}
+ } else {
+ var A = this.getSize();
+ B = {right:-(A.width - 100),bottom:-(A.height - 25)}
+ }
+ var C = this.el.getConstrainToXY(this.container, true, B);
+ if (C) {
+ this.setPosition(C[0], C[1])
+ }
+ }
+},ghost:function(A) {
+ var C = this.createGhost(A);
+ var B = this.getBox(true);
+ C.setLeftTop(B.x, B.y);
+ C.setWidth(B.width);
+ this.el.hide();
+ this.activeGhost = C;
+ return C
+},unghost:function(B, A) {
+ if (B !== false) {
+ this.el.show();
+ this.focus();
+ if (Ext.isMac && Ext.isGecko) {
+ this.cascade(this.setAutoScroll)
+ }
+ }
+ if (A !== false) {
+ this.setPosition(this.activeGhost.getLeft(true), this.activeGhost.getTop(true))
+ }
+ this.activeGhost.hide();
+ this.activeGhost.remove();
+ delete this.activeGhost
+},minimize:function() {
+ this.fireEvent("minimize", this)
+},close:function() {
+ if (this.fireEvent("beforeclose", this) !== false) {
+ this.hide(null, function() {
+ this.fireEvent("close", this);
+ this.destroy()
+ }, this)
+ }
+},maximize:function() {
+ if (!this.maximized) {
+ this.expand(false);
+ this.restoreSize = this.getSize();
+ this.restorePos = this.getPosition(true);
+ this.tools.maximize.hide();
+ this.tools.restore.show();
+ this.maximized = true;
+ this.el.disableShadow();
+ if (this.dd) {
+ this.dd.lock()
+ }
+ if (this.collapsible) {
+ this.tools.toggle.hide()
+ }
+ this.el.addClass("x-window-maximized");
+ this.container.addClass("x-window-maximized-ct");
+ this.setPosition(0, 0);
+ this.fitContainer();
+ this.fireEvent("maximize", this)
+ }
+},restore:function() {
+ if (this.maximized) {
+ this.el.removeClass("x-window-maximized");
+ this.tools.restore.hide();
+ this.tools.maximize.show();
+ this.setPosition(this.restorePos[0], this.restorePos[1]);
+ this.setSize(this.restoreSize.width, this.restoreSize.height);
+ delete this.restorePos;
+ delete this.restoreSize;
+ this.maximized = false;
+ this.el.enableShadow(true);
+ if (this.dd) {
+ this.dd.unlock()
+ }
+ if (this.collapsible) {
+ this.tools.toggle.show()
+ }
+ this.container.removeClass("x-window-maximized-ct");
+ this.doConstrain();
+ this.fireEvent("restore", this)
+ }
+},toggleMaximize:function() {
+ this[this.maximized ? "restore" : "maximize"]()
+},fitContainer:function() {
+ var A = this.container.getViewSize();
+ this.setSize(A.width, A.height)
+},setZIndex:function(A) {
+ if (this.modal) {
+ this.mask.setStyle("z-index", A)
+ }
+ this.el.setZIndex(++A);
+ A += 5;
+ if (this.resizer) {
+ this.resizer.proxy.setStyle("z-index", ++A)
+ }
+ this.lastZIndex = A
+},alignTo:function(B, A, C) {
+ var D = this.el.getAlignToXY(B, A, C);
+ this.setPagePosition(D[0], D[1]);
+ return this
+},anchorTo:function(C, G, D, B, F) {
+ var E = function() {
+ this.alignTo(C, G, D)
+ };
+ Ext.EventManager.onWindowResize(E, this);
+ var A = typeof B;
+ if (A != "undefined") {
+ Ext.EventManager.on(window, "scroll", E, this, {buffer:A == "number" ? B
+ : 50})
+ }
+ E.call(this);
+ this[F] = E;
+ return this
+},toFront:function() {
+ if (this.manager.bringToFront(this)) {
+ this.focus()
+ }
+ return this
+},setActive:function(A) {
+ if (A) {
+ if (!this.maximized) {
+ this.el.enableShadow(true)
+ }
+ this.fireEvent("activate", this)
+ } else {
+ this.el.disableShadow();
+ this.fireEvent("deactivate", this)
+ }
+},toBack:function() {
+ this.manager.sendToBack(this);
+ return this
+},center:function() {
+ var A = this.el.getAlignToXY(this.container, "c-c");
+ this.setPagePosition(A[0], A[1]);
+ return this
+}});
+Ext.reg("window", Ext.Window);
+Ext.Window.DD = function(A) {
+ this.win = A;
+ Ext.Window.DD.superclass.constructor.call(this, A.el.id, "WindowDD-"
+ + A.id);
+ this.setHandleElId(A.header.id);
+ this.scroll = false
+};
+Ext.extend(Ext.Window.DD, Ext.dd.DD, {moveOnly:true,headerOffsets:[100,25],startDrag:function() {
+ var A = this.win;
+ this.proxy = A.ghost();
+ if (A.constrain !== false) {
+ var C = A.el.shadowOffset;
+ this.constrainTo(A.container, {right:C,left:C,bottom:C})
+ } else {
+ if (A.constrainHeader !== false) {
+ var B = this.proxy.getSize();
+ this.constrainTo(A.container, {right:-(B.width
+ - this.headerOffsets[0]),bottom:-(B.height
+ - this.headerOffsets[1])})
+ }
+ }
+},b4Drag:Ext.emptyFn,onDrag:function(A) {
+ this.alignElWithMouse(this.proxy, A.getPageX(), A.getPageY())
+},endDrag:function(A) {
+ this.win.unghost();
+ this.win.saveState()
+}});
+Ext.WindowGroup = function() {
+ var F = {};
+ var D = [];
+ var E = null;
+ var C = function(I, H) {
+ return(!I._lastAccess || I._lastAccess < H._lastAccess) ? -1 : 1
+ };
+ var G = function() {
+ var J = D,H = J.length;
+ if (H > 0) {
+ J.sort(C);
+ var I = J[0].manager.zseed;
+ for (var K = 0; K < H; K++) {
+ var L = J[K];
+ if (L && !L.hidden) {
+ L.setZIndex(I + (K * 10))
+ }
+ }
+ }
+ A()
+ };
+ var B = function(H) {
+ if (H != E) {
+ if (E) {
+ E.setActive(false)
+ }
+ E = H;
+ if (H) {
+ H.setActive(true)
+ }
+ }
+ };
+ var A = function() {
+ for (var H = D.length - 1; H >= 0; --H) {
+ if (!D[H].hidden) {
+ B(D[H]);
+ return
+ }
+ }
+ B(null)
+ };
+ return{zseed:9000,register:function(H) {
+ F[H.id] = H;
+ D.push(H);
+ H.on("hide", A)
+ },unregister:function(H) {
+ delete F[H.id];
+ H.un("hide", A);
+ D.remove(H)
+ },get:function(H) {
+ return typeof H == "object" ? H : F[H]
+ },bringToFront:function(H) {
+ H = this.get(H);
+ if (H != E) {
+ H._lastAccess = new Date().getTime();
+ G();
+ return true
+ }
+ return false
+ },sendToBack:function(H) {
+ H = this.get(H);
+ H._lastAccess = -(new Date().getTime());
+ G();
+ return H
+ },hideAll:function() {
+ for (var H in F) {
+ if (F[H] && typeof F[H] != "function" && F[H].isVisible()) {
+ F[H].hide()
+ }
+ }
+ },getActive:function() {
+ return E
+ },getBy:function(J, I) {
+ var K = [];
+ for (var H = D.length - 1; H >= 0; --H) {
+ var L = D[H];
+ if (J.call(I || L, L) !== false) {
+ K.push(L)
+ }
+ }
+ return K
+ },each:function(I, H) {
+ for (var J in F) {
+ if (F[J] && typeof F[J] != "function") {
+ if (I.call(H || F[J], F[J]) === false) {
+ return
+ }
+ }
+ }
+ }}
+};
+Ext.WindowMgr = new Ext.WindowGroup();
+Ext.dd.PanelProxy = function(A, B) {
+ this.panel = A;
+ this.id = this.panel.id + "-ddproxy";
+ Ext.apply(this, B)
+};
+Ext.dd.PanelProxy.prototype
+ = {insertProxy:true,setStatus:Ext.emptyFn,reset:Ext.emptyFn,update:Ext.emptyFn,stop:Ext.emptyFn,sync:Ext.emptyFn,getEl:function() {
+ return this.ghost
+},getGhost:function() {
+ return this.ghost
+},getProxy:function() {
+ return this.proxy
+},hide:function() {
+ if (this.ghost) {
+ if (this.proxy) {
+ this.proxy.remove();
+ delete this.proxy
+ }
+ this.panel.el.dom.style.display = "";
+ this.ghost.remove();
+ delete this.ghost
+ }
+},show:function() {
+ if (!this.ghost) {
+ this.ghost
+ = this.panel.createGhost(undefined, undefined, Ext.getBody());
+ this.ghost.setXY(this.panel.el.getXY());
+ if (this.insertProxy) {
+ this.proxy = this.panel.el.insertSibling({cls:"x-panel-dd-spacer"});
+ this.proxy.setSize(this.panel.getSize())
+ }
+ this.panel.el.dom.style.display = "none"
+ }
+},repair:function(B, C, A) {
+ this.hide();
+ if (typeof C == "function") {
+ C.call(A || this)
+ }
+},moveProxy:function(A, B) {
+ if (this.proxy) {
+ A.insertBefore(this.proxy.dom, B)
+ }
+}};
+Ext.Panel.DD = function(B, A) {
+ this.panel = B;
+ this.dragData = {panel:B};
+ this.proxy = new Ext.dd.PanelProxy(B, A);
+ Ext.Panel.DD.superclass.constructor.call(this, B.el, A);
+ this.setHandleElId(B.header.id);
+ B.header.setStyle("cursor", "move");
+ this.scroll = false
+};
+Ext.extend(Ext.Panel.DD, Ext.dd.DragSource, {showFrame:Ext.emptyFn,startDrag:Ext.emptyFn,b4StartDrag:function(
+ A, B) {
+ this.proxy.show()
+},b4MouseDown:function(B) {
+ var A = B.getPageX();
+ var C = B.getPageY();
+ this.autoOffset(A, C)
+},onInitDrag:function(A, B) {
+ this.onStartDrag(A, B);
+ return true
+},createFrame:Ext.emptyFn,getDragEl:function(A) {
+ return this.proxy.ghost.dom
+},endDrag:function(A) {
+ this.proxy.hide();
+ this.panel.saveState()
+},autoOffset:function(A, B) {
+ A -= this.startPageX;
+ B -= this.startPageY;
+ this.setDelta(A, B)
+}});
+Ext.state.Provider = function() {
+ this.addEvents("statechange");
+ this.state = {};
+ Ext.state.Provider.superclass.constructor.call(this)
+};
+Ext.extend(Ext.state.Provider, Ext.util.Observable, {get:function(B, A) {
+ return typeof this.state[B] == "undefined" ? A : this.state[B]
+},clear:function(A) {
+ delete this.state[A];
+ this.fireEvent("statechange", this, A, null)
+},set:function(A, B) {
+ this.state[A] = B;
+ this.fireEvent("statechange", this, A, B)
+},decodeValue:function(A) {
+ var J = /^(a|n|d|b|s|o)\:(.*)$/;
+ var C = J.exec(unescape(A));
+ if (!C || !C[1]) {
+ return
+ }
+ var F = C[1];
+ var H = C[2];
+ switch (F) {case"n":return parseFloat(H);case"d":return new Date(Date.parse(H));case"b":return(H
+ == "1");case"a":var G = [];var I = H.split("^");for (var B = 0,D = I.length;
+ B < D; B++) {
+ G.push(this.decodeValue(I[B]))
+ }return G;case"o":var G = {};var I = H.split("^");for (var B = 0,D = I.length;
+ B < D; B++) {
+ var E = I[B].split("=");
+ G[E[0]] = this.decodeValue(E[1])
+ }return G;default:return H}
+},encodeValue:function(C) {
+ var B;
+ if (typeof C == "number") {
+ B = "n:" + C
+ } else {
+ if (typeof C == "boolean") {
+ B = "b:" + (C ? "1" : "0")
+ } else {
+ if (Ext.isDate(C)) {
+ B = "d:" + C.toGMTString()
+ } else {
+ if (Ext.isArray(C)) {
+ var F = "";
+ for (var E = 0,A = C.length; E < A; E++) {
+ F += this.encodeValue(C[E]);
+ if (E != A - 1) {
+ F += "^"
+ }
+ }
+ B = "a:" + F
+ } else {
+ if (typeof C == "object") {
+ var F = "";
+ for (var D in C) {
+ if (typeof C[D] != "function" && C[D]
+ !== undefined) {
+ F += D + "=" + this.encodeValue(C[D]) + "^"
+ }
+ }
+ B = "o:" + F.substring(0, F.length - 1)
+ } else {
+ B = "s:" + C
+ }
+ }
+ }
+ }
+ }
+ return escape(B)
+}});
+Ext.state.Manager = function() {
+ var A = new Ext.state.Provider();
+ return{setProvider:function(B) {
+ A = B
+ },get:function(C, B) {
+ return A.get(C, B)
+ },set:function(B, C) {
+ A.set(B, C)
+ },clear:function(B) {
+ A.clear(B)
+ },getProvider:function() {
+ return A
+ }}
+}();
+Ext.state.CookieProvider = function(A) {
+ Ext.state.CookieProvider.superclass.constructor.call(this);
+ this.path = "/";
+ this.expires = new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 7));
+ this.domain = null;
+ this.secure = false;
+ Ext.apply(this, A);
+ this.state = this.readCookies()
+};
+Ext.extend(Ext.state.CookieProvider, Ext.state.Provider, {set:function(A, B) {
+ if (typeof B == "undefined" || B === null) {
+ this.clear(A);
+ return
+ }
+ this.setCookie(A, B);
+ Ext.state.CookieProvider.superclass.set.call(this, A, B)
+},clear:function(A) {
+ this.clearCookie(A);
+ Ext.state.CookieProvider.superclass.clear.call(this, A)
+},readCookies:function() {
+ var C = {};
+ var F = document.cookie + ";";
+ var B = /\s?(.*?)=(.*?);/g;
+ var E;
+ while ((E = B.exec(F)) != null) {
+ var A = E[1];
+ var D = E[2];
+ if (A && A.substring(0, 3) == "ys-") {
+ C[A.substr(3)] = this.decodeValue(D)
+ }
+ }
+ return C
+},setCookie:function(A, B) {
+ document.cookie = "ys-" + A + "=" + this.encodeValue(B) + ((this.expires
+ == null) ? "" : ("; expires=" + this.expires.toGMTString()))
+ + ((this.path == null) ? "" : ("; path=" + this.path))
+ + ((this.domain == null) ? "" : ("; domain=" + this.domain))
+ + ((this.secure == true) ? "; secure" : "")
+},clearCookie:function(A) {
+ document.cookie = "ys-" + A + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT"
+ + ((this.path == null) ? "" : ("; path=" + this.path))
+ + ((this.domain == null) ? "" : ("; domain=" + this.domain))
+ + ((this.secure == true) ? "; secure" : "")
+}});
+Ext.DataView
+ = Ext.extend(Ext.BoxComponent, {selectedClass:"x-view-selected",emptyText:"",last:false,initComponent:function() {
+ Ext.DataView.superclass.initComponent.call(this);
+ if (typeof this.tpl == "string") {
+ this.tpl = new Ext.XTemplate(this.tpl)
+ }
+ this.addEvents("beforeclick", "click", "containerclick", "dblclick", "contextmenu", "selectionchange", "beforeselect");
+ this.all = new Ext.CompositeElementLite();
+ this.selected = new Ext.CompositeElementLite()
+},onRender:function() {
+ if (!this.el) {
+ this.el = document.createElement("div")
+ }
+ Ext.DataView.superclass.onRender.apply(this, arguments)
+},afterRender:function() {
+ Ext.DataView.superclass.afterRender.call(this);
+ this.el.on({"click":this.onClick,"dblclick":this.onDblClick,"contextmenu":this.onContextMenu,scope:this});
+ if (this.overClass) {
+ this.el.on({"mouseover":this.onMouseOver,"mouseout":this.onMouseOut,scope:this})
+ }
+ if (this.store) {
+ this.setStore(this.store, true)
+ }
+},refresh:function() {
+ this.clearSelections(false, true);
+ this.el.update("");
+ var B = [];
+ var A = this.store.getRange();
+ if (A.length < 1) {
+ this.el.update(this.emptyText);
+ this.all.clear();
+ return
+ }
+ this.tpl.overwrite(this.el, this.collectData(A, 0));
+ this.all.fill(Ext.query(this.itemSelector, this.el.dom));
+ this.updateIndexes(0)
+},prepareData:function(A) {
+ return A
+},collectData:function(B, E) {
+ var D = [];
+ for (var C = 0,A = B.length; C < A; C++) {
+ D[D.length] = this.prepareData(B[C].data, E + C, B[C])
+ }
+ return D
+},bufferRender:function(A) {
+ var B = document.createElement("div");
+ this.tpl.overwrite(B, this.collectData(A));
+ return Ext.query(this.itemSelector, B)
+},onUpdate:function(F, A) {
+ var B = this.store.indexOf(A);
+ var E = this.isSelected(B);
+ var C = this.all.elements[B];
+ var D = this.bufferRender([A], B)[0];
+ this.all.replaceElement(B, D, true);
+ if (E) {
+ this.selected.replaceElement(C, D);
+ this.all.item(B).addClass(this.selectedClass)
+ }
+ this.updateIndexes(B, B)
+},onAdd:function(D, B, C) {
+ if (this.all.getCount() == 0) {
+ this.refresh();
+ return
+ }
+ var A = this.bufferRender(B, C),E;
+ if (C < this.all.getCount()) {
+ E = this.all.item(C).insertSibling(A, "before", true);
+ this.all.elements.splice(C, 0, E)
+ } else {
+ E = this.all.last().insertSibling(A, "after", true);
+ this.all.elements.push(E)
+ }
+ this.updateIndexes(C)
+},onRemove:function(C, A, B) {
+ this.deselect(B);
+ this.all.removeElement(B, true);
+ this.updateIndexes(B)
+},refreshNode:function(A) {
+ this.onUpdate(this.store, this.store.getAt(A))
+},updateIndexes:function(D, C) {
+ var B = this.all.elements;
+ D = D || 0;
+ C = C || ((C === 0) ? 0 : (B.length - 1));
+ for (var A = D; A <= C; A++) {
+ B[A].viewIndex = A
+ }
+},setStore:function(A, B) {
+ if (!B && this.store) {
+ this.store.un("beforeload", this.onBeforeLoad, this);
+ this.store.un("datachanged", this.refresh, this);
+ this.store.un("add", this.onAdd, this);
+ this.store.un("remove", this.onRemove, this);
+ this.store.un("update", this.onUpdate, this);
+ this.store.un("clear", this.refresh, this)
+ }
+ if (A) {
+ A = Ext.StoreMgr.lookup(A);
+ A.on("beforeload", this.onBeforeLoad, this);
+ A.on("datachanged", this.refresh, this);
+ A.on("add", this.onAdd, this);
+ A.on("remove", this.onRemove, this);
+ A.on("update", this.onUpdate, this);
+ A.on("clear", this.refresh, this)
+ }
+ this.store = A;
+ if (A) {
+ this.refresh()
+ }
+},findItemFromChild:function(A) {
+ return Ext.fly(A).findParent(this.itemSelector, this.el)
+},onClick:function(C) {
+ var B = C.getTarget(this.itemSelector, this.el);
+ if (B) {
+ var A = this.indexOf(B);
+ if (this.onItemClick(B, A, C) !== false) {
+ this.fireEvent("click", this, A, B, C)
+ }
+ } else {
+ if (this.fireEvent("containerclick", this, C) !== false) {
+ this.clearSelections()
+ }
+ }
+},onContextMenu:function(B) {
+ var A = B.getTarget(this.itemSelector, this.el);
+ if (A) {
+ this.fireEvent("contextmenu", this, this.indexOf(A), A, B)
+ }
+},onDblClick:function(B) {
+ var A = B.getTarget(this.itemSelector, this.el);
+ if (A) {
+ this.fireEvent("dblclick", this, this.indexOf(A), A, B)
+ }
+},onMouseOver:function(B) {
+ var A = B.getTarget(this.itemSelector, this.el);
+ if (A && A !== this.lastItem) {
+ this.lastItem = A;
+ Ext.fly(A).addClass(this.overClass)
+ }
+},onMouseOut:function(A) {
+ if (this.lastItem) {
+ if (!A.within(this.lastItem, true)) {
+ Ext.fly(this.lastItem).removeClass(this.overClass);
+ delete this.lastItem
+ }
+ }
+},onItemClick:function(B, A, C) {
+ if (this.fireEvent("beforeclick", this, A, B, C) === false) {
+ return false
+ }
+ if (this.multiSelect) {
+ this.doMultiSelection(B, A, C);
+ C.preventDefault()
+ } else {
+ if (this.singleSelect) {
+ this.doSingleSelection(B, A, C);
+ C.preventDefault()
+ }
+ }
+ return true
+},doSingleSelection:function(B, A, C) {
+ if (C.ctrlKey && this.isSelected(A)) {
+ this.deselect(A)
+ } else {
+ this.select(A, false)
+ }
+},doMultiSelection:function(C, A, D) {
+ if (D.shiftKey && this.last !== false) {
+ var B = this.last;
+ this.selectRange(B, A, D.ctrlKey);
+ this.last = B
+ } else {
+ if ((D.ctrlKey || this.simpleSelect) && this.isSelected(A)) {
+ this.deselect(A)
+ } else {
+ this.select(A, D.ctrlKey || D.shiftKey || this.simpleSelect)
+ }
+ }
+},getSelectionCount:function() {
+ return this.selected.getCount()
+},getSelectedNodes:function() {
+ return this.selected.elements
+},getSelectedIndexes:function() {
+ var B = [],D = this.selected.elements;
+ for (var C = 0,A = D.length; C < A; C++) {
+ B.push(D[C].viewIndex)
+ }
+ return B
+},getSelectedRecords:function() {
+ var D = [],C = this.selected.elements;
+ for (var B = 0,A = C.length; B < A; B++) {
+ D[D.length] = this.store.getAt(C[B].viewIndex)
+ }
+ return D
+},getRecords:function(B) {
+ var E = [],D = B;
+ for (var C = 0,A = D.length; C < A; C++) {
+ E[E.length] = this.store.getAt(D[C].viewIndex)
+ }
+ return E
+},getRecord:function(A) {
+ return this.store.getAt(A.viewIndex)
+},clearSelections:function(A, B) {
+ if (this.multiSelect || this.singleSelect) {
+ if (!B) {
+ this.selected.removeClass(this.selectedClass)
+ }
+ this.selected.clear();
+ this.last = false;
+ if (!A) {
+ this.fireEvent("selectionchange", this, this.selected.elements)
+ }
+ }
+},isSelected:function(A) {
+ return this.selected.contains(this.getNode(A))
+},deselect:function(A) {
+ if (this.isSelected(A)) {
+ var A = this.getNode(A);
+ this.selected.removeElement(A);
+ if (this.last == A.viewIndex) {
+ this.last = false
+ }
+ Ext.fly(A).removeClass(this.selectedClass);
+ this.fireEvent("selectionchange", this, this.selected.elements)
+ }
+},select:function(D, F, B) {
+ if (Ext.isArray(D)) {
+ if (!F) {
+ this.clearSelections(true)
+ }
+ for (var C = 0,A = D.length; C < A; C++) {
+ this.select(D[C], true, true)
+ }
+ } else {
+ var E = this.getNode(D);
+ if (!F) {
+ this.clearSelections(true)
+ }
+ if (E && !this.isSelected(E)) {
+ if (this.fireEvent("beforeselect", this, E, this.selected.elements)
+ !== false) {
+ Ext.fly(E).addClass(this.selectedClass);
+ this.selected.add(E);
+ this.last = E.viewIndex;
+ if (!B) {
+ this.fireEvent("selectionchange", this, this.selected.elements)
+ }
+ }
+ }
+ }
+},selectRange:function(C, A, B) {
+ if (!B) {
+ this.clearSelections(true)
+ }
+ this.select(this.getNodes(C, A), true)
+},getNode:function(A) {
+ if (typeof A == "string") {
+ return document.getElementById(A)
+ } else {
+ if (typeof A == "number") {
+ return this.all.elements[A]
+ }
+ }
+ return A
+},getNodes:function(E, A) {
+ var D = this.all.elements;
+ E = E || 0;
+ A = typeof A == "undefined" ? D.length - 1 : A;
+ var B = [],C;
+ if (E <= A) {
+ for (C = E; C <= A; C++) {
+ B.push(D[C])
+ }
+ } else {
+ for (C = E; C >= A; C--) {
+ B.push(D[C])
+ }
+ }
+ return B
+},indexOf:function(A) {
+ A = this.getNode(A);
+ if (typeof A.viewIndex == "number") {
+ return A.viewIndex
+ }
+ return this.all.indexOf(A)
+},onBeforeLoad:function() {
+ if (this.loadingText) {
+ this.clearSelections(false, true);
+ this.el.update("<div class=\"loading-indicator\">" + this.loadingText
+ + "</div>");
+ this.all.clear()
+ }
+}});
+Ext.reg("dataview", Ext.DataView);
+Ext.ColorPalette = function(A) {
+ Ext.ColorPalette.superclass.constructor.call(this, A);
+ this.addEvents("select");
+ if (this.handler) {
+ this.on("select", this.handler, this.scope, true)
+ }
+};
+Ext.extend(Ext.ColorPalette, Ext.Component, {itemCls:"x-color-palette",value:null,clickEvent:"click",ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(
+ B, A) {
+ var C = this.tpl
+ || new Ext.XTemplate("<tpl for=\".\"><a href=\"#\" class=\"color-{.}\" hidefocus=\"on\"><em><span style=\"background:#{.}\" unselectable=\"on\">&#160;</span></em></a></tpl>");
+ var D = document.createElement("div");
+ D.className = this.itemCls;
+ C.overwrite(D, this.colors);
+ B.dom.insertBefore(D, A);
+ this.el = Ext.get(D);
+ this.el.on(this.clickEvent, this.handleClick, this, {delegate:"a"});
+ if (this.clickEvent != "click") {
+ this.el.on("click", Ext.emptyFn, this, {delegate:"a",preventDefault:true})
+ }
+},afterRender:function() {
+ Ext.ColorPalette.superclass.afterRender.call(this);
+ if (this.value) {
+ var A = this.value;
+ this.value = null;
+ this.select(A)
+ }
+},handleClick:function(B, A) {
+ B.preventDefault();
+ if (!this.disabled) {
+ var C = A.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];
+ this.select(C.toUpperCase())
+ }
+},select:function(A) {
+ A = A.replace("#", "");
+ if (A != this.value || this.allowReselect) {
+ var B = this.el;
+ if (this.value) {
+ B.child("a.color-" + this.value).removeClass("x-color-palette-sel")
+ }
+ B.child("a.color-" + A).addClass("x-color-palette-sel");
+ this.value = A;
+ this.fireEvent("select", this, A)
+ }
+}});
+Ext.reg("colorpalette", Ext.ColorPalette);
+Ext.DatePicker
+ = Ext.extend(Ext.Component, {todayText:"Today",okText:"&#160;OK&#160;",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minDate:null,maxDate:null,minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDays:null,disabledDaysText:"",disabledDatesRE:null,disabledDatesText:"",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:"Next Month (Control+Right)",prevText:"Previous Month (Control+Left)",monthYearText:"Choose a month (Control+Up/Down to move years)",startDay:0,initComponent:function() {
+ Ext.DatePicker.superclass.initComponent.call(this);
+ this.value = this.value ? this.value.clearTime() : new Date().clearTime();
+ this.addEvents("select");
+ if (this.handler) {
+ this.on("select", this.handler, this.scope || this)
+ }
+ this.initDisabledDays()
+},initDisabledDays:function() {
+ if (!this.disabledDatesRE && this.disabledDates) {
+ var A = this.disabledDates;
+ var C = "(?:";
+ for (var B = 0; B < A.length; B++) {
+ C += A[B];
+ if (B != A.length - 1) {
+ C += "|"
+ }
+ }
+ this.disabledDatesRE = new RegExp(C + ")")
+ }
+},setValue:function(B) {
+ var A = this.value;
+ this.value = B.clearTime(true);
+ if (this.el) {
+ this.update(this.value)
+ }
+},getValue:function() {
+ return this.value
+},focus:function() {
+ if (this.el) {
+ this.update(this.activeDate)
+ }
+},onRender:function(A, F) {
+ var C = ["<table cellspacing=\"0\">","<tr><td class=\"x-date-left\"><a href=\"#\" title=\"",this.prevText,"\">&#160;</a></td><td class=\"x-date-middle\" align=\"center\"></td><td class=\"x-date-right\"><a href=\"#\" title=\"",this.nextText,"\">&#160;</a></td></tr>","<tr><td colspan=\"3\"><table class=\"x-date-inner\" cellspacing=\"0\"><thead><tr>"];
+ var E = this.dayNames;
+ for (var D = 0; D < 7; D++) {
+ var G = this.startDay + D;
+ if (G > 6) {
+ G = G - 7
+ }
+ C.push("<th><span>", E[G].substr(0, 1), "</span></th>")
+ }
+ C[C.length] = "</tr></thead><tbody><tr>";
+ for (var D = 0; D < 42; D++) {
+ if (D % 7 == 0 && D != 0) {
+ C[C.length] = "</tr><tr>"
+ }
+ C[C.length]
+ = "<td><a href=\"#\" hidefocus=\"on\" class=\"x-date-date\" tabIndex=\"1\"><em><span></span></em></a></td>"
+ }
+ C[C.length]
+ = "</tr></tbody></table></td></tr><tr><td colspan=\"3\" class=\"x-date-bottom\" align=\"center\"></td></tr></table><div class=\"x-date-mp\"></div>";
+ var B = document.createElement("div");
+ B.className = "x-date-picker";
+ B.innerHTML = C.join("");
+ A.dom.insertBefore(B, F);
+ this.el = Ext.get(B);
+ this.eventEl = Ext.get(B.firstChild);
+ new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"), {handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});
+ new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"), {handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});
+ this.eventEl.on("mousewheel", this.handleMouseWheel, this);
+ this.monthPicker = this.el.down("div.x-date-mp");
+ this.monthPicker.enableDisplayMode("block");
+ var I = new Ext.KeyNav(this.eventEl, {"left":function(J) {
+ J.ctrlKey ? this.showPrevMonth()
+ : this.update(this.activeDate.add("d", -1))
+ },"right":function(J) {
+ J.ctrlKey ? this.showNextMonth()
+ : this.update(this.activeDate.add("d", 1))
+ },"up":function(J) {
+ J.ctrlKey ? this.showNextYear()
+ : this.update(this.activeDate.add("d", -7))
+ },"down":function(J) {
+ J.ctrlKey ? this.showPrevYear()
+ : this.update(this.activeDate.add("d", 7))
+ },"pageUp":function(J) {
+ this.showNextMonth()
+ },"pageDown":function(J) {
+ this.showPrevMonth()
+ },"enter":function(J) {
+ J.stopPropagation();
+ return true
+ },scope:this});
+ this.eventEl.on("click", this.handleDateClick, this, {delegate:"a.x-date-date"});
+ this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this);
+ this.el.unselectable();
+ this.cells = this.el.select("table.x-date-inner tbody td");
+ this.textNodes = this.el.query("table.x-date-inner tbody span");
+ this.mbtn
+ = new Ext.Button({text:"&#160;",tooltip:this.monthYearText,renderTo:this.el.child("td.x-date-middle", true)});
+ this.mbtn.on("click", this.showMonthPicker, this);
+ this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");
+ var H = (new Date()).dateFormat(this.format);
+ this.todayBtn
+ = new Ext.Button({renderTo:this.el.child("td.x-date-bottom", true),text:String.format(this.todayText, H),tooltip:String.format(this.todayTip, H),handler:this.selectToday,scope:this});
+ if (Ext.isIE) {
+ this.el.repaint()
+ }
+ this.update(this.value)
+},createMonthPicker:function() {
+ if (!this.monthPicker.dom.firstChild) {
+ var A = ["<table border=\"0\" cellspacing=\"0\">"];
+ for (var B = 0; B < 6; B++) {
+ A.push("<tr><td class=\"x-date-mp-month\"><a href=\"#\">", this.monthNames[B].substr(0, 3), "</a></td>", "<td class=\"x-date-mp-month x-date-mp-sep\"><a href=\"#\">", this.monthNames[B
+ + 6].substr(0, 3), "</a></td>", B == 0
+ ? "<td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-prev\"></a></td><td class=\"x-date-mp-ybtn\" align=\"center\"><a class=\"x-date-mp-next\"></a></td></tr>"
+ : "<td class=\"x-date-mp-year\"><a href=\"#\"></a></td><td class=\"x-date-mp-year\"><a href=\"#\"></a></td></tr>")
+ }
+ A.push("<tr class=\"x-date-mp-btns\"><td colspan=\"4\"><button type=\"button\" class=\"x-date-mp-ok\">", this.okText, "</button><button type=\"button\" class=\"x-date-mp-cancel\">", this.cancelText, "</button></td></tr>", "</table>");
+ this.monthPicker.update(A.join(""));
+ this.monthPicker.on("click", this.onMonthClick, this);
+ this.monthPicker.on("dblclick", this.onMonthDblClick, this);
+ this.mpMonths = this.monthPicker.select("td.x-date-mp-month");
+ this.mpYears = this.monthPicker.select("td.x-date-mp-year");
+ this.mpMonths.each(function(C, D, E) {
+ E += 1;
+ if ((E % 2) == 0) {
+ C.dom.xmonth = 5 + Math.round(E * 0.5)
+ } else {
+ C.dom.xmonth = Math.round((E - 1) * 0.5)
+ }
+ })
+ }
+},showMonthPicker:function() {
+ this.createMonthPicker();
+ var A = this.el.getSize();
+ this.monthPicker.setSize(A);
+ this.monthPicker.child("table").setSize(A);
+ this.mpSelMonth = (this.activeDate || this.value).getMonth();
+ this.updateMPMonth(this.mpSelMonth);
+ this.mpSelYear = (this.activeDate || this.value).getFullYear();
+ this.updateMPYear(this.mpSelYear);
+ this.monthPicker.slideIn("t", {duration:0.2})
+},updateMPYear:function(E) {
+ this.mpyear = E;
+ var C = this.mpYears.elements;
+ for (var B = 1; B <= 10; B++) {
+ var D = C[B - 1],A;
+ if ((B % 2) == 0) {
+ A = E + Math.round(B * 0.5);
+ D.firstChild.innerHTML = A;
+ D.xyear = A
+ } else {
+ A = E - (5 - Math.round(B * 0.5));
+ D.firstChild.innerHTML = A;
+ D.xyear = A
+ }
+ this.mpYears.item(B - 1)[A == this.mpSelYear ? "addClass"
+ : "removeClass"]("x-date-mp-sel")
+ }
+},updateMPMonth:function(A) {
+ this.mpMonths.each(function(B, C, D) {
+ B[B.dom.xmonth == A ? "addClass" : "removeClass"]("x-date-mp-sel")
+ })
+},selectMPMonth:function(A) {
+},onMonthClick:function(D, B) {
+ D.stopEvent();
+ var C = new Ext.Element(B),A;
+ if (C.is("button.x-date-mp-cancel")) {
+ this.hideMonthPicker()
+ } else {
+ if (C.is("button.x-date-mp-ok")) {
+ this.update(new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate
+ || this.value).getDate()));
+ this.hideMonthPicker()
+ } else {
+ if (A = C.up("td.x-date-mp-month", 2)) {
+ this.mpMonths.removeClass("x-date-mp-sel");
+ A.addClass("x-date-mp-sel");
+ this.mpSelMonth = A.dom.xmonth
+ } else {
+ if (A = C.up("td.x-date-mp-year", 2)) {
+ this.mpYears.removeClass("x-date-mp-sel");
+ A.addClass("x-date-mp-sel");
+ this.mpSelYear = A.dom.xyear
+ } else {
+ if (C.is("a.x-date-mp-prev")) {
+ this.updateMPYear(this.mpyear - 10)
+ } else {
+ if (C.is("a.x-date-mp-next")) {
+ this.updateMPYear(this.mpyear + 10)
+ }
+ }
+ }
+ }
+ }
+ }
+},onMonthDblClick:function(D, B) {
+ D.stopEvent();
+ var C = new Ext.Element(B),A;
+ if (A = C.up("td.x-date-mp-month", 2)) {
+ this.update(new Date(this.mpSelYear, A.dom.xmonth, (this.activeDate
+ || this.value).getDate()));
+ this.hideMonthPicker()
+ } else {
+ if (A = C.up("td.x-date-mp-year", 2)) {
+ this.update(new Date(A.dom.xyear, this.mpSelMonth, (this.activeDate
+ || this.value).getDate()));
+ this.hideMonthPicker()
+ }
+ }
+},hideMonthPicker:function(A) {
+ if (this.monthPicker) {
+ if (A === true) {
+ this.monthPicker.hide()
+ } else {
+ this.monthPicker.slideOut("t", {duration:0.2})
+ }
+ }
+},showPrevMonth:function(A) {
+ this.update(this.activeDate.add("mo", -1))
+},showNextMonth:function(A) {
+ this.update(this.activeDate.add("mo", 1))
+},showPrevYear:function() {
+ this.update(this.activeDate.add("y", -1))
+},showNextYear:function() {
+ this.update(this.activeDate.add("y", 1))
+},handleMouseWheel:function(A) {
+ var B = A.getWheelDelta();
+ if (B > 0) {
+ this.showPrevMonth();
+ A.stopEvent()
+ } else {
+ if (B < 0) {
+ this.showNextMonth();
+ A.stopEvent()
+ }
+ }
+},handleDateClick:function(B, A) {
+ B.stopEvent();
+ if (A.dateValue && !Ext.fly(A.parentNode).hasClass("x-date-disabled")) {
+ this.setValue(new Date(A.dateValue));
+ this.fireEvent("select", this, this.value)
+ }
+},selectToday:function() {
+ this.setValue(new Date().clearTime());
+ this.fireEvent("select", this, this.value)
+},update:function(W) {
+ var A = this.activeDate;
+ this.activeDate = W;
+ if (A && this.el) {
+ var I = W.getTime();
+ if (A.getMonth() == W.getMonth() && A.getFullYear()
+ == W.getFullYear()) {
+ this.cells.removeClass("x-date-selected");
+ this.cells.each(function(a) {
+ if (a.dom.firstChild.dateValue == I) {
+ a.addClass("x-date-selected");
+ setTimeout(function() {
+ try {
+ a.dom.firstChild.focus()
+ } catch(b) {
+ }
+ }, 50);
+ return false
+ }
+ });
+ return
+ }
+ }
+ var F = W.getDaysInMonth();
+ var J = W.getFirstDateOfMonth();
+ var C = J.getDay() - this.startDay;
+ if (C <= this.startDay) {
+ C += 7
+ }
+ var S = W.add("mo", -1);
+ var D = S.getDaysInMonth() - C;
+ var B = this.cells.elements;
+ var K = this.textNodes;
+ F += C;
+ var P = 86400000;
+ var U = (new Date(S.getFullYear(), S.getMonth(), D)).clearTime();
+ var T = new Date().clearTime().getTime();
+ var N = W.clearTime().getTime();
+ var M = this.minDate ? this.minDate.clearTime() : Number.NEGATIVE_INFINITY;
+ var Q = this.maxDate ? this.maxDate.clearTime() : Number.POSITIVE_INFINITY;
+ var X = this.disabledDatesRE;
+ var L = this.disabledDatesText;
+ var Z = this.disabledDays ? this.disabledDays.join("") : false;
+ var V = this.disabledDaysText;
+ var R = this.format;
+ var G = function(d, a) {
+ a.title = "";
+ var b = U.getTime();
+ a.firstChild.dateValue = b;
+ if (b == T) {
+ a.className += " x-date-today";
+ a.title = d.todayText
+ }
+ if (b == N) {
+ a.className += " x-date-selected";
+ setTimeout(function() {
+ try {
+ a.firstChild.focus()
+ } catch(f) {
+ }
+ }, 50)
+ }
+ if (b < M) {
+ a.className = " x-date-disabled";
+ a.title = d.minText;
+ return
+ }
+ if (b > Q) {
+ a.className = " x-date-disabled";
+ a.title = d.maxText;
+ return
+ }
+ if (Z) {
+ if (Z.indexOf(U.getDay()) != -1) {
+ a.title = V;
+ a.className = " x-date-disabled"
+ }
+ }
+ if (X && R) {
+ var c = U.dateFormat(R);
+ if (X.test(c)) {
+ a.title = L.replace("%0", c);
+ a.className = " x-date-disabled"
+ }
+ }
+ };
+ var O = 0;
+ for (; O < C; O++) {
+ K[O].innerHTML = (++D);
+ U.setDate(U.getDate() + 1);
+ B[O].className = "x-date-prevday";
+ G(this, B[O])
+ }
+ for (; O < F; O++) {
+ intDay = O - C + 1;
+ K[O].innerHTML = (intDay);
+ U.setDate(U.getDate() + 1);
+ B[O].className = "x-date-active";
+ G(this, B[O])
+ }
+ var Y = 0;
+ for (; O < 42; O++) {
+ K[O].innerHTML = (++Y);
+ U.setDate(U.getDate() + 1);
+ B[O].className = "x-date-nextday";
+ G(this, B[O])
+ }
+ this.mbtn.setText(this.monthNames[W.getMonth()] + " " + W.getFullYear());
+ if (!this.internalRender) {
+ var E = this.el.dom.firstChild;
+ var H = E.offsetWidth;
+ this.el.setWidth(H + this.el.getBorderWidth("lr"));
+ Ext.fly(E).setWidth(H);
+ this.internalRender = true;
+ if (Ext.isOpera && !this.secondPass) {
+ E.rows[0].cells[1].style.width = (H
+ - (E.rows[0].cells[0].offsetWidth
+ + E.rows[0].cells[2].offsetWidth)) + "px";
+ this.secondPass = true;
+ this.update.defer(10, this, [W])
+ }
+ }
+},beforeDestroy:function() {
+ this.mbtn.destroy();
+ this.todayBtn.destroy()
+}});
+Ext.reg("datepicker", Ext.DatePicker);
+Ext.TabPanel
+ = Ext.extend(Ext.Panel, {monitorResize:true,deferredRender:true,tabWidth:120,minTabWidth:30,resizeTabs:false,enableTabScroll:false,scrollIncrement:0,scrollRepeatInterval:400,scrollDuration:0.35,animScroll:true,tabPosition:"top",baseCls:"x-tab-panel",autoTabs:false,autoTabSelector:"div.x-tab",activeTab:null,tabMargin:2,plain:false,wheelIncrement:20,idDelimiter:"__",itemCls:"x-tab-item",elements:"body",headerAsText:false,frame:false,hideBorders:true,initComponent:function() {
+ this.frame = false;
+ Ext.TabPanel.superclass.initComponent.call(this);
+ this.addEvents("beforetabchange", "tabchange", "contextmenu");
+ this.setLayout(new Ext.layout.CardLayout({deferredRender:this.deferredRender}));
+ if (this.tabPosition == "top") {
+ this.elements += ",header";
+ this.stripTarget = "header"
+ } else {
+ this.elements += ",footer";
+ this.stripTarget = "footer"
+ }
+ if (!this.stack) {
+ this.stack = Ext.TabPanel.AccessStack()
+ }
+ this.initItems()
+},render:function() {
+ Ext.TabPanel.superclass.render.apply(this, arguments);
+ if (this.activeTab !== undefined) {
+ var A = this.activeTab;
+ delete this.activeTab;
+ this.setActiveTab(A)
+ }
+},onRender:function(C, A) {
+ Ext.TabPanel.superclass.onRender.call(this, C, A);
+ if (this.plain) {
+ var E = this.tabPosition == "top" ? "header" : "footer";
+ this[E].addClass("x-tab-panel-" + E + "-plain")
+ }
+ var B = this[this.stripTarget];
+ this.stripWrap
+ = B.createChild({cls:"x-tab-strip-wrap",cn:{tag:"ul",cls:"x-tab-strip x-tab-strip-"
+ + this.tabPosition}});
+ this.stripSpacer = B.createChild({cls:"x-tab-strip-spacer"});
+ this.strip = new Ext.Element(this.stripWrap.dom.firstChild);
+ this.edge = this.strip.createChild({tag:"li",cls:"x-tab-edge"});
+ this.strip.createChild({cls:"x-clear"});
+ this.body.addClass("x-tab-panel-body-" + this.tabPosition);
+ if (!this.itemTpl) {
+ var D = new Ext.Template("<li class=\"{cls}\" id=\"{id}\"><a class=\"x-tab-strip-close\" onclick=\"return false;\"></a>", "<a class=\"x-tab-right\" href=\"#\" onclick=\"return false;\"><em class=\"x-tab-left\">", "<span class=\"x-tab-strip-inner\"><span class=\"x-tab-strip-text {iconCls}\">{text}</span></span>", "</em></a></li>");
+ D.disableFormats = true;
+ D.compile();
+ Ext.TabPanel.prototype.itemTpl = D
+ }
+ this.items.each(this.initTab, this)
+},afterRender:function() {
+ Ext.TabPanel.superclass.afterRender.call(this);
+ if (this.autoTabs) {
+ this.readTabs(false)
+ }
+},initEvents:function() {
+ Ext.TabPanel.superclass.initEvents.call(this);
+ this.on("add", this.onAdd, this);
+ this.on("remove", this.onRemove, this);
+ this.strip.on("mousedown", this.onStripMouseDown, this);
+ this.strip.on("click", this.onStripClick, this);
+ this.strip.on("contextmenu", this.onStripContextMenu, this);
+ if (this.enableTabScroll) {
+ this.strip.on("mousewheel", this.onWheel, this)
+ }
+},findTargets:function(C) {
+ var B = null;
+ var A = C.getTarget("li", this.strip);
+ if (A) {
+ B = this.getComponent(A.id.split(this.idDelimiter)[1]);
+ if (B.disabled) {
+ return{close:null,item:null,el:null}
+ }
+ }
+ return{close:C.getTarget(".x-tab-strip-close", this.strip),item:B,el:A}
+},onStripMouseDown:function(B) {
+ B.preventDefault();
+ if (B.button != 0) {
+ return
+ }
+ var A = this.findTargets(B);
+ if (A.close) {
+ this.remove(A.item);
+ return
+ }
+ if (A.item && A.item != this.activeTab) {
+ this.setActiveTab(A.item)
+ }
+},onStripClick:function(B) {
+ var A = this.findTargets(B);
+ if (!A.close && A.item && A.item != this.activeTab) {
+ this.setActiveTab(A.item)
+ }
+},onStripContextMenu:function(B) {
+ B.preventDefault();
+ var A = this.findTargets(B);
+ if (A.item) {
+ this.fireEvent("contextmenu", this, A.item, B)
+ }
+},readTabs:function(D) {
+ if (D === true) {
+ this.items.each(function(G) {
+ this.remove(G)
+ }, this)
+ }
+ var C = this.el.query(this.autoTabSelector);
+ for (var B = 0,A = C.length; B < A; B++) {
+ var E = C[B];
+ var F = E.getAttribute("title");
+ E.removeAttribute("title");
+ this.add({title:F,el:E})
+ }
+},initTab:function(D, B) {
+ var E = this.strip.dom.childNodes[B];
+ var A = D.closable ? "x-tab-strip-closable" : "";
+ if (D.disabled) {
+ A += " x-item-disabled"
+ }
+ if (D.iconCls) {
+ A += " x-tab-with-icon"
+ }
+ if (D.tabCls) {
+ A += " " + D.tabCls
+ }
+ var F = {id:this.id + this.idDelimiter
+ + D.getItemId(),text:D.title,cls:A,iconCls:D.iconCls || ""};
+ var C = E ? this.itemTpl.insertBefore(E, F)
+ : this.itemTpl.append(this.strip, F);
+ Ext.fly(C).addClassOnOver("x-tab-strip-over");
+ if (D.tabTip) {
+ Ext.fly(C).child("span.x-tab-strip-text", true).qtip = D.tabTip
+ }
+ D.on("disable", this.onItemDisabled, this);
+ D.on("enable", this.onItemEnabled, this);
+ D.on("titlechange", this.onItemTitleChanged, this);
+ D.on("beforeshow", this.onBeforeShowItem, this)
+},onAdd:function(C, B, A) {
+ this.initTab(B, A);
+ if (this.items.getCount() == 1) {
+ this.syncSize()
+ }
+ this.delegateUpdates()
+},onBeforeAdd:function(B) {
+ var A = B.events ? (this.items.containsKey(B.getItemId()) ? B : null)
+ : this.items.get(B);
+ if (A) {
+ this.setActiveTab(B);
+ return false
+ }
+ Ext.TabPanel.superclass.onBeforeAdd.apply(this, arguments);
+ var C = B.elements;
+ B.elements = C ? C.replace(",header", "") : C;
+ B.border = (B.border === true)
+},onRemove:function(C, B) {
+ Ext.removeNode(this.getTabEl(B));
+ this.stack.remove(B);
+ if (B == this.activeTab) {
+ var A = this.stack.next();
+ if (A) {
+ this.setActiveTab(A)
+ } else {
+ this.setActiveTab(0)
+ }
+ }
+ this.delegateUpdates()
+},onBeforeShowItem:function(A) {
+ if (A != this.activeTab) {
+ this.setActiveTab(A);
+ return false
+ }
+},onItemDisabled:function(B) {
+ var A = this.getTabEl(B);
+ if (A) {
+ Ext.fly(A).addClass("x-item-disabled")
+ }
+ this.stack.remove(B)
+},onItemEnabled:function(B) {
+ var A = this.getTabEl(B);
+ if (A) {
+ Ext.fly(A).removeClass("x-item-disabled")
+ }
+},onItemTitleChanged:function(B) {
+ var A = this.getTabEl(B);
+ if (A) {
+ Ext.fly(A).child("span.x-tab-strip-text", true).innerHTML = B.title
+ }
+},getTabEl:function(A) {
+ var B = (typeof A === "number") ? this.items.items[A].getItemId()
+ : A.getItemId();
+ return document.getElementById(this.id + this.idDelimiter + B)
+},onResize:function() {
+ Ext.TabPanel.superclass.onResize.apply(this, arguments);
+ this.delegateUpdates()
+},beginUpdate:function() {
+ this.suspendUpdates = true
+},endUpdate:function() {
+ this.suspendUpdates = false;
+ this.delegateUpdates()
+},hideTabStripItem:function(B) {
+ B = this.getComponent(B);
+ var A = this.getTabEl(B);
+ if (A) {
+ A.style.display = "none";
+ this.delegateUpdates()
+ }
+},unhideTabStripItem:function(B) {
+ B = this.getComponent(B);
+ var A = this.getTabEl(B);
+ if (A) {
+ A.style.display = "";
+ this.delegateUpdates()
+ }
+},delegateUpdates:function() {
+ if (this.suspendUpdates) {
+ return
+ }
+ if (this.resizeTabs && this.rendered) {
+ this.autoSizeTabs()
+ }
+ if (this.enableTabScroll && this.rendered) {
+ this.autoScrollTabs()
+ }
+},autoSizeTabs:function() {
+ var G = this.items.length;
+ var B = this.tabPosition != "bottom" ? "header" : "footer";
+ var C = this[B].dom.offsetWidth;
+ var A = this[B].dom.clientWidth;
+ if (!this.resizeTabs || G < 1 || !A) {
+ return
+ }
+ var I = Math.max(Math.min(Math.floor((A - 4) / G)
+ - this.tabMargin, this.tabWidth), this.minTabWidth);
+ this.lastTabWidth = I;
+ var K = this.stripWrap.dom.getElementsByTagName("li");
+ for (var E = 0,H = K.length - 1; E < H; E++) {
+ var J = K[E];
+ var L = J.childNodes[1].firstChild.firstChild;
+ var F = J.offsetWidth;
+ var D = L.offsetWidth;
+ L.style.width = (I - (F - D)) + "px"
+ }
+},adjustBodyWidth:function(A) {
+ if (this.header) {
+ this.header.setWidth(A)
+ }
+ if (this.footer) {
+ this.footer.setWidth(A)
+ }
+ return A
+},setActiveTab:function(C) {
+ C = this.getComponent(C);
+ if (!C || this.fireEvent("beforetabchange", this, C, this.activeTab)
+ === false) {
+ return
+ }
+ if (!this.rendered) {
+ this.activeTab = C;
+ return
+ }
+ if (this.activeTab != C) {
+ if (this.activeTab) {
+ var A = this.getTabEl(this.activeTab);
+ if (A) {
+ Ext.fly(A).removeClass("x-tab-strip-active")
+ }
+ this.activeTab.fireEvent("deactivate", this.activeTab)
+ }
+ var B = this.getTabEl(C);
+ Ext.fly(B).addClass("x-tab-strip-active");
+ this.activeTab = C;
+ this.stack.add(C);
+ this.layout.setActiveItem(C);
+ if (this.layoutOnTabChange && C.doLayout) {
+ C.doLayout()
+ }
+ if (this.scrolling) {
+ this.scrollToTab(C, this.animScroll)
+ }
+ C.fireEvent("activate", C);
+ this.fireEvent("tabchange", this, C)
+ }
+},getActiveTab:function() {
+ return this.activeTab || null
+},getItem:function(A) {
+ return this.getComponent(A)
+},autoScrollTabs:function() {
+ var G = this.items.length;
+ var D = this.header.dom.offsetWidth;
+ var C = this.header.dom.clientWidth;
+ var F = this.stripWrap;
+ var E = F.dom;
+ var B = E.offsetWidth;
+ var H = this.getScrollPos();
+ var A = this.edge.getOffsetsTo(this.stripWrap)[0] + H;
+ if (!this.enableTabScroll || G < 1 || B < 20) {
+ return
+ }
+ if (A <= C) {
+ E.scrollLeft = 0;
+ F.setWidth(C);
+ if (this.scrolling) {
+ this.scrolling = false;
+ this.header.removeClass("x-tab-scrolling");
+ this.scrollLeft.hide();
+ this.scrollRight.hide();
+ if (Ext.isAir) {
+ E.style.marginLeft = "";
+ E.style.marginRight = ""
+ }
+ }
+ } else {
+ if (!this.scrolling) {
+ this.header.addClass("x-tab-scrolling");
+ if (Ext.isAir) {
+ E.style.marginLeft = "18px";
+ E.style.marginRight = "18px"
+ }
+ }
+ C -= F.getMargins("lr");
+ F.setWidth(C > 20 ? C : 20);
+ if (!this.scrolling) {
+ if (!this.scrollLeft) {
+ this.createScrollers()
+ } else {
+ this.scrollLeft.show();
+ this.scrollRight.show()
+ }
+ }
+ this.scrolling = true;
+ if (H > (A - C)) {
+ E.scrollLeft = A - C
+ } else {
+ this.scrollToTab(this.activeTab, false)
+ }
+ this.updateScrollButtons()
+ }
+},createScrollers:function() {
+ var C = this.stripWrap.dom.offsetHeight;
+ var A = this.header.insertFirst({cls:"x-tab-scroller-left"});
+ A.setHeight(C);
+ A.addClassOnOver("x-tab-scroller-left-over");
+ this.leftRepeater
+ = new Ext.util.ClickRepeater(A, {interval:this.scrollRepeatInterval,handler:this.onScrollLeft,scope:this});
+ this.scrollLeft = A;
+ var B = this.header.insertFirst({cls:"x-tab-scroller-right"});
+ B.setHeight(C);
+ B.addClassOnOver("x-tab-scroller-right-over");
+ this.rightRepeater
+ = new Ext.util.ClickRepeater(B, {interval:this.scrollRepeatInterval,handler:this.onScrollRight,scope:this});
+ this.scrollRight = B
+},getScrollWidth:function() {
+ return this.edge.getOffsetsTo(this.stripWrap)[0] + this.getScrollPos()
+},getScrollPos:function() {
+ return parseInt(this.stripWrap.dom.scrollLeft, 10) || 0
+},getScrollArea:function() {
+ return parseInt(this.stripWrap.dom.clientWidth, 10) || 0
+},getScrollAnim:function() {
+ return{duration:this.scrollDuration,callback:this.updateScrollButtons,scope:this}
+},getScrollIncrement:function() {
+ return this.scrollIncrement || (this.resizeTabs ? this.lastTabWidth + 2
+ : 100)
+},scrollToTab:function(E, A) {
+ if (!E) {
+ return
+ }
+ var C = this.getTabEl(E);
+ var G = this.getScrollPos(),D = this.getScrollArea();
+ var F = Ext.fly(C).getOffsetsTo(this.stripWrap)[0] + G;
+ var B = F + C.offsetWidth;
+ if (F < G) {
+ this.scrollTo(F, A)
+ } else {
+ if (B > (G + D)) {
+ this.scrollTo(B - D, A)
+ }
+ }
+},scrollTo:function(B, A) {
+ this.stripWrap.scrollTo("left", B, A ? this.getScrollAnim() : false);
+ if (!A) {
+ this.updateScrollButtons()
+ }
+},onWheel:function(D) {
+ var E = D.getWheelDelta() * this.wheelIncrement * -1;
+ D.stopEvent();
+ var F = this.getScrollPos();
+ var C = F + E;
+ var A = this.getScrollWidth() - this.getScrollArea();
+ var B = Math.max(0, Math.min(A, C));
+ if (B != F) {
+ this.scrollTo(B, false)
+ }
+},onScrollRight:function() {
+ var A = this.getScrollWidth() - this.getScrollArea();
+ var C = this.getScrollPos();
+ var B = Math.min(A, C + this.getScrollIncrement());
+ if (B != C) {
+ this.scrollTo(B, this.animScroll)
+ }
+},onScrollLeft:function() {
+ var B = this.getScrollPos();
+ var A = Math.max(0, B - this.getScrollIncrement());
+ if (A != B) {
+ this.scrollTo(A, this.animScroll)
+ }
+},updateScrollButtons:function() {
+ var A = this.getScrollPos();
+ this.scrollLeft[A == 0 ? "addClass"
+ : "removeClass"]("x-tab-scroller-left-disabled");
+ this.scrollRight[A >= (this.getScrollWidth() - this.getScrollArea())
+ ? "addClass" : "removeClass"]("x-tab-scroller-right-disabled")
+}});
+Ext.reg("tabpanel", Ext.TabPanel);
+Ext.TabPanel.prototype.activate = Ext.TabPanel.prototype.setActiveTab;
+Ext.TabPanel.AccessStack = function() {
+ var A = [];
+ return{add:function(B) {
+ A.push(B);
+ if (A.length > 10) {
+ A.shift()
+ }
+ },remove:function(E) {
+ var D = [];
+ for (var C = 0,B = A.length; C < B; C++) {
+ if (A[C] != E) {
+ D.push(A[C])
+ }
+ }
+ A = D
+ },next:function() {
+ return A.pop()
+ }}
+};
+Ext.Button
+ = Ext.extend(Ext.Component, {hidden:false,disabled:false,pressed:false,enableToggle:false,menuAlign:"tl-bl?",type:"button",menuClassTarget:"tr",clickEvent:"click",handleMouseEvents:true,tooltipType:"qtip",buttonSelector:"button:first",initComponent:function() {
+ Ext.Button.superclass.initComponent.call(this);
+ this.addEvents("click", "toggle", "mouseover", "mouseout", "menushow", "menuhide", "menutriggerover", "menutriggerout");
+ if (this.menu) {
+ this.menu = Ext.menu.MenuMgr.get(this.menu)
+ }
+ if (typeof this.toggleGroup === "string") {
+ this.enableToggle = true
+ }
+},onRender:function(C, A) {
+ if (!this.template) {
+ if (!Ext.Button.buttonTemplate) {
+ Ext.Button.buttonTemplate
+ = new Ext.Template("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"x-btn-wrap\"><tbody><tr>", "<td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><em unselectable=\"on\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></em></td><td class=\"x-btn-right\"><i>&#160;</i></td>", "</tr></tbody></table>")
+ }
+ this.template = Ext.Button.buttonTemplate
+ }
+ var B,E = [this.text || "&#160;",this.type];
+ if (A) {
+ B = this.template.insertBefore(A, E, true)
+ } else {
+ B = this.template.append(C, E, true)
+ }
+ var D = B.child(this.buttonSelector);
+ D.on("focus", this.onFocus, this);
+ D.on("blur", this.onBlur, this);
+ this.initButtonEl(B, D);
+ if (this.menu) {
+ this.el.child(this.menuClassTarget).addClass("x-btn-with-menu")
+ }
+ Ext.ButtonToggleMgr.register(this)
+},initButtonEl:function(B, C) {
+ this.el = B;
+ B.addClass("x-btn");
+ if (this.icon) {
+ C.setStyle("background-image", "url(" + this.icon + ")")
+ }
+ if (this.iconCls) {
+ C.addClass(this.iconCls);
+ if (!this.cls) {
+ B.addClass(this.text ? "x-btn-text-icon" : "x-btn-icon")
+ }
+ }
+ if (this.tabIndex !== undefined) {
+ C.dom.tabIndex = this.tabIndex
+ }
+ if (this.tooltip) {
+ if (typeof this.tooltip == "object") {
+ Ext.QuickTips.register(Ext.apply({target:C.id}, this.tooltip))
+ } else {
+ C.dom[this.tooltipType] = this.tooltip
+ }
+ }
+ if (this.pressed) {
+ this.el.addClass("x-btn-pressed")
+ }
+ if (this.handleMouseEvents) {
+ B.on("mouseover", this.onMouseOver, this);
+ B.on("mousedown", this.onMouseDown, this)
+ }
+ if (this.menu) {
+ this.menu.on("show", this.onMenuShow, this);
+ this.menu.on("hide", this.onMenuHide, this)
+ }
+ if (this.id) {
+ this.el.dom.id = this.el.id = this.id
+ }
+ if (this.repeat) {
+ var A = new Ext.util.ClickRepeater(B, typeof this.repeat == "object"
+ ? this.repeat : {});
+ A.on("click", this.onClick, this)
+ }
+ B.on(this.clickEvent, this.onClick, this)
+},afterRender:function() {
+ Ext.Button.superclass.afterRender.call(this);
+ if (Ext.isIE6) {
+ this.autoWidth.defer(1, this)
+ } else {
+ this.autoWidth()
+ }
+},setIconClass:function(A) {
+ if (this.el) {
+ this.el.child(this.buttonSelector).replaceClass(this.iconCls, A)
+ }
+ this.iconCls = A
+},beforeDestroy:function() {
+ if (this.rendered) {
+ var A = this.el.child(this.buttonSelector);
+ if (A) {
+ A.removeAllListeners()
+ }
+ }
+ if (this.menu) {
+ Ext.destroy(this.menu)
+ }
+},onDestroy:function() {
+ if (this.rendered) {
+ Ext.ButtonToggleMgr.unregister(this)
+ }
+},autoWidth:function() {
+ if (this.el) {
+ this.el.setWidth("auto");
+ if (Ext.isIE7 && Ext.isStrict) {
+ var A = this.el.child(this.buttonSelector);
+ if (A && A.getWidth() > 20) {
+ A.clip();
+ A.setWidth(Ext.util.TextMetrics.measure(A, this.text).width
+ + A.getFrameWidth("lr"))
+ }
+ }
+ if (this.minWidth) {
+ if (this.el.getWidth() < this.minWidth) {
+ this.el.setWidth(this.minWidth)
+ }
+ }
+ }
+},setHandler:function(B, A) {
+ this.handler = B;
+ this.scope = A
+},setText:function(A) {
+ this.text = A;
+ if (this.el) {
+ this.el.child("td.x-btn-center " + this.buttonSelector).update(A)
+ }
+ this.autoWidth()
+},getText:function() {
+ return this.text
+},toggle:function(A) {
+ A = A === undefined ? !this.pressed : A;
+ if (A != this.pressed) {
+ if (A) {
+ this.el.addClass("x-btn-pressed");
+ this.pressed = true;
+ this.fireEvent("toggle", this, true)
+ } else {
+ this.el.removeClass("x-btn-pressed");
+ this.pressed = false;
+ this.fireEvent("toggle", this, false)
+ }
+ if (this.toggleHandler) {
+ this.toggleHandler.call(this.scope || this, this, A)
+ }
+ }
+},focus:function() {
+ this.el.child(this.buttonSelector).focus()
+},onDisable:function() {
+ if (this.el) {
+ if (!Ext.isIE6 || !this.text) {
+ this.el.addClass(this.disabledClass)
+ }
+ this.el.dom.disabled = true
+ }
+ this.disabled = true
+},onEnable:function() {
+ if (this.el) {
+ if (!Ext.isIE6 || !this.text) {
+ this.el.removeClass(this.disabledClass)
+ }
+ this.el.dom.disabled = false
+ }
+ this.disabled = false
+},showMenu:function() {
+ if (this.menu) {
+ this.menu.show(this.el, this.menuAlign)
+ }
+ return this
+},hideMenu:function() {
+ if (this.menu) {
+ this.menu.hide()
+ }
+ return this
+},hasVisibleMenu:function() {
+ return this.menu && this.menu.isVisible()
+},onClick:function(A) {
+ if (A) {
+ A.preventDefault()
+ }
+ if (A.button != 0) {
+ return
+ }
+ if (!this.disabled) {
+ if (this.enableToggle && (this.allowDepress !== false
+ || !this.pressed)) {
+ this.toggle()
+ }
+ if (this.menu && !this.menu.isVisible() && !this.ignoreNextClick) {
+ this.showMenu()
+ }
+ this.fireEvent("click", this, A);
+ if (this.handler) {
+ this.handler.call(this.scope || this, this, A)
+ }
+ }
+},isMenuTriggerOver:function(B, A) {
+ return this.menu && !A
+},isMenuTriggerOut:function(B, A) {
+ return this.menu && !A
+},onMouseOver:function(B) {
+ if (!this.disabled) {
+ var A = B.within(this.el, true);
+ if (!A) {
+ this.el.addClass("x-btn-over");
+ Ext.getDoc().on("mouseover", this.monitorMouseOver, this);
+ this.fireEvent("mouseover", this, B)
+ }
+ if (this.isMenuTriggerOver(B, A)) {
+ this.fireEvent("menutriggerover", this, this.menu, B)
+ }
+ }
+},monitorMouseOver:function(A) {
+ if (A.target != this.el.dom && !A.within(this.el)) {
+ Ext.getDoc().un("mouseover", this.monitorMouseOver, this);
+ this.onMouseOut(A)
+ }
+},onMouseOut:function(B) {
+ var A = B.within(this.el) && B.target != this.el.dom;
+ this.el.removeClass("x-btn-over");
+ this.fireEvent("mouseout", this, B);
+ if (this.isMenuTriggerOut(B, A)) {
+ this.fireEvent("menutriggerout", this, this.menu, B)
+ }
+},onFocus:function(A) {
+ if (!this.disabled) {
+ this.el.addClass("x-btn-focus")
+ }
+},onBlur:function(A) {
+ this.el.removeClass("x-btn-focus")
+},getClickEl:function(B, A) {
+ return this.el
+},onMouseDown:function(A) {
+ if (!this.disabled && A.button == 0) {
+ this.getClickEl(A).addClass("x-btn-click");
+ Ext.getDoc().on("mouseup", this.onMouseUp, this)
+ }
+},onMouseUp:function(A) {
+ if (A.button == 0) {
+ this.getClickEl(A, true).removeClass("x-btn-click");
+ Ext.getDoc().un("mouseup", this.onMouseUp, this)
+ }
+},onMenuShow:function(A) {
+ this.ignoreNextClick = 0;
+ this.el.addClass("x-btn-menu-active");
+ this.fireEvent("menushow", this, this.menu)
+},onMenuHide:function(A) {
+ this.el.removeClass("x-btn-menu-active");
+ this.ignoreNextClick = this.restoreClick.defer(250, this);
+ this.fireEvent("menuhide", this, this.menu)
+},restoreClick:function() {
+ this.ignoreNextClick = 0
+}});
+Ext.reg("button", Ext.Button);
+Ext.ButtonToggleMgr = function() {
+ var A = {};
+
+ function B(E, G) {
+ if (G) {
+ var F = A[E.toggleGroup];
+ for (var D = 0,C = F.length; D < C; D++) {
+ if (F[D] != E) {
+ F[D].toggle(false)
+ }
+ }
+ }
+ }
+
+ return{register:function(C) {
+ if (!C.toggleGroup) {
+ return
+ }
+ var D = A[C.toggleGroup];
+ if (!D) {
+ D = A[C.toggleGroup] = []
+ }
+ D.push(C);
+ C.on("toggle", B)
+ },unregister:function(C) {
+ if (!C.toggleGroup) {
+ return
+ }
+ var D = A[C.toggleGroup];
+ if (D) {
+ D.remove(C);
+ C.un("toggle", B)
+ }
+ }}
+}();
+Ext.SplitButton
+ = Ext.extend(Ext.Button, {arrowSelector:"button:last",initComponent:function() {
+ Ext.SplitButton.superclass.initComponent.call(this);
+ this.addEvents("arrowclick")
+},onRender:function(D, A) {
+ var B = new Ext.Template("<table cellspacing=\"0\" class=\"x-btn-menu-wrap x-btn\"><tr><td>", "<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-text-wrap\"><tbody>", "<tr><td class=\"x-btn-left\"><i>&#160;</i></td><td class=\"x-btn-center\"><button class=\"x-btn-text\" type=\"{1}\">{0}</button></td></tr>", "</tbody></table></td><td>", "<table cellspacing=\"0\" class=\"x-btn-wrap x-btn-menu-arrow-wrap\"><tbody>", "<tr><td class=\"x-btn-center\"><button class=\"x-btn-menu-arrow-el\" type=\"button\">&#160;</button></td><td class=\"x-btn-right\"><i>&#160;</i></td></tr>", "</tbody></table></td></tr></table>");
+ var C,F = [this.text || "&#160;",this.type];
+ if (A) {
+ C = B.insertBefore(A, F, true)
+ } else {
+ C = B.append(D, F, true)
+ }
+ var E = C.child(this.buttonSelector);
+ this.initButtonEl(C, E);
+ this.arrowBtnTable = C.child("table:last");
+ if (this.arrowTooltip) {
+ C.child(this.arrowSelector).dom[this.tooltipType] = this.arrowTooltip
+ }
+},autoWidth:function() {
+ if (this.el) {
+ var C = this.el.child("table:first");
+ var B = this.el.child("table:last");
+ this.el.setWidth("auto");
+ C.setWidth("auto");
+ if (Ext.isIE7 && Ext.isStrict) {
+ var A = this.el.child(this.buttonSelector);
+ if (A && A.getWidth() > 20) {
+ A.clip();
+ A.setWidth(Ext.util.TextMetrics.measure(A, this.text).width
+ + A.getFrameWidth("lr"))
+ }
+ }
+ if (this.minWidth) {
+ if ((C.getWidth() + B.getWidth()) < this.minWidth) {
+ C.setWidth(this.minWidth - B.getWidth())
+ }
+ }
+ this.el.setWidth(C.getWidth() + B.getWidth())
+ }
+},setArrowHandler:function(B, A) {
+ this.arrowHandler = B;
+ this.scope = A
+},onClick:function(A) {
+ A.preventDefault();
+ if (!this.disabled) {
+ if (A.getTarget(".x-btn-menu-arrow-wrap")) {
+ if (this.menu && !this.menu.isVisible() && !this.ignoreNextClick) {
+ this.showMenu()
+ }
+ this.fireEvent("arrowclick", this, A);
+ if (this.arrowHandler) {
+ this.arrowHandler.call(this.scope || this, this, A)
+ }
+ } else {
+ if (this.enableToggle) {
+ this.toggle()
+ }
+ this.fireEvent("click", this, A);
+ if (this.handler) {
+ this.handler.call(this.scope || this, this, A)
+ }
+ }
+ }
+},getClickEl:function(B, A) {
+ if (!A) {
+ return(this.lastClickEl = B.getTarget("table", 10, true))
+ }
+ return this.lastClickEl
+},onDisable:function() {
+ if (this.el) {
+ if (!Ext.isIE6) {
+ this.el.addClass("x-item-disabled")
+ }
+ this.el.child(this.buttonSelector).dom.disabled = true;
+ this.el.child(this.arrowSelector).dom.disabled = true
+ }
+ this.disabled = true
+},onEnable:function() {
+ if (this.el) {
+ if (!Ext.isIE6) {
+ this.el.removeClass("x-item-disabled")
+ }
+ this.el.child(this.buttonSelector).dom.disabled = false;
+ this.el.child(this.arrowSelector).dom.disabled = false
+ }
+ this.disabled = false
+},isMenuTriggerOver:function(A) {
+ return this.menu && A.within(this.arrowBtnTable)
+ && !A.within(this.arrowBtnTable, true)
+},isMenuTriggerOut:function(B, A) {
+ return this.menu && !B.within(this.arrowBtnTable)
+},onDestroy:function() {
+ Ext.destroy(this.arrowBtnTable);
+ Ext.SplitButton.superclass.onDestroy.call(this)
+}});
+Ext.MenuButton = Ext.SplitButton;
+Ext.reg("splitbutton", Ext.SplitButton);
+Ext.CycleButton = Ext.extend(Ext.SplitButton, {getItemText:function(A) {
+ if (A && this.showText === true) {
+ var B = "";
+ if (this.prependText) {
+ B += this.prependText
+ }
+ B += A.text;
+ return B
+ }
+ return undefined
+},setActiveItem:function(C, A) {
+ if (typeof C != "object") {
+ C = this.menu.items.get(C)
+ }
+ if (C) {
+ if (!this.rendered) {
+ this.text = this.getItemText(C);
+ this.iconCls = C.iconCls
+ } else {
+ var B = this.getItemText(C);
+ if (B) {
+ this.setText(B)
+ }
+ this.setIconClass(C.iconCls)
+ }
+ this.activeItem = C;
+ if (!C.checked) {
+ C.setChecked(true, true)
+ }
+ if (this.forceIcon) {
+ this.setIconClass(this.forceIcon)
+ }
+ if (!A) {
+ this.fireEvent("change", this, C)
+ }
+ }
+},getActiveItem:function() {
+ return this.activeItem
+},initComponent:function() {
+ this.addEvents("change");
+ if (this.changeHandler) {
+ this.on("change", this.changeHandler, this.scope || this);
+ delete this.changeHandler
+ }
+ this.itemCount = this.items.length;
+ this.menu = {cls:"x-cycle-menu",items:[]};
+ var D;
+ for (var B = 0,A = this.itemCount; B < A; B++) {
+ var C = this.items[B];
+ C.group = C.group || this.id;
+ C.itemIndex = B;
+ C.checkHandler = this.checkHandler;
+ C.scope = this;
+ C.checked = C.checked || false;
+ this.menu.items.push(C);
+ if (C.checked) {
+ D = C
+ }
+ }
+ this.setActiveItem(D, true);
+ Ext.CycleButton.superclass.initComponent.call(this);
+ this.on("click", this.toggleSelected, this)
+},checkHandler:function(A, B) {
+ if (B) {
+ this.setActiveItem(A)
+ }
+},toggleSelected:function() {
+ this.menu.render();
+ var C,A;
+ for (var B = 1; B < this.itemCount; B++) {
+ C = (this.activeItem.itemIndex + B) % this.itemCount;
+ A = this.menu.items.itemAt(C);
+ if (!A.disabled) {
+ A.setChecked(true);
+ break
+ }
+ }
+}});
+Ext.reg("cycle", Ext.CycleButton);
+Ext.Toolbar = function(A) {
+ if (Ext.isArray(A)) {
+ A = {buttons:A}
+ }
+ Ext.Toolbar.superclass.constructor.call(this, A)
+};
+(function() {
+ var A = Ext.Toolbar;
+ Ext.extend(A, Ext.BoxComponent, {trackMenus:true,initComponent:function() {
+ A.superclass.initComponent.call(this);
+ if (this.items) {
+ this.buttons = this.items
+ }
+ this.items = new Ext.util.MixedCollection(false, function(B) {
+ return B.itemId || B.id || Ext.id()
+ })
+ },autoCreate:{cls:"x-toolbar x-small-editor",html:"<table cellspacing=\"0\"><tr></tr></table>"},onRender:function(
+ C, B) {
+ this.el = C.createChild(Ext.apply({id:this.id}, this.autoCreate), B);
+ this.tr = this.el.child("tr", true)
+ },afterRender:function() {
+ A.superclass.afterRender.call(this);
+ if (this.buttons) {
+ this.add.apply(this, this.buttons);
+ delete this.buttons
+ }
+ },add:function() {
+ var C = arguments,B = C.length;
+ for (var D = 0; D < B; D++) {
+ var E = C[D];
+ if (E.isFormField) {
+ this.addField(E)
+ } else {
+ if (E.render) {
+ this.addItem(E)
+ } else {
+ if (typeof E == "string") {
+ if (E == "separator" || E == "-") {
+ this.addSeparator()
+ } else {
+ if (E == " ") {
+ this.addSpacer()
+ } else {
+ if (E == "->") {
+ this.addFill()
+ } else {
+ this.addText(E)
+ }
+ }
+ }
+ } else {
+ if (E.tagName) {
+ this.addElement(E)
+ } else {
+ if (typeof E == "object") {
+ if (E.xtype) {
+ this.addField(Ext.ComponentMgr.create(E, "button"))
+ } else {
+ this.addButton(E)
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },addSeparator:function() {
+ return this.addItem(new A.Separator())
+ },addSpacer:function() {
+ return this.addItem(new A.Spacer())
+ },addFill:function() {
+ return this.addItem(new A.Fill())
+ },addElement:function(B) {
+ return this.addItem(new A.Item(B))
+ },addItem:function(B) {
+ var C = this.nextBlock();
+ this.initMenuTracking(B);
+ B.render(C);
+ this.items.add(B);
+ return B
+ },addButton:function(D) {
+ if (Ext.isArray(D)) {
+ var F = [];
+ for (var E = 0,C = D.length; E < C; E++) {
+ F.push(this.addButton(D[E]))
+ }
+ return F
+ }
+ var B = D;
+ if (!(D instanceof A.Button)) {
+ B = D.split ? new A.SplitButton(D) : new A.Button(D)
+ }
+ var G = this.nextBlock();
+ this.initMenuTracking(B);
+ B.render(G);
+ this.items.add(B);
+ return B
+ },initMenuTracking:function(B) {
+ if (this.trackMenus && B.menu) {
+ B.on({"menutriggerover":this.onButtonTriggerOver,"menushow":this.onButtonMenuShow,"menuhide":this.onButtonMenuHide,scope:this})
+ }
+ },addText:function(B) {
+ return this.addItem(new A.TextItem(B))
+ },insertButton:function(C, F) {
+ if (Ext.isArray(F)) {
+ var E = [];
+ for (var D = 0,B = F.length; D < B; D++) {
+ E.push(this.insertButton(C + D, F[D]))
+ }
+ return E
+ }
+ if (!(F instanceof A.Button)) {
+ F = new A.Button(F)
+ }
+ var G = document.createElement("td");
+ this.tr.insertBefore(G, this.tr.childNodes[C]);
+ this.initMenuTracking(F);
+ F.render(G);
+ this.items.insert(C, F);
+ return F
+ },addDom:function(C, B) {
+ var E = this.nextBlock();
+ Ext.DomHelper.overwrite(E, C);
+ var D = new A.Item(E.firstChild);
+ D.render(E);
+ this.items.add(D);
+ return D
+ },addField:function(C) {
+ var D = this.nextBlock();
+ C.render(D);
+ var B = new A.Item(D.firstChild);
+ B.render(D);
+ this.items.add(B);
+ return B
+ },nextBlock:function() {
+ var B = document.createElement("td");
+ this.tr.appendChild(B);
+ return B
+ },onDestroy:function() {
+ Ext.Toolbar.superclass.onDestroy.call(this);
+ if (this.rendered) {
+ if (this.items) {
+ Ext.destroy.apply(Ext, this.items.items)
+ }
+ Ext.Element.uncache(this.tr)
+ }
+ },onDisable:function() {
+ this.items.each(function(B) {
+ if (B.disable) {
+ B.disable()
+ }
+ })
+ },onEnable:function() {
+ this.items.each(function(B) {
+ if (B.enable) {
+ B.enable()
+ }
+ })
+ },onButtonTriggerOver:function(B) {
+ if (this.activeMenuBtn && this.activeMenuBtn != B) {
+ this.activeMenuBtn.hideMenu();
+ B.showMenu();
+ this.activeMenuBtn = B
+ }
+ },onButtonMenuShow:function(B) {
+ this.activeMenuBtn = B
+ },onButtonMenuHide:function(B) {
+ delete this.activeMenuBtn
+ }});
+ Ext.reg("toolbar", Ext.Toolbar);
+ A.Item = function(B) {
+ this.el = Ext.getDom(B);
+ this.id = Ext.id(this.el);
+ this.hidden = false
+ };
+ A.Item.prototype = {getEl:function() {
+ return this.el
+ },render:function(B) {
+ this.td = B;
+ B.appendChild(this.el)
+ },destroy:function() {
+ if (this.td && this.td.parentNode) {
+ this.td.parentNode.removeChild(this.td)
+ }
+ },show:function() {
+ this.hidden = false;
+ this.td.style.display = ""
+ },hide:function() {
+ this.hidden = true;
+ this.td.style.display = "none"
+ },setVisible:function(B) {
+ if (B) {
+ this.show()
+ } else {
+ this.hide()
+ }
+ },focus:function() {
+ Ext.fly(this.el).focus()
+ },disable:function() {
+ Ext.fly(this.td).addClass("x-item-disabled");
+ this.disabled = true;
+ this.el.disabled = true
+ },enable:function() {
+ Ext.fly(this.td).removeClass("x-item-disabled");
+ this.disabled = false;
+ this.el.disabled = false
+ }};
+ Ext.reg("tbitem", A.Item);
+ A.Separator = function() {
+ var B = document.createElement("span");
+ B.className = "ytb-sep";
+ A.Separator.superclass.constructor.call(this, B)
+ };
+ Ext.extend(A.Separator, A.Item, {enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});
+ Ext.reg("tbseparator", A.Separator);
+ A.Spacer = function() {
+ var B = document.createElement("div");
+ B.className = "ytb-spacer";
+ A.Spacer.superclass.constructor.call(this, B)
+ };
+ Ext.extend(A.Spacer, A.Item, {enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});
+ Ext.reg("tbspacer", A.Spacer);
+ A.Fill = Ext.extend(A.Spacer, {render:function(B) {
+ B.style.width = "100%";
+ A.Fill.superclass.render.call(this, B)
+ }});
+ Ext.reg("tbfill", A.Fill);
+ A.TextItem = function(B) {
+ var C = document.createElement("span");
+ C.className = "ytb-text";
+ C.innerHTML = B.text ? B.text : B;
+ A.TextItem.superclass.constructor.call(this, C)
+ };
+ Ext.extend(A.TextItem, A.Item, {enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});
+ Ext.reg("tbtext", A.TextItem);
+ A.Button = Ext.extend(Ext.Button, {hideParent:true,onDestroy:function() {
+ A.Button.superclass.onDestroy.call(this);
+ if (this.container) {
+ this.container.remove()
+ }
+ }});
+ Ext.reg("tbbutton", A.Button);
+ A.SplitButton
+ = Ext.extend(Ext.SplitButton, {hideParent:true,onDestroy:function() {
+ A.SplitButton.superclass.onDestroy.call(this);
+ if (this.container) {
+ this.container.remove()
+ }
+ }});
+ Ext.reg("tbsplit", A.SplitButton);
+ A.MenuButton = A.SplitButton
+})();
+Ext.PagingToolbar
+ = Ext.extend(Ext.Toolbar, {pageSize:20,displayMsg:"Displaying {0} - {1} of {2}",emptyMsg:"No data to display",beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",paramNames:{start:"start",limit:"limit"},initComponent:function() {
+ Ext.PagingToolbar.superclass.initComponent.call(this);
+ this.cursor = 0;
+ this.bind(this.store)
+},onRender:function(B, A) {
+ Ext.PagingToolbar.superclass.onRender.call(this, B, A);
+ this.first
+ = this.addButton({tooltip:this.firstText,iconCls:"x-tbar-page-first",disabled:true,handler:this.onClick.createDelegate(this, ["first"])});
+ this.prev
+ = this.addButton({tooltip:this.prevText,iconCls:"x-tbar-page-prev",disabled:true,handler:this.onClick.createDelegate(this, ["prev"])});
+ this.addSeparator();
+ this.add(this.beforePageText);
+ this.field
+ = Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-tbar-page-number"}).el);
+ this.field.on("keydown", this.onPagingKeydown, this);
+ this.field.on("focus", function() {
+ this.dom.select()
+ });
+ this.afterTextEl = this.addText(String.format(this.afterPageText, 1));
+ this.field.setHeight(18);
+ this.addSeparator();
+ this.next
+ = this.addButton({tooltip:this.nextText,iconCls:"x-tbar-page-next",disabled:true,handler:this.onClick.createDelegate(this, ["next"])});
+ this.last
+ = this.addButton({tooltip:this.lastText,iconCls:"x-tbar-page-last",disabled:true,handler:this.onClick.createDelegate(this, ["last"])});
+ this.addSeparator();
+ this.loading
+ = this.addButton({tooltip:this.refreshText,iconCls:"x-tbar-loading",handler:this.onClick.createDelegate(this, ["refresh"])});
+ if (this.displayInfo) {
+ this.displayEl = Ext.fly(this.el.dom).createChild({cls:"x-paging-info"})
+ }
+ if (this.dsLoaded) {
+ this.onLoad.apply(this, this.dsLoaded)
+ }
+},updateInfo:function() {
+ if (this.displayEl) {
+ var A = this.store.getCount();
+ var B = A == 0 ? this.emptyMsg
+ : String.format(this.displayMsg, this.cursor + 1, this.cursor
+ + A, this.store.getTotalCount());
+ this.displayEl.update(B)
+ }
+},onLoad:function(A, C, F) {
+ if (!this.rendered) {
+ this.dsLoaded = [A,C,F];
+ return
+ }
+ this.cursor = F.params ? F.params[this.paramNames.start] : 0;
+ var E = this.getPageData(),B = E.activePage,D = E.pages;
+ this.afterTextEl.el.innerHTML = String.format(this.afterPageText, E.pages);
+ this.field.dom.value = B;
+ this.first.setDisabled(B == 1);
+ this.prev.setDisabled(B == 1);
+ this.next.setDisabled(B == D);
+ this.last.setDisabled(B == D);
+ this.loading.enable();
+ this.updateInfo()
+},getPageData:function() {
+ var A = this.store.getTotalCount();
+ return{total:A,activePage:Math.ceil((this.cursor + this.pageSize)
+ / this.pageSize),pages:A < this.pageSize ? 1 : Math.ceil(A
+ / this.pageSize)}
+},onLoadError:function() {
+ if (!this.rendered) {
+ return
+ }
+ this.loading.enable()
+},readPage:function(C) {
+ var A = this.field.dom.value,B;
+ if (!A || isNaN(B = parseInt(A, 10))) {
+ this.field.dom.value = C.activePage;
+ return false
+ }
+ return B
+},onPagingKeydown:function(D) {
+ var B = D.getKey(),E = this.getPageData(),C;
+ if (B == D.RETURN) {
+ D.stopEvent();
+ if (C = this.readPage(E)) {
+ C = Math.min(Math.max(1, C), E.pages) - 1;
+ this.doLoad(C * this.pageSize)
+ }
+ } else {
+ if (B == D.HOME || B == D.END) {
+ D.stopEvent();
+ C = B == D.HOME ? 1 : E.pages;
+ this.field.dom.value = C
+ } else {
+ if (B == D.UP || B == D.PAGEUP || B == D.DOWN || B == D.PAGEDOWN) {
+ D.stopEvent();
+ if (C = this.readPage(E)) {
+ var A = D.shiftKey ? 10 : 1;
+ if (B == D.DOWN || B == D.PAGEDOWN) {
+ A *= -1
+ }
+ C += A;
+ if (C >= 1 & C <= E.pages) {
+ this.field.dom.value = C
+ }
+ }
+ }
+ }
+ }
+},beforeLoad:function() {
+ if (this.rendered && this.loading) {
+ this.loading.disable()
+ }
+},doLoad:function(C) {
+ var B = {},A = this.paramNames;
+ B[A.start] = C;
+ B[A.limit] = this.pageSize;
+ this.store.load({params:B})
+},onClick:function(E) {
+ var B = this.store;
+ switch (E) {case"first":this.doLoad(0);break;case"prev":this.doLoad(Math.max(0, this.cursor
+ - this.pageSize));break;case"next":this.doLoad(this.cursor
+ + this.pageSize);break;case"last":var D = B.getTotalCount();var A = D
+ % this.pageSize;var C = A ? (D - A) : D
+ - this.pageSize;this.doLoad(C);break;case"refresh":this.doLoad(this.cursor);break}
+},unbind:function(A) {
+ A = Ext.StoreMgr.lookup(A);
+ A.un("beforeload", this.beforeLoad, this);
+ A.un("load", this.onLoad, this);
+ A.un("loadexception", this.onLoadError, this);
+ this.store = undefined
+},bind:function(A) {
+ A = Ext.StoreMgr.lookup(A);
+ A.on("beforeload", this.beforeLoad, this);
+ A.on("load", this.onLoad, this);
+ A.on("loadexception", this.onLoadError, this);
+ this.store = A
+}});
+Ext.reg("paging", Ext.PagingToolbar);
+Ext.Resizable = function(D, E) {
+ this.el = Ext.get(D);
+ if (E && E.wrap) {
+ E.resizeChild = this.el;
+ this.el = this.el.wrap(typeof E.wrap == "object" ? E.wrap
+ : {cls:"xresizable-wrap"});
+ this.el.id = this.el.dom.id = E.resizeChild.id + "-rzwrap";
+ this.el.setStyle("overflow", "hidden");
+ this.el.setPositioning(E.resizeChild.getPositioning());
+ E.resizeChild.clearPositioning();
+ if (!E.width || !E.height) {
+ var F = E.resizeChild.getSize();
+ this.el.setSize(F.width, F.height)
+ }
+ if (E.pinned && !E.adjustments) {
+ E.adjustments = "auto"
+ }
+ }
+ this.proxy
+ = this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id
+ + "-rzproxy"});
+ this.proxy.unselectable();
+ this.proxy.enableDisplayMode("block");
+ Ext.apply(this, E);
+ if (this.pinned) {
+ this.disableTrackOver = true;
+ this.el.addClass("x-resizable-pinned")
+ }
+ var I = this.el.getStyle("position");
+ if (I != "absolute" && I != "fixed") {
+ this.el.setStyle("position", "relative")
+ }
+ if (!this.handles) {
+ this.handles = "s,e,se";
+ if (this.multiDirectional) {
+ this.handles += ",n,w"
+ }
+ }
+ if (this.handles == "all") {
+ this.handles = "n s e w ne nw se sw"
+ }
+ var M = this.handles.split(/\s*?[,;]\s*?| /);
+ var C = Ext.Resizable.positions;
+ for (var H = 0,J = M.length; H < J; H++) {
+ if (M[H] && C[M[H]]) {
+ var L = C[M[H]];
+ this[L] = new Ext.Resizable.Handle(this, L, this.disableTrackOver, this.transparent)
+ }
+ }
+ this.corner = this.southeast;
+ if (this.handles.indexOf("n") != -1 || this.handles.indexOf("w") != -1) {
+ this.updateBox = true
+ }
+ this.activeHandle = null;
+ if (this.resizeChild) {
+ if (typeof this.resizeChild == "boolean") {
+ this.resizeChild = Ext.get(this.el.dom.firstChild, true)
+ } else {
+ this.resizeChild = Ext.get(this.resizeChild, true)
+ }
+ }
+ if (this.adjustments == "auto") {
+ var B = this.resizeChild;
+ var K = this.west,G = this.east,A = this.north,M = this.south;
+ if (B && (K || A)) {
+ B.position("relative");
+ B.setLeft(K ? K.el.getWidth() : 0);
+ B.setTop(A ? A.el.getHeight() : 0)
+ }
+ this.adjustments = [(G ? -G.el.getWidth() : 0) + (K ? -K.el.getWidth()
+ : 0),(A ? -A.el.getHeight() : 0) + (M ? -M.el.getHeight() : 0)
+ - 1]
+ }
+ if (this.draggable) {
+ this.dd = this.dynamic ? this.el.initDD(null)
+ : this.el.initDDProxy(null, {dragElId:this.proxy.id});
+ this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id
+ : this.el.id)
+ }
+ this.addEvents("beforeresize", "resize");
+ if (this.width !== null && this.height !== null) {
+ this.resizeTo(this.width, this.height)
+ } else {
+ this.updateChildSize()
+ }
+ if (Ext.isIE) {
+ this.el.dom.style.zoom = 1
+ }
+ Ext.Resizable.superclass.constructor.call(this)
+};
+Ext.extend(Ext.Resizable, Ext.util.Observable, {resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:0.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:"easeOutStrong",widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,resizeTo:function(
+ B, A) {
+ this.el.setSize(B, A);
+ this.updateChildSize();
+ this.fireEvent("resize", this, B, A, null)
+},startSizing:function(C, B) {
+ this.fireEvent("beforeresize", this, C);
+ if (this.enabled) {
+ if (!this.overlay) {
+ this.overlay
+ = this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:"&#160;"}, Ext.getBody());
+ this.overlay.unselectable();
+ this.overlay.enableDisplayMode("block");
+ this.overlay.on("mousemove", this.onMouseMove, this);
+ this.overlay.on("mouseup", this.onMouseUp, this)
+ }
+ this.overlay.setStyle("cursor", B.el.getStyle("cursor"));
+ this.resizing = true;
+ this.startBox = this.el.getBox();
+ this.startPoint = C.getXY();
+ this.offsets = [(this.startBox.x + this.startBox.width)
+ - this.startPoint[0],(this.startBox.y + this.startBox.height)
+ - this.startPoint[1]];
+ this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true));
+ this.overlay.show();
+ if (this.constrainTo) {
+ var A = Ext.get(this.constrainTo);
+ this.resizeRegion
+ = A.getRegion().adjust(A.getFrameWidth("t"), A.getFrameWidth("l"), -A.getFrameWidth("b"), -A.getFrameWidth("r"))
+ }
+ this.proxy.setStyle("visibility", "hidden");
+ this.proxy.show();
+ this.proxy.setBox(this.startBox);
+ if (!this.dynamic) {
+ this.proxy.setStyle("visibility", "visible")
+ }
+ }
+},onMouseDown:function(A, B) {
+ if (this.enabled) {
+ B.stopEvent();
+ this.activeHandle = A;
+ this.startSizing(B, A)
+ }
+},onMouseUp:function(B) {
+ var A = this.resizeElement();
+ this.resizing = false;
+ this.handleOut();
+ this.overlay.hide();
+ this.proxy.hide();
+ this.fireEvent("resize", this, A.width, A.height, B)
+},updateChildSize:function() {
+ if (this.resizeChild) {
+ var C = this.el;
+ var D = this.resizeChild;
+ var B = this.adjustments;
+ if (C.dom.offsetWidth) {
+ var A = C.getSize(true);
+ D.setSize(A.width + B[0], A.height + B[1])
+ }
+ if (Ext.isIE) {
+ setTimeout(function() {
+ if (C.dom.offsetWidth) {
+ var E = C.getSize(true);
+ D.setSize(E.width + B[0], E.height + B[1])
+ }
+ }, 10)
+ }
+ }
+},snap:function(C, E, B) {
+ if (!E || !C) {
+ return C
+ }
+ var D = C;
+ var A = C % E;
+ if (A > 0) {
+ if (A > (E / 2)) {
+ D = C + (E - A)
+ } else {
+ D = C - A
+ }
+ }
+ return Math.max(B, D)
+},resizeElement:function() {
+ var A = this.proxy.getBox();
+ if (this.updateBox) {
+ this.el.setBox(A, false, this.animate, this.duration, null, this.easing)
+ } else {
+ this.el.setSize(A.width, A.height, this.animate, this.duration, null, this.easing)
+ }
+ this.updateChildSize();
+ if (!this.dynamic) {
+ this.proxy.hide()
+ }
+ return A
+},constrain:function(B, C, A, D) {
+ if (B - C < A) {
+ C = B - A
+ } else {
+ if (B - C > D) {
+ C = D - B
+ }
+ }
+ return C
+},onMouseMove:function(S) {
+ if (this.enabled) {
+ try {
+ if (this.resizeRegion
+ && !this.resizeRegion.contains(S.getPoint())) {
+ return
+ }
+ var Q = this.curSize || this.startBox;
+ var I = this.startBox.x,H = this.startBox.y;
+ var C = I,B = H;
+ var J = Q.width,R = Q.height;
+ var D = J,L = R;
+ var K = this.minWidth,T = this.minHeight;
+ var P = this.maxWidth,W = this.maxHeight;
+ var F = this.widthIncrement;
+ var A = this.heightIncrement;
+ var U = S.getXY();
+ var O = -(this.startPoint[0] - Math.max(this.minX, U[0]));
+ var M = -(this.startPoint[1] - Math.max(this.minY, U[1]));
+ var G = this.activeHandle.position;
+ switch (G) {case"east":J += O;J
+ = Math.min(Math.max(K, J), P);break;case"south":R += M;R
+ = Math.min(Math.max(T, R), W);break;case"southeast":J += O;R
+ += M;J = Math.min(Math.max(K, J), P);R
+ = Math.min(Math.max(T, R), W);break;case"north":M
+ = this.constrain(R, M, T, W);H += M;R
+ -= M;break;case"west":O = this.constrain(J, O, K, P);I
+ += O;J -= O;break;case"northeast":J += O;J
+ = Math.min(Math.max(K, J), P);M
+ = this.constrain(R, M, T, W);H += M;R
+ -= M;break;case"northwest":O = this.constrain(J, O, K, P);M
+ = this.constrain(R, M, T, W);H += M;R -= M;I += O;J
+ -= O;break;case"southwest":O = this.constrain(J, O, K, P);R
+ += M;R = Math.min(Math.max(T, R), W);I += O;J -= O;break}
+ var N = this.snap(J, F, K);
+ var V = this.snap(R, A, T);
+ if (N != J || V != R) {
+ switch (G) {case"northeast":H -= V - R;break;case"north":H -= V
+ - R;break;case"southwest":I -= N - J;break;case"west":I
+ -= N - J;break;case"northwest":I -= N - J;H -= V
+ - R;break}
+ J = N;
+ R = V
+ }
+ if (this.preserveRatio) {
+ switch (G) {case"southeast":case"east":R = L * (J / D);R
+ = Math.min(Math.max(T, R), W);J = D * (R
+ / L);break;case"south":J = D * (R / L);J
+ = Math.min(Math.max(K, J), P);R = L * (J
+ / D);break;case"northeast":J = D * (R / L);J
+ = Math.min(Math.max(K, J), P);R = L * (J
+ / D);break;case"north":var X = J;J = D * (R / L);J
+ = Math.min(Math.max(K, J), P);R = L * (J / D);I += (X
+ - J) / 2;break;case"southwest":R = L * (J / D);R
+ = Math.min(Math.max(T, R), W);var X = J;J = D * (R
+ / L);I += X - J;break;case"west":var E = R;R = L * (J
+ / D);R = Math.min(Math.max(T, R), W);H += (E - R)
+ / 2;var X = J;J = D * (R / L);I += X
+ - J;break;case"northwest":var X = J;var E = R;R = L * (J
+ / D);R = Math.min(Math.max(T, R), W);J = D * (R / L);H
+ += E - R;I += X - J;break}
+ }
+ this.proxy.setBounds(I, H, J, R);
+ if (this.dynamic) {
+ this.resizeElement()
+ }
+ } catch(S) {
+ }
+ }
+},handleOver:function() {
+ if (this.enabled) {
+ this.el.addClass("x-resizable-over")
+ }
+},handleOut:function() {
+ if (!this.resizing) {
+ this.el.removeClass("x-resizable-over")
+ }
+},getEl:function() {
+ return this.el
+},getResizeChild:function() {
+ return this.resizeChild
+},destroy:function(C) {
+ this.proxy.remove();
+ if (this.overlay) {
+ this.overlay.removeAllListeners();
+ this.overlay.remove()
+ }
+ var D = Ext.Resizable.positions;
+ for (var A in D) {
+ if (typeof D[A] != "function" && this[D[A]]) {
+ var B = this[D[A]];
+ B.el.removeAllListeners();
+ B.el.remove()
+ }
+ }
+ if (C) {
+ this.el.update("");
+ this.el.remove()
+ }
+},syncHandleHeight:function() {
+ var A = this.el.getHeight(true);
+ if (this.west) {
+ this.west.el.setHeight(A)
+ }
+ if (this.east) {
+ this.east.el.setHeight(A)
+ }
+}});
+Ext.Resizable.positions
+ = {n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};
+Ext.Resizable.Handle = function(C, E, B, D) {
+ if (!this.tpl) {
+ var A = Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});
+ A.compile();
+ Ext.Resizable.Handle.prototype.tpl = A
+ }
+ this.position = E;
+ this.rz = C;
+ this.el = this.tpl.append(C.el.dom, [this.position], true);
+ this.el.unselectable();
+ if (D) {
+ this.el.setOpacity(0)
+ }
+ this.el.on("mousedown", this.onMouseDown, this);
+ if (!B) {
+ this.el.on("mouseover", this.onMouseOver, this);
+ this.el.on("mouseout", this.onMouseOut, this)
+ }
+};
+Ext.Resizable.Handle.prototype = {afterResize:function(A) {
+},onMouseDown:function(A) {
+ this.rz.onMouseDown(this, A)
+},onMouseOver:function(A) {
+ this.rz.handleOver(this, A)
+},onMouseOut:function(A) {
+ this.rz.handleOut(this, A)
+}};
+Ext.Editor = function(B, A) {
+ this.field = B;
+ Ext.Editor.superclass.constructor.call(this, A)
+};
+Ext.extend(Ext.Editor, Ext.Component, {value:"",alignment:"c-c?",shadow:"frame",constrain:false,swallowKeys:true,completeOnEnter:false,cancelOnEsc:false,updateEl:false,initComponent:function() {
+ Ext.Editor.superclass.initComponent.call(this);
+ this.addEvents("beforestartedit", "startedit", "beforecomplete", "complete", "specialkey")
+},onRender:function(B, A) {
+ this.el = new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:B,shim:this.shim,shadowOffset:4,id:this.id,constrain:this.constrain});
+ this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden");
+ if (this.field.msgTarget != "title") {
+ this.field.msgTarget = "qtip"
+ }
+ this.field.inEditor = true;
+ this.field.render(this.el);
+ if (Ext.isGecko) {
+ this.field.el.dom.setAttribute("autocomplete", "off")
+ }
+ this.field.on("specialkey", this.onSpecialKey, this);
+ if (this.swallowKeys) {
+ this.field.el.swallowEvent(["keydown","keypress"])
+ }
+ this.field.show();
+ this.field.on("blur", this.onBlur, this);
+ if (this.field.grow) {
+ this.field.on("autosize", this.el.sync, this.el, {delay:1})
+ }
+},onSpecialKey:function(B, A) {
+ if (this.completeOnEnter && A.getKey() == A.ENTER) {
+ A.stopEvent();
+ this.completeEdit()
+ } else {
+ if (this.cancelOnEsc && A.getKey() == A.ESC) {
+ this.cancelEdit()
+ } else {
+ this.fireEvent("specialkey", B, A)
+ }
+ }
+},startEdit:function(B, C) {
+ if (this.editing) {
+ this.completeEdit()
+ }
+ this.boundEl = Ext.get(B);
+ var A = C !== undefined ? C : this.boundEl.dom.innerHTML;
+ if (!this.rendered) {
+ this.render(this.parentEl || document.body)
+ }
+ if (this.fireEvent("beforestartedit", this, this.boundEl, A) === false) {
+ return
+ }
+ this.startValue = A;
+ this.field.setValue(A);
+ this.doAutoSize();
+ this.el.alignTo(this.boundEl, this.alignment);
+ this.editing = true;
+ this.show()
+},doAutoSize:function() {
+ if (this.autoSize) {
+ var A = this.boundEl.getSize();
+ switch (this.autoSize) {case"width":this.setSize(A.width, "");break;case"height":this.setSize("", A.height);break;default:this.setSize(A.width, A.height)}
+ }
+},setSize:function(A, B) {
+ delete this.field.lastSize;
+ this.field.setSize(A, B);
+ if (this.el) {
+ this.el.sync()
+ }
+},realign:function() {
+ this.el.alignTo(this.boundEl, this.alignment)
+},completeEdit:function(A) {
+ if (!this.editing) {
+ return
+ }
+ var B = this.getValue();
+ if (this.revertInvalid !== false && !this.field.isValid()) {
+ B = this.startValue;
+ this.cancelEdit(true)
+ }
+ if (String(B) === String(this.startValue) && this.ignoreNoChange) {
+ this.editing = false;
+ this.hide();
+ return
+ }
+ if (this.fireEvent("beforecomplete", this, B, this.startValue) !== false) {
+ this.editing = false;
+ if (this.updateEl && this.boundEl) {
+ this.boundEl.update(B)
+ }
+ if (A !== true) {
+ this.hide()
+ }
+ this.fireEvent("complete", this, B, this.startValue)
+ }
+},onShow:function() {
+ this.el.show();
+ if (this.hideEl !== false) {
+ this.boundEl.hide()
+ }
+ this.field.show();
+ if (Ext.isIE && !this.fixIEFocus) {
+ this.fixIEFocus = true;
+ this.deferredFocus.defer(50, this)
+ } else {
+ this.field.focus()
+ }
+ this.fireEvent("startedit", this.boundEl, this.startValue)
+},deferredFocus:function() {
+ if (this.editing) {
+ this.field.focus()
+ }
+},cancelEdit:function(A) {
+ if (this.editing) {
+ this.setValue(this.startValue);
+ if (A !== true) {
+ this.hide()
+ }
+ }
+},onBlur:function() {
+ if (this.allowBlur !== true && this.editing) {
+ this.completeEdit()
+ }
+},onHide:function() {
+ if (this.editing) {
+ this.completeEdit();
+ return
+ }
+ this.field.blur();
+ if (this.field.collapse) {
+ this.field.collapse()
+ }
+ this.el.hide();
+ if (this.hideEl !== false) {
+ this.boundEl.show()
+ }
+},setValue:function(A) {
+ this.field.setValue(A)
+},getValue:function() {
+ return this.field.getValue()
+},beforeDestroy:function() {
+ this.field.destroy();
+ this.field = null
+}});
+Ext.reg("editor", Ext.Editor);
+Ext.MessageBox = function() {
+ var R,B,N,Q;
+ var G,J,P,A,K,M,H,F;
+ var O,S,L,C = "";
+ var D = function(U) {
+ R.hide();
+ Ext.callback(B.fn, B.scope || window, [U,S.dom.value], 1)
+ };
+ var T = function() {
+ if (B && B.cls) {
+ R.el.removeClass(B.cls)
+ }
+ K.reset()
+ };
+ var E = function(W, U, V) {
+ if (B && B.closable !== false) {
+ R.hide()
+ }
+ if (V) {
+ V.stopEvent()
+ }
+ };
+ var I = function(U) {
+ var W = 0;
+ if (!U) {
+ O["ok"].hide();
+ O["cancel"].hide();
+ O["yes"].hide();
+ O["no"].hide();
+ return W
+ }
+ R.footer.dom.style.display = "";
+ for (var V in O) {
+ if (typeof O[V] != "function") {
+ if (U[V]) {
+ O[V].show();
+ O[V].setText(typeof U[V] == "string" ? U[V]
+ : Ext.MessageBox.buttonText[V]);
+ W += O[V].el.getWidth() + 15
+ } else {
+ O[V].hide()
+ }
+ }
+ }
+ return W
+ };
+ return{getDialog:function(U) {
+ if (!R) {
+ R = new Ext.Window({autoCreate:true,title:U,resizable:false,constrain:true,constrainHeader:true,minimizable:false,maximizable:false,stateful:false,modal:true,shim:true,buttonAlign:"center",width:400,height:100,minHeight:80,plain:true,footer:true,closable:true,close:function() {
+ if (B && B.buttons && B.buttons.no && !B.buttons.cancel) {
+ D("no")
+ } else {
+ D("cancel")
+ }
+ }});
+ O = {};
+ var V = this.buttonText;
+ O["ok"] = R.addButton(V["ok"], D.createCallback("ok"));
+ O["yes"] = R.addButton(V["yes"], D.createCallback("yes"));
+ O["no"] = R.addButton(V["no"], D.createCallback("no"));
+ O["cancel"] = R.addButton(V["cancel"], D.createCallback("cancel"));
+ O["ok"].hideMode = O["yes"].hideMode = O["no"].hideMode
+ = O["cancel"].hideMode = "offsets";
+ R.render(document.body);
+ R.getEl().addClass("x-window-dlg");
+ N = R.mask;
+ G = R.body.createChild({html:"<div class=\"ext-mb-icon\"></div><div class=\"ext-mb-content\"><span class=\"ext-mb-text\"></span><br /><input type=\"text\" class=\"ext-mb-input\" /><textarea class=\"ext-mb-textarea\"></textarea></div>"});
+ H = Ext.get(G.dom.firstChild);
+ var W = G.dom.childNodes[1];
+ J = Ext.get(W.firstChild);
+ P = Ext.get(W.childNodes[2]);
+ P.enableDisplayMode();
+ P.addKeyListener([10,13], function() {
+ if (R.isVisible() && B && B.buttons) {
+ if (B.buttons.ok) {
+ D("ok")
+ } else {
+ if (B.buttons.yes) {
+ D("yes")
+ }
+ }
+ }
+ });
+ A = Ext.get(W.childNodes[3]);
+ A.enableDisplayMode();
+ K = new Ext.ProgressBar({renderTo:G});
+ G.createChild({cls:"x-clear"})
+ }
+ return R
+ },updateText:function(X) {
+ if (!R.isVisible() && !B.width) {
+ R.setSize(this.maxWidth, 100)
+ }
+ J.update(X || "&#160;");
+ var V = C != "" ? (H.getWidth() + H.getMargins("lr")) : 0;
+ var Z = J.getWidth() + J.getMargins("lr");
+ var W = R.getFrameWidth("lr");
+ var Y = R.body.getFrameWidth("lr");
+ if (Ext.isIE && V > 0) {
+ V += 3
+ }
+ var U = Math.max(Math.min(B.width || V + Z + W
+ + Y, this.maxWidth), Math.max(B.minWidth || this.minWidth, L
+ || 0));
+ if (B.prompt === true) {
+ S.setWidth(U - V - W - Y)
+ }
+ if (B.progress === true || B.wait === true) {
+ K.setSize(U - V - W - Y)
+ }
+ R.setSize(U, "auto").center();
+ return this
+ },updateProgress:function(V, U, W) {
+ K.updateProgress(V, U);
+ if (W) {
+ this.updateText(W)
+ }
+ return this
+ },isVisible:function() {
+ return R && R.isVisible()
+ },hide:function() {
+ if (this.isVisible()) {
+ R.hide();
+ T()
+ }
+ return this
+ },show:function(X) {
+ if (this.isVisible()) {
+ this.hide()
+ }
+ B = X;
+ var Y = this.getDialog(B.title || "&#160;");
+ Y.setTitle(B.title || "&#160;");
+ var U = (B.closable !== false && B.progress !== true && B.wait
+ !== true);
+ Y.tools.close.setDisplayed(U);
+ S = P;
+ B.prompt = B.prompt || (B.multiline ? true : false);
+ if (B.prompt) {
+ if (B.multiline) {
+ P.hide();
+ A.show();
+ A.setHeight(typeof B.multiline == "number" ? B.multiline
+ : this.defaultTextHeight);
+ S = A
+ } else {
+ P.show();
+ A.hide()
+ }
+ } else {
+ P.hide();
+ A.hide()
+ }
+ S.dom.value = B.value || "";
+ if (B.prompt) {
+ Y.focusEl = S
+ } else {
+ var W = B.buttons;
+ var V = null;
+ if (W && W.ok) {
+ V = O["ok"]
+ } else {
+ if (W && W.yes) {
+ V = O["yes"]
+ }
+ }
+ if (V) {
+ Y.focusEl = V
+ }
+ }
+ this.setIcon(B.icon);
+ L = I(B.buttons);
+ K.setVisible(B.progress === true || B.wait === true);
+ this.updateProgress(0, B.progressText);
+ this.updateText(B.msg);
+ if (B.cls) {
+ Y.el.addClass(B.cls)
+ }
+ Y.proxyDrag = B.proxyDrag === true;
+ Y.modal = B.modal !== false;
+ Y.mask = B.modal !== false ? N : false;
+ if (!Y.isVisible()) {
+ document.body.appendChild(R.el.dom);
+ Y.setAnimateTarget(B.animEl);
+ Y.show(B.animEl)
+ }
+ Y.on("show", function() {
+ if (U === true) {
+ Y.keyMap.enable()
+ } else {
+ Y.keyMap.disable()
+ }
+ }, this, {single:true});
+ if (B.wait === true) {
+ K.wait(B.waitConfig)
+ }
+ return this
+ },setIcon:function(U) {
+ if (U && U != "") {
+ H.removeClass("x-hidden");
+ H.replaceClass(C, U);
+ C = U
+ } else {
+ H.replaceClass(C, "x-hidden");
+ C = ""
+ }
+ return this
+ },progress:function(W, V, U) {
+ this.show({title:W,msg:V,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth,progressText:U});
+ return this
+ },wait:function(W, V, U) {
+ this.show({title:V,msg:W,buttons:false,closable:false,wait:true,modal:true,minWidth:this.minProgressWidth,waitConfig:U});
+ return this
+ },alert:function(X, W, V, U) {
+ this.show({title:X,msg:W,buttons:this.OK,fn:V,scope:U});
+ return this
+ },confirm:function(X, W, V, U) {
+ this.show({title:X,msg:W,buttons:this.YESNO,fn:V,scope:U,icon:this.QUESTION});
+ return this
+ },prompt:function(Y, X, W, V, U) {
+ this.show({title:Y,msg:X,buttons:this.OKCANCEL,fn:W,minWidth:250,scope:V,prompt:true,multiline:U});
+ return this
+ },OK:{ok:true},CANCEL:{cancel:true},OKCANCEL:{ok:true,cancel:true},YESNO:{yes:true,no:true},YESNOCANCEL:{yes:true,no:true,cancel:true},INFO:"ext-mb-info",WARNING:"ext-mb-warning",QUESTION:"ext-mb-question",ERROR:"ext-mb-error",defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}}
+}();
+Ext.Msg = Ext.MessageBox;
+Ext.Tip = Ext.extend(Ext.Panel, {minWidth:40,maxWidth:300,shadow:"sides",defaultAlign:"tl-bl?",autoRender:true,quickShowInterval:250,frame:true,hidden:true,baseCls:"x-tip",floating:{shadow:true,shim:true,useDisplay:true,constrain:false},autoHeight:true,initComponent:function() {
+ Ext.Tip.superclass.initComponent.call(this);
+ if (this.closable && !this.title) {
+ this.elements += ",header"
+ }
+},afterRender:function() {
+ Ext.Tip.superclass.afterRender.call(this);
+ if (this.closable) {
+ this.addTool({id:"close",handler:this.hide,scope:this})
+ }
+},showAt:function(A) {
+ Ext.Tip.superclass.show.call(this);
+ if (this.measureWidth !== false && (!this.initialConfig
+ || typeof this.initialConfig.width != "number")) {
+ var B = this.body.getTextWidth();
+ if (this.title) {
+ B = Math.max(B, this.header.child("span").getTextWidth(this.title))
+ }
+ B += this.getFrameWidth() + (this.closable ? 20 : 0)
+ + this.body.getPadding("lr");
+ this.setWidth(B.constrain(this.minWidth, this.maxWidth))
+ }
+ if (this.constrainPosition) {
+ A = this.el.adjustForConstraints(A)
+ }
+ this.setPagePosition(A[0], A[1])
+},showBy:function(A, B) {
+ if (!this.rendered) {
+ this.render(Ext.getBody())
+ }
+ this.showAt(this.el.getAlignToXY(A, B || this.defaultAlign))
+},initDraggable:function() {
+ this.dd = new Ext.Tip.DD(this, typeof this.draggable == "boolean" ? null
+ : this.draggable);
+ this.header.addClass("x-tip-draggable")
+}});
+Ext.Tip.DD = function(B, A) {
+ Ext.apply(this, A);
+ this.tip = B;
+ Ext.Tip.DD.superclass.constructor.call(this, B.el.id, "WindowDD-" + B.id);
+ this.setHandleElId(B.header.id);
+ this.scroll = false
+};
+Ext.extend(Ext.Tip.DD, Ext.dd.DD, {moveOnly:true,scroll:false,headerOffsets:[100,25],startDrag:function() {
+ this.tip.el.disableShadow()
+},endDrag:function(A) {
+ this.tip.el.enableShadow(true)
+}});
+Ext.ToolTip
+ = Ext.extend(Ext.Tip, {showDelay:500,hideDelay:200,dismissDelay:5000,mouseOffset:[15,18],trackMouse:false,constrainPosition:true,initComponent:function() {
+ Ext.ToolTip.superclass.initComponent.call(this);
+ this.lastActive = new Date();
+ this.initTarget()
+},initTarget:function() {
+ if (this.target) {
+ this.target = Ext.get(this.target);
+ this.target.on("mouseover", this.onTargetOver, this);
+ this.target.on("mouseout", this.onTargetOut, this);
+ this.target.on("mousemove", this.onMouseMove, this)
+ }
+},onMouseMove:function(A) {
+ this.targetXY = A.getXY();
+ if (!this.hidden && this.trackMouse) {
+ this.setPagePosition(this.getTargetXY())
+ }
+},getTargetXY:function() {
+ return[this.targetXY[0] + this.mouseOffset[0],this.targetXY[1]
+ + this.mouseOffset[1]]
+},onTargetOver:function(A) {
+ if (this.disabled || A.within(this.target.dom, true)) {
+ return
+ }
+ this.clearTimer("hide");
+ this.targetXY = A.getXY();
+ this.delayShow()
+},delayShow:function() {
+ if (this.hidden && !this.showTimer) {
+ if (this.lastActive.getElapsed() < this.quickShowInterval) {
+ this.show()
+ } else {
+ this.showTimer = this.show.defer(this.showDelay, this)
+ }
+ } else {
+ if (!this.hidden && this.autoHide !== false) {
+ this.show()
+ }
+ }
+},onTargetOut:function(A) {
+ if (this.disabled || A.within(this.target.dom, true)) {
+ return
+ }
+ this.clearTimer("show");
+ if (this.autoHide !== false) {
+ this.delayHide()
+ }
+},delayHide:function() {
+ if (!this.hidden && !this.hideTimer) {
+ this.hideTimer = this.hide.defer(this.hideDelay, this)
+ }
+},hide:function() {
+ this.clearTimer("dismiss");
+ this.lastActive = new Date();
+ Ext.ToolTip.superclass.hide.call(this)
+},show:function() {
+ this.showAt(this.getTargetXY())
+},showAt:function(A) {
+ this.lastActive = new Date();
+ this.clearTimers();
+ Ext.ToolTip.superclass.showAt.call(this, A);
+ if (this.dismissDelay && this.autoHide !== false) {
+ this.dismissTimer = this.hide.defer(this.dismissDelay, this)
+ }
+},clearTimer:function(A) {
+ A = A + "Timer";
+ clearTimeout(this[A]);
+ delete this[A]
+},clearTimers:function() {
+ this.clearTimer("show");
+ this.clearTimer("dismiss");
+ this.clearTimer("hide")
+},onShow:function() {
+ Ext.ToolTip.superclass.onShow.call(this);
+ Ext.getDoc().on("mousedown", this.onDocMouseDown, this)
+},onHide:function() {
+ Ext.ToolTip.superclass.onHide.call(this);
+ Ext.getDoc().un("mousedown", this.onDocMouseDown, this)
+},onDocMouseDown:function(A) {
+ if (this.autoHide !== false && !A.within(this.el.dom)) {
+ this.disable();
+ this.enable.defer(100, this)
+ }
+},onDisable:function() {
+ this.clearTimers();
+ this.hide()
+},adjustPosition:function(A, D) {
+ var C = this.targetXY[1],B = this.getSize().height;
+ if (this.constrainPosition && D <= C && (D + B) >= C) {
+ D = C - B - 5
+ }
+ return{x:A,y:D}
+},onDestroy:function() {
+ Ext.ToolTip.superclass.onDestroy.call(this);
+ if (this.target) {
+ this.target.un("mouseover", this.onTargetOver, this);
+ this.target.un("mouseout", this.onTargetOut, this);
+ this.target.un("mousemove", this.onMouseMove, this)
+ }
+}});
+Ext.QuickTip
+ = Ext.extend(Ext.ToolTip, {interceptTitles:false,tagConfig:{namespace:"ext",attribute:"qtip",width:"qwidth",target:"target",title:"qtitle",hide:"hide",cls:"qclass",align:"qalign"},initComponent:function() {
+ this.target = this.target || Ext.getDoc();
+ this.targets = this.targets || {};
+ Ext.QuickTip.superclass.initComponent.call(this)
+},register:function(D) {
+ var F = Ext.isArray(D) ? D : arguments;
+ for (var E = 0,A = F.length; E < A; E++) {
+ var H = F[E];
+ var G = H.target;
+ if (G) {
+ if (Ext.isArray(G)) {
+ for (var C = 0,B = G.length; C < B; C++) {
+ this.targets[Ext.id(G[C])] = H
+ }
+ } else {
+ this.targets[Ext.id(G)] = H
+ }
+ }
+ }
+},unregister:function(A) {
+ delete this.targets[Ext.id(A)]
+},onTargetOver:function(G) {
+ if (this.disabled) {
+ return
+ }
+ this.targetXY = G.getXY();
+ var C = G.getTarget();
+ if (!C || C.nodeType !== 1 || C == document || C == document.body) {
+ return
+ }
+ if (this.activeTarget && C == this.activeTarget.el) {
+ this.clearTimer("hide");
+ this.show();
+ return
+ }
+ if (C && this.targets[C.id]) {
+ this.activeTarget = this.targets[C.id];
+ this.activeTarget.el = C;
+ this.delayShow();
+ return
+ }
+ var E,F = Ext.fly(C),B = this.tagConfig;
+ var D = B.namespace;
+ if (this.interceptTitles && C.title) {
+ E = C.title;
+ C.qtip = E;
+ C.removeAttribute("title");
+ G.preventDefault()
+ } else {
+ E = C.qtip || F.getAttributeNS(D, B.attribute)
+ }
+ if (E) {
+ var A = F.getAttributeNS(D, B.hide);
+ this.activeTarget
+ = {el:C,text:E,width:F.getAttributeNS(D, B.width),autoHide:A
+ != "user" && A
+ !== "false",title:F.getAttributeNS(D, B.title),cls:F.getAttributeNS(D, B.cls),align:F.getAttributeNS(D, B.align)};
+ this.delayShow()
+ }
+},onTargetOut:function(A) {
+ this.clearTimer("show");
+ if (this.autoHide !== false) {
+ this.delayHide()
+ }
+},showAt:function(B) {
+ var A = this.activeTarget;
+ if (A) {
+ if (!this.rendered) {
+ this.render(Ext.getBody());
+ this.activeTarget = A
+ }
+ if (A.width) {
+ this.setWidth(A.width);
+ this.body.setWidth(this.adjustBodyWidth(A.width
+ - this.getFrameWidth()));
+ this.measureWidth = false
+ } else {
+ this.measureWidth = true
+ }
+ this.setTitle(A.title || "");
+ this.body.update(A.text);
+ this.autoHide = A.autoHide;
+ this.dismissDelay = A.dismissDelay || this.dismissDelay;
+ if (this.lastCls) {
+ this.el.removeClass(this.lastCls);
+ delete this.lastCls
+ }
+ if (A.cls) {
+ this.el.addClass(A.cls);
+ this.lastCls = A.cls
+ }
+ if (A.align) {
+ B = this.el.getAlignToXY(A.el, A.align);
+ this.constrainPosition = false
+ } else {
+ this.constrainPosition = true
+ }
+ }
+ Ext.QuickTip.superclass.showAt.call(this, B)
+},hide:function() {
+ delete this.activeTarget;
+ Ext.QuickTip.superclass.hide.call(this)
+}});
+Ext.QuickTips = function() {
+ var B,A = [];
+ return{init:function() {
+ if (!B) {
+ B = new Ext.QuickTip({elements:"header,body"})
+ }
+ },enable:function() {
+ if (B) {
+ A.pop();
+ if (A.length < 1) {
+ B.enable()
+ }
+ }
+ },disable:function() {
+ if (B) {
+ B.disable()
+ }
+ A.push(1)
+ },isEnabled:function() {
+ return B && !B.disabled
+ },getQuickTip:function() {
+ return B
+ },register:function() {
+ B.register.apply(B, arguments)
+ },unregister:function() {
+ B.unregister.apply(B, arguments)
+ },tips:function() {
+ B.register.apply(B, arguments)
+ }}
+}();
+Ext.tree.TreePanel
+ = Ext.extend(Ext.Panel, {rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,pathSeparator:"/",initComponent:function() {
+ Ext.tree.TreePanel.superclass.initComponent.call(this);
+ if (!this.eventModel) {
+ this.eventModel = new Ext.tree.TreeEventModel(this)
+ }
+ this.nodeHash = {};
+ if (this.root) {
+ this.setRootNode(this.root)
+ }
+ this.addEvents("append", "remove", "movenode", "insert", "beforeappend", "beforeremove", "beforemovenode", "beforeinsert", "beforeload", "load", "textchange", "beforeexpandnode", "beforecollapsenode", "expandnode", "disabledchange", "collapsenode", "beforeclick", "click", "checkchange", "dblclick", "contextmenu", "beforechildrenrendered", "startdrag", "enddrag", "dragdrop", "beforenodedrop", "nodedrop", "nodedragover");
+ if (this.singleExpand) {
+ this.on("beforeexpandnode", this.restrictExpand, this)
+ }
+},proxyNodeEvent:function(C, B, A, G, F, E, D) {
+ if (C == "collapse" || C == "expand" || C == "beforecollapse" || C
+ == "beforeexpand" || C == "move" || C == "beforemove") {
+ C = C + "node"
+ }
+ return this.fireEvent(C, B, A, G, F, E, D)
+},getRootNode:function() {
+ return this.root
+},setRootNode:function(B) {
+ this.root = B;
+ B.ownerTree = this;
+ B.isRoot = true;
+ this.registerNode(B);
+ if (!this.rootVisible) {
+ var A = B.attributes.uiProvider;
+ B.ui = A ? new A(B) : new Ext.tree.RootTreeNodeUI(B)
+ }
+ return B
+},getNodeById:function(A) {
+ return this.nodeHash[A]
+},registerNode:function(A) {
+ this.nodeHash[A.id] = A
+},unregisterNode:function(A) {
+ delete this.nodeHash[A.id]
+},toString:function() {
+ return"[Tree" + (this.id ? " " + this.id : "") + "]"
+},restrictExpand:function(A) {
+ var B = A.parentNode;
+ if (B) {
+ if (B.expandedChild && B.expandedChild.parentNode == B) {
+ B.expandedChild.collapse()
+ }
+ B.expandedChild = A
+ }
+},getChecked:function(A, B) {
+ B = B || this.root;
+ var C = [];
+ var D = function() {
+ if (this.attributes.checked) {
+ C.push(!A ? this : (A == "id" ? this.id : this.attributes[A]))
+ }
+ };
+ B.cascade(D);
+ return C
+},getEl:function() {
+ return this.el
+},getLoader:function() {
+ return this.loader
+},expandAll:function() {
+ this.root.expand(true)
+},collapseAll:function() {
+ this.root.collapse(true)
+},getSelectionModel:function() {
+ if (!this.selModel) {
+ this.selModel = new Ext.tree.DefaultSelectionModel()
+ }
+ return this.selModel
+},expandPath:function(F, A, G) {
+ A = A || "id";
+ var D = F.split(this.pathSeparator);
+ var C = this.root;
+ if (C.attributes[A] != D[1]) {
+ if (G) {
+ G(false, null)
+ }
+ return
+ }
+ var B = 1;
+ var E = function() {
+ if (++B == D.length) {
+ if (G) {
+ G(true, C)
+ }
+ return
+ }
+ var H = C.findChild(A, D[B]);
+ if (!H) {
+ if (G) {
+ G(false, C)
+ }
+ return
+ }
+ C = H;
+ H.expand(false, false, E)
+ };
+ C.expand(false, false, E)
+},selectPath:function(E, A, F) {
+ A = A || "id";
+ var C = E.split(this.pathSeparator);
+ var B = C.pop();
+ if (C.length > 0) {
+ var D = function(H, G) {
+ if (H && G) {
+ var I = G.findChild(A, B);
+ if (I) {
+ I.select();
+ if (F) {
+ F(true, I)
+ }
+ } else {
+ if (F) {
+ F(false, I)
+ }
+ }
+ } else {
+ if (F) {
+ F(false, I)
+ }
+ }
+ };
+ this.expandPath(C.join(this.pathSeparator), A, D)
+ } else {
+ this.root.select();
+ if (F) {
+ F(true, this.root)
+ }
+ }
+},getTreeEl:function() {
+ return this.body
+},onRender:function(B, A) {
+ Ext.tree.TreePanel.superclass.onRender.call(this, B, A);
+ this.el.addClass("x-tree");
+ this.innerCt = this.body.createChild({tag:"ul",cls:"x-tree-root-ct "
+ + (this.useArrows ? "x-tree-arrows" : this.lines ? "x-tree-lines"
+ : "x-tree-no-lines")})
+},initEvents:function() {
+ Ext.tree.TreePanel.superclass.initEvents.call(this);
+ if (this.containerScroll) {
+ Ext.dd.ScrollManager.register(this.body)
+ }
+ if ((this.enableDD || this.enableDrop) && !this.dropZone) {
+ this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig
+ || {ddGroup:this.ddGroup
+ || "TreeDD",appendOnly:this.ddAppendOnly === true})
+ }
+ if ((this.enableDD || this.enableDrag) && !this.dragZone) {
+ this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig
+ || {ddGroup:this.ddGroup || "TreeDD",scroll:this.ddScroll})
+ }
+ this.getSelectionModel().init(this)
+},afterRender:function() {
+ Ext.tree.TreePanel.superclass.afterRender.call(this);
+ this.root.render();
+ if (!this.rootVisible) {
+ this.root.renderChildren()
+ }
+},onDestroy:function() {
+ if (this.rendered) {
+ this.body.removeAllListeners();
+ Ext.dd.ScrollManager.unregister(this.body);
+ if (this.dropZone) {
+ this.dropZone.unreg()
+ }
+ if (this.dragZone) {
+ this.dragZone.unreg()
+ }
+ }
+ this.root.destroy();
+ this.nodeHash = null;
+ Ext.tree.TreePanel.superclass.onDestroy.call(this)
+}});
+Ext.reg("treepanel", Ext.tree.TreePanel);
+Ext.tree.TreeEventModel = function(A) {
+ this.tree = A;
+ this.tree.on("render", this.initEvents, this)
+};
+Ext.tree.TreeEventModel.prototype = {initEvents:function() {
+ var A = this.tree.getTreeEl();
+ A.on("click", this.delegateClick, this);
+ if (this.tree.trackMouseOver !== false) {
+ A.on("mouseover", this.delegateOver, this);
+ A.on("mouseout", this.delegateOut, this)
+ }
+ A.on("dblclick", this.delegateDblClick, this);
+ A.on("contextmenu", this.delegateContextMenu, this)
+},getNode:function(B) {
+ var A;
+ if (A = B.getTarget(".x-tree-node-el", 10)) {
+ var C = Ext.fly(A, "_treeEvents").getAttributeNS("ext", "tree-node-id");
+ if (C) {
+ return this.tree.getNodeById(C)
+ }
+ }
+ return null
+},getNodeTarget:function(B) {
+ var A = B.getTarget(".x-tree-node-icon", 1);
+ if (!A) {
+ A = B.getTarget(".x-tree-node-el", 6)
+ }
+ return A
+},delegateOut:function(B, A) {
+ if (!this.beforeEvent(B)) {
+ return
+ }
+ if (B.getTarget(".x-tree-ec-icon", 1)) {
+ var C = this.getNode(B);
+ this.onIconOut(B, C);
+ if (C == this.lastEcOver) {
+ delete this.lastEcOver
+ }
+ }
+ if ((A = this.getNodeTarget(B)) && !B.within(A, true)) {
+ this.onNodeOut(B, this.getNode(B))
+ }
+},delegateOver:function(B, A) {
+ if (!this.beforeEvent(B)) {
+ return
+ }
+ if (this.lastEcOver) {
+ this.onIconOut(B, this.lastEcOver);
+ delete this.lastEcOver
+ }
+ if (B.getTarget(".x-tree-ec-icon", 1)) {
+ this.lastEcOver = this.getNode(B);
+ this.onIconOver(B, this.lastEcOver)
+ }
+ if (A = this.getNodeTarget(B)) {
+ this.onNodeOver(B, this.getNode(B))
+ }
+},delegateClick:function(B, A) {
+ if (!this.beforeEvent(B)) {
+ return
+ }
+ if (B.getTarget("input[type=checkbox]", 1)) {
+ this.onCheckboxClick(B, this.getNode(B))
+ } else {
+ if (B.getTarget(".x-tree-ec-icon", 1)) {
+ this.onIconClick(B, this.getNode(B))
+ } else {
+ if (this.getNodeTarget(B)) {
+ this.onNodeClick(B, this.getNode(B))
+ }
+ }
+ }
+},delegateDblClick:function(B, A) {
+ if (this.beforeEvent(B) && this.getNodeTarget(B)) {
+ this.onNodeDblClick(B, this.getNode(B))
+ }
+},delegateContextMenu:function(B, A) {
+ if (this.beforeEvent(B) && this.getNodeTarget(B)) {
+ this.onNodeContextMenu(B, this.getNode(B))
+ }
+},onNodeClick:function(B, A) {
+ A.ui.onClick(B)
+},onNodeOver:function(B, A) {
+ A.ui.onOver(B)
+},onNodeOut:function(B, A) {
+ A.ui.onOut(B)
+},onIconOver:function(B, A) {
+ A.ui.addClass("x-tree-ec-over")
+},onIconOut:function(B, A) {
+ A.ui.removeClass("x-tree-ec-over")
+},onIconClick:function(B, A) {
+ A.ui.ecClick(B)
+},onCheckboxClick:function(B, A) {
+ A.ui.onCheckChange(B)
+},onNodeDblClick:function(B, A) {
+ A.ui.onDblClick(B)
+},onNodeContextMenu:function(B, A) {
+ A.ui.onContextMenu(B)
+},beforeEvent:function(A) {
+ if (this.disabled) {
+ A.stopEvent();
+ return false
+ }
+ return true
+},disable:function() {
+ this.disabled = true
+},enable:function() {
+ this.disabled = false
+}};
+Ext.tree.DefaultSelectionModel = function(A) {
+ this.selNode = null;
+ this.addEvents("selectionchange", "beforeselect");
+ Ext.apply(this, A);
+ Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.tree.DefaultSelectionModel, Ext.util.Observable, {init:function(
+ A) {
+ this.tree = A;
+ A.getTreeEl().on("keydown", this.onKeyDown, this);
+ A.on("click", this.onNodeClick, this)
+},onNodeClick:function(A, B) {
+ this.select(A)
+},select:function(B) {
+ var A = this.selNode;
+ if (A != B && this.fireEvent("beforeselect", this, B, A) !== false) {
+ if (A) {
+ A.ui.onSelectedChange(false)
+ }
+ this.selNode = B;
+ B.ui.onSelectedChange(true);
+ this.fireEvent("selectionchange", this, B, A)
+ }
+ return B
+},unselect:function(A) {
+ if (this.selNode == A) {
+ this.clearSelections()
+ }
+},clearSelections:function() {
+ var A = this.selNode;
+ if (A) {
+ A.ui.onSelectedChange(false);
+ this.selNode = null;
+ this.fireEvent("selectionchange", this, null)
+ }
+ return A
+},getSelectedNode:function() {
+ return this.selNode
+},isSelected:function(A) {
+ return this.selNode == A
+},selectPrevious:function() {
+ var A = this.selNode || this.lastSelNode;
+ if (!A) {
+ return null
+ }
+ var C = A.previousSibling;
+ if (C) {
+ if (!C.isExpanded() || C.childNodes.length < 1) {
+ return this.select(C)
+ } else {
+ var B = C.lastChild;
+ while (B && B.isExpanded() && B.childNodes.length > 0) {
+ B = B.lastChild
+ }
+ return this.select(B)
+ }
+ } else {
+ if (A.parentNode && (this.tree.rootVisible || !A.parentNode.isRoot)) {
+ return this.select(A.parentNode)
+ }
+ }
+ return null
+},selectNext:function() {
+ var B = this.selNode || this.lastSelNode;
+ if (!B) {
+ return null
+ }
+ if (B.firstChild && B.isExpanded()) {
+ return this.select(B.firstChild)
+ } else {
+ if (B.nextSibling) {
+ return this.select(B.nextSibling)
+ } else {
+ if (B.parentNode) {
+ var A = null;
+ B.parentNode.bubble(function() {
+ if (this.nextSibling) {
+ A = this.getOwnerTree().selModel.select(this.nextSibling);
+ return false
+ }
+ });
+ return A
+ }
+ }
+ }
+ return null
+},onKeyDown:function(C) {
+ var B = this.selNode || this.lastSelNode;
+ var D = this;
+ if (!B) {
+ return
+ }
+ var A = C.getKey();
+ switch (A) {case C.DOWN:C.stopEvent();this.selectNext();break;case C.UP:C.stopEvent();this.selectPrevious();break;case C.RIGHT:C.preventDefault();if (B.hasChildNodes()) {
+ if (!B.isExpanded()) {
+ B.expand()
+ } else {
+ if (B.firstChild) {
+ this.select(B.firstChild, C)
+ }
+ }
+ }break;case C.LEFT:C.preventDefault();if (B.hasChildNodes()
+ && B.isExpanded()) {
+ B.collapse()
+ } else {
+ if (B.parentNode && (this.tree.rootVisible || B.parentNode
+ != this.tree.getRootNode())) {
+ this.select(B.parentNode, C)
+ }
+ }break}
+}});
+Ext.tree.MultiSelectionModel = function(A) {
+ this.selNodes = [];
+ this.selMap = {};
+ this.addEvents("selectionchange");
+ Ext.apply(this, A);
+ Ext.tree.MultiSelectionModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.tree.MultiSelectionModel, Ext.util.Observable, {init:function(
+ A) {
+ this.tree = A;
+ A.getTreeEl().on("keydown", this.onKeyDown, this);
+ A.on("click", this.onNodeClick, this)
+},onNodeClick:function(A, B) {
+ this.select(A, B, B.ctrlKey)
+},select:function(A, C, B) {
+ if (B !== true) {
+ this.clearSelections(true)
+ }
+ if (this.isSelected(A)) {
+ this.lastSelNode = A;
+ return A
+ }
+ this.selNodes.push(A);
+ this.selMap[A.id] = A;
+ this.lastSelNode = A;
+ A.ui.onSelectedChange(true);
+ this.fireEvent("selectionchange", this, this.selNodes);
+ return A
+},unselect:function(B) {
+ if (this.selMap[B.id]) {
+ B.ui.onSelectedChange(false);
+ var C = this.selNodes;
+ var A = C.indexOf(B);
+ if (A != -1) {
+ this.selNodes.splice(A, 1)
+ }
+ delete this.selMap[B.id];
+ this.fireEvent("selectionchange", this, this.selNodes)
+ }
+},clearSelections:function(B) {
+ var D = this.selNodes;
+ if (D.length > 0) {
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].ui.onSelectedChange(false)
+ }
+ this.selNodes = [];
+ this.selMap = {};
+ if (B !== true) {
+ this.fireEvent("selectionchange", this, this.selNodes)
+ }
+ }
+},isSelected:function(A) {
+ return this.selMap[A.id] ? true : false
+},getSelectedNodes:function() {
+ return this.selNodes
+},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious});
+Ext.tree.TreeNode = function(A) {
+ A = A || {};
+ if (typeof A == "string") {
+ A = {text:A}
+ }
+ this.childrenRendered = false;
+ this.rendered = false;
+ Ext.tree.TreeNode.superclass.constructor.call(this, A);
+ this.expanded = A.expanded === true;
+ this.isTarget = A.isTarget !== false;
+ this.draggable = A.draggable !== false && A.allowDrag !== false;
+ this.allowChildren = A.allowChildren !== false && A.allowDrop !== false;
+ this.text = A.text;
+ this.disabled = A.disabled === true;
+ this.addEvents("textchange", "beforeexpand", "beforecollapse", "expand", "disabledchange", "collapse", "beforeclick", "click", "checkchange", "dblclick", "contextmenu", "beforechildrenrendered");
+ var B = this.attributes.uiProvider || this.defaultUI || Ext.tree.TreeNodeUI;
+ this.ui = new B(this)
+};
+Ext.extend(Ext.tree.TreeNode, Ext.data.Node, {preventHScroll:true,isExpanded:function() {
+ return this.expanded
+},getUI:function() {
+ return this.ui
+},setFirstChild:function(A) {
+ var B = this.firstChild;
+ Ext.tree.TreeNode.superclass.setFirstChild.call(this, A);
+ if (this.childrenRendered && B && A != B) {
+ B.renderIndent(true, true)
+ }
+ if (this.rendered) {
+ this.renderIndent(true, true)
+ }
+},setLastChild:function(B) {
+ var A = this.lastChild;
+ Ext.tree.TreeNode.superclass.setLastChild.call(this, B);
+ if (this.childrenRendered && A && B != A) {
+ A.renderIndent(true, true)
+ }
+ if (this.rendered) {
+ this.renderIndent(true, true)
+ }
+},appendChild:function() {
+ var A = Ext.tree.TreeNode.superclass.appendChild.apply(this, arguments);
+ if (A && this.childrenRendered) {
+ A.render()
+ }
+ this.ui.updateExpandIcon();
+ return A
+},removeChild:function(A) {
+ this.ownerTree.getSelectionModel().unselect(A);
+ Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments);
+ if (this.childrenRendered) {
+ A.ui.remove()
+ }
+ if (this.childNodes.length < 1) {
+ this.collapse(false, false)
+ } else {
+ this.ui.updateExpandIcon()
+ }
+ if (!this.firstChild && !this.isHiddenRoot()) {
+ this.childrenRendered = false
+ }
+ return A
+},insertBefore:function(C, A) {
+ var B = Ext.tree.TreeNode.superclass.insertBefore.apply(this, arguments);
+ if (B && A && this.childrenRendered) {
+ C.render()
+ }
+ this.ui.updateExpandIcon();
+ return B
+},setText:function(B) {
+ var A = this.text;
+ this.text = B;
+ this.attributes.text = B;
+ if (this.rendered) {
+ this.ui.onTextChange(this, B, A)
+ }
+ this.fireEvent("textchange", this, B, A)
+},select:function() {
+ this.getOwnerTree().getSelectionModel().select(this)
+},unselect:function() {
+ this.getOwnerTree().getSelectionModel().unselect(this)
+},isSelected:function() {
+ return this.getOwnerTree().getSelectionModel().isSelected(this)
+},expand:function(A, B, C) {
+ if (!this.expanded) {
+ if (this.fireEvent("beforeexpand", this, A, B) === false) {
+ return
+ }
+ if (!this.childrenRendered) {
+ this.renderChildren()
+ }
+ this.expanded = true;
+ if (!this.isHiddenRoot() && (this.getOwnerTree().animate && B !== false)
+ || B) {
+ this.ui.animExpand(function() {
+ this.fireEvent("expand", this);
+ if (typeof C == "function") {
+ C(this)
+ }
+ if (A === true) {
+ this.expandChildNodes(true)
+ }
+ }.createDelegate(this));
+ return
+ } else {
+ this.ui.expand();
+ this.fireEvent("expand", this);
+ if (typeof C == "function") {
+ C(this)
+ }
+ }
+ } else {
+ if (typeof C == "function") {
+ C(this)
+ }
+ }
+ if (A === true) {
+ this.expandChildNodes(true)
+ }
+},isHiddenRoot:function() {
+ return this.isRoot && !this.getOwnerTree().rootVisible
+},collapse:function(B, E) {
+ if (this.expanded && !this.isHiddenRoot()) {
+ if (this.fireEvent("beforecollapse", this, B, E) === false) {
+ return
+ }
+ this.expanded = false;
+ if ((this.getOwnerTree().animate && E !== false) || E) {
+ this.ui.animCollapse(function() {
+ this.fireEvent("collapse", this);
+ if (B === true) {
+ this.collapseChildNodes(true)
+ }
+ }.createDelegate(this));
+ return
+ } else {
+ this.ui.collapse();
+ this.fireEvent("collapse", this)
+ }
+ }
+ if (B === true) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].collapse(true, false)
+ }
+ }
+},delayedExpand:function(A) {
+ if (!this.expandProcId) {
+ this.expandProcId = this.expand.defer(A, this)
+ }
+},cancelExpand:function() {
+ if (this.expandProcId) {
+ clearTimeout(this.expandProcId)
+ }
+ this.expandProcId = false
+},toggle:function() {
+ if (this.expanded) {
+ this.collapse()
+ } else {
+ this.expand()
+ }
+},ensureVisible:function(B) {
+ var A = this.getOwnerTree();
+ A.expandPath(this.parentNode.getPath(), false, function() {
+ var C = A.getNodeById(this.id);
+ A.getTreeEl().scrollChildIntoView(C.ui.anchor);
+ Ext.callback(B)
+ }.createDelegate(this))
+},expandChildNodes:function(B) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].expand(B)
+ }
+},collapseChildNodes:function(B) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].collapse(B)
+ }
+},disable:function() {
+ this.disabled = true;
+ this.unselect();
+ if (this.rendered && this.ui.onDisableChange) {
+ this.ui.onDisableChange(this, true)
+ }
+ this.fireEvent("disabledchange", this, true)
+},enable:function() {
+ this.disabled = false;
+ if (this.rendered && this.ui.onDisableChange) {
+ this.ui.onDisableChange(this, false)
+ }
+ this.fireEvent("disabledchange", this, false)
+},renderChildren:function(B) {
+ if (B !== false) {
+ this.fireEvent("beforechildrenrendered", this)
+ }
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].render(true)
+ }
+ this.childrenRendered = true
+},sort:function(E, D) {
+ Ext.tree.TreeNode.superclass.sort.apply(this, arguments);
+ if (this.childrenRendered) {
+ var C = this.childNodes;
+ for (var B = 0,A = C.length; B < A; B++) {
+ C[B].render(true)
+ }
+ }
+},render:function(A) {
+ this.ui.render(A);
+ if (!this.rendered) {
+ this.getOwnerTree().registerNode(this);
+ this.rendered = true;
+ if (this.expanded) {
+ this.expanded = false;
+ this.expand(false, false)
+ }
+ }
+},renderIndent:function(B, E) {
+ if (E) {
+ this.ui.childIndent = null
+ }
+ this.ui.renderIndent();
+ if (B === true && this.childrenRendered) {
+ var D = this.childNodes;
+ for (var C = 0,A = D.length; C < A; C++) {
+ D[C].renderIndent(true, E)
+ }
+ }
+},beginUpdate:function() {
+ this.childrenRendered = false
+},endUpdate:function() {
+ if (this.expanded) {
+ this.renderChildren()
+ }
+},destroy:function() {
+ for (var B = 0,A = this.childNodes.length; B < A; B++) {
+ this.childNodes[B].destroy()
+ }
+ this.childNodes = null;
+ if (this.ui.destroy) {
+ this.ui.destroy()
+ }
+}});
+Ext.tree.AsyncTreeNode = function(A) {
+ this.loaded = false;
+ this.loading = false;
+ Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments);
+ this.addEvents("beforeload", "load")
+};
+Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, {expand:function(B, D,
+ F) {
+ if (this.loading) {
+ var E;
+ var C = function() {
+ if (!this.loading) {
+ clearInterval(E);
+ this.expand(B, D, F)
+ }
+ }.createDelegate(this);
+ E = setInterval(C, 200);
+ return
+ }
+ if (!this.loaded) {
+ if (this.fireEvent("beforeload", this) === false) {
+ return
+ }
+ this.loading = true;
+ this.ui.beforeLoad(this);
+ var A = this.loader || this.attributes.loader
+ || this.getOwnerTree().getLoader();
+ if (A) {
+ A.load(this, this.loadComplete.createDelegate(this, [B,D,F]));
+ return
+ }
+ }
+ Ext.tree.AsyncTreeNode.superclass.expand.call(this, B, D, F)
+},isLoading:function() {
+ return this.loading
+},loadComplete:function(A, B, C) {
+ this.loading = false;
+ this.loaded = true;
+ this.ui.afterLoad(this);
+ this.fireEvent("load", this);
+ this.expand(A, B, C)
+},isLoaded:function() {
+ return this.loaded
+},hasChildNodes:function() {
+ if (!this.isLeaf() && !this.loaded) {
+ return true
+ } else {
+ return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)
+ }
+},reload:function(A) {
+ this.collapse(false, false);
+ while (this.firstChild) {
+ this.removeChild(this.firstChild)
+ }
+ this.childrenRendered = false;
+ this.loaded = false;
+ if (this.isHiddenRoot()) {
+ this.expanded = false
+ }
+ this.expand(false, false, A)
+}});
+Ext.tree.TreeNodeUI = function(A) {
+ this.node = A;
+ this.rendered = false;
+ this.animating = false;
+ this.wasLeaf = true;
+ this.ecc = "x-tree-ec-icon x-tree-elbow";
+ this.emptyIcon = Ext.BLANK_IMAGE_URL
+};
+Ext.tree.TreeNodeUI.prototype = {removeChild:function(A) {
+ if (this.rendered) {
+ this.ctNode.removeChild(A.ui.getEl())
+ }
+},beforeLoad:function() {
+ this.addClass("x-tree-node-loading")
+},afterLoad:function() {
+ this.removeClass("x-tree-node-loading")
+},onTextChange:function(B, C, A) {
+ if (this.rendered) {
+ this.textNode.innerHTML = C
+ }
+},onDisableChange:function(A, B) {
+ this.disabled = B;
+ if (this.checkbox) {
+ this.checkbox.disabled = B
+ }
+ if (B) {
+ this.addClass("x-tree-node-disabled")
+ } else {
+ this.removeClass("x-tree-node-disabled")
+ }
+},onSelectedChange:function(A) {
+ if (A) {
+ this.focus();
+ this.addClass("x-tree-selected")
+ } else {
+ this.removeClass("x-tree-selected")
+ }
+},onMove:function(A, G, E, F, D, B) {
+ this.childIndent = null;
+ if (this.rendered) {
+ var H = F.ui.getContainer();
+ if (!H) {
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap);
+ return
+ }
+ var C = B ? B.ui.getEl() : null;
+ if (C) {
+ H.insertBefore(this.wrap, C)
+ } else {
+ H.appendChild(this.wrap)
+ }
+ this.node.renderIndent(true)
+ }
+},addClass:function(A) {
+ if (this.elNode) {
+ Ext.fly(this.elNode).addClass(A)
+ }
+},removeClass:function(A) {
+ if (this.elNode) {
+ Ext.fly(this.elNode).removeClass(A)
+ }
+},remove:function() {
+ if (this.rendered) {
+ this.holder = document.createElement("div");
+ this.holder.appendChild(this.wrap)
+ }
+},fireEvent:function() {
+ return this.node.fireEvent.apply(this.node, arguments)
+},initEvents:function() {
+ this.node.on("move", this.onMove, this);
+ if (this.node.disabled) {
+ this.addClass("x-tree-node-disabled");
+ if (this.checkbox) {
+ this.checkbox.disabled = true
+ }
+ }
+ if (this.node.hidden) {
+ this.hide()
+ }
+ var B = this.node.getOwnerTree();
+ var A = B.enableDD || B.enableDrag || B.enableDrop;
+ if (A && (!this.node.isRoot || B.rootVisible)) {
+ Ext.dd.Registry.register(this.elNode, {node:this.node,handles:this.getDDHandles(),isHandle:false})
+ }
+},getDDHandles:function() {
+ return[this.iconNode,this.textNode,this.elNode]
+},hide:function() {
+ this.node.hidden = true;
+ if (this.wrap) {
+ this.wrap.style.display = "none"
+ }
+},show:function() {
+ this.node.hidden = false;
+ if (this.wrap) {
+ this.wrap.style.display = ""
+ }
+},onContextMenu:function(A) {
+ if (this.node.hasListener("contextmenu")
+ || this.node.getOwnerTree().hasListener("contextmenu")) {
+ A.preventDefault();
+ this.focus();
+ this.fireEvent("contextmenu", this.node, A)
+ }
+},onClick:function(B) {
+ if (this.dropping) {
+ B.stopEvent();
+ return
+ }
+ if (this.fireEvent("beforeclick", this.node, B) !== false) {
+ var A = B.getTarget("a");
+ if (!this.disabled && this.node.attributes.href && A) {
+ this.fireEvent("click", this.node, B);
+ return
+ } else {
+ if (A && B.ctrlKey) {
+ B.stopEvent()
+ }
+ }
+ B.preventDefault();
+ if (this.disabled) {
+ return
+ }
+ if (this.node.attributes.singleClickExpand && !this.animating
+ && this.node.hasChildNodes()) {
+ this.node.toggle()
+ }
+ this.fireEvent("click", this.node, B)
+ } else {
+ B.stopEvent()
+ }
+},onDblClick:function(A) {
+ A.preventDefault();
+ if (this.disabled) {
+ return
+ }
+ if (this.checkbox) {
+ this.toggleCheck()
+ }
+ if (!this.animating && this.node.hasChildNodes()) {
+ this.node.toggle()
+ }
+ this.fireEvent("dblclick", this.node, A)
+},onOver:function(A) {
+ this.addClass("x-tree-node-over")
+},onOut:function(A) {
+ this.removeClass("x-tree-node-over")
+},onCheckChange:function() {
+ var A = this.checkbox.checked;
+ this.node.attributes.checked = A;
+ this.fireEvent("checkchange", this.node, A)
+},ecClick:function(A) {
+ if (!this.animating && (this.node.hasChildNodes()
+ || this.node.attributes.expandable)) {
+ this.node.toggle()
+ }
+},startDrop:function() {
+ this.dropping = true
+},endDrop:function() {
+ setTimeout(function() {
+ this.dropping = false
+ }.createDelegate(this), 50)
+},expand:function() {
+ this.updateExpandIcon();
+ this.ctNode.style.display = ""
+},focus:function() {
+ if (!this.node.preventHScroll) {
+ try {
+ this.anchor.focus()
+ } catch(C) {
+ }
+ } else {
+ if (!Ext.isIE) {
+ try {
+ var B = this.node.getOwnerTree().getTreeEl().dom;
+ var A = B.scrollLeft;
+ this.anchor.focus();
+ B.scrollLeft = A
+ } catch(C) {
+ }
+ }
+ }
+},toggleCheck:function(B) {
+ var A = this.checkbox;
+ if (A) {
+ A.checked = (B === undefined ? !A.checked : B)
+ }
+},blur:function() {
+ try {
+ this.anchor.blur()
+ } catch(A) {
+ }
+},animExpand:function(B) {
+ var A = Ext.get(this.ctNode);
+ A.stopFx();
+ if (!this.node.hasChildNodes()) {
+ this.updateExpandIcon();
+ this.ctNode.style.display = "";
+ Ext.callback(B);
+ return
+ }
+ this.animating = true;
+ this.updateExpandIcon();
+ A.slideIn("t", {callback:function() {
+ this.animating = false;
+ Ext.callback(B)
+ },scope:this,duration:this.node.ownerTree.duration || 0.25})
+},highlight:function() {
+ var A = this.node.getOwnerTree();
+ Ext.fly(this.wrap).highlight(A.hlColor
+ || "C3DAF9", {endColor:A.hlBaseColor})
+},collapse:function() {
+ this.updateExpandIcon();
+ this.ctNode.style.display = "none"
+},animCollapse:function(B) {
+ var A = Ext.get(this.ctNode);
+ A.enableDisplayMode("block");
+ A.stopFx();
+ this.animating = true;
+ this.updateExpandIcon();
+ A.slideOut("t", {callback:function() {
+ this.animating = false;
+ Ext.callback(B)
+ },scope:this,duration:this.node.ownerTree.duration || 0.25})
+},getContainer:function() {
+ return this.ctNode
+},getEl:function() {
+ return this.wrap
+},appendDDGhost:function(A) {
+ A.appendChild(this.elNode.cloneNode(true))
+},getDDRepairXY:function() {
+ return Ext.lib.Dom.getXY(this.iconNode)
+},onRender:function() {
+ this.render()
+},render:function(B) {
+ var D = this.node,A = D.attributes;
+ var C = D.parentNode ? D.parentNode.ui.getContainer()
+ : D.ownerTree.innerCt.dom;
+ if (!this.rendered) {
+ this.rendered = true;
+ this.renderElements(D, A, C, B);
+ if (A.qtip) {
+ if (this.textNode.setAttributeNS) {
+ this.textNode.setAttributeNS("ext", "qtip", A.qtip);
+ if (A.qtipTitle) {
+ this.textNode.setAttributeNS("ext", "qtitle", A.qtipTitle)
+ }
+ } else {
+ this.textNode.setAttribute("ext:qtip", A.qtip);
+ if (A.qtipTitle) {
+ this.textNode.setAttribute("ext:qtitle", A.qtipTitle)
+ }
+ }
+ } else {
+ if (A.qtipCfg) {
+ A.qtipCfg.target = Ext.id(this.textNode);
+ Ext.QuickTips.register(A.qtipCfg)
+ }
+ }
+ this.initEvents();
+ if (!this.node.expanded) {
+ this.updateExpandIcon(true)
+ }
+ } else {
+ if (B === true) {
+ C.appendChild(this.wrap)
+ }
+ }
+},renderElements:function(D, I, H, J) {
+ this.indentMarkup = D.parentNode ? D.parentNode.ui.getChildIndent() : "";
+ var E = typeof I.checked == "boolean";
+ var B = I.href ? I.href : Ext.isGecko ? "" : "#";
+ var C = ["<li class=\"x-tree-node\"><div ext:tree-node-id=\"",D.id,"\" class=\"x-tree-node-el x-tree-node-leaf x-unselectable ",I.cls,"\" unselectable=\"on\">","<span class=\"x-tree-node-indent\">",this.indentMarkup,"</span>","<img src=\"",this.emptyIcon,"\" class=\"x-tree-ec-icon x-tree-elbow\" />","<img src=\"",I.icon
+ || this.emptyIcon,"\" class=\"x-tree-node-icon",(I.icon
+ ? " x-tree-node-inline-icon" : ""),(I.iconCls ? " " + I.iconCls
+ : ""),"\" unselectable=\"on\" />",E
+ ? ("<input class=\"x-tree-node-cb\" type=\"checkbox\" " + (I.checked
+ ? "checked=\"checked\" />" : "/>"))
+ : "","<a hidefocus=\"on\" class=\"x-tree-node-anchor\" href=\"",B,"\" tabIndex=\"1\" ",I.hrefTarget
+ ? " target=\"" + I.hrefTarget + "\""
+ : "","><span unselectable=\"on\">",D.text,"</span></a></div>","<ul class=\"x-tree-node-ct\" style=\"display:none;\"></ul>","</li>"].join("");
+ var A;
+ if (J !== true && D.nextSibling && (A = D.nextSibling.ui.getEl())) {
+ this.wrap = Ext.DomHelper.insertHtml("beforeBegin", A, C)
+ } else {
+ this.wrap = Ext.DomHelper.insertHtml("beforeEnd", H, C)
+ }
+ this.elNode = this.wrap.childNodes[0];
+ this.ctNode = this.wrap.childNodes[1];
+ var G = this.elNode.childNodes;
+ this.indentNode = G[0];
+ this.ecNode = G[1];
+ this.iconNode = G[2];
+ var F = 3;
+ if (E) {
+ this.checkbox = G[3];
+ F++
+ }
+ this.anchor = G[F];
+ this.textNode = G[F].firstChild
+},getAnchor:function() {
+ return this.anchor
+},getTextEl:function() {
+ return this.textNode
+},getIconEl:function() {
+ return this.iconNode
+},isChecked:function() {
+ return this.checkbox ? this.checkbox.checked : false
+},updateExpandIcon:function() {
+ if (this.rendered) {
+ var F = this.node,D,C;
+ var A = F.isLast() ? "x-tree-elbow-end" : "x-tree-elbow";
+ var E = F.hasChildNodes();
+ if (E || F.attributes.expandable) {
+ if (F.expanded) {
+ A += "-minus";
+ D = "x-tree-node-collapsed";
+ C = "x-tree-node-expanded"
+ } else {
+ A += "-plus";
+ D = "x-tree-node-expanded";
+ C = "x-tree-node-collapsed"
+ }
+ if (this.wasLeaf) {
+ this.removeClass("x-tree-node-leaf");
+ this.wasLeaf = false
+ }
+ if (this.c1 != D || this.c2 != C) {
+ Ext.fly(this.elNode).replaceClass(D, C);
+ this.c1 = D;
+ this.c2 = C
+ }
+ } else {
+ if (!this.wasLeaf) {
+ Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-leaf");
+ delete this.c1;
+ delete this.c2;
+ this.wasLeaf = true
+ }
+ }
+ var B = "x-tree-ec-icon " + A;
+ if (this.ecc != B) {
+ this.ecNode.className = B;
+ this.ecc = B
+ }
+ }
+},getChildIndent:function() {
+ if (!this.childIndent) {
+ var A = [];
+ var B = this.node;
+ while (B) {
+ if (!B.isRoot || (B.isRoot && B.ownerTree.rootVisible)) {
+ if (!B.isLast()) {
+ A.unshift("<img src=\"" + this.emptyIcon
+ + "\" class=\"x-tree-elbow-line\" />")
+ } else {
+ A.unshift("<img src=\"" + this.emptyIcon
+ + "\" class=\"x-tree-icon\" />")
+ }
+ }
+ B = B.parentNode
+ }
+ this.childIndent = A.join("")
+ }
+ return this.childIndent
+},renderIndent:function() {
+ if (this.rendered) {
+ var A = "";
+ var B = this.node.parentNode;
+ if (B) {
+ A = B.ui.getChildIndent()
+ }
+ if (this.indentMarkup != A) {
+ this.indentNode.innerHTML = A;
+ this.indentMarkup = A
+ }
+ this.updateExpandIcon()
+ }
+},destroy:function() {
+ if (this.elNode) {
+ Ext.dd.Registry.unregister(this.elNode.id)
+ }
+ delete this.elNode;
+ delete this.ctNode;
+ delete this.indentNode;
+ delete this.ecNode;
+ delete this.iconNode;
+ delete this.checkbox;
+ delete this.anchor;
+ delete this.textNode;
+ Ext.removeNode(this.ctNode)
+}};
+Ext.tree.RootTreeNodeUI = Ext.extend(Ext.tree.TreeNodeUI, {render:function() {
+ if (!this.rendered) {
+ var A = this.node.ownerTree.innerCt.dom;
+ this.node.expanded = true;
+ A.innerHTML = "<div class=\"x-tree-root-node\"></div>";
+ this.wrap = this.ctNode = A.firstChild
+ }
+},collapse:Ext.emptyFn,expand:Ext.emptyFn});
+Ext.tree.TreeLoader = function(A) {
+ this.baseParams = {};
+ this.requestMethod = "POST";
+ Ext.apply(this, A);
+ this.addEvents("beforeload", "load", "loadexception");
+ Ext.tree.TreeLoader.superclass.constructor.call(this)
+};
+Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, {uiProviders:{},clearOnLoad:true,load:function(
+ A, B) {
+ if (this.clearOnLoad) {
+ while (A.firstChild) {
+ A.removeChild(A.firstChild)
+ }
+ }
+ if (this.doPreload(A)) {
+ if (typeof B == "function") {
+ B()
+ }
+ } else {
+ if (this.dataUrl || this.url) {
+ this.requestData(A, B)
+ }
+ }
+},doPreload:function(D) {
+ if (D.attributes.children) {
+ if (D.childNodes.length < 1) {
+ var C = D.attributes.children;
+ D.beginUpdate();
+ for (var B = 0,A = C.length; B < A; B++) {
+ var E = D.appendChild(this.createNode(C[B]));
+ if (this.preloadChildren) {
+ this.doPreload(E)
+ }
+ }
+ D.endUpdate()
+ }
+ return true
+ } else {
+ return false
+ }
+},getParams:function(D) {
+ var A = [],C = this.baseParams;
+ for (var B in C) {
+ if (typeof C[B] != "function") {
+ A.push(encodeURIComponent(B), "=", encodeURIComponent(C[B]), "&")
+ }
+ }
+ A.push("node=", encodeURIComponent(D.id));
+ return A.join("")
+},requestData:function(A, B) {
+ if (this.fireEvent("beforeload", this, A, B) !== false) {
+ this.transId
+ = Ext.Ajax.request({method:this.requestMethod,url:this.dataUrl
+ || this.url,success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:B,node:A},params:this.getParams(A)})
+ } else {
+ if (typeof B == "function") {
+ B()
+ }
+ }
+},isLoading:function() {
+ return this.transId ? true : false
+},abort:function() {
+ if (this.isLoading()) {
+ Ext.Ajax.abort(this.transId)
+ }
+},createNode:function(attr) {
+ if (this.baseAttrs) {
+ Ext.applyIf(attr, this.baseAttrs)
+ }
+ if (this.applyLoader !== false) {
+ attr.loader = this
+ }
+ if (typeof attr.uiProvider == "string") {
+ attr.uiProvider = this.uiProviders[attr.uiProvider]
+ || eval(attr.uiProvider)
+ }
+ return(attr.leaf ? new Ext.tree.TreeNode(attr)
+ : new Ext.tree.AsyncTreeNode(attr))
+},processResponse:function(response, node, callback) {
+ var json = response.responseText;
+ try {
+ var o = eval("(" + json + ")");
+ node.beginUpdate();
+ for (var i = 0,len = o.length; i < len; i++) {
+ var n = this.createNode(o[i]);
+ if (n) {
+ node.appendChild(n)
+ }
+ }
+ node.endUpdate();
+ if (typeof callback == "function") {
+ callback(this, node)
+ }
+ } catch(e) {
+ this.handleFailure(response)
+ }
+},handleResponse:function(B) {
+ this.transId = false;
+ var A = B.argument;
+ this.processResponse(B, A.node, A.callback);
+ this.fireEvent("load", this, A.node, B)
+},handleFailure:function(B) {
+ this.transId = false;
+ var A = B.argument;
+ this.fireEvent("loadexception", this, A.node, B);
+ if (typeof A.callback == "function") {
+ A.callback(this, A.node)
+ }
+}});
+Ext.tree.TreeFilter = function(A, B) {
+ this.tree = A;
+ this.filtered = {};
+ Ext.apply(this, B)
+};
+Ext.tree.TreeFilter.prototype
+ = {clearBlank:false,reverse:false,autoClear:false,remove:false,filter:function(
+ D, A, B) {
+ A = A || "text";
+ var C;
+ if (typeof D == "string") {
+ var E = D.length;
+ if (E == 0 && this.clearBlank) {
+ this.clear();
+ return
+ }
+ D = D.toLowerCase();
+ C = function(F) {
+ return F.attributes[A].substr(0, E).toLowerCase() == D
+ }
+ } else {
+ if (D.exec) {
+ C = function(F) {
+ return D.test(F.attributes[A])
+ }
+ } else {
+ throw"Illegal filter type, must be string or regex"
+ }
+ }
+ this.filterBy(C, null, B)
+},filterBy:function(D, C, B) {
+ B = B || this.tree.root;
+ if (this.autoClear) {
+ this.clear()
+ }
+ var A = this.filtered,H = this.reverse;
+ var E = function(J) {
+ if (J == B) {
+ return true
+ }
+ if (A[J.id]) {
+ return false
+ }
+ var I = D.call(C || J, J);
+ if (!I || H) {
+ A[J.id] = J;
+ J.ui.hide();
+ return false
+ }
+ return true
+ };
+ B.cascade(E);
+ if (this.remove) {
+ for (var G in A) {
+ if (typeof G != "function") {
+ var F = A[G];
+ if (F && F.parentNode) {
+ F.parentNode.removeChild(F)
+ }
+ }
+ }
+ }
+},clear:function() {
+ var B = this.tree;
+ var A = this.filtered;
+ for (var D in A) {
+ if (typeof D != "function") {
+ var C = A[D];
+ if (C) {
+ C.ui.show()
+ }
+ }
+ }
+ this.filtered = {}
+}};
+Ext.tree.TreeSorter = function(B, C) {
+ Ext.apply(this, C);
+ B.on("beforechildrenrendered", this.doSort, this);
+ B.on("append", this.updateSort, this);
+ B.on("insert", this.updateSort, this);
+ B.on("textchange", this.updateSortParent, this);
+ var E = this.dir && this.dir.toLowerCase() == "desc";
+ var F = this.property || "text";
+ var G = this.sortType;
+ var A = this.folderSort;
+ var D = this.caseSensitive === true;
+ var H = this.leafAttr || "leaf";
+ this.sortFn = function(J, I) {
+ if (A) {
+ if (J.attributes[H] && !I.attributes[H]) {
+ return 1
+ }
+ if (!J.attributes[H] && I.attributes[H]) {
+ return -1
+ }
+ }
+ var L = G ? G(J) : (D ? J.attributes[F]
+ : J.attributes[F].toUpperCase());
+ var K = G ? G(I) : (D ? I.attributes[F]
+ : I.attributes[F].toUpperCase());
+ if (L < K) {
+ return E ? +1 : -1
+ } else {
+ if (L > K) {
+ return E ? -1 : +1
+ } else {
+ return 0
+ }
+ }
+ }
+};
+Ext.tree.TreeSorter.prototype = {doSort:function(A) {
+ A.sort(this.sortFn)
+},compareNodes:function(B, A) {
+ return(B.text.toUpperCase() > A.text.toUpperCase() ? 1 : -1)
+},updateSort:function(A, B) {
+ if (B.childrenRendered) {
+ this.doSort.defer(1, this, [B])
+ }
+},updateSortParent:function(A) {
+ var B = A.parentNode;
+ if (B && B.childrenRendered) {
+ this.doSort.defer(1, this, [B])
+ }
+}};
+if (Ext.dd.DropZone) {
+ Ext.tree.TreeDropZone = function(A, B) {
+ this.allowParentInsert = false;
+ this.allowContainerDrop = false;
+ this.appendOnly = false;
+ Ext.tree.TreeDropZone.superclass.constructor.call(this, A.innerCt, B);
+ this.tree = A;
+ this.dragOverData = {};
+ this.lastInsertClass = "x-tree-no-status"
+ };
+ Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, {ddGroup:"TreeDD",expandDelay:1000,expandNode:function(
+ A) {
+ if (A.hasChildNodes() && !A.isExpanded()) {
+ A.expand(false, null, this.triggerCacheRefresh.createDelegate(this))
+ }
+ },queueExpand:function(A) {
+ this.expandProcId = this.expandNode.defer(this.expandDelay, this, [A])
+ },cancelExpand:function() {
+ if (this.expandProcId) {
+ clearTimeout(this.expandProcId);
+ this.expandProcId = false
+ }
+ },isValidDropPoint:function(A, I, G, D, C) {
+ if (!A || !C) {
+ return false
+ }
+ var E = A.node;
+ var F = C.node;
+ if (!(E && E.isTarget && I)) {
+ return false
+ }
+ if (I == "append" && E.allowChildren === false) {
+ return false
+ }
+ if ((I == "above" || I == "below") && (E.parentNode
+ && E.parentNode.allowChildren === false)) {
+ return false
+ }
+ if (F && (E == F || F.contains(E))) {
+ return false
+ }
+ var B = this.dragOverData;
+ B.tree = this.tree;
+ B.target = E;
+ B.data = C;
+ B.point = I;
+ B.source = G;
+ B.rawEvent = D;
+ B.dropNode = F;
+ B.cancel = false;
+ var H = this.tree.fireEvent("nodedragover", B);
+ return B.cancel === false && H !== false
+ },getDropPoint:function(E, D, I) {
+ var J = D.node;
+ if (J.isRoot) {
+ return J.allowChildren !== false ? "append" : false
+ }
+ var B = D.ddel;
+ var K = Ext.lib.Dom.getY(B),G = K + B.offsetHeight;
+ var F = Ext.lib.Event.getPageY(E);
+ var H = J.allowChildren === false || J.isLeaf();
+ if (this.appendOnly || J.parentNode.allowChildren === false) {
+ return H ? false : "append"
+ }
+ var C = false;
+ if (!this.allowParentInsert) {
+ C = J.hasChildNodes() && J.isExpanded()
+ }
+ var A = (G - K) / (H ? 2 : 3);
+ if (F >= K && F < (K + A)) {
+ return"above"
+ } else {
+ if (!C && (H || F >= G - A && F <= G)) {
+ return"below"
+ } else {
+ return"append"
+ }
+ }
+ },onNodeEnter:function(D, A, C, B) {
+ this.cancelExpand()
+ },onNodeOver:function(B, G, F, E) {
+ var I = this.getDropPoint(F, B, G);
+ var C = B.node;
+ if (!this.expandProcId && I == "append" && C.hasChildNodes()
+ && !B.node.isExpanded()) {
+ this.queueExpand(C)
+ } else {
+ if (I != "append") {
+ this.cancelExpand()
+ }
+ }
+ var D = this.dropNotAllowed;
+ if (this.isValidDropPoint(B, I, G, F, E)) {
+ if (I) {
+ var A = B.ddel;
+ var H;
+ if (I == "above") {
+ D = B.node.isFirst() ? "x-tree-drop-ok-above"
+ : "x-tree-drop-ok-between";
+ H = "x-tree-drag-insert-above"
+ } else {
+ if (I == "below") {
+ D = B.node.isLast() ? "x-tree-drop-ok-below"
+ : "x-tree-drop-ok-between";
+ H = "x-tree-drag-insert-below"
+ } else {
+ D = "x-tree-drop-ok-append";
+ H = "x-tree-drag-append"
+ }
+ }
+ if (this.lastInsertClass != H) {
+ Ext.fly(A).replaceClass(this.lastInsertClass, H);
+ this.lastInsertClass = H
+ }
+ }
+ }
+ return D
+ },onNodeOut:function(D, A, C, B) {
+ this.cancelExpand();
+ this.removeDropIndicators(D)
+ },onNodeDrop:function(C, I, E, D) {
+ var H = this.getDropPoint(E, C, I);
+ var F = C.node;
+ F.ui.startDrop();
+ if (!this.isValidDropPoint(C, H, I, E, D)) {
+ F.ui.endDrop();
+ return false
+ }
+ var G = D.node || (I.getTreeNode ? I.getTreeNode(D, F, H, E) : null);
+ var B = {tree:this.tree,target:F,data:D,point:H,source:I,rawEvent:E,dropNode:G,cancel:!G,dropStatus:false};
+ var A = this.tree.fireEvent("beforenodedrop", B);
+ if (A === false || B.cancel === true || !B.dropNode) {
+ F.ui.endDrop();
+ return B.dropStatus
+ }
+ F = B.target;
+ if (H == "append" && !F.isExpanded()) {
+ F.expand(false, null, function() {
+ this.completeDrop(B)
+ }.createDelegate(this))
+ } else {
+ this.completeDrop(B)
+ }
+ return true
+ },completeDrop:function(G) {
+ var D = G.dropNode,E = G.point,C = G.target;
+ if (!Ext.isArray(D)) {
+ D = [D]
+ }
+ var F;
+ for (var B = 0,A = D.length; B < A; B++) {
+ F = D[B];
+ if (E == "above") {
+ C.parentNode.insertBefore(F, C)
+ } else {
+ if (E == "below") {
+ C.parentNode.insertBefore(F, C.nextSibling)
+ } else {
+ C.appendChild(F)
+ }
+ }
+ }
+ F.ui.focus();
+ if (this.tree.hlDrop) {
+ F.ui.highlight()
+ }
+ C.ui.endDrop();
+ this.tree.fireEvent("nodedrop", G)
+ },afterNodeMoved:function(A, C, E, D, B) {
+ if (this.tree.hlDrop) {
+ B.ui.focus();
+ B.ui.highlight()
+ }
+ this.tree.fireEvent("nodedrop", this.tree, D, C, A, E)
+ },getTree:function() {
+ return this.tree
+ },removeDropIndicators:function(B) {
+ if (B && B.ddel) {
+ var A = B.ddel;
+ Ext.fly(A).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);
+ this.lastInsertClass = "_noclass"
+ }
+ },beforeDragDrop:function(B, A, C) {
+ this.cancelExpand();
+ return true
+ },afterRepair:function(A) {
+ if (A && Ext.enableFx) {
+ A.node.ui.highlight()
+ }
+ this.hideProxy()
+ }})
+}
+;
+if (Ext.dd.DragZone) {
+ Ext.tree.TreeDragZone = function(A, B) {
+ Ext.tree.TreeDragZone.superclass.constructor.call(this, A.getTreeEl(), B);
+ this.tree = A
+ };
+ Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, {ddGroup:"TreeDD",onBeforeDrag:function(
+ A, B) {
+ var C = A.node;
+ return C && C.draggable && !C.disabled
+ },onInitDrag:function(B) {
+ var A = this.dragData;
+ this.tree.getSelectionModel().select(A.node);
+ this.tree.eventModel.disable();
+ this.proxy.update("");
+ A.node.ui.appendDDGhost(this.proxy.ghost.dom);
+ this.tree.fireEvent("startdrag", this.tree, A.node, B)
+ },getRepairXY:function(B, A) {
+ return A.node.ui.getDDRepairXY()
+ },onEndDrag:function(A, B) {
+ this.tree.eventModel.enable.defer(100, this.tree.eventModel);
+ this.tree.fireEvent("enddrag", this.tree, A.node, B)
+ },onValidDrop:function(A, B, C) {
+ this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, A, B);
+ this.hideProxy()
+ },beforeInvalidDrop:function(A, C) {
+ var B = this.tree.getSelectionModel();
+ B.clearSelections();
+ B.select(this.dragData.node)
+ }})
+}
+;
+Ext.tree.TreeEditor = function(A, B) {
+ B = B || {};
+ var C = B.events ? B : new Ext.form.TextField(B);
+ Ext.tree.TreeEditor.superclass.constructor.call(this, C);
+ this.tree = A;
+ if (!A.rendered) {
+ A.on("render", this.initEditor, this)
+ } else {
+ this.initEditor(A)
+ }
+};
+Ext.extend(Ext.tree.TreeEditor, Ext.Editor, {alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,editDelay:350,initEditor:function(
+ A) {
+ A.on("beforeclick", this.beforeNodeClick, this);
+ A.on("dblclick", this.onNodeDblClick, this);
+ this.on("complete", this.updateNode, this);
+ this.on("beforestartedit", this.fitToTree, this);
+ this.on("startedit", this.bindScroll, this, {delay:10});
+ this.on("specialkey", this.onSpecialKey, this)
+},fitToTree:function(B, C) {
+ var E = this.tree.getTreeEl().dom,D = C.dom;
+ if (E.scrollLeft > D.offsetLeft) {
+ E.scrollLeft = D.offsetLeft
+ }
+ var A = Math.min(this.maxWidth, (E.clientWidth > 20 ? E.clientWidth
+ : E.offsetWidth) - Math.max(0, D.offsetLeft - E.scrollLeft) - 5);
+ this.setSize(A, "")
+},triggerEdit:function(A, B) {
+ this.completeEdit();
+ if (A.attributes.editable !== false) {
+ this.editNode = A;
+ this.autoEditTimer
+ = this.startEdit.defer(this.editDelay, this, [A.ui.textNode,A.text]);
+ return false
+ }
+},bindScroll:function() {
+ this.tree.getTreeEl().on("scroll", this.cancelEdit, this)
+},beforeNodeClick:function(A, B) {
+ clearTimeout(this.autoEditTimer);
+ if (this.tree.getSelectionModel().isSelected(A)) {
+ B.stopEvent();
+ return this.triggerEdit(A)
+ }
+},onNodeDblClick:function(A, B) {
+ clearTimeout(this.autoEditTimer)
+},updateNode:function(A, B) {
+ this.tree.getTreeEl().un("scroll", this.cancelEdit, this);
+ this.editNode.setText(B)
+},onHide:function() {
+ Ext.tree.TreeEditor.superclass.onHide.call(this);
+ if (this.editNode) {
+ this.editNode.ui.focus.defer(50, this.editNode.ui)
+ }
+},onSpecialKey:function(C, B) {
+ var A = B.getKey();
+ if (A == B.ESC) {
+ B.stopEvent();
+ this.cancelEdit()
+ } else {
+ if (A == B.ENTER && !B.hasModifier()) {
+ B.stopEvent();
+ this.completeEdit()
+ }
+ }
+}});
+Ext.menu.Menu = function(A) {
+ if (Ext.isArray(A)) {
+ A = {items:A}
+ }
+ Ext.apply(this, A);
+ this.id = this.id || Ext.id();
+ this.addEvents("beforeshow", "beforehide", "show", "hide", "click", "mouseover", "mouseout", "itemclick");
+ Ext.menu.MenuMgr.register(this);
+ Ext.menu.Menu.superclass.constructor.call(this);
+ var B = this.items;
+ this.items = new Ext.util.MixedCollection();
+ if (B) {
+ this.add.apply(this, B)
+ }
+};
+Ext.extend(Ext.menu.Menu, Ext.util.Observable, {minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,hidden:true,createEl:function() {
+ return new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl
+ || document.body,zindex:15000})
+},render:function() {
+ if (this.el) {
+ return
+ }
+ var B = this.el = this.createEl();
+ if (!this.keyNav) {
+ this.keyNav = new Ext.menu.MenuNav(this)
+ }
+ if (this.plain) {
+ B.addClass("x-menu-plain")
+ }
+ if (this.cls) {
+ B.addClass(this.cls)
+ }
+ this.focusEl
+ = B.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});
+ var A = B.createChild({tag:"ul",cls:"x-menu-list"});
+ A.on("click", this.onClick, this);
+ A.on("mouseover", this.onMouseOver, this);
+ A.on("mouseout", this.onMouseOut, this);
+ this.items.each(function(D) {
+ var C = document.createElement("li");
+ C.className = "x-menu-list-item";
+ A.dom.appendChild(C);
+ D.render(C, this)
+ }, this);
+ this.ul = A;
+ this.autoWidth()
+},autoWidth:function() {
+ var D = this.el,C = this.ul;
+ if (!D) {
+ return
+ }
+ var A = this.width;
+ if (A) {
+ D.setWidth(A)
+ } else {
+ if (Ext.isIE) {
+ D.setWidth(this.minWidth);
+ var B = D.dom.offsetWidth;
+ D.setWidth(C.getWidth() + D.getFrameWidth("lr"))
+ }
+ }
+},delayAutoWidth:function() {
+ if (this.el) {
+ if (!this.awTask) {
+ this.awTask = new Ext.util.DelayedTask(this.autoWidth, this)
+ }
+ this.awTask.delay(20)
+ }
+},findTargetItem:function(B) {
+ var A = B.getTarget(".x-menu-list-item", this.ul, true);
+ if (A && A.menuItemId) {
+ return this.items.get(A.menuItemId)
+ }
+},onClick:function(B) {
+ var A;
+ if (A = this.findTargetItem(B)) {
+ A.onClick(B);
+ this.fireEvent("click", this, A, B)
+ }
+},setActiveItem:function(A, B) {
+ if (A != this.activeItem) {
+ if (this.activeItem) {
+ this.activeItem.deactivate()
+ }
+ this.activeItem = A;
+ A.activate(B)
+ } else {
+ if (B) {
+ A.expandMenu()
+ }
+ }
+},tryActivate:function(F, E) {
+ var B = this.items;
+ for (var C = F,A = B.length; C >= 0 && C < A; C += E) {
+ var D = B.get(C);
+ if (!D.disabled && D.canActivate) {
+ this.setActiveItem(D, false);
+ return D
+ }
+ }
+ return false
+},onMouseOver:function(B) {
+ var A;
+ if (A = this.findTargetItem(B)) {
+ if (A.canActivate && !A.disabled) {
+ this.setActiveItem(A, true)
+ }
+ }
+ this.fireEvent("mouseover", this, B, A)
+},onMouseOut:function(B) {
+ var A;
+ if (A = this.findTargetItem(B)) {
+ if (A == this.activeItem && A.shouldDeactivate(B)) {
+ this.activeItem.deactivate();
+ delete this.activeItem
+ }
+ }
+ this.fireEvent("mouseout", this, B, A)
+},isVisible:function() {
+ return this.el && !this.hidden
+},show:function(B, C, A) {
+ this.parentMenu = A;
+ if (!this.el) {
+ this.render()
+ }
+ this.fireEvent("beforeshow", this);
+ this.showAt(this.el.getAlignToXY(B, C || this.defaultAlign), A, false)
+},showAt:function(C, B, A) {
+ this.parentMenu = B;
+ if (!this.el) {
+ this.render()
+ }
+ if (A !== false) {
+ this.fireEvent("beforeshow", this);
+ C = this.el.adjustForConstraints(C)
+ }
+ this.el.setXY(C);
+ this.el.show();
+ this.hidden = false;
+ this.focus();
+ this.fireEvent("show", this)
+},focus:function() {
+ if (!this.hidden) {
+ this.doFocus.defer(50, this)
+ }
+},doFocus:function() {
+ if (!this.hidden) {
+ this.focusEl.focus()
+ }
+},hide:function(A) {
+ if (this.el && this.isVisible()) {
+ this.fireEvent("beforehide", this);
+ if (this.activeItem) {
+ this.activeItem.deactivate();
+ this.activeItem = null
+ }
+ this.el.hide();
+ this.hidden = true;
+ this.fireEvent("hide", this)
+ }
+ if (A === true && this.parentMenu) {
+ this.parentMenu.hide(true)
+ }
+},add:function() {
+ var B = arguments,A = B.length,E;
+ for (var C = 0; C < A; C++) {
+ var D = B[C];
+ if (D.render) {
+ E = this.addItem(D)
+ } else {
+ if (typeof D == "string") {
+ if (D == "separator" || D == "-") {
+ E = this.addSeparator()
+ } else {
+ E = this.addText(D)
+ }
+ } else {
+ if (D.tagName || D.el) {
+ E = this.addElement(D)
+ } else {
+ if (typeof D == "object") {
+ Ext.applyIf(D, this.defaults);
+ E = this.addMenuItem(D)
+ }
+ }
+ }
+ }
+ }
+ return E
+},getEl:function() {
+ if (!this.el) {
+ this.render()
+ }
+ return this.el
+},addSeparator:function() {
+ return this.addItem(new Ext.menu.Separator())
+},addElement:function(A) {
+ return this.addItem(new Ext.menu.BaseItem(A))
+},addItem:function(B) {
+ this.items.add(B);
+ if (this.ul) {
+ var A = document.createElement("li");
+ A.className = "x-menu-list-item";
+ this.ul.dom.appendChild(A);
+ B.render(A, this);
+ this.delayAutoWidth()
+ }
+ return B
+},addMenuItem:function(A) {
+ if (!(A instanceof Ext.menu.Item)) {
+ if (typeof A.checked == "boolean") {
+ A = new Ext.menu.CheckItem(A)
+ } else {
+ A = new Ext.menu.Item(A)
+ }
+ }
+ return this.addItem(A)
+},addText:function(A) {
+ return this.addItem(new Ext.menu.TextItem(A))
+},insert:function(B, C) {
+ this.items.insert(B, C);
+ if (this.ul) {
+ var A = document.createElement("li");
+ A.className = "x-menu-list-item";
+ this.ul.dom.insertBefore(A, this.ul.dom.childNodes[B]);
+ C.render(A, this);
+ this.delayAutoWidth()
+ }
+ return C
+},remove:function(A) {
+ this.items.removeKey(A.id);
+ A.destroy()
+},removeAll:function() {
+ var A;
+ while (A = this.items.first()) {
+ this.remove(A)
+ }
+},destroy:function() {
+ this.beforeDestroy();
+ Ext.menu.MenuMgr.unregister(this);
+ if (this.keyNav) {
+ this.keyNav.disable()
+ }
+ this.removeAll();
+ if (this.ul) {
+ this.ul.removeAllListeners()
+ }
+ if (this.el) {
+ this.el.destroy()
+ }
+},beforeDestroy:Ext.emptyFn});
+Ext.menu.MenuNav = function(A) {
+ Ext.menu.MenuNav.superclass.constructor.call(this, A.el);
+ this.scope = this.menu = A
+};
+Ext.extend(Ext.menu.MenuNav, Ext.KeyNav, {doRelay:function(C, B) {
+ var A = C.getKey();
+ if (!this.menu.activeItem && C.isNavKeyPress() && A != C.SPACE && A
+ != C.RETURN) {
+ this.menu.tryActivate(0, 1);
+ return false
+ }
+ return B.call(this.scope || this, C, this.menu)
+},up:function(B, A) {
+ if (!A.tryActivate(A.items.indexOf(A.activeItem) - 1, -1)) {
+ A.tryActivate(A.items.length - 1, -1)
+ }
+},down:function(B, A) {
+ if (!A.tryActivate(A.items.indexOf(A.activeItem) + 1, 1)) {
+ A.tryActivate(0, 1)
+ }
+},right:function(B, A) {
+ if (A.activeItem) {
+ A.activeItem.expandMenu(true)
+ }
+},left:function(B, A) {
+ A.hide();
+ if (A.parentMenu && A.parentMenu.activeItem) {
+ A.parentMenu.activeItem.activate()
+ }
+},enter:function(B, A) {
+ if (A.activeItem) {
+ B.stopPropagation();
+ A.activeItem.onClick(B);
+ A.fireEvent("click", this, A.activeItem);
+ return true
+ }
+}});
+Ext.menu.MenuMgr = function() {
+ var F,D,C = {},A = false,K = new Date();
+
+ function M() {
+ F = {};
+ D = new Ext.util.MixedCollection();
+ Ext.getDoc().addKeyListener(27, function() {
+ if (D.length > 0) {
+ H()
+ }
+ })
+ }
+
+ function H() {
+ if (D && D.length > 0) {
+ var N = D.clone();
+ N.each(function(O) {
+ O.hide()
+ })
+ }
+ }
+
+ function E(N) {
+ D.remove(N);
+ if (D.length < 1) {
+ Ext.getDoc().un("mousedown", L);
+ A = false
+ }
+ }
+
+ function J(N) {
+ var O = D.last();
+ K = new Date();
+ D.add(N);
+ if (!A) {
+ Ext.getDoc().on("mousedown", L);
+ A = true
+ }
+ if (N.parentMenu) {
+ N.getEl().setZIndex(parseInt(N.parentMenu.getEl().getStyle("z-index"), 10)
+ + 3);
+ N.parentMenu.activeChild = N
+ } else {
+ if (O && O.isVisible()) {
+ N.getEl().setZIndex(parseInt(O.getEl().getStyle("z-index"), 10)
+ + 3)
+ }
+ }
+ }
+
+ function B(N) {
+ if (N.activeChild) {
+ N.activeChild.hide()
+ }
+ if (N.autoHideTimer) {
+ clearTimeout(N.autoHideTimer);
+ delete N.autoHideTimer
+ }
+ }
+
+ function G(N) {
+ var O = N.parentMenu;
+ if (!O && !N.allowOtherMenus) {
+ H()
+ } else {
+ if (O && O.activeChild) {
+ O.activeChild.hide()
+ }
+ }
+ }
+
+ function L(N) {
+ if (K.getElapsed() > 50 && D.length > 0 && !N.getTarget(".x-menu")) {
+ H()
+ }
+ }
+
+ function I(O, R) {
+ if (R) {
+ var Q = C[O.group];
+ for (var P = 0,N = Q.length; P < N; P++) {
+ if (Q[P] != O) {
+ Q[P].setChecked(false)
+ }
+ }
+ }
+ }
+
+ return{hideAll:function() {
+ H()
+ },register:function(O) {
+ if (!F) {
+ M()
+ }
+ F[O.id] = O;
+ O.on("beforehide", B);
+ O.on("hide", E);
+ O.on("beforeshow", G);
+ O.on("show", J);
+ var N = O.group;
+ if (N && O.events["checkchange"]) {
+ if (!C[N]) {
+ C[N] = []
+ }
+ C[N].push(O);
+ O.on("checkchange", onCheck)
+ }
+ },get:function(N) {
+ if (typeof N == "string") {
+ if (!F) {
+ return null
+ }
+ return F[N]
+ } else {
+ if (N.events) {
+ return N
+ } else {
+ if (typeof N.length == "number") {
+ return new Ext.menu.Menu({items:N})
+ } else {
+ return new Ext.menu.Menu(N)
+ }
+ }
+ }
+ },unregister:function(O) {
+ delete F[O.id];
+ O.un("beforehide", B);
+ O.un("hide", E);
+ O.un("beforeshow", G);
+ O.un("show", J);
+ var N = O.group;
+ if (N && O.events["checkchange"]) {
+ C[N].remove(O);
+ O.un("checkchange", onCheck)
+ }
+ },registerCheckable:function(N) {
+ var O = N.group;
+ if (O) {
+ if (!C[O]) {
+ C[O] = []
+ }
+ C[O].push(N);
+ N.on("beforecheckchange", I)
+ }
+ },unregisterCheckable:function(N) {
+ var O = N.group;
+ if (O) {
+ C[O].remove(N);
+ N.un("beforecheckchange", I)
+ }
+ },getCheckedItem:function(P) {
+ var Q = C[P];
+ if (Q) {
+ for (var O = 0,N = Q.length; O < N; O++) {
+ if (Q[O].checked) {
+ return Q[O]
+ }
+ }
+ }
+ return null
+ },setCheckedItem:function(P, R) {
+ var Q = C[P];
+ if (Q) {
+ for (var O = 0,N = Q.length; O < N; O++) {
+ if (Q[O].id == R) {
+ Q[O].setChecked(true)
+ }
+ }
+ }
+ return null
+ }}
+}();
+Ext.menu.BaseItem = function(A) {
+ Ext.menu.BaseItem.superclass.constructor.call(this, A);
+ this.addEvents("click", "activate", "deactivate");
+ if (this.handler) {
+ this.on("click", this.handler, this.scope)
+ }
+};
+Ext.extend(Ext.menu.BaseItem, Ext.Component, {canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,hideDelay:100,ctype:"Ext.menu.BaseItem",actionMode:"container",render:function(
+ A, B) {
+ this.parentMenu = B;
+ Ext.menu.BaseItem.superclass.render.call(this, A);
+ this.container.menuItemId = this.id
+},onRender:function(B, A) {
+ this.el = Ext.get(this.el);
+ B.dom.appendChild(this.el.dom)
+},setHandler:function(B, A) {
+ if (this.handler) {
+ this.un("click", this.handler, this.scope)
+ }
+ this.on("click", this.handler = B, this.scope = A)
+},onClick:function(A) {
+ if (!this.disabled && this.fireEvent("click", this, A) !== false
+ && this.parentMenu.fireEvent("itemclick", this, A) !== false) {
+ this.handleClick(A)
+ } else {
+ A.stopEvent()
+ }
+},activate:function() {
+ if (this.disabled) {
+ return false
+ }
+ var A = this.container;
+ A.addClass(this.activeClass);
+ this.region = A.getRegion().adjust(2, 2, -2, -2);
+ this.fireEvent("activate", this);
+ return true
+},deactivate:function() {
+ this.container.removeClass(this.activeClass);
+ this.fireEvent("deactivate", this)
+},shouldDeactivate:function(A) {
+ return !this.region || !this.region.contains(A.getPoint())
+},handleClick:function(A) {
+ if (this.hideOnClick) {
+ this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true])
+ }
+},expandMenu:function(A) {
+},hideMenu:function() {
+}});
+Ext.menu.TextItem = function(A) {
+ this.text = A;
+ Ext.menu.TextItem.superclass.constructor.call(this)
+};
+Ext.extend(Ext.menu.TextItem, Ext.menu.BaseItem, {hideOnClick:false,itemCls:"x-menu-text",onRender:function() {
+ var A = document.createElement("span");
+ A.className = this.itemCls;
+ A.innerHTML = this.text;
+ this.el = A;
+ Ext.menu.TextItem.superclass.onRender.apply(this, arguments)
+}});
+Ext.menu.Separator = function(A) {
+ Ext.menu.Separator.superclass.constructor.call(this, A)
+};
+Ext.extend(Ext.menu.Separator, Ext.menu.BaseItem, {itemCls:"x-menu-sep",hideOnClick:false,onRender:function(
+ A) {
+ var B = document.createElement("span");
+ B.className = this.itemCls;
+ B.innerHTML = "&#160;";
+ this.el = B;
+ A.addClass("x-menu-sep-li");
+ Ext.menu.Separator.superclass.onRender.apply(this, arguments)
+}});
+Ext.menu.Item = function(A) {
+ Ext.menu.Item.superclass.constructor.call(this, A);
+ if (this.menu) {
+ this.menu = Ext.menu.MenuMgr.get(this.menu)
+ }
+};
+Ext.extend(Ext.menu.Item, Ext.menu.BaseItem, {itemCls:"x-menu-item",canActivate:true,showDelay:200,hideDelay:200,ctype:"Ext.menu.Item",onRender:function(
+ B, A) {
+ var C = document.createElement("a");
+ C.hideFocus = true;
+ C.unselectable = "on";
+ C.href = this.href || "#";
+ if (this.hrefTarget) {
+ C.target = this.hrefTarget
+ }
+ C.className = this.itemCls + (this.menu ? " x-menu-item-arrow" : "")
+ + (this.cls ? " " + this.cls : "");
+ C.innerHTML
+ = String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\" />{1}", this.icon
+ || Ext.BLANK_IMAGE_URL, this.itemText || this.text, this.iconCls
+ || "");
+ this.el = C;
+ Ext.menu.Item.superclass.onRender.call(this, B, A)
+},setText:function(A) {
+ this.text = A;
+ if (this.rendered) {
+ this.el.update(String.format("<img src=\"{0}\" class=\"x-menu-item-icon {2}\">{1}", this.icon
+ || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || ""));
+ this.parentMenu.autoWidth()
+ }
+},setIconClass:function(A) {
+ var B = this.iconCls;
+ this.iconCls = A;
+ if (this.rendered) {
+ this.el.child("img.x-menu-item-icon").replaceClass(B, this.iconCls)
+ }
+},handleClick:function(A) {
+ if (!this.href) {
+ A.stopEvent()
+ }
+ Ext.menu.Item.superclass.handleClick.apply(this, arguments)
+},activate:function(A) {
+ if (Ext.menu.Item.superclass.activate.apply(this, arguments)) {
+ this.focus();
+ if (A) {
+ this.expandMenu()
+ }
+ }
+ return true
+},shouldDeactivate:function(A) {
+ if (Ext.menu.Item.superclass.shouldDeactivate.call(this, A)) {
+ if (this.menu && this.menu.isVisible()) {
+ return !this.menu.getEl().getRegion().contains(A.getPoint())
+ }
+ return true
+ }
+ return false
+},deactivate:function() {
+ Ext.menu.Item.superclass.deactivate.apply(this, arguments);
+ this.hideMenu()
+},expandMenu:function(A) {
+ if (!this.disabled && this.menu) {
+ clearTimeout(this.hideTimer);
+ delete this.hideTimer;
+ if (!this.menu.isVisible() && !this.showTimer) {
+ this.showTimer = this.deferExpand.defer(this.showDelay, this, [A])
+ } else {
+ if (this.menu.isVisible() && A) {
+ this.menu.tryActivate(0, 1)
+ }
+ }
+ }
+},deferExpand:function(A) {
+ delete this.showTimer;
+ this.menu.show(this.container, this.parentMenu.subMenuAlign
+ || "tl-tr?", this.parentMenu);
+ if (A) {
+ this.menu.tryActivate(0, 1)
+ }
+},hideMenu:function() {
+ clearTimeout(this.showTimer);
+ delete this.showTimer;
+ if (!this.hideTimer && this.menu && this.menu.isVisible()) {
+ this.hideTimer = this.deferHide.defer(this.hideDelay, this)
+ }
+},deferHide:function() {
+ delete this.hideTimer;
+ this.menu.hide()
+}});
+Ext.menu.CheckItem = function(A) {
+ Ext.menu.CheckItem.superclass.constructor.call(this, A);
+ this.addEvents("beforecheckchange", "checkchange");
+ if (this.checkHandler) {
+ this.on("checkchange", this.checkHandler, this.scope)
+ }
+ Ext.menu.MenuMgr.registerCheckable(this)
+};
+Ext.extend(Ext.menu.CheckItem, Ext.menu.Item, {itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(
+ A) {
+ Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
+ if (this.group) {
+ this.el.addClass(this.groupClass)
+ }
+ if (this.checked) {
+ this.checked = false;
+ this.setChecked(true, true)
+ }
+},destroy:function() {
+ Ext.menu.MenuMgr.unregisterCheckable(this);
+ Ext.menu.CheckItem.superclass.destroy.apply(this, arguments)
+},setChecked:function(B, A) {
+ if (this.checked != B && this.fireEvent("beforecheckchange", this, B)
+ !== false) {
+ if (this.container) {
+ this.container[B ? "addClass"
+ : "removeClass"]("x-menu-item-checked")
+ }
+ this.checked = B;
+ if (A !== true) {
+ this.fireEvent("checkchange", this, B)
+ }
+ }
+},handleClick:function(A) {
+ if (!this.disabled && !(this.checked && this.group)) {
+ this.setChecked(!this.checked)
+ }
+ Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments)
+}});
+Ext.menu.Adapter = function(B, A) {
+ Ext.menu.Adapter.superclass.constructor.call(this, A);
+ this.component = B
+};
+Ext.extend(Ext.menu.Adapter, Ext.menu.BaseItem, {canActivate:true,onRender:function(
+ B, A) {
+ this.component.render(B);
+ this.el = this.component.getEl()
+},activate:function() {
+ if (this.disabled) {
+ return false
+ }
+ this.component.focus();
+ this.fireEvent("activate", this);
+ return true
+},deactivate:function() {
+ this.fireEvent("deactivate", this)
+},disable:function() {
+ this.component.disable();
+ Ext.menu.Adapter.superclass.disable.call(this)
+},enable:function() {
+ this.component.enable();
+ Ext.menu.Adapter.superclass.enable.call(this)
+}});
+Ext.menu.DateItem = function(A) {
+ Ext.menu.DateItem.superclass.constructor.call(this, new Ext.DatePicker(A), A);
+ this.picker = this.component;
+ this.addEvents("select");
+ this.picker.on("render", function(B) {
+ B.getEl().swallowEvent("click");
+ B.container.addClass("x-menu-date-item")
+ });
+ this.picker.on("select", this.onSelect, this)
+};
+Ext.extend(Ext.menu.DateItem, Ext.menu.Adapter, {onSelect:function(B, A) {
+ this.fireEvent("select", this, A, B);
+ Ext.menu.DateItem.superclass.handleClick.call(this)
+}});
+Ext.menu.ColorItem = function(A) {
+ Ext.menu.ColorItem.superclass.constructor.call(this, new Ext.ColorPalette(A), A);
+ this.palette = this.component;
+ this.relayEvents(this.palette, ["select"]);
+ if (this.selectHandler) {
+ this.on("select", this.selectHandler, this.scope)
+ }
+};
+Ext.extend(Ext.menu.ColorItem, Ext.menu.Adapter);
+Ext.menu.DateMenu = function(A) {
+ Ext.menu.DateMenu.superclass.constructor.call(this, A);
+ this.plain = true;
+ var B = new Ext.menu.DateItem(A);
+ this.add(B);
+ this.picker = B.picker;
+ this.relayEvents(B, ["select"]);
+ this.on("beforeshow", function() {
+ if (this.picker) {
+ this.picker.hideMonthPicker(true)
+ }
+ }, this)
+};
+Ext.extend(Ext.menu.DateMenu, Ext.menu.Menu, {cls:"x-date-menu",beforeDestroy:function() {
+ this.picker.destroy()
+}});
+Ext.menu.ColorMenu = function(A) {
+ Ext.menu.ColorMenu.superclass.constructor.call(this, A);
+ this.plain = true;
+ var B = new Ext.menu.ColorItem(A);
+ this.add(B);
+ this.palette = B.palette;
+ this.relayEvents(B, ["select"])
+};
+Ext.extend(Ext.menu.ColorMenu, Ext.menu.Menu);
+Ext.form.Field
+ = Ext.extend(Ext.BoxComponent, {invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:"qtip",msgFx:"normal",readOnly:false,disabled:false,isFormField:true,hasFocus:false,initComponent:function() {
+ Ext.form.Field.superclass.initComponent.call(this);
+ this.addEvents("focus", "blur", "specialkey", "change", "invalid", "valid")
+},getName:function() {
+ return this.rendered && this.el.dom.name ? this.el.dom.name
+ : (this.hiddenName || "")
+},onRender:function(C, A) {
+ Ext.form.Field.superclass.onRender.call(this, C, A);
+ if (!this.el) {
+ var B = this.getAutoCreate();
+ if (!B.name) {
+ B.name = this.name || this.id
+ }
+ if (this.inputType) {
+ B.type = this.inputType
+ }
+ this.el = C.createChild(B, A)
+ }
+ var D = this.el.dom.type;
+ if (D) {
+ if (D == "password") {
+ D = "text"
+ }
+ this.el.addClass("x-form-" + D)
+ }
+ if (this.readOnly) {
+ this.el.dom.readOnly = true
+ }
+ if (this.tabIndex !== undefined) {
+ this.el.dom.setAttribute("tabIndex", this.tabIndex)
+ }
+ this.el.addClass([this.fieldClass,this.cls]);
+ this.initValue()
+},initValue:function() {
+ if (this.value !== undefined) {
+ this.setValue(this.value)
+ } else {
+ if (this.el.dom.value.length > 0) {
+ this.setValue(this.el.dom.value)
+ }
+ }
+},isDirty:function() {
+ if (this.disabled) {
+ return false
+ }
+ return String(this.getValue()) !== String(this.originalValue)
+},afterRender:function() {
+ Ext.form.Field.superclass.afterRender.call(this);
+ this.initEvents()
+},fireKey:function(A) {
+ if (A.isSpecialKey()) {
+ this.fireEvent("specialkey", this, A)
+ }
+},reset:function() {
+ this.setValue(this.originalValue);
+ this.clearInvalid()
+},initEvents:function() {
+ this.el.on(Ext.isIE ? "keydown" : "keypress", this.fireKey, this);
+ this.el.on("focus", this.onFocus, this);
+ this.el.on("blur", this.onBlur, this);
+ this.originalValue = this.getValue()
+},onFocus:function() {
+ if (!Ext.isOpera && this.focusClass) {
+ this.el.addClass(this.focusClass)
+ }
+ if (!this.hasFocus) {
+ this.hasFocus = true;
+ this.startValue = this.getValue();
+ this.fireEvent("focus", this)
+ }
+},beforeBlur:Ext.emptyFn,onBlur:function() {
+ this.beforeBlur();
+ if (!Ext.isOpera && this.focusClass) {
+ this.el.removeClass(this.focusClass)
+ }
+ this.hasFocus = false;
+ if (this.validationEvent !== false && this.validateOnBlur
+ && this.validationEvent != "blur") {
+ this.validate()
+ }
+ var A = this.getValue();
+ if (String(A) !== String(this.startValue)) {
+ this.fireEvent("change", this, A, this.startValue)
+ }
+ this.fireEvent("blur", this)
+},isValid:function(A) {
+ if (this.disabled) {
+ return true
+ }
+ var C = this.preventMark;
+ this.preventMark = A === true;
+ var B = this.validateValue(this.processValue(this.getRawValue()));
+ this.preventMark = C;
+ return B
+},validate:function() {
+ if (this.disabled
+ || this.validateValue(this.processValue(this.getRawValue()))) {
+ this.clearInvalid();
+ return true
+ }
+ return false
+},processValue:function(A) {
+ return A
+},validateValue:function(A) {
+ return true
+},markInvalid:function(C) {
+ if (!this.rendered || this.preventMark) {
+ return
+ }
+ this.el.addClass(this.invalidClass);
+ C = C || this.invalidText;
+ switch (this.msgTarget) {case"qtip":this.el.dom.qtip = C;this.el.dom.qclass
+ = "x-form-invalid-tip";if (Ext.QuickTips) {
+ Ext.QuickTips.enable()
+ }break;case"title":this.el.dom.title
+ = C;break;case"under":if (!this.errorEl) {
+ var B = this.el.findParent(".x-form-element", 5, true);
+ this.errorEl = B.createChild({cls:"x-form-invalid-msg"});
+ this.errorEl.setWidth(B.getWidth(true) - 20)
+ }this.errorEl.update(C);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl, this);break;case"side":if (!this.errorIcon) {
+ var B = this.el.findParent(".x-form-element", 5, true);
+ this.errorIcon = B.createChild({cls:"x-form-invalid-icon"})
+ }this.alignErrorIcon();this.errorIcon.dom.qtip = C;this.errorIcon.dom.qclass
+ = "x-form-invalid-tip";this.errorIcon.show();this.on("resize", this.alignErrorIcon, this);break;default:var A = Ext.getDom(this.msgTarget);A.innerHTML
+ = C;A.style.display = this.msgDisplay;break}
+ this.fireEvent("invalid", this, C)
+},alignErrorIcon:function() {
+ this.errorIcon.alignTo(this.el, "tl-tr", [2,0])
+},clearInvalid:function() {
+ if (!this.rendered || this.preventMark) {
+ return
+ }
+ this.el.removeClass(this.invalidClass);
+ switch (this.msgTarget) {case"qtip":this.el.dom.qtip
+ = "";break;case"title":this.el.dom.title
+ = "";break;case"under":if (this.errorEl) {
+ Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl, this)
+ }break;case"side":if (this.errorIcon) {
+ this.errorIcon.dom.qtip = "";
+ this.errorIcon.hide();
+ this.un("resize", this.alignErrorIcon, this)
+ }break;default:var A = Ext.getDom(this.msgTarget);A.innerHTML
+ = "";A.style.display = "none";break}
+ this.fireEvent("valid", this)
+},getRawValue:function() {
+ var A = this.rendered ? this.el.getValue() : Ext.value(this.value, "");
+ if (A === this.emptyText) {
+ A = ""
+ }
+ return A
+},getValue:function() {
+ if (!this.rendered) {
+ return this.value
+ }
+ var A = this.el.getValue();
+ if (A === this.emptyText || A === undefined) {
+ A = ""
+ }
+ return A
+},setRawValue:function(A) {
+ return this.el.dom.value = (A === null || A === undefined ? "" : A)
+},setValue:function(A) {
+ this.value = A;
+ if (this.rendered) {
+ this.el.dom.value = (A === null || A === undefined ? "" : A);
+ this.validate()
+ }
+},adjustSize:function(A, C) {
+ var B = Ext.form.Field.superclass.adjustSize.call(this, A, C);
+ B.width = this.adjustWidth(this.el.dom.tagName, B.width);
+ return B
+},adjustWidth:function(A, B) {
+ A = A.toLowerCase();
+ if (typeof B == "number" && !Ext.isSafari) {
+ if (Ext.isIE && (A == "input" || A == "textarea")) {
+ if (A == "input" && !Ext.isStrict) {
+ return this.inEditor ? B : B - 3
+ }
+ if (A == "input" && Ext.isStrict) {
+ return B - (Ext.isIE6 ? 4 : 1)
+ }
+ if (A = "textarea" && Ext.isStrict) {
+ return B - 2
+ }
+ } else {
+ if (Ext.isOpera && Ext.isStrict) {
+ if (A == "input") {
+ return B + 2
+ }
+ if (A = "textarea") {
+ return B - 2
+ }
+ }
+ }
+ }
+ return B
+}});
+Ext.form.Field.msgFx = {normal:{show:function(A, B) {
+ A.setDisplayed("block")
+},hide:function(A, B) {
+ A.setDisplayed(false).update("")
+}},slide:{show:function(A, B) {
+ A.slideIn("t", {stopFx:true})
+},hide:function(A, B) {
+ A.slideOut("t", {stopFx:true,useDisplay:true})
+}},slideRight:{show:function(A, B) {
+ A.fixDisplay();
+ A.alignTo(B.el, "tl-tr");
+ A.slideIn("l", {stopFx:true})
+},hide:function(A, B) {
+ A.slideOut("l", {stopFx:true,useDisplay:true})
+}}};
+Ext.reg("field", Ext.form.Field);
+Ext.form.TextField
+ = Ext.extend(Ext.form.Field, {grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:"x-form-empty-field",initComponent:function() {
+ Ext.form.TextField.superclass.initComponent.call(this);
+ this.addEvents("autosize")
+},initEvents:function() {
+ Ext.form.TextField.superclass.initEvents.call(this);
+ if (this.validationEvent == "keyup") {
+ this.validationTask = new Ext.util.DelayedTask(this.validate, this);
+ this.el.on("keyup", this.filterValidation, this)
+ } else {
+ if (this.validationEvent !== false) {
+ this.el.on(this.validationEvent, this.validate, this, {buffer:this.validationDelay})
+ }
+ }
+ if (this.selectOnFocus || this.emptyText) {
+ this.on("focus", this.preFocus, this);
+ if (this.emptyText) {
+ this.on("blur", this.postBlur, this);
+ this.applyEmptyText()
+ }
+ }
+ if (this.maskRe || (this.vtype && this.disableKeyFilter !== true
+ && (this.maskRe = Ext.form.VTypes[this.vtype + "Mask"]))) {
+ this.el.on("keypress", this.filterKeys, this)
+ }
+ if (this.grow) {
+ this.el.on("keyup", this.onKeyUp, this, {buffer:50});
+ this.el.on("click", this.autoSize, this)
+ }
+},processValue:function(A) {
+ if (this.stripCharsRe) {
+ var B = A.replace(this.stripCharsRe, "");
+ if (B !== A) {
+ this.setRawValue(B);
+ return B
+ }
+ }
+ return A
+},filterValidation:function(A) {
+ if (!A.isNavKeyPress()) {
+ this.validationTask.delay(this.validationDelay)
+ }
+},onKeyUp:function(A) {
+ if (!A.isNavKeyPress()) {
+ this.autoSize()
+ }
+},reset:function() {
+ Ext.form.TextField.superclass.reset.call(this);
+ this.applyEmptyText()
+},applyEmptyText:function() {
+ if (this.rendered && this.emptyText && this.getRawValue().length < 1) {
+ this.setRawValue(this.emptyText);
+ this.el.addClass(this.emptyClass)
+ }
+},preFocus:function() {
+ if (this.emptyText) {
+ if (this.el.dom.value == this.emptyText) {
+ this.setRawValue("")
+ }
+ this.el.removeClass(this.emptyClass)
+ }
+ if (this.selectOnFocus) {
+ this.el.dom.select()
+ }
+},postBlur:function() {
+ this.applyEmptyText()
+},filterKeys:function(B) {
+ var A = B.getKey();
+ if (!Ext.isIE && (B.isNavKeyPress() || A == B.BACKSPACE || (A == B.DELETE
+ && B.button == -1))) {
+ return
+ }
+ var D = B.getCharCode(),C = String.fromCharCode(D);
+ if (Ext.isIE && (B.isSpecialKey() || !C)) {
+ return
+ }
+ if (!this.maskRe.test(C)) {
+ B.stopEvent()
+ }
+},setValue:function(A) {
+ if (this.emptyText && this.el && A !== undefined && A !== null && A
+ !== "") {
+ this.el.removeClass(this.emptyClass)
+ }
+ Ext.form.TextField.superclass.setValue.apply(this, arguments);
+ this.applyEmptyText();
+ this.autoSize()
+},validateValue:function(A) {
+ if (A.length < 1 || A === this.emptyText) {
+ if (this.allowBlank) {
+ this.clearInvalid();
+ return true
+ } else {
+ this.markInvalid(this.blankText);
+ return false
+ }
+ }
+ if (A.length < this.minLength) {
+ this.markInvalid(String.format(this.minLengthText, this.minLength));
+ return false
+ }
+ if (A.length > this.maxLength) {
+ this.markInvalid(String.format(this.maxLengthText, this.maxLength));
+ return false
+ }
+ if (this.vtype) {
+ var C = Ext.form.VTypes;
+ if (!C[this.vtype](A, this)) {
+ this.markInvalid(this.vtypeText || C[this.vtype + "Text"]);
+ return false
+ }
+ }
+ if (typeof this.validator == "function") {
+ var B = this.validator(A);
+ if (B !== true) {
+ this.markInvalid(B);
+ return false
+ }
+ }
+ if (this.regex && !this.regex.test(A)) {
+ this.markInvalid(this.regexText);
+ return false
+ }
+ return true
+},selectText:function(E, A) {
+ var C = this.getRawValue();
+ if (C.length > 0) {
+ E = E === undefined ? 0 : E;
+ A = A === undefined ? C.length : A;
+ var D = this.el.dom;
+ if (D.setSelectionRange) {
+ D.setSelectionRange(E, A)
+ } else {
+ if (D.createTextRange) {
+ var B = D.createTextRange();
+ B.moveStart("character", E);
+ B.moveEnd("character", A - C.length);
+ B.select()
+ }
+ }
+ }
+},autoSize:function() {
+ if (!this.grow || !this.rendered) {
+ return
+ }
+ if (!this.metrics) {
+ this.metrics = Ext.util.TextMetrics.createInstance(this.el)
+ }
+ var C = this.el;
+ var B = C.dom.value;
+ var D = document.createElement("div");
+ D.appendChild(document.createTextNode(B));
+ B = D.innerHTML;
+ D = null;
+ B += "&#160;";
+ var A = Math.min(this.growMax, Math.max(this.metrics.getWidth(B)
+ + 10, this.growMin));
+ this.el.setWidth(A);
+ this.fireEvent("autosize", this, A)
+}});
+Ext.reg("textfield", Ext.form.TextField);
+Ext.form.TriggerField
+ = Ext.extend(Ext.form.TextField, {defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,mimicing:false,onResize:function(
+ A, B) {
+ Ext.form.TriggerField.superclass.onResize.call(this, A, B);
+ if (typeof A == "number") {
+ this.el.setWidth(this.adjustWidth("input", A - this.trigger.getWidth()))
+ }
+ this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth())
+},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function() {
+ return this.wrap
+},getPositionEl:function() {
+ return this.wrap
+},alignErrorIcon:function() {
+ this.errorIcon.alignTo(this.wrap, "tl-tr", [2,0])
+},onRender:function(B, A) {
+ Ext.form.TriggerField.superclass.onRender.call(this, B, A);
+ this.wrap = this.el.wrap({cls:"x-form-field-wrap"});
+ this.trigger = this.wrap.createChild(this.triggerConfig
+ || {tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "
+ + this.triggerClass});
+ if (this.hideTrigger) {
+ this.trigger.setDisplayed(false)
+ }
+ this.initTrigger();
+ if (!this.width) {
+ this.wrap.setWidth(this.el.getWidth() + this.trigger.getWidth())
+ }
+},initTrigger:function() {
+ this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true});
+ this.trigger.addClassOnOver("x-form-trigger-over");
+ this.trigger.addClassOnClick("x-form-trigger-click")
+},onDestroy:function() {
+ if (this.trigger) {
+ this.trigger.removeAllListeners();
+ this.trigger.remove()
+ }
+ if (this.wrap) {
+ this.wrap.remove()
+ }
+ Ext.form.TriggerField.superclass.onDestroy.call(this)
+},onFocus:function() {
+ Ext.form.TriggerField.superclass.onFocus.call(this);
+ if (!this.mimicing) {
+ this.wrap.addClass("x-trigger-wrap-focus");
+ this.mimicing = true;
+ Ext.get(Ext.isIE ? document.body
+ : document).on("mousedown", this.mimicBlur, this, {delay:10});
+ if (this.monitorTab) {
+ this.el.on("keydown", this.checkTab, this)
+ }
+ }
+},checkTab:function(A) {
+ if (A.getKey() == A.TAB) {
+ this.triggerBlur()
+ }
+},onBlur:function() {
+},mimicBlur:function(A) {
+ if (!this.wrap.contains(A.target) && this.validateBlur(A)) {
+ this.triggerBlur()
+ }
+},triggerBlur:function() {
+ this.mimicing = false;
+ Ext.get(Ext.isIE ? document.body
+ : document).un("mousedown", this.mimicBlur);
+ if (this.monitorTab) {
+ this.el.un("keydown", this.checkTab, this)
+ }
+ this.beforeBlur();
+ this.wrap.removeClass("x-trigger-wrap-focus");
+ Ext.form.TriggerField.superclass.onBlur.call(this)
+},beforeBlur:Ext.emptyFn,validateBlur:function(A) {
+ return true
+},onDisable:function() {
+ Ext.form.TriggerField.superclass.onDisable.call(this);
+ if (this.wrap) {
+ this.wrap.addClass("x-item-disabled")
+ }
+},onEnable:function() {
+ Ext.form.TriggerField.superclass.onEnable.call(this);
+ if (this.wrap) {
+ this.wrap.removeClass("x-item-disabled")
+ }
+},onShow:function() {
+ if (this.wrap) {
+ this.wrap.dom.style.display = "";
+ this.wrap.dom.style.visibility = "visible"
+ }
+},onHide:function() {
+ this.wrap.dom.style.display = "none"
+},onTriggerClick:Ext.emptyFn});
+Ext.form.TwinTriggerField
+ = Ext.extend(Ext.form.TriggerField, {initComponent:function() {
+ Ext.form.TwinTriggerField.superclass.initComponent.call(this);
+ this.triggerConfig = {tag:"span",cls:"x-form-twin-triggers",cn:[
+ {
+ tag:"img",
+ src:Ext.BLANK_IMAGE_URL,
+ cls:"x-form-trigger " + this.trigger1Class
+ },
+ {
+ tag:"img",
+ src:Ext.BLANK_IMAGE_URL,
+ cls:"x-form-trigger " + this.trigger2Class
+ }
+ ]}
+},getTrigger:function(A) {
+ return this.triggers[A]
+},initTrigger:function() {
+ var A = this.trigger.select(".x-form-trigger", true);
+ this.wrap.setStyle("overflow", "hidden");
+ var B = this;
+ A.each(function(D, F, C) {
+ D.hide = function() {
+ var G = B.wrap.getWidth();
+ this.dom.style.display = "none";
+ B.el.setWidth(G - B.trigger.getWidth())
+ };
+ D.show = function() {
+ var G = B.wrap.getWidth();
+ this.dom.style.display = "";
+ B.el.setWidth(G - B.trigger.getWidth())
+ };
+ var E = "Trigger" + (C + 1);
+ if (this["hide" + E]) {
+ D.dom.style.display = "none"
+ }
+ D.on("click", this["on" + E + "Click"], this, {preventDefault:true});
+ D.addClassOnOver("x-form-trigger-over");
+ D.addClassOnClick("x-form-trigger-click")
+ }, this);
+ this.triggers = A.elements
+},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn});
+Ext.reg("trigger", Ext.form.TriggerField);
+Ext.form.TextArea
+ = Ext.extend(Ext.form.TextField, {growMin:60,growMax:1000,growAppend:"&#160;\n&#160;",growPad:0,enterIsSpecial:false,preventScrollbars:false,onRender:function(
+ B, A) {
+ if (!this.el) {
+ this.defaultAutoCreate
+ = {tag:"textarea",style:"width:100px;height:60px;",autocomplete:"off"}
+ }
+ Ext.form.TextArea.superclass.onRender.call(this, B, A);
+ if (this.grow) {
+ this.textSizeEl
+ = Ext.DomHelper.append(document.body, {tag:"pre",cls:"x-form-grow-sizer"});
+ if (this.preventScrollbars) {
+ this.el.setStyle("overflow", "hidden")
+ }
+ this.el.setHeight(this.growMin)
+ }
+},onDestroy:function() {
+ if (this.textSizeEl) {
+ Ext.removeNode(this.textSizeEl)
+ }
+ Ext.form.TextArea.superclass.onDestroy.call(this)
+},fireKey:function(A) {
+ if (A.isSpecialKey() && (this.enterIsSpecial || (A.getKey() != A.ENTER
+ || A.hasModifier()))) {
+ this.fireEvent("specialkey", this, A)
+ }
+},onKeyUp:function(A) {
+ if (!A.isNavKeyPress() || A.getKey() == A.ENTER) {
+ this.autoSize()
+ }
+},autoSize:function() {
+ if (!this.grow || !this.textSizeEl) {
+ return
+ }
+ var C = this.el;
+ var A = C.dom.value;
+ var D = this.textSizeEl;
+ D.innerHTML = "";
+ D.appendChild(document.createTextNode(A));
+ A = D.innerHTML;
+ Ext.fly(D).setWidth(this.el.getWidth());
+ if (A.length < 1) {
+ A = "&#160;&#160;"
+ } else {
+ if (Ext.isIE) {
+ A = A.replace(/\n/g, "<p>&#160;</p>")
+ }
+ A += this.growAppend
+ }
+ D.innerHTML = A;
+ var B = Math.min(this.growMax, Math.max(D.offsetHeight, this.growMin)
+ + this.growPad);
+ if (B != this.lastHeight) {
+ this.lastHeight = B;
+ this.el.setHeight(B);
+ this.fireEvent("autosize", this, B)
+ }
+}});
+Ext.reg("textarea", Ext.form.TextArea);
+Ext.form.NumberField
+ = Ext.extend(Ext.form.TextField, {fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",baseChars:"0123456789",initEvents:function() {
+ Ext.form.NumberField.superclass.initEvents.call(this);
+ var B = this.baseChars + "";
+ if (this.allowDecimals) {
+ B += this.decimalSeparator
+ }
+ if (this.allowNegative) {
+ B += "-"
+ }
+ this.stripCharsRe = new RegExp("[^" + B + "]", "gi");
+ var A = function(D) {
+ var C = D.getKey();
+ if (!Ext.isIE && (D.isSpecialKey() || C == D.BACKSPACE || C
+ == D.DELETE)) {
+ return
+ }
+ var E = D.getCharCode();
+ if (B.indexOf(String.fromCharCode(E)) === -1) {
+ D.stopEvent()
+ }
+ };
+ this.el.on("keypress", A, this)
+},validateValue:function(B) {
+ if (!Ext.form.NumberField.superclass.validateValue.call(this, B)) {
+ return false
+ }
+ if (B.length < 1) {
+ return true
+ }
+ B = String(B).replace(this.decimalSeparator, ".");
+ if (isNaN(B)) {
+ this.markInvalid(String.format(this.nanText, B));
+ return false
+ }
+ var A = this.parseValue(B);
+ if (A < this.minValue) {
+ this.markInvalid(String.format(this.minText, this.minValue));
+ return false
+ }
+ if (A > this.maxValue) {
+ this.markInvalid(String.format(this.maxText, this.maxValue));
+ return false
+ }
+ return true
+},getValue:function() {
+ return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))
+},setValue:function(A) {
+ A = parseFloat(A);
+ A = isNaN(A) ? "" : String(A).replace(".", this.decimalSeparator);
+ Ext.form.NumberField.superclass.setValue.call(this, A)
+},parseValue:function(A) {
+ A = parseFloat(String(A).replace(this.decimalSeparator, "."));
+ return isNaN(A) ? "" : A
+},fixPrecision:function(B) {
+ var A = isNaN(B);
+ if (!this.allowDecimals || this.decimalPrecision == -1 || A || !B) {
+ return A ? "" : B
+ }
+ return parseFloat(parseFloat(B).toFixed(this.decimalPrecision))
+},beforeBlur:function() {
+ var A = this.parseValue(this.getRawValue());
+ if (A) {
+ this.setValue(this.fixPrecision(A))
+ }
+}});
+Ext.reg("numberfield", Ext.form.NumberField);
+Ext.form.DateField
+ = Ext.extend(Ext.form.TriggerField, {format:"m/d/y",altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be equal to or after {0}",maxText:"The date in this field must be equal to or before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:"x-form-date-trigger",defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},initComponent:function() {
+ Ext.form.DateField.superclass.initComponent.call(this);
+ if (typeof this.minValue == "string") {
+ this.minValue = this.parseDate(this.minValue)
+ }
+ if (typeof this.maxValue == "string") {
+ this.maxValue = this.parseDate(this.maxValue)
+ }
+ this.ddMatch = null;
+ if (this.disabledDates) {
+ var A = this.disabledDates;
+ var C = "(?:";
+ for (var B = 0; B < A.length; B++) {
+ C += A[B];
+ if (B != A.length - 1) {
+ C += "|"
+ }
+ }
+ this.ddMatch = new RegExp(C + ")")
+ }
+},validateValue:function(E) {
+ E = this.formatDate(E);
+ if (!Ext.form.DateField.superclass.validateValue.call(this, E)) {
+ return false
+ }
+ if (E.length < 1) {
+ return true
+ }
+ var C = E;
+ E = this.parseDate(E);
+ if (!E) {
+ this.markInvalid(String.format(this.invalidText, C, this.format));
+ return false
+ }
+ var F = E.getTime();
+ if (this.minValue && F < this.minValue.getTime()) {
+ this.markInvalid(String.format(this.minText, this.formatDate(this.minValue)));
+ return false
+ }
+ if (this.maxValue && F > this.maxValue.getTime()) {
+ this.markInvalid(String.format(this.maxText, this.formatDate(this.maxValue)));
+ return false
+ }
+ if (this.disabledDays) {
+ var A = E.getDay();
+ for (var B = 0; B < this.disabledDays.length; B++) {
+ if (A === this.disabledDays[B]) {
+ this.markInvalid(this.disabledDaysText);
+ return false
+ }
+ }
+ }
+ var D = this.formatDate(E);
+ if (this.ddMatch && this.ddMatch.test(D)) {
+ this.markInvalid(String.format(this.disabledDatesText, D));
+ return false
+ }
+ return true
+},validateBlur:function() {
+ return !this.menu || !this.menu.isVisible()
+},getValue:function() {
+ return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))
+ || ""
+},setValue:function(A) {
+ Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(A)))
+},parseDate:function(D) {
+ if (!D || Ext.isDate(D)) {
+ return D
+ }
+ var B = Date.parseDate(D, this.format);
+ if (!B && this.altFormats) {
+ if (!this.altFormatsArray) {
+ this.altFormatsArray = this.altFormats.split("|")
+ }
+ for (var C = 0,A = this.altFormatsArray.length; C < A && !B; C++) {
+ B = Date.parseDate(D, this.altFormatsArray[C])
+ }
+ }
+ return B
+},onDestroy:function() {
+ if (this.menu) {
+ this.menu.destroy()
+ }
+ if (this.wrap) {
+ this.wrap.remove()
+ }
+ Ext.form.DateField.superclass.onDestroy.call(this)
+},formatDate:function(A) {
+ return Ext.isDate(A) ? A.dateFormat(this.format) : A
+},menuListeners:{select:function(A, B) {
+ this.setValue(B)
+},show:function() {
+ this.onFocus()
+},hide:function() {
+ this.focus.defer(10, this);
+ var A = this.menuListeners;
+ this.menu.un("select", A.select, this);
+ this.menu.un("show", A.show, this);
+ this.menu.un("hide", A.hide, this)
+}},onTriggerClick:function() {
+ if (this.disabled) {
+ return
+ }
+ if (this.menu == null) {
+ this.menu = new Ext.menu.DateMenu()
+ }
+ Ext.apply(this.menu.picker, {minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,minText:String.format(this.minText, this.formatDate(this.minValue)),maxText:String.format(this.maxText, this.formatDate(this.maxValue))});
+ this.menu.on(Ext.apply({}, this.menuListeners, {scope:this}));
+ this.menu.picker.setValue(this.getValue() || new Date());
+ this.menu.show(this.el, "tl-bl?")
+},beforeBlur:function() {
+ var A = this.parseDate(this.getRawValue());
+ if (A) {
+ this.setValue(A)
+ }
+}});
+Ext.reg("datefield", Ext.form.DateField);
+Ext.form.ComboBox
+ = Ext.extend(Ext.form.TriggerField, {defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listClass:"",selectedClass:"x-combo-selected",triggerClass:"x-form-arrow-trigger",shadow:"sides",listAlign:"tl-bl?",maxHeight:300,minHeight:90,triggerAction:"query",minChars:4,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:"query",loadingText:"Loading...",resizable:false,handleHeight:8,editable:true,allQuery:"",mode:"remote",minListWidth:70,forceSelection:false,typeAheadDelay:250,lazyInit:true,initComponent:function() {
+ Ext.form.ComboBox.superclass.initComponent.call(this);
+ this.addEvents("expand", "collapse", "beforeselect", "select", "beforequery");
+ if (this.transform) {
+ this.allowDomMove = false;
+ var C = Ext.getDom(this.transform);
+ if (!this.hiddenName) {
+ this.hiddenName = C.name
+ }
+ if (!this.store) {
+ this.mode = "local";
+ var G = [],D = C.options;
+ for (var B = 0,A = D.length; B < A; B++) {
+ var F = D[B];
+ var E = (Ext.isIE ? F.getAttributeNode("value").specified
+ : F.hasAttribute("value")) ? F.value : F.text;
+ if (F.selected) {
+ this.value = E
+ }
+ G.push([E,F.text])
+ }
+ this.store
+ = new Ext.data.SimpleStore({"id":0,fields:["value","text"],data:G});
+ this.valueField = "value";
+ this.displayField = "text"
+ }
+ C.name = Ext.id();
+ if (!this.lazyRender) {
+ this.target = true;
+ this.el = Ext.DomHelper.insertBefore(C, this.autoCreate
+ || this.defaultAutoCreate);
+ Ext.removeNode(C);
+ this.render(this.el.parentNode)
+ } else {
+ Ext.removeNode(C)
+ }
+ }
+ this.selectedIndex = -1;
+ if (this.mode == "local") {
+ if (this.initialConfig.queryDelay === undefined) {
+ this.queryDelay = 10
+ }
+ if (this.initialConfig.minChars === undefined) {
+ this.minChars = 0
+ }
+ }
+},onRender:function(B, A) {
+ Ext.form.ComboBox.superclass.onRender.call(this, B, A);
+ if (this.hiddenName) {
+ this.hiddenField
+ = this.el.insertSibling({tag:"input",type:"hidden",name:this.hiddenName,id:(this.hiddenId
+ || this.hiddenName)}, "before", true);
+ this.hiddenField.value = this.hiddenValue !== undefined
+ ? this.hiddenValue : this.value !== undefined ? this.value : "";
+ this.el.dom.removeAttribute("name")
+ }
+ if (Ext.isGecko) {
+ this.el.dom.setAttribute("autocomplete", "off")
+ }
+ if (!this.lazyInit) {
+ this.initList()
+ } else {
+ this.on("focus", this.initList, this, {single:true})
+ }
+ if (!this.editable) {
+ this.editable = true;
+ this.setEditable(false)
+ }
+},initList:function() {
+ if (!this.list) {
+ var A = "x-combo-list";
+ this.list
+ = new Ext.Layer({shadow:this.shadow,cls:[A,this.listClass].join(" "),constrain:false});
+ var B = this.listWidth
+ || Math.max(this.wrap.getWidth(), this.minListWidth);
+ this.list.setWidth(B);
+ this.list.swallowEvent("mousewheel");
+ this.assetHeight = 0;
+ if (this.title) {
+ this.header = this.list.createChild({cls:A
+ + "-hd",html:this.title});
+ this.assetHeight += this.header.getHeight()
+ }
+ this.innerList = this.list.createChild({cls:A + "-inner"});
+ this.innerList.on("mouseover", this.onViewOver, this);
+ this.innerList.on("mousemove", this.onViewMove, this);
+ this.innerList.setWidth(B - this.list.getFrameWidth("lr"));
+ if (this.pageSize) {
+ this.footer = this.list.createChild({cls:A + "-ft"});
+ this.pageTb
+ = new Ext.PagingToolbar({store:this.store,pageSize:this.pageSize,renderTo:this.footer});
+ this.assetHeight += this.footer.getHeight()
+ }
+ if (!this.tpl) {
+ this.tpl = "<tpl for=\".\"><div class=\"" + A + "-item\">{"
+ + this.displayField + "}</div></tpl>"
+ }
+ this.view
+ = new Ext.DataView({applyTo:this.innerList,tpl:this.tpl,singleSelect:true,selectedClass:this.selectedClass,itemSelector:this.itemSelector
+ || "." + A + "-item"});
+ this.view.on("click", this.onViewClick, this);
+ this.bindStore(this.store, true);
+ if (this.resizable) {
+ this.resizer
+ = new Ext.Resizable(this.list, {pinned:true,handles:"se"});
+ this.resizer.on("resize", function(E, C, D) {
+ this.maxHeight = D - this.handleHeight
+ - this.list.getFrameWidth("tb") - this.assetHeight;
+ this.listWidth = C;
+ this.innerList.setWidth(C - this.list.getFrameWidth("lr"));
+ this.restrictHeight()
+ }, this);
+ this[this.pageSize ? "footer"
+ : "innerList"].setStyle("margin-bottom", this.handleHeight
+ + "px")
+ }
+ }
+},bindStore:function(A, B) {
+ if (this.store && !B) {
+ this.store.un("beforeload", this.onBeforeLoad, this);
+ this.store.un("load", this.onLoad, this);
+ this.store.un("loadexception", this.collapse, this);
+ if (!A) {
+ this.store = null;
+ if (this.view) {
+ this.view.setStore(null)
+ }
+ }
+ }
+ if (A) {
+ this.store = Ext.StoreMgr.lookup(A);
+ this.store.on("beforeload", this.onBeforeLoad, this);
+ this.store.on("load", this.onLoad, this);
+ this.store.on("loadexception", this.collapse, this);
+ if (this.view) {
+ this.view.setStore(A)
+ }
+ }
+},initEvents:function() {
+ Ext.form.ComboBox.superclass.initEvents.call(this);
+ this.keyNav = new Ext.KeyNav(this.el, {"up":function(A) {
+ this.inKeyMode = true;
+ this.selectPrev()
+ },"down":function(A) {
+ if (!this.isExpanded()) {
+ this.onTriggerClick()
+ } else {
+ this.inKeyMode = true;
+ this.selectNext()
+ }
+ },"enter":function(A) {
+ this.onViewClick();
+ this.delayedCheck = true;
+ this.unsetDelayCheck.defer(10, this)
+ },"esc":function(A) {
+ this.collapse()
+ },"tab":function(A) {
+ this.onViewClick(false);
+ return true
+ },scope:this,doRelay:function(C, B, A) {
+ if (A == "down" || this.scope.isExpanded()) {
+ return Ext.KeyNav.prototype.doRelay.apply(this, arguments)
+ }
+ return true
+ },forceKeyDown:true});
+ this.queryDelay = Math.max(this.queryDelay || 10, this.mode == "local" ? 10
+ : 250);
+ this.dqTask = new Ext.util.DelayedTask(this.initQuery, this);
+ if (this.typeAhead) {
+ this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this)
+ }
+ if (this.editable !== false) {
+ this.el.on("keyup", this.onKeyUp, this)
+ }
+ if (this.forceSelection) {
+ this.on("blur", this.doForce, this)
+ }
+},onDestroy:function() {
+ if (this.view) {
+ this.view.el.removeAllListeners();
+ this.view.el.remove();
+ this.view.purgeListeners()
+ }
+ if (this.list) {
+ this.list.destroy()
+ }
+ this.bindStore(null);
+ Ext.form.ComboBox.superclass.onDestroy.call(this)
+},unsetDelayCheck:function() {
+ delete this.delayedCheck
+},fireKey:function(A) {
+ if (A.isNavKeyPress() && !this.isExpanded() && !this.delayedCheck) {
+ this.fireEvent("specialkey", this, A)
+ }
+},onResize:function(A, B) {
+ Ext.form.ComboBox.superclass.onResize.apply(this, arguments);
+ if (this.list && this.listWidth === undefined) {
+ var C = Math.max(A, this.minListWidth);
+ this.list.setWidth(C);
+ this.innerList.setWidth(C - this.list.getFrameWidth("lr"))
+ }
+},onEnable:function() {
+ Ext.form.ComboBox.superclass.onEnable.apply(this, arguments);
+ if (this.hiddenField) {
+ this.hiddenField.disabled = false
+ }
+},onDisable:function() {
+ Ext.form.ComboBox.superclass.onDisable.apply(this, arguments);
+ if (this.hiddenField) {
+ this.hiddenField.disabled = true
+ }
+},setEditable:function(A) {
+ if (A == this.editable) {
+ return
+ }
+ this.editable = A;
+ if (!A) {
+ this.el.dom.setAttribute("readOnly", true);
+ this.el.on("mousedown", this.onTriggerClick, this);
+ this.el.addClass("x-combo-noedit")
+ } else {
+ this.el.dom.setAttribute("readOnly", false);
+ this.el.un("mousedown", this.onTriggerClick, this);
+ this.el.removeClass("x-combo-noedit")
+ }
+},onBeforeLoad:function() {
+ if (!this.hasFocus) {
+ return
+ }
+ this.innerList.update(this.loadingText ? "<div class=\"loading-indicator\">"
+ + this.loadingText + "</div>" : "");
+ this.restrictHeight();
+ this.selectedIndex = -1
+},onLoad:function() {
+ if (!this.hasFocus) {
+ return
+ }
+ if (this.store.getCount() > 0) {
+ this.expand();
+ this.restrictHeight();
+ if (this.lastQuery == this.allQuery) {
+ if (this.editable) {
+ this.el.dom.select()
+ }
+ if (!this.selectByValue(this.value, true)) {
+ this.select(0, true)
+ }
+ } else {
+ this.selectNext();
+ if (this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE
+ && this.lastKey != Ext.EventObject.DELETE) {
+ this.taTask.delay(this.typeAheadDelay)
+ }
+ }
+ } else {
+ this.onEmptyResults()
+ }
+},onTypeAhead:function() {
+ if (this.store.getCount() > 0) {
+ var B = this.store.getAt(0);
+ var C = B.data[this.displayField];
+ var A = C.length;
+ var D = this.getRawValue().length;
+ if (D != A) {
+ this.setRawValue(C);
+ this.selectText(D, C.length)
+ }
+ }
+},onSelect:function(A, B) {
+ if (this.fireEvent("beforeselect", this, A, B) !== false) {
+ this.setValue(A.data[this.valueField || this.displayField]);
+ this.collapse();
+ this.fireEvent("select", this, A, B)
+ }
+},getValue:function() {
+ if (this.valueField) {
+ return typeof this.value != "undefined" ? this.value : ""
+ } else {
+ return Ext.form.ComboBox.superclass.getValue.call(this)
+ }
+},clearValue:function() {
+ if (this.hiddenField) {
+ this.hiddenField.value = ""
+ }
+ this.setRawValue("");
+ this.lastSelectionText = "";
+ this.applyEmptyText();
+ this.value = ""
+},setValue:function(A) {
+ var C = A;
+ if (this.valueField) {
+ var B = this.findRecord(this.valueField, A);
+ if (B) {
+ C = B.data[this.displayField]
+ } else {
+ if (this.valueNotFoundText !== undefined) {
+ C = this.valueNotFoundText
+ }
+ }
+ }
+ this.lastSelectionText = C;
+ if (this.hiddenField) {
+ this.hiddenField.value = A
+ }
+ Ext.form.ComboBox.superclass.setValue.call(this, C);
+ this.value = A
+},findRecord:function(C, B) {
+ var A;
+ if (this.store.getCount() > 0) {
+ this.store.each(function(D) {
+ if (D.data[C] == B) {
+ A = D;
+ return false
+ }
+ })
+ }
+ return A
+},onViewMove:function(B, A) {
+ this.inKeyMode = false
+},onViewOver:function(D, B) {
+ if (this.inKeyMode) {
+ return
+ }
+ var C = this.view.findItemFromChild(B);
+ if (C) {
+ var A = this.view.indexOf(C);
+ this.select(A, false)
+ }
+},onViewClick:function(B) {
+ var A = this.view.getSelectedIndexes()[0];
+ var C = this.store.getAt(A);
+ if (C) {
+ this.onSelect(C, A)
+ }
+ if (B !== false) {
+ this.el.focus()
+ }
+},restrictHeight:function() {
+ this.innerList.dom.style.height = "";
+ var B = this.innerList.dom;
+ var E = this.list.getFrameWidth("tb") + (this.resizable ? this.handleHeight
+ : 0) + this.assetHeight;
+ var C = Math.max(B.clientHeight, B.offsetHeight, B.scrollHeight);
+ var A = this.getPosition()[1] - Ext.getBody().getScroll().top;
+ var F = Ext.lib.Dom.getViewHeight() - A - this.getSize().height;
+ var D = Math.max(A, F, this.minHeight || 0) - this.list.shadow.offset - E
+ - 2;
+ C = Math.min(C, D, this.maxHeight);
+ this.innerList.setHeight(C);
+ this.list.beginUpdate();
+ this.list.setHeight(C + E);
+ this.list.alignTo(this.el, this.listAlign);
+ this.list.endUpdate()
+},onEmptyResults:function() {
+ this.collapse()
+},isExpanded:function() {
+ return this.list && this.list.isVisible()
+},selectByValue:function(A, C) {
+ if (A !== undefined && A !== null) {
+ var B = this.findRecord(this.valueField || this.displayField, A);
+ if (B) {
+ this.select(this.store.indexOf(B), C);
+ return true
+ }
+ }
+ return false
+},select:function(A, C) {
+ this.selectedIndex = A;
+ this.view.select(A);
+ if (C !== false) {
+ var B = this.view.getNode(A);
+ if (B) {
+ this.innerList.scrollChildIntoView(B, false)
+ }
+ }
+},selectNext:function() {
+ var A = this.store.getCount();
+ if (A > 0) {
+ if (this.selectedIndex == -1) {
+ this.select(0)
+ } else {
+ if (this.selectedIndex < A - 1) {
+ this.select(this.selectedIndex + 1)
+ }
+ }
+ }
+},selectPrev:function() {
+ var A = this.store.getCount();
+ if (A > 0) {
+ if (this.selectedIndex == -1) {
+ this.select(0)
+ } else {
+ if (this.selectedIndex != 0) {
+ this.select(this.selectedIndex - 1)
+ }
+ }
+ }
+},onKeyUp:function(A) {
+ if (this.editable !== false && !A.isSpecialKey()) {
+ this.lastKey = A.getKey();
+ this.dqTask.delay(this.queryDelay)
+ }
+},validateBlur:function() {
+ return !this.list || !this.list.isVisible()
+},initQuery:function() {
+ this.doQuery(this.getRawValue())
+},doForce:function() {
+ if (this.el.dom.value.length > 0) {
+ this.el.dom.value = this.lastSelectionText === undefined ? ""
+ : this.lastSelectionText;
+ this.applyEmptyText()
+ }
+},doQuery:function(C, B) {
+ if (C === undefined || C === null) {
+ C = ""
+ }
+ var A = {query:C,forceAll:B,combo:this,cancel:false};
+ if (this.fireEvent("beforequery", A) === false || A.cancel) {
+ return false
+ }
+ C = A.query;
+ B = A.forceAll;
+ if (B === true || (C.length >= this.minChars)) {
+ if (this.lastQuery !== C) {
+ this.lastQuery = C;
+ if (this.mode == "local") {
+ this.selectedIndex = -1;
+ if (B) {
+ this.store.clearFilter()
+ } else {
+ this.store.filter(this.displayField, C)
+ }
+ this.onLoad()
+ } else {
+ this.store.baseParams[this.queryParam] = C;
+ this.store.load({params:this.getParams(C)});
+ this.expand()
+ }
+ } else {
+ this.selectedIndex = -1;
+ this.onLoad()
+ }
+ }
+},getParams:function(A) {
+ var B = {};
+ if (this.pageSize) {
+ B.start = 0;
+ B.limit = this.pageSize
+ }
+ return B
+},collapse:function() {
+ if (!this.isExpanded()) {
+ return
+ }
+ this.list.hide();
+ Ext.getDoc().un("mousewheel", this.collapseIf, this);
+ Ext.getDoc().un("mousedown", this.collapseIf, this);
+ this.fireEvent("collapse", this)
+},collapseIf:function(A) {
+ if (!A.within(this.wrap) && !A.within(this.list)) {
+ this.collapse()
+ }
+},expand:function() {
+ if (this.isExpanded() || !this.hasFocus) {
+ return
+ }
+ this.list.alignTo(this.wrap, this.listAlign);
+ this.list.show();
+ this.innerList.setOverflow("auto");
+ Ext.getDoc().on("mousewheel", this.collapseIf, this);
+ Ext.getDoc().on("mousedown", this.collapseIf, this);
+ this.fireEvent("expand", this)
+},onTriggerClick:function() {
+ if (this.disabled) {
+ return
+ }
+ if (this.isExpanded()) {
+ this.collapse();
+ this.el.focus()
+ } else {
+ this.onFocus({});
+ if (this.triggerAction == "all") {
+ this.doQuery(this.allQuery, true)
+ } else {
+ this.doQuery(this.getRawValue())
+ }
+ this.el.focus()
+ }
+}});
+Ext.reg("combo", Ext.form.ComboBox);
+Ext.form.Checkbox
+ = Ext.extend(Ext.form.Field, {focusClass:undefined,fieldClass:"x-form-field",checked:false,defaultAutoCreate:{tag:"input",type:"checkbox",autocomplete:"off"},initComponent:function() {
+ Ext.form.Checkbox.superclass.initComponent.call(this);
+ this.addEvents("check")
+},onResize:function() {
+ Ext.form.Checkbox.superclass.onResize.apply(this, arguments);
+ if (!this.boxLabel) {
+ this.el.alignTo(this.wrap, "c-c")
+ }
+},initEvents:function() {
+ Ext.form.Checkbox.superclass.initEvents.call(this);
+ this.el.on("click", this.onClick, this);
+ this.el.on("change", this.onClick, this)
+},getResizeEl:function() {
+ return this.wrap
+},getPositionEl:function() {
+ return this.wrap
+},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,onRender:function(B, A) {
+ Ext.form.Checkbox.superclass.onRender.call(this, B, A);
+ if (this.inputValue !== undefined) {
+ this.el.dom.value = this.inputValue
+ }
+ this.wrap = this.el.wrap({cls:"x-form-check-wrap"});
+ if (this.boxLabel) {
+ this.wrap.createChild({tag:"label",htmlFor:this.el.id,cls:"x-form-cb-label",html:this.boxLabel})
+ }
+ if (this.checked) {
+ this.setValue(true)
+ } else {
+ this.checked = this.el.dom.checked
+ }
+},onDestroy:function() {
+ if (this.wrap) {
+ this.wrap.remove()
+ }
+ Ext.form.Checkbox.superclass.onDestroy.call(this)
+},initValue:Ext.emptyFn,getValue:function() {
+ if (this.rendered) {
+ return this.el.dom.checked
+ }
+ return false
+},onClick:function() {
+ if (this.el.dom.checked != this.checked) {
+ this.setValue(this.el.dom.checked)
+ }
+},setValue:function(A) {
+ this.checked = (A === true || A === "true" || A == "1"
+ || String(A).toLowerCase() == "on");
+ if (this.el && this.el.dom) {
+ this.el.dom.checked = this.checked;
+ this.el.dom.defaultChecked = this.checked
+ }
+ this.fireEvent("check", this, this.checked)
+}});
+Ext.reg("checkbox", Ext.form.Checkbox);
+Ext.form.Radio
+ = Ext.extend(Ext.form.Checkbox, {inputType:"radio",markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,getGroupValue:function() {
+ var A = this.el.up("form") || Ext.getBody();
+ var B = A.child("input[name=" + this.el.dom.name + "]:checked", true);
+ return B ? B.value : null
+},onClick:function() {
+ if (this.el.dom.checked != this.checked) {
+ var B = this.el.up("form") || Ext.getBody();
+ var A = B.select("input[name=" + this.el.dom.name + "]");
+ A.each(function(C) {
+ if (C.dom.id == this.id) {
+ this.setValue(true)
+ } else {
+ Ext.getCmp(C.dom.id).setValue(false)
+ }
+ }, this)
+ }
+},setValue:function(A) {
+ if (typeof A == "boolean") {
+ Ext.form.Radio.superclass.setValue.call(this, A)
+ } else {
+ var B = this.el.up("form").child("input[name=" + this.el.dom.name
+ + "][value=" + A + "]", true);
+ if (B) {
+ B.checked = true
+ }
+ }
+}});
+Ext.reg("radio", Ext.form.Radio);
+Ext.form.Hidden
+ = Ext.extend(Ext.form.Field, {inputType:"hidden",onRender:function() {
+ Ext.form.Hidden.superclass.onRender.apply(this, arguments)
+},initEvents:function() {
+ this.originalValue = this.getValue()
+},setSize:Ext.emptyFn,setWidth:Ext.emptyFn,setHeight:Ext.emptyFn,setPosition:Ext.emptyFn,setPagePosition:Ext.emptyFn,markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn});
+Ext.reg("hidden", Ext.form.Hidden);
+Ext.form.BasicForm = function(B, A) {
+ Ext.apply(this, A);
+ this.items = new Ext.util.MixedCollection(false, function(C) {
+ return C.id || (C.id = Ext.id())
+ });
+ this.addEvents("beforeaction", "actionfailed", "actioncomplete");
+ if (B) {
+ this.initEl(B)
+ }
+ Ext.form.BasicForm.superclass.constructor.call(this)
+};
+Ext.extend(Ext.form.BasicForm, Ext.util.Observable, {timeout:30,activeAction:null,trackResetOnLoad:false,initEl:function(
+ A) {
+ this.el = Ext.get(A);
+ this.id = this.el.id || Ext.id();
+ if (!this.standardSubmit) {
+ this.el.on("submit", this.onSubmit, this)
+ }
+ this.el.addClass("x-form")
+},getEl:function() {
+ return this.el
+},onSubmit:function(A) {
+ A.stopEvent()
+},destroy:function() {
+ this.items.each(function(A) {
+ Ext.destroy(A)
+ });
+ if (this.el) {
+ this.el.removeAllListeners();
+ this.el.remove()
+ }
+ this.purgeListeners()
+},isValid:function() {
+ var A = true;
+ this.items.each(function(B) {
+ if (!B.validate()) {
+ A = false
+ }
+ });
+ return A
+},isDirty:function() {
+ var A = false;
+ this.items.each(function(B) {
+ if (B.isDirty()) {
+ A = true;
+ return false
+ }
+ });
+ return A
+},doAction:function(B, A) {
+ if (typeof B == "string") {
+ B = new Ext.form.Action.ACTION_TYPES[B](this, A)
+ }
+ if (this.fireEvent("beforeaction", this, B) !== false) {
+ this.beforeAction(B);
+ B.run.defer(100, B)
+ }
+ return this
+},submit:function(B) {
+ if (this.standardSubmit) {
+ var A = this.isValid();
+ if (A) {
+ this.el.dom.submit()
+ }
+ return A
+ }
+ this.doAction("submit", B);
+ return this
+},load:function(A) {
+ this.doAction("load", A);
+ return this
+},updateRecord:function(B) {
+ B.beginEdit();
+ var A = B.fields;
+ A.each(function(C) {
+ var D = this.findField(C.name);
+ if (D) {
+ B.set(C.name, D.getValue())
+ }
+ }, this);
+ B.endEdit();
+ return this
+},loadRecord:function(A) {
+ this.setValues(A.data);
+ return this
+},beforeAction:function(A) {
+ var B = A.options;
+ if (B.waitMsg) {
+ if (this.waitMsgTarget === true) {
+ this.el.mask(B.waitMsg, "x-mask-loading")
+ } else {
+ if (this.waitMsgTarget) {
+ this.waitMsgTarget = Ext.get(this.waitMsgTarget);
+ this.waitMsgTarget.mask(B.waitMsg, "x-mask-loading")
+ } else {
+ Ext.MessageBox.wait(B.waitMsg, B.waitTitle || this.waitTitle
+ || "Please Wait...")
+ }
+ }
+ }
+},afterAction:function(A, C) {
+ this.activeAction = null;
+ var B = A.options;
+ if (B.waitMsg) {
+ if (this.waitMsgTarget === true) {
+ this.el.unmask()
+ } else {
+ if (this.waitMsgTarget) {
+ this.waitMsgTarget.unmask()
+ } else {
+ Ext.MessageBox.updateProgress(1);
+ Ext.MessageBox.hide()
+ }
+ }
+ }
+ if (C) {
+ if (B.reset) {
+ this.reset()
+ }
+ Ext.callback(B.success, B.scope, [this,A]);
+ this.fireEvent("actioncomplete", this, A)
+ } else {
+ Ext.callback(B.failure, B.scope, [this,A]);
+ this.fireEvent("actionfailed", this, A)
+ }
+},findField:function(B) {
+ var A = this.items.get(B);
+ if (!A) {
+ this.items.each(function(C) {
+ if (C.isFormField && (C.dataIndex == B || C.id == B || C.getName()
+ == B)) {
+ A = C;
+ return false
+ }
+ })
+ }
+ return A || null
+},markInvalid:function(G) {
+ if (Ext.isArray(G)) {
+ for (var C = 0,A = G.length; C < A; C++) {
+ var B = G[C];
+ var D = this.findField(B.id);
+ if (D) {
+ D.markInvalid(B.msg)
+ }
+ }
+ } else {
+ var E,F;
+ for (F in G) {
+ if (typeof G[F] != "function" && (E = this.findField(F))) {
+ E.markInvalid(G[F])
+ }
+ }
+ }
+ return this
+},setValues:function(C) {
+ if (Ext.isArray(C)) {
+ for (var D = 0,A = C.length; D < A; D++) {
+ var B = C[D];
+ var E = this.findField(B.id);
+ if (E) {
+ E.setValue(B.value);
+ if (this.trackResetOnLoad) {
+ E.originalValue = E.getValue()
+ }
+ }
+ }
+ } else {
+ var F,G;
+ for (G in C) {
+ if (typeof C[G] != "function" && (F = this.findField(G))) {
+ F.setValue(C[G]);
+ if (this.trackResetOnLoad) {
+ F.originalValue = F.getValue()
+ }
+ }
+ }
+ }
+ return this
+},getValues:function(B) {
+ var A = Ext.lib.Ajax.serializeForm(this.el.dom);
+ if (B === true) {
+ return A
+ }
+ return Ext.urlDecode(A)
+},clearInvalid:function() {
+ this.items.each(function(A) {
+ A.clearInvalid()
+ });
+ return this
+},reset:function() {
+ this.items.each(function(A) {
+ A.reset()
+ });
+ return this
+},add:function() {
+ this.items.addAll(Array.prototype.slice.call(arguments, 0));
+ return this
+},remove:function(A) {
+ this.items.remove(A);
+ return this
+},render:function() {
+ this.items.each(function(A) {
+ if (A.isFormField && !A.rendered && document.getElementById(A.id)) {
+ A.applyToMarkup(A.id)
+ }
+ });
+ return this
+},applyToFields:function(A) {
+ this.items.each(function(B) {
+ Ext.apply(B, A)
+ });
+ return this
+},applyIfToFields:function(A) {
+ this.items.each(function(B) {
+ Ext.applyIf(B, A)
+ });
+ return this
+}});
+Ext.BasicForm = Ext.form.BasicForm;
+Ext.FormPanel
+ = Ext.extend(Ext.Panel, {buttonAlign:"center",minButtonWidth:75,labelAlign:"left",monitorValid:false,monitorPoll:200,layout:"form",initComponent:function() {
+ this.form = this.createForm();
+ Ext.FormPanel.superclass.initComponent.call(this);
+ this.addEvents("clientvalidation");
+ this.relayEvents(this.form, ["beforeaction","actionfailed","actioncomplete"])
+},createForm:function() {
+ delete this.initialConfig.listeners;
+ return new Ext.form.BasicForm(null, this.initialConfig)
+},initFields:function() {
+ var C = this.form;
+ var A = this;
+ var B = function(D) {
+ if (D.doLayout && D != A) {
+ Ext.applyIf(D, {labelAlign:D.ownerCt.labelAlign,labelWidth:D.ownerCt.labelWidth,itemCls:D.ownerCt.itemCls});
+ if (D.items) {
+ D.items.each(B)
+ }
+ } else {
+ if (D.isFormField) {
+ C.add(D)
+ }
+ }
+ };
+ this.items.each(B)
+},getLayoutTarget:function() {
+ return this.form.el
+},getForm:function() {
+ return this.form
+},onRender:function(B, A) {
+ this.initFields();
+ Ext.FormPanel.superclass.onRender.call(this, B, A);
+ var C = {tag:"form",method:this.method || "POST",id:this.formId
+ || Ext.id()};
+ if (this.fileUpload) {
+ C.enctype = "multipart/form-data"
+ }
+ this.form.initEl(this.body.createChild(C))
+},beforeDestroy:function() {
+ Ext.FormPanel.superclass.beforeDestroy.call(this);
+ Ext.destroy(this.form)
+},initEvents:function() {
+ Ext.FormPanel.superclass.initEvents.call(this);
+ this.items.on("remove", this.onRemove, this);
+ this.items.on("add", this.onAdd, this);
+ if (this.monitorValid) {
+ this.startMonitoring()
+ }
+},onAdd:function(A, B) {
+ if (B.isFormField) {
+ this.form.add(B)
+ }
+},onRemove:function(A) {
+ if (A.isFormField) {
+ Ext.destroy(A.container.up(".x-form-item"));
+ this.form.remove(A)
+ }
+},startMonitoring:function() {
+ if (!this.bound) {
+ this.bound = true;
+ Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll
+ || 200,scope:this})
+ }
+},stopMonitoring:function() {
+ this.bound = false
+},load:function() {
+ this.form.load.apply(this.form, arguments)
+},onDisable:function() {
+ Ext.FormPanel.superclass.onDisable.call(this);
+ if (this.form) {
+ this.form.items.each(function() {
+ this.disable()
+ })
+ }
+},onEnable:function() {
+ Ext.FormPanel.superclass.onEnable.call(this);
+ if (this.form) {
+ this.form.items.each(function() {
+ this.enable()
+ })
+ }
+},bindHandler:function() {
+ if (!this.bound) {
+ return false
+ }
+ var D = true;
+ this.form.items.each(function(E) {
+ if (!E.isValid(true)) {
+ D = false;
+ return false
+ }
+ });
+ if (this.buttons) {
+ for (var C = 0,A = this.buttons.length; C < A; C++) {
+ var B = this.buttons[C];
+ if (B.formBind === true && B.disabled === D) {
+ B.setDisabled(!D)
+ }
+ }
+ }
+ this.fireEvent("clientvalidation", this, D)
+}});
+Ext.reg("form", Ext.FormPanel);
+Ext.form.FormPanel = Ext.FormPanel;
+Ext.form.FieldSet
+ = Ext.extend(Ext.Panel, {baseCls:"x-fieldset",layout:"form",onRender:function(
+ B, A) {
+ if (!this.el) {
+ this.el = document.createElement("fieldset");
+ this.el.id = this.id;
+ if (this.title || this.header || this.checkboxToggle) {
+ this.el.appendChild(document.createElement("legend")).className
+ = "x-fieldset-header"
+ }
+ }
+ Ext.form.FieldSet.superclass.onRender.call(this, B, A);
+ if (this.checkboxToggle) {
+ var C = typeof this.checkboxToggle == "object" ? this.checkboxToggle
+ : {tag:"input",type:"checkbox",name:this.checkboxName || this.id
+ + "-checkbox"};
+ this.checkbox = this.header.insertFirst(C);
+ this.checkbox.dom.checked = !this.collapsed;
+ this.checkbox.on("click", this.onCheckClick, this)
+ }
+},onCollapse:function(A, B) {
+ if (this.checkbox) {
+ this.checkbox.dom.checked = false
+ }
+ this.afterCollapse()
+},onExpand:function(A, B) {
+ if (this.checkbox) {
+ this.checkbox.dom.checked = true
+ }
+ this.afterExpand()
+},onCheckClick:function() {
+ this[this.checkbox.dom.checked ? "expand" : "collapse"]()
+}});
+Ext.reg("fieldset", Ext.form.FieldSet);
+Ext.form.HtmlEditor
+ = Ext.extend(Ext.form.Field, {enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,enableLinks:true,enableFont:true,createLinkText:"Please enter the URL for the link:",defaultLinkValue:"http:/"
+ + "/",fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],defaultFont:"tahoma",validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Ext.emptyFn,iframePad:3,hideMode:"offsets",defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"off"},initComponent:function() {
+ this.addEvents("initialize", "activate", "beforesync", "beforepush", "sync", "push", "editmodechange")
+},createFontOptions:function() {
+ var D = [],B = this.fontFamilies,C,F;
+ for (var E = 0,A = B.length; E < A; E++) {
+ C = B[E];
+ F = C.toLowerCase();
+ D.push("<option value=\"", F, "\" style=\"font-family:", C, ";\"", (this.defaultFont
+ == F ? " selected=\"true\">" : ">"), C, "</option>")
+ }
+ return D.join("")
+},createToolbar:function(C) {
+ function B(F, D, E) {
+ return{itemId:F,cls:"x-btn-icon x-edit-" + F,enableToggle:D
+ !== false,scope:C,handler:E
+ || C.relayBtnCmd,clickEvent:"mousedown",tooltip:C.buttonTips[F]
+ || undefined,tabIndex:-1}
+ }
+
+ var A = new Ext.Toolbar({renderTo:this.wrap.dom.firstChild});
+ A.el.on("click", function(D) {
+ D.preventDefault()
+ });
+ if (this.enableFont && !Ext.isSafari) {
+ this.fontSelect
+ = A.el.createChild({tag:"select",cls:"x-font-select",html:this.createFontOptions()});
+ this.fontSelect.on("change", function() {
+ var D = this.fontSelect.dom.value;
+ this.relayCmd("fontname", D);
+ this.deferFocus()
+ }, this);
+ A.add(this.fontSelect.dom, "-")
+ }
+ if (this.enableFormat) {
+ A.add(B("bold"), B("italic"), B("underline"))
+ }
+ if (this.enableFontSize) {
+ A.add("-", B("increasefontsize", false, this.adjustFont), B("decreasefontsize", false, this.adjustFont))
+ }
+ if (this.enableColors) {
+ A.add("-", {itemId:"forecolor",cls:"x-btn-icon x-edit-forecolor",clickEvent:"mousedown",tooltip:C.buttonTips["forecolor"]
+ || undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:"000000",plain:true,selectHandler:function(
+ E, D) {
+ this.execCmd("forecolor", Ext.isSafari || Ext.isIE ? "#" + D : D);
+ this.deferFocus()
+ },scope:this,clickEvent:"mousedown"})}, {itemId:"backcolor",cls:"x-btn-icon x-edit-backcolor",clickEvent:"mousedown",tooltip:C.buttonTips["backcolor"]
+ || undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:"FFFFFF",plain:true,allowReselect:true,selectHandler:function(
+ E, D) {
+ if (Ext.isGecko) {
+ this.execCmd("useCSS", false);
+ this.execCmd("hilitecolor", D);
+ this.execCmd("useCSS", true);
+ this.deferFocus()
+ } else {
+ this.execCmd(Ext.isOpera ? "hilitecolor"
+ : "backcolor", Ext.isSafari || Ext.isIE ? "#" + D : D);
+ this.deferFocus()
+ }
+ },scope:this,clickEvent:"mousedown"})})
+ }
+ if (this.enableAlignments) {
+ A.add("-", B("justifyleft"), B("justifycenter"), B("justifyright"))
+ }
+ if (!Ext.isSafari) {
+ if (this.enableLinks) {
+ A.add("-", B("createlink", false, this.createLink))
+ }
+ if (this.enableLists) {
+ A.add("-", B("insertorderedlist"), B("insertunorderedlist"))
+ }
+ if (this.enableSourceEdit) {
+ A.add("-", B("sourceedit", true, function(D) {
+ this.toggleSourceEdit(D.pressed)
+ }))
+ }
+ }
+ this.tb = A
+},getDocMarkup:function() {
+ return"<html><head><style type=\"text/css\">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>"
+},getEditorBody:function() {
+ return this.doc.body || this.doc.documentElement
+},onRender:function(C, A) {
+ Ext.form.HtmlEditor.superclass.onRender.call(this, C, A);
+ this.el.dom.style.border = "0 none";
+ this.el.dom.setAttribute("tabIndex", -1);
+ this.el.addClass("x-hidden");
+ if (Ext.isIE) {
+ this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")
+ }
+ this.wrap
+ = this.el.wrap({cls:"x-html-editor-wrap",cn:{cls:"x-html-editor-tb"}});
+ this.createToolbar(this);
+ this.tb.items.each(function(E) {
+ if (E.itemId != "sourceedit") {
+ E.disable()
+ }
+ });
+ var D = document.createElement("iframe");
+ D.name = Ext.id();
+ D.frameBorder = "no";
+ D.src = (Ext.SSL_SECURE_URL || "javascript:false");
+ this.wrap.dom.appendChild(D);
+ this.iframe = D;
+ if (Ext.isIE) {
+ D.contentWindow.document.designMode = "on";
+ this.doc = D.contentWindow.document;
+ this.win = D.contentWindow
+ } else {
+ this.doc = (D.contentDocument || window.frames[D.name].document);
+ this.win = window.frames[D.name];
+ this.doc.designMode = "on"
+ }
+ this.doc.open();
+ this.doc.write(this.getDocMarkup());
+ this.doc.close();
+ var B = {run:function() {
+ if (this.doc.body || this.doc.readyState == "complete") {
+ Ext.TaskMgr.stop(B);
+ this.doc.designMode = "on";
+ this.initEditor.defer(10, this)
+ }
+ },interval:10,duration:10000,scope:this};
+ Ext.TaskMgr.start(B);
+ if (!this.width) {
+ this.setSize(this.el.getSize())
+ }
+},onResize:function(B, C) {
+ Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments);
+ if (this.el && this.iframe) {
+ if (typeof B == "number") {
+ var D = B - this.wrap.getFrameWidth("lr");
+ this.el.setWidth(this.adjustWidth("textarea", D));
+ this.iframe.style.width = D + "px"
+ }
+ if (typeof C == "number") {
+ var A = C - this.wrap.getFrameWidth("tb") - this.tb.el.getHeight();
+ this.el.setHeight(this.adjustWidth("textarea", A));
+ this.iframe.style.height = A + "px";
+ if (this.doc) {
+ this.getEditorBody().style.height = (A - (this.iframePad * 2))
+ + "px"
+ }
+ }
+ }
+},toggleSourceEdit:function(A) {
+ if (A === undefined) {
+ A = !this.sourceEditMode
+ }
+ this.sourceEditMode = A === true;
+ var C = this.tb.items.get("sourceedit");
+ if (C.pressed !== this.sourceEditMode) {
+ C.toggle(this.sourceEditMode);
+ return
+ }
+ if (this.sourceEditMode) {
+ this.tb.items.each(function(D) {
+ if (D.itemId != "sourceedit") {
+ D.disable()
+ }
+ });
+ this.syncValue();
+ this.iframe.className = "x-hidden";
+ this.el.removeClass("x-hidden");
+ this.el.dom.removeAttribute("tabIndex");
+ this.el.focus()
+ } else {
+ if (this.initialized) {
+ this.tb.items.each(function(D) {
+ D.enable()
+ })
+ }
+ this.pushValue();
+ this.iframe.className = "";
+ this.el.addClass("x-hidden");
+ this.el.dom.setAttribute("tabIndex", -1);
+ this.deferFocus()
+ }
+ var B = this.lastSize;
+ if (B) {
+ delete this.lastSize;
+ this.setSize(B)
+ }
+ this.fireEvent("editmodechange", this, this.sourceEditMode)
+},createLink:function() {
+ var A = prompt(this.createLinkText, this.defaultLinkValue);
+ if (A && A != "http:/" + "/") {
+ this.relayCmd("createlink", A)
+ }
+},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function() {
+ return this.wrap
+},getPositionEl:function() {
+ return this.wrap
+},initEvents:function() {
+ this.originalValue = this.getValue()
+},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(A) {
+ Ext.form.HtmlEditor.superclass.setValue.call(this, A);
+ this.pushValue()
+},cleanHtml:function(A) {
+ A = String(A);
+ if (A.length > 5) {
+ if (Ext.isSafari) {
+ A = A.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, "")
+ }
+ }
+ if (A == "&nbsp;") {
+ A = ""
+ }
+ return A
+},syncValue:function() {
+ if (this.initialized) {
+ var D = this.getEditorBody();
+ var C = D.innerHTML;
+ if (Ext.isSafari) {
+ var B = D.getAttribute("style");
+ var A = B.match(/text-align:(.*?);/i);
+ if (A && A[1]) {
+ C = "<div style=\"" + A[0] + "\">" + C + "</div>"
+ }
+ }
+ C = this.cleanHtml(C);
+ if (this.fireEvent("beforesync", this, C) !== false) {
+ this.el.dom.value = C;
+ this.fireEvent("sync", this, C)
+ }
+ }
+},pushValue:function() {
+ if (this.initialized) {
+ var A = this.el.dom.value;
+ if (!this.activated && A.length < 1) {
+ A = "&nbsp;"
+ }
+ if (this.fireEvent("beforepush", this, A) !== false) {
+ this.getEditorBody().innerHTML = A;
+ this.fireEvent("push", this, A)
+ }
+ }
+},deferFocus:function() {
+ this.focus.defer(10, this)
+},focus:function() {
+ if (this.win && !this.sourceEditMode) {
+ this.win.focus()
+ } else {
+ this.el.focus()
+ }
+},initEditor:function() {
+ var B = this.getEditorBody();
+ var A = this.el.getStyles("font-size", "font-family", "background-image", "background-repeat");
+ A["background-attachment"] = "fixed";
+ B.bgProperties = "fixed";
+ Ext.DomHelper.applyStyles(B, A);
+ Ext.EventManager.on(this.doc, {"mousedown":this.onEditorEvent,"dblclick":this.onEditorEvent,"click":this.onEditorEvent,"keyup":this.onEditorEvent,buffer:100,scope:this});
+ if (Ext.isGecko) {
+ Ext.EventManager.on(this.doc, "keypress", this.applyCommand, this)
+ }
+ if (Ext.isIE || Ext.isSafari || Ext.isOpera) {
+ Ext.EventManager.on(this.doc, "keydown", this.fixKeys, this)
+ }
+ this.initialized = true;
+ this.fireEvent("initialize", this);
+ this.pushValue()
+},onDestroy:function() {
+ if (this.rendered) {
+ this.tb.items.each(function(A) {
+ if (A.menu) {
+ A.menu.removeAll();
+ if (A.menu.el) {
+ A.menu.el.destroy()
+ }
+ }
+ A.destroy()
+ });
+ this.wrap.dom.innerHTML = "";
+ this.wrap.remove()
+ }
+},onFirstFocus:function() {
+ this.activated = true;
+ this.tb.items.each(function(D) {
+ D.enable()
+ });
+ if (Ext.isGecko) {
+ this.win.focus();
+ var A = this.win.getSelection();
+ if (!A.focusNode || A.focusNode.nodeType != 3) {
+ var B = A.getRangeAt(0);
+ B.selectNodeContents(this.getEditorBody());
+ B.collapse(true);
+ this.deferFocus()
+ }
+ try {
+ this.execCmd("useCSS", true);
+ this.execCmd("styleWithCSS", false)
+ } catch(C) {
+ }
+ }
+ this.fireEvent("activate", this)
+},adjustFont:function(B) {
+ var C = B.itemId == "increasefontsize" ? 1 : -1;
+ var A = parseInt(this.doc.queryCommandValue("FontSize") || 2, 10);
+ if (Ext.isSafari3 || Ext.isAir) {
+ if (A <= 10) {
+ A = 1 + C
+ } else {
+ if (A <= 13) {
+ A = 2 + C
+ } else {
+ if (A <= 16) {
+ A = 3 + C
+ } else {
+ if (A <= 18) {
+ A = 4 + C
+ } else {
+ if (A <= 24) {
+ A = 5 + C
+ } else {
+ A = 6 + C
+ }
+ }
+ }
+ }
+ }
+ A = A.constrain(1, 6)
+ } else {
+ if (Ext.isSafari) {
+ C *= 2
+ }
+ A = Math.max(1, A + C) + (Ext.isSafari ? "px" : 0)
+ }
+ this.execCmd("FontSize", A)
+},onEditorEvent:function(A) {
+ this.updateToolbar()
+},updateToolbar:function() {
+ if (!this.activated) {
+ this.onFirstFocus();
+ return
+ }
+ var B = this.tb.items.map,C = this.doc;
+ if (this.enableFont && !Ext.isSafari) {
+ var A = (this.doc.queryCommandValue("FontName")
+ || this.defaultFont).toLowerCase();
+ if (A != this.fontSelect.dom.value) {
+ this.fontSelect.dom.value = A
+ }
+ }
+ if (this.enableFormat) {
+ B.bold.toggle(C.queryCommandState("bold"));
+ B.italic.toggle(C.queryCommandState("italic"));
+ B.underline.toggle(C.queryCommandState("underline"))
+ }
+ if (this.enableAlignments) {
+ B.justifyleft.toggle(C.queryCommandState("justifyleft"));
+ B.justifycenter.toggle(C.queryCommandState("justifycenter"));
+ B.justifyright.toggle(C.queryCommandState("justifyright"))
+ }
+ if (!Ext.isSafari && this.enableLists) {
+ B.insertorderedlist.toggle(C.queryCommandState("insertorderedlist"));
+ B.insertunorderedlist.toggle(C.queryCommandState("insertunorderedlist"))
+ }
+ Ext.menu.MenuMgr.hideAll();
+ this.syncValue()
+},relayBtnCmd:function(A) {
+ this.relayCmd(A.itemId)
+},relayCmd:function(B, A) {
+ this.win.focus();
+ this.execCmd(B, A);
+ this.updateToolbar();
+ this.deferFocus()
+},execCmd:function(B, A) {
+ this.doc.execCommand(B, false, A === undefined ? null : A);
+ this.syncValue()
+},applyCommand:function(B) {
+ if (B.ctrlKey) {
+ var C = B.getCharCode(),A;
+ if (C > 0) {
+ C = String.fromCharCode(C);
+ switch (C) {case"b":A = "bold";break;case"i":A
+ = "italic";break;case"u":A = "underline";break}
+ if (A) {
+ this.win.focus();
+ this.execCmd(A);
+ this.deferFocus();
+ B.preventDefault()
+ }
+ }
+ }
+},insertAtCursor:function(B) {
+ if (!this.activated) {
+ return
+ }
+ if (Ext.isIE) {
+ this.win.focus();
+ var A = this.doc.selection.createRange();
+ if (A) {
+ A.collapse(true);
+ A.pasteHTML(B);
+ this.syncValue();
+ this.deferFocus()
+ }
+ } else {
+ if (Ext.isGecko || Ext.isOpera) {
+ this.win.focus();
+ this.execCmd("InsertHTML", B);
+ this.deferFocus()
+ } else {
+ if (Ext.isSafari) {
+ this.execCmd("InsertText", B);
+ this.deferFocus()
+ }
+ }
+ }
+},fixKeys:function() {
+ if (Ext.isIE) {
+ return function(D) {
+ var A = D.getKey(),B;
+ if (A == D.TAB) {
+ D.stopEvent();
+ B = this.doc.selection.createRange();
+ if (B) {
+ B.collapse(true);
+ B.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");
+ this.deferFocus()
+ }
+ } else {
+ if (A == D.ENTER) {
+ B = this.doc.selection.createRange();
+ if (B) {
+ var C = B.parentElement();
+ if (!C || C.tagName.toLowerCase() != "li") {
+ D.stopEvent();
+ B.pasteHTML("<br />");
+ B.collapse(false);
+ B.select()
+ }
+ }
+ }
+ }
+ }
+ } else {
+ if (Ext.isOpera) {
+ return function(B) {
+ var A = B.getKey();
+ if (A == B.TAB) {
+ B.stopEvent();
+ this.win.focus();
+ this.execCmd("InsertHTML", "&nbsp;&nbsp;&nbsp;&nbsp;");
+ this.deferFocus()
+ }
+ }
+ } else {
+ if (Ext.isSafari) {
+ return function(B) {
+ var A = B.getKey();
+ if (A == B.TAB) {
+ B.stopEvent();
+ this.execCmd("InsertText", "\t");
+ this.deferFocus()
+ }
+ }
+ }
+ }
+ }
+}(),getToolbar:function() {
+ return this.tb
+},buttonTips:{bold:{title:"Bold (Ctrl+B)",text:"Make the selected text bold.",cls:"x-html-editor-tip"},italic:{title:"Italic (Ctrl+I)",text:"Make the selected text italic.",cls:"x-html-editor-tip"},underline:{title:"Underline (Ctrl+U)",text:"Underline the selected text.",cls:"x-html-editor-tip"},increasefontsize:{title:"Grow Text",text:"Increase the font size.",cls:"x-html-editor-tip"},decreasefontsize:{title:"Shrink Text",text:"Decrease the font size.",cls:"x-html-editor-tip"},backcolor:{title:"Text Highlight Color",text:"Change the background color of the selected text.",cls:"x-html-editor-tip"},forecolor:{title:"Font Color",text:"Change the color of the selected text.",cls:"x-html-editor-tip"},justifyleft:{title:"Align Text Left",text:"Align text to the left.",cls:"x-html-editor-tip"},justifycenter:{title:"Center Text",text:"Center text in the editor.",cls:"x-html-editor-tip"},justifyright:{title:"Align Text Right",text:"Align text to the right.",cls:"x-html-editor-tip"},insertunorderedlist:{title:"Bullet List",text:"Start a bulleted list.",cls:"x-html-editor-tip"},insertorderedlist:{title:"Numbered List",text:"Start a numbered list.",cls:"x-html-editor-tip"},createlink:{title:"Hyperlink",text:"Make the selected text a hyperlink.",cls:"x-html-editor-tip"},sourceedit:{title:"Source Edit",text:"Switch to source editing mode.",cls:"x-html-editor-tip"}}});
+Ext.reg("htmleditor", Ext.form.HtmlEditor);
+Ext.form.TimeField
+ = Ext.extend(Ext.form.ComboBox, {minValue:null,maxValue:null,minText:"The time in this field must be equal to or after {0}",maxText:"The time in this field must be equal to or before {0}",invalidText:"{0} is not a valid time",format:"g:i A",altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H",increment:15,mode:"local",triggerAction:"all",typeAhead:false,initComponent:function() {
+ Ext.form.TimeField.superclass.initComponent.call(this);
+ if (typeof this.minValue == "string") {
+ this.minValue = this.parseDate(this.minValue)
+ }
+ if (typeof this.maxValue == "string") {
+ this.maxValue = this.parseDate(this.maxValue)
+ }
+ if (!this.store) {
+ var B = this.parseDate(this.minValue);
+ if (!B) {
+ B = new Date().clearTime()
+ }
+ var A = this.parseDate(this.maxValue);
+ if (!A) {
+ A = new Date().clearTime().add("mi", (24 * 60) - 1)
+ }
+ var C = [];
+ while (B <= A) {
+ C.push([B.dateFormat(this.format)]);
+ B = B.add("mi", this.increment)
+ }
+ this.store = new Ext.data.SimpleStore({fields:["text"],data:C});
+ this.displayField = "text"
+ }
+},getValue:function() {
+ var A = Ext.form.TimeField.superclass.getValue.call(this);
+ return this.formatDate(this.parseDate(A)) || ""
+},setValue:function(A) {
+ Ext.form.TimeField.superclass.setValue.call(this, this.formatDate(this.parseDate(A)))
+},validateValue:Ext.form.DateField.prototype.validateValue,parseDate:Ext.form.DateField.prototype.parseDate,formatDate:Ext.form.DateField.prototype.formatDate,beforeBlur:function() {
+ var A = this.parseDate(this.getRawValue());
+ if (A) {
+ this.setValue(A.dateFormat(this.format))
+ }
+}});
+Ext.reg("timefield", Ext.form.TimeField);
+Ext.form.Label = Ext.extend(Ext.BoxComponent, {onRender:function(B, A) {
+ if (!this.el) {
+ this.el = document.createElement("label");
+ this.el.innerHTML = this.text ? Ext.util.Format.htmlEncode(this.text)
+ : (this.html || "");
+ if (this.forId) {
+ this.el.setAttribute("htmlFor", this.forId)
+ }
+ }
+ Ext.form.Label.superclass.onRender.call(this, B, A)
+}});
+Ext.reg("label", Ext.form.Label);
+Ext.form.Action = function(B, A) {
+ this.form = B;
+ this.options = A || {}
+};
+Ext.form.Action.CLIENT_INVALID = "client";
+Ext.form.Action.SERVER_INVALID = "server";
+Ext.form.Action.CONNECT_FAILURE = "connect";
+Ext.form.Action.LOAD_FAILURE = "load";
+Ext.form.Action.prototype = {type:"default",run:function(A) {
+},success:function(A) {
+},handleResponse:function(A) {
+},failure:function(A) {
+ this.response = A;
+ this.failureType = Ext.form.Action.CONNECT_FAILURE;
+ this.form.afterAction(this, false)
+},processResponse:function(A) {
+ this.response = A;
+ if (!A.responseText) {
+ return true
+ }
+ this.result = this.handleResponse(A);
+ return this.result
+},getUrl:function(C) {
+ var A = this.options.url || this.form.url || this.form.el.dom.action;
+ if (C) {
+ var B = this.getParams();
+ if (B) {
+ A += (A.indexOf("?") != -1 ? "&" : "?") + B
+ }
+ }
+ return A
+},getMethod:function() {
+ return(this.options.method || this.form.method || this.form.el.dom.method
+ || "POST").toUpperCase()
+},getParams:function() {
+ var A = this.form.baseParams;
+ var B = this.options.params;
+ if (B) {
+ if (typeof B == "object") {
+ B = Ext.urlEncode(Ext.applyIf(B, A))
+ } else {
+ if (typeof B == "string" && A) {
+ B += "&" + Ext.urlEncode(A)
+ }
+ }
+ } else {
+ if (A) {
+ B = Ext.urlEncode(A)
+ }
+ }
+ return B
+},createCallback:function(A) {
+ var A = A || {};
+ return{success:this.success,failure:this.failure,scope:this,timeout:(A.timeout
+ * 1000) || (this.form.timeout * 1000),upload:this.form.fileUpload
+ ? this.success : undefined}
+}};
+Ext.form.Action.Submit = function(B, A) {
+ Ext.form.Action.Submit.superclass.constructor.call(this, B, A)
+};
+Ext.extend(Ext.form.Action.Submit, Ext.form.Action, {type:"submit",run:function() {
+ var B = this.options;
+ var C = this.getMethod();
+ var A = C == "POST";
+ if (B.clientValidation === false || this.form.isValid()) {
+ Ext.Ajax.request(Ext.apply(this.createCallback(B), {form:this.form.el.dom,url:this.getUrl(!A),method:C,params:A
+ ? this.getParams() : null,isUpload:this.form.fileUpload}))
+ } else {
+ if (B.clientValidation !== false) {
+ this.failureType = Ext.form.Action.CLIENT_INVALID;
+ this.form.afterAction(this, false)
+ }
+ }
+},success:function(B) {
+ var A = this.processResponse(B);
+ if (A === true || A.success) {
+ this.form.afterAction(this, true);
+ return
+ }
+ if (A.errors) {
+ this.form.markInvalid(A.errors);
+ this.failureType = Ext.form.Action.SERVER_INVALID
+ }
+ this.form.afterAction(this, false)
+},handleResponse:function(C) {
+ if (this.form.errorReader) {
+ var B = this.form.errorReader.read(C);
+ var F = [];
+ if (B.records) {
+ for (var D = 0,A = B.records.length; D < A; D++) {
+ var E = B.records[D];
+ F[D] = E.data
+ }
+ }
+ if (F.length < 1) {
+ F = null
+ }
+ return{success:B.success,errors:F}
+ }
+ return Ext.decode(C.responseText)
+}});
+Ext.form.Action.Load = function(B, A) {
+ Ext.form.Action.Load.superclass.constructor.call(this, B, A);
+ this.reader = this.form.reader
+};
+Ext.extend(Ext.form.Action.Load, Ext.form.Action, {type:"load",run:function() {
+ Ext.Ajax.request(Ext.apply(this.createCallback(this.options), {method:this.getMethod(),url:this.getUrl(false),params:this.getParams()}))
+},success:function(B) {
+ var A = this.processResponse(B);
+ if (A === true || !A.success || !A.data) {
+ this.failureType = Ext.form.Action.LOAD_FAILURE;
+ this.form.afterAction(this, false);
+ return
+ }
+ this.form.clearInvalid();
+ this.form.setValues(A.data);
+ this.form.afterAction(this, true)
+},handleResponse:function(B) {
+ if (this.form.reader) {
+ var A = this.form.reader.read(B);
+ var C = A.records && A.records[0] ? A.records[0].data : null;
+ return{success:A.success,data:C}
+ }
+ return Ext.decode(B.responseText)
+}});
+Ext.form.Action.ACTION_TYPES
+ = {"load":Ext.form.Action.Load,"submit":Ext.form.Action.Submit};
+Ext.form.VTypes = function() {
+ var C = /^[a-zA-Z_]+$/;
+ var D = /^[a-zA-Z0-9_]+$/;
+ var B = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;
+ var A = /(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
+ return{"email":function(E) {
+ return B.test(E)
+ },"emailText":"This field should be an e-mail address in the format \"user@domain.com\"","emailMask":/[a-z0-9_\.\-@]/i,"url":function(
+ E) {
+ return A.test(E)
+ },"urlText":"This field should be a URL in the format \"http:/"
+ + "/www.domain.com\"","alpha":function(E) {
+ return C.test(E)
+ },"alphaText":"This field should only contain letters and _","alphaMask":/[a-z_]/i,"alphanum":function(
+ E) {
+ return D.test(E)
+ },"alphanumText":"This field should only contain letters, numbers and _","alphanumMask":/[a-z0-9_]/i}
+}();
+Ext.grid.GridPanel
+ = Ext.extend(Ext.Panel, {ddText:"{0} selected row{1}",minColumnWidth:25,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableHdMenu:true,stripeRows:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,rendered:false,viewReady:false,stateEvents:["columnmove","columnresize","sortchange"],initComponent:function() {
+ Ext.grid.GridPanel.superclass.initComponent.call(this);
+ this.autoScroll = false;
+ this.autoWidth = false;
+ if (Ext.isArray(this.columns)) {
+ this.colModel = new Ext.grid.ColumnModel(this.columns);
+ delete this.columns
+ }
+ if (this.ds) {
+ this.store = this.ds;
+ delete this.ds
+ }
+ if (this.cm) {
+ this.colModel = this.cm;
+ delete this.cm
+ }
+ if (this.sm) {
+ this.selModel = this.sm;
+ delete this.sm
+ }
+ this.store = Ext.StoreMgr.lookup(this.store);
+ this.addEvents("click", "dblclick", "contextmenu", "mousedown", "mouseup", "mouseover", "mouseout", "keypress", "keydown", "cellmousedown", "rowmousedown", "headermousedown", "cellclick", "celldblclick", "rowclick", "rowdblclick", "headerclick", "headerdblclick", "rowcontextmenu", "cellcontextmenu", "headercontextmenu", "bodyscroll", "columnresize", "columnmove", "sortchange")
+},onRender:function(C, A) {
+ Ext.grid.GridPanel.superclass.onRender.apply(this, arguments);
+ var D = this.body;
+ this.el.addClass("x-grid-panel");
+ var B = this.getView();
+ B.init(this);
+ D.on("mousedown", this.onMouseDown, this);
+ D.on("click", this.onClick, this);
+ D.on("dblclick", this.onDblClick, this);
+ D.on("contextmenu", this.onContextMenu, this);
+ D.on("keydown", this.onKeyDown, this);
+ this.relayEvents(D, ["mousedown","mouseup","mouseover","mouseout","keypress"]);
+ this.getSelectionModel().init(this);
+ this.view.render()
+},initEvents:function() {
+ Ext.grid.GridPanel.superclass.initEvents.call(this);
+ if (this.loadMask) {
+ this.loadMask
+ = new Ext.LoadMask(this.bwrap, Ext.apply({store:this.store}, this.loadMask))
+ }
+},initStateEvents:function() {
+ Ext.grid.GridPanel.superclass.initStateEvents.call(this);
+ this.colModel.on("hiddenchange", this.saveState, this, {delay:100})
+},applyState:function(F) {
+ var B = this.colModel;
+ var E = F.columns;
+ if (E) {
+ for (var C = 0,A = E.length; C < A; C++) {
+ var D = E[C];
+ var H = B.getColumnById(D.id);
+ if (H) {
+ H.hidden = D.hidden;
+ H.width = D.width;
+ var G = B.getIndexById(D.id);
+ if (G != C) {
+ B.moveColumn(G, C)
+ }
+ }
+ }
+ }
+ if (F.sort) {
+ this.store[this.store.remoteSort ? "setDefaultSort"
+ : "sort"](F.sort.field, F.sort.direction)
+ }
+},getState:function() {
+ var C = {columns:[]};
+ for (var B = 0,D; D = this.colModel.config[B]; B++) {
+ C.columns[B] = {id:D.id,width:D.width};
+ if (D.hidden) {
+ C.columns[B].hidden = true
+ }
+ }
+ var A = this.store.getSortState();
+ if (A) {
+ C.sort = A
+ }
+ return C
+},afterRender:function() {
+ Ext.grid.GridPanel.superclass.afterRender.call(this);
+ this.view.layout();
+ this.viewReady = true
+},reconfigure:function(A, B) {
+ if (this.loadMask) {
+ this.loadMask.destroy();
+ this.loadMask
+ = new Ext.LoadMask(this.bwrap, Ext.apply({store:A}, this.initialConfig.loadMask))
+ }
+ this.view.bind(A, B);
+ this.store = A;
+ this.colModel = B;
+ if (this.rendered) {
+ this.view.refresh(true)
+ }
+},onKeyDown:function(A) {
+ this.fireEvent("keydown", A)
+},onDestroy:function() {
+ if (this.rendered) {
+ if (this.loadMask) {
+ this.loadMask.destroy()
+ }
+ var A = this.body;
+ A.removeAllListeners();
+ this.view.destroy();
+ A.update("")
+ }
+ this.colModel.purgeListeners();
+ Ext.grid.GridPanel.superclass.onDestroy.call(this)
+},processEvent:function(C, E) {
+ this.fireEvent(C, E);
+ var D = E.getTarget();
+ var B = this.view;
+ var G = B.findHeaderIndex(D);
+ if (G !== false) {
+ this.fireEvent("header" + C, this, G, E)
+ } else {
+ var F = B.findRowIndex(D);
+ var A = B.findCellIndex(D);
+ if (F !== false) {
+ this.fireEvent("row" + C, this, F, E);
+ if (A !== false) {
+ this.fireEvent("cell" + C, this, F, A, E)
+ }
+ }
+ }
+},onClick:function(A) {
+ this.processEvent("click", A)
+},onMouseDown:function(A) {
+ this.processEvent("mousedown", A)
+},onContextMenu:function(B, A) {
+ this.processEvent("contextmenu", B)
+},onDblClick:function(A) {
+ this.processEvent("dblclick", A)
+},walkCells:function(J, C, B, E, I) {
+ var H = this.colModel,F = H.getColumnCount();
+ var A = this.store,G = A.getCount(),D = true;
+ if (B < 0) {
+ if (C < 0) {
+ J--;
+ D = false
+ }
+ while (J >= 0) {
+ if (!D) {
+ C = F - 1
+ }
+ D = false;
+ while (C >= 0) {
+ if (E.call(I || this, J, C, H) === true) {
+ return[J,C]
+ }
+ C--
+ }
+ J--
+ }
+ } else {
+ if (C >= F) {
+ J++;
+ D = false
+ }
+ while (J < G) {
+ if (!D) {
+ C = 0
+ }
+ D = false;
+ while (C < F) {
+ if (E.call(I || this, J, C, H) === true) {
+ return[J,C]
+ }
+ C++
+ }
+ J++
+ }
+ }
+ return null
+},getSelections:function() {
+ return this.selModel.getSelections()
+},onResize:function() {
+ Ext.grid.GridPanel.superclass.onResize.apply(this, arguments);
+ if (this.viewReady) {
+ this.view.layout()
+ }
+},getGridEl:function() {
+ return this.body
+},stopEditing:function() {
+},getSelectionModel:function() {
+ if (!this.selModel) {
+ this.selModel = new Ext.grid.RowSelectionModel(this.disableSelection
+ ? {selectRow:Ext.emptyFn} : null)
+ }
+ return this.selModel
+},getStore:function() {
+ return this.store
+},getColumnModel:function() {
+ return this.colModel
+},getView:function() {
+ if (!this.view) {
+ this.view = new Ext.grid.GridView(this.viewConfig)
+ }
+ return this.view
+},getDragDropText:function() {
+ var A = this.selModel.getCount();
+ return String.format(this.ddText, A, A == 1 ? "" : "s")
+}});
+Ext.reg("grid", Ext.grid.GridPanel);
+Ext.grid.GridView = function(A) {
+ Ext.apply(this, A);
+ this.addEvents("beforerowremoved", "beforerowsinserted", "beforerefresh", "rowremoved", "rowsinserted", "rowupdated", "refresh");
+ Ext.grid.GridView.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.GridView, Ext.util.Observable, {scrollOffset:19,autoFill:false,forceFit:false,sortClasses:["sort-asc","sort-desc"],sortAscText:"Sort Ascending",sortDescText:"Sort Descending",columnsText:"Columns",borderWidth:2,initTemplates:function() {
+ var C = this.templates || {};
+ if (!C.master) {
+ C.master
+ = new Ext.Template("<div class=\"x-grid3\" hidefocus=\"true\">", "<div class=\"x-grid3-viewport\">", "<div class=\"x-grid3-header\"><div class=\"x-grid3-header-inner\"><div class=\"x-grid3-header-offset\">{header}</div></div><div class=\"x-clear\"></div></div>", "<div class=\"x-grid3-scroller\"><div class=\"x-grid3-body\">{body}</div><a href=\"#\" class=\"x-grid3-focus\" tabIndex=\"-1\"></a></div>", "</div>", "<div class=\"x-grid3-resize-marker\">&#160;</div>", "<div class=\"x-grid3-resize-proxy\">&#160;</div>", "</div>")
+ }
+ if (!C.header) {
+ C.header
+ = new Ext.Template("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">", "<thead><tr class=\"x-grid3-hd-row\">{cells}</tr></thead>", "</table>")
+ }
+ if (!C.hcell) {
+ C.hcell = new Ext.Template("<td class=\"x-grid3-hd x-grid3-cell x-grid3-td-{id}\" style=\"{style}\"><div {tooltip} {attr} class=\"x-grid3-hd-inner x-grid3-hd-{id}\" unselectable=\"on\" style=\"{istyle}\">", this.grid.enableHdMenu
+ ? "<a class=\"x-grid3-hd-btn\" href=\"#\"></a>"
+ : "", "{value}<img class=\"x-grid3-sort-icon\" src=\"", Ext.BLANK_IMAGE_URL, "\" />", "</div></td>")
+ }
+ if (!C.body) {
+ C.body = new Ext.Template("{rows}")
+ }
+ if (!C.row) {
+ C.row = new Ext.Template("<div class=\"x-grid3-row {alt}\" style=\"{tstyle}\"><table class=\"x-grid3-row-table\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"{tstyle}\">", "<tbody><tr>{cells}</tr>", (this.enableRowBody
+ ? "<tr class=\"x-grid3-row-body-tr\" style=\"{bodyStyle}\"><td colspan=\"{cols}\" class=\"x-grid3-body-cell\" tabIndex=\"0\" hidefocus=\"on\"><div class=\"x-grid3-row-body\">{body}</div></td></tr>"
+ : ""), "</tbody></table></div>")
+ }
+ if (!C.cell) {
+ C.cell = new Ext.Template("<td class=\"x-grid3-col x-grid3-cell x-grid3-td-{id} {css}\" style=\"{style}\" tabIndex=\"0\" {cellAttr}>", "<div class=\"x-grid3-cell-inner x-grid3-col-{id}\" unselectable=\"on\" {attr}>{value}</div>", "</td>")
+ }
+ for (var A in C) {
+ var B = C[A];
+ if (B && typeof B.compile == "function" && !B.compiled) {
+ B.disableFormats = true;
+ B.compile()
+ }
+ }
+ this.templates = C;
+ this.tdClass = "x-grid3-cell";
+ this.cellSelector = "td.x-grid3-cell";
+ this.hdCls = "x-grid3-hd";
+ this.rowSelector = "div.x-grid3-row";
+ this.colRe = new RegExp("x-grid3-td-([^\\s]+)", "")
+},fly:function(A) {
+ if (!this._flyweight) {
+ this._flyweight = new Ext.Element.Flyweight(document.body)
+ }
+ this._flyweight.dom = A;
+ return this._flyweight
+},getEditorParent:function(A) {
+ return this.scroller.dom
+},initElements:function() {
+ var C = Ext.Element;
+ var B = this.grid.getGridEl().dom.firstChild;
+ var A = B.childNodes;
+ this.el = new C(B);
+ this.mainWrap = new C(A[0]);
+ this.mainHd = new C(this.mainWrap.dom.firstChild);
+ if (this.grid.hideHeaders) {
+ this.mainHd.setDisplayed(false)
+ }
+ this.innerHd = this.mainHd.dom.firstChild;
+ this.scroller = new C(this.mainWrap.dom.childNodes[1]);
+ if (this.forceFit) {
+ this.scroller.setStyle("overflow-x", "hidden")
+ }
+ this.mainBody = new C(this.scroller.dom.firstChild);
+ this.focusEl = new C(this.scroller.dom.childNodes[1]);
+ this.focusEl.swallowEvent("click", true);
+ this.resizeMarker = new C(A[1]);
+ this.resizeProxy = new C(A[2])
+},getRows:function() {
+ return this.hasRows() ? this.mainBody.dom.childNodes : []
+},findCell:function(A) {
+ if (!A) {
+ return false
+ }
+ return this.fly(A).findParent(this.cellSelector, 3)
+},findCellIndex:function(C, B) {
+ var A = this.findCell(C);
+ if (A && (!B || this.fly(A).hasClass(B))) {
+ return this.getCellIndex(A)
+ }
+ return false
+},getCellIndex:function(B) {
+ if (B) {
+ var A = B.className.match(this.colRe);
+ if (A && A[1]) {
+ return this.cm.getIndexById(A[1])
+ }
+ }
+ return false
+},findHeaderCell:function(B) {
+ var A = this.findCell(B);
+ return A && this.fly(A).hasClass(this.hdCls) ? A : null
+},findHeaderIndex:function(A) {
+ return this.findCellIndex(A, this.hdCls)
+},findRow:function(A) {
+ if (!A) {
+ return false
+ }
+ return this.fly(A).findParent(this.rowSelector, 10)
+},findRowIndex:function(A) {
+ var B = this.findRow(A);
+ return B ? B.rowIndex : false
+},getRow:function(A) {
+ return this.getRows()[A]
+},getCell:function(B, A) {
+ return this.getRow(B).getElementsByTagName("td")[A]
+},getHeaderCell:function(A) {
+ return this.mainHd.dom.getElementsByTagName("td")[A]
+},addRowClass:function(C, A) {
+ var B = this.getRow(C);
+ if (B) {
+ this.fly(B).addClass(A)
+ }
+},removeRowClass:function(C, A) {
+ var B = this.getRow(C);
+ if (B) {
+ this.fly(B).removeClass(A)
+ }
+},removeRow:function(A) {
+ Ext.removeNode(this.getRow(A))
+},removeRows:function(C, A) {
+ var B = this.mainBody.dom;
+ for (var D = C; D <= A; D++) {
+ Ext.removeNode(B.childNodes[C])
+ }
+},getScrollState:function() {
+ var A = this.scroller.dom;
+ return{left:A.scrollLeft,top:A.scrollTop}
+},restoreScroll:function(A) {
+ var B = this.scroller.dom;
+ B.scrollLeft = A.left;
+ B.scrollTop = A.top
+},scrollToTop:function() {
+ this.scroller.dom.scrollTop = 0;
+ this.scroller.dom.scrollLeft = 0
+},syncScroll:function() {
+ this.syncHeaderScroll();
+ var A = this.scroller.dom;
+ this.grid.fireEvent("bodyscroll", A.scrollLeft, A.scrollTop)
+},syncHeaderScroll:function() {
+ var A = this.scroller.dom;
+ this.innerHd.scrollLeft = A.scrollLeft;
+ this.innerHd.scrollLeft = A.scrollLeft
+},updateSortIcon:function(B, A) {
+ var D = this.sortClasses;
+ var C = this.mainHd.select("td").removeClass(D);
+ C.item(B).addClass(D[A == "DESC" ? 1 : 0])
+},updateAllColumnWidths:function() {
+ var D = this.getTotalWidth();
+ var H = this.cm.getColumnCount();
+ var F = [];
+ for (var B = 0; B < H; B++) {
+ F[B] = this.getColumnWidth(B)
+ }
+ this.innerHd.firstChild.firstChild.style.width = D;
+ for (var B = 0; B < H; B++) {
+ var C = this.getHeaderCell(B);
+ C.style.width = F[B]
+ }
+ var G = this.getRows();
+ for (var B = 0,E = G.length; B < E; B++) {
+ G[B].style.width = D;
+ G[B].firstChild.style.width = D;
+ var I = G[B].firstChild.rows[0];
+ for (var A = 0; A < H; A++) {
+ I.childNodes[A].style.width = F[A]
+ }
+ }
+ this.onAllColumnWidthsUpdated(F, D)
+},updateColumnWidth:function(D, G) {
+ var B = this.getColumnWidth(D);
+ var C = this.getTotalWidth();
+ this.innerHd.firstChild.firstChild.style.width = C;
+ var H = this.getHeaderCell(D);
+ H.style.width = B;
+ var F = this.getRows();
+ for (var E = 0,A = F.length; E < A; E++) {
+ F[E].style.width = C;
+ F[E].firstChild.style.width = C;
+ F[E].firstChild.rows[0].childNodes[D].style.width = B
+ }
+ this.onColumnWidthUpdated(D, B, C)
+},updateColumnHidden:function(C, F) {
+ var B = this.getTotalWidth();
+ this.innerHd.firstChild.firstChild.style.width = B;
+ var H = F ? "none" : "";
+ var G = this.getHeaderCell(C);
+ G.style.display = H;
+ var E = this.getRows();
+ for (var D = 0,A = E.length; D < A; D++) {
+ E[D].style.width = B;
+ E[D].firstChild.style.width = B;
+ E[D].firstChild.rows[0].childNodes[C].style.display = H
+ }
+ this.onColumnHiddenUpdated(C, F, B);
+ delete this.lastViewWidth;
+ this.layout()
+},doRender:function(E, G, M, A, L, Q) {
+ var B = this.templates,D = B.cell,F = B.row,H = L - 1;
+ var C = "width:" + this.getTotalWidth() + ";";
+ var T = [],N,U,O = {},I = {tstyle:C},K;
+ for (var P = 0,S = G.length; P < S; P++) {
+ K = G[P];
+ N = [];
+ var J = (P + A);
+ for (var R = 0; R < L; R++) {
+ U = E[R];
+ O.id = U.id;
+ O.css = R == 0 ? "x-grid3-cell-first " : (R == H
+ ? "x-grid3-cell-last " : "");
+ O.attr = O.cellAttr = "";
+ O.value = U.renderer(K.data[U.name], O, K, J, R, M);
+ O.style = U.style;
+ if (O.value == undefined || O.value === "") {
+ O.value = "&#160;"
+ }
+ if (K.dirty && typeof K.modified[U.name] !== "undefined") {
+ O.css += " x-grid3-dirty-cell"
+ }
+ N[N.length] = D.apply(O)
+ }
+ var V = [];
+ if (Q && ((J + 1) % 2 == 0)) {
+ V[0] = "x-grid3-row-alt"
+ }
+ if (K.dirty) {
+ V[1] = " x-grid3-dirty-row"
+ }
+ I.cols = L;
+ if (this.getRowClass) {
+ V[2] = this.getRowClass(K, J, I, M)
+ }
+ I.alt = V.join(" ");
+ I.cells = N.join("");
+ T[T.length] = F.apply(I)
+ }
+ return T.join("")
+},processRows:function(E, D) {
+ if (this.ds.getCount() < 1) {
+ return
+ }
+ D = D || !this.grid.stripeRows;
+ E = E || 0;
+ var I = this.getRows();
+ var F = " x-grid3-row-alt ";
+ for (var B = E,C = I.length; B < C; B++) {
+ var H = I[B];
+ H.rowIndex = B;
+ if (!D) {
+ var A = ((B + 1) % 2 == 0);
+ var G = (" " + H.className + " ").indexOf(F) != -1;
+ if (A == G) {
+ continue
+ }
+ if (A) {
+ H.className += " x-grid3-row-alt"
+ } else {
+ H.className = H.className.replace("x-grid3-row-alt", "")
+ }
+ }
+ }
+},renderUI:function() {
+ var E = this.renderHeaders();
+ var B = this.templates.body.apply({rows:""});
+ var C = this.templates.master.apply({body:B,header:E});
+ var D = this.grid;
+ D.getGridEl().dom.innerHTML = C;
+ this.initElements();
+ this.mainBody.dom.innerHTML = this.renderRows();
+ this.processRows(0, true);
+ Ext.fly(this.innerHd).on("click", this.handleHdDown, this);
+ this.mainHd.on("mouseover", this.handleHdOver, this);
+ this.mainHd.on("mouseout", this.handleHdOut, this);
+ this.mainHd.on("mousemove", this.handleHdMove, this);
+ this.scroller.on("scroll", this.syncScroll, this);
+ if (D.enableColumnResize !== false) {
+ this.splitone = new Ext.grid.GridView.SplitDragZone(D, this.mainHd.dom)
+ }
+ if (D.enableColumnMove) {
+ this.columnDrag = new Ext.grid.GridView.ColumnDragZone(D, this.innerHd);
+ this.columnDrop = new Ext.grid.HeaderDropZone(D, this.mainHd.dom)
+ }
+ if (D.enableHdMenu !== false) {
+ if (D.enableColumnHide !== false) {
+ this.colMenu = new Ext.menu.Menu({id:D.id + "-hcols-menu"});
+ this.colMenu.on("beforeshow", this.beforeColMenuShow, this);
+ this.colMenu.on("itemclick", this.handleHdMenuClick, this)
+ }
+ this.hmenu = new Ext.menu.Menu({id:D.id + "-hctx"});
+ this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"}, {id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});
+ if (D.enableColumnHide !== false) {
+ this.hmenu.add("-", {id:"columns",text:this.columnsText,menu:this.colMenu,iconCls:"x-cols-icon"})
+ }
+ this.hmenu.on("itemclick", this.handleHdMenuClick, this)
+ }
+ if (D.enableDragDrop || D.enableDrag) {
+ var A = new Ext.grid.GridDragZone(D, {ddGroup:D.ddGroup || "GridDD"})
+ }
+ this.updateHeaderSortState()
+},layout:function() {
+ if (!this.mainBody) {
+ return
+ }
+ var E = this.grid;
+ var G = E.getGridEl(),I = this.cm,B = E.autoExpandColumn,A = this;
+ var C = G.getSize(true);
+ var H = C.width;
+ if (H < 20 || C.height < 20) {
+ return
+ }
+ if (E.autoHeight) {
+ this.scroller.dom.style.overflow = "visible"
+ } else {
+ this.el.setSize(C.width, C.height);
+ var F = this.mainHd.getHeight();
+ var D = C.height - (F);
+ this.scroller.setSize(H, D);
+ if (this.innerHd) {
+ this.innerHd.style.width = (H) + "px"
+ }
+ }
+ if (this.forceFit) {
+ if (this.lastViewWidth != H) {
+ this.fitColumns(false, false);
+ this.lastViewWidth = H
+ }
+ } else {
+ this.autoExpand();
+ this.syncHeaderScroll()
+ }
+ this.onLayout(H, D)
+},onLayout:function(A, B) {
+},onColumnWidthUpdated:function(C, A, B) {
+},onAllColumnWidthsUpdated:function(A, B) {
+},onColumnHiddenUpdated:function(B, C, A) {
+},updateColumnText:function(A, B) {
+},afterMove:function(A) {
+},init:function(A) {
+ this.grid = A;
+ this.initTemplates();
+ this.initData(A.store, A.colModel);
+ this.initUI(A)
+},getColumnId:function(A) {
+ return this.cm.getColumnId(A)
+},renderHeaders:function() {
+ var C = this.cm,F = this.templates;
+ var E = F.hcell;
+ var B = [],H = [],G = {};
+ for (var D = 0,A = C.getColumnCount(); D < A; D++) {
+ G.id = C.getColumnId(D);
+ G.value = C.getColumnHeader(D) || "";
+ G.style = this.getColumnStyle(D, true);
+ G.tooltip = this.getColumnTooltip(D);
+ if (C.config[D].align == "right") {
+ G.istyle = "padding-right:16px"
+ } else {
+ delete G.istyle
+ }
+ B[B.length] = E.apply(G)
+ }
+ return F.header.apply({cells:B.join(""),tstyle:"width:"
+ + this.getTotalWidth() + ";"})
+},getColumnTooltip:function(A) {
+ var B = this.cm.getColumnTooltip(A);
+ if (B) {
+ if (Ext.QuickTips.isEnabled()) {
+ return"ext:qtip=\"" + B + "\""
+ } else {
+ return"title=\"" + B + "\""
+ }
+ }
+ return""
+},beforeUpdate:function() {
+ this.grid.stopEditing(true)
+},updateHeaders:function() {
+ this.innerHd.firstChild.innerHTML = this.renderHeaders()
+},focusRow:function(A) {
+ this.focusCell(A, 0, false)
+},focusCell:function(D, A, C) {
+ var B = this.ensureVisible(D, A, C);
+ this.focusEl.setXY(B);
+ if (Ext.isGecko) {
+ this.focusEl.focus()
+ } else {
+ this.focusEl.focus.defer(1, this.focusEl)
+ }
+},ensureVisible:function(P, E, D) {
+ if (typeof P != "number") {
+ P = P.rowIndex
+ }
+ if (!this.ds) {
+ return
+ }
+ if (P < 0 || P >= this.ds.getCount()) {
+ return
+ }
+ E = (E !== undefined ? E : 0);
+ var I = this.getRow(P),F;
+ if (!(D === false && E === 0)) {
+ while (this.cm.isHidden(E)) {
+ E++
+ }
+ F = this.getCell(P, E)
+ }
+ if (!I) {
+ return
+ }
+ var L = this.scroller.dom;
+ var O = 0;
+ var C = I,M = this.el.dom;
+ while (C && C != M) {
+ O += C.offsetTop;
+ C = C.offsetParent
+ }
+ O -= this.mainHd.dom.offsetHeight;
+ var N = O + I.offsetHeight;
+ var A = L.clientHeight;
+ var M = parseInt(L.scrollTop, 10);
+ var K = M + A;
+ if (O < M) {
+ L.scrollTop = O
+ } else {
+ if (N > K) {
+ L.scrollTop = N - A
+ }
+ }
+ if (D !== false) {
+ var J = parseInt(F.offsetLeft, 10);
+ var H = J + F.offsetWidth;
+ var G = parseInt(L.scrollLeft, 10);
+ var B = G + L.clientWidth;
+ if (J < G) {
+ L.scrollLeft = J
+ } else {
+ if (H > B) {
+ L.scrollLeft = H - L.clientWidth
+ }
+ }
+ }
+ return F ? Ext.fly(F).getXY() : [L.scrollLeft,Ext.fly(I).getY()]
+},insertRows:function(A, F, C, E) {
+ if (!E && F === 0 && C == A.getCount() - 1) {
+ this.refresh()
+ } else {
+ if (!E) {
+ this.fireEvent("beforerowsinserted", this, F, C)
+ }
+ var B = this.renderRows(F, C);
+ var D = this.getRow(F);
+ if (D) {
+ Ext.DomHelper.insertHtml("beforeBegin", D, B)
+ } else {
+ Ext.DomHelper.insertHtml("beforeEnd", this.mainBody.dom, B)
+ }
+ if (!E) {
+ this.fireEvent("rowsinserted", this, F, C);
+ this.processRows(F)
+ }
+ }
+},deleteRows:function(A, C, B) {
+ if (A.getRowCount() < 1) {
+ this.refresh()
+ } else {
+ this.fireEvent("beforerowsdeleted", this, C, B);
+ this.removeRows(C, B);
+ this.processRows(C);
+ this.fireEvent("rowsdeleted", this, C, B)
+ }
+},getColumnStyle:function(A, C) {
+ var B = !C ? (this.cm.config[A].css || "") : "";
+ B += "width:" + this.getColumnWidth(A) + ";";
+ if (this.cm.isHidden(A)) {
+ B += "display:none;"
+ }
+ var D = this.cm.config[A].align;
+ if (D) {
+ B += "text-align:" + D + ";"
+ }
+ return B
+},getColumnWidth:function(B) {
+ var A = this.cm.getColumnWidth(B);
+ if (typeof A == "number") {
+ return(Ext.isBorderBox ? A : (A - this.borderWidth > 0 ? A
+ - this.borderWidth : 0)) + "px"
+ }
+ return A
+},getTotalWidth:function() {
+ return this.cm.getTotalWidth() + "px"
+},fitColumns:function(D, G, E) {
+ var F = this.cm,S,L,O;
+ var R = F.getTotalWidth(false);
+ var J = this.grid.getGridEl().getWidth(true) - this.scrollOffset;
+ if (J < 20) {
+ return
+ }
+ var B = J - R;
+ if (B === 0) {
+ return false
+ }
+ var A = F.getColumnCount(true);
+ var P = A - (typeof E == "number" ? 1 : 0);
+ if (P === 0) {
+ P = 1;
+ E = undefined
+ }
+ var K = F.getColumnCount();
+ var I = [];
+ var N = 0;
+ var M = 0;
+ var H;
+ for (O = 0; O < K; O++) {
+ if (!F.isHidden(O) && !F.isFixed(O) && O !== E) {
+ H = F.getColumnWidth(O);
+ I.push(O);
+ N = O;
+ I.push(H);
+ M += H
+ }
+ }
+ var C = (J - F.getTotalWidth()) / M;
+ while (I.length) {
+ H = I.pop();
+ O = I.pop();
+ F.setColumnWidth(O, Math.max(this.grid.minColumnWidth, Math.floor(H + H
+ * C)), true)
+ }
+ if ((R = F.getTotalWidth(false)) > J) {
+ var Q = P != A ? E : N;
+ F.setColumnWidth(Q, Math.max(1, F.getColumnWidth(Q) - (R - J)), true)
+ }
+ if (D !== true) {
+ this.updateAllColumnWidths()
+ }
+ return true
+},autoExpand:function(B) {
+ var G = this.grid,A = this.cm;
+ if (!this.userResized && G.autoExpandColumn) {
+ var D = A.getTotalWidth(false);
+ var H = this.grid.getGridEl().getWidth(true) - this.scrollOffset;
+ if (D != H) {
+ var F = A.getIndexById(G.autoExpandColumn);
+ var E = A.getColumnWidth(F);
+ var C = Math.min(Math.max(((H - D)
+ + E), G.autoExpandMin), G.autoExpandMax);
+ if (C != E) {
+ A.setColumnWidth(F, C, true);
+ if (B !== true) {
+ this.updateColumnWidth(F, C)
+ }
+ }
+ }
+ }
+},getColumnData:function() {
+ var D = [],A = this.cm,E = A.getColumnCount();
+ for (var C = 0; C < E; C++) {
+ var B = A.getDataIndex(C);
+ D[C] = {name:(typeof B == "undefined" ? this.ds.fields.get(C).name
+ : B),renderer:A.getRenderer(C),id:A.getColumnId(C),style:this.getColumnStyle(C)}
+ }
+ return D
+},renderRows:function(H, C) {
+ var D = this.grid,F = D.colModel,A = D.store,I = D.stripeRows;
+ var G = F.getColumnCount();
+ if (A.getCount() < 1) {
+ return""
+ }
+ var E = this.getColumnData();
+ H = H || 0;
+ C = typeof C == "undefined" ? A.getCount() - 1 : C;
+ var B = A.getRange(H, C);
+ return this.doRender(E, B, A, H, G, I)
+},renderBody:function() {
+ var A = this.renderRows();
+ return this.templates.body.apply({rows:A})
+},refreshRow:function(B) {
+ var D = this.ds,C;
+ if (typeof B == "number") {
+ C = B;
+ B = D.getAt(C)
+ } else {
+ C = D.indexOf(B)
+ }
+ var A = [];
+ this.insertRows(D, C, C, true);
+ this.getRow(C).rowIndex = C;
+ this.onRemove(D, B, C + 1, true);
+ this.fireEvent("rowupdated", this, C, B)
+},refresh:function(B) {
+ this.fireEvent("beforerefresh", this);
+ this.grid.stopEditing(true);
+ var A = this.renderBody();
+ this.mainBody.update(A);
+ if (B === true) {
+ this.updateHeaders();
+ this.updateHeaderSortState()
+ }
+ this.processRows(0, true);
+ this.layout();
+ this.applyEmptyText();
+ this.fireEvent("refresh", this)
+},applyEmptyText:function() {
+ if (this.emptyText && !this.hasRows()) {
+ this.mainBody.update("<div class=\"x-grid-empty\">" + this.emptyText
+ + "</div>")
+ }
+},updateHeaderSortState:function() {
+ var B = this.ds.getSortState();
+ if (!B) {
+ return
+ }
+ if (!this.sortState || (this.sortState.field != B.field
+ || this.sortState.direction != B.direction)) {
+ this.grid.fireEvent("sortchange", this.grid, B)
+ }
+ this.sortState = B;
+ var C = this.cm.findColumnIndex(B.field);
+ if (C != -1) {
+ var A = B.direction;
+ this.updateSortIcon(C, A)
+ }
+},destroy:function() {
+ if (this.colMenu) {
+ this.colMenu.removeAll();
+ Ext.menu.MenuMgr.unregister(this.colMenu);
+ this.colMenu.getEl().remove();
+ delete this.colMenu
+ }
+ if (this.hmenu) {
+ this.hmenu.removeAll();
+ Ext.menu.MenuMgr.unregister(this.hmenu);
+ this.hmenu.getEl().remove();
+ delete this.hmenu
+ }
+ if (this.grid.enableColumnMove) {
+ var C = Ext.dd.DDM.ids["gridHeader" + this.grid.getGridEl().id];
+ if (C) {
+ for (var A in C) {
+ if (!C[A].config.isTarget && C[A].dragElId) {
+ var B = C[A].dragElId;
+ C[A].unreg();
+ Ext.get(B).remove()
+ } else {
+ if (C[A].config.isTarget) {
+ C[A].proxyTop.remove();
+ C[A].proxyBottom.remove();
+ C[A].unreg()
+ }
+ }
+ if (Ext.dd.DDM.locationCache[A]) {
+ delete Ext.dd.DDM.locationCache[A]
+ }
+ }
+ delete Ext.dd.DDM.ids["gridHeader" + this.grid.getGridEl().id]
+ }
+ }
+ Ext.destroy(this.resizeMarker, this.resizeProxy);
+ this.initData(null, null);
+ Ext.EventManager.removeResizeListener(this.onWindowResize, this)
+},onDenyColumnHide:function() {
+},render:function() {
+ var A = this.cm;
+ var B = A.getColumnCount();
+ if (this.autoFill) {
+ this.fitColumns(true, true)
+ } else {
+ if (this.forceFit) {
+ this.fitColumns(true, false)
+ } else {
+ if (this.grid.autoExpandColumn) {
+ this.autoExpand(true)
+ }
+ }
+ }
+ this.renderUI()
+},initData:function(B, A) {
+ if (this.ds) {
+ this.ds.un("load", this.onLoad, this);
+ this.ds.un("datachanged", this.onDataChange, this);
+ this.ds.un("add", this.onAdd, this);
+ this.ds.un("remove", this.onRemove, this);
+ this.ds.un("update", this.onUpdate, this);
+ this.ds.un("clear", this.onClear, this)
+ }
+ if (B) {
+ B.on("load", this.onLoad, this);
+ B.on("datachanged", this.onDataChange, this);
+ B.on("add", this.onAdd, this);
+ B.on("remove", this.onRemove, this);
+ B.on("update", this.onUpdate, this);
+ B.on("clear", this.onClear, this)
+ }
+ this.ds = B;
+ if (this.cm) {
+ this.cm.un("configchange", this.onColConfigChange, this);
+ this.cm.un("widthchange", this.onColWidthChange, this);
+ this.cm.un("headerchange", this.onHeaderChange, this);
+ this.cm.un("hiddenchange", this.onHiddenChange, this);
+ this.cm.un("columnmoved", this.onColumnMove, this);
+ this.cm.un("columnlockchange", this.onColumnLock, this)
+ }
+ if (A) {
+ A.on("configchange", this.onColConfigChange, this);
+ A.on("widthchange", this.onColWidthChange, this);
+ A.on("headerchange", this.onHeaderChange, this);
+ A.on("hiddenchange", this.onHiddenChange, this);
+ A.on("columnmoved", this.onColumnMove, this);
+ A.on("columnlockchange", this.onColumnLock, this)
+ }
+ this.cm = A
+},onDataChange:function() {
+ this.refresh();
+ this.updateHeaderSortState()
+},onClear:function() {
+ this.refresh()
+},onUpdate:function(B, A) {
+ this.refreshRow(A)
+},onAdd:function(C, A, B) {
+ this.insertRows(C, B, B + (A.length - 1))
+},onRemove:function(D, A, B, C) {
+ if (C !== true) {
+ this.fireEvent("beforerowremoved", this, B, A)
+ }
+ this.removeRow(B);
+ if (C !== true) {
+ this.processRows(B);
+ this.applyEmptyText();
+ this.fireEvent("rowremoved", this, B, A)
+ }
+},onLoad:function() {
+ this.scrollToTop()
+},onColWidthChange:function(A, B, C) {
+ this.updateColumnWidth(B, C)
+},onHeaderChange:function(A, B, C) {
+ this.updateHeaders()
+},onHiddenChange:function(A, B, C) {
+ this.updateColumnHidden(B, C)
+},onColumnMove:function(A, D, B) {
+ this.indexMap = null;
+ var C = this.getScrollState();
+ this.refresh(true);
+ this.restoreScroll(C);
+ this.afterMove(B)
+},onColConfigChange:function() {
+ delete this.lastViewWidth;
+ this.indexMap = null;
+ this.refresh(true)
+},initUI:function(A) {
+ A.on("headerclick", this.onHeaderClick, this);
+ if (A.trackMouseOver) {
+ A.on("mouseover", this.onRowOver, this);
+ A.on("mouseout", this.onRowOut, this)
+ }
+},initEvents:function() {
+},onHeaderClick:function(B, A) {
+ if (this.headersDisabled || !this.cm.isSortable(A)) {
+ return
+ }
+ B.stopEditing(true);
+ B.store.sort(this.cm.getDataIndex(A))
+},onRowOver:function(B, A) {
+ var C;
+ if ((C = this.findRowIndex(A)) !== false) {
+ this.addRowClass(C, "x-grid3-row-over")
+ }
+},onRowOut:function(B, A) {
+ var C;
+ if ((C = this.findRowIndex(A)) !== false && C
+ !== this.findRowIndex(B.getRelatedTarget())) {
+ this.removeRowClass(C, "x-grid3-row-over")
+ }
+},handleWheel:function(A) {
+ A.stopPropagation()
+},onRowSelect:function(A) {
+ this.addRowClass(A, "x-grid3-row-selected")
+},onRowDeselect:function(A) {
+ this.removeRowClass(A, "x-grid3-row-selected")
+},onCellSelect:function(C, B) {
+ var A = this.getCell(C, B);
+ if (A) {
+ this.fly(A).addClass("x-grid3-cell-selected")
+ }
+},onCellDeselect:function(C, B) {
+ var A = this.getCell(C, B);
+ if (A) {
+ this.fly(A).removeClass("x-grid3-cell-selected")
+ }
+},onColumnSplitterMoved:function(C, B) {
+ this.userResized = true;
+ var A = this.grid.colModel;
+ A.setColumnWidth(C, B, true);
+ if (this.forceFit) {
+ this.fitColumns(true, false, C);
+ this.updateAllColumnWidths()
+ } else {
+ this.updateColumnWidth(C, B)
+ }
+ this.grid.fireEvent("columnresize", C, B)
+},handleHdMenuClick:function(C) {
+ var B = this.hdCtxIndex;
+ var A = this.cm,D = this.ds;
+ switch (C.id) {case"asc":D.sort(A.getDataIndex(B), "ASC");break;case"desc":D.sort(A.getDataIndex(B), "DESC");break;default:B
+ = A.getIndexById(C.id.substr(4));if (B != -1) {
+ if (C.checked && A.getColumnsBy(this.isHideableColumn, this).length
+ <= 1) {
+ this.onDenyColumnHide();
+ return false
+ }
+ A.setHidden(B, C.checked)
+ }}
+ return true
+},isHideableColumn:function(A) {
+ return !A.hidden && !A.fixed
+},beforeColMenuShow:function() {
+ var A = this.cm,C = A.getColumnCount();
+ this.colMenu.removeAll();
+ for (var B = 0; B < C; B++) {
+ if (A.config[B].fixed !== true && A.config[B].hideable !== false) {
+ this.colMenu.add(new Ext.menu.CheckItem({id:"col-"
+ + A.getColumnId(B),text:A.getColumnHeader(B),checked:!A.isHidden(B),hideOnClick:false,disabled:A.config[B].hideable
+ === false}))
+ }
+ }
+},handleHdDown:function(F, D) {
+ if (Ext.fly(D).hasClass("x-grid3-hd-btn")) {
+ F.stopEvent();
+ var E = this.findHeaderCell(D);
+ Ext.fly(E).addClass("x-grid3-hd-menu-open");
+ var C = this.getCellIndex(E);
+ this.hdCtxIndex = C;
+ var B = this.hmenu.items,A = this.cm;
+ B.get("asc").setDisabled(!A.isSortable(C));
+ B.get("desc").setDisabled(!A.isSortable(C));
+ this.hmenu.on("hide", function() {
+ Ext.fly(E).removeClass("x-grid3-hd-menu-open")
+ }, this, {single:true});
+ this.hmenu.show(D, "tl-bl?")
+ }
+},handleHdOver:function(D, A) {
+ var C = this.findHeaderCell(A);
+ if (C && !this.headersDisabled) {
+ this.activeHd = C;
+ this.activeHdIndex = this.getCellIndex(C);
+ var B = this.fly(C);
+ this.activeHdRegion = B.getRegion();
+ if (!this.cm.isMenuDisabled(this.activeHdIndex)) {
+ B.addClass("x-grid3-hd-over");
+ this.activeHdBtn = B.child(".x-grid3-hd-btn");
+ if (this.activeHdBtn) {
+ this.activeHdBtn.dom.style.height = (C.firstChild.offsetHeight
+ - 1) + "px"
+ }
+ }
+ }
+},handleHdMove:function(F, D) {
+ if (this.activeHd && !this.headersDisabled) {
+ var B = this.splitHandleWidth || 5;
+ var E = this.activeHdRegion;
+ var A = F.getPageX();
+ var C = this.activeHd.style;
+ if (A - E.left <= B && this.cm.isResizable(this.activeHdIndex - 1)) {
+ C.cursor = Ext.isAir ? "move" : Ext.isSafari ? "e-resize"
+ : "col-resize"
+ } else {
+ if (E.right - A <= (!this.activeHdBtn ? B : 2)
+ && this.cm.isResizable(this.activeHdIndex)) {
+ C.cursor = Ext.isAir ? "move" : Ext.isSafari ? "w-resize"
+ : "col-resize"
+ } else {
+ C.cursor = ""
+ }
+ }
+ }
+},handleHdOut:function(C, A) {
+ var B = this.findHeaderCell(A);
+ if (B && (!Ext.isIE || !C.within(B, true))) {
+ this.activeHd = null;
+ this.fly(B).removeClass("x-grid3-hd-over");
+ B.style.cursor = ""
+ }
+},hasRows:function() {
+ var A = this.mainBody.dom.firstChild;
+ return A && A.className != "x-grid-empty"
+},bind:function(A, B) {
+ this.initData(A, B)
+}});
+Ext.grid.GridView.SplitDragZone = function(A, B) {
+ this.grid = A;
+ this.view = A.getView();
+ this.marker = this.view.resizeMarker;
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this, B, "gridSplitters"
+ + this.grid.getGridEl().id, {dragElId:Ext.id(this.proxy.dom),resizeFrame:false});
+ this.scroll = false;
+ this.hw = this.view.splitHandleWidth || 5
+};
+Ext.extend(Ext.grid.GridView.SplitDragZone, Ext.dd.DDProxy, {b4StartDrag:function(
+ A, E) {
+ this.view.headersDisabled = true;
+ var D = this.view.mainWrap.getHeight();
+ this.marker.setHeight(D);
+ this.marker.show();
+ this.marker.alignTo(this.view.getHeaderCell(this.cellIndex), "tl-tl", [-2,0]);
+ this.proxy.setHeight(D);
+ var B = this.cm.getColumnWidth(this.cellIndex);
+ var C = Math.max(B - this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(C, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = A - C;
+ this.maxX = A + 1000;
+ this.startPos = A;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, A, E)
+},handleMouseDown:function(A) {
+ var H = this.view.findHeaderCell(A.getTarget());
+ if (H) {
+ var K = this.view.fly(H).getXY(),E = K[0],D = K[1];
+ var I = A.getXY(),C = I[0],B = I[1];
+ var G = H.offsetWidth,F = false;
+ if ((C - E) <= this.hw) {
+ F = -1
+ } else {
+ if ((E + G) - C <= this.hw) {
+ F = 0
+ }
+ }
+ if (F !== false) {
+ this.cm = this.grid.colModel;
+ var J = this.view.getCellIndex(H);
+ if (F == -1) {
+ if (J + F < 0) {
+ return
+ }
+ while (this.cm.isHidden(J + F)) {
+ --F;
+ if (J + F < 0) {
+ return
+ }
+ }
+ }
+ this.cellIndex = J + F;
+ this.split = H.dom;
+ if (this.cm.isResizable(this.cellIndex)
+ && !this.cm.isFixed(this.cellIndex)) {
+ Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this, arguments)
+ }
+ } else {
+ if (this.view.columnDrag) {
+ this.view.columnDrag.callHandleMouseDown(A)
+ }
+ }
+ }
+},endDrag:function(D) {
+ this.marker.hide();
+ var A = this.view;
+ var B = Math.max(this.minX, D.getPageX());
+ var C = B - this.startPos;
+ A.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)
+ + C);
+ setTimeout(function() {
+ A.headersDisabled = false
+ }, 50)
+},autoOffset:function() {
+ this.setDelta(0, 0)
+}});
+Ext.grid.GroupingView
+ = Ext.extend(Ext.grid.GridView, {hideGroupedColumn:false,showGroupName:true,startCollapsed:false,enableGrouping:true,enableGroupingMenu:true,enableNoGroups:true,emptyGroupText:"(None)",ignoreAdd:false,groupTextTpl:"{text}",gidSeed:1000,initTemplates:function() {
+ Ext.grid.GroupingView.superclass.initTemplates.call(this);
+ this.state = {};
+ var A = this.grid.getSelectionModel();
+ A.on(A.selectRow ? "beforerowselect"
+ : "beforecellselect", this.onBeforeRowSelect, this);
+ if (!this.startGroup) {
+ this.startGroup
+ = new Ext.XTemplate("<div id=\"{groupId}\" class=\"x-grid-group {cls}\">", "<div id=\"{groupId}-hd\" class=\"x-grid-group-hd\" style=\"{style}\"><div>", this.groupTextTpl, "</div></div>", "<div id=\"{groupId}-bd\" class=\"x-grid-group-body\">")
+ }
+ this.startGroup.compile();
+ this.endGroup = "</div></div>"
+},findGroup:function(A) {
+ return Ext.fly(A).up(".x-grid-group", this.mainBody.dom)
+},getGroups:function() {
+ return this.hasRows() ? this.mainBody.dom.childNodes : []
+},onAdd:function() {
+ if (this.enableGrouping && !this.ignoreAdd) {
+ var A = this.getScrollState();
+ this.refresh();
+ this.restoreScroll(A)
+ } else {
+ if (!this.enableGrouping) {
+ Ext.grid.GroupingView.superclass.onAdd.apply(this, arguments)
+ }
+ }
+},onRemove:function(E, A, B, D) {
+ Ext.grid.GroupingView.superclass.onRemove.apply(this, arguments);
+ var C = document.getElementById(A._groupId);
+ if (C && C.childNodes[1].childNodes.length < 1) {
+ Ext.removeNode(C)
+ }
+ this.applyEmptyText()
+},refreshRow:function(A) {
+ if (this.ds.getCount() == 1) {
+ this.refresh()
+ } else {
+ this.isUpdating = true;
+ Ext.grid.GroupingView.superclass.refreshRow.apply(this, arguments);
+ this.isUpdating = false
+ }
+},beforeMenuShow:function() {
+ var C = this.getGroupField();
+ var B = this.hmenu.items.get("groupBy");
+ if (B) {
+ B.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false)
+ }
+ var A = this.hmenu.items.get("showGroups");
+ if (A) {
+ if (!!C) {
+ A.setDisabled(this.cm.config[this.hdCtxIndex].groupable === false)
+ }
+ A.setChecked(!!C)
+ }
+},renderUI:function() {
+ Ext.grid.GroupingView.superclass.renderUI.call(this);
+ this.mainBody.on("mousedown", this.interceptMouse, this);
+ if (this.enableGroupingMenu && this.hmenu) {
+ this.hmenu.add("-", {id:"groupBy",text:this.groupByText,handler:this.onGroupByClick,scope:this,iconCls:"x-group-by-icon"});
+ if (this.enableNoGroups) {
+ this.hmenu.add({id:"showGroups",text:this.showGroupsText,checked:true,checkHandler:this.onShowGroupsClick,scope:this})
+ }
+ this.hmenu.on("beforeshow", this.beforeMenuShow, this)
+ }
+},onGroupByClick:function() {
+ this.grid.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));
+ this.beforeMenuShow()
+},onShowGroupsClick:function(A, B) {
+ if (B) {
+ this.onGroupByClick()
+ } else {
+ this.grid.store.clearGrouping()
+ }
+},toggleGroup:function(C, B) {
+ this.grid.stopEditing(true);
+ C = Ext.getDom(C);
+ var A = Ext.fly(C);
+ B = B !== undefined ? B : A.hasClass("x-grid-group-collapsed");
+ this.state[A.dom.id] = B;
+ A[B ? "removeClass" : "addClass"]("x-grid-group-collapsed")
+},toggleAllGroups:function(C) {
+ var B = this.getGroups();
+ for (var D = 0,A = B.length; D < A; D++) {
+ this.toggleGroup(B[D], C)
+ }
+},expandAllGroups:function() {
+ this.toggleAllGroups(true)
+},collapseAllGroups:function() {
+ this.toggleAllGroups(false)
+},interceptMouse:function(B) {
+ var A = B.getTarget(".x-grid-group-hd", this.mainBody);
+ if (A) {
+ B.stopEvent();
+ this.toggleGroup(A.parentNode)
+ }
+},getGroup:function(A, D, F, G, B, E) {
+ var C = F ? F(A, {}, D, G, B, E) : String(A);
+ if (C === "") {
+ C = this.cm.config[B].emptyGroupText || this.emptyGroupText
+ }
+ return C
+},getGroupField:function() {
+ return this.grid.store.getGroupState()
+},renderRows:function() {
+ var A = this.getGroupField();
+ var D = !!A;
+ if (this.hideGroupedColumn) {
+ var B = this.cm.findColumnIndex(A);
+ if (!D && this.lastGroupField !== undefined) {
+ this.mainBody.update("");
+ this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField), false);
+ delete this.lastGroupField
+ } else {
+ if (D && this.lastGroupField === undefined) {
+ this.lastGroupField = A;
+ this.cm.setHidden(B, true)
+ } else {
+ if (D && this.lastGroupField !== undefined && A
+ !== this.lastGroupField) {
+ this.mainBody.update("");
+ var C = this.cm.findColumnIndex(this.lastGroupField);
+ this.cm.setHidden(C, false);
+ this.lastGroupField = A;
+ this.cm.setHidden(B, true)
+ }
+ }
+ }
+ }
+ return Ext.grid.GroupingView.superclass.renderRows.apply(this, arguments)
+},doRender:function(D, G, P, A, O, R) {
+ if (G.length < 1) {
+ return""
+ }
+ var Y = this.getGroupField();
+ var N = this.cm.findColumnIndex(Y);
+ this.enableGrouping = !!Y;
+ if (!this.enableGrouping || this.isUpdating) {
+ return Ext.grid.GroupingView.superclass.doRender.apply(this, arguments)
+ }
+ var H = "width:" + this.getTotalWidth() + ";";
+ var Q = this.grid.getGridEl().id;
+ var F = this.cm.config[N];
+ var B = F.groupRenderer || F.renderer;
+ var S = this.showGroupName ? (F.groupName || F.header) + ": " : "";
+ var X = [],K,T,U,M;
+ for (T = 0,U = G.length; T < U; T++) {
+ var J = A + T;
+ var L = G[T],E = L.data[Y],V = this.getGroup(E, L, B, J, N, P);
+ if (!K || K.group != V) {
+ M = Q + "-gp-" + Y + "-" + Ext.util.Format.htmlEncode(V);
+ var C = typeof this.state[M] !== "undefined" ? !this.state[M]
+ : this.startCollapsed;
+ var I = C ? "x-grid-group-collapsed" : "";
+ K = {group:V,gvalue:E,text:S
+ + V,groupId:M,startRow:J,rs:[L],cls:I,style:H};
+ X.push(K)
+ } else {
+ K.rs.push(L)
+ }
+ L._groupId = M
+ }
+ var W = [];
+ for (T = 0,U = X.length; T < U; T++) {
+ var V = X[T];
+ this.doGroupStart(W, V, D, P, O);
+ W[W.length]
+ = Ext.grid.GroupingView.superclass.doRender.call(this, D, V.rs, P, V.startRow, O, R);
+ this.doGroupEnd(W, V, D, P, O)
+ }
+ return W.join("")
+},getGroupId:function(F) {
+ var D = this.grid.getGridEl().id;
+ var C = this.getGroupField();
+ var E = this.cm.findColumnIndex(C);
+ var B = this.cm.config[E];
+ var G = B.groupRenderer || B.renderer;
+ var A = this.getGroup(F, {data:{}}, G, 0, E, this.ds);
+ return D + "-gp-" + C + "-" + Ext.util.Format.htmlEncode(F)
+},doGroupStart:function(A, D, B, E, C) {
+ A[A.length] = this.startGroup.apply(D)
+},doGroupEnd:function(A, D, B, E, C) {
+ A[A.length] = this.endGroup
+},getRows:function() {
+ if (!this.enableGrouping) {
+ return Ext.grid.GroupingView.superclass.getRows.call(this)
+ }
+ var G = [];
+ var F,C = this.getGroups();
+ for (var E = 0,A = C.length; E < A; E++) {
+ F = C[E].childNodes[1].childNodes;
+ for (var D = 0,B = F.length; D < B; D++) {
+ G[G.length] = F[D]
+ }
+ }
+ return G
+},updateGroupWidths:function() {
+ if (!this.enableGrouping || !this.hasRows()) {
+ return
+ }
+ var C = Math.max(this.cm.getTotalWidth(), this.el.dom.offsetWidth
+ - this.scrollOffset) + "px";
+ var B = this.getGroups();
+ for (var D = 0,A = B.length; D < A; D++) {
+ B[D].firstChild.style.width = C
+ }
+},onColumnWidthUpdated:function(C, A, B) {
+ this.updateGroupWidths()
+},onAllColumnWidthsUpdated:function(A, B) {
+ this.updateGroupWidths()
+},onColumnHiddenUpdated:function(B, C, A) {
+ this.updateGroupWidths()
+},onLayout:function() {
+ this.updateGroupWidths()
+},onBeforeRowSelect:function(D, C) {
+ if (!this.enableGrouping) {
+ return
+ }
+ var B = this.getRow(C);
+ if (B && !B.offsetParent) {
+ var A = this.findGroup(B);
+ this.toggleGroup(A, true)
+ }
+},groupByText:"Group By This Field",showGroupsText:"Show in Groups"});
+Ext.grid.GroupingView.GROUP_ID = 1000;
+Ext.grid.HeaderDragZone = function(A, C, B) {
+ this.grid = A;
+ this.view = A.getView();
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+ Ext.grid.HeaderDragZone.superclass.constructor.call(this, C);
+ if (B) {
+ this.setHandleElId(Ext.id(C));
+ this.setOuterHandleElId(Ext.id(B))
+ }
+ this.scroll = false
+};
+Ext.extend(Ext.grid.HeaderDragZone, Ext.dd.DragZone, {maxDragWidth:120,getDragData:function(
+ C) {
+ var A = Ext.lib.Event.getTarget(C);
+ var B = this.view.findHeaderCell(A);
+ if (B) {
+ return{ddel:B.firstChild,header:B}
+ }
+ return false
+},onInitDrag:function(A) {
+ this.view.headersDisabled = true;
+ var B = this.dragData.ddel.cloneNode(true);
+ B.id = Ext.id();
+ B.style.width
+ = Math.min(this.dragData.header.offsetWidth, this.maxDragWidth)
+ + "px";
+ this.proxy.update(B);
+ return true
+},afterValidDrop:function() {
+ var A = this.view;
+ setTimeout(function() {
+ A.headersDisabled = false
+ }, 50)
+},afterInvalidDrop:function() {
+ var A = this.view;
+ setTimeout(function() {
+ A.headersDisabled = false
+ }, 50)
+}});
+Ext.grid.HeaderDropZone = function(A, C, B) {
+ this.grid = A;
+ this.view = A.getView();
+ this.proxyTop
+ = Ext.DomHelper.append(document.body, {cls:"col-move-top",html:"&#160;"}, true);
+ this.proxyBottom
+ = Ext.DomHelper.append(document.body, {cls:"col-move-bottom",html:"&#160;"}, true);
+ this.proxyTop.hide = this.proxyBottom.hide = function() {
+ this.setLeftTop(-100, -100);
+ this.setStyle("visibility", "hidden")
+ };
+ this.ddGroup = "gridHeader" + this.grid.getGridEl().id;
+ Ext.grid.HeaderDropZone.superclass.constructor.call(this, A.getGridEl().dom)
+};
+Ext.extend(Ext.grid.HeaderDropZone, Ext.dd.DropZone, {proxyOffsets:[-4,-9],fly:Ext.Element.fly,getTargetFromEvent:function(
+ C) {
+ var A = Ext.lib.Event.getTarget(C);
+ var B = this.view.findCellIndex(A);
+ if (B !== false) {
+ return this.view.getHeaderCell(B)
+ }
+},nextVisible:function(C) {
+ var B = this.view,A = this.grid.colModel;
+ C = C.nextSibling;
+ while (C) {
+ if (!A.isHidden(B.getCellIndex(C))) {
+ return C
+ }
+ C = C.nextSibling
+ }
+ return null
+},prevVisible:function(C) {
+ var B = this.view,A = this.grid.colModel;
+ C = C.prevSibling;
+ while (C) {
+ if (!A.isHidden(B.getCellIndex(C))) {
+ return C
+ }
+ C = C.prevSibling
+ }
+ return null
+},positionIndicator:function(D, B, E) {
+ var H = Ext.lib.Event.getPageX(E);
+ var A = Ext.lib.Dom.getRegion(B.firstChild);
+ var I,K,G = A.top + this.proxyOffsets[1];
+ if ((A.right - H) <= (A.right - A.left) / 2) {
+ I = A.right + this.view.borderWidth;
+ K = "after"
+ } else {
+ I = A.left;
+ K = "before"
+ }
+ var F = this.view.getCellIndex(D);
+ var J = this.view.getCellIndex(B);
+ if (this.grid.colModel.isFixed(J)) {
+ return false
+ }
+ var C = this.grid.colModel.isLocked(J);
+ if (K == "after") {
+ J++
+ }
+ if (F < J) {
+ J--
+ }
+ if (F == J && (C == this.grid.colModel.isLocked(F))) {
+ return false
+ }
+ I += this.proxyOffsets[0];
+ this.proxyTop.setLeftTop(I, G);
+ this.proxyTop.show();
+ if (!this.bottomOffset) {
+ this.bottomOffset = this.view.mainHd.getHeight()
+ }
+ this.proxyBottom.setLeftTop(I, G + this.proxyTop.dom.offsetHeight
+ + this.bottomOffset);
+ this.proxyBottom.show();
+ return K
+},onNodeEnter:function(D, A, C, B) {
+ if (B.header != D) {
+ this.positionIndicator(B.header, D, C)
+ }
+},onNodeOver:function(E, B, D, C) {
+ var A = false;
+ if (C.header != E) {
+ A = this.positionIndicator(C.header, E, D)
+ }
+ if (!A) {
+ this.proxyTop.hide();
+ this.proxyBottom.hide()
+ }
+ return A ? this.dropAllowed : this.dropNotAllowed
+},onNodeOut:function(D, A, C, B) {
+ this.proxyTop.hide();
+ this.proxyBottom.hide()
+},onNodeDrop:function(B, K, F, D) {
+ var E = D.header;
+ if (E != B) {
+ var I = this.grid.colModel;
+ var H = Ext.lib.Event.getPageX(F);
+ var A = Ext.lib.Dom.getRegion(B.firstChild);
+ var L = (A.right - H) <= ((A.right - A.left) / 2) ? "after" : "before";
+ var G = this.view.getCellIndex(E);
+ var J = this.view.getCellIndex(B);
+ var C = I.isLocked(J);
+ if (L == "after") {
+ J++
+ }
+ if (G < J) {
+ J--
+ }
+ if (G == J && (C == I.isLocked(G))) {
+ return false
+ }
+ I.setLocked(G, C, true);
+ I.moveColumn(G, J);
+ this.grid.fireEvent("columnmove", G, J);
+ return true
+ }
+ return false
+}});
+Ext.grid.GridView.ColumnDragZone = function(A, B) {
+ Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, A, B, null);
+ this.proxy.el.addClass("x-grid3-col-dd")
+};
+Ext.extend(Ext.grid.GridView.ColumnDragZone, Ext.grid.HeaderDragZone, {handleMouseDown:function(
+ A) {
+},callHandleMouseDown:function(A) {
+ Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, A)
+}});
+Ext.grid.SplitDragZone = function(A, C, B) {
+ this.grid = A;
+ this.view = A.getView();
+ this.proxy = this.view.resizeProxy;
+ Ext.grid.SplitDragZone.superclass.constructor.call(this, C, "gridSplitters"
+ + this.grid.getGridEl().id, {dragElId:Ext.id(this.proxy.dom),resizeFrame:false});
+ this.setHandleElId(Ext.id(C));
+ this.setOuterHandleElId(Ext.id(B));
+ this.scroll = false
+};
+Ext.extend(Ext.grid.SplitDragZone, Ext.dd.DDProxy, {fly:Ext.Element.fly,b4StartDrag:function(
+ A, D) {
+ this.view.headersDisabled = true;
+ this.proxy.setHeight(this.view.mainWrap.getHeight());
+ var B = this.cm.getColumnWidth(this.cellIndex);
+ var C = Math.max(B - this.grid.minColumnWidth, 0);
+ this.resetConstraints();
+ this.setXConstraint(C, 1000);
+ this.setYConstraint(0, 0);
+ this.minX = A - C;
+ this.maxX = A + 1000;
+ this.startPos = A;
+ Ext.dd.DDProxy.prototype.b4StartDrag.call(this, A, D)
+},handleMouseDown:function(B) {
+ ev = Ext.EventObject.setEvent(B);
+ var A = this.fly(ev.getTarget());
+ if (A.hasClass("x-grid-split")) {
+ this.cellIndex = this.view.getCellIndex(A.dom);
+ this.split = A.dom;
+ this.cm = this.grid.colModel;
+ if (this.cm.isResizable(this.cellIndex)
+ && !this.cm.isFixed(this.cellIndex)) {
+ Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments)
+ }
+ }
+},endDrag:function(C) {
+ this.view.headersDisabled = false;
+ var A = Math.max(this.minX, Ext.lib.Event.getPageX(C));
+ var B = A - this.startPos;
+ this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)
+ + B)
+},autoOffset:function() {
+ this.setDelta(0, 0)
+}});
+Ext.grid.GridDragZone = function(B, A) {
+ this.view = B.getView();
+ Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, A);
+ if (this.view.lockedBody) {
+ this.setHandleElId(Ext.id(this.view.mainBody.dom));
+ this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom))
+ }
+ this.scroll = false;
+ this.grid = B;
+ this.ddel = document.createElement("div");
+ this.ddel.className = "x-grid-dd-wrap"
+};
+Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, {ddGroup:"GridDD",getDragData:function(
+ B) {
+ var A = Ext.lib.Event.getTarget(B);
+ var D = this.view.findRowIndex(A);
+ if (D !== false) {
+ var C = this.grid.selModel;
+ if (!C.isSelected(D) || B.hasModifier()) {
+ C.handleMouseDown(this.grid, D, B)
+ }
+ return{grid:this.grid,ddel:this.ddel,rowIndex:D,selections:C.getSelections()}
+ }
+ return false
+},onInitDrag:function(B) {
+ var A = this.dragData;
+ this.ddel.innerHTML = this.grid.getDragDropText();
+ this.proxy.update(this.ddel)
+},afterRepair:function() {
+ this.dragging = false
+},getRepairXY:function(B, A) {
+ return false
+},onEndDrag:function(A, B) {
+},onValidDrop:function(A, B, C) {
+ this.hideProxy()
+},beforeInvalidDrop:function(A, B) {
+}});
+Ext.grid.ColumnModel = function(A) {
+ this.defaultWidth = 100;
+ this.defaultSortable = false;
+ if (A.columns) {
+ Ext.apply(this, A);
+ this.setConfig(A.columns, true)
+ } else {
+ this.setConfig(A, true)
+ }
+ this.addEvents("widthchange", "headerchange", "hiddenchange", "columnmoved", "columnlockchange", "configchange");
+ Ext.grid.ColumnModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.ColumnModel, Ext.util.Observable, {getColumnId:function(A) {
+ return this.config[A].id
+},setConfig:function(C, B) {
+ if (!B) {
+ delete this.totalWidth;
+ for (var D = 0,A = this.config.length; D < A; D++) {
+ var E = this.config[D];
+ if (E.editor) {
+ E.editor.destroy()
+ }
+ }
+ }
+ this.config = C;
+ this.lookup = {};
+ for (var D = 0,A = C.length; D < A; D++) {
+ var E = C[D];
+ if (typeof E.renderer == "string") {
+ E.renderer = Ext.util.Format[E.renderer]
+ }
+ if (typeof E.id == "undefined") {
+ E.id = D
+ }
+ if (E.editor && E.editor.isFormField) {
+ E.editor = new Ext.grid.GridEditor(E.editor)
+ }
+ this.lookup[E.id] = E
+ }
+ if (!B) {
+ this.fireEvent("configchange", this)
+ }
+},getColumnById:function(A) {
+ return this.lookup[A]
+},getIndexById:function(C) {
+ for (var B = 0,A = this.config.length; B < A; B++) {
+ if (this.config[B].id == C) {
+ return B
+ }
+ }
+ return -1
+},moveColumn:function(C, A) {
+ var B = this.config[C];
+ this.config.splice(C, 1);
+ this.config.splice(A, 0, B);
+ this.dataMap = null;
+ this.fireEvent("columnmoved", this, C, A)
+},isLocked:function(A) {
+ return this.config[A].locked === true
+},setLocked:function(B, C, A) {
+ if (this.isLocked(B) == C) {
+ return
+ }
+ this.config[B].locked = C;
+ if (!A) {
+ this.fireEvent("columnlockchange", this, B, C)
+ }
+},getTotalLockedWidth:function() {
+ var A = 0;
+ for (var B = 0; B < this.config.length; B++) {
+ if (this.isLocked(B) && !this.isHidden(B)) {
+ this.totalWidth += this.getColumnWidth(B)
+ }
+ }
+ return A
+},getLockedCount:function() {
+ for (var B = 0,A = this.config.length; B < A; B++) {
+ if (!this.isLocked(B)) {
+ return B
+ }
+ }
+},getColumnCount:function(C) {
+ if (C === true) {
+ var D = 0;
+ for (var B = 0,A = this.config.length; B < A; B++) {
+ if (!this.isHidden(B)) {
+ D++
+ }
+ }
+ return D
+ }
+ return this.config.length
+},getColumnsBy:function(D, C) {
+ var E = [];
+ for (var B = 0,A = this.config.length; B < A; B++) {
+ var F = this.config[B];
+ if (D.call(C || this, F, B) === true) {
+ E[E.length] = F
+ }
+ }
+ return E
+},isSortable:function(A) {
+ if (typeof this.config[A].sortable == "undefined") {
+ return this.defaultSortable
+ }
+ return this.config[A].sortable
+},isMenuDisabled:function(A) {
+ return !!this.config[A].menuDisabled
+},getRenderer:function(A) {
+ if (!this.config[A].renderer) {
+ return Ext.grid.ColumnModel.defaultRenderer
+ }
+ return this.config[A].renderer
+},setRenderer:function(A, B) {
+ this.config[A].renderer = B
+},getColumnWidth:function(A) {
+ return this.config[A].width || this.defaultWidth
+},setColumnWidth:function(B, C, A) {
+ this.config[B].width = C;
+ this.totalWidth = null;
+ if (!A) {
+ this.fireEvent("widthchange", this, B, C)
+ }
+},getTotalWidth:function(B) {
+ if (!this.totalWidth) {
+ this.totalWidth = 0;
+ for (var C = 0,A = this.config.length; C < A; C++) {
+ if (B || !this.isHidden(C)) {
+ this.totalWidth += this.getColumnWidth(C)
+ }
+ }
+ }
+ return this.totalWidth
+},getColumnHeader:function(A) {
+ return this.config[A].header
+},setColumnHeader:function(A, B) {
+ this.config[A].header = B;
+ this.fireEvent("headerchange", this, A, B)
+},getColumnTooltip:function(A) {
+ return this.config[A].tooltip
+},setColumnTooltip:function(A, B) {
+ this.config[A].tooltip = B
+},getDataIndex:function(A) {
+ return this.config[A].dataIndex
+},setDataIndex:function(A, B) {
+ this.config[A].dataIndex = B
+},findColumnIndex:function(C) {
+ var D = this.config;
+ for (var B = 0,A = D.length; B < A; B++) {
+ if (D[B].dataIndex == C) {
+ return B
+ }
+ }
+ return -1
+},isCellEditable:function(A, B) {
+ return(this.config[A].editable || (typeof this.config[A].editable
+ == "undefined" && this.config[A].editor)) ? true : false
+},getCellEditor:function(A, B) {
+ return this.config[A].editor
+},setEditable:function(A, B) {
+ this.config[A].editable = B
+},isHidden:function(A) {
+ return this.config[A].hidden
+},isFixed:function(A) {
+ return this.config[A].fixed
+},isResizable:function(A) {
+ return A >= 0 && this.config[A].resizable !== false && this.config[A].fixed
+ !== true
+},setHidden:function(A, B) {
+ var C = this.config[A];
+ if (C.hidden !== B) {
+ C.hidden = B;
+ this.totalWidth = null;
+ this.fireEvent("hiddenchange", this, A, B)
+ }
+},setEditor:function(A, B) {
+ this.config[A].editor = B
+}});
+Ext.grid.ColumnModel.defaultRenderer = function(A) {
+ if (typeof A == "string" && A.length < 1) {
+ return"&#160;"
+ }
+ return A
+};
+Ext.grid.DefaultColumnModel = Ext.grid.ColumnModel;
+Ext.grid.AbstractSelectionModel = function() {
+ this.locked = false;
+ Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.AbstractSelectionModel, Ext.util.Observable, {init:function(
+ A) {
+ this.grid = A;
+ this.initEvents()
+},lock:function() {
+ this.locked = true
+},unlock:function() {
+ this.locked = false
+},isLocked:function() {
+ return this.locked
+}});
+Ext.grid.RowSelectionModel = function(A) {
+ Ext.apply(this, A);
+ this.selections = new Ext.util.MixedCollection(false, function(B) {
+ return B.id
+ });
+ this.last = false;
+ this.lastActive = false;
+ this.addEvents("selectionchange", "beforerowselect", "rowselect", "rowdeselect");
+ Ext.grid.RowSelectionModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.RowSelectionModel, Ext.grid.AbstractSelectionModel, {singleSelect:false,initEvents:function() {
+ if (!this.grid.enableDragDrop && !this.grid.enableDrag) {
+ this.grid.on("rowmousedown", this.handleMouseDown, this)
+ } else {
+ this.grid.on("rowclick", function(B, D, C) {
+ if (C.button === 0 && !C.shiftKey && !C.ctrlKey) {
+ this.selectRow(D, false);
+ B.view.focusRow(D)
+ }
+ }, this)
+ }
+ this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), {"up":function(C) {
+ if (!C.shiftKey) {
+ this.selectPrevious(C.shiftKey)
+ } else {
+ if (this.last !== false && this.lastActive !== false) {
+ var B = this.last;
+ this.selectRange(this.last, this.lastActive - 1);
+ this.grid.getView().focusRow(this.lastActive);
+ if (B !== false) {
+ this.last = B
+ }
+ } else {
+ this.selectFirstRow()
+ }
+ }
+ },"down":function(C) {
+ if (!C.shiftKey) {
+ this.selectNext(C.shiftKey)
+ } else {
+ if (this.last !== false && this.lastActive !== false) {
+ var B = this.last;
+ this.selectRange(this.last, this.lastActive + 1);
+ this.grid.getView().focusRow(this.lastActive);
+ if (B !== false) {
+ this.last = B
+ }
+ } else {
+ this.selectFirstRow()
+ }
+ }
+ },scope:this});
+ var A = this.grid.view;
+ A.on("refresh", this.onRefresh, this);
+ A.on("rowupdated", this.onRowUpdated, this);
+ A.on("rowremoved", this.onRemove, this)
+},onRefresh:function() {
+ var F = this.grid.store,B;
+ var D = this.getSelections();
+ this.clearSelections(true);
+ for (var C = 0,A = D.length; C < A; C++) {
+ var E = D[C];
+ if ((B = F.indexOfId(E.id)) != -1) {
+ this.selectRow(B, true)
+ }
+ }
+ if (D.length != this.selections.getCount()) {
+ this.fireEvent("selectionchange", this)
+ }
+},onRemove:function(A, B, C) {
+ if (this.selections.remove(C) !== false) {
+ this.fireEvent("selectionchange", this)
+ }
+},onRowUpdated:function(A, B, C) {
+ if (this.isSelected(C)) {
+ A.onRowSelect(B)
+ }
+},selectRecords:function(B, E) {
+ if (!E) {
+ this.clearSelections()
+ }
+ var D = this.grid.store;
+ for (var C = 0,A = B.length; C < A; C++) {
+ this.selectRow(D.indexOf(B[C]), true)
+ }
+},getCount:function() {
+ return this.selections.length
+},selectFirstRow:function() {
+ this.selectRow(0)
+},selectLastRow:function(A) {
+ this.selectRow(this.grid.store.getCount() - 1, A)
+},selectNext:function(A) {
+ if (this.hasNext()) {
+ this.selectRow(this.last + 1, A);
+ this.grid.getView().focusRow(this.last);
+ return true
+ }
+ return false
+},selectPrevious:function(A) {
+ if (this.hasPrevious()) {
+ this.selectRow(this.last - 1, A);
+ this.grid.getView().focusRow(this.last);
+ return true
+ }
+ return false
+},hasNext:function() {
+ return this.last !== false && (this.last + 1) < this.grid.store.getCount()
+},hasPrevious:function() {
+ return !!this.last
+},getSelections:function() {
+ return[].concat(this.selections.items)
+},getSelected:function() {
+ return this.selections.itemAt(0)
+},each:function(E, D) {
+ var C = this.getSelections();
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (E.call(D || this, C[B], B) === false) {
+ return false
+ }
+ }
+ return true
+},clearSelections:function(A) {
+ if (this.locked) {
+ return
+ }
+ if (A !== true) {
+ var C = this.grid.store;
+ var B = this.selections;
+ B.each(function(D) {
+ this.deselectRow(C.indexOfId(D.id))
+ }, this);
+ B.clear()
+ } else {
+ this.selections.clear()
+ }
+ this.last = false
+},selectAll:function() {
+ if (this.locked) {
+ return
+ }
+ this.selections.clear();
+ for (var B = 0,A = this.grid.store.getCount(); B < A; B++) {
+ this.selectRow(B, true)
+ }
+},hasSelection:function() {
+ return this.selections.length > 0
+},isSelected:function(A) {
+ var B = typeof A == "number" ? this.grid.store.getAt(A) : A;
+ return(B && this.selections.key(B.id) ? true : false)
+},isIdSelected:function(A) {
+ return(this.selections.key(A) ? true : false)
+},handleMouseDown:function(D, F, E) {
+ if (E.button !== 0 || this.isLocked()) {
+ return
+ }
+ var A = this.grid.getView();
+ if (E.shiftKey && this.last !== false) {
+ var C = this.last;
+ this.selectRange(C, F, E.ctrlKey);
+ this.last = C;
+ A.focusRow(F)
+ } else {
+ var B = this.isSelected(F);
+ if (E.ctrlKey && B) {
+ this.deselectRow(F)
+ } else {
+ if (!B || this.getCount() > 1) {
+ this.selectRow(F, E.ctrlKey || E.shiftKey);
+ A.focusRow(F)
+ }
+ }
+ }
+},selectRows:function(C, D) {
+ if (!D) {
+ this.clearSelections()
+ }
+ for (var B = 0,A = C.length; B < A; B++) {
+ this.selectRow(C[B], true)
+ }
+},selectRange:function(B, A, D) {
+ if (this.locked) {
+ return
+ }
+ if (!D) {
+ this.clearSelections()
+ }
+ if (B <= A) {
+ for (var C = B; C <= A; C++) {
+ this.selectRow(C, true)
+ }
+ } else {
+ for (var C = B; C >= A; C--) {
+ this.selectRow(C, true)
+ }
+ }
+},deselectRange:function(C, B, A) {
+ if (this.locked) {
+ return
+ }
+ for (var D = C; D <= B; D++) {
+ this.deselectRow(D, A)
+ }
+},selectRow:function(B, D, A) {
+ if (this.locked || (B < 0 || B >= this.grid.store.getCount())) {
+ return
+ }
+ var C = this.grid.store.getAt(B);
+ if (C && this.fireEvent("beforerowselect", this, B, D, C) !== false) {
+ if (!D || this.singleSelect) {
+ this.clearSelections()
+ }
+ this.selections.add(C);
+ this.last = this.lastActive = B;
+ if (!A) {
+ this.grid.getView().onRowSelect(B)
+ }
+ this.fireEvent("rowselect", this, B, C);
+ this.fireEvent("selectionchange", this)
+ }
+},deselectRow:function(B, A) {
+ if (this.locked) {
+ return
+ }
+ if (this.last == B) {
+ this.last = false
+ }
+ if (this.lastActive == B) {
+ this.lastActive = false
+ }
+ var C = this.grid.store.getAt(B);
+ if (C) {
+ this.selections.remove(C);
+ if (!A) {
+ this.grid.getView().onRowDeselect(B)
+ }
+ this.fireEvent("rowdeselect", this, B, C);
+ this.fireEvent("selectionchange", this)
+ }
+},restoreLast:function() {
+ if (this._last) {
+ this.last = this._last
+ }
+},acceptsNav:function(C, B, A) {
+ return !A.isHidden(B) && A.isCellEditable(B, C)
+},onEditorKey:function(F, E) {
+ var C = E.getKey(),G,D = this.grid,B = D.activeEditor;
+ var A = E.shiftKey;
+ if (C == E.TAB) {
+ E.stopEvent();
+ B.completeEdit();
+ if (A) {
+ G = D.walkCells(B.row, B.col - 1, -1, this.acceptsNav, this)
+ } else {
+ G = D.walkCells(B.row, B.col + 1, 1, this.acceptsNav, this)
+ }
+ } else {
+ if (C == E.ENTER) {
+ E.stopEvent();
+ B.completeEdit();
+ if (this.moveEditorOnEnter !== false) {
+ if (A) {
+ G = D.walkCells(B.row - 1, B.col, -1, this.acceptsNav, this)
+ } else {
+ G = D.walkCells(B.row + 1, B.col, 1, this.acceptsNav, this)
+ }
+ }
+ } else {
+ if (C == E.ESC) {
+ B.cancelEdit()
+ }
+ }
+ }
+ if (G) {
+ D.startEditing(G[0], G[1])
+ }
+}});
+Ext.grid.CellSelectionModel = function(A) {
+ Ext.apply(this, A);
+ this.selection = null;
+ this.addEvents("beforecellselect", "cellselect", "selectionchange");
+ Ext.grid.CellSelectionModel.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.CellSelectionModel, Ext.grid.AbstractSelectionModel, {initEvents:function() {
+ this.grid.on("cellmousedown", this.handleMouseDown, this);
+ this.grid.getGridEl().on(Ext.isIE ? "keydown"
+ : "keypress", this.handleKeyDown, this);
+ var A = this.grid.view;
+ A.on("refresh", this.onViewChange, this);
+ A.on("rowupdated", this.onRowUpdated, this);
+ A.on("beforerowremoved", this.clearSelections, this);
+ A.on("beforerowsinserted", this.clearSelections, this);
+ if (this.grid.isEditor) {
+ this.grid.on("beforeedit", this.beforeEdit, this)
+ }
+},beforeEdit:function(A) {
+ this.select(A.row, A.column, false, true, A.record)
+},onRowUpdated:function(A, B, C) {
+ if (this.selection && this.selection.record == C) {
+ A.onCellSelect(B, this.selection.cell[1])
+ }
+},onViewChange:function() {
+ this.clearSelections(true)
+},getSelectedCell:function() {
+ return this.selection ? this.selection.cell : null
+},clearSelections:function(B) {
+ var A = this.selection;
+ if (A) {
+ if (B !== true) {
+ this.grid.view.onCellDeselect(A.cell[0], A.cell[1])
+ }
+ this.selection = null;
+ this.fireEvent("selectionchange", this, null)
+ }
+},hasSelection:function() {
+ return this.selection ? true : false
+},handleMouseDown:function(B, D, A, C) {
+ if (C.button !== 0 || this.isLocked()) {
+ return
+ }
+ this.select(D, A)
+},select:function(F, C, B, E, D) {
+ if (this.fireEvent("beforecellselect", this, F, C) !== false) {
+ this.clearSelections();
+ D = D || this.grid.store.getAt(F);
+ this.selection = {record:D,cell:[F,C]};
+ if (!B) {
+ var A = this.grid.getView();
+ A.onCellSelect(F, C);
+ if (E !== true) {
+ A.focusCell(F, C)
+ }
+ }
+ this.fireEvent("cellselect", this, F, C);
+ this.fireEvent("selectionchange", this, this.selection)
+ }
+},isSelectable:function(C, B, A) {
+ return !A.isHidden(B)
+},handleKeyDown:function(F) {
+ if (!F.isNavKeyPress()) {
+ return
+ }
+ var E = this.grid,J = this.selection;
+ if (!J) {
+ F.stopEvent();
+ var I = E.walkCells(0, 0, 1, this.isSelectable, this);
+ if (I) {
+ this.select(I[0], I[1])
+ }
+ return
+ }
+ var B = this;
+ var H = function(M, K, L) {
+ return E.walkCells(M, K, L, B.isSelectable, B)
+ };
+ var C = F.getKey(),A = J.cell[0],G = J.cell[1];
+ var D;
+ switch (C) {case F.TAB:if (F.shiftKey) {
+ D = H(A, G - 1, -1)
+ } else {
+ D = H(A, G + 1, 1)
+ }break;case F.DOWN:D = H(A + 1, G, 1);break;case F.UP:D = H(A
+ - 1, G, -1);break;case F.RIGHT:D = H(A, G
+ + 1, 1);break;case F.LEFT:D = H(A, G
+ - 1, -1);break;case F.ENTER:if (E.isEditor && !E.editing) {
+ E.startEditing(A, G);
+ F.stopEvent();
+ return
+ }break}
+ if (D) {
+ this.select(D[0], D[1]);
+ F.stopEvent()
+ }
+},acceptsNav:function(C, B, A) {
+ return !A.isHidden(B) && A.isCellEditable(B, C)
+},onEditorKey:function(E, D) {
+ var B = D.getKey(),F,C = this.grid,A = C.activeEditor;
+ if (B == D.TAB) {
+ if (D.shiftKey) {
+ F = C.walkCells(A.row, A.col - 1, -1, this.acceptsNav, this)
+ } else {
+ F = C.walkCells(A.row, A.col + 1, 1, this.acceptsNav, this)
+ }
+ D.stopEvent()
+ } else {
+ if (B == D.ENTER) {
+ A.completeEdit();
+ D.stopEvent()
+ } else {
+ if (B == D.ESC) {
+ D.stopEvent();
+ A.cancelEdit()
+ }
+ }
+ }
+ if (F) {
+ C.startEditing(F[0], F[1])
+ }
+}});
+Ext.grid.EditorGridPanel
+ = Ext.extend(Ext.grid.GridPanel, {clicksToEdit:2,isEditor:true,detectEdit:false,autoEncode:false,trackMouseOver:false,initComponent:function() {
+ Ext.grid.EditorGridPanel.superclass.initComponent.call(this);
+ if (!this.selModel) {
+ this.selModel = new Ext.grid.CellSelectionModel()
+ }
+ this.activeEditor = null;
+ this.addEvents("beforeedit", "afteredit", "validateedit")
+},initEvents:function() {
+ Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
+ this.on("bodyscroll", this.stopEditing, this, [true]);
+ if (this.clicksToEdit == 1) {
+ this.on("cellclick", this.onCellDblClick, this)
+ } else {
+ if (this.clicksToEdit == "auto" && this.view.mainBody) {
+ this.view.mainBody.on("mousedown", this.onAutoEditClick, this)
+ }
+ this.on("celldblclick", this.onCellDblClick, this)
+ }
+ this.getGridEl().addClass("xedit-grid")
+},onCellDblClick:function(B, C, A) {
+ this.startEditing(C, A)
+},onAutoEditClick:function(C, B) {
+ if (C.button !== 0) {
+ return
+ }
+ var E = this.view.findRowIndex(B);
+ var A = this.view.findCellIndex(B);
+ if (E !== false && A !== false) {
+ this.stopEditing();
+ if (this.selModel.getSelectedCell) {
+ var D = this.selModel.getSelectedCell();
+ if (D && D.cell[0] === E && D.cell[1] === A) {
+ this.startEditing(E, A)
+ }
+ } else {
+ if (this.selModel.isSelected(E)) {
+ this.startEditing(E, A)
+ }
+ }
+ }
+},onEditComplete:function(B, D, A) {
+ this.editing = false;
+ this.activeEditor = null;
+ B.un("specialkey", this.selModel.onEditorKey, this.selModel);
+ var C = B.record;
+ var F = this.colModel.getDataIndex(B.col);
+ D = this.postEditValue(D, A, C, F);
+ if (String(D) !== String(A)) {
+ var E = {grid:this,record:C,field:F,originalValue:A,value:D,row:B.row,column:B.col,cancel:false};
+ if (this.fireEvent("validateedit", E) !== false && !E.cancel) {
+ C.set(F, E.value);
+ delete E.cancel;
+ this.fireEvent("afteredit", E)
+ }
+ }
+ this.view.focusCell(B.row, B.col)
+},startEditing:function(F, B) {
+ this.stopEditing();
+ if (this.colModel.isCellEditable(B, F)) {
+ this.view.ensureVisible(F, B, true);
+ var C = this.store.getAt(F);
+ var E = this.colModel.getDataIndex(B);
+ var D = {grid:this,record:C,field:E,value:C.data[E],row:F,column:B,cancel:false};
+ if (this.fireEvent("beforeedit", D) !== false && !D.cancel) {
+ this.editing = true;
+ var A = this.colModel.getCellEditor(B, F);
+ if (!A.rendered) {
+ A.render(this.view.getEditorParent(A))
+ }
+ (function() {
+ A.row = F;
+ A.col = B;
+ A.record = C;
+ A.on("complete", this.onEditComplete, this, {single:true});
+ A.on("specialkey", this.selModel.onEditorKey, this.selModel);
+ this.activeEditor = A;
+ var G = this.preEditValue(C, E);
+ A.startEdit(this.view.getCell(F, B), G)
+ }).defer(50, this)
+ }
+ }
+},preEditValue:function(A, B) {
+ return this.autoEncode && typeof value == "string"
+ ? Ext.util.Format.htmlDecode(A.data[B]) : A.data[B]
+},postEditValue:function(C, A, B, D) {
+ return this.autoEncode && typeof C == "string"
+ ? Ext.util.Format.htmlEncode(C) : C
+},stopEditing:function(A) {
+ if (this.activeEditor) {
+ this.activeEditor[A === true ? "cancelEdit" : "completeEdit"]()
+ }
+ this.activeEditor = null
+}});
+Ext.reg("editorgrid", Ext.grid.EditorGridPanel);
+Ext.grid.GridEditor = function(B, A) {
+ Ext.grid.GridEditor.superclass.constructor.call(this, B, A);
+ B.monitorTab = false
+};
+Ext.extend(Ext.grid.GridEditor, Ext.Editor, {alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:false});
+Ext.grid.PropertyRecord = Ext.data.Record.create([
+ {
+ name:"name",
+ type:"string"
+ },
+ "value"
+]);
+Ext.grid.PropertyStore = function(A, B) {
+ this.grid = A;
+ this.store = new Ext.data.Store({recordType:Ext.grid.PropertyRecord});
+ this.store.on("update", this.onUpdate, this);
+ if (B) {
+ this.setSource(B)
+ }
+ Ext.grid.PropertyStore.superclass.constructor.call(this)
+};
+Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, {setSource:function(C) {
+ this.source = C;
+ this.store.removeAll();
+ var B = [];
+ for (var A in C) {
+ if (this.isEditableValue(C[A])) {
+ B.push(new Ext.grid.PropertyRecord({name:A,value:C[A]}, A))
+ }
+ }
+ this.store.loadRecords({records:B}, {}, true)
+},onUpdate:function(E, A, D) {
+ if (D == Ext.data.Record.EDIT) {
+ var B = A.data["value"];
+ var C = A.modified["value"];
+ if (this.grid.fireEvent("beforepropertychange", this.source, A.id, B, C)
+ !== false) {
+ this.source[A.id] = B;
+ A.commit();
+ this.grid.fireEvent("propertychange", this.source, A.id, B, C)
+ } else {
+ A.reject()
+ }
+ }
+},getProperty:function(A) {
+ return this.store.getAt(A)
+},isEditableValue:function(A) {
+ if (Ext.isDate(A)) {
+ return true
+ } else {
+ if (typeof A == "object" || typeof A == "function") {
+ return false
+ }
+ }
+ return true
+},setValue:function(B, A) {
+ this.source[B] = A;
+ this.store.getById(B).set("value", A)
+},getSource:function() {
+ return this.source
+}});
+Ext.grid.PropertyColumnModel = function(C, B) {
+ this.grid = C;
+ var D = Ext.grid;
+ D.PropertyColumnModel.superclass.constructor.call(this, [
+ {
+ header:this.nameText,
+ width:50,
+ sortable:true,
+ dataIndex:"name",
+ id:"name",
+ menuDisabled:true
+ },
+ {
+ header:this.valueText,
+ width:50,
+ resizable:false,
+ dataIndex:"value",
+ id:"value",
+ menuDisabled:true
+ }
+ ]);
+ this.store = B;
+ this.bselect
+ = Ext.DomHelper.append(document.body, {tag:"select",cls:"x-grid-editor x-hide-display",children:[
+ {
+ tag:"option",
+ value:"true",
+ html:"true"
+ },
+ {
+ tag:"option",
+ value:"false",
+ html:"false"
+ }
+ ]});
+ var E = Ext.form;
+ var A = new E.Field({el:this.bselect,bselect:this.bselect,autoShow:true,getValue:function() {
+ return this.bselect.value == "true"
+ }});
+ this.editors
+ = {"date":new D.GridEditor(new E.DateField({selectOnFocus:true})),"string":new D.GridEditor(new E.TextField({selectOnFocus:true})),"number":new D.GridEditor(new E.NumberField({selectOnFocus:true,style:"text-align:left;"})),"boolean":new D.GridEditor(A)};
+ this.renderCellDelegate = this.renderCell.createDelegate(this);
+ this.renderPropDelegate = this.renderProp.createDelegate(this)
+};
+Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, {nameText:"Name",valueText:"Value",dateFormat:"m/j/Y",renderDate:function(
+ A) {
+ return A.dateFormat(this.dateFormat)
+},renderBool:function(A) {
+ return A ? "true" : "false"
+},isCellEditable:function(A, B) {
+ return A == 1
+},getRenderer:function(A) {
+ return A == 1 ? this.renderCellDelegate : this.renderPropDelegate
+},renderProp:function(A) {
+ return this.getPropertyName(A)
+},renderCell:function(A) {
+ var B = A;
+ if (Ext.isDate(A)) {
+ B = this.renderDate(A)
+ } else {
+ if (typeof A == "boolean") {
+ B = this.renderBool(A)
+ }
+ }
+ return Ext.util.Format.htmlEncode(B)
+},getPropertyName:function(B) {
+ var A = this.grid.propertyNames;
+ return A && A[B] ? A[B] : B
+},getCellEditor:function(A, E) {
+ var B = this.store.getProperty(E);
+ var D = B.data["name"],C = B.data["value"];
+ if (this.grid.customEditors[D]) {
+ return this.grid.customEditors[D]
+ }
+ if (Ext.isDate(C)) {
+ return this.editors["date"]
+ } else {
+ if (typeof C == "number") {
+ return this.editors["number"]
+ } else {
+ if (typeof C == "boolean") {
+ return this.editors["boolean"]
+ } else {
+ return this.editors["string"]
+ }
+ }
+ }
+}});
+Ext.grid.PropertyGrid
+ = Ext.extend(Ext.grid.EditorGridPanel, {enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1,enableHdMenu:false,viewConfig:{forceFit:true},initComponent:function() {
+ this.customEditors = this.customEditors || {};
+ this.lastEditRow = null;
+ var B = new Ext.grid.PropertyStore(this);
+ this.propStore = B;
+ var A = new Ext.grid.PropertyColumnModel(this, B);
+ B.store.sort("name", "ASC");
+ this.addEvents("beforepropertychange", "propertychange");
+ this.cm = A;
+ this.ds = B.store;
+ Ext.grid.PropertyGrid.superclass.initComponent.call(this);
+ this.selModel.on("beforecellselect", function(E, D, C) {
+ if (C === 0) {
+ this.startEditing.defer(200, this, [D,1]);
+ return false
+ }
+ }, this)
+},onRender:function() {
+ Ext.grid.PropertyGrid.superclass.onRender.apply(this, arguments);
+ this.getGridEl().addClass("x-props-grid")
+},afterRender:function() {
+ Ext.grid.PropertyGrid.superclass.afterRender.apply(this, arguments);
+ if (this.source) {
+ this.setSource(this.source)
+ }
+},setSource:function(A) {
+ this.propStore.setSource(A)
+},getSource:function() {
+ return this.propStore.getSource()
+}});
+Ext.grid.RowNumberer = function(A) {
+ Ext.apply(this, A);
+ if (this.rowspan) {
+ this.renderer = this.renderer.createDelegate(this)
+ }
+};
+Ext.grid.RowNumberer.prototype
+ = {header:"",width:23,sortable:false,fixed:true,menuDisabled:true,dataIndex:"",id:"numberer",rowspan:undefined,renderer:function(
+ B, C, A, D) {
+ if (this.rowspan) {
+ C.cellAttr = "rowspan=\"" + this.rowspan + "\""
+ }
+ return D + 1
+}};
+Ext.grid.CheckboxSelectionModel
+ = Ext.extend(Ext.grid.RowSelectionModel, {header:"<div class=\"x-grid3-hd-checker\">&#160;</div>",width:20,sortable:false,menuDisabled:true,fixed:true,dataIndex:"",id:"checker",initEvents:function() {
+ Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);
+ this.grid.on("render", function() {
+ var A = this.grid.getView();
+ A.mainBody.on("mousedown", this.onMouseDown, this);
+ Ext.fly(A.innerHd).on("mousedown", this.onHdMouseDown, this)
+ }, this)
+},onMouseDown:function(C, B) {
+ if (C.button === 0 && B.className == "x-grid3-row-checker") {
+ C.stopEvent();
+ var D = C.getTarget(".x-grid3-row");
+ if (D) {
+ var A = D.rowIndex;
+ if (this.isSelected(A)) {
+ this.deselectRow(A)
+ } else {
+ this.selectRow(A, true)
+ }
+ }
+ }
+},onHdMouseDown:function(C, A) {
+ if (A.className == "x-grid3-hd-checker") {
+ C.stopEvent();
+ var B = Ext.fly(A.parentNode);
+ var D = B.hasClass("x-grid3-hd-checker-on");
+ if (D) {
+ B.removeClass("x-grid3-hd-checker-on");
+ this.clearSelections()
+ } else {
+ B.addClass("x-grid3-hd-checker-on");
+ this.selectAll()
+ }
+ }
+},renderer:function(B, C, A) {
+ return"<div class=\"x-grid3-row-checker\">&#160;</div>"
+}});
+Ext.LoadMask = function(C, B) {
+ this.el = Ext.get(C);
+ Ext.apply(this, B);
+ if (this.store) {
+ this.store.on("beforeload", this.onBeforeLoad, this);
+ this.store.on("load", this.onLoad, this);
+ this.store.on("loadexception", this.onLoad, this);
+ this.removeMask = Ext.value(this.removeMask, false)
+ } else {
+ var A = this.el.getUpdater();
+ A.showLoadIndicator = false;
+ A.on("beforeupdate", this.onBeforeLoad, this);
+ A.on("update", this.onLoad, this);
+ A.on("failure", this.onLoad, this);
+ this.removeMask = Ext.value(this.removeMask, true)
+ }
+};
+Ext.LoadMask.prototype
+ = {msg:"Loading...",msgCls:"x-mask-loading",disabled:false,disable:function() {
+ this.disabled = true
+},enable:function() {
+ this.disabled = false
+},onLoad:function() {
+ this.el.unmask(this.removeMask)
+},onBeforeLoad:function() {
+ if (!this.disabled) {
+ this.el.mask(this.msg, this.msgCls)
+ }
+},show:function() {
+ this.onBeforeLoad()
+},hide:function() {
+ this.onLoad()
+},destroy:function() {
+ if (this.store) {
+ this.store.un("beforeload", this.onBeforeLoad, this);
+ this.store.un("load", this.onLoad, this);
+ this.store.un("loadexception", this.onLoad, this)
+ } else {
+ var A = this.el.getUpdater();
+ A.un("beforeupdate", this.onBeforeLoad, this);
+ A.un("update", this.onLoad, this);
+ A.un("failure", this.onLoad, this)
+ }
+}};
+Ext.ProgressBar
+ = Ext.extend(Ext.BoxComponent, {baseCls:"x-progress",waitTimer:null,initComponent:function() {
+ Ext.ProgressBar.superclass.initComponent.call(this);
+ this.addEvents("update")
+},onRender:function(D, A) {
+ Ext.ProgressBar.superclass.onRender.call(this, D, A);
+ var C = new Ext.Template("<div class=\"{cls}-wrap\">", "<div class=\"{cls}-inner\">", "<div class=\"{cls}-bar\">", "<div class=\"{cls}-text\">", "<div>&#160;</div>", "</div>", "</div>", "<div class=\"{cls}-text {cls}-text-back\">", "<div>&#160;</div>", "</div>", "</div>", "</div>");
+ if (A) {
+ this.el = C.insertBefore(A, {cls:this.baseCls}, true)
+ } else {
+ this.el = C.append(D, {cls:this.baseCls}, true)
+ }
+ if (this.id) {
+ this.el.dom.id = this.id
+ }
+ var B = this.el.dom.firstChild;
+ this.progressBar = Ext.get(B.firstChild);
+ if (this.textEl) {
+ this.textEl = Ext.get(this.textEl);
+ delete this.textTopEl
+ } else {
+ this.textTopEl = Ext.get(this.progressBar.dom.firstChild);
+ var E = Ext.get(B.childNodes[1]);
+ this.textTopEl.setStyle("z-index", 99).addClass("x-hidden");
+ this.textEl
+ = new Ext.CompositeElement([this.textTopEl.dom.firstChild,E.dom.firstChild]);
+ this.textEl.setWidth(B.offsetWidth)
+ }
+ if (this.value) {
+ this.updateProgress(this.value, this.text)
+ } else {
+ this.updateText(this.text)
+ }
+ this.setSize(this.width || "auto", "auto");
+ this.progressBar.setHeight(B.offsetHeight)
+},updateProgress:function(B, C) {
+ this.value = B || 0;
+ if (C) {
+ this.updateText(C)
+ }
+ var A = Math.floor(B * this.el.dom.firstChild.offsetWidth);
+ this.progressBar.setWidth(A);
+ if (this.textTopEl) {
+ this.textTopEl.removeClass("x-hidden").setWidth(A)
+ }
+ this.fireEvent("update", this, B, C);
+ return this
+},wait:function(B) {
+ if (!this.waitTimer) {
+ var A = this;
+ B = B || {};
+ this.waitTimer = Ext.TaskMgr.start({run:function(C) {
+ var D = B.increment || 10;
+ this.updateProgress(((((C + D) % D) + 1) * (100 / D)) * 0.01)
+ },interval:B.interval || 1000,duration:B.duration,onStop:function() {
+ if (B.fn) {
+ B.fn.apply(B.scope || this)
+ }
+ this.reset()
+ },scope:A})
+ }
+ return this
+},isWaiting:function() {
+ return this.waitTimer != null
+},updateText:function(A) {
+ this.text = A || "&#160;";
+ this.textEl.update(this.text);
+ return this
+},setSize:function(A, C) {
+ Ext.ProgressBar.superclass.setSize.call(this, A, C);
+ if (this.textTopEl) {
+ var B = this.el.dom.firstChild;
+ this.textEl.setSize(B.offsetWidth, B.offsetHeight)
+ }
+ return this
+},reset:function(A) {
+ this.updateProgress(0);
+ if (this.textTopEl) {
+ this.textTopEl.addClass("x-hidden")
+ }
+ if (this.waitTimer) {
+ this.waitTimer.onStop = null;
+ Ext.TaskMgr.stop(this.waitTimer);
+ this.waitTimer = null
+ }
+ if (A === true) {
+ this.hide()
+ }
+ return this
+}});
+Ext.reg("progress", Ext.ProgressBar);
diff --git a/samples/src/main/java/gwtquery/samples/public/ext-base.js b/samples/src/main/java/gwtquery/samples/public/ext-base.js
index fe67cb85..eec4c8ef 100644
--- a/samples/src/main/java/gwtquery/samples/public/ext-base.js
+++ b/samples/src/main/java/gwtquery/samples/public/ext-base.js
@@ -6,5 +6,1868 @@
* http://extjs.com/license
*/
-Ext={version:"2.0.2"};window["undefined"]=window["undefined"];Ext.apply=function(C,D,B){if(B){Ext.apply(C,B)}if(C&&D&&typeof D=="object"){for(var A in D){C[A]=D[A]}}return C};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isSafari3=isSafari&&ua.indexOf("webkit/5")!=-1,isIE=!isOpera&&ua.indexOf("msie")>-1,isIE7=!isOpera&&ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isAir=(ua.indexOf("adobeair")!=-1),isLinux=(ua.indexOf("linux")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p]}}}return o},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o)});return }var cache={};for(var b in o){var parts=b.split("@");if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s)}cache[s].on(parts[1],o[b])}}cache=null},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id},extend:function(){var io=function(o){for(var m in o){this[m]=o[m]}};var oc=Object.prototype.constructor;return function(sb,sp,overrides){if(typeof sp=="object"){overrides=sp;sp=sb;sb=overrides.constructor!=oc?overrides.constructor:function(){sp.apply(this,arguments)}}var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==oc){spp.constructor=sp}sb.override=function(o){Ext.override(sb,o)};sbp.override=io;Ext.override(sb,overrides);sb.extend=function(o){Ext.extend(sb,o)};return sb}}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method]}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval("if (typeof "+rt+" == \"undefined\"){"+rt+" = {};} o = "+rt+";");for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]]}}},urlEncode:function(o){if(!o){return""}var buf=[];for(var key in o){var ov=o[key],k=encodeURIComponent(key);var type=typeof ov;if(type=="undefined"){buf.push(k,"=&")}else{if(type!="function"&&type!="object"){buf.push(k,"=",encodeURIComponent(ov),"&")}else{if(Ext.isArray(ov)){if(ov.length){for(var i=0,len=ov.length;i<len;i++){buf.push(k,"=",encodeURIComponent(ov[i]===undefined?"":ov[i]),"&")}}else{buf.push(k,"=&")}}}}}buf.pop();return buf.join("")},urlDecode:function(string,overwrite){if(!string||!string.length){return{}}var obj={};var pairs=string.split("&");var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split("=");name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value}else{if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value)}else{obj[name].push(value)}}}else{obj[name]=value}}return obj},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array]}for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i}}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(Ext.isArray(a)){r=r.concat(a)}else{if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0))}else{r.push(a)}}}return r},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[])}else{cb.apply(scope,args||[])}}},getDom:function(el){if(!el||!document){return null}return el.dom?el.dom:(typeof el=="string"?document.getElementById(el):el)},getDoc:function(){return Ext.get(document)},getBody:function(){return Ext.get(document.body||document.documentElement)},getCmp:function(id){return Ext.ComponentMgr.get(id)},num:function(v,defaultValue){if(typeof v!="number"){return defaultValue}return v},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(typeof as.destroy=="function"){as.destroy()}else{if(as.dom){as.removeAllListeners();as.remove()}}}}},removeNode:isIE?function(){var d;return function(n){if(n&&n.tagName!="BODY"){d=d||document.createElement("div");d.appendChild(n);d.innerHTML=""}}}():function(n){if(n&&n.parentNode&&n.tagName!="BODY"){n.parentNode.removeChild(n)}},type:function(o){if(o===undefined||o===null){return false}if(o.htmlElement){return"element"}var t=typeof o;if(t=="object"&&o.nodeName){switch(o.nodeType){case 1:return"element";case 3:return(/\S/).test(o.nodeValue)?"textnode":"whitespace"}}if(t=="object"||t=="function"){switch(o.constructor){case Array:return"array";case RegExp:return"regexp"}if(typeof o.length=="number"&&typeof o.item=="function"){return"nodelist"}}return t},isEmpty:function(v,allowBlank){return v===null||v===undefined||(!allowBlank?v==="":false)},value:function(v,defaultValue,allowBlank){return Ext.isEmpty(v,allowBlank)?defaultValue:v},isArray:function(v){return v&&typeof v.pop=="function"},isDate:function(v){return v&&typeof v.getFullYear=="function"},isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari&&!isSafari3,isIE:isIE,isIE6:isIE&&!isIE7,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE&&!isIE7)||(isGecko&&isMac))});Ext.ns=Ext.namespace})();Ext.ns("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app","Ext.ux");Ext.apply(Function.prototype,{createCallback:function(){var A=arguments;var B=this;return function(){return B.apply(window,A)}},createDelegate:function(C,B,A){var D=this;return function(){var F=B||arguments;if(A===true){F=Array.prototype.slice.call(arguments,0);F=F.concat(B)}else{if(typeof A=="number"){F=Array.prototype.slice.call(arguments,0);var E=[A,0].concat(B);Array.prototype.splice.apply(F,E)}}return D.apply(C||window,F)}},defer:function(C,E,B,A){var D=this.createDelegate(E,B,A);if(C){return setTimeout(D,C)}D();return 0},createSequence:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){var D=C.apply(this||window,arguments);B.apply(A||this||window,arguments);return D}},createInterceptor:function(B,A){if(typeof B!="function"){return this}var C=this;return function(){B.target=this;B.method=C;if(B.apply(A||this||window,arguments)===false){return }return C.apply(this||window,arguments)}}});Ext.applyIf(String,{escape:function(A){return A.replace(/('|\\)/g,"\\$1")},leftPad:function(D,B,C){var A=new String(D);if(!C){C=" "}while(A.length<B){A=C+A}return A.toString()},format:function(B){var A=Array.prototype.slice.call(arguments,1);return B.replace(/\{(\d+)\}/g,function(C,D){return A[D]})}});String.prototype.toggle=function(B,A){return this==B?A:B};String.prototype.trim=function(){var A=/^\s+|\s+$/g;return function(){return this.replace(A,"")}}();Ext.applyIf(Number.prototype,{constrain:function(B,A){return Math.min(Math.max(this,B),A)}});Ext.applyIf(Array.prototype,{indexOf:function(C){for(var B=0,A=this.length;B<A;B++){if(this[B]==C){return B}}return -1},remove:function(B){var A=this.indexOf(B);if(A!=-1){this.splice(A,1)}return this}});Date.prototype.getElapsed=function(A){return Math.abs((A||new Date()).getTime()-this.getTime())};
-(function(){var B;Ext.lib.Dom={getViewWidth:function(E){return E?this.getDocumentWidth():this.getViewportWidth()},getViewHeight:function(E){return E?this.getDocumentHeight():this.getViewportHeight()},getDocumentHeight:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(E,this.getViewportHeight())},getDocumentWidth:function(){var E=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(E,this.getViewportWidth())},getViewportHeight:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientHeight:document.body.clientHeight}else{return self.innerHeight}},getViewportWidth:function(){if(Ext.isIE){return Ext.isStrict?document.documentElement.clientWidth:document.body.clientWidth}else{return self.innerWidth}},isAncestor:function(F,G){F=Ext.getDom(F);G=Ext.getDom(G);if(!F||!G){return false}if(F.contains&&!Ext.isSafari){return F.contains(G)}else{if(F.compareDocumentPosition){return !!(F.compareDocumentPosition(G)&16)}else{var E=G.parentNode;while(E){if(E==F){return true}else{if(!E.tagName||E.tagName.toUpperCase()=="HTML"){return false}}E=E.parentNode}return false}}},getRegion:function(E){return Ext.lib.Region.getRegion(E)},getY:function(E){return this.getXY(E)[1]},getX:function(E){return this.getXY(E)[0]},getXY:function(G){var F,K,M,N,J=(document.body||document.documentElement);G=Ext.getDom(G);if(G==J){return[0,0]}if(G.getBoundingClientRect){M=G.getBoundingClientRect();N=C(document).getScroll();return[M.left+N.left,M.top+N.top]}var O=0,L=0;F=G;var E=C(G).getStyle("position")=="absolute";while(F){O+=F.offsetLeft;L+=F.offsetTop;if(!E&&C(F).getStyle("position")=="absolute"){E=true}if(Ext.isGecko){K=C(F);var P=parseInt(K.getStyle("borderTopWidth"),10)||0;var H=parseInt(K.getStyle("borderLeftWidth"),10)||0;O+=H;L+=P;if(F!=G&&K.getStyle("overflow")!="visible"){O+=H;L+=P}}F=F.offsetParent}if(Ext.isSafari&&E){O-=J.offsetLeft;L-=J.offsetTop}if(Ext.isGecko&&!E){var I=C(J);O+=parseInt(I.getStyle("borderLeftWidth"),10)||0;L+=parseInt(I.getStyle("borderTopWidth"),10)||0}F=G.parentNode;while(F&&F!=J){if(!Ext.isOpera||(F.tagName!="TR"&&C(F).getStyle("display")!="inline")){O-=F.scrollLeft;L-=F.scrollTop}F=F.parentNode}return[O,L]},setXY:function(E,F){E=Ext.fly(E,"_setXY");E.position();var G=E.translatePoints(F);if(F[0]!==false){E.dom.style.left=G.left+"px"}if(F[1]!==false){E.dom.style.top=G.top+"px"}},setX:function(F,E){this.setXY(F,[E,false])},setY:function(E,F){this.setXY(E,[false,F])}};Ext.lib.Event=function(){var F=false;var G=[];var K=[];var I=0;var H=[];var E=0;var J=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var L=this;var M=function(){L._tryPreloadAttach()};this._interval=setInterval(M,this.POLL_INTERVAL)}},onAvailable:function(N,L,O,M){H.push({id:N,fn:L,obj:O,override:M,checkReady:false});I=this.POLL_RETRYS;this.startInterval()},addListener:function(Q,M,P){Q=Ext.getDom(Q);if(!Q||!P){return false}if("unload"==M){K[K.length]=[Q,M,P];return true}var O=function(R){return typeof Ext!="undefined"?P(Ext.lib.Event.getEvent(R)):false};var L=[Q,M,P,O];var N=G.length;G[N]=L;this.doAdd(Q,M,O,false);return true},removeListener:function(S,O,R){var Q,N;S=Ext.getDom(S);if(!R){return this.purgeElement(S,false,O)}if("unload"==O){for(Q=0,N=K.length;Q<N;Q++){var M=K[Q];if(M&&M[0]==S&&M[1]==O&&M[2]==R){K.splice(Q,1);return true}}return false}var L=null;var P=arguments[3];if("undefined"==typeof P){P=this._getCacheIndex(S,O,R)}if(P>=0){L=G[P]}if(!S||!L){return false}this.doRemove(S,O,L[this.WFN],false);delete G[P][this.WFN];delete G[P][this.FN];G.splice(P,1);return true},getTarget:function(N,M){N=N.browserEvent||N;var L=N.target||N.srcElement;return this.resolveTextNode(L)},resolveTextNode:function(L){if(Ext.isSafari&&L&&3==L.nodeType){return L.parentNode}else{return L}},getPageX:function(M){M=M.browserEvent||M;var L=M.pageX;if(!L&&0!==L){L=M.clientX||0;if(Ext.isIE){L+=this.getScroll()[1]}}return L},getPageY:function(L){L=L.browserEvent||L;var M=L.pageY;if(!M&&0!==M){M=L.clientY||0;if(Ext.isIE){M+=this.getScroll()[0]}}return M},getXY:function(L){L=L.browserEvent||L;return[this.getPageX(L),this.getPageY(L)]},getRelatedTarget:function(M){M=M.browserEvent||M;var L=M.relatedTarget;if(!L){if(M.type=="mouseout"){L=M.toElement}else{if(M.type=="mouseover"){L=M.fromElement}}}return this.resolveTextNode(L)},getTime:function(N){N=N.browserEvent||N;if(!N.time){var M=new Date().getTime();try{N.time=M}catch(L){this.lastError=L;return M}}return N.time},stopEvent:function(L){this.stopPropagation(L);this.preventDefault(L)},stopPropagation:function(L){L=L.browserEvent||L;if(L.stopPropagation){L.stopPropagation()}else{L.cancelBubble=true}},preventDefault:function(L){L=L.browserEvent||L;if(L.preventDefault){L.preventDefault()}else{L.returnValue=false}},getEvent:function(M){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break}N=N.caller}}return L},getCharCode:function(L){L=L.browserEvent||L;return L.charCode||L.keyCode||0},_getCacheIndex:function(Q,N,P){for(var O=0,M=G.length;O<M;++O){var L=G[O];if(L&&L[this.FN]==P&&L[this.EL]==Q&&L[this.TYPE]==N){return O}}return -1},elCache:{},getEl:function(L){return document.getElementById(L)},clearCache:function(){},_load:function(M){F=true;var L=Ext.lib.Event;if(Ext.isIE){L.doRemove(window,"load",L._load)}},_tryPreloadAttach:function(){if(this.locked){return false}this.locked=true;var R=!F;if(!R){R=(I>0)}var Q=[];for(var M=0,L=H.length;M<L;++M){var P=H[M];if(P){var O=this.getEl(P.id);if(O){if(!P.checkReady||F||O.nextSibling||(document&&document.body)){var N=O;if(P.override){if(P.override===true){N=P.obj}else{N=P.override}}P.fn.call(N,P.obj);H[M]=null}}else{Q.push(P)}}}I=(Q.length===0)?0:I-1;if(R){this.startInterval()}else{clearInterval(this._interval);this._interval=null}this.locked=false;return true},purgeElement:function(P,Q,N){var R=this.getListeners(P,N);if(R){for(var O=0,L=R.length;O<L;++O){var M=R[O];this.removeListener(P,M.type,M.fn)}}if(Q&&P&&P.childNodes){for(O=0,L=P.childNodes.length;O<L;++O){this.purgeElement(P.childNodes[O],Q,N)}}},getListeners:function(M,R){var P=[],L;if(!R){L=[G,K]}else{if(R=="unload"){L=[K]}else{L=[G]}}for(var O=0;O<L.length;++O){var T=L[O];if(T&&T.length>0){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===M&&(!R||R===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})}}}}return(P.length)?P:null},_unload:function(S){var R=Ext.lib.Event,P,O,M,L,N;for(P=0,L=K.length;P<L;++P){M=K[P];if(M){var Q=window;if(M[R.ADJ_SCOPE]){if(M[R.ADJ_SCOPE]===true){Q=M[R.OBJ]}else{Q=M[R.ADJ_SCOPE]}}M[R.FN].call(Q,R.getEvent(S),M[R.OBJ]);K[P]=null;M=null;Q=null}}K=null;if(G&&G.length>0){O=G.length;while(O){N=O-1;M=G[N];if(M){R.removeListener(M[R.EL],M[R.TYPE],M[R.FN],N)}O=O-1}M=null;R.clearCache()}R.doRemove(window,"unload",R._unload)},getScroll:function(){var L=document.documentElement,M=document.body;if(L&&(L.scrollTop||L.scrollLeft)){return[L.scrollTop,L.scrollLeft]}else{if(M){return[M.scrollTop,M.scrollLeft]}else{return[0,0]}}},doAdd:function(){if(window.addEventListener){return function(O,M,N,L){O.addEventListener(M,N,(L))}}else{if(window.attachEvent){return function(O,M,N,L){O.attachEvent("on"+M,N)}}else{return function(){}}}}(),doRemove:function(){if(window.removeEventListener){return function(O,M,N,L){O.removeEventListener(M,N,(L))}}else{if(window.detachEvent){return function(N,L,M){N.detachEvent("on"+L,M)}}else{return function(){}}}}()}}();var D=Ext.lib.Event;D.on=D.addListener;D.un=D.removeListener;if(document&&document.body){D._load()}else{D.doAdd(window,"load",D._load)}D.doAdd(window,"unload",D._unload);D._tryPreloadAttach();Ext.lib.Ajax={request:function(K,I,E,J,F){if(F){var G=F.headers;if(G){for(var H in G){if(G.hasOwnProperty(H)){this.initHeader(H,G[H],false)}}}if(F.xmlData){this.initHeader("Content-Type","text/xml",false);K="POST";J=F.xmlData}else{if(F.jsonData){this.initHeader("Content-Type","text/javascript",false);K="POST";J=typeof F.jsonData=="object"?Ext.encode(F.jsonData):F.jsonData}}}return this.asyncRequest(K,I,E,J)},serializeForm:function(F){if(typeof F=="string"){F=(document.getElementById(F)||document.forms[F])}var G,E,H,J,K="",M=false;for(var L=0;L<F.elements.length;L++){G=F.elements[L];J=F.elements[L].disabled;E=F.elements[L].name;H=F.elements[L].value;if(!J&&E){switch(G.type){case"select-one":case"select-multiple":for(var I=0;I<G.options.length;I++){if(G.options[I].selected){if(Ext.isIE){K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].attributes["value"].specified?G.options[I].value:G.options[I].text)+"&"}else{K+=encodeURIComponent(E)+"="+encodeURIComponent(G.options[I].hasAttribute("value")?G.options[I].value:G.options[I].text)+"&"}}}break;case"radio":case"checkbox":if(G.checked){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&"}break;case"file":case undefined:case"reset":case"button":break;case"submit":if(M==false){K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";M=true}break;default:K+=encodeURIComponent(E)+"="+encodeURIComponent(H)+"&";break}}}K=K.substr(0,K.length-1);return K},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(E){this.activeX.unshift(E)},setDefaultPostHeader:function(E){this.useDefaultHeader=E},setDefaultXhrHeader:function(E){this.useDefaultXhrHeader=E},setPollingInterval:function(E){if(typeof E=="number"&&isFinite(E)){this.pollInterval=E}},createXhrObject:function(I){var H,E;try{E=new XMLHttpRequest();H={conn:E,tId:I}}catch(G){for(var F=0;F<this.activeX.length;++F){try{E=new ActiveXObject(this.activeX[F]);H={conn:E,tId:I};break}catch(G){}}}finally{return H}},getConnectionObject:function(){var F;var G=this.transactionId;try{F=this.createXhrObject(G);if(F){this.transactionId++}}catch(E){}finally{return F}},asyncRequest:function(I,F,H,E){var G=this.getConnectionObject();if(!G){return null}else{G.conn.open(I,F,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders["X-Requested-With"]){this.initHeader("X-Requested-With",this.defaultXhrHeader,true)}}if(E&&this.useDefaultHeader){this.initHeader("Content-Type",this.defaultPostHeader)}if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(G)}this.handleReadyState(G,H);G.conn.send(E||null);return G}},handleReadyState:function(F,G){var E=this;if(G&&G.timeout){this.timeout[F.tId]=window.setTimeout(function(){E.abort(F,G,true)},G.timeout)}this.poll[F.tId]=window.setInterval(function(){if(F.conn&&F.conn.readyState==4){window.clearInterval(E.poll[F.tId]);delete E.poll[F.tId];if(G&&G.timeout){window.clearTimeout(E.timeout[F.tId]);delete E.timeout[F.tId]}E.handleTransactionResponse(F,G)}},this.pollInterval)},handleTransactionResponse:function(I,J,E){if(!J){this.releaseObject(I);return }var G,F;try{if(I.conn.status!==undefined&&I.conn.status!=0){G=I.conn.status}else{G=13030}}catch(H){G=13030}if(G>=200&&G<300){F=this.createResponseObject(I,J.argument);if(J.success){if(!J.scope){J.success(F)}else{J.success.apply(J.scope,[F])}}}else{switch(G){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F=this.createExceptionObject(I.tId,J.argument,(E?E:false));if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}break;default:F=this.createResponseObject(I,J.argument);if(J.failure){if(!J.scope){J.failure(F)}else{J.failure.apply(J.scope,[F])}}}}this.releaseObject(I);F=null},createResponseObject:function(E,K){var H={};var M={};try{var G=E.conn.getAllResponseHeaders();var J=G.split("\n");for(var I=0;I<J.length;I++){var F=J[I].indexOf(":");if(F!=-1){M[J[I].substring(0,F)]=J[I].substring(F+2)}}}catch(L){}H.tId=E.tId;H.status=E.conn.status;H.statusText=E.conn.statusText;H.getResponseHeader=M;H.getAllResponseHeaders=G;H.responseText=E.conn.responseText;H.responseXML=E.conn.responseXML;if(typeof K!==undefined){H.argument=K}return H},createExceptionObject:function(L,H,E){var J=0;var K="communication failure";var G=-1;var F="transaction aborted";var I={};I.tId=L;if(E){I.status=G;I.statusText=F}else{I.status=J;I.statusText=K}if(H){I.argument=H}return I},initHeader:function(E,H,G){var F=(G)?this.defaultHeaders:this.headers;if(F[E]===undefined){F[E]=H}else{F[E]=H+","+F[E]}if(G){this.hasDefaultHeaders=true}else{this.hasHeaders=true}},setHeader:function(E){if(this.hasDefaultHeaders){for(var F in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.defaultHeaders[F])}}}if(this.hasHeaders){for(var F in this.headers){if(this.headers.hasOwnProperty(F)){E.conn.setRequestHeader(F,this.headers[F])}}this.headers={};this.hasHeaders=false}},resetDefaultHeaders:function(){delete this.defaultHeaders;this.defaultHeaders={};this.hasDefaultHeaders=false},abort:function(F,G,E){if(this.isCallInProgress(F)){F.conn.abort();window.clearInterval(this.poll[F.tId]);delete this.poll[F.tId];if(E){delete this.timeout[F.tId]}this.handleTransactionResponse(F,G,true);return true}else{return false}},isCallInProgress:function(E){if(E.conn){return E.conn.readyState!=4&&E.conn.readyState!=0}else{return false}},releaseObject:function(E){E.conn=null;E=null},activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};Ext.lib.Region=function(G,H,E,F){this.top=G;this[1]=G;this.right=H;this.bottom=E;this.left=F;this[0]=F};Ext.lib.Region.prototype={contains:function(E){return(E.left>=this.left&&E.right<=this.right&&E.top>=this.top&&E.bottom<=this.bottom)},getArea:function(){return((this.bottom-this.top)*(this.right-this.left))},intersect:function(I){var G=Math.max(this.top,I.top);var H=Math.min(this.right,I.right);var E=Math.min(this.bottom,I.bottom);var F=Math.max(this.left,I.left);if(E>=G&&H>=F){return new Ext.lib.Region(G,H,E,F)}else{return null}},union:function(I){var G=Math.min(this.top,I.top);var H=Math.max(this.right,I.right);var E=Math.max(this.bottom,I.bottom);var F=Math.min(this.left,I.left);return new Ext.lib.Region(G,H,E,F)},constrainTo:function(E){this.top=this.top.constrain(E.top,E.bottom);this.bottom=this.bottom.constrain(E.top,E.bottom);this.left=this.left.constrain(E.left,E.right);this.right=this.right.constrain(E.left,E.right);return this},adjust:function(G,F,E,H){this.top+=G;this.left+=F;this.right+=H;this.bottom+=E;return this}};Ext.lib.Region.getRegion=function(H){var J=Ext.lib.Dom.getXY(H);var G=J[1];var I=J[0]+H.offsetWidth;var E=J[1]+H.offsetHeight;var F=J[0];return new Ext.lib.Region(G,I,E,F)};Ext.lib.Point=function(E,F){if(Ext.isArray(E)){F=E[1];E=E[0]}this.x=this.right=this.left=this[0]=E;this.y=this.top=this.bottom=this[1]=F};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Scroll)},motion:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.Motion)},color:function(H,F,I,J,E,G){return this.run(H,F,I,J,E,G,Ext.lib.ColorAnim)},run:function(I,F,K,L,E,H,G){G=G||Ext.lib.AnimBase;if(typeof L=="string"){L=Ext.lib.Easing[L]}var J=new G(I,F,K,L);J.animateX(function(){Ext.callback(E,H)});return J}};function C(E){if(!B){B=new Ext.Element.Flyweight()}B.dom=E;return B}if(Ext.isIE){function A(){var E=Function.prototype;delete E.createSequence;delete E.defer;delete E.createDelegate;delete E.createCallback;delete E.createInterceptor;window.detachEvent("onunload",A)}window.attachEvent("onunload",A)}Ext.lib.AnimBase=function(F,E,G,H){if(F){this.init(F,E,G,H)}};Ext.lib.AnimBase.prototype={toString:function(){var E=this.getEl();var F=E.id||E.tagName;return("Anim "+F)},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(E,G,F){return this.method(this.currentFrame,G,F-G,this.totalFrames)},setAttribute:function(E,G,F){if(this.patterns.noNegatives.test(E)){G=(G>0)?G:0}Ext.fly(this.getEl(),"_anim").setStyle(E,G+F)},getAttribute:function(E){var G=this.getEl();var I=C(G).getStyle(E);if(I!=="auto"&&!this.patterns.offsetUnit.test(I)){return parseFloat(I)}var F=this.patterns.offsetAttribute.exec(E)||[];var J=!!(F[3]);var H=!!(F[2]);if(H||(C(G).getStyle("position")=="absolute"&&J)){I=G["offset"+F[0].charAt(0).toUpperCase()+F[0].substr(1)]}else{I=0}return I},getDefaultUnit:function(E){if(this.patterns.defaultUnit.test(E)){return"px"}return""},animateX:function(G,E){var F=function(){this.onComplete.removeListener(F);if(typeof G=="function"){G.call(E||this,this)}};this.onComplete.addListener(F,this);this.animate()},setRuntimeAttribute:function(F){var K;var G;var H=this.attributes;this.runtimeAttributes[F]={};var J=function(L){return(typeof L!=="undefined")};if(!J(H[F]["to"])&&!J(H[F]["by"])){return false}K=(J(H[F]["from"]))?H[F]["from"]:this.getAttribute(F);if(J(H[F]["to"])){G=H[F]["to"]}else{if(J(H[F]["by"])){if(K.constructor==Array){G=[];for(var I=0,E=K.length;I<E;++I){G[I]=K[I]+H[F]["by"][I]}}else{G=K+H[F]["by"]}}}this.runtimeAttributes[F].start=K;this.runtimeAttributes[F].end=G;this.runtimeAttributes[F].unit=(J(H[F].unit))?H[F]["unit"]:this.getDefaultUnit(F)},init:function(G,L,K,E){var F=false;var H=null;var J=0;G=Ext.getDom(G);this.attributes=L||{};this.duration=K||1;this.method=E||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return G};this.isAnimated=function(){return F};this.getStartTime=function(){return H};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false}this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this)};this.stop=function(O){if(O){this.currentFrame=this.totalFrames;this._onTween.fire()}Ext.lib.AnimMgr.stop(this)};var N=function(){this.onStart.fire();this.runtimeAttributes={};for(var O in this.attributes){this.setRuntimeAttribute(O)}F=true;J=0;H=new Date()};var M=function(){var Q={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};Q.toString=function(){return("duration: "+Q.duration+", currentFrame: "+Q.currentFrame)};this.onTween.fire(Q);var P=this.runtimeAttributes;for(var O in P){this.setAttribute(O,this.doMethod(O,P[O].start,P[O].end),P[O].unit)}J+=1};var I=function(){var O=(new Date()-H)/1000;var P={duration:O,frames:J,fps:J/O};P.toString=function(){return("duration: "+P.duration+", frames: "+P.frames+", fps: "+P.fps)};F=false;J=0;this.onComplete.fire(P)};this._onStart=new Ext.util.Event(this);this.onStart=new Ext.util.Event(this);this.onTween=new Ext.util.Event(this);this._onTween=new Ext.util.Event(this);this.onComplete=new Ext.util.Event(this);this._onComplete=new Ext.util.Event(this);this._onStart.addListener(N);this._onTween.addListener(M);this._onComplete.addListener(I)}};Ext.lib.AnimMgr=new function(){var G=null;var F=[];var E=0;this.fps=1000;this.delay=1;this.registerElement=function(J){F[F.length]=J;E+=1;J._onStart.fire();this.start()};this.unRegister=function(K,J){K._onComplete.fire();J=J||I(K);if(J!=-1){F.splice(J,1)}E-=1;if(E<=0){this.stop()}};this.start=function(){if(G===null){G=setInterval(this.run,this.delay)}};this.stop=function(L){if(!L){clearInterval(G);for(var K=0,J=F.length;K<J;++K){if(F[0].isAnimated()){this.unRegister(F[0],0)}}F=[];G=null;E=0}else{this.unRegister(L)}};this.run=function(){for(var L=0,J=F.length;L<J;++L){var K=F[L];if(!K||!K.isAnimated()){continue}if(K.currentFrame<K.totalFrames||K.totalFrames===null){K.currentFrame+=1;if(K.useSeconds){H(K)}K._onTween.fire()}else{Ext.lib.AnimMgr.stop(K,L)}}};var I=function(L){for(var K=0,J=F.length;K<J;++K){if(F[K]==L){return K}}return -1};var H=function(K){var N=K.totalFrames;var M=K.currentFrame;var L=(K.currentFrame*K.duration*1000/K.totalFrames);var J=(new Date()-K.getStartTime());var O=0;if(J<K.duration*1000){O=Math.round((J/L-1)*K.currentFrame)}else{O=N-(M+1)}if(O>0&&isFinite(O)){if(K.currentFrame+O>=N){O=N-(M+1)}K.currentFrame+=O}}};Ext.lib.Bezier=new function(){this.getPosition=function(I,H){var J=I.length;var G=[];for(var F=0;F<J;++F){G[F]=[I[F][0],I[F][1]]}for(var E=1;E<J;++E){for(F=0;F<J-E;++F){G[F][0]=(1-H)*G[F][0]+H*G[parseInt(F+1,10)][0];G[F][1]=(1-H)*G[F][1]+H*G[parseInt(F+1,10)][1]}}return[G[0][0],G[0][1]]}};(function(){Ext.lib.ColorAnim=function(I,H,J,K){Ext.lib.ColorAnim.superclass.constructor.call(this,I,H,J,K)};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var F=Ext.lib;var G=F.ColorAnim.superclass;var E=F.ColorAnim.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("ColorAnim "+I)};E.patterns.color=/color$/i;E.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;E.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;E.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;E.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;E.parseColor=function(H){if(H.length==3){return H}var I=this.patterns.hex.exec(H);if(I&&I.length==4){return[parseInt(I[1],16),parseInt(I[2],16),parseInt(I[3],16)]}I=this.patterns.rgb.exec(H);if(I&&I.length==4){return[parseInt(I[1],10),parseInt(I[2],10),parseInt(I[3],10)]}I=this.patterns.hex3.exec(H);if(I&&I.length==4){return[parseInt(I[1]+I[1],16),parseInt(I[2]+I[2],16),parseInt(I[3]+I[3],16)]}return null};E.getAttribute=function(H){var J=this.getEl();if(this.patterns.color.test(H)){var K=C(J).getStyle(H);if(this.patterns.transparent.test(K)){var I=J.parentNode;K=C(I).getStyle(H);while(I&&this.patterns.transparent.test(K)){I=I.parentNode;K=C(I).getStyle(H);if(I.tagName.toUpperCase()=="HTML"){K="#fff"}}}}else{K=G.getAttribute.call(this,H)}return K};E.doMethod=function(I,M,J){var L;if(this.patterns.color.test(I)){L=[];for(var K=0,H=M.length;K<H;++K){L[K]=G.doMethod.call(this,I,M[K],J[K])}L="rgb("+Math.floor(L[0])+","+Math.floor(L[1])+","+Math.floor(L[2])+")"}else{L=G.doMethod.call(this,I,M,J)}return L};E.setRuntimeAttribute=function(I){G.setRuntimeAttribute.call(this,I);if(this.patterns.color.test(I)){var K=this.attributes;var M=this.parseColor(this.runtimeAttributes[I].start);var J=this.parseColor(this.runtimeAttributes[I].end);if(typeof K[I]["to"]==="undefined"&&typeof K[I]["by"]!=="undefined"){J=this.parseColor(K[I].by);for(var L=0,H=M.length;L<H;++L){J[L]=M[L]+J[L]}}this.runtimeAttributes[I].start=M;this.runtimeAttributes[I].end=J}}})();Ext.lib.Easing={easeNone:function(F,E,H,G){return H*F/G+E},easeIn:function(F,E,H,G){return H*(F/=G)*F+E},easeOut:function(F,E,H,G){return -H*(F/=G)*(F-2)+E},easeBoth:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F+E}return -H/2*((--F)*(F-2)-1)+E},easeInStrong:function(F,E,H,G){return H*(F/=G)*F*F*F+E},easeOutStrong:function(F,E,H,G){return -H*((F=F/G-1)*F*F*F-1)+E},easeBothStrong:function(F,E,H,G){if((F/=G/2)<1){return H/2*F*F*F*F+E}return -H/2*((F-=2)*F*F*F-2)+E},elasticIn:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return -(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E},elasticOut:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J)==1){return E+K}if(!I){I=J*0.3}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}return F*Math.pow(2,-10*G)*Math.sin((G*J-H)*(2*Math.PI)/I)+K+E},elasticBoth:function(G,E,K,J,F,I){if(G==0){return E}if((G/=J/2)==2){return E+K}if(!I){I=J*(0.3*1.5)}if(!F||F<Math.abs(K)){F=K;var H=I/4}else{var H=I/(2*Math.PI)*Math.asin(K/F)}if(G<1){return -0.5*(F*Math.pow(2,10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I))+E}return F*Math.pow(2,-10*(G-=1))*Math.sin((G*J-H)*(2*Math.PI)/I)*0.5+K+E},backIn:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*(F/=H)*F*((G+1)*F-G)+E},backOut:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}return I*((F=F/H-1)*F*((G+1)*F+G)+1)+E},backBoth:function(F,E,I,H,G){if(typeof G=="undefined"){G=1.70158}if((F/=H/2)<1){return I/2*(F*F*(((G*=(1.525))+1)*F-G))+E}return I/2*((F-=2)*F*(((G*=(1.525))+1)*F+G)+2)+E},bounceIn:function(F,E,H,G){return H-Ext.lib.Easing.bounceOut(G-F,0,H,G)+E},bounceOut:function(F,E,H,G){if((F/=G)<(1/2.75)){return H*(7.5625*F*F)+E}else{if(F<(2/2.75)){return H*(7.5625*(F-=(1.5/2.75))*F+0.75)+E}else{if(F<(2.5/2.75)){return H*(7.5625*(F-=(2.25/2.75))*F+0.9375)+E}}}return H*(7.5625*(F-=(2.625/2.75))*F+0.984375)+E},bounceBoth:function(F,E,H,G){if(F<G/2){return Ext.lib.Easing.bounceIn(F*2,0,H,G)*0.5+E}return Ext.lib.Easing.bounceOut(F*2-G,0,H,G)*0.5+H*0.5+E}};(function(){Ext.lib.Motion=function(K,J,L,M){if(K){Ext.lib.Motion.superclass.constructor.call(this,K,J,L,M)}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var H=Ext.lib;var I=H.Motion.superclass;var F=H.Motion.prototype;F.toString=function(){var J=this.getEl();var K=J.id||J.tagName;return("Motion "+K)};F.patterns.points=/^points$/i;F.setAttribute=function(J,L,K){if(this.patterns.points.test(J)){K=K||"px";I.setAttribute.call(this,"left",L[0],K);I.setAttribute.call(this,"top",L[1],K)}else{I.setAttribute.call(this,J,L,K)}};F.getAttribute=function(J){if(this.patterns.points.test(J)){var K=[I.getAttribute.call(this,"left"),I.getAttribute.call(this,"top")]}else{K=I.getAttribute.call(this,J)}return K};F.doMethod=function(J,N,K){var M=null;if(this.patterns.points.test(J)){var L=this.method(this.currentFrame,0,100,this.totalFrames)/100;M=H.Bezier.getPosition(this.runtimeAttributes[J],L)}else{M=I.doMethod.call(this,J,N,K)}return M};F.setRuntimeAttribute=function(S){if(this.patterns.points.test(S)){var K=this.getEl();var M=this.attributes;var J;var O=M["points"]["control"]||[];var L;var P,R;if(O.length>0&&!Ext.isArray(O[0])){O=[O]}else{var N=[];for(P=0,R=O.length;P<R;++P){N[P]=O[P]}O=N}Ext.fly(K).position();if(G(M["points"]["from"])){Ext.lib.Dom.setXY(K,M["points"]["from"])}else{Ext.lib.Dom.setXY(K,Ext.lib.Dom.getXY(K))}J=this.getAttribute("points");if(G(M["points"]["to"])){L=E.call(this,M["points"]["to"],J);var Q=Ext.lib.Dom.getXY(this.getEl());for(P=0,R=O.length;P<R;++P){O[P]=E.call(this,O[P],J)}}else{if(G(M["points"]["by"])){L=[J[0]+M["points"]["by"][0],J[1]+M["points"]["by"][1]];for(P=0,R=O.length;P<R;++P){O[P]=[J[0]+O[P][0],J[1]+O[P][1]]}}}this.runtimeAttributes[S]=[J];if(O.length>0){this.runtimeAttributes[S]=this.runtimeAttributes[S].concat(O)}this.runtimeAttributes[S][this.runtimeAttributes[S].length]=L}else{I.setRuntimeAttribute.call(this,S)}};var E=function(J,L){var K=Ext.lib.Dom.getXY(this.getEl());J=[J[0]-K[0]+L[0],J[1]-K[1]+L[1]];return J};var G=function(J){return(typeof J!=="undefined")}})();(function(){Ext.lib.Scroll=function(I,H,J,K){if(I){Ext.lib.Scroll.superclass.constructor.call(this,I,H,J,K)}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var F=Ext.lib;var G=F.Scroll.superclass;var E=F.Scroll.prototype;E.toString=function(){var H=this.getEl();var I=H.id||H.tagName;return("Scroll "+I)};E.doMethod=function(H,K,I){var J=null;if(H=="scroll"){J=[this.method(this.currentFrame,K[0],I[0]-K[0],this.totalFrames),this.method(this.currentFrame,K[1],I[1]-K[1],this.totalFrames)]}else{J=G.doMethod.call(this,H,K,I)}return J};E.getAttribute=function(H){var J=null;var I=this.getEl();if(H=="scroll"){J=[I.scrollLeft,I.scrollTop]}else{J=G.getAttribute.call(this,H)}return J};E.setAttribute=function(H,K,J){var I=this.getEl();if(H=="scroll"){I.scrollLeft=K[0];I.scrollTop=K[1]}else{G.setAttribute.call(this,H,K,J)}}})()})();
+Ext = {version:"2.0.2"};
+window["undefined"] = window["undefined"];
+Ext.apply = function(C, D, B) {
+ if (B) {
+ Ext.apply(C, B)
+ }
+ if (C && D && typeof D == "object") {
+ for (var A in D) {
+ C[A] = D[A]
+ }
+ }
+ return C
+};
+(function() {
+ var idSeed = 0;
+ var ua = navigator.userAgent.toLowerCase();
+ var isStrict = document.compatMode
+ == "CSS1Compat",isOpera = ua.indexOf("opera")
+ > -1,isSafari = (/webkit|khtml/).test(ua),isSafari3 = isSafari
+ && ua.indexOf("webkit/5") != -1,isIE = !isOpera
+ && ua.indexOf("msie") > -1,isIE7 = !isOpera && ua.indexOf("msie 7")
+ > -1,isGecko = !isSafari && ua.indexOf("gecko")
+ > -1,isBorderBox = isIE
+ && !isStrict,isWindows = (ua.indexOf("windows") != -1
+ || ua.indexOf("win32") != -1),isMac = (ua.indexOf("macintosh") != -1
+ || ua.indexOf("mac os x") != -1),isAir = (ua.indexOf("adobeair")
+ != -1),isLinux = (ua.indexOf("linux")
+ != -1),isSecure = window.location.href.toLowerCase().indexOf("https")
+ === 0;
+ if (isIE && !isIE7) {
+ try {
+ document.execCommand("BackgroundImageCache", false, true)
+ } catch(e) {
+ }
+ }
+ Ext.apply(Ext, {isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,enableListenerCollection:false,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"
+ + "/extjs.com/s.gif",emptyFn:function() {
+ },applyIf:function(o, c) {
+ if (o && c) {
+ for (var p in c) {
+ if (typeof o[p] == "undefined") {
+ o[p] = c[p]
+ }
+ }
+ }
+ return o
+ },addBehaviors:function(o) {
+ if (!Ext.isReady) {
+ Ext.onReady(function() {
+ Ext.addBehaviors(o)
+ });
+ return
+ }
+ var cache = {};
+ for (var b in o) {
+ var parts = b.split("@");
+ if (parts[1]) {
+ var s = parts[0];
+ if (!cache[s]) {
+ cache[s] = Ext.select(s)
+ }
+ cache[s].on(parts[1], o[b])
+ }
+ }
+ cache = null
+ },id:function(el, prefix) {
+ prefix = prefix || "ext-gen";
+ el = Ext.getDom(el);
+ var id = prefix + (++idSeed);
+ return el ? (el.id ? el.id : (el.id = id)) : id
+ },extend:function() {
+ var io = function(o) {
+ for (var m in o) {
+ this[m] = o[m]
+ }
+ };
+ var oc = Object.prototype.constructor;
+ return function(sb, sp, overrides) {
+ if (typeof sp == "object") {
+ overrides = sp;
+ sp = sb;
+ sb = overrides.constructor != oc ? overrides.constructor
+ : function() {
+ sp.apply(this, arguments)
+ }
+ }
+ var F = function() {
+ },sbp,spp = sp.prototype;
+ F.prototype = spp;
+ sbp = sb.prototype = new F();
+ sbp.constructor = sb;
+ sb.superclass = spp;
+ if (spp.constructor == oc) {
+ spp.constructor = sp
+ }
+ sb.override = function(o) {
+ Ext.override(sb, o)
+ };
+ sbp.override = io;
+ Ext.override(sb, overrides);
+ sb.extend = function(o) {
+ Ext.extend(sb, o)
+ };
+ return sb
+ }
+ }(),override:function(origclass, overrides) {
+ if (overrides) {
+ var p = origclass.prototype;
+ for (var method in overrides) {
+ p[method] = overrides[method]
+ }
+ }
+ },namespace:function() {
+ var a = arguments,o = null,i,j,d,rt;
+ for (i = 0; i < a.length; ++i) {
+ d = a[i].split(".");
+ rt = d[0];
+ eval("if (typeof " + rt + " == \"undefined\"){" + rt
+ + " = {};} o = " + rt + ";");
+ for (j = 1; j < d.length; ++j) {
+ o[d[j]] = o[d[j]] || {};
+ o = o[d[j]]
+ }
+ }
+ },urlEncode:function(o) {
+ if (!o) {
+ return""
+ }
+ var buf = [];
+ for (var key in o) {
+ var ov = o[key],k = encodeURIComponent(key);
+ var type = typeof ov;
+ if (type == "undefined") {
+ buf.push(k, "=&")
+ } else {
+ if (type != "function" && type != "object") {
+ buf.push(k, "=", encodeURIComponent(ov), "&")
+ } else {
+ if (Ext.isArray(ov)) {
+ if (ov.length) {
+ for (var i = 0,len = ov.length; i < len; i++) {
+ buf.push(k, "=", encodeURIComponent(ov[i]
+ === undefined ? "" : ov[i]), "&")
+ }
+ } else {
+ buf.push(k, "=&")
+ }
+ }
+ }
+ }
+ }
+ buf.pop();
+ return buf.join("")
+ },urlDecode:function(string, overwrite) {
+ if (!string || !string.length) {
+ return{}
+ }
+ var obj = {};
+ var pairs = string.split("&");
+ var pair,name,value;
+ for (var i = 0,len = pairs.length; i < len; i++) {
+ pair = pairs[i].split("=");
+ name = decodeURIComponent(pair[0]);
+ value = decodeURIComponent(pair[1]);
+ if (overwrite !== true) {
+ if (typeof obj[name] == "undefined") {
+ obj[name] = value
+ } else {
+ if (typeof obj[name] == "string") {
+ obj[name] = [obj[name]];
+ obj[name].push(value)
+ } else {
+ obj[name].push(value)
+ }
+ }
+ } else {
+ obj[name] = value
+ }
+ }
+ return obj
+ },each:function(array, fn, scope) {
+ if (typeof array.length == "undefined" || typeof array == "string") {
+ array = [array]
+ }
+ for (var i = 0,len = array.length; i < len; i++) {
+ if (fn.call(scope || array[i], array[i], i, array) === false) {
+ return i
+ }
+ }
+ },combine:function() {
+ var as = arguments,l = as.length,r = [];
+ for (var i = 0; i < l; i++) {
+ var a = as[i];
+ if (Ext.isArray(a)) {
+ r = r.concat(a)
+ } else {
+ if (a.length !== undefined && !a.substr) {
+ r = r.concat(Array.prototype.slice.call(a, 0))
+ } else {
+ r.push(a)
+ }
+ }
+ }
+ return r
+ },escapeRe:function(s) {
+ return s.replace(/([.*+?^${}()|[\]\/\\])/g, "\\$1")
+ },callback:function(cb, scope, args, delay) {
+ if (typeof cb == "function") {
+ if (delay) {
+ cb.defer(delay, scope, args || [])
+ } else {
+ cb.apply(scope, args || [])
+ }
+ }
+ },getDom:function(el) {
+ if (!el || !document) {
+ return null
+ }
+ return el.dom ? el.dom : (typeof el == "string"
+ ? document.getElementById(el) : el)
+ },getDoc:function() {
+ return Ext.get(document)
+ },getBody:function() {
+ return Ext.get(document.body || document.documentElement)
+ },getCmp:function(id) {
+ return Ext.ComponentMgr.get(id)
+ },num:function(v, defaultValue) {
+ if (typeof v != "number") {
+ return defaultValue
+ }
+ return v
+ },destroy:function() {
+ for (var i = 0,a = arguments,len = a.length; i < len; i++) {
+ var as = a[i];
+ if (as) {
+ if (typeof as.destroy == "function") {
+ as.destroy()
+ } else {
+ if (as.dom) {
+ as.removeAllListeners();
+ as.remove()
+ }
+ }
+ }
+ }
+ },removeNode:isIE ? function() {
+ var d;
+ return function(n) {
+ if (n && n.tagName != "BODY") {
+ d = d || document.createElement("div");
+ d.appendChild(n);
+ d.innerHTML = ""
+ }
+ }
+ }() : function(n) {
+ if (n && n.parentNode && n.tagName != "BODY") {
+ n.parentNode.removeChild(n)
+ }
+ },type:function(o) {
+ if (o === undefined || o === null) {
+ return false
+ }
+ if (o.htmlElement) {
+ return"element"
+ }
+ var t = typeof o;
+ if (t == "object" && o.nodeName) {
+ switch (o.nodeType) {case 1:return"element";case 3:return(/\S/).test(o.nodeValue)
+ ? "textnode" : "whitespace"}
+ }
+ if (t == "object" || t == "function") {
+ switch (o.constructor) {case Array:return"array";case RegExp:return"regexp"}
+ if (typeof o.length == "number" && typeof o.item == "function") {
+ return"nodelist"
+ }
+ }
+ return t
+ },isEmpty:function(v, allowBlank) {
+ return v === null || v === undefined || (!allowBlank ? v === "" : false)
+ },value:function(v, defaultValue, allowBlank) {
+ return Ext.isEmpty(v, allowBlank) ? defaultValue : v
+ },isArray:function(v) {
+ return v && typeof v.pop == "function"
+ },isDate:function(v) {
+ return v && typeof v.getFullYear == "function"
+ },isOpera:isOpera,isSafari:isSafari,isSafari3:isSafari3,isSafari2:isSafari
+ && !isSafari3,isIE:isIE,isIE6:isIE
+ && !isIE7,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isLinux:isLinux,isWindows:isWindows,isMac:isMac,isAir:isAir,useShims:((isIE
+ && !isIE7) || (isGecko && isMac))});
+ Ext.ns = Ext.namespace
+})();
+Ext.ns("Ext", "Ext.util", "Ext.grid", "Ext.dd", "Ext.tree", "Ext.data", "Ext.form", "Ext.menu", "Ext.state", "Ext.lib", "Ext.layout", "Ext.app", "Ext.ux");
+Ext.apply(Function.prototype, {createCallback:function() {
+ var A = arguments;
+ var B = this;
+ return function() {
+ return B.apply(window, A)
+ }
+},createDelegate:function(C, B, A) {
+ var D = this;
+ return function() {
+ var F = B || arguments;
+ if (A === true) {
+ F = Array.prototype.slice.call(arguments, 0);
+ F = F.concat(B)
+ } else {
+ if (typeof A == "number") {
+ F = Array.prototype.slice.call(arguments, 0);
+ var E = [A,0].concat(B);
+ Array.prototype.splice.apply(F, E)
+ }
+ }
+ return D.apply(C || window, F)
+ }
+},defer:function(C, E, B, A) {
+ var D = this.createDelegate(E, B, A);
+ if (C) {
+ return setTimeout(D, C)
+ }
+ D();
+ return 0
+},createSequence:function(B, A) {
+ if (typeof B != "function") {
+ return this
+ }
+ var C = this;
+ return function() {
+ var D = C.apply(this || window, arguments);
+ B.apply(A || this || window, arguments);
+ return D
+ }
+},createInterceptor:function(B, A) {
+ if (typeof B != "function") {
+ return this
+ }
+ var C = this;
+ return function() {
+ B.target = this;
+ B.method = C;
+ if (B.apply(A || this || window, arguments) === false) {
+ return
+ }
+ return C.apply(this || window, arguments)
+ }
+}});
+Ext.applyIf(String, {escape:function(A) {
+ return A.replace(/('|\\)/g, "\\$1")
+},leftPad:function(D, B, C) {
+ var A = new String(D);
+ if (!C) {
+ C = " "
+ }
+ while (A.length < B) {
+ A = C + A
+ }
+ return A.toString()
+},format:function(B) {
+ var A = Array.prototype.slice.call(arguments, 1);
+ return B.replace(/\{(\d+)\}/g, function(C, D) {
+ return A[D]
+ })
+}});
+String.prototype.toggle = function(B, A) {
+ return this == B ? A : B
+};
+String.prototype.trim = function() {
+ var A = /^\s+|\s+$/g;
+ return function() {
+ return this.replace(A, "")
+ }
+}();
+Ext.applyIf(Number.prototype, {constrain:function(B, A) {
+ return Math.min(Math.max(this, B), A)
+}});
+Ext.applyIf(Array.prototype, {indexOf:function(C) {
+ for (var B = 0,A = this.length; B < A; B++) {
+ if (this[B] == C) {
+ return B
+ }
+ }
+ return -1
+},remove:function(B) {
+ var A = this.indexOf(B);
+ if (A != -1) {
+ this.splice(A, 1)
+ }
+ return this
+}});
+Date.prototype.getElapsed = function(A) {
+ return Math.abs((A || new Date()).getTime() - this.getTime())
+};
+(function() {
+ var B;
+ Ext.lib.Dom = {getViewWidth:function(E) {
+ return E ? this.getDocumentWidth() : this.getViewportWidth()
+ },getViewHeight:function(E) {
+ return E ? this.getDocumentHeight() : this.getViewportHeight()
+ },getDocumentHeight:function() {
+ var E = (document.compatMode != "CSS1Compat")
+ ? document.body.scrollHeight
+ : document.documentElement.scrollHeight;
+ return Math.max(E, this.getViewportHeight())
+ },getDocumentWidth:function() {
+ var E = (document.compatMode != "CSS1Compat")
+ ? document.body.scrollWidth
+ : document.documentElement.scrollWidth;
+ return Math.max(E, this.getViewportWidth())
+ },getViewportHeight:function() {
+ if (Ext.isIE) {
+ return Ext.isStrict ? document.documentElement.clientHeight
+ : document.body.clientHeight
+ } else {
+ return self.innerHeight
+ }
+ },getViewportWidth:function() {
+ if (Ext.isIE) {
+ return Ext.isStrict ? document.documentElement.clientWidth
+ : document.body.clientWidth
+ } else {
+ return self.innerWidth
+ }
+ },isAncestor:function(F, G) {
+ F = Ext.getDom(F);
+ G = Ext.getDom(G);
+ if (!F || !G) {
+ return false
+ }
+ if (F.contains && !Ext.isSafari) {
+ return F.contains(G)
+ } else {
+ if (F.compareDocumentPosition) {
+ return !!(F.compareDocumentPosition(G) & 16)
+ } else {
+ var E = G.parentNode;
+ while (E) {
+ if (E == F) {
+ return true
+ } else {
+ if (!E.tagName || E.tagName.toUpperCase() == "HTML") {
+ return false
+ }
+ }
+ E = E.parentNode
+ }
+ return false
+ }
+ }
+ },getRegion:function(E) {
+ return Ext.lib.Region.getRegion(E)
+ },getY:function(E) {
+ return this.getXY(E)[1]
+ },getX:function(E) {
+ return this.getXY(E)[0]
+ },getXY:function(G) {
+ var F,K,M,N,J = (document.body || document.documentElement);
+ G = Ext.getDom(G);
+ if (G == J) {
+ return[0,0]
+ }
+ if (G.getBoundingClientRect) {
+ M = G.getBoundingClientRect();
+ N = C(document).getScroll();
+ return[M.left + N.left,M.top + N.top]
+ }
+ var O = 0,L = 0;
+ F = G;
+ var E = C(G).getStyle("position") == "absolute";
+ while (F) {
+ O += F.offsetLeft;
+ L += F.offsetTop;
+ if (!E && C(F).getStyle("position") == "absolute") {
+ E = true
+ }
+ if (Ext.isGecko) {
+ K = C(F);
+ var P = parseInt(K.getStyle("borderTopWidth"), 10) || 0;
+ var H = parseInt(K.getStyle("borderLeftWidth"), 10) || 0;
+ O += H;
+ L += P;
+ if (F != G && K.getStyle("overflow") != "visible") {
+ O += H;
+ L += P
+ }
+ }
+ F = F.offsetParent
+ }
+ if (Ext.isSafari && E) {
+ O -= J.offsetLeft;
+ L -= J.offsetTop
+ }
+ if (Ext.isGecko && !E) {
+ var I = C(J);
+ O += parseInt(I.getStyle("borderLeftWidth"), 10) || 0;
+ L += parseInt(I.getStyle("borderTopWidth"), 10) || 0
+ }
+ F = G.parentNode;
+ while (F && F != J) {
+ if (!Ext.isOpera || (F.tagName != "TR" && C(F).getStyle("display")
+ != "inline")) {
+ O -= F.scrollLeft;
+ L -= F.scrollTop
+ }
+ F = F.parentNode
+ }
+ return[O,L]
+ },setXY:function(E, F) {
+ E = Ext.fly(E, "_setXY");
+ E.position();
+ var G = E.translatePoints(F);
+ if (F[0] !== false) {
+ E.dom.style.left = G.left + "px"
+ }
+ if (F[1] !== false) {
+ E.dom.style.top = G.top + "px"
+ }
+ },setX:function(F, E) {
+ this.setXY(F, [E,false])
+ },setY:function(E, F) {
+ this.setXY(E, [false,F])
+ }};
+ Ext.lib.Event = function() {
+ var F = false;
+ var G = [];
+ var K = [];
+ var I = 0;
+ var H = [];
+ var E = 0;
+ var J = null;
+ return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function() {
+ if (!this._interval) {
+ var L = this;
+ var M = function() {
+ L._tryPreloadAttach()
+ };
+ this._interval = setInterval(M, this.POLL_INTERVAL)
+ }
+ },onAvailable:function(N, L, O, M) {
+ H.push({id:N,fn:L,obj:O,override:M,checkReady:false});
+ I = this.POLL_RETRYS;
+ this.startInterval()
+ },addListener:function(Q, M, P) {
+ Q = Ext.getDom(Q);
+ if (!Q || !P) {
+ return false
+ }
+ if ("unload" == M) {
+ K[K.length] = [Q,M,P];
+ return true
+ }
+ var O = function(R) {
+ return typeof Ext != "undefined" ? P(Ext.lib.Event.getEvent(R))
+ : false
+ };
+ var L = [Q,M,P,O];
+ var N = G.length;
+ G[N] = L;
+ this.doAdd(Q, M, O, false);
+ return true
+ },removeListener:function(S, O, R) {
+ var Q,N;
+ S = Ext.getDom(S);
+ if (!R) {
+ return this.purgeElement(S, false, O)
+ }
+ if ("unload" == O) {
+ for (Q = 0,N = K.length; Q < N; Q++) {
+ var M = K[Q];
+ if (M && M[0] == S && M[1] == O && M[2] == R) {
+ K.splice(Q, 1);
+ return true
+ }
+ }
+ return false
+ }
+ var L = null;
+ var P = arguments[3];
+ if ("undefined" == typeof P) {
+ P = this._getCacheIndex(S, O, R)
+ }
+ if (P >= 0) {
+ L = G[P]
+ }
+ if (!S || !L) {
+ return false
+ }
+ this.doRemove(S, O, L[this.WFN], false);
+ delete G[P][this.WFN];
+ delete G[P][this.FN];
+ G.splice(P, 1);
+ return true
+ },getTarget:function(N, M) {
+ N = N.browserEvent || N;
+ var L = N.target || N.srcElement;
+ return this.resolveTextNode(L)
+ },resolveTextNode:function(L) {
+ if (Ext.isSafari && L && 3 == L.nodeType) {
+ return L.parentNode
+ } else {
+ return L
+ }
+ },getPageX:function(M) {
+ M = M.browserEvent || M;
+ var L = M.pageX;
+ if (!L && 0 !== L) {
+ L = M.clientX || 0;
+ if (Ext.isIE) {
+ L += this.getScroll()[1]
+ }
+ }
+ return L
+ },getPageY:function(L) {
+ L = L.browserEvent || L;
+ var M = L.pageY;
+ if (!M && 0 !== M) {
+ M = L.clientY || 0;
+ if (Ext.isIE) {
+ M += this.getScroll()[0]
+ }
+ }
+ return M
+ },getXY:function(L) {
+ L = L.browserEvent || L;
+ return[this.getPageX(L),this.getPageY(L)]
+ },getRelatedTarget:function(M) {
+ M = M.browserEvent || M;
+ var L = M.relatedTarget;
+ if (!L) {
+ if (M.type == "mouseout") {
+ L = M.toElement
+ } else {
+ if (M.type == "mouseover") {
+ L = M.fromElement
+ }
+ }
+ }
+ return this.resolveTextNode(L)
+ },getTime:function(N) {
+ N = N.browserEvent || N;
+ if (!N.time) {
+ var M = new Date().getTime();
+ try {
+ N.time = M
+ } catch(L) {
+ this.lastError = L;
+ return M
+ }
+ }
+ return N.time
+ },stopEvent:function(L) {
+ this.stopPropagation(L);
+ this.preventDefault(L)
+ },stopPropagation:function(L) {
+ L = L.browserEvent || L;
+ if (L.stopPropagation) {
+ L.stopPropagation()
+ } else {
+ L.cancelBubble = true
+ }
+ },preventDefault:function(L) {
+ L = L.browserEvent || L;
+ if (L.preventDefault) {
+ L.preventDefault()
+ } else {
+ L.returnValue = false
+ }
+ },getEvent:function(M) {
+ var L = M || window.event;
+ if (!L) {
+ var N = this.getEvent.caller;
+ while (N) {
+ L = N.arguments[0];
+ if (L && Event == L.constructor) {
+ break
+ }
+ N = N.caller
+ }
+ }
+ return L
+ },getCharCode:function(L) {
+ L = L.browserEvent || L;
+ return L.charCode || L.keyCode || 0
+ },_getCacheIndex:function(Q, N, P) {
+ for (var O = 0,M = G.length; O < M; ++O) {
+ var L = G[O];
+ if (L && L[this.FN] == P && L[this.EL] == Q && L[this.TYPE]
+ == N) {
+ return O
+ }
+ }
+ return -1
+ },elCache:{},getEl:function(L) {
+ return document.getElementById(L)
+ },clearCache:function() {
+ },_load:function(M) {
+ F = true;
+ var L = Ext.lib.Event;
+ if (Ext.isIE) {
+ L.doRemove(window, "load", L._load)
+ }
+ },_tryPreloadAttach:function() {
+ if (this.locked) {
+ return false
+ }
+ this.locked = true;
+ var R = !F;
+ if (!R) {
+ R = (I > 0)
+ }
+ var Q = [];
+ for (var M = 0,L = H.length; M < L; ++M) {
+ var P = H[M];
+ if (P) {
+ var O = this.getEl(P.id);
+ if (O) {
+ if (!P.checkReady || F || O.nextSibling || (document
+ && document.body)) {
+ var N = O;
+ if (P.override) {
+ if (P.override === true) {
+ N = P.obj
+ } else {
+ N = P.override
+ }
+ }
+ P.fn.call(N, P.obj);
+ H[M] = null
+ }
+ } else {
+ Q.push(P)
+ }
+ }
+ }
+ I = (Q.length === 0) ? 0 : I - 1;
+ if (R) {
+ this.startInterval()
+ } else {
+ clearInterval(this._interval);
+ this._interval = null
+ }
+ this.locked = false;
+ return true
+ },purgeElement:function(P, Q, N) {
+ var R = this.getListeners(P, N);
+ if (R) {
+ for (var O = 0,L = R.length; O < L; ++O) {
+ var M = R[O];
+ this.removeListener(P, M.type, M.fn)
+ }
+ }
+ if (Q && P && P.childNodes) {
+ for (O = 0,L = P.childNodes.length; O < L; ++O) {
+ this.purgeElement(P.childNodes[O], Q, N)
+ }
+ }
+ },getListeners:function(M, R) {
+ var P = [],L;
+ if (!R) {
+ L = [G,K]
+ } else {
+ if (R == "unload") {
+ L = [K]
+ } else {
+ L = [G]
+ }
+ }
+ for (var O = 0; O < L.length; ++O) {
+ var T = L[O];
+ if (T && T.length > 0) {
+ for (var Q = 0,S = T.length; Q < S; ++Q) {
+ var N = T[Q];
+ if (N && N[this.EL] === M && (!R || R
+ === N[this.TYPE])) {
+ P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.ADJ_SCOPE],index:Q})
+ }
+ }
+ }
+ }
+ return(P.length) ? P : null
+ },_unload:function(S) {
+ var R = Ext.lib.Event,P,O,M,L,N;
+ for (P = 0,L = K.length; P < L; ++P) {
+ M = K[P];
+ if (M) {
+ var Q = window;
+ if (M[R.ADJ_SCOPE]) {
+ if (M[R.ADJ_SCOPE] === true) {
+ Q = M[R.OBJ]
+ } else {
+ Q = M[R.ADJ_SCOPE]
+ }
+ }
+ M[R.FN].call(Q, R.getEvent(S), M[R.OBJ]);
+ K[P] = null;
+ M = null;
+ Q = null
+ }
+ }
+ K = null;
+ if (G && G.length > 0) {
+ O = G.length;
+ while (O) {
+ N = O - 1;
+ M = G[N];
+ if (M) {
+ R.removeListener(M[R.EL], M[R.TYPE], M[R.FN], N)
+ }
+ O = O - 1
+ }
+ M = null;
+ R.clearCache()
+ }
+ R.doRemove(window, "unload", R._unload)
+ },getScroll:function() {
+ var L = document.documentElement,M = document.body;
+ if (L && (L.scrollTop || L.scrollLeft)) {
+ return[L.scrollTop,L.scrollLeft]
+ } else {
+ if (M) {
+ return[M.scrollTop,M.scrollLeft]
+ } else {
+ return[0,0]
+ }
+ }
+ },doAdd:function() {
+ if (window.addEventListener) {
+ return function(O, M, N, L) {
+ O.addEventListener(M, N, (L))
+ }
+ } else {
+ if (window.attachEvent) {
+ return function(O, M, N, L) {
+ O.attachEvent("on" + M, N)
+ }
+ } else {
+ return function() {
+ }
+ }
+ }
+ }(),doRemove:function() {
+ if (window.removeEventListener) {
+ return function(O, M, N, L) {
+ O.removeEventListener(M, N, (L))
+ }
+ } else {
+ if (window.detachEvent) {
+ return function(N, L, M) {
+ N.detachEvent("on" + L, M)
+ }
+ } else {
+ return function() {
+ }
+ }
+ }
+ }()}
+ }();
+ var D = Ext.lib.Event;
+ D.on = D.addListener;
+ D.un = D.removeListener;
+ if (document && document.body) {
+ D._load()
+ } else {
+ D.doAdd(window, "load", D._load)
+ }
+ D.doAdd(window, "unload", D._unload);
+ D._tryPreloadAttach();
+ Ext.lib.Ajax = {request:function(K, I, E, J, F) {
+ if (F) {
+ var G = F.headers;
+ if (G) {
+ for (var H in G) {
+ if (G.hasOwnProperty(H)) {
+ this.initHeader(H, G[H], false)
+ }
+ }
+ }
+ if (F.xmlData) {
+ this.initHeader("Content-Type", "text/xml", false);
+ K = "POST";
+ J = F.xmlData
+ } else {
+ if (F.jsonData) {
+ this.initHeader("Content-Type", "text/javascript", false);
+ K = "POST";
+ J = typeof F.jsonData == "object" ? Ext.encode(F.jsonData)
+ : F.jsonData
+ }
+ }
+ }
+ return this.asyncRequest(K, I, E, J)
+ },serializeForm:function(F) {
+ if (typeof F == "string") {
+ F = (document.getElementById(F) || document.forms[F])
+ }
+ var G,E,H,J,K = "",M = false;
+ for (var L = 0; L < F.elements.length; L++) {
+ G = F.elements[L];
+ J = F.elements[L].disabled;
+ E = F.elements[L].name;
+ H = F.elements[L].value;
+ if (!J && E) {
+ switch (G.type) {case"select-one":case"select-multiple":for (var I = 0;
+ I < G.options.length;
+ I++) {
+ if (G.options[I].selected) {
+ if (Ext.isIE) {
+ K += encodeURIComponent(E) + "="
+ + encodeURIComponent(G.options[I].attributes["value"].specified
+ ? G.options[I].value : G.options[I].text)
+ + "&"
+ } else {
+ K += encodeURIComponent(E) + "="
+ + encodeURIComponent(G.options[I].hasAttribute("value")
+ ? G.options[I].value : G.options[I].text)
+ + "&"
+ }
+ }
+ }break;case"radio":case"checkbox":if (G.checked) {
+ K += encodeURIComponent(E) + "=" + encodeURIComponent(H)
+ + "&"
+ }break;case"file":case undefined:case"reset":case"button":break;case"submit":if (M
+ == false) {
+ K += encodeURIComponent(E) + "=" + encodeURIComponent(H)
+ + "&";
+ M = true
+ }break;default:K += encodeURIComponent(E) + "="
+ + encodeURIComponent(H) + "&";break}
+ }
+ }
+ K = K.substr(0, K.length - 1);
+ return K
+ },headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:"application/x-www-form-urlencoded",useDefaultXhrHeader:true,defaultXhrHeader:"XMLHttpRequest",hasDefaultHeaders:true,defaultHeaders:{},poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(
+ E) {
+ this.activeX.unshift(E)
+ },setDefaultPostHeader:function(E) {
+ this.useDefaultHeader = E
+ },setDefaultXhrHeader:function(E) {
+ this.useDefaultXhrHeader = E
+ },setPollingInterval:function(E) {
+ if (typeof E == "number" && isFinite(E)) {
+ this.pollInterval = E
+ }
+ },createXhrObject:function(I) {
+ var H,E;
+ try {
+ E = new XMLHttpRequest();
+ H = {conn:E,tId:I}
+ } catch(G) {
+ for (var F = 0; F < this.activeX.length; ++F) {
+ try {
+ E = new ActiveXObject(this.activeX[F]);
+ H = {conn:E,tId:I};
+ break
+ } catch(G) {
+ }
+ }
+ } finally {
+ return H
+ }
+ },getConnectionObject:function() {
+ var F;
+ var G = this.transactionId;
+ try {
+ F = this.createXhrObject(G);
+ if (F) {
+ this.transactionId++
+ }
+ } catch(E) {
+ } finally {
+ return F
+ }
+ },asyncRequest:function(I, F, H, E) {
+ var G = this.getConnectionObject();
+ if (!G) {
+ return null
+ } else {
+ G.conn.open(I, F, true);
+ if (this.useDefaultXhrHeader) {
+ if (!this.defaultHeaders["X-Requested-With"]) {
+ this.initHeader("X-Requested-With", this.defaultXhrHeader, true)
+ }
+ }
+ if (E && this.useDefaultHeader) {
+ this.initHeader("Content-Type", this.defaultPostHeader)
+ }
+ if (this.hasDefaultHeaders || this.hasHeaders) {
+ this.setHeader(G)
+ }
+ this.handleReadyState(G, H);
+ G.conn.send(E || null);
+ return G
+ }
+ },handleReadyState:function(F, G) {
+ var E = this;
+ if (G && G.timeout) {
+ this.timeout[F.tId] = window.setTimeout(function() {
+ E.abort(F, G, true)
+ }, G.timeout)
+ }
+ this.poll[F.tId] = window.setInterval(function() {
+ if (F.conn && F.conn.readyState == 4) {
+ window.clearInterval(E.poll[F.tId]);
+ delete E.poll[F.tId];
+ if (G && G.timeout) {
+ window.clearTimeout(E.timeout[F.tId]);
+ delete E.timeout[F.tId]
+ }
+ E.handleTransactionResponse(F, G)
+ }
+ }, this.pollInterval)
+ },handleTransactionResponse:function(I, J, E) {
+ if (!J) {
+ this.releaseObject(I);
+ return
+ }
+ var G,F;
+ try {
+ if (I.conn.status !== undefined && I.conn.status != 0) {
+ G = I.conn.status
+ } else {
+ G = 13030
+ }
+ } catch(H) {
+ G = 13030
+ }
+ if (G >= 200 && G < 300) {
+ F = this.createResponseObject(I, J.argument);
+ if (J.success) {
+ if (!J.scope) {
+ J.success(F)
+ } else {
+ J.success.apply(J.scope, [F])
+ }
+ }
+ } else {
+ switch (G) {case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:F
+ = this.createExceptionObject(I.tId, J.argument, (E ? E
+ : false));if (J.failure) {
+ if (!J.scope) {
+ J.failure(F)
+ } else {
+ J.failure.apply(J.scope, [F])
+ }
+ }break;default:F
+ = this.createResponseObject(I, J.argument);if (J.failure) {
+ if (!J.scope) {
+ J.failure(F)
+ } else {
+ J.failure.apply(J.scope, [F])
+ }
+ }}
+ }
+ this.releaseObject(I);
+ F = null
+ },createResponseObject:function(E, K) {
+ var H = {};
+ var M = {};
+ try {
+ var G = E.conn.getAllResponseHeaders();
+ var J = G.split("\n");
+ for (var I = 0; I < J.length; I++) {
+ var F = J[I].indexOf(":");
+ if (F != -1) {
+ M[J[I].substring(0, F)] = J[I].substring(F + 2)
+ }
+ }
+ } catch(L) {
+ }
+ H.tId = E.tId;
+ H.status = E.conn.status;
+ H.statusText = E.conn.statusText;
+ H.getResponseHeader = M;
+ H.getAllResponseHeaders = G;
+ H.responseText = E.conn.responseText;
+ H.responseXML = E.conn.responseXML;
+ if (typeof K !== undefined) {
+ H.argument = K
+ }
+ return H
+ },createExceptionObject:function(L, H, E) {
+ var J = 0;
+ var K = "communication failure";
+ var G = -1;
+ var F = "transaction aborted";
+ var I = {};
+ I.tId = L;
+ if (E) {
+ I.status = G;
+ I.statusText = F
+ } else {
+ I.status = J;
+ I.statusText = K
+ }
+ if (H) {
+ I.argument = H
+ }
+ return I
+ },initHeader:function(E, H, G) {
+ var F = (G) ? this.defaultHeaders : this.headers;
+ if (F[E] === undefined) {
+ F[E] = H
+ } else {
+ F[E] = H + "," + F[E]
+ }
+ if (G) {
+ this.hasDefaultHeaders = true
+ } else {
+ this.hasHeaders = true
+ }
+ },setHeader:function(E) {
+ if (this.hasDefaultHeaders) {
+ for (var F in this.defaultHeaders) {
+ if (this.defaultHeaders.hasOwnProperty(F)) {
+ E.conn.setRequestHeader(F, this.defaultHeaders[F])
+ }
+ }
+ }
+ if (this.hasHeaders) {
+ for (var F in this.headers) {
+ if (this.headers.hasOwnProperty(F)) {
+ E.conn.setRequestHeader(F, this.headers[F])
+ }
+ }
+ this.headers = {};
+ this.hasHeaders = false
+ }
+ },resetDefaultHeaders:function() {
+ delete this.defaultHeaders;
+ this.defaultHeaders = {};
+ this.hasDefaultHeaders = false
+ },abort:function(F, G, E) {
+ if (this.isCallInProgress(F)) {
+ F.conn.abort();
+ window.clearInterval(this.poll[F.tId]);
+ delete this.poll[F.tId];
+ if (E) {
+ delete this.timeout[F.tId]
+ }
+ this.handleTransactionResponse(F, G, true);
+ return true
+ } else {
+ return false
+ }
+ },isCallInProgress:function(E) {
+ if (E.conn) {
+ return E.conn.readyState != 4 && E.conn.readyState != 0
+ } else {
+ return false
+ }
+ },releaseObject:function(E) {
+ E.conn = null;
+ E = null
+ },activeX:["MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]};
+ Ext.lib.Region = function(G, H, E, F) {
+ this.top = G;
+ this[1] = G;
+ this.right = H;
+ this.bottom = E;
+ this.left = F;
+ this[0] = F
+ };
+ Ext.lib.Region.prototype = {contains:function(E) {
+ return(E.left >= this.left && E.right <= this.right && E.top >= this.top
+ && E.bottom <= this.bottom)
+ },getArea:function() {
+ return((this.bottom - this.top) * (this.right - this.left))
+ },intersect:function(I) {
+ var G = Math.max(this.top, I.top);
+ var H = Math.min(this.right, I.right);
+ var E = Math.min(this.bottom, I.bottom);
+ var F = Math.max(this.left, I.left);
+ if (E >= G && H >= F) {
+ return new Ext.lib.Region(G, H, E, F)
+ } else {
+ return null
+ }
+ },union:function(I) {
+ var G = Math.min(this.top, I.top);
+ var H = Math.max(this.right, I.right);
+ var E = Math.max(this.bottom, I.bottom);
+ var F = Math.min(this.left, I.left);
+ return new Ext.lib.Region(G, H, E, F)
+ },constrainTo:function(E) {
+ this.top = this.top.constrain(E.top, E.bottom);
+ this.bottom = this.bottom.constrain(E.top, E.bottom);
+ this.left = this.left.constrain(E.left, E.right);
+ this.right = this.right.constrain(E.left, E.right);
+ return this
+ },adjust:function(G, F, E, H) {
+ this.top += G;
+ this.left += F;
+ this.right += H;
+ this.bottom += E;
+ return this
+ }};
+ Ext.lib.Region.getRegion = function(H) {
+ var J = Ext.lib.Dom.getXY(H);
+ var G = J[1];
+ var I = J[0] + H.offsetWidth;
+ var E = J[1] + H.offsetHeight;
+ var F = J[0];
+ return new Ext.lib.Region(G, I, E, F)
+ };
+ Ext.lib.Point = function(E, F) {
+ if (Ext.isArray(E)) {
+ F = E[1];
+ E = E[0]
+ }
+ this.x = this.right = this.left = this[0] = E;
+ this.y = this.top = this.bottom = this[1] = F
+ };
+ Ext.lib.Point.prototype = new Ext.lib.Region();
+ Ext.lib.Anim = {scroll:function(H, F, I, J, E, G) {
+ return this.run(H, F, I, J, E, G, Ext.lib.Scroll)
+ },motion:function(H, F, I, J, E, G) {
+ return this.run(H, F, I, J, E, G, Ext.lib.Motion)
+ },color:function(H, F, I, J, E, G) {
+ return this.run(H, F, I, J, E, G, Ext.lib.ColorAnim)
+ },run:function(I, F, K, L, E, H, G) {
+ G = G || Ext.lib.AnimBase;
+ if (typeof L == "string") {
+ L = Ext.lib.Easing[L]
+ }
+ var J = new G(I, F, K, L);
+ J.animateX(function() {
+ Ext.callback(E, H)
+ });
+ return J
+ }};
+ function C(E) {
+ if (!B) {
+ B = new Ext.Element.Flyweight()
+ }
+ B.dom = E;
+ return B
+ }
+
+ if (Ext.isIE) {
+ function A() {
+ var E = Function.prototype;
+ delete E.createSequence;
+ delete E.defer;
+ delete E.createDelegate;
+ delete E.createCallback;
+ delete E.createInterceptor;
+ window.detachEvent("onunload", A)
+ }
+
+ window.attachEvent("onunload", A)
+ }
+ Ext.lib.AnimBase = function(F, E, G, H) {
+ if (F) {
+ this.init(F, E, G, H)
+ }
+ };
+ Ext.lib.AnimBase.prototype = {toString:function() {
+ var E = this.getEl();
+ var F = E.id || E.tagName;
+ return("Anim " + F)
+ },patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(
+ E, G, F) {
+ return this.method(this.currentFrame, G, F - G, this.totalFrames)
+ },setAttribute:function(E, G, F) {
+ if (this.patterns.noNegatives.test(E)) {
+ G = (G > 0) ? G : 0
+ }
+ Ext.fly(this.getEl(), "_anim").setStyle(E, G + F)
+ },getAttribute:function(E) {
+ var G = this.getEl();
+ var I = C(G).getStyle(E);
+ if (I !== "auto" && !this.patterns.offsetUnit.test(I)) {
+ return parseFloat(I)
+ }
+ var F = this.patterns.offsetAttribute.exec(E) || [];
+ var J = !!(F[3]);
+ var H = !!(F[2]);
+ if (H || (C(G).getStyle("position") == "absolute" && J)) {
+ I = G["offset" + F[0].charAt(0).toUpperCase() + F[0].substr(1)]
+ } else {
+ I = 0
+ }
+ return I
+ },getDefaultUnit:function(E) {
+ if (this.patterns.defaultUnit.test(E)) {
+ return"px"
+ }
+ return""
+ },animateX:function(G, E) {
+ var F = function() {
+ this.onComplete.removeListener(F);
+ if (typeof G == "function") {
+ G.call(E || this, this)
+ }
+ };
+ this.onComplete.addListener(F, this);
+ this.animate()
+ },setRuntimeAttribute:function(F) {
+ var K;
+ var G;
+ var H = this.attributes;
+ this.runtimeAttributes[F] = {};
+ var J = function(L) {
+ return(typeof L !== "undefined")
+ };
+ if (!J(H[F]["to"]) && !J(H[F]["by"])) {
+ return false
+ }
+ K = (J(H[F]["from"])) ? H[F]["from"] : this.getAttribute(F);
+ if (J(H[F]["to"])) {
+ G = H[F]["to"]
+ } else {
+ if (J(H[F]["by"])) {
+ if (K.constructor == Array) {
+ G = [];
+ for (var I = 0,E = K.length; I < E; ++I) {
+ G[I] = K[I] + H[F]["by"][I]
+ }
+ } else {
+ G = K + H[F]["by"]
+ }
+ }
+ }
+ this.runtimeAttributes[F].start = K;
+ this.runtimeAttributes[F].end = G;
+ this.runtimeAttributes[F].unit = (J(H[F].unit)) ? H[F]["unit"]
+ : this.getDefaultUnit(F)
+ },init:function(G, L, K, E) {
+ var F = false;
+ var H = null;
+ var J = 0;
+ G = Ext.getDom(G);
+ this.attributes = L || {};
+ this.duration = K || 1;
+ this.method = E || Ext.lib.Easing.easeNone;
+ this.useSeconds = true;
+ this.currentFrame = 0;
+ this.totalFrames = Ext.lib.AnimMgr.fps;
+ this.getEl = function() {
+ return G
+ };
+ this.isAnimated = function() {
+ return F
+ };
+ this.getStartTime = function() {
+ return H
+ };
+ this.runtimeAttributes = {};
+ this.animate = function() {
+ if (this.isAnimated()) {
+ return false
+ }
+ this.currentFrame = 0;
+ this.totalFrames = (this.useSeconds) ? Math.ceil(Ext.lib.AnimMgr.fps
+ * this.duration) : this.duration;
+ Ext.lib.AnimMgr.registerElement(this)
+ };
+ this.stop = function(O) {
+ if (O) {
+ this.currentFrame = this.totalFrames;
+ this._onTween.fire()
+ }
+ Ext.lib.AnimMgr.stop(this)
+ };
+ var N = function() {
+ this.onStart.fire();
+ this.runtimeAttributes = {};
+ for (var O in this.attributes) {
+ this.setRuntimeAttribute(O)
+ }
+ F = true;
+ J = 0;
+ H = new Date()
+ };
+ var M = function() {
+ var Q = {duration:new Date()
+ - this.getStartTime(),currentFrame:this.currentFrame};
+ Q.toString = function() {
+ return("duration: " + Q.duration + ", currentFrame: "
+ + Q.currentFrame)
+ };
+ this.onTween.fire(Q);
+ var P = this.runtimeAttributes;
+ for (var O in P) {
+ this.setAttribute(O, this.doMethod(O, P[O].start, P[O].end), P[O].unit)
+ }
+ J += 1
+ };
+ var I = function() {
+ var O = (new Date() - H) / 1000;
+ var P = {duration:O,frames:J,fps:J / O};
+ P.toString = function() {
+ return("duration: " + P.duration + ", frames: " + P.frames
+ + ", fps: " + P.fps)
+ };
+ F = false;
+ J = 0;
+ this.onComplete.fire(P)
+ };
+ this._onStart = new Ext.util.Event(this);
+ this.onStart = new Ext.util.Event(this);
+ this.onTween = new Ext.util.Event(this);
+ this._onTween = new Ext.util.Event(this);
+ this.onComplete = new Ext.util.Event(this);
+ this._onComplete = new Ext.util.Event(this);
+ this._onStart.addListener(N);
+ this._onTween.addListener(M);
+ this._onComplete.addListener(I)
+ }};
+ Ext.lib.AnimMgr = new function() {
+ var G = null;
+ var F = [];
+ var E = 0;
+ this.fps = 1000;
+ this.delay = 1;
+ this.registerElement = function(J) {
+ F[F.length] = J;
+ E += 1;
+ J._onStart.fire();
+ this.start()
+ };
+ this.unRegister = function(K, J) {
+ K._onComplete.fire();
+ J = J || I(K);
+ if (J != -1) {
+ F.splice(J, 1)
+ }
+ E -= 1;
+ if (E <= 0) {
+ this.stop()
+ }
+ };
+ this.start = function() {
+ if (G === null) {
+ G = setInterval(this.run, this.delay)
+ }
+ };
+ this.stop = function(L) {
+ if (!L) {
+ clearInterval(G);
+ for (var K = 0,J = F.length; K < J; ++K) {
+ if (F[0].isAnimated()) {
+ this.unRegister(F[0], 0)
+ }
+ }
+ F = [];
+ G = null;
+ E = 0
+ } else {
+ this.unRegister(L)
+ }
+ };
+ this.run = function() {
+ for (var L = 0,J = F.length; L < J; ++L) {
+ var K = F[L];
+ if (!K || !K.isAnimated()) {
+ continue
+ }
+ if (K.currentFrame < K.totalFrames || K.totalFrames === null) {
+ K.currentFrame += 1;
+ if (K.useSeconds) {
+ H(K)
+ }
+ K._onTween.fire()
+ } else {
+ Ext.lib.AnimMgr.stop(K, L)
+ }
+ }
+ };
+ var I = function(L) {
+ for (var K = 0,J = F.length; K < J; ++K) {
+ if (F[K] == L) {
+ return K
+ }
+ }
+ return -1
+ };
+ var H = function(K) {
+ var N = K.totalFrames;
+ var M = K.currentFrame;
+ var L = (K.currentFrame * K.duration * 1000 / K.totalFrames);
+ var J = (new Date() - K.getStartTime());
+ var O = 0;
+ if (J < K.duration * 1000) {
+ O = Math.round((J / L - 1) * K.currentFrame)
+ } else {
+ O = N - (M + 1)
+ }
+ if (O > 0 && isFinite(O)) {
+ if (K.currentFrame + O >= N) {
+ O = N - (M + 1)
+ }
+ K.currentFrame += O
+ }
+ }
+ };
+ Ext.lib.Bezier = new function() {
+ this.getPosition = function(I, H) {
+ var J = I.length;
+ var G = [];
+ for (var F = 0; F < J; ++F) {
+ G[F] = [I[F][0],I[F][1]]
+ }
+ for (var E = 1; E < J; ++E) {
+ for (F = 0; F < J - E; ++F) {
+ G[F][0] = (1 - H) * G[F][0] + H * G[parseInt(F + 1, 10)][0];
+ G[F][1] = (1 - H) * G[F][1] + H * G[parseInt(F + 1, 10)][1]
+ }
+ }
+ return[G[0][0],G[0][1]]
+ }
+ };
+ (function() {
+ Ext.lib.ColorAnim = function(I, H, J, K) {
+ Ext.lib.ColorAnim.superclass.constructor.call(this, I, H, J, K)
+ };
+ Ext.extend(Ext.lib.ColorAnim, Ext.lib.AnimBase);
+ var F = Ext.lib;
+ var G = F.ColorAnim.superclass;
+ var E = F.ColorAnim.prototype;
+ E.toString = function() {
+ var H = this.getEl();
+ var I = H.id || H.tagName;
+ return("ColorAnim " + I)
+ };
+ E.patterns.color = /color$/i;
+ E.patterns.rgb = /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;
+ E.patterns.hex = /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;
+ E.patterns.hex3 = /^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;
+ E.patterns.transparent = /^transparent|rgba\(0, 0, 0, 0\)$/;
+ E.parseColor = function(H) {
+ if (H.length == 3) {
+ return H
+ }
+ var I = this.patterns.hex.exec(H);
+ if (I && I.length == 4) {
+ return[parseInt(I[1], 16),parseInt(I[2], 16),parseInt(I[3], 16)]
+ }
+ I = this.patterns.rgb.exec(H);
+ if (I && I.length == 4) {
+ return[parseInt(I[1], 10),parseInt(I[2], 10),parseInt(I[3], 10)]
+ }
+ I = this.patterns.hex3.exec(H);
+ if (I && I.length == 4) {
+ return[parseInt(I[1] + I[1], 16),parseInt(I[2]
+ + I[2], 16),parseInt(I[3] + I[3], 16)]
+ }
+ return null
+ };
+ E.getAttribute = function(H) {
+ var J = this.getEl();
+ if (this.patterns.color.test(H)) {
+ var K = C(J).getStyle(H);
+ if (this.patterns.transparent.test(K)) {
+ var I = J.parentNode;
+ K = C(I).getStyle(H);
+ while (I && this.patterns.transparent.test(K)) {
+ I = I.parentNode;
+ K = C(I).getStyle(H);
+ if (I.tagName.toUpperCase() == "HTML") {
+ K = "#fff"
+ }
+ }
+ }
+ } else {
+ K = G.getAttribute.call(this, H)
+ }
+ return K
+ };
+ E.doMethod = function(I, M, J) {
+ var L;
+ if (this.patterns.color.test(I)) {
+ L = [];
+ for (var K = 0,H = M.length; K < H; ++K) {
+ L[K] = G.doMethod.call(this, I, M[K], J[K])
+ }
+ L = "rgb(" + Math.floor(L[0]) + "," + Math.floor(L[1]) + ","
+ + Math.floor(L[2]) + ")"
+ } else {
+ L = G.doMethod.call(this, I, M, J)
+ }
+ return L
+ };
+ E.setRuntimeAttribute = function(I) {
+ G.setRuntimeAttribute.call(this, I);
+ if (this.patterns.color.test(I)) {
+ var K = this.attributes;
+ var M = this.parseColor(this.runtimeAttributes[I].start);
+ var J = this.parseColor(this.runtimeAttributes[I].end);
+ if (typeof K[I]["to"] === "undefined" && typeof K[I]["by"]
+ !== "undefined") {
+ J = this.parseColor(K[I].by);
+ for (var L = 0,H = M.length; L < H; ++L) {
+ J[L] = M[L] + J[L]
+ }
+ }
+ this.runtimeAttributes[I].start = M;
+ this.runtimeAttributes[I].end = J
+ }
+ }
+ })();
+ Ext.lib.Easing = {easeNone:function(F, E, H, G) {
+ return H * F / G + E
+ },easeIn:function(F, E, H, G) {
+ return H * (F /= G) * F + E
+ },easeOut:function(F, E, H, G) {
+ return -H * (F /= G) * (F - 2) + E
+ },easeBoth:function(F, E, H, G) {
+ if ((F /= G / 2) < 1) {
+ return H / 2 * F * F + E
+ }
+ return -H / 2 * ((--F) * (F - 2) - 1) + E
+ },easeInStrong:function(F, E, H, G) {
+ return H * (F /= G) * F * F * F + E
+ },easeOutStrong:function(F, E, H, G) {
+ return -H * ((F = F / G - 1) * F * F * F - 1) + E
+ },easeBothStrong:function(F, E, H, G) {
+ if ((F /= G / 2) < 1) {
+ return H / 2 * F * F * F * F + E
+ }
+ return -H / 2 * ((F -= 2) * F * F * F - 2) + E
+ },elasticIn:function(G, E, K, J, F, I) {
+ if (G == 0) {
+ return E
+ }
+ if ((G /= J) == 1) {
+ return E + K
+ }
+ if (!I) {
+ I = J * 0.3
+ }
+ if (!F || F < Math.abs(K)) {
+ F = K;
+ var H = I / 4
+ } else {
+ var H = I / (2 * Math.PI) * Math.asin(K / F)
+ }
+ return -(F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H) * (2
+ * Math.PI) / I)) + E
+ },elasticOut:function(G, E, K, J, F, I) {
+ if (G == 0) {
+ return E
+ }
+ if ((G /= J) == 1) {
+ return E + K
+ }
+ if (!I) {
+ I = J * 0.3
+ }
+ if (!F || F < Math.abs(K)) {
+ F = K;
+ var H = I / 4
+ } else {
+ var H = I / (2 * Math.PI) * Math.asin(K / F)
+ }
+ return F * Math.pow(2, -10 * G) * Math.sin((G * J - H) * (2 * Math.PI)
+ / I) + K + E
+ },elasticBoth:function(G, E, K, J, F, I) {
+ if (G == 0) {
+ return E
+ }
+ if ((G /= J / 2) == 2) {
+ return E + K
+ }
+ if (!I) {
+ I = J * (0.3 * 1.5)
+ }
+ if (!F || F < Math.abs(K)) {
+ F = K;
+ var H = I / 4
+ } else {
+ var H = I / (2 * Math.PI) * Math.asin(K / F)
+ }
+ if (G < 1) {
+ return -0.5 * (F * Math.pow(2, 10 * (G -= 1)) * Math.sin((G * J - H)
+ * (2 * Math.PI) / I)) + E
+ }
+ return F * Math.pow(2, -10 * (G -= 1)) * Math.sin((G * J - H) * (2
+ * Math.PI) / I) * 0.5 + K + E
+ },backIn:function(F, E, I, H, G) {
+ if (typeof G == "undefined") {
+ G = 1.70158
+ }
+ return I * (F /= H) * F * ((G + 1) * F - G) + E
+ },backOut:function(F, E, I, H, G) {
+ if (typeof G == "undefined") {
+ G = 1.70158
+ }
+ return I * ((F = F / H - 1) * F * ((G + 1) * F + G) + 1) + E
+ },backBoth:function(F, E, I, H, G) {
+ if (typeof G == "undefined") {
+ G = 1.70158
+ }
+ if ((F /= H / 2) < 1) {
+ return I / 2 * (F * F * (((G *= (1.525)) + 1) * F - G)) + E
+ }
+ return I / 2 * ((F -= 2) * F * (((G *= (1.525)) + 1) * F + G) + 2) + E
+ },bounceIn:function(F, E, H, G) {
+ return H - Ext.lib.Easing.bounceOut(G - F, 0, H, G) + E
+ },bounceOut:function(F, E, H, G) {
+ if ((F /= G) < (1 / 2.75)) {
+ return H * (7.5625 * F * F) + E
+ } else {
+ if (F < (2 / 2.75)) {
+ return H * (7.5625 * (F -= (1.5 / 2.75)) * F + 0.75) + E
+ } else {
+ if (F < (2.5 / 2.75)) {
+ return H * (7.5625 * (F -= (2.25 / 2.75)) * F + 0.9375) + E
+ }
+ }
+ }
+ return H * (7.5625 * (F -= (2.625 / 2.75)) * F + 0.984375) + E
+ },bounceBoth:function(F, E, H, G) {
+ if (F < G / 2) {
+ return Ext.lib.Easing.bounceIn(F * 2, 0, H, G) * 0.5 + E
+ }
+ return Ext.lib.Easing.bounceOut(F * 2 - G, 0, H, G) * 0.5 + H * 0.5 + E
+ }};
+ (function() {
+ Ext.lib.Motion = function(K, J, L, M) {
+ if (K) {
+ Ext.lib.Motion.superclass.constructor.call(this, K, J, L, M)
+ }
+ };
+ Ext.extend(Ext.lib.Motion, Ext.lib.ColorAnim);
+ var H = Ext.lib;
+ var I = H.Motion.superclass;
+ var F = H.Motion.prototype;
+ F.toString = function() {
+ var J = this.getEl();
+ var K = J.id || J.tagName;
+ return("Motion " + K)
+ };
+ F.patterns.points = /^points$/i;
+ F.setAttribute = function(J, L, K) {
+ if (this.patterns.points.test(J)) {
+ K = K || "px";
+ I.setAttribute.call(this, "left", L[0], K);
+ I.setAttribute.call(this, "top", L[1], K)
+ } else {
+ I.setAttribute.call(this, J, L, K)
+ }
+ };
+ F.getAttribute = function(J) {
+ if (this.patterns.points.test(J)) {
+ var K = [I.getAttribute.call(this, "left"),I.getAttribute.call(this, "top")]
+ } else {
+ K = I.getAttribute.call(this, J)
+ }
+ return K
+ };
+ F.doMethod = function(J, N, K) {
+ var M = null;
+ if (this.patterns.points.test(J)) {
+ var L = this.method(this.currentFrame, 0, 100, this.totalFrames)
+ / 100;
+ M = H.Bezier.getPosition(this.runtimeAttributes[J], L)
+ } else {
+ M = I.doMethod.call(this, J, N, K)
+ }
+ return M
+ };
+ F.setRuntimeAttribute = function(S) {
+ if (this.patterns.points.test(S)) {
+ var K = this.getEl();
+ var M = this.attributes;
+ var J;
+ var O = M["points"]["control"] || [];
+ var L;
+ var P,R;
+ if (O.length > 0 && !Ext.isArray(O[0])) {
+ O = [O]
+ } else {
+ var N = [];
+ for (P = 0,R = O.length; P < R; ++P) {
+ N[P] = O[P]
+ }
+ O = N
+ }
+ Ext.fly(K).position();
+ if (G(M["points"]["from"])) {
+ Ext.lib.Dom.setXY(K, M["points"]["from"])
+ } else {
+ Ext.lib.Dom.setXY(K, Ext.lib.Dom.getXY(K))
+ }
+ J = this.getAttribute("points");
+ if (G(M["points"]["to"])) {
+ L = E.call(this, M["points"]["to"], J);
+ var Q = Ext.lib.Dom.getXY(this.getEl());
+ for (P = 0,R = O.length; P < R; ++P) {
+ O[P] = E.call(this, O[P], J)
+ }
+ } else {
+ if (G(M["points"]["by"])) {
+ L = [J[0] + M["points"]["by"][0],J[1]
+ + M["points"]["by"][1]];
+ for (P = 0,R = O.length; P < R; ++P) {
+ O[P] = [J[0] + O[P][0],J[1] + O[P][1]]
+ }
+ }
+ }
+ this.runtimeAttributes[S] = [J];
+ if (O.length > 0) {
+ this.runtimeAttributes[S]
+ = this.runtimeAttributes[S].concat(O)
+ }
+ this.runtimeAttributes[S][this.runtimeAttributes[S].length] = L
+ } else {
+ I.setRuntimeAttribute.call(this, S)
+ }
+ };
+ var E = function(J, L) {
+ var K = Ext.lib.Dom.getXY(this.getEl());
+ J = [J[0] - K[0] + L[0],J[1] - K[1] + L[1]];
+ return J
+ };
+ var G = function(J) {
+ return(typeof J !== "undefined")
+ }
+ })();
+ (function() {
+ Ext.lib.Scroll = function(I, H, J, K) {
+ if (I) {
+ Ext.lib.Scroll.superclass.constructor.call(this, I, H, J, K)
+ }
+ };
+ Ext.extend(Ext.lib.Scroll, Ext.lib.ColorAnim);
+ var F = Ext.lib;
+ var G = F.Scroll.superclass;
+ var E = F.Scroll.prototype;
+ E.toString = function() {
+ var H = this.getEl();
+ var I = H.id || H.tagName;
+ return("Scroll " + I)
+ };
+ E.doMethod = function(H, K, I) {
+ var J = null;
+ if (H == "scroll") {
+ J = [this.method(this.currentFrame, K[0], I[0]
+ - K[0], this.totalFrames),this.method(this.currentFrame, K[1], I[1]
+ - K[1], this.totalFrames)]
+ } else {
+ J = G.doMethod.call(this, H, K, I)
+ }
+ return J
+ };
+ E.getAttribute = function(H) {
+ var J = null;
+ var I = this.getEl();
+ if (H == "scroll") {
+ J = [I.scrollLeft,I.scrollTop]
+ } else {
+ J = G.getAttribute.call(this, H)
+ }
+ return J
+ };
+ E.setAttribute = function(H, K, J) {
+ var I = this.getEl();
+ if (H == "scroll") {
+ I.scrollLeft = K[0];
+ I.scrollTop = K[1]
+ } else {
+ G.setAttribute.call(this, H, K, J)
+ }
+ }
+ })()
+})();
diff --git a/samples/src/main/java/gwtquery/samples/public/ext-core.js b/samples/src/main/java/gwtquery/samples/public/ext-core.js
index 749d9240..2b6eaa65 100644
--- a/samples/src/main/java/gwtquery/samples/public/ext-core.js
+++ b/samples/src/main/java/gwtquery/samples/public/ext-core.js
@@ -6,14 +6,4183 @@
* http://extjs.com/license
*/
-Ext.DomHelper=function(){var L=null;var F=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var B=/^table|tbody|tr|td$/i;var A=function(T){if(typeof T=="string"){return T}var O="";if(Ext.isArray(T)){for(var R=0,P=T.length;R<P;R++){O+=A(T[R])}return O}if(!T.tag){T.tag="div"}O+="<"+T.tag;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||typeof T[N]=="function"){continue}if(N=="style"){var S=T["style"];if(typeof S=="function"){S=S.call()}if(typeof S=="string"){O+=" style=\""+S+"\""}else{if(typeof S=="object"){O+=" style=\"";for(var Q in S){if(typeof S[Q]!="function"){O+=Q+":"+S[Q]+";"}}O+="\""}}}else{if(N=="cls"){O+=" class=\""+T["cls"]+"\""}else{if(N=="htmlFor"){O+=" for=\""+T["htmlFor"]+"\""}else{O+=" "+N+"=\""+T[N]+"\""}}}}if(F.test(T.tag)){O+="/>"}else{O+=">";var U=T.children||T.cn;if(U){O+=A(U)}else{if(T.html){O+=T.html}}O+="</"+T.tag+">"}return O};var M=function(T,O){var S;if(Ext.isArray(T)){S=document.createDocumentFragment();for(var R=0,P=T.length;R<P;R++){M(T[R],S)}}else{if(typeof T=="string)"){S=document.createTextNode(T)}else{S=document.createElement(T.tag||"div");var Q=!!S.setAttribute;for(var N in T){if(N=="tag"||N=="children"||N=="cn"||N=="html"||N=="style"||typeof T[N]=="function"){continue}if(N=="cls"){S.className=T["cls"]}else{if(Q){S.setAttribute(N,T[N])}else{S[N]=T[N]}}}Ext.DomHelper.applyStyles(S,T.style);var U=T.children||T.cn;if(U){M(U,S)}else{if(T.html){S.innerHTML=T.html}}}}if(O){O.appendChild(S)}return S};var I=function(S,Q,P,R){L.innerHTML=[Q,P,R].join("");var N=-1,O=L;while(++N<S){O=O.firstChild}return O};var J="<table>",E="</table>",C=J+"<tbody>",K="</tbody>"+E,H=C+"<tr>",D="</tr>"+K;var G=function(N,O,Q,P){if(!L){L=document.createElement("div")}var R;var S=null;if(N=="td"){if(O=="afterbegin"||O=="beforeend"){return }if(O=="beforebegin"){S=Q;Q=Q.parentNode}else{S=Q.nextSibling;Q=Q.parentNode}R=I(4,H,P,D)}else{if(N=="tr"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(3,C,P,K)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(4,H,P,D)}}}else{if(N=="tbody"){if(O=="beforebegin"){S=Q;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterend"){S=Q.nextSibling;Q=Q.parentNode;R=I(2,J,P,E)}else{if(O=="afterbegin"){S=Q.firstChild}R=I(3,C,P,K)}}}else{if(O=="beforebegin"||O=="afterend"){return }if(O=="afterbegin"){S=Q.firstChild}R=I(2,J,P,E)}}}Q.insertBefore(R,S);return R};return{useDom:false,markup:function(N){return A(N)},applyStyles:function(P,Q){if(Q){P=Ext.fly(P);if(typeof Q=="string"){var O=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var R;while((R=O.exec(Q))!=null){P.setStyle(R[1],R[2])}}else{if(typeof Q=="object"){for(var N in Q){P.setStyle(N,Q[N])}}else{if(typeof Q=="function"){Ext.DomHelper.applyStyles(P,Q.call())}}}}},insertHtml:function(P,R,Q){P=P.toLowerCase();if(R.insertAdjacentHTML){if(B.test(R.tagName)){var O;if(O=G(R.tagName.toLowerCase(),P,R,Q)){return O}}switch(P){case"beforebegin":R.insertAdjacentHTML("BeforeBegin",Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin",Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd",Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd",Q);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""}var N=R.ownerDocument.createRange();var S;switch(P){case"beforebegin":N.setStartBefore(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R);return R.previousSibling;case"afterbegin":if(R.firstChild){N.setStartBefore(R.firstChild);S=N.createContextualFragment(Q);R.insertBefore(S,R.firstChild);return R.firstChild}else{R.innerHTML=Q;return R.firstChild}case"beforeend":if(R.lastChild){N.setStartAfter(R.lastChild);S=N.createContextualFragment(Q);R.appendChild(S);return R.lastChild}else{R.innerHTML=Q;return R.lastChild}case"afterend":N.setStartAfter(R);S=N.createContextualFragment(Q);R.parentNode.insertBefore(S,R.nextSibling);return R.nextSibling}throw"Illegal insertion point -> \""+P+"\""},insertBefore:function(N,P,O){return this.doInsert(N,P,O,"beforeBegin")},insertAfter:function(N,P,O){return this.doInsert(N,P,O,"afterEnd","nextSibling")},insertFirst:function(N,P,O){return this.doInsert(N,P,O,"afterBegin","firstChild")},doInsert:function(Q,S,R,T,P){Q=Ext.getDom(Q);var O;if(this.useDom){O=M(S,null);(P==="firstChild"?Q:Q.parentNode).insertBefore(O,P?Q[P]:Q)}else{var N=A(S);O=this.insertHtml(T,Q,N)}return R?Ext.get(O,true):O},append:function(P,R,Q){P=Ext.getDom(P);var O;if(this.useDom){O=M(R,null);P.appendChild(O)}else{var N=A(R);O=this.insertHtml("beforeEnd",P,N)}return Q?Ext.get(O,true):O},overwrite:function(N,P,O){N=Ext.getDom(N);N.innerHTML=A(P);return O?Ext.get(N.firstChild,true):N.firstChild},createTemplate:function(O){var N=A(O);return new Ext.Template(N)}}}();
-Ext.Template=function(E){var B=arguments;if(Ext.isArray(E)){E=E.join("")}else{if(B.length>1){var C=[];for(var D=0,A=B.length;D<A;D++){if(typeof B[D]=="object"){Ext.apply(this,B[D])}else{C[C.length]=B[D]}}E=C.join("")}}this.html=E;if(this.compiled){this.compile()}};Ext.Template.prototype={applyTemplate:function(B){if(this.compiled){return this.compiled(B)}var A=this.disableFormats!==true;var E=Ext.util.Format,C=this;var D=function(G,I,L,H){if(L&&A){if(L.substr(0,5)=="this."){return C.call(L.substr(5),B[I],B)}else{if(H){var K=/^\s*['"](.*)["']\s*$/;H=H.split(",");for(var J=0,F=H.length;J<F;J++){H[J]=H[J].replace(K,"$1")}H=[B[I]].concat(H)}else{H=[B[I]]}return E[L].apply(E,H)}}else{return B[I]!==undefined?B[I]:""}};return this.html.replace(this.re,D)},set:function(A,B){this.html=A;this.compiled=null;if(B){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(C,B,A){return this[C](B,A)},insertFirst:function(B,A,C){return this.doInsert("afterBegin",B,A,C)},insertBefore:function(B,A,C){return this.doInsert("beforeBegin",B,A,C)},insertAfter:function(B,A,C){return this.doInsert("afterEnd",B,A,C)},append:function(B,A,C){return this.doInsert("beforeEnd",B,A,C)},doInsert:function(C,E,B,A){E=Ext.getDom(E);var D=Ext.DomHelper.insertHtml(C,E,this.applyTemplate(B));return A?Ext.get(D,true):D},overwrite:function(B,A,C){B=Ext.getDom(B);B.innerHTML=this.applyTemplate(A);return C?Ext.get(B.firstChild,true):B.firstChild}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomHelper.Template=Ext.Template;Ext.Template.from=function(B,A){B=Ext.getDom(B);return new Ext.Template(B.value||B.innerHTML,A||"")};
-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 A=this.events[arguments[0].toLowerCase()];if(typeof A=="object"){return A.fire.apply(A,Array.prototype.slice.call(arguments,1))}}return true},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A,C,B,F){if(typeof A=="object"){F=A;for(var E in F){if(this.filterOptRe.test(E)){continue}if(typeof F[E]=="function"){this.addListener(E,F[E],F.scope,F)}else{this.addListener(E,F[E].fn,F[E].scope,F[E])}}return }F=(!F||typeof F=="boolean")?{}:F;A=A.toLowerCase();var D=this.events[A]||true;if(typeof D=="boolean"){D=new Ext.util.Event(this,A);this.events[A]=D}D.addListener(C,B,F)},removeListener:function(A,C,B){var D=this.events[A.toLowerCase()];if(typeof D=="object"){D.removeListener(C,B)}},purgeListeners:function(){for(var A in this.events){if(typeof this.events[A]=="object"){this.events[A].clearListeners()}}},relayEvents:function(F,D){var E=function(G){return function(){return this.fireEvent.apply(this,Ext.combine(G,Array.prototype.slice.call(arguments,0)))}};for(var C=0,A=D.length;C<A;C++){var B=D[C];if(!this.events[B]){this.events[B]=true}F.on(B,E(B),this)}},addEvents:function(D){if(!this.events){this.events={}}if(typeof D=="string"){for(var C=0,A=arguments,B;B=A[C];C++){if(!this.events[A[C]]){D[A[C]]=true}}}else{Ext.applyIf(this.events,D)}},hasListener:function(A){var B=this.events[A];return typeof B=="object"&&B.listeners.length>0},suspendEvents:function(){this.eventsSuspended=true},resumeEvents:function(){this.eventsSuspended=false},getMethodEvent:function(G){if(!this.methodEvents){this.methodEvents={}}var F=this.methodEvents[G];if(!F){F={};this.methodEvents[G]=F;F.originalFn=this[G];F.methodName=G;F.before=[];F.after=[];var C,B,D;var E=this;var A=function(J,I,H){if((B=J.apply(I||E,H))!==undefined){if(typeof B==="object"){if(B.returnValue!==undefined){C=B.returnValue}else{C=B}if(B.cancel===true){D=true}}else{if(B===false){D=true}else{C=B}}}};this[G]=function(){C=B=undefined;D=false;var I=Array.prototype.slice.call(arguments,0);for(var J=0,H=F.before.length;J<H;J++){A(F.before[J].fn,F.before[J].scope,I);if(D){return C}}if((B=F.originalFn.apply(E,I))!==undefined){C=B}for(var J=0,H=F.after.length;J<H;J++){A(F.after[J].fn,F.after[J].scope,I);if(D){return C}}return C}}return F},beforeMethod:function(D,B,A){var C=this.getMethodEvent(D);C.before.push({fn:B,scope:A})},afterMethod:function(D,B,A){var C=this.getMethodEvent(D);C.after.push({fn:B,scope:A})},removeMethodListener:function(F,D,C){var E=this.getMethodEvent(F);for(var B=0,A=E.before.length;B<A;B++){if(E.before[B].fn==D&&E.before[B].scope==C){E.before.splice(B,1);return }}for(var B=0,A=E.after.length;B<A;B++){if(E.after[B].fn==D&&E.after[B].scope==C){E.after.splice(B,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(C,B,A){C.fireEvent=C.fireEvent.createInterceptor(B,A)};Ext.util.Observable.releaseCapture=function(A){A.fireEvent=Ext.util.Observable.prototype.fireEvent};(function(){var B=function(F,G,E){var D=new Ext.util.DelayedTask();return function(){D.delay(G.buffer,F,E,Array.prototype.slice.call(arguments,0))}};var C=function(F,G,E,D){return function(){G.removeListener(E,D);return F.apply(D,arguments)}};var A=function(E,F,D){return function(){var G=Array.prototype.slice.call(arguments,0);setTimeout(function(){E.apply(D,G)},F.delay||10)}};Ext.util.Event=function(E,D){this.name=D;this.obj=E;this.listeners=[]};Ext.util.Event.prototype={addListener:function(G,F,E){F=F||this.obj;if(!this.isListening(G,F)){var D=this.createListener(G,F,E);if(!this.firing){this.listeners.push(D)}else{this.listeners=this.listeners.slice(0);this.listeners.push(D)}}},createListener:function(G,F,H){H=H||{};F=F||this.obj;var D={fn:G,scope:F,options:H};var E=G;if(H.delay){E=A(E,H,F)}if(H.single){E=C(E,this,G,F)}if(H.buffer){E=B(E,H,F)}D.fireFn=E;return D},findListener:function(I,H){H=H||this.obj;var F=this.listeners;for(var G=0,D=F.length;G<D;G++){var E=F[G];if(E.fn==I&&E.scope==H){return G}}return -1},isListening:function(E,D){return this.findListener(E,D)!=-1},removeListener:function(F,E){var D;if((D=this.findListener(F,E))!=-1){if(!this.firing){this.listeners.splice(D,1)}else{this.listeners=this.listeners.slice(0);this.listeners.splice(D,1)}return true}return false},clearListeners:function(){this.listeners=[]},fire:function(){var F=this.listeners,I,D=F.length;if(D>0){this.firing=true;var G=Array.prototype.slice.call(arguments,0);for(var H=0;H<D;H++){var E=F[H];if(E.fireFn.apply(E.scope||this.obj||window,arguments)===false){this.firing=false;return false}}this.firing=false}return true}}})();
-Ext.EventManager=function(){var T,M,I=false;var K,S,C,O;var L=Ext.lib.Event;var N=Ext.lib.Dom;var B=function(){if(!I){I=true;Ext.isReady=true;if(M){clearInterval(M)}if(Ext.isGecko||Ext.isOpera){document.removeEventListener("DOMContentLoaded",B,false)}if(Ext.isIE){var D=document.getElementById("ie-deferred-loader");if(D){D.onreadystatechange=null;D.parentNode.removeChild(D)}}if(T){T.fire();T.clearListeners()}}};var A=function(){T=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){document.addEventListener("DOMContentLoaded",B,false)}else{if(Ext.isIE){document.write("<s"+"cript id=\"ie-deferred-loader\" defer=\"defer\" src=\"/"+"/:\"></s"+"cript>");var D=document.getElementById("ie-deferred-loader");D.onreadystatechange=function(){if(this.readyState=="complete"){B()}}}else{if(Ext.isSafari){M=setInterval(function(){var E=document.readyState;if(E=="complete"){B()}},10)}}}L.on(window,"load",B)};var R=function(E,U){var D=new Ext.util.DelayedTask(E);return function(V){V=new Ext.EventObjectImpl(V);D.delay(U.buffer,E,null,[V])}};var P=function(V,U,D,E){return function(W){Ext.EventManager.removeListener(U,D,E);V(W)}};var F=function(D,E){return function(U){U=new Ext.EventObjectImpl(U);setTimeout(function(){D(U)},E.delay||10)}};var J=function(U,E,D,Y,X){var Z=(!D||typeof D=="boolean")?{}:D;Y=Y||Z.fn;X=X||Z.scope;var W=Ext.getDom(U);if(!W){throw"Error listening for \""+E+"\". Element \""+U+"\" doesn't exist."}var V=function(b){b=Ext.EventObject.setEvent(b);var a;if(Z.delegate){a=b.getTarget(Z.delegate,W);if(!a){return }}else{a=b.target}if(Z.stopEvent===true){b.stopEvent()}if(Z.preventDefault===true){b.preventDefault()}if(Z.stopPropagation===true){b.stopPropagation()}if(Z.normalized===false){b=b.browserEvent}Y.call(X||W,b,a,Z)};if(Z.delay){V=F(V,Z)}if(Z.single){V=P(V,W,E,Y)}if(Z.buffer){V=R(V,Z)}Y._handlers=Y._handlers||[];Y._handlers.push([Ext.id(W),E,V]);L.on(W,E,V);if(E=="mousewheel"&&W.addEventListener){W.addEventListener("DOMMouseScroll",V,false);L.on(window,"unload",function(){W.removeEventListener("DOMMouseScroll",V,false)})}if(E=="mousedown"&&W==document){Ext.EventManager.stoppedMouseDownEvent.addListener(V)}return V};var G=function(E,U,Z){var D=Ext.id(E),a=Z._handlers,X=Z;if(a){for(var V=0,Y=a.length;V<Y;V++){var W=a[V];if(W[0]==D&&W[1]==U){X=W[2];a.splice(V,1);break}}}L.un(E,U,X);E=Ext.getDom(E);if(U=="mousewheel"&&E.addEventListener){E.removeEventListener("DOMMouseScroll",X,false)}if(U=="mousedown"&&E==document){Ext.EventManager.stoppedMouseDownEvent.removeListener(X)}};var H=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;var Q={addListener:function(U,D,W,V,E){if(typeof D=="object"){var Y=D;for(var X in Y){if(H.test(X)){continue}if(typeof Y[X]=="function"){J(U,X,Y,Y[X],Y.scope)}else{J(U,X,Y[X])}}return }return J(U,D,E,W,V)},removeListener:function(E,D,U){return G(E,D,U)},onDocumentReady:function(U,E,D){if(I){T.addListener(U,E,D);T.fire();T.clearListeners();return }if(!T){A()}T.addListener(U,E,D)},onWindowResize:function(U,E,D){if(!K){K=new Ext.util.Event();S=new Ext.util.DelayedTask(function(){K.fire(N.getViewWidth(),N.getViewHeight())});L.on(window,"resize",this.fireWindowResize,this)}K.addListener(U,E,D)},fireWindowResize:function(){if(K){if((Ext.isIE||Ext.isAir)&&S){S.delay(50)}else{K.fire(N.getViewWidth(),N.getViewHeight())}}},onTextResize:function(V,U,D){if(!C){C=new Ext.util.Event();var E=new Ext.Element(document.createElement("div"));E.dom.className="x-text-resize";E.dom.innerHTML="X";E.appendTo(document.body);O=E.dom.offsetHeight;setInterval(function(){if(E.dom.offsetHeight!=O){C.fire(O,O=E.dom.offsetHeight)}},this.textResizeInterval)}C.addListener(V,U,D)},removeResizeListener:function(E,D){if(K){K.removeListener(E,D)}},fireResize:function(){if(K){K.fire(N.getViewWidth(),N.getViewHeight())}},ieDeferSrc:false,textResizeInterval:50};Q.on=Q.addListener;Q.un=Q.removeListener;Q.stoppedMouseDownEvent=new Ext.util.Event();return Q}();Ext.onReady=Ext.EventManager.onDocumentReady;Ext.onReady(function(){var B=Ext.getBody();if(!B){return }var A=[Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":"ext-ie7"):Ext.isGecko?"ext-gecko":Ext.isOpera?"ext-opera":Ext.isSafari?"ext-safari":""];if(Ext.isMac){A.push("ext-mac")}if(Ext.isLinux){A.push("ext-linux")}if(Ext.isBorderBox){A.push("ext-border-box")}if(Ext.isStrict){var C=B.dom.parentNode;if(C){C.className+=" ext-strict"}}B.addClass(A.join(" "))});Ext.EventObject=function(){var B=Ext.lib.Event;var A={63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};var C=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(D){if(D){this.setEvent(D.browserEvent||D)}};Ext.EventObjectImpl.prototype={browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(D){if(D==this||(D&&D.browserEvent)){return D}this.browserEvent=D;if(D){this.button=D.button?C[D.button]:(D.which?D.which-1:-1);if(D.type=="click"&&this.button==-1){this.button=0}this.type=D.type;this.shiftKey=D.shiftKey;this.ctrlKey=D.ctrlKey||D.metaKey;this.altKey=D.altKey;this.keyCode=D.keyCode;this.charCode=D.charCode;this.target=B.getTarget(D);this.xy=B.getXY(D)}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)}B.stopEvent(this.browserEvent)}},preventDefault:function(){if(this.browserEvent){B.preventDefault(this.browserEvent)}},isNavKeyPress:function(){var D=this.keyCode;D=Ext.isSafari?(A[D]||D):D;return(D>=33&&D<=40)||D==this.RETURN||D==this.TAB||D==this.ESC},isSpecialKey:function(){var D=this.keyCode;return(this.type=="keypress"&&this.ctrlKey)||D==9||D==13||D==40||D==27||(D==16)||(D==17)||(D>=18&&D<=20)||(D>=33&&D<=35)||(D>=36&&D<=39)||(D>=44&&D<=45)},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=="mousedown"){Ext.EventManager.stoppedMouseDownEvent.fire(this)}B.stopPropagation(this.browserEvent)}},getCharCode:function(){return this.charCode||this.keyCode},getKey:function(){var D=this.keyCode||this.charCode;return Ext.isSafari?(A[D]||D):D},getPageX:function(){return this.xy[0]},getPageY:function(){return this.xy[1]},getTime:function(){if(this.browserEvent){return B.getTime(this.browserEvent)}return null},getXY:function(){return this.xy},getTarget:function(E,G,D){var F=Ext.get(this.target);return E?F.findParent(E,G,D):(D?F:this.target)},getRelatedTarget:function(){if(this.browserEvent){return B.getRelatedTarget(this.browserEvent)}return null},getWheelDelta:function(){var D=this.browserEvent;var E=0;if(D.wheelDelta){E=D.wheelDelta/120}else{if(D.detail){E=-D.detail/3}}return E},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false},within:function(E,F){var D=this[F?"getRelatedTarget":"getTarget"]();return D&&Ext.fly(E).contains(D)},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)||0.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,unique){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(0.01);this.setVisible(true)}this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,0.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){Ext.EventManager.removeListener(this.dom,eventName,fn);return this},removeAllListeners:function(){E.purgeElement(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,0.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.isGecko){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*0.5);y=r(h*0.5);break;case"t":x=r(w*0.5);y=0;break;case"l":x=0;y=r(h*0.5);break;case"r":x=w;y=r(h*0.5);break;case"b":x=r(w*0.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+="<span id=\""+id+"\"></span>";E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2]}hd.appendChild(s)}else{if(match[2]&&match[2].length>0){if(window.execScript){window.execScript(match[2])}else{window.eval(match[2])}}}}var el=document.getElementById(id);if(el){Ext.removeNode(el)}if(typeof callback=="function"){callback()}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this},load:function(){var um=this.getUpdater();um.update.apply(um,arguments);return this},getUpdater:function(){if(!this.updateManager){this.updateManager=new Ext.Updater(this)}return this.updateManager},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this},getCenterXY:function(){return this.getAlignToXY(document,"c-c")},center:function(centerIn){this.alignTo(centerIn||document,"c-c");return this},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY()}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top]}var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)}}bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides))},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"))}this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint")},1);return this},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0}}else{return this.addStyles(side,El.margins)}},addStyles:function(sides,styles){var val=0,v,w;for(var i=0,len=sides.length;i<len;i++){v=this.getStyle(styles[sides.charAt(i)]);if(v){w=parseInt(v,10);if(w){val+=(w>=0?w:-1*w)}}}return val},createProxy:function(config,renderTo,matchBox){config=typeof config=="object"?config:{tag:"div",cls:config};var proxy;if(renderTo){proxy=Ext.DomHelper.append(renderTo,config,true)}else{proxy=Ext.DomHelper.insertBefore(this.dom,config,true)}if(matchBox){proxy.setBox(this.getBox())}return proxy},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative")}if(this._maskMsg){this._maskMsg.remove()}if(this._mask){this._mask.remove()}this._mask=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask"},true);this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=="string"){this._maskMsg=Ext.DomHelper.append(this.dom,{cls:"ext-el-mask-msg",cn:{tag:"div"}},true);var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this)}if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&this.getStyle("height")=="auto"){this._mask.setSize(this.dom.clientWidth,this.getHeight())}return this._mask},unmask:function(){if(this._mask){if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg}this._mask.remove();delete this._mask}this.removeClass("x-masked")},isMasked:function(){return this._mask&&this._mask.isVisible()},createShim:function(){var el=document.createElement("iframe");el.frameBorder="no";el.className="ext-shim";if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL}var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim},remove:function(){Ext.removeNode(this.dom);delete El.cache[this.dom.id]},hover:function(overFn,outFn,scope){var preOverFn=function(e){if(!e.within(this,true)){overFn.apply(scope||this,arguments)}};var preOutFn=function(e){if(!e.within(this,true)){outFn.apply(scope||this,arguments)}};this.on("mouseover",preOverFn,this.dom);this.on("mouseout",preOutFn,this.dom);return this},addClassOnOver:function(className,preventFlicker){this.hover(function(){Ext.fly(this,"_internal").addClass(className)},function(){Ext.fly(this,"_internal").removeClass(className)});return this},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,"_internal").addClass(className)},this.dom);this.on("blur",function(){Ext.fly(this,"_internal").removeClass(className)},this.dom);return this},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,"_internal").addClass(className);var d=Ext.getDoc();var fn=function(){Ext.fly(dom,"_internal").removeClass(className);d.removeListener("mouseup",fn)};d.on("mouseup",fn)});return this},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault()}};if(Ext.isArray(eventName)){for(var i=0,len=eventName.length;i<len;i++){this.on(eventName[i],fn)}return this}this.on(eventName,fn);return this},parent:function(selector,returnDom){return this.matchNode("parentNode","parentNode",selector,returnDom)},next:function(selector,returnDom){return this.matchNode("nextSibling","nextSibling",selector,returnDom)},prev:function(selector,returnDom){return this.matchNode("previousSibling","previousSibling",selector,returnDom)},first:function(selector,returnDom){return this.matchNode("nextSibling","firstChild",selector,returnDom)},last:function(selector,returnDom){return this.matchNode("previousSibling","lastChild",selector,returnDom)},matchNode:function(dir,start,selector,returnDom){var n=this.dom[start];while(n){if(n.nodeType==1&&(!selector||Ext.DomQuery.is(n,selector))){return !returnDom?Ext.get(n):n}n=n[dir]}return null},appendChild:function(el){el=Ext.get(el);el.appendTo(this);return this},createChild:function(config,insertBefore,returnDom){config=config||{tag:"div"};if(insertBefore){return Ext.DomHelper.insertBefore(insertBefore,config,returnDom!==true)}return Ext.DomHelper[!this.dom.firstChild?"overwrite":"append"](this.dom,config,returnDom!==true)},appendTo:function(el){el=Ext.getDom(el);el.appendChild(this.dom);return this},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this},insertFirst:function(el,returnDom){el=el||{};if(typeof el=="object"&&!el.nodeType&&!el.dom){return this.createChild(el,this.dom.firstChild,returnDom)}else{el=Ext.getDom(el);this.dom.insertBefore(el,this.dom.firstChild);return !returnDom?Ext.get(el):el}},insertSibling:function(el,where,returnDom){var rt;if(Ext.isArray(el)){for(var i=0,len=el.length;i<len;i++){rt=this.insertSibling(el[i],where,returnDom)}return rt}where=where?where.toLowerCase():"before";el=el||{};var refNode=where=="before"?this.dom:this.dom.nextSibling;if(typeof el=="object"&&!el.nodeType&&!el.dom){if(where=="after"&&!this.dom.nextSibling){rt=Ext.DomHelper.append(this.dom.parentNode,el,!returnDom)}else{rt=Ext.DomHelper[where=="after"?"insertAfter":"insertBefore"](this.dom,el,!returnDom)}}else{rt=this.dom.parentNode.insertBefore(Ext.getDom(el),refNode);if(!returnDom){rt=Ext.get(rt)}}return rt},wrap:function(config,returnDom){if(!config){config={tag:"div"}}var newEl=Ext.DomHelper.insertBefore(this.dom,config,!returnDom);newEl.dom?newEl.dom.appendChild(this.dom):newEl.appendChild(this.dom);return newEl},replace:function(el){el=Ext.get(el);this.insertBefore(el);el.remove();return this},replaceWith:function(el){if(typeof el=="object"&&!el.nodeType&&!el.dom){el=this.insertSibling(el,"before")}else{el=Ext.getDom(el);this.dom.parentNode.insertBefore(el,this.dom)}El.uncache(this.id);this.dom.parentNode.removeChild(this.dom);this.dom=el;this.id=Ext.id(el);El.cache[this.id]=this;return this},insertHtml:function(where,html,returnEl){var el=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el},set:function(o,useSet){var el=this.dom;useSet=typeof useSet=="undefined"?(el.setAttribute?true:false):useSet;for(var attr in o){if(attr=="style"||typeof o[attr]=="function"){continue}if(attr=="cls"){el.className=o["cls"]}else{if(o.hasOwnProperty(attr)){if(useSet){el.setAttribute(attr,o[attr])}else{el[attr]=o[attr]}}}}if(o.style){Ext.DomHelper.applyStyles(el,o.style)}return this},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||Ext.isArray(key)){config={key:key,fn:fn,scope:scope}}else{config={key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}}return new Ext.KeyMap(this,config)},addKeyMap:function(config){return new Ext.KeyMap(this,config)},isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),"scroll")}return this},scroll:function(direction,distance,animate){if(!this.isScrollable()){return }var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true}break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true}break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true}break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true}break}return scrolled},translatePoints:function(x,y){if(typeof x=="object"||Ext.isArray(x)){y=x[1];x=x[0]}var p=this.getStyle("position");var o=this.getXY();var l=parseInt(this.getStyle("left"),10);var t=parseInt(this.getStyle("top"),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft}if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop}return{left:(x-o[0]+l),top:(y-o[1]+t)}},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l,t;if(Ext.isIE&&Ext.isStrict){l=doc.documentElement.scrollLeft||(doc.body.scrollLeft||0);t=doc.documentElement.scrollTop||(doc.body.scrollTop||0)}else{l=window.pageXOffset||(doc.body.scrollLeft||0);t=window.pageYOffset||(doc.body.scrollTop||0)}return{left:l,top:t}}else{return{left:d.scrollLeft,top:d.scrollTop}}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue}var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]);var s=h.toString(16);if(h<16){s="0"+s}color+=s}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c}}else{if(v.length==7){color+=v.substr(1)}}}}return(color.length>5?color.toLowerCase():defaultValue)},boxWrap:function(cls){cls=cls||"x-box";var el=Ext.get(this.insertHtml("beforeBegin",String.format("<div class=\"{0}\">"+El.boxMarkup+"</div>",cls)));el.child("."+cls+"-mc").dom.appendChild(this.dom);return el},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!="undefined"&&type!="unknown"){return d[ns+":"+name]}return d[name]}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name]},getTextWidth:function(text,min,max){return(Ext.util.TextMetrics.measure(this.dom,Ext.value(text,this.dom.innerHTML,true)).width).constrain(min||0,max||1000000)}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.getUpdateManager=ep.getUpdater;ep.un=ep.removeListener;ep.autoBoxAdjust=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v}if(v===undefined){return""}if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||"px")}return v};El.boxMarkup="<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div><div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div><div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>";El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null}if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null}if(ex=El.cache[el]){ex.dom=elm}else{ex=El.cache[el]=new El(elm)}return ex}else{if(el.tagName){if(!(id=el.id)){id=Ext.id(el)}if(ex=El.cache[id]){ex.dom=el}else{ex=El.cache[id]=new El(el)}return ex}else{if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el}return el}else{if(el.isComposite){return el}else{if(Ext.isArray(el)){return El.select(el)}else{if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document}return docEl}}}}}}return null};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i]){delete El.cache[a[i].id||a[i]]}}};El.garbageCollect=function(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThread);return }for(var eid in El.cache){var el=El.cache[eid],d=el.dom;if(!d||!d.parentNode||(!d.offsetParent&&!document.getElementById(eid))){delete El.cache[eid];if(d&&Ext.enableListenerCollection){E.purgeElement(d)}}}};El.collectorThreadId=setInterval(El.garbageCollect,30000);var flyFn=function(){};flyFn.prototype=El.prototype;var _cls=new flyFn();El.Flyweight=function(dom){this.dom=dom};El.Flyweight.prototype=_cls;El.Flyweight.prototype.isFlyweight=true;El._flyweights={};El.fly=function(el,named){named=named||"_global";el=Ext.getDom(el);if(!el){return null}if(!El._flyweights[named]){El._flyweights[named]=new El.Flyweight()}El._flyweights[named].dom=el;return El._flyweights[named]};Ext.get=El.get;Ext.fly=El.fly;var noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){noBoxAdjust["button"]=1}Ext.EventManager.on(window,"unload",function(){delete El.cache;delete El._flyweights})})();
-Ext.enableFx=true;Ext.Fx={slideIn:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";this.fixDisplay();var D=this.getFxRestore();var I=this.getBox();this.setSize(I);var F=this.fxWrap(D.pos,C,"hidden");var K=this.dom.style;K.visibility="visible";K.position="absolute";var E=function(){B.fxUnwrap(F,D.pos,C);K.width=D.width;K.height=D.height;B.afterFx(C)};var J,L={to:[I.x,I.y]},H={to:I.width},G={to:I.height};switch(A.toLowerCase()){case"t":F.setSize(I.width,0);K.left=K.bottom="0";J={height:G};break;case"l":F.setSize(0,I.height);K.right=K.top="0";J={width:H};break;case"r":F.setSize(0,I.height);F.setX(I.right);K.left=K.top="0";J={width:H,points:L};break;case"b":F.setSize(I.width,0);F.setY(I.bottom);K.left=K.top="0";J={height:G,points:L};break;case"tl":F.setSize(0,0);K.right=K.bottom="0";J={width:H,height:G};break;case"bl":F.setSize(0,0);F.setY(I.y+I.height);K.right=K.top="0";J={width:H,height:G,points:L};break;case"br":F.setSize(0,0);F.setXY([I.right,I.bottom]);K.left=K.top="0";J={width:H,height:G,points:L};break;case"tr":F.setSize(0,0);F.setX(I.x+I.width);K.left=K.bottom="0";J={width:H,height:G,points:L};break}this.dom.style.visibility="visible";F.show();arguments.callee.anim=F.fxanim(J,C,"motion",0.5,"easeOut",E)});return this},slideOut:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"t";var I=this.getFxRestore();var D=this.getBox();this.setSize(D);var G=this.fxWrap(I.pos,C,"visible");var F=this.dom.style;F.visibility="visible";F.position="absolute";G.setSize(D);var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.fxUnwrap(G,I.pos,C);F.width=I.width;F.height=I.height;B.afterFx(C)};var E,H={to:0};switch(A.toLowerCase()){case"t":F.left=F.bottom="0";E={height:H};break;case"l":F.right=F.top="0";E={width:H};break;case"r":F.left=F.top="0";E={width:H,points:{to:[D.right,D.y]}};break;case"b":F.left=F.top="0";E={height:H,points:{to:[D.x,D.bottom]}};break;case"tl":F.right=F.bottom="0";E={width:H,height:H};break;case"bl":F.right=F.top="0";E={width:H,height:H,points:{to:[D.x,D.bottom]}};break;case"br":F.left=F.top="0";E={width:H,height:H,points:{to:[D.x+D.width,D.bottom]}};break;case"tr":F.left=F.bottom="0";E={width:H,height:H,points:{to:[D.right,D.y]}};break}arguments.callee.anim=G.fxanim(E,C,"motion",0.5,"easeOut",J)});return this},puff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.show();var F=this.getFxRestore();var D=this.dom.style;var G=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(F.pos);D.width=F.width;D.height=F.height;D.fontSize="";A.afterFx(B)};var E=this.getWidth();var C=this.getHeight();arguments.callee.anim=this.fxanim({width:{to:this.adjustWidth(E*2)},height:{to:this.adjustHeight(C*2)},points:{by:[-(E*0.5),-(C*0.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}},B,"motion",0.5,"easeOut",G)});return this},switchOff:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.clearOpacity();this.clip();var D=this.getFxRestore();var C=this.dom.style;var E=function(){if(B.useDisplay){A.setDisplayed(false)}else{A.hide()}A.clearOpacity();A.setPositioning(D.pos);C.width=D.width;C.height=D.height;A.afterFx(B)};this.fxanim({opacity:{to:0.3}},null,null,0.1,null,function(){this.clearOpacity();(function(){this.fxanim({height:{to:1},points:{by:[0,this.getHeight()*0.5]}},B,"motion",0.3,"easeIn",E)}).defer(100,this)})});return this},highlight:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"ffff9c";var D=C.attr||"backgroundColor";this.clearOpacity();this.show();var G=this.getColor(D);var H=this.dom.style[D];var F=(C.endColor||G)||"ffffff";var I=function(){B.dom.style[D]=H;B.afterFx(C)};var E={};E[D]={from:A,to:F};arguments.callee.anim=this.fxanim(E,C,"color",1,"easeIn",I)});return this},frame:function(A,C,D){var B=this.getFxEl();D=D||{};B.queueFx(D,function(){A=A||"#C3DAF9";if(A.length==6){A="#"+A}C=C||1;var G=D.duration||1;this.show();var E=this.getBox();var F=function(){var H=Ext.getBody().createChild({style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "+A}});var I=Ext.isBorderBox?2:1;H.animate({top:{from:E.y,to:E.y-20},left:{from:E.x,to:E.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:E.height,to:(E.height+(20*I))},width:{from:E.width,to:(E.width+(20*I))}},G,function(){H.remove();if(--C>0){F()}else{B.afterFx(D)}})};F.call(this)});return this},pause:function(C){var A=this.getFxEl();var B={};A.queueFx(B,function(){setTimeout(function(){A.afterFx(B)},C*1000)});return this},fadeIn:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility="visible";var C=B.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:C}},B,null,0.5,"easeOut",function(){if(C==1){this.clearOpacity()}A.afterFx(B)})});return this},fadeOut:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){arguments.callee.anim=this.fxanim({opacity:{to:B.endOpacity||0}},B,null,0.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||B.useDisplay){this.dom.style.display="none"}else{this.dom.style.visibility="hidden"}this.clearOpacity();A.afterFx(B)})});return this},scale:function(A,B,C){this.shift(Ext.apply({},C,{width:A,height:B}));return this},shift:function(B){var A=this.getFxEl();B=B||{};A.queueFx(B,function(){var E={},D=B.width,F=B.height,C=B.x,H=B.y,G=B.opacity;if(D!==undefined){E.width={to:this.adjustWidth(D)}}if(F!==undefined){E.height={to:this.adjustHeight(F)}}if(C!==undefined||H!==undefined){E.points={to:[C!==undefined?C:this.getX(),H!==undefined?H:this.getY()]}}if(G!==undefined){E.opacity={to:G}}if(B.xy!==undefined){E.points={to:B.xy}}arguments.callee.anim=this.fxanim(E,B,"motion",0.35,"easeOut",function(){A.afterFx(B)})});return this},ghost:function(A,C){var B=this.getFxEl();C=C||{};B.queueFx(C,function(){A=A||"b";var H=this.getFxRestore();var E=this.getWidth(),G=this.getHeight();var F=this.dom.style;var J=function(){if(C.useDisplay){B.setDisplayed(false)}else{B.hide()}B.clearOpacity();B.setPositioning(H.pos);F.width=H.width;F.height=H.height;B.afterFx(C)};var D={opacity:{to:0},points:{}},I=D.points;switch(A.toLowerCase()){case"t":I.by=[0,-G];break;case"l":I.by=[-E,0];break;case"r":I.by=[E,0];break;case"b":I.by=[0,G];break;case"tl":I.by=[-E,-G];break;case"bl":I.by=[-E,G];break;case"br":I.by=[E,G];break;case"tr":I.by=[E,-G];break}arguments.callee.anim=this.fxanim(D,C,"motion",0.5,"easeOut",J)});return this},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this},nextFx:function(){var A=this.fxQueue[0];if(A){A.call(this)}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0]},stopFx:function(){if(this.hasActiveFx()){var A=this.fxQueue[0];if(A&&A.anim&&A.anim.isAnimated()){this.fxQueue=[A];A.anim.stop(true)}}return this},beforeFx:function(A){if(this.hasActiveFx()&&!A.concurrent){if(A.stopFx){this.stopFx();return true}return false}return true},hasFxBlock:function(){var A=this.fxQueue;return A&&A[0]&&A[0].block},queueFx:function(C,A){if(!this.fxQueue){this.fxQueue=[]}if(!this.hasFxBlock()){Ext.applyIf(C,this.fxDefaults);if(!C.concurrent){var B=this.beforeFx(C);A.block=C.block;this.fxQueue.push(A);if(B){this.nextFx()}}else{A.call(this)}}return this},fxWrap:function(F,D,C){var B;if(!D.wrap||!(B=Ext.get(D.wrap))){var A;if(D.fixPosition){A=this.getXY()}var E=document.createElement("div");E.style.visibility=C;B=Ext.get(this.dom.parentNode.insertBefore(E,this.dom));B.setPositioning(F);if(B.getStyle("position")=="static"){B.position("relative")}this.clearPositioning("auto");B.clip();B.dom.appendChild(this.dom);if(A){B.setXY(A)}}return B},fxUnwrap:function(A,C,B){this.clearPositioning();this.setPositioning(C);if(!B.wrap){A.dom.parentNode.insertBefore(this.dom,A.dom);A.remove()}},getFxRestore:function(){var A=this.dom.style;return{pos:this.getPositioning(),width:A.width,height:A.height}},afterFx:function(A){if(A.afterStyle){this.applyStyles(A.afterStyle)}if(A.afterCls){this.addClass(A.afterCls)}if(A.remove===true){this.remove()}Ext.callback(A.callback,A.scope,[this]);if(!A.concurrent){this.fxQueue.shift();this.nextFx()}},getFxEl:function(){return Ext.get(this.dom)},fxanim:function(D,E,B,F,C,A){B=B||"run";E=E||{};var G=Ext.lib.Anim[B](this.dom,D,(E.duration||F)||0.35,(E.easing||C)||"easeOut",function(){Ext.callback(A,this)},this);E.anim=G;return G}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx);
-Ext.CompositeElement=function(A){this.elements=[];this.addElements(A)};Ext.CompositeElement.prototype={isComposite:true,addElements:function(E){if(!E){return this}if(typeof E=="string"){E=Ext.Element.selectorFunction(E)}var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=Ext.get(E[C])}return this},fill:function(A){this.elements=[];this.add(A);return this},filter:function(A){var B=[];this.each(function(C){if(C.is(A)){B[B.length]=C.dom}});this.fill(B);return this},invoke:function(E,B){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.Element.prototype[E].apply(D[C],B)}return this},add:function(A){if(typeof A=="string"){this.addElements(Ext.Element.selectorFunction(A))}else{if(A.length!==undefined){this.addElements(A)}else{this.addElements([A])}}return this},each:function(E,D){var C=this.elements;for(var B=0,A=C.length;B<A;B++){if(E.call(D||C[B],C[B],this,B)===false){break}}return this},item:function(A){return this.elements[A]||null},first:function(){return this.item(0)},last:function(){return this.item(this.elements.length-1)},getCount:function(){return this.elements.length},contains:function(A){return this.indexOf(A)!==-1},indexOf:function(A){return this.elements.indexOf(Ext.get(A))},removeElement:function(D,F){if(Ext.isArray(D)){for(var C=0,A=D.length;C<A;C++){this.removeElement(D[C])}return this}var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1&&this.elements[B]){if(F){var E=this.elements[B];if(E.dom){E.remove()}else{Ext.removeNode(E)}}this.elements.splice(B,1)}return this},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){if(A){this.elements[B].replaceWith(C)}else{this.elements.splice(B,1,Ext.get(C))}}return this},clear:function(){this.elements=[]}};(function(){Ext.CompositeElement.createCall=function(B,C){if(!B[C]){B[C]=function(){return this.invoke(C,arguments)}}};for(var A in Ext.Element.prototype){if(typeof Ext.Element.prototype[A]=="function"){Ext.CompositeElement.createCall(Ext.CompositeElement.prototype,A)}}})();Ext.CompositeElementLite=function(A){Ext.CompositeElementLite.superclass.constructor.call(this,A);this.el=new Ext.Element.Flyweight()};Ext.extend(Ext.CompositeElementLite,Ext.CompositeElement,{addElements:function(E){if(E){if(Ext.isArray(E)){this.elements=this.elements.concat(E)}else{var D=this.elements;var B=D.length-1;for(var C=0,A=E.length;C<A;C++){D[++B]=E[C]}}}return this},invoke:function(F,B){var D=this.elements;var E=this.el;for(var C=0,A=D.length;C<A;C++){E.dom=D[C];Ext.Element.prototype[F].apply(E,B)}return this},item:function(A){if(!this.elements[A]){return null}this.el.dom=this.elements[A];return this.el},addListener:function(B,G,F,E){var D=this.elements;for(var C=0,A=D.length;C<A;C++){Ext.EventManager.on(D[C],B,G,F||D[C],E)}return this},each:function(F,E){var C=this.elements;var D=this.el;for(var B=0,A=C.length;B<A;B++){D.dom=C[B];if(F.call(E||D,D,this,B)===false){break}}return this},indexOf:function(A){return this.elements.indexOf(Ext.getDom(A))},replaceElement:function(D,C,A){var B=typeof D=="number"?D:this.indexOf(D);if(B!==-1){C=Ext.getDom(C);if(A){var E=this.elements[B];E.parentNode.insertBefore(C,E);Ext.removeNode(E)}this.elements.splice(B,1,C)}return this}});Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select}Ext.Element.select=function(A,D,B){var C;if(typeof A=="string"){C=Ext.Element.selectorFunction(A,B)}else{if(A.length!==undefined){C=A}else{throw"Invalid selector"}}if(D===true){return new Ext.CompositeElement(C)}else{return new Ext.CompositeElementLite(C)}};Ext.select=Ext.Element.select;
-Ext.data.Connection=function(A){Ext.apply(this,A);this.addEvents("beforerequest","requestcomplete","requestexception");Ext.data.Connection.superclass.constructor.call(this)};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,autoAbort:false,disableCaching:true,request:function(E){if(this.fireEvent("beforerequest",this,E)!==false){var C=E.params;if(typeof C=="function"){C=C.call(E.scope||window,E)}if(typeof C=="object"){C=Ext.urlEncode(C)}if(this.extraParams){var G=Ext.urlEncode(this.extraParams);C=C?(C+"&"+G):G}var B=E.url||this.url;if(typeof B=="function"){B=B.call(E.scope||window,E)}if(E.form){var D=Ext.getDom(E.form);B=B||D.action;var I=D.getAttribute("enctype");if(E.isUpload||(I&&I.toLowerCase()=="multipart/form-data")){return this.doFormUpload(E,C,B)}var H=Ext.lib.Ajax.serializeForm(D);C=C?(C+"&"+H):H}var J=E.headers;if(this.defaultHeaders){J=Ext.apply(J||{},this.defaultHeaders);if(!E.headers){E.headers=J}}var F={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:E},timeout:E.timeout||this.timeout};var A=E.method||this.method||(C?"POST":"GET");if(A=="GET"&&(this.disableCaching&&E.disableCaching!==false)||E.disableCaching===true){B+=(B.indexOf("?")!=-1?"&":"?")+"_dc="+(new Date().getTime())}if(typeof E.autoAbort=="boolean"){if(E.autoAbort){this.abort()}}else{if(this.autoAbort!==false){this.abort()}}if((A=="GET"&&C)||E.xmlData||E.jsonData){B+=(B.indexOf("?")!=-1?"&":"?")+C;C=""}this.transId=Ext.lib.Ajax.request(A,B,F,C,E);return this.transId}else{Ext.callback(E.callback,E.scope,[E,null,null]);return null}},isLoading:function(A){if(A){return Ext.lib.Ajax.isCallInProgress(A)}else{return this.transId?true:false}},abort:function(A){if(A||this.isLoading()){Ext.lib.Ajax.abort(A||this.transId)}},handleResponse:function(A){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestcomplete",this,A,B);Ext.callback(B.success,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,true,A])},handleFailure:function(A,C){this.transId=false;var B=A.argument.options;A.argument=B?B.argument:null;this.fireEvent("requestexception",this,A,B,C);Ext.callback(B.failure,B.scope,[A,B]);Ext.callback(B.callback,B.scope,[B,false,A])},doFormUpload:function(E,A,B){var C=Ext.id();var F=document.createElement("iframe");F.id=C;F.name=C;F.className="x-hidden";if(Ext.isIE){F.src=Ext.SSL_SECURE_URL}document.body.appendChild(F);if(Ext.isIE){document.frames[C].name=C}var D=Ext.getDom(E.form);D.target=C;D.method="POST";D.enctype=D.encoding="multipart/form-data";if(B){D.action=B}var L,J;if(A){L=[];A=Ext.urlDecode(A,false);for(var H in A){if(A.hasOwnProperty(H)){J=document.createElement("input");J.type="hidden";J.name=H;J.value=A[H];D.appendChild(J);L.push(J)}}}function G(){var M={responseText:"",responseXML:null};M.argument=E?E.argument:null;try{var O;if(Ext.isIE){O=F.contentWindow.document}else{O=(F.contentDocument||window.frames[C].document)}if(O&&O.body){M.responseText=O.body.innerHTML}if(O&&O.XMLDocument){M.responseXML=O.XMLDocument}else{M.responseXML=O}}catch(N){}Ext.EventManager.removeListener(F,"load",G,this);this.fireEvent("requestcomplete",this,M,E);Ext.callback(E.success,E.scope,[M,E]);Ext.callback(E.callback,E.scope,[E,true,M]);setTimeout(function(){Ext.removeNode(F)},100)}Ext.EventManager.on(F,"load",G,this);D.submit();if(L){for(var I=0,K=L.length;I<K;I++){Ext.removeNode(L[I])}}}});Ext.Ajax=new Ext.data.Connection({autoAbort:false,serializeForm:function(A){return Ext.lib.Ajax.serializeForm(A)}});
-Ext.Updater=function(B,A){B=Ext.get(B);if(!A&&B.updateManager){return B.updateManager}this.el=B;this.defaultUrl=null;this.addEvents("beforeupdate","update","failure");var C=Ext.Updater.defaults;this.sslBlankUrl=C.sslBlankUrl;this.disableCaching=C.disableCaching;this.indicatorText=C.indicatorText;this.showLoadIndicator=C.showLoadIndicator;this.timeout=C.timeout;this.loadScripts=C.loadScripts;this.transaction=null;this.autoRefreshProcId=null;this.refreshDelegate=this.refresh.createDelegate(this);this.updateDelegate=this.update.createDelegate(this);this.formUpdateDelegate=this.formUpdate.createDelegate(this);if(!this.renderer){this.renderer=new Ext.Updater.BasicRenderer()}Ext.Updater.superclass.constructor.call(this)};Ext.extend(Ext.Updater,Ext.util.Observable,{getEl:function(){return this.el},update:function(B,F,H,D){if(this.fireEvent("beforeupdate",this.el,B,F)!==false){var G=this.method,A,C;if(typeof B=="object"){A=B;B=A.url;F=F||A.params;H=H||A.callback;D=D||A.discardUrl;C=A.scope;if(typeof A.method!="undefined"){G=A.method}if(typeof A.nocache!="undefined"){this.disableCaching=A.nocache}if(typeof A.text!="undefined"){this.indicatorText="<div class=\"loading-indicator\">"+A.text+"</div>"}if(typeof A.scripts!="undefined"){this.loadScripts=A.scripts}if(typeof A.timeout!="undefined"){this.timeout=A.timeout}}this.showLoading();if(!D){this.defaultUrl=B}if(typeof B=="function"){B=B.call(this)}G=G||(F?"POST":"GET");if(G=="GET"){B=this.prepareUrl(B)}var E=Ext.apply(A||{},{url:B,params:(typeof F=="function"&&C)?F.createDelegate(C):F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout*1000),argument:{"options":A,"url":B,"form":null,"callback":H,"scope":C||window,"params":F}});this.transaction=Ext.Ajax.request(E)}},formUpdate:function(C,A,B,D){if(this.fireEvent("beforeupdate",this.el,C,A)!==false){if(typeof A=="function"){A=A.call(this)}C=Ext.getDom(C);this.transaction=Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout*1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});this.showLoading.defer(1,this)}},refresh:function(A){if(this.defaultUrl==null){return }this.update(this.defaultUrl,null,A,true)},startAutoRefresh:function(B,C,D,E,A){if(A){this.update(C||this.defaultUrl,D,E,true)}if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId)}this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[C||this.defaultUrl,D,E,true]),B*1000)},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText)}},prepareUrl:function(B){if(this.disableCaching){var A="_dc="+(new Date().getTime());if(B.indexOf("?")!==-1){B+="&"+A}else{B+="?"+A}}return B},processSuccess:function(A){this.transaction=null;if(A.argument.form&&A.argument.reset){try{A.argument.form.reset()}catch(B){}}if(this.loadScripts){this.renderer.render(this.el,A,this,this.updateComplete.createDelegate(this,[A]))}else{this.renderer.render(this.el,A,this);this.updateComplete(A)}},updateComplete:function(A){this.fireEvent("update",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,true,A,A.argument.options)}},processFailure:function(A){this.transaction=null;this.fireEvent("failure",this.el,A);if(typeof A.argument.callback=="function"){A.argument.callback.call(A.argument.scope,this.el,false,A,A.argument.options)}},setRenderer:function(A){this.renderer=A},getRenderer:function(){return this.renderer},setDefaultUrl:function(A){this.defaultUrl=A},abort:function(){if(this.transaction){Ext.Ajax.abort(this.transaction)}},isUpdating:function(){if(this.transaction){return Ext.Ajax.isLoading(this.transaction)}return false}});Ext.Updater.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"<div class=\"loading-indicator\">Loading...</div>"};Ext.Updater.updateElement=function(D,C,E,B){var A=Ext.get(D).getUpdater();Ext.apply(A,B);A.update(C,E,B?B.callback:null)};Ext.Updater.update=Ext.Updater.updateElement;Ext.Updater.BasicRenderer=function(){};Ext.Updater.BasicRenderer.prototype={render:function(C,A,B,D){C.update(A.responseText,B.loadScripts,D)}};Ext.UpdateManager=Ext.Updater;
-Ext.util.DelayedTask=function(E,D,A){var G=null,F,B;var C=function(){var H=new Date().getTime();if(H-B>=F){clearInterval(G);G=null;E.apply(D,A||[])}};this.delay=function(I,K,J,H){if(G&&I!=F){this.cancel()}F=I;B=new Date().getTime();E=K||E;D=J||D;A=H||A;if(!G){G=setInterval(C,F)}};this.cancel=function(){if(G){clearInterval(G);G=null}}};
+Ext.DomHelper = function() {
+ var L = null;
+ var F = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;
+ var B = /^table|tbody|tr|td$/i;
+ var A = function(T) {
+ if (typeof T == "string") {
+ return T
+ }
+ var O = "";
+ if (Ext.isArray(T)) {
+ for (var R = 0,P = T.length; R < P; R++) {
+ O += A(T[R])
+ }
+ return O
+ }
+ if (!T.tag) {
+ T.tag = "div"
+ }
+ O += "<" + T.tag;
+ for (var N in T) {
+ if (N == "tag" || N == "children" || N == "cn" || N == "html"
+ || typeof T[N] == "function") {
+ continue
+ }
+ if (N == "style") {
+ var S = T["style"];
+ if (typeof S == "function") {
+ S = S.call()
+ }
+ if (typeof S == "string") {
+ O += " style=\"" + S + "\""
+ } else {
+ if (typeof S == "object") {
+ O += " style=\"";
+ for (var Q in S) {
+ if (typeof S[Q] != "function") {
+ O += Q + ":" + S[Q] + ";"
+ }
+ }
+ O += "\""
+ }
+ }
+ } else {
+ if (N == "cls") {
+ O += " class=\"" + T["cls"] + "\""
+ } else {
+ if (N == "htmlFor") {
+ O += " for=\"" + T["htmlFor"] + "\""
+ } else {
+ O += " " + N + "=\"" + T[N] + "\""
+ }
+ }
+ }
+ }
+ if (F.test(T.tag)) {
+ O += "/>"
+ } else {
+ O += ">";
+ var U = T.children || T.cn;
+ if (U) {
+ O += A(U)
+ } else {
+ if (T.html) {
+ O += T.html
+ }
+ }
+ O += "</" + T.tag + ">"
+ }
+ return O
+ };
+ var M = function(T, O) {
+ var S;
+ if (Ext.isArray(T)) {
+ S = document.createDocumentFragment();
+ for (var R = 0,P = T.length; R < P; R++) {
+ M(T[R], S)
+ }
+ } else {
+ if (typeof T == "string)") {
+ S = document.createTextNode(T)
+ } else {
+ S = document.createElement(T.tag || "div");
+ var Q = !!S.setAttribute;
+ for (var N in T) {
+ if (N == "tag" || N == "children" || N == "cn" || N
+ == "html" || N == "style" || typeof T[N]
+ == "function") {
+ continue
+ }
+ if (N == "cls") {
+ S.className = T["cls"]
+ } else {
+ if (Q) {
+ S.setAttribute(N, T[N])
+ } else {
+ S[N] = T[N]
+ }
+ }
+ }
+ Ext.DomHelper.applyStyles(S, T.style);
+ var U = T.children || T.cn;
+ if (U) {
+ M(U, S)
+ } else {
+ if (T.html) {
+ S.innerHTML = T.html
+ }
+ }
+ }
+ }
+ if (O) {
+ O.appendChild(S)
+ }
+ return S
+ };
+ var I = function(S, Q, P, R) {
+ L.innerHTML = [Q,P,R].join("");
+ var N = -1,O = L;
+ while (++N < S) {
+ O = O.firstChild
+ }
+ return O
+ };
+ var J = "<table>",E = "</table>",C = J + "<tbody>",K = "</tbody>" + E,H = C
+ + "<tr>",D = "</tr>" + K;
+ var G = function(N, O, Q, P) {
+ if (!L) {
+ L = document.createElement("div")
+ }
+ var R;
+ var S = null;
+ if (N == "td") {
+ if (O == "afterbegin" || O == "beforeend") {
+ return
+ }
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode
+ } else {
+ S = Q.nextSibling;
+ Q = Q.parentNode
+ }
+ R = I(4, H, P, D)
+ } else {
+ if (N == "tr") {
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode;
+ R = I(3, C, P, K)
+ } else {
+ if (O == "afterend") {
+ S = Q.nextSibling;
+ Q = Q.parentNode;
+ R = I(3, C, P, K)
+ } else {
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(4, H, P, D)
+ }
+ }
+ } else {
+ if (N == "tbody") {
+ if (O == "beforebegin") {
+ S = Q;
+ Q = Q.parentNode;
+ R = I(2, J, P, E)
+ } else {
+ if (O == "afterend") {
+ S = Q.nextSibling;
+ Q = Q.parentNode;
+ R = I(2, J, P, E)
+ } else {
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(3, C, P, K)
+ }
+ }
+ } else {
+ if (O == "beforebegin" || O == "afterend") {
+ return
+ }
+ if (O == "afterbegin") {
+ S = Q.firstChild
+ }
+ R = I(2, J, P, E)
+ }
+ }
+ }
+ Q.insertBefore(R, S);
+ return R
+ };
+ return{useDom:false,markup:function(N) {
+ return A(N)
+ },applyStyles:function(P, Q) {
+ if (Q) {
+ P = Ext.fly(P);
+ if (typeof Q == "string") {
+ var O = /\s?([a-z\-]*)\:\s?([^;]*);?/gi;
+ var R;
+ while ((R = O.exec(Q)) != null) {
+ P.setStyle(R[1], R[2])
+ }
+ } else {
+ if (typeof Q == "object") {
+ for (var N in Q) {
+ P.setStyle(N, Q[N])
+ }
+ } else {
+ if (typeof Q == "function") {
+ Ext.DomHelper.applyStyles(P, Q.call())
+ }
+ }
+ }
+ }
+ },insertHtml:function(P, R, Q) {
+ P = P.toLowerCase();
+ if (R.insertAdjacentHTML) {
+ if (B.test(R.tagName)) {
+ var O;
+ if (O = G(R.tagName.toLowerCase(), P, R, Q)) {
+ return O
+ }
+ }
+ switch (P) {case"beforebegin":R.insertAdjacentHTML("BeforeBegin", Q);return R.previousSibling;case"afterbegin":R.insertAdjacentHTML("AfterBegin", Q);return R.firstChild;case"beforeend":R.insertAdjacentHTML("BeforeEnd", Q);return R.lastChild;case"afterend":R.insertAdjacentHTML("AfterEnd", Q);return R.nextSibling}
+ throw"Illegal insertion point -> \"" + P + "\""
+ }
+ var N = R.ownerDocument.createRange();
+ var S;
+ switch (P) {case"beforebegin":N.setStartBefore(R);S
+ = N.createContextualFragment(Q);R.parentNode.insertBefore(S, R);return R.previousSibling;case"afterbegin":if (R.firstChild) {
+ N.setStartBefore(R.firstChild);
+ S = N.createContextualFragment(Q);
+ R.insertBefore(S, R.firstChild);
+ return R.firstChild
+ } else {
+ R.innerHTML = Q;
+ return R.firstChild
+ }case"beforeend":if (R.lastChild) {
+ N.setStartAfter(R.lastChild);
+ S = N.createContextualFragment(Q);
+ R.appendChild(S);
+ return R.lastChild
+ } else {
+ R.innerHTML = Q;
+ return R.lastChild
+ }case"afterend":N.setStartAfter(R);S
+ = N.createContextualFragment(Q);R.parentNode.insertBefore(S, R.nextSibling);return R.nextSibling}
+ throw"Illegal insertion point -> \"" + P + "\""
+ },insertBefore:function(N, P, O) {
+ return this.doInsert(N, P, O, "beforeBegin")
+ },insertAfter:function(N, P, O) {
+ return this.doInsert(N, P, O, "afterEnd", "nextSibling")
+ },insertFirst:function(N, P, O) {
+ return this.doInsert(N, P, O, "afterBegin", "firstChild")
+ },doInsert:function(Q, S, R, T, P) {
+ Q = Ext.getDom(Q);
+ var O;
+ if (this.useDom) {
+ O = M(S, null);
+ (P === "firstChild" ? Q : Q.parentNode).insertBefore(O, P ? Q[P]
+ : Q)
+ } else {
+ var N = A(S);
+ O = this.insertHtml(T, Q, N)
+ }
+ return R ? Ext.get(O, true) : O
+ },append:function(P, R, Q) {
+ P = Ext.getDom(P);
+ var O;
+ if (this.useDom) {
+ O = M(R, null);
+ P.appendChild(O)
+ } else {
+ var N = A(R);
+ O = this.insertHtml("beforeEnd", P, N)
+ }
+ return Q ? Ext.get(O, true) : O
+ },overwrite:function(N, P, O) {
+ N = Ext.getDom(N);
+ N.innerHTML = A(P);
+ return O ? Ext.get(N.firstChild, true) : N.firstChild
+ },createTemplate:function(O) {
+ var N = A(O);
+ return new Ext.Template(N)
+ }}
+}();
+Ext.Template = function(E) {
+ var B = arguments;
+ if (Ext.isArray(E)) {
+ E = E.join("")
+ } else {
+ if (B.length > 1) {
+ var C = [];
+ for (var D = 0,A = B.length; D < A; D++) {
+ if (typeof B[D] == "object") {
+ Ext.apply(this, B[D])
+ } else {
+ C[C.length] = B[D]
+ }
+ }
+ E = C.join("")
+ }
+ }
+ this.html = E;
+ if (this.compiled) {
+ this.compile()
+ }
+};
+Ext.Template.prototype = {applyTemplate:function(B) {
+ if (this.compiled) {
+ return this.compiled(B)
+ }
+ var A = this.disableFormats !== true;
+ var E = Ext.util.Format,C = this;
+ var D = function(G, I, L, H) {
+ if (L && A) {
+ if (L.substr(0, 5) == "this.") {
+ return C.call(L.substr(5), B[I], B)
+ } else {
+ if (H) {
+ var K = /^\s*['"](.*)["']\s*$/;
+ H = H.split(",");
+ for (var J = 0,F = H.length; J < F; J++) {
+ H[J] = H[J].replace(K, "$1")
+ }
+ H = [B[I]].concat(H)
+ } else {
+ H = [B[I]]
+ }
+ return E[L].apply(E, H)
+ }
+ } else {
+ return B[I] !== undefined ? B[I] : ""
+ }
+ };
+ return this.html.replace(this.re, D)
+},set:function(A, B) {
+ this.html = A;
+ this.compiled = null;
+ if (B) {
+ 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(C, B, A) {
+ return this[C](B, A)
+},insertFirst:function(B, A, C) {
+ return this.doInsert("afterBegin", B, A, C)
+},insertBefore:function(B, A, C) {
+ return this.doInsert("beforeBegin", B, A, C)
+},insertAfter:function(B, A, C) {
+ return this.doInsert("afterEnd", B, A, C)
+},append:function(B, A, C) {
+ return this.doInsert("beforeEnd", B, A, C)
+},doInsert:function(C, E, B, A) {
+ E = Ext.getDom(E);
+ var D = Ext.DomHelper.insertHtml(C, E, this.applyTemplate(B));
+ return A ? Ext.get(D, true) : D
+},overwrite:function(B, A, C) {
+ B = Ext.getDom(B);
+ B.innerHTML = this.applyTemplate(A);
+ return C ? Ext.get(B.firstChild, true) : B.firstChild
+}};
+Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate;
+Ext.DomHelper.Template = Ext.Template;
+Ext.Template.from = function(B, A) {
+ B = Ext.getDom(B);
+ return new Ext.Template(B.value || B.innerHTML, A || "")
+};
+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 A = this.events[arguments[0].toLowerCase()];
+ if (typeof A == "object") {
+ return A.fire.apply(A, Array.prototype.slice.call(arguments, 1))
+ }
+ }
+ return true
+},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(A, C, B,
+ F) {
+ if (typeof A == "object") {
+ F = A;
+ for (var E in F) {
+ if (this.filterOptRe.test(E)) {
+ continue
+ }
+ if (typeof F[E] == "function") {
+ this.addListener(E, F[E], F.scope, F)
+ } else {
+ this.addListener(E, F[E].fn, F[E].scope, F[E])
+ }
+ }
+ return
+ }
+ F = (!F || typeof F == "boolean") ? {} : F;
+ A = A.toLowerCase();
+ var D = this.events[A] || true;
+ if (typeof D == "boolean") {
+ D = new Ext.util.Event(this, A);
+ this.events[A] = D
+ }
+ D.addListener(C, B, F)
+},removeListener:function(A, C, B) {
+ var D = this.events[A.toLowerCase()];
+ if (typeof D == "object") {
+ D.removeListener(C, B)
+ }
+},purgeListeners:function() {
+ for (var A in this.events) {
+ if (typeof this.events[A] == "object") {
+ this.events[A].clearListeners()
+ }
+ }
+},relayEvents:function(F, D) {
+ var E = function(G) {
+ return function() {
+ return this.fireEvent.apply(this, Ext.combine(G, Array.prototype.slice.call(arguments, 0)))
+ }
+ };
+ for (var C = 0,A = D.length; C < A; C++) {
+ var B = D[C];
+ if (!this.events[B]) {
+ this.events[B] = true
+ }
+ F.on(B, E(B), this)
+ }
+},addEvents:function(D) {
+ if (!this.events) {
+ this.events = {}
+ }
+ if (typeof D == "string") {
+ for (var C = 0,A = arguments,B; B = A[C]; C++) {
+ if (!this.events[A[C]]) {
+ D[A[C]] = true
+ }
+ }
+ } else {
+ Ext.applyIf(this.events, D)
+ }
+},hasListener:function(A) {
+ var B = this.events[A];
+ return typeof B == "object" && B.listeners.length > 0
+},suspendEvents:function() {
+ this.eventsSuspended = true
+},resumeEvents:function() {
+ this.eventsSuspended = false
+},getMethodEvent:function(G) {
+ if (!this.methodEvents) {
+ this.methodEvents = {}
+ }
+ var F = this.methodEvents[G];
+ if (!F) {
+ F = {};
+ this.methodEvents[G] = F;
+ F.originalFn = this[G];
+ F.methodName = G;
+ F.before = [];
+ F.after = [];
+ var C,B,D;
+ var E = this;
+ var A = function(J, I, H) {
+ if ((B = J.apply(I || E, H)) !== undefined) {
+ if (typeof B === "object") {
+ if (B.returnValue !== undefined) {
+ C = B.returnValue
+ } else {
+ C = B
+ }
+ if (B.cancel === true) {
+ D = true
+ }
+ } else {
+ if (B === false) {
+ D = true
+ } else {
+ C = B
+ }
+ }
+ }
+ };
+ this[G] = function() {
+ C = B = undefined;
+ D = false;
+ var I = Array.prototype.slice.call(arguments, 0);
+ for (var J = 0,H = F.before.length; J < H; J++) {
+ A(F.before[J].fn, F.before[J].scope, I);
+ if (D) {
+ return C
+ }
+ }
+ if ((B = F.originalFn.apply(E, I)) !== undefined) {
+ C = B
+ }
+ for (var J = 0,H = F.after.length; J < H; J++) {
+ A(F.after[J].fn, F.after[J].scope, I);
+ if (D) {
+ return C
+ }
+ }
+ return C
+ }
+ }
+ return F
+},beforeMethod:function(D, B, A) {
+ var C = this.getMethodEvent(D);
+ C.before.push({fn:B,scope:A})
+},afterMethod:function(D, B, A) {
+ var C = this.getMethodEvent(D);
+ C.after.push({fn:B,scope:A})
+},removeMethodListener:function(F, D, C) {
+ var E = this.getMethodEvent(F);
+ for (var B = 0,A = E.before.length; B < A; B++) {
+ if (E.before[B].fn == D && E.before[B].scope == C) {
+ E.before.splice(B, 1);
+ return
+ }
+ }
+ for (var B = 0,A = E.after.length; B < A; B++) {
+ if (E.after[B].fn == D && E.after[B].scope == C) {
+ E.after.splice(B, 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(C, B, A) {
+ C.fireEvent = C.fireEvent.createInterceptor(B, A)
+};
+Ext.util.Observable.releaseCapture = function(A) {
+ A.fireEvent = Ext.util.Observable.prototype.fireEvent
+};
+(function() {
+ var B = function(F, G, E) {
+ var D = new Ext.util.DelayedTask();
+ return function() {
+ D.delay(G.buffer, F, E, Array.prototype.slice.call(arguments, 0))
+ }
+ };
+ var C = function(F, G, E, D) {
+ return function() {
+ G.removeListener(E, D);
+ return F.apply(D, arguments)
+ }
+ };
+ var A = function(E, F, D) {
+ return function() {
+ var G = Array.prototype.slice.call(arguments, 0);
+ setTimeout(function() {
+ E.apply(D, G)
+ }, F.delay || 10)
+ }
+ };
+ Ext.util.Event = function(E, D) {
+ this.name = D;
+ this.obj = E;
+ this.listeners = []
+ };
+ Ext.util.Event.prototype = {addListener:function(G, F, E) {
+ F = F || this.obj;
+ if (!this.isListening(G, F)) {
+ var D = this.createListener(G, F, E);
+ if (!this.firing) {
+ this.listeners.push(D)
+ } else {
+ this.listeners = this.listeners.slice(0);
+ this.listeners.push(D)
+ }
+ }
+ },createListener:function(G, F, H) {
+ H = H || {};
+ F = F || this.obj;
+ var D = {fn:G,scope:F,options:H};
+ var E = G;
+ if (H.delay) {
+ E = A(E, H, F)
+ }
+ if (H.single) {
+ E = C(E, this, G, F)
+ }
+ if (H.buffer) {
+ E = B(E, H, F)
+ }
+ D.fireFn = E;
+ return D
+ },findListener:function(I, H) {
+ H = H || this.obj;
+ var F = this.listeners;
+ for (var G = 0,D = F.length; G < D; G++) {
+ var E = F[G];
+ if (E.fn == I && E.scope == H) {
+ return G
+ }
+ }
+ return -1
+ },isListening:function(E, D) {
+ return this.findListener(E, D) != -1
+ },removeListener:function(F, E) {
+ var D;
+ if ((D = this.findListener(F, E)) != -1) {
+ if (!this.firing) {
+ this.listeners.splice(D, 1)
+ } else {
+ this.listeners = this.listeners.slice(0);
+ this.listeners.splice(D, 1)
+ }
+ return true
+ }
+ return false
+ },clearListeners:function() {
+ this.listeners = []
+ },fire:function() {
+ var F = this.listeners,I,D = F.length;
+ if (D > 0) {
+ this.firing = true;
+ var G = Array.prototype.slice.call(arguments, 0);
+ for (var H = 0; H < D; H++) {
+ var E = F[H];
+ if (E.fireFn.apply(E.scope || this.obj || window, arguments)
+ === false) {
+ this.firing = false;
+ return false
+ }
+ }
+ this.firing = false
+ }
+ return true
+ }}
+})();
+Ext.EventManager = function() {
+ var T,M,I = false;
+ var K,S,C,O;
+ var L = Ext.lib.Event;
+ var N = Ext.lib.Dom;
+ var B = function() {
+ if (!I) {
+ I = true;
+ Ext.isReady = true;
+ if (M) {
+ clearInterval(M)
+ }
+ if (Ext.isGecko || Ext.isOpera) {
+ document.removeEventListener("DOMContentLoaded", B, false)
+ }
+ if (Ext.isIE) {
+ var D = document.getElementById("ie-deferred-loader");
+ if (D) {
+ D.onreadystatechange = null;
+ D.parentNode.removeChild(D)
+ }
+ }
+ if (T) {
+ T.fire();
+ T.clearListeners()
+ }
+ }
+ };
+ var A = function() {
+ T = new Ext.util.Event();
+ if (Ext.isGecko || Ext.isOpera) {
+ document.addEventListener("DOMContentLoaded", B, false)
+ } else {
+ if (Ext.isIE) {
+ document.write("<s"
+ + "cript id=\"ie-deferred-loader\" defer=\"defer\" src=\"/"
+ + "/:\"></s" + "cript>");
+ var D = document.getElementById("ie-deferred-loader");
+ D.onreadystatechange = function() {
+ if (this.readyState == "complete") {
+ B()
+ }
+ }
+ } else {
+ if (Ext.isSafari) {
+ M = setInterval(function() {
+ var E = document.readyState;
+ if (E == "complete") {
+ B()
+ }
+ }, 10)
+ }
+ }
+ }
+ L.on(window, "load", B)
+ };
+ var R = function(E, U) {
+ var D = new Ext.util.DelayedTask(E);
+ return function(V) {
+ V = new Ext.EventObjectImpl(V);
+ D.delay(U.buffer, E, null, [V])
+ }
+ };
+ var P = function(V, U, D, E) {
+ return function(W) {
+ Ext.EventManager.removeListener(U, D, E);
+ V(W)
+ }
+ };
+ var F = function(D, E) {
+ return function(U) {
+ U = new Ext.EventObjectImpl(U);
+ setTimeout(function() {
+ D(U)
+ }, E.delay || 10)
+ }
+ };
+ var J = function(U, E, D, Y, X) {
+ var Z = (!D || typeof D == "boolean") ? {} : D;
+ Y = Y || Z.fn;
+ X = X || Z.scope;
+ var W = Ext.getDom(U);
+ if (!W) {
+ throw"Error listening for \"" + E + "\". Element \"" + U
+ + "\" doesn't exist."
+ }
+ var V = function(b) {
+ b = Ext.EventObject.setEvent(b);
+ var a;
+ if (Z.delegate) {
+ a = b.getTarget(Z.delegate, W);
+ if (!a) {
+ return
+ }
+ } else {
+ a = b.target
+ }
+ if (Z.stopEvent === true) {
+ b.stopEvent()
+ }
+ if (Z.preventDefault === true) {
+ b.preventDefault()
+ }
+ if (Z.stopPropagation === true) {
+ b.stopPropagation()
+ }
+ if (Z.normalized === false) {
+ b = b.browserEvent
+ }
+ Y.call(X || W, b, a, Z)
+ };
+ if (Z.delay) {
+ V = F(V, Z)
+ }
+ if (Z.single) {
+ V = P(V, W, E, Y)
+ }
+ if (Z.buffer) {
+ V = R(V, Z)
+ }
+ Y._handlers = Y._handlers || [];
+ Y._handlers.push([Ext.id(W),E,V]);
+ L.on(W, E, V);
+ if (E == "mousewheel" && W.addEventListener) {
+ W.addEventListener("DOMMouseScroll", V, false);
+ L.on(window, "unload", function() {
+ W.removeEventListener("DOMMouseScroll", V, false)
+ })
+ }
+ if (E == "mousedown" && W == document) {
+ Ext.EventManager.stoppedMouseDownEvent.addListener(V)
+ }
+ return V
+ };
+ var G = function(E, U, Z) {
+ var D = Ext.id(E),a = Z._handlers,X = Z;
+ if (a) {
+ for (var V = 0,Y = a.length; V < Y; V++) {
+ var W = a[V];
+ if (W[0] == D && W[1] == U) {
+ X = W[2];
+ a.splice(V, 1);
+ break
+ }
+ }
+ }
+ L.un(E, U, X);
+ E = Ext.getDom(E);
+ if (U == "mousewheel" && E.addEventListener) {
+ E.removeEventListener("DOMMouseScroll", X, false)
+ }
+ if (U == "mousedown" && E == document) {
+ Ext.EventManager.stoppedMouseDownEvent.removeListener(X)
+ }
+ };
+ var H = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
+ var Q = {addListener:function(U, D, W, V, E) {
+ if (typeof D == "object") {
+ var Y = D;
+ for (var X in Y) {
+ if (H.test(X)) {
+ continue
+ }
+ if (typeof Y[X] == "function") {
+ J(U, X, Y, Y[X], Y.scope)
+ } else {
+ J(U, X, Y[X])
+ }
+ }
+ return
+ }
+ return J(U, D, E, W, V)
+ },removeListener:function(E, D, U) {
+ return G(E, D, U)
+ },onDocumentReady:function(U, E, D) {
+ if (I) {
+ T.addListener(U, E, D);
+ T.fire();
+ T.clearListeners();
+ return
+ }
+ if (!T) {
+ A()
+ }
+ T.addListener(U, E, D)
+ },onWindowResize:function(U, E, D) {
+ if (!K) {
+ K = new Ext.util.Event();
+ S = new Ext.util.DelayedTask(function() {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ });
+ L.on(window, "resize", this.fireWindowResize, this)
+ }
+ K.addListener(U, E, D)
+ },fireWindowResize:function() {
+ if (K) {
+ if ((Ext.isIE || Ext.isAir) && S) {
+ S.delay(50)
+ } else {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ }
+ }
+ },onTextResize:function(V, U, D) {
+ if (!C) {
+ C = new Ext.util.Event();
+ var E = new Ext.Element(document.createElement("div"));
+ E.dom.className = "x-text-resize";
+ E.dom.innerHTML = "X";
+ E.appendTo(document.body);
+ O = E.dom.offsetHeight;
+ setInterval(function() {
+ if (E.dom.offsetHeight != O) {
+ C.fire(O, O = E.dom.offsetHeight)
+ }
+ }, this.textResizeInterval)
+ }
+ C.addListener(V, U, D)
+ },removeResizeListener:function(E, D) {
+ if (K) {
+ K.removeListener(E, D)
+ }
+ },fireResize:function() {
+ if (K) {
+ K.fire(N.getViewWidth(), N.getViewHeight())
+ }
+ },ieDeferSrc:false,textResizeInterval:50};
+ Q.on = Q.addListener;
+ Q.un = Q.removeListener;
+ Q.stoppedMouseDownEvent = new Ext.util.Event();
+ return Q
+}();
+Ext.onReady = Ext.EventManager.onDocumentReady;
+Ext.onReady(function() {
+ var B = Ext.getBody();
+ if (!B) {
+ return
+ }
+ var A = [Ext.isIE ? "ext-ie " + (Ext.isIE6 ? "ext-ie6" : "ext-ie7")
+ : Ext.isGecko ? "ext-gecko" : Ext.isOpera ? "ext-opera"
+ : Ext.isSafari ? "ext-safari" : ""];
+ if (Ext.isMac) {
+ A.push("ext-mac")
+ }
+ if (Ext.isLinux) {
+ A.push("ext-linux")
+ }
+ if (Ext.isBorderBox) {
+ A.push("ext-border-box")
+ }
+ if (Ext.isStrict) {
+ var C = B.dom.parentNode;
+ if (C) {
+ C.className += " ext-strict"
+ }
+ }
+ B.addClass(A.join(" "))
+});
+Ext.EventObject = function() {
+ var B = Ext.lib.Event;
+ var A = {63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};
+ var C = 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(D) {
+ if (D) {
+ this.setEvent(D.browserEvent || D)
+ }
+ };
+ Ext.EventObjectImpl.prototype
+ = {browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(
+ D) {
+ if (D == this || (D && D.browserEvent)) {
+ return D
+ }
+ this.browserEvent = D;
+ if (D) {
+ this.button = D.button ? C[D.button] : (D.which ? D.which - 1 : -1);
+ if (D.type == "click" && this.button == -1) {
+ this.button = 0
+ }
+ this.type = D.type;
+ this.shiftKey = D.shiftKey;
+ this.ctrlKey = D.ctrlKey || D.metaKey;
+ this.altKey = D.altKey;
+ this.keyCode = D.keyCode;
+ this.charCode = D.charCode;
+ this.target = B.getTarget(D);
+ this.xy = B.getXY(D)
+ } 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)
+ }
+ B.stopEvent(this.browserEvent)
+ }
+ },preventDefault:function() {
+ if (this.browserEvent) {
+ B.preventDefault(this.browserEvent)
+ }
+ },isNavKeyPress:function() {
+ var D = this.keyCode;
+ D = Ext.isSafari ? (A[D] || D) : D;
+ return(D >= 33 && D <= 40) || D == this.RETURN || D == this.TAB || D
+ == this.ESC
+ },isSpecialKey:function() {
+ var D = this.keyCode;
+ return(this.type == "keypress" && this.ctrlKey) || D == 9 || D == 13
+ || D == 40 || D == 27 || (D == 16) || (D == 17) || (D >= 18 && D
+ <= 20) || (D >= 33 && D <= 35) || (D >= 36 && D <= 39) || (D
+ >= 44 && D <= 45)
+ },stopPropagation:function() {
+ if (this.browserEvent) {
+ if (this.browserEvent.type == "mousedown") {
+ Ext.EventManager.stoppedMouseDownEvent.fire(this)
+ }
+ B.stopPropagation(this.browserEvent)
+ }
+ },getCharCode:function() {
+ return this.charCode || this.keyCode
+ },getKey:function() {
+ var D = this.keyCode || this.charCode;
+ return Ext.isSafari ? (A[D] || D) : D
+ },getPageX:function() {
+ return this.xy[0]
+ },getPageY:function() {
+ return this.xy[1]
+ },getTime:function() {
+ if (this.browserEvent) {
+ return B.getTime(this.browserEvent)
+ }
+ return null
+ },getXY:function() {
+ return this.xy
+ },getTarget:function(E, G, D) {
+ var F = Ext.get(this.target);
+ return E ? F.findParent(E, G, D) : (D ? F : this.target)
+ },getRelatedTarget:function() {
+ if (this.browserEvent) {
+ return B.getRelatedTarget(this.browserEvent)
+ }
+ return null
+ },getWheelDelta:function() {
+ var D = this.browserEvent;
+ var E = 0;
+ if (D.wheelDelta) {
+ E = D.wheelDelta / 120
+ } else {
+ if (D.detail) {
+ E = -D.detail / 3
+ }
+ }
+ return E
+ },hasModifier:function() {
+ return((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false
+ },within:function(E, F) {
+ var D = this[F ? "getRelatedTarget" : "getTarget"]();
+ return D && Ext.fly(E).contains(D)
+ },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) || 0.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, unique) {
+ 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(0.01);
+ this.setVisible(true)
+ }
+ this.anim({opacity:{to:(visible ? 1
+ : 0)}}, this.preanim(arguments, 1), null, 0.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) {
+ Ext.EventManager.removeListener(this.dom, eventName, fn);
+ return this
+ },removeAllListeners:function() {
+ E.purgeElement(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, 0.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.isGecko) {
+ 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 * 0.5);y = r(h
+ * 0.5);break;case"t":x = r(w * 0.5);y = 0;break;case"l":x = 0;y
+ = r(h * 0.5);break;case"r":x = w;y = r(h * 0.5);break;case"b":x
+ = r(w * 0.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 += "<span id=\"" + id + "\"></span>";
+ E.onAvailable(id, function() {
+ var hd = document.getElementsByTagName("head")[0];
+ var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;
+ var srcRe = /\ssrc=([\'\"])(.*?)\1/i;
+ var typeRe = /\stype=([\'\"])(.*?)\1/i;
+ var match;
+ while (match = re.exec(html)) {
+ var attrs = match[1];
+ var srcMatch = attrs ? attrs.match(srcRe) : false;
+ if (srcMatch && srcMatch[2]) {
+ var s = document.createElement("script");
+ s.src = srcMatch[2];
+ var typeMatch = attrs.match(typeRe);
+ if (typeMatch && typeMatch[2]) {
+ s.type = typeMatch[2]
+ }
+ hd.appendChild(s)
+ } else {
+ if (match[2] && match[2].length > 0) {
+ if (window.execScript) {
+ window.execScript(match[2])
+ } else {
+ window.eval(match[2])
+ }
+ }
+ }
+ }
+ var el = document.getElementById(id);
+ if (el) {
+ Ext.removeNode(el)
+ }
+ if (typeof callback == "function") {
+ callback()
+ }
+ });
+ dom.innerHTML
+ = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
+ return this
+ },load:function() {
+ var um = this.getUpdater();
+ um.update.apply(um, arguments);
+ return this
+ },getUpdater:function() {
+ if (!this.updateManager) {
+ this.updateManager = new Ext.Updater(this)
+ }
+ return this.updateManager
+ },unselectable:function() {
+ this.dom.unselectable = "on";
+ this.swallowEvent("selectstart", true);
+ this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");
+ this.addClass("x-unselectable");
+ return this
+ },getCenterXY:function() {
+ return this.getAlignToXY(document, "c-c")
+ },center:function(centerIn) {
+ this.alignTo(centerIn || document, "c-c");
+ return this
+ },isBorderBox:function() {
+ return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox
+ },getBox:function(contentBox, local) {
+ var xy;
+ if (!local) {
+ xy = this.getXY()
+ } else {
+ var left = parseInt(this.getStyle("left"), 10) || 0;
+ var top = parseInt(this.getStyle("top"), 10) || 0;
+ xy = [left,top]
+ }
+ var el = this.dom,w = el.offsetWidth,h = el.offsetHeight,bx;
+ if (!contentBox) {
+ bx = {x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h}
+ } else {
+ var l = this.getBorderWidth("l") + this.getPadding("l");
+ var r = this.getBorderWidth("r") + this.getPadding("r");
+ var t = this.getBorderWidth("t") + this.getPadding("t");
+ var b = this.getBorderWidth("b") + this.getPadding("b");
+ bx = {x:xy[0] + l,y:xy[1] + t,0:xy[0] + l,1:xy[1] + t,width:w - (l
+ + r),height:h - (t + b)}
+ }
+ bx.right = bx.x + bx.width;
+ bx.bottom = bx.y + bx.height;
+ return bx
+ },getFrameWidth:function(sides, onlyContentBox) {
+ return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides)
+ + this.getBorderWidth(sides))
+ },setBox:function(box, adjust, animate) {
+ var w = box.width,h = box.height;
+ if ((adjust && !this.autoBoxAdjust) && !this.isBorderBox()) {
+ w -= (this.getBorderWidth("lr") + this.getPadding("lr"));
+ h -= (this.getBorderWidth("tb") + this.getPadding("tb"))
+ }
+ this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2));
+ return this
+ },repaint:function() {
+ var dom = this.dom;
+ this.addClass("x-repaint");
+ setTimeout(function() {
+ Ext.get(dom).removeClass("x-repaint")
+ }, 1);
+ return this
+ },getMargins:function(side) {
+ if (!side) {
+ return{top:parseInt(this.getStyle("margin-top"), 10)
+ || 0,left:parseInt(this.getStyle("margin-left"), 10)
+ || 0,bottom:parseInt(this.getStyle("margin-bottom"), 10)
+ || 0,right:parseInt(this.getStyle("margin-right"), 10) || 0}
+ } else {
+ return this.addStyles(side, El.margins)
+ }
+ },addStyles:function(sides, styles) {
+ var val = 0,v,w;
+ for (var i = 0,len = sides.length; i < len; i++) {
+ v = this.getStyle(styles[sides.charAt(i)]);
+ if (v) {
+ w = parseInt(v, 10);
+ if (w) {
+ val += (w >= 0 ? w : -1 * w)
+ }
+ }
+ }
+ return val
+ },createProxy:function(config, renderTo, matchBox) {
+ config = typeof config == "object" ? config : {tag:"div",cls:config};
+ var proxy;
+ if (renderTo) {
+ proxy = Ext.DomHelper.append(renderTo, config, true)
+ } else {
+ proxy = Ext.DomHelper.insertBefore(this.dom, config, true)
+ }
+ if (matchBox) {
+ proxy.setBox(this.getBox())
+ }
+ return proxy
+ },mask:function(msg, msgCls) {
+ if (this.getStyle("position") == "static") {
+ this.setStyle("position", "relative")
+ }
+ if (this._maskMsg) {
+ this._maskMsg.remove()
+ }
+ if (this._mask) {
+ this._mask.remove()
+ }
+ this._mask = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask"}, true);
+ this.addClass("x-masked");
+ this._mask.setDisplayed(true);
+ if (typeof msg == "string") {
+ this._maskMsg
+ = Ext.DomHelper.append(this.dom, {cls:"ext-el-mask-msg",cn:{tag:"div"}}, true);
+ var mm = this._maskMsg;
+ mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls
+ : "ext-el-mask-msg";
+ mm.dom.firstChild.innerHTML = msg;
+ mm.setDisplayed(true);
+ mm.center(this)
+ }
+ if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle("height")
+ == "auto") {
+ this._mask.setSize(this.dom.clientWidth, this.getHeight())
+ }
+ return this._mask
+ },unmask:function() {
+ if (this._mask) {
+ if (this._maskMsg) {
+ this._maskMsg.remove();
+ delete this._maskMsg
+ }
+ this._mask.remove();
+ delete this._mask
+ }
+ this.removeClass("x-masked")
+ },isMasked:function() {
+ return this._mask && this._mask.isVisible()
+ },createShim:function() {
+ var el = document.createElement("iframe");
+ el.frameBorder = "no";
+ el.className = "ext-shim";
+ if (Ext.isIE && Ext.isSecure) {
+ el.src = Ext.SSL_SECURE_URL
+ }
+ var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom));
+ shim.autoBoxAdjust = false;
+ return shim
+ },remove:function() {
+ Ext.removeNode(this.dom);
+ delete El.cache[this.dom.id]
+ },hover:function(overFn, outFn, scope) {
+ var preOverFn = function(e) {
+ if (!e.within(this, true)) {
+ overFn.apply(scope || this, arguments)
+ }
+ };
+ var preOutFn = function(e) {
+ if (!e.within(this, true)) {
+ outFn.apply(scope || this, arguments)
+ }
+ };
+ this.on("mouseover", preOverFn, this.dom);
+ this.on("mouseout", preOutFn, this.dom);
+ return this
+ },addClassOnOver:function(className, preventFlicker) {
+ this.hover(function() {
+ Ext.fly(this, "_internal").addClass(className)
+ }, function() {
+ Ext.fly(this, "_internal").removeClass(className)
+ });
+ return this
+ },addClassOnFocus:function(className) {
+ this.on("focus", function() {
+ Ext.fly(this, "_internal").addClass(className)
+ }, this.dom);
+ this.on("blur", function() {
+ Ext.fly(this, "_internal").removeClass(className)
+ }, this.dom);
+ return this
+ },addClassOnClick:function(className) {
+ var dom = this.dom;
+ this.on("mousedown", function() {
+ Ext.fly(dom, "_internal").addClass(className);
+ var d = Ext.getDoc();
+ var fn = function() {
+ Ext.fly(dom, "_internal").removeClass(className);
+ d.removeListener("mouseup", fn)
+ };
+ d.on("mouseup", fn)
+ });
+ return this
+ },swallowEvent:function(eventName, preventDefault) {
+ var fn = function(e) {
+ e.stopPropagation();
+ if (preventDefault) {
+ e.preventDefault()
+ }
+ };
+ if (Ext.isArray(eventName)) {
+ for (var i = 0,len = eventName.length; i < len; i++) {
+ this.on(eventName[i], fn)
+ }
+ return this
+ }
+ this.on(eventName, fn);
+ return this
+ },parent:function(selector, returnDom) {
+ return this.matchNode("parentNode", "parentNode", selector, returnDom)
+ },next:function(selector, returnDom) {
+ return this.matchNode("nextSibling", "nextSibling", selector, returnDom)
+ },prev:function(selector, returnDom) {
+ return this.matchNode("previousSibling", "previousSibling", selector, returnDom)
+ },first:function(selector, returnDom) {
+ return this.matchNode("nextSibling", "firstChild", selector, returnDom)
+ },last:function(selector, returnDom) {
+ return this.matchNode("previousSibling", "lastChild", selector, returnDom)
+ },matchNode:function(dir, start, selector, returnDom) {
+ var n = this.dom[start];
+ while (n) {
+ if (n.nodeType == 1 && (!selector
+ || Ext.DomQuery.is(n, selector))) {
+ return !returnDom ? Ext.get(n) : n
+ }
+ n = n[dir]
+ }
+ return null
+ },appendChild:function(el) {
+ el = Ext.get(el);
+ el.appendTo(this);
+ return this
+ },createChild:function(config, insertBefore, returnDom) {
+ config = config || {tag:"div"};
+ if (insertBefore) {
+ return Ext.DomHelper.insertBefore(insertBefore, config, returnDom
+ !== true)
+ }
+ return Ext.DomHelper[!this.dom.firstChild ? "overwrite"
+ : "append"](this.dom, config, returnDom !== true)
+ },appendTo:function(el) {
+ el = Ext.getDom(el);
+ el.appendChild(this.dom);
+ return this
+ },insertBefore:function(el) {
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el);
+ return this
+ },insertAfter:function(el) {
+ el = Ext.getDom(el);
+ el.parentNode.insertBefore(this.dom, el.nextSibling);
+ return this
+ },insertFirst:function(el, returnDom) {
+ el = el || {};
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ return this.createChild(el, this.dom.firstChild, returnDom)
+ } else {
+ el = Ext.getDom(el);
+ this.dom.insertBefore(el, this.dom.firstChild);
+ return !returnDom ? Ext.get(el) : el
+ }
+ },insertSibling:function(el, where, returnDom) {
+ var rt;
+ if (Ext.isArray(el)) {
+ for (var i = 0,len = el.length; i < len; i++) {
+ rt = this.insertSibling(el[i], where, returnDom)
+ }
+ return rt
+ }
+ where = where ? where.toLowerCase() : "before";
+ el = el || {};
+ var refNode = where == "before" ? this.dom : this.dom.nextSibling;
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ if (where == "after" && !this.dom.nextSibling) {
+ rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom)
+ } else {
+ rt = Ext.DomHelper[where == "after" ? "insertAfter"
+ : "insertBefore"](this.dom, el, !returnDom)
+ }
+ } else {
+ rt = this.dom.parentNode.insertBefore(Ext.getDom(el), refNode);
+ if (!returnDom) {
+ rt = Ext.get(rt)
+ }
+ }
+ return rt
+ },wrap:function(config, returnDom) {
+ if (!config) {
+ config = {tag:"div"}
+ }
+ var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom);
+ newEl.dom ? newEl.dom.appendChild(this.dom)
+ : newEl.appendChild(this.dom);
+ return newEl
+ },replace:function(el) {
+ el = Ext.get(el);
+ this.insertBefore(el);
+ el.remove();
+ return this
+ },replaceWith:function(el) {
+ if (typeof el == "object" && !el.nodeType && !el.dom) {
+ el = this.insertSibling(el, "before")
+ } else {
+ el = Ext.getDom(el);
+ this.dom.parentNode.insertBefore(el, this.dom)
+ }
+ El.uncache(this.id);
+ this.dom.parentNode.removeChild(this.dom);
+ this.dom = el;
+ this.id = Ext.id(el);
+ El.cache[this.id] = this;
+ return this
+ },insertHtml:function(where, html, returnEl) {
+ var el = Ext.DomHelper.insertHtml(where, this.dom, html);
+ return returnEl ? Ext.get(el) : el
+ },set:function(o, useSet) {
+ var el = this.dom;
+ useSet = typeof useSet == "undefined" ? (el.setAttribute ? true : false)
+ : useSet;
+ for (var attr in o) {
+ if (attr == "style" || typeof o[attr] == "function") {
+ continue
+ }
+ if (attr == "cls") {
+ el.className = o["cls"]
+ } else {
+ if (o.hasOwnProperty(attr)) {
+ if (useSet) {
+ el.setAttribute(attr, o[attr])
+ } else {
+ el[attr] = o[attr]
+ }
+ }
+ }
+ }
+ if (o.style) {
+ Ext.DomHelper.applyStyles(el, o.style)
+ }
+ return this
+ },addKeyListener:function(key, fn, scope) {
+ var config;
+ if (typeof key != "object" || Ext.isArray(key)) {
+ config = {key:key,fn:fn,scope:scope}
+ } else {
+ config = {key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope}
+ }
+ return new Ext.KeyMap(this, config)
+ },addKeyMap:function(config) {
+ return new Ext.KeyMap(this, config)
+ },isScrollable:function() {
+ var dom = this.dom;
+ return dom.scrollHeight > dom.clientHeight || dom.scrollWidth
+ > dom.clientWidth
+ },scrollTo:function(side, value, animate) {
+ var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop";
+ if (!animate || !A) {
+ this.dom[prop] = value
+ } else {
+ var to = prop == "scrollLeft" ? [value,this.dom.scrollTop]
+ : [this.dom.scrollLeft,value];
+ this.anim({scroll:{"to":to}}, this.preanim(arguments, 2), "scroll")
+ }
+ return this
+ },scroll:function(direction, distance, animate) {
+ if (!this.isScrollable()) {
+ return
+ }
+ var el = this.dom;
+ var l = el.scrollLeft,t = el.scrollTop;
+ var w = el.scrollWidth,h = el.scrollHeight;
+ var cw = el.clientWidth,ch = el.clientHeight;
+ direction = direction.toLowerCase();
+ var scrolled = false;
+ var a = this.preanim(arguments, 2);
+ switch (direction) {case"l":case"left":if (w - l > cw) {
+ var v = Math.min(l + distance, w - cw);
+ this.scrollTo("left", v, a);
+ scrolled = true
+ }break;case"r":case"right":if (l > 0) {
+ var v = Math.max(l - distance, 0);
+ this.scrollTo("left", v, a);
+ scrolled = true
+ }break;case"t":case"top":case"up":if (t > 0) {
+ var v = Math.max(t - distance, 0);
+ this.scrollTo("top", v, a);
+ scrolled = true
+ }break;case"b":case"bottom":case"down":if (h - t > ch) {
+ var v = Math.min(t + distance, h - ch);
+ this.scrollTo("top", v, a);
+ scrolled = true
+ }break}
+ return scrolled
+ },translatePoints:function(x, y) {
+ if (typeof x == "object" || Ext.isArray(x)) {
+ y = x[1];
+ x = x[0]
+ }
+ var p = this.getStyle("position");
+ var o = this.getXY();
+ var l = parseInt(this.getStyle("left"), 10);
+ var t = parseInt(this.getStyle("top"), 10);
+ if (isNaN(l)) {
+ l = (p == "relative") ? 0 : this.dom.offsetLeft
+ }
+ if (isNaN(t)) {
+ t = (p == "relative") ? 0 : this.dom.offsetTop
+ }
+ return{left:(x - o[0] + l),top:(y - o[1] + t)}
+ },getScroll:function() {
+ var d = this.dom,doc = document;
+ if (d == doc || d == doc.body) {
+ var l,t;
+ if (Ext.isIE && Ext.isStrict) {
+ l = doc.documentElement.scrollLeft || (doc.body.scrollLeft
+ || 0);
+ t = doc.documentElement.scrollTop || (doc.body.scrollTop || 0)
+ } else {
+ l = window.pageXOffset || (doc.body.scrollLeft || 0);
+ t = window.pageYOffset || (doc.body.scrollTop || 0)
+ }
+ return{left:l,top:t}
+ } else {
+ return{left:d.scrollLeft,top:d.scrollTop}
+ }
+ },getColor:function(attr, defaultValue, prefix) {
+ var v = this.getStyle(attr);
+ if (!v || v == "transparent" || v == "inherit") {
+ return defaultValue
+ }
+ var color = typeof prefix == "undefined" ? "#" : prefix;
+ if (v.substr(0, 4) == "rgb(") {
+ var rvs = v.slice(4, v.length - 1).split(",");
+ for (var i = 0; i < 3; i++) {
+ var h = parseInt(rvs[i]);
+ var s = h.toString(16);
+ if (h < 16) {
+ s = "0" + s
+ }
+ color += s
+ }
+ } else {
+ if (v.substr(0, 1) == "#") {
+ if (v.length == 4) {
+ for (var i = 1; i < 4; i++) {
+ var c = v.charAt(i);
+ color += c + c
+ }
+ } else {
+ if (v.length == 7) {
+ color += v.substr(1)
+ }
+ }
+ }
+ }
+ return(color.length > 5 ? color.toLowerCase() : defaultValue)
+ },boxWrap:function(cls) {
+ cls = cls || "x-box";
+ var el = Ext.get(this.insertHtml("beforeBegin", String.format("<div class=\"{0}\">"
+ + El.boxMarkup + "</div>", cls)));
+ el.child("." + cls + "-mc").dom.appendChild(this.dom);
+ return el
+ },getAttributeNS:Ext.isIE ? function(ns, name) {
+ var d = this.dom;
+ var type = typeof d[ns + ":" + name];
+ if (type != "undefined" && type != "unknown") {
+ return d[ns + ":" + name]
+ }
+ return d[name]
+ } : function(ns, name) {
+ var d = this.dom;
+ return d.getAttributeNS(ns, name) || d.getAttribute(ns + ":" + name)
+ || d.getAttribute(name) || d[name]
+ },getTextWidth:function(text, min, max) {
+ return(Ext.util.TextMetrics.measure(this.dom, Ext.value(text, this.dom.innerHTML, true)).width).constrain(min
+ || 0, max || 1000000)
+ }};
+ var ep = El.prototype;
+ ep.on = ep.addListener;
+ ep.mon = ep.addListener;
+ ep.getUpdateManager = ep.getUpdater;
+ ep.un = ep.removeListener;
+ ep.autoBoxAdjust = true;
+ El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;
+ El.addUnits = function(v, defaultUnit) {
+ if (v === "" || v == "auto") {
+ return v
+ }
+ if (v === undefined) {
+ return""
+ }
+ if (typeof v == "number" || !El.unitPattern.test(v)) {
+ return v + (defaultUnit || "px")
+ }
+ return v
+ };
+ El.boxMarkup
+ = "<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div><div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div><div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>";
+ El.VISIBILITY = 1;
+ El.DISPLAY = 2;
+ El.borders
+ = {l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};
+ El.paddings
+ = {l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};
+ El.margins
+ = {l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};
+ El.cache = {};
+ var docEl;
+ El.get = function(el) {
+ var ex,elm,id;
+ if (!el) {
+ return null
+ }
+ if (typeof el == "string") {
+ if (!(elm = document.getElementById(el))) {
+ return null
+ }
+ if (ex = El.cache[el]) {
+ ex.dom = elm
+ } else {
+ ex = El.cache[el] = new El(elm)
+ }
+ return ex
+ } else {
+ if (el.tagName) {
+ if (!(id = el.id)) {
+ id = Ext.id(el)
+ }
+ if (ex = El.cache[id]) {
+ ex.dom = el
+ } else {
+ ex = El.cache[id] = new El(el)
+ }
+ return ex
+ } else {
+ if (el instanceof El) {
+ if (el != docEl) {
+ el.dom = document.getElementById(el.id) || el.dom;
+ El.cache[el.id] = el
+ }
+ return el
+ } else {
+ if (el.isComposite) {
+ return el
+ } else {
+ if (Ext.isArray(el)) {
+ return El.select(el)
+ } else {
+ if (el == document) {
+ if (!docEl) {
+ var f = function() {
+ };
+ f.prototype = El.prototype;
+ docEl = new f();
+ docEl.dom = document
+ }
+ return docEl
+ }
+ }
+ }
+ }
+ }
+ }
+ return null
+ };
+ El.uncache = function(el) {
+ for (var i = 0,a = arguments,len = a.length; i < len; i++) {
+ if (a[i]) {
+ delete El.cache[a[i].id || a[i]]
+ }
+ }
+ };
+ El.garbageCollect = function() {
+ if (!Ext.enableGarbageCollector) {
+ clearInterval(El.collectorThread);
+ return
+ }
+ for (var eid in El.cache) {
+ var el = El.cache[eid],d = el.dom;
+ if (!d || !d.parentNode || (!d.offsetParent
+ && !document.getElementById(eid))) {
+ delete El.cache[eid];
+ if (d && Ext.enableListenerCollection) {
+ E.purgeElement(d)
+ }
+ }
+ }
+ };
+ El.collectorThreadId = setInterval(El.garbageCollect, 30000);
+ var flyFn = function() {
+ };
+ flyFn.prototype = El.prototype;
+ var _cls = new flyFn();
+ El.Flyweight = function(dom) {
+ this.dom = dom
+ };
+ El.Flyweight.prototype = _cls;
+ El.Flyweight.prototype.isFlyweight = true;
+ El._flyweights = {};
+ El.fly = function(el, named) {
+ named = named || "_global";
+ el = Ext.getDom(el);
+ if (!el) {
+ return null
+ }
+ if (!El._flyweights[named]) {
+ El._flyweights[named] = new El.Flyweight()
+ }
+ El._flyweights[named].dom = el;
+ return El._flyweights[named]
+ };
+ Ext.get = El.get;
+ Ext.fly = El.fly;
+ var noBoxAdjust = Ext.isStrict ? {select:1} : {input:1,select:1,textarea:1};
+ if (Ext.isIE || Ext.isGecko) {
+ noBoxAdjust["button"] = 1
+ }
+ Ext.EventManager.on(window, "unload", function() {
+ delete El.cache;
+ delete El._flyweights
+ })
+})();
+Ext.enableFx = true;
+Ext.Fx = {slideIn:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "t";
+ this.fixDisplay();
+ var D = this.getFxRestore();
+ var I = this.getBox();
+ this.setSize(I);
+ var F = this.fxWrap(D.pos, C, "hidden");
+ var K = this.dom.style;
+ K.visibility = "visible";
+ K.position = "absolute";
+ var E = function() {
+ B.fxUnwrap(F, D.pos, C);
+ K.width = D.width;
+ K.height = D.height;
+ B.afterFx(C)
+ };
+ var J,L = {to:[I.x,I.y]},H = {to:I.width},G = {to:I.height};
+ switch (A.toLowerCase()) {case"t":F.setSize(I.width, 0);K.left
+ = K.bottom = "0";J
+ = {height:G};break;case"l":F.setSize(0, I.height);K.right
+ = K.top = "0";J
+ = {width:H};break;case"r":F.setSize(0, I.height);F.setX(I.right);K.left
+ = K.top = "0";J
+ = {width:H,points:L};break;case"b":F.setSize(I.width, 0);F.setY(I.bottom);K.left
+ = K.top = "0";J
+ = {height:G,points:L};break;case"tl":F.setSize(0, 0);K.right
+ = K.bottom = "0";J
+ = {width:H,height:G};break;case"bl":F.setSize(0, 0);F.setY(I.y
+ + I.height);K.right = K.top = "0";J
+ = {width:H,height:G,points:L};break;case"br":F.setSize(0, 0);F.setXY([I.right,I.bottom]);K.left
+ = K.top = "0";J
+ = {width:H,height:G,points:L};break;case"tr":F.setSize(0, 0);F.setX(I.x
+ + I.width);K.left = K.bottom = "0";J
+ = {width:H,height:G,points:L};break}
+ this.dom.style.visibility = "visible";
+ F.show();
+ arguments.callee.anim = F.fxanim(J, C, "motion", 0.5, "easeOut", E)
+ });
+ return this
+},slideOut:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "t";
+ var I = this.getFxRestore();
+ var D = this.getBox();
+ this.setSize(D);
+ var G = this.fxWrap(I.pos, C, "visible");
+ var F = this.dom.style;
+ F.visibility = "visible";
+ F.position = "absolute";
+ G.setSize(D);
+ var J = function() {
+ if (C.useDisplay) {
+ B.setDisplayed(false)
+ } else {
+ B.hide()
+ }
+ B.fxUnwrap(G, I.pos, C);
+ F.width = I.width;
+ F.height = I.height;
+ B.afterFx(C)
+ };
+ var E,H = {to:0};
+ switch (A.toLowerCase()) {case"t":F.left = F.bottom = "0";E
+ = {height:H};break;case"l":F.right = F.top = "0";E
+ = {width:H};break;case"r":F.left = F.top = "0";E
+ = {width:H,points:{to:[D.right,D.y]}};break;case"b":F.left
+ = F.top = "0";E
+ = {height:H,points:{to:[D.x,D.bottom]}};break;case"tl":F.right
+ = F.bottom = "0";E = {width:H,height:H};break;case"bl":F.right
+ = F.top = "0";E
+ = {width:H,height:H,points:{to:[D.x,D.bottom]}};break;case"br":F.left
+ = F.top = "0";E = {width:H,height:H,points:{to:[D.x
+ + D.width,D.bottom]}};break;case"tr":F.left = F.bottom = "0";E
+ = {width:H,height:H,points:{to:[D.right,D.y]}};break}
+ arguments.callee.anim = G.fxanim(E, C, "motion", 0.5, "easeOut", J)
+ });
+ return this
+},puff:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.clearOpacity();
+ this.show();
+ var F = this.getFxRestore();
+ var D = this.dom.style;
+ var G = function() {
+ if (B.useDisplay) {
+ A.setDisplayed(false)
+ } else {
+ A.hide()
+ }
+ A.clearOpacity();
+ A.setPositioning(F.pos);
+ D.width = F.width;
+ D.height = F.height;
+ D.fontSize = "";
+ A.afterFx(B)
+ };
+ var E = this.getWidth();
+ var C = this.getHeight();
+ arguments.callee.anim = this.fxanim({width:{to:this.adjustWidth(E
+ * 2)},height:{to:this.adjustHeight(C * 2)},points:{by:[-(E
+ * 0.5),-(C
+ * 0.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}}, B, "motion", 0.5, "easeOut", G)
+ });
+ return this
+},switchOff:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.clearOpacity();
+ this.clip();
+ var D = this.getFxRestore();
+ var C = this.dom.style;
+ var E = function() {
+ if (B.useDisplay) {
+ A.setDisplayed(false)
+ } else {
+ A.hide()
+ }
+ A.clearOpacity();
+ A.setPositioning(D.pos);
+ C.width = D.width;
+ C.height = D.height;
+ A.afterFx(B)
+ };
+ this.fxanim({opacity:{to:0.3}}, null, null, 0.1, null, function() {
+ this.clearOpacity();
+ (function() {
+ this.fxanim({height:{to:1},points:{by:[0,this.getHeight()
+ * 0.5]}}, B, "motion", 0.3, "easeIn", E)
+ }).defer(100, this)
+ })
+ });
+ return this
+},highlight:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "ffff9c";
+ var D = C.attr || "backgroundColor";
+ this.clearOpacity();
+ this.show();
+ var G = this.getColor(D);
+ var H = this.dom.style[D];
+ var F = (C.endColor || G) || "ffffff";
+ var I = function() {
+ B.dom.style[D] = H;
+ B.afterFx(C)
+ };
+ var E = {};
+ E[D] = {from:A,to:F};
+ arguments.callee.anim = this.fxanim(E, C, "color", 1, "easeIn", I)
+ });
+ return this
+},frame:function(A, C, D) {
+ var B = this.getFxEl();
+ D = D || {};
+ B.queueFx(D, function() {
+ A = A || "#C3DAF9";
+ if (A.length == 6) {
+ A = "#" + A
+ }
+ C = C || 1;
+ var G = D.duration || 1;
+ this.show();
+ var E = this.getBox();
+ var F = function() {
+ var H = Ext.getBody().createChild({style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "
+ + A}});
+ var I = Ext.isBorderBox ? 2 : 1;
+ H.animate({top:{from:E.y,to:E.y - 20},left:{from:E.x,to:E.x
+ - 20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:E.height,to:(E.height
+ + (20 * I))},width:{from:E.width,to:(E.width + (20
+ * I))}}, G, function() {
+ H.remove();
+ if (--C > 0) {
+ F()
+ } else {
+ B.afterFx(D)
+ }
+ })
+ };
+ F.call(this)
+ });
+ return this
+},pause:function(C) {
+ var A = this.getFxEl();
+ var B = {};
+ A.queueFx(B, function() {
+ setTimeout(function() {
+ A.afterFx(B)
+ }, C * 1000)
+ });
+ return this
+},fadeIn:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ this.setOpacity(0);
+ this.fixDisplay();
+ this.dom.style.visibility = "visible";
+ var C = B.endOpacity || 1;
+ arguments.callee.anim
+ = this.fxanim({opacity:{to:C}}, B, null, 0.5, "easeOut", function() {
+ if (C == 1) {
+ this.clearOpacity()
+ }
+ A.afterFx(B)
+ })
+ });
+ return this
+},fadeOut:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ arguments.callee.anim = this.fxanim({opacity:{to:B.endOpacity
+ || 0}}, B, null, 0.5, "easeOut", function() {
+ if (this.visibilityMode == Ext.Element.DISPLAY || B.useDisplay) {
+ this.dom.style.display = "none"
+ } else {
+ this.dom.style.visibility = "hidden"
+ }
+ this.clearOpacity();
+ A.afterFx(B)
+ })
+ });
+ return this
+},scale:function(A, B, C) {
+ this.shift(Ext.apply({}, C, {width:A,height:B}));
+ return this
+},shift:function(B) {
+ var A = this.getFxEl();
+ B = B || {};
+ A.queueFx(B, function() {
+ var E = {},D = B.width,F = B.height,C = B.x,H = B.y,G = B.opacity;
+ if (D !== undefined) {
+ E.width = {to:this.adjustWidth(D)}
+ }
+ if (F !== undefined) {
+ E.height = {to:this.adjustHeight(F)}
+ }
+ if (C !== undefined || H !== undefined) {
+ E.points = {to:[C !== undefined ? C : this.getX(),H !== undefined
+ ? H : this.getY()]}
+ }
+ if (G !== undefined) {
+ E.opacity = {to:G}
+ }
+ if (B.xy !== undefined) {
+ E.points = {to:B.xy}
+ }
+ arguments.callee.anim
+ = this.fxanim(E, B, "motion", 0.35, "easeOut", function() {
+ A.afterFx(B)
+ })
+ });
+ return this
+},ghost:function(A, C) {
+ var B = this.getFxEl();
+ C = C || {};
+ B.queueFx(C, function() {
+ A = A || "b";
+ var H = this.getFxRestore();
+ var E = this.getWidth(),G = this.getHeight();
+ var F = this.dom.style;
+ var J = function() {
+ if (C.useDisplay) {
+ B.setDisplayed(false)
+ } else {
+ B.hide()
+ }
+ B.clearOpacity();
+ B.setPositioning(H.pos);
+ F.width = H.width;
+ F.height = H.height;
+ B.afterFx(C)
+ };
+ var D = {opacity:{to:0},points:{}},I = D.points;
+ switch (A.toLowerCase()) {case"t":I.by = [0,-G];break;case"l":I.by
+ = [-E,0];break;case"r":I.by = [E,0];break;case"b":I.by
+ = [0,G];break;case"tl":I.by = [-E,-G];break;case"bl":I.by
+ = [-E,G];break;case"br":I.by = [E,G];break;case"tr":I.by
+ = [E,-G];break}
+ arguments.callee.anim = this.fxanim(D, C, "motion", 0.5, "easeOut", J)
+ });
+ return this
+},syncFx:function() {
+ this.fxDefaults = Ext.apply(this.fxDefaults
+ || {}, {block:false,concurrent:true,stopFx:false});
+ return this
+},sequenceFx:function() {
+ this.fxDefaults = Ext.apply(this.fxDefaults
+ || {}, {block:false,concurrent:false,stopFx:false});
+ return this
+},nextFx:function() {
+ var A = this.fxQueue[0];
+ if (A) {
+ A.call(this)
+ }
+},hasActiveFx:function() {
+ return this.fxQueue && this.fxQueue[0]
+},stopFx:function() {
+ if (this.hasActiveFx()) {
+ var A = this.fxQueue[0];
+ if (A && A.anim && A.anim.isAnimated()) {
+ this.fxQueue = [A];
+ A.anim.stop(true)
+ }
+ }
+ return this
+},beforeFx:function(A) {
+ if (this.hasActiveFx() && !A.concurrent) {
+ if (A.stopFx) {
+ this.stopFx();
+ return true
+ }
+ return false
+ }
+ return true
+},hasFxBlock:function() {
+ var A = this.fxQueue;
+ return A && A[0] && A[0].block
+},queueFx:function(C, A) {
+ if (!this.fxQueue) {
+ this.fxQueue = []
+ }
+ if (!this.hasFxBlock()) {
+ Ext.applyIf(C, this.fxDefaults);
+ if (!C.concurrent) {
+ var B = this.beforeFx(C);
+ A.block = C.block;
+ this.fxQueue.push(A);
+ if (B) {
+ this.nextFx()
+ }
+ } else {
+ A.call(this)
+ }
+ }
+ return this
+},fxWrap:function(F, D, C) {
+ var B;
+ if (!D.wrap || !(B = Ext.get(D.wrap))) {
+ var A;
+ if (D.fixPosition) {
+ A = this.getXY()
+ }
+ var E = document.createElement("div");
+ E.style.visibility = C;
+ B = Ext.get(this.dom.parentNode.insertBefore(E, this.dom));
+ B.setPositioning(F);
+ if (B.getStyle("position") == "static") {
+ B.position("relative")
+ }
+ this.clearPositioning("auto");
+ B.clip();
+ B.dom.appendChild(this.dom);
+ if (A) {
+ B.setXY(A)
+ }
+ }
+ return B
+},fxUnwrap:function(A, C, B) {
+ this.clearPositioning();
+ this.setPositioning(C);
+ if (!B.wrap) {
+ A.dom.parentNode.insertBefore(this.dom, A.dom);
+ A.remove()
+ }
+},getFxRestore:function() {
+ var A = this.dom.style;
+ return{pos:this.getPositioning(),width:A.width,height:A.height}
+},afterFx:function(A) {
+ if (A.afterStyle) {
+ this.applyStyles(A.afterStyle)
+ }
+ if (A.afterCls) {
+ this.addClass(A.afterCls)
+ }
+ if (A.remove === true) {
+ this.remove()
+ }
+ Ext.callback(A.callback, A.scope, [this]);
+ if (!A.concurrent) {
+ this.fxQueue.shift();
+ this.nextFx()
+ }
+},getFxEl:function() {
+ return Ext.get(this.dom)
+},fxanim:function(D, E, B, F, C, A) {
+ B = B || "run";
+ E = E || {};
+ var G = Ext.lib.Anim[B](this.dom, D, (E.duration || F) || 0.35, (E.easing
+ || C) || "easeOut", function() {
+ Ext.callback(A, this)
+ }, this);
+ E.anim = G;
+ return G
+}};
+Ext.Fx.resize = Ext.Fx.scale;
+Ext.apply(Ext.Element.prototype, Ext.Fx);
+Ext.CompositeElement = function(A) {
+ this.elements = [];
+ this.addElements(A)
+};
+Ext.CompositeElement.prototype = {isComposite:true,addElements:function(E) {
+ if (!E) {
+ return this
+ }
+ if (typeof E == "string") {
+ E = Ext.Element.selectorFunction(E)
+ }
+ var D = this.elements;
+ var B = D.length - 1;
+ for (var C = 0,A = E.length; C < A; C++) {
+ D[++B] = Ext.get(E[C])
+ }
+ return this
+},fill:function(A) {
+ this.elements = [];
+ this.add(A);
+ return this
+},filter:function(A) {
+ var B = [];
+ this.each(function(C) {
+ if (C.is(A)) {
+ B[B.length] = C.dom
+ }
+ });
+ this.fill(B);
+ return this
+},invoke:function(E, B) {
+ var D = this.elements;
+ for (var C = 0,A = D.length; C < A; C++) {
+ Ext.Element.prototype[E].apply(D[C], B)
+ }
+ return this
+},add:function(A) {
+ if (typeof A == "string") {
+ this.addElements(Ext.Element.selectorFunction(A))
+ } else {
+ if (A.length !== undefined) {
+ this.addElements(A)
+ } else {
+ this.addElements([A])
+ }
+ }
+ return this
+},each:function(E, D) {
+ var C = this.elements;
+ for (var B = 0,A = C.length; B < A; B++) {
+ if (E.call(D || C[B], C[B], this, B) === false) {
+ break
+ }
+ }
+ return this
+},item:function(A) {
+ return this.elements[A] || null
+},first:function() {
+ return this.item(0)
+},last:function() {
+ return this.item(this.elements.length - 1)
+},getCount:function() {
+ return this.elements.length
+},contains:function(A) {
+ return this.indexOf(A) !== -1
+},indexOf:function(A) {
+ return this.elements.indexOf(Ext.get(A))
+},removeElement:function(D, F) {
+ if (Ext.isArray(D)) {
+ for (var C = 0,A = D.length; C < A; C++) {
+ this.removeElement(D[C])
+ }
+ return this
+ }
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1 && this.elements[B]) {
+ if (F) {
+ var E = this.elements[B];
+ if (E.dom) {
+ E.remove()
+ } else {
+ Ext.removeNode(E)
+ }
+ }
+ this.elements.splice(B, 1)
+ }
+ return this
+},replaceElement:function(D, C, A) {
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1) {
+ if (A) {
+ this.elements[B].replaceWith(C)
+ } else {
+ this.elements.splice(B, 1, Ext.get(C))
+ }
+ }
+ return this
+},clear:function() {
+ this.elements = []
+}};
+(function() {
+ Ext.CompositeElement.createCall = function(B, C) {
+ if (!B[C]) {
+ B[C] = function() {
+ return this.invoke(C, arguments)
+ }
+ }
+ };
+ for (var A in Ext.Element.prototype) {
+ if (typeof Ext.Element.prototype[A] == "function") {
+ Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, A)
+ }
+ }
+})();
+Ext.CompositeElementLite = function(A) {
+ Ext.CompositeElementLite.superclass.constructor.call(this, A);
+ this.el = new Ext.Element.Flyweight()
+};
+Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, {addElements:function(
+ E) {
+ if (E) {
+ if (Ext.isArray(E)) {
+ this.elements = this.elements.concat(E)
+ } else {
+ var D = this.elements;
+ var B = D.length - 1;
+ for (var C = 0,A = E.length; C < A; C++) {
+ D[++B] = E[C]
+ }
+ }
+ }
+ return this
+},invoke:function(F, B) {
+ var D = this.elements;
+ var E = this.el;
+ for (var C = 0,A = D.length; C < A; C++) {
+ E.dom = D[C];
+ Ext.Element.prototype[F].apply(E, B)
+ }
+ return this
+},item:function(A) {
+ if (!this.elements[A]) {
+ return null
+ }
+ this.el.dom = this.elements[A];
+ return this.el
+},addListener:function(B, G, F, E) {
+ var D = this.elements;
+ for (var C = 0,A = D.length; C < A; C++) {
+ Ext.EventManager.on(D[C], B, G, F || D[C], E)
+ }
+ return this
+},each:function(F, E) {
+ var C = this.elements;
+ var D = this.el;
+ for (var B = 0,A = C.length; B < A; B++) {
+ D.dom = C[B];
+ if (F.call(E || D, D, this, B) === false) {
+ break
+ }
+ }
+ return this
+},indexOf:function(A) {
+ return this.elements.indexOf(Ext.getDom(A))
+},replaceElement:function(D, C, A) {
+ var B = typeof D == "number" ? D : this.indexOf(D);
+ if (B !== -1) {
+ C = Ext.getDom(C);
+ if (A) {
+ var E = this.elements[B];
+ E.parentNode.insertBefore(C, E);
+ Ext.removeNode(E)
+ }
+ this.elements.splice(B, 1, C)
+ }
+ return this
+}});
+Ext.CompositeElementLite.prototype.on
+ = Ext.CompositeElementLite.prototype.addListener;
+if (Ext.DomQuery) {
+ Ext.Element.selectorFunction = Ext.DomQuery.select
+}
+Ext.Element.select = function(A, D, B) {
+ var C;
+ if (typeof A == "string") {
+ C = Ext.Element.selectorFunction(A, B)
+ } else {
+ if (A.length !== undefined) {
+ C = A
+ } else {
+ throw"Invalid selector"
+ }
+ }
+ if (D === true) {
+ return new Ext.CompositeElement(C)
+ } else {
+ return new Ext.CompositeElementLite(C)
+ }
+};
+Ext.select = Ext.Element.select;
+Ext.data.Connection = function(A) {
+ Ext.apply(this, A);
+ this.addEvents("beforerequest", "requestcomplete", "requestexception");
+ Ext.data.Connection.superclass.constructor.call(this)
+};
+Ext.extend(Ext.data.Connection, Ext.util.Observable, {timeout:30000,autoAbort:false,disableCaching:true,request:function(
+ E) {
+ if (this.fireEvent("beforerequest", this, E) !== false) {
+ var C = E.params;
+ if (typeof C == "function") {
+ C = C.call(E.scope || window, E)
+ }
+ if (typeof C == "object") {
+ C = Ext.urlEncode(C)
+ }
+ if (this.extraParams) {
+ var G = Ext.urlEncode(this.extraParams);
+ C = C ? (C + "&" + G) : G
+ }
+ var B = E.url || this.url;
+ if (typeof B == "function") {
+ B = B.call(E.scope || window, E)
+ }
+ if (E.form) {
+ var D = Ext.getDom(E.form);
+ B = B || D.action;
+ var I = D.getAttribute("enctype");
+ if (E.isUpload || (I && I.toLowerCase() == "multipart/form-data")) {
+ return this.doFormUpload(E, C, B)
+ }
+ var H = Ext.lib.Ajax.serializeForm(D);
+ C = C ? (C + "&" + H) : H
+ }
+ var J = E.headers;
+ if (this.defaultHeaders) {
+ J = Ext.apply(J || {}, this.defaultHeaders);
+ if (!E.headers) {
+ E.headers = J
+ }
+ }
+ var F = {success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:E},timeout:E.timeout
+ || this.timeout};
+ var A = E.method || this.method || (C ? "POST" : "GET");
+ if (A == "GET" && (this.disableCaching && E.disableCaching !== false)
+ || E.disableCaching === true) {
+ B += (B.indexOf("?") != -1 ? "&" : "?") + "_dc="
+ + (new Date().getTime())
+ }
+ if (typeof E.autoAbort == "boolean") {
+ if (E.autoAbort) {
+ this.abort()
+ }
+ } else {
+ if (this.autoAbort !== false) {
+ this.abort()
+ }
+ }
+ if ((A == "GET" && C) || E.xmlData || E.jsonData) {
+ B += (B.indexOf("?") != -1 ? "&" : "?") + C;
+ C = ""
+ }
+ this.transId = Ext.lib.Ajax.request(A, B, F, C, E);
+ return this.transId
+ } else {
+ Ext.callback(E.callback, E.scope, [E,null,null]);
+ return null
+ }
+},isLoading:function(A) {
+ if (A) {
+ return Ext.lib.Ajax.isCallInProgress(A)
+ } else {
+ return this.transId ? true : false
+ }
+},abort:function(A) {
+ if (A || this.isLoading()) {
+ Ext.lib.Ajax.abort(A || this.transId)
+ }
+},handleResponse:function(A) {
+ this.transId = false;
+ var B = A.argument.options;
+ A.argument = B ? B.argument : null;
+ this.fireEvent("requestcomplete", this, A, B);
+ Ext.callback(B.success, B.scope, [A,B]);
+ Ext.callback(B.callback, B.scope, [B,true,A])
+},handleFailure:function(A, C) {
+ this.transId = false;
+ var B = A.argument.options;
+ A.argument = B ? B.argument : null;
+ this.fireEvent("requestexception", this, A, B, C);
+ Ext.callback(B.failure, B.scope, [A,B]);
+ Ext.callback(B.callback, B.scope, [B,false,A])
+},doFormUpload:function(E, A, B) {
+ var C = Ext.id();
+ var F = document.createElement("iframe");
+ F.id = C;
+ F.name = C;
+ F.className = "x-hidden";
+ if (Ext.isIE) {
+ F.src = Ext.SSL_SECURE_URL
+ }
+ document.body.appendChild(F);
+ if (Ext.isIE) {
+ document.frames[C].name = C
+ }
+ var D = Ext.getDom(E.form);
+ D.target = C;
+ D.method = "POST";
+ D.enctype = D.encoding = "multipart/form-data";
+ if (B) {
+ D.action = B
+ }
+ var L,J;
+ if (A) {
+ L = [];
+ A = Ext.urlDecode(A, false);
+ for (var H in A) {
+ if (A.hasOwnProperty(H)) {
+ J = document.createElement("input");
+ J.type = "hidden";
+ J.name = H;
+ J.value = A[H];
+ D.appendChild(J);
+ L.push(J)
+ }
+ }
+ }
+ function G() {
+ var M = {responseText:"",responseXML:null};
+ M.argument = E ? E.argument : null;
+ try {
+ var O;
+ if (Ext.isIE) {
+ O = F.contentWindow.document
+ } else {
+ O = (F.contentDocument || window.frames[C].document)
+ }
+ if (O && O.body) {
+ M.responseText = O.body.innerHTML
+ }
+ if (O && O.XMLDocument) {
+ M.responseXML = O.XMLDocument
+ } else {
+ M.responseXML = O
+ }
+ } catch(N) {
+ }
+ Ext.EventManager.removeListener(F, "load", G, this);
+ this.fireEvent("requestcomplete", this, M, E);
+ Ext.callback(E.success, E.scope, [M,E]);
+ Ext.callback(E.callback, E.scope, [E,true,M]);
+ setTimeout(function() {
+ Ext.removeNode(F)
+ }, 100)
+ }
+
+ Ext.EventManager.on(F, "load", G, this);
+ D.submit();
+ if (L) {
+ for (var I = 0,K = L.length; I < K; I++) {
+ Ext.removeNode(L[I])
+ }
+ }
+}});
+Ext.Ajax = new Ext.data.Connection({autoAbort:false,serializeForm:function(A) {
+ return Ext.lib.Ajax.serializeForm(A)
+}});
+Ext.Updater = function(B, A) {
+ B = Ext.get(B);
+ if (!A && B.updateManager) {
+ return B.updateManager
+ }
+ this.el = B;
+ this.defaultUrl = null;
+ this.addEvents("beforeupdate", "update", "failure");
+ var C = Ext.Updater.defaults;
+ this.sslBlankUrl = C.sslBlankUrl;
+ this.disableCaching = C.disableCaching;
+ this.indicatorText = C.indicatorText;
+ this.showLoadIndicator = C.showLoadIndicator;
+ this.timeout = C.timeout;
+ this.loadScripts = C.loadScripts;
+ this.transaction = null;
+ this.autoRefreshProcId = null;
+ this.refreshDelegate = this.refresh.createDelegate(this);
+ this.updateDelegate = this.update.createDelegate(this);
+ this.formUpdateDelegate = this.formUpdate.createDelegate(this);
+ if (!this.renderer) {
+ this.renderer = new Ext.Updater.BasicRenderer()
+ }
+ Ext.Updater.superclass.constructor.call(this)
+};
+Ext.extend(Ext.Updater, Ext.util.Observable, {getEl:function() {
+ return this.el
+},update:function(B, F, H, D) {
+ if (this.fireEvent("beforeupdate", this.el, B, F) !== false) {
+ var G = this.method,A,C;
+ if (typeof B == "object") {
+ A = B;
+ B = A.url;
+ F = F || A.params;
+ H = H || A.callback;
+ D = D || A.discardUrl;
+ C = A.scope;
+ if (typeof A.method != "undefined") {
+ G = A.method
+ }
+ if (typeof A.nocache != "undefined") {
+ this.disableCaching = A.nocache
+ }
+ if (typeof A.text != "undefined") {
+ this.indicatorText = "<div class=\"loading-indicator\">"
+ + A.text + "</div>"
+ }
+ if (typeof A.scripts != "undefined") {
+ this.loadScripts = A.scripts
+ }
+ if (typeof A.timeout != "undefined") {
+ this.timeout = A.timeout
+ }
+ }
+ this.showLoading();
+ if (!D) {
+ this.defaultUrl = B
+ }
+ if (typeof B == "function") {
+ B = B.call(this)
+ }
+ G = G || (F ? "POST" : "GET");
+ if (G == "GET") {
+ B = this.prepareUrl(B)
+ }
+ var E = Ext.apply(A || {}, {url:B,params:(typeof F == "function" && C)
+ ? F.createDelegate(C)
+ : F,success:this.processSuccess,failure:this.processFailure,scope:this,callback:undefined,timeout:(this.timeout
+ * 1000),argument:{"options":A,"url":B,"form":null,"callback":H,"scope":C
+ || window,"params":F}});
+ this.transaction = Ext.Ajax.request(E)
+ }
+},formUpdate:function(C, A, B, D) {
+ if (this.fireEvent("beforeupdate", this.el, C, A) !== false) {
+ if (typeof A == "function") {
+ A = A.call(this)
+ }
+ C = Ext.getDom(C);
+ this.transaction
+ = Ext.Ajax.request({form:C,url:A,success:this.processSuccess,failure:this.processFailure,scope:this,timeout:(this.timeout
+ * 1000),argument:{"url":A,"form":C,"callback":D,"reset":B}});
+ this.showLoading.defer(1, this)
+ }
+},refresh:function(A) {
+ if (this.defaultUrl == null) {
+ return
+ }
+ this.update(this.defaultUrl, null, A, true)
+},startAutoRefresh:function(B, C, D, E, A) {
+ if (A) {
+ this.update(C || this.defaultUrl, D, E, true)
+ }
+ if (this.autoRefreshProcId) {
+ clearInterval(this.autoRefreshProcId)
+ }
+ this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [C
+ || this.defaultUrl,D,E,true]), B * 1000)
+},stopAutoRefresh:function() {
+ if (this.autoRefreshProcId) {
+ clearInterval(this.autoRefreshProcId);
+ delete this.autoRefreshProcId
+ }
+},isAutoRefreshing:function() {
+ return this.autoRefreshProcId ? true : false
+},showLoading:function() {
+ if (this.showLoadIndicator) {
+ this.el.update(this.indicatorText)
+ }
+},prepareUrl:function(B) {
+ if (this.disableCaching) {
+ var A = "_dc=" + (new Date().getTime());
+ if (B.indexOf("?") !== -1) {
+ B += "&" + A
+ } else {
+ B += "?" + A
+ }
+ }
+ return B
+},processSuccess:function(A) {
+ this.transaction = null;
+ if (A.argument.form && A.argument.reset) {
+ try {
+ A.argument.form.reset()
+ } catch(B) {
+ }
+ }
+ if (this.loadScripts) {
+ this.renderer.render(this.el, A, this, this.updateComplete.createDelegate(this, [A]))
+ } else {
+ this.renderer.render(this.el, A, this);
+ this.updateComplete(A)
+ }
+},updateComplete:function(A) {
+ this.fireEvent("update", this.el, A);
+ if (typeof A.argument.callback == "function") {
+ A.argument.callback.call(A.argument.scope, this.el, true, A, A.argument.options)
+ }
+},processFailure:function(A) {
+ this.transaction = null;
+ this.fireEvent("failure", this.el, A);
+ if (typeof A.argument.callback == "function") {
+ A.argument.callback.call(A.argument.scope, this.el, false, A, A.argument.options)
+ }
+},setRenderer:function(A) {
+ this.renderer = A
+},getRenderer:function() {
+ return this.renderer
+},setDefaultUrl:function(A) {
+ this.defaultUrl = A
+},abort:function() {
+ if (this.transaction) {
+ Ext.Ajax.abort(this.transaction)
+ }
+},isUpdating:function() {
+ if (this.transaction) {
+ return Ext.Ajax.isLoading(this.transaction)
+ }
+ return false
+}});
+Ext.Updater.defaults
+ = {timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL
+ || "javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:"<div class=\"loading-indicator\">Loading...</div>"};
+Ext.Updater.updateElement = function(D, C, E, B) {
+ var A = Ext.get(D).getUpdater();
+ Ext.apply(A, B);
+ A.update(C, E, B ? B.callback : null)
+};
+Ext.Updater.update = Ext.Updater.updateElement;
+Ext.Updater.BasicRenderer = function() {
+};
+Ext.Updater.BasicRenderer.prototype = {render:function(C, A, B, D) {
+ C.update(A.responseText, B.loadScripts, D)
+}};
+Ext.UpdateManager = Ext.Updater;
+Ext.util.DelayedTask = function(E, D, A) {
+ var G = null,F,B;
+ var C = function() {
+ var H = new Date().getTime();
+ if (H - B >= F) {
+ clearInterval(G);
+ G = null;
+ E.apply(D, A || [])
+ }
+ };
+ this.delay = function(I, K, J, H) {
+ if (G && I != F) {
+ this.cancel()
+ }
+ F = I;
+ B = new Date().getTime();
+ E = K || E;
+ D = J || D;
+ A = H || A;
+ if (!G) {
+ G = setInterval(C, F)
+ }
+ };
+ this.cancel = function() {
+ if (G) {
+ clearInterval(G);
+ G = null
+ }
+ }
+};
diff --git a/samples/src/main/java/gwtquery/samples/public/jquery-1.2.3.js b/samples/src/main/java/gwtquery/samples/public/jquery-1.2.3.js
index ff25a2e1..998511e2 100644
--- a/samples/src/main/java/gwtquery/samples/public/jquery-1.2.3.js
+++ b/samples/src/main/java/gwtquery/samples/public/jquery-1.2.3.js
@@ -1,3408 +1,3596 @@
-(function(){
-/*
- * jQuery 1.2.3 - New Wave Javascript
- *
- * Copyright (c) 2008 John Resig (jquery.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
- * $Rev: 4663 $
- */
-
-// Map over jQuery in case of overwrite
-if ( window.jQuery )
- var _jQuery = window.jQuery;
-
-var jQuery = window.jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.prototype.init( selector, context );
-};
-
-// Map over the $ in case of overwrite
-if ( window.$ )
- var _$ = window.$;
-
-// Map the jQuery namespace to the '$' one
-window.$ = jQuery;
-
-// A simple way to check for HTML strings or ID strings
-// (both of which we optimize for)
-var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
-
-// Is it a simple selector
-var isSimple = /^.[^:#\[\.]*$/;
-
-jQuery.fn = jQuery.prototype = {
- init: function( selector, context ) {
- // Make sure that a selection was provided
- selector = selector || document;
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this[0] = selector;
- this.length = 1;
- return this;
-
- // Handle HTML strings
- } else if ( typeof selector == "string" ) {
- // Are we dealing with HTML string or an ID?
- var match = quickExpr.exec( selector );
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] )
- selector = jQuery.clean( [ match[1] ], context );
-
- // HANDLE: $("#id")
- else {
- var elem = document.getElementById( match[3] );
-
- // Make sure an element was located
- if ( elem )
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id != match[3] )
- return jQuery().find( selector );
-
- // Otherwise, we inject the element directly into the jQuery object
- else {
- this[0] = elem;
- this.length = 1;
- return this;
- }
-
- else
- selector = [];
- }
-
- // HANDLE: $(expr, [context])
- // (which is just equivalent to: $(content).find(expr)
- } else
- return new jQuery( context ).find( selector );
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) )
- return new jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector );
-
- return this.setArray(
- // HANDLE: $(array)
- selector.constructor == Array && selector ||
-
- // HANDLE: $(arraylike)
- // Watch for when an array-like object, contains DOM nodes, is passed in as the selector
- (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) ||
-
- // HANDLE: $(*)
- [ selector ] );
- },
-
- // The current version of jQuery being used
- jquery: "1.2.3",
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- // The number of elements contained in the matched element set
- length: 0,
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == undefined ?
-
- // Return a 'clean' array
- jQuery.makeArray( this ) :
-
- // Return just the object
- this[ num ];
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems ) {
- // Build a new jQuery matched element set
- var ret = jQuery( elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Force the current matched set of elements to become
- // the specified array of elements (destroying the stack in the process)
- // You should use pushStack() in order to do this, but maintain the stack
- setArray: function( elems ) {
- // Resetting the length to 0, then using the native Array push
- // is a super-fast way to populate an object with array-like properties
- this.length = 0;
- Array.prototype.push.apply( this, elems );
-
- return this;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
- var ret = -1;
-
- // Locate the position of the desired element
- this.each(function(i){
- if ( this == elem )
- ret = i;
- });
-
- return ret;
- },
-
- attr: function( name, value, type ) {
- var options = name;
-
- // Look for the case where we're accessing a style value
- if ( name.constructor == String )
- if ( value == undefined )
- return this.length && jQuery[ type || "attr" ]( this[0], name ) || undefined;
-
- else {
- options = {};
- options[ name ] = value;
- }
-
- // Check to see if we're setting style values
- return this.each(function(i){
- // Set all the styles
- for ( name in options )
- jQuery.attr(
- type ?
- this.style :
- this,
- name, jQuery.prop( this, options[ name ], type, i, name )
- );
- });
- },
-
- css: function( key, value ) {
- // ignore negative width and height values
- if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
- value = undefined;
- return this.attr( key, value, "curCSS" );
- },
-
- text: function( text ) {
- if ( typeof text != "object" && text != null )
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
-
- var ret = "";
-
- jQuery.each( text || this, function(){
- jQuery.each( this.childNodes, function(){
- if ( this.nodeType != 8 )
- ret += this.nodeType != 1 ?
- this.nodeValue :
- jQuery.fn.text( [ this ] );
- });
- });
-
- return ret;
- },
-
- wrapAll: function( html ) {
- if ( this[0] )
- // The elements to wrap the target around
- jQuery( html, this[0].ownerDocument )
- .clone()
- .insertBefore( this[0] )
- .map(function(){
- var elem = this;
-
- while ( elem.firstChild )
- elem = elem.firstChild;
-
- return elem;
- })
- .append(this);
-
- return this;
- },
-
- wrapInner: function( html ) {
- return this.each(function(){
- jQuery( this ).contents().wrapAll( html );
- });
- },
-
- wrap: function( html ) {
- return this.each(function(){
- jQuery( this ).wrapAll( html );
- });
- },
-
- append: function() {
- return this.domManip(arguments, true, false, function(elem){
- if (this.nodeType == 1)
- this.appendChild( elem );
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, true, function(elem){
- if (this.nodeType == 1)
- this.insertBefore( elem, this.firstChild );
- });
- },
-
- before: function() {
- return this.domManip(arguments, false, false, function(elem){
- this.parentNode.insertBefore( elem, this );
- });
- },
-
- after: function() {
- return this.domManip(arguments, false, true, function(elem){
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- },
-
- end: function() {
- return this.prevObject || jQuery( [] );
- },
-
- find: function( selector ) {
- var elems = jQuery.map(this, function(elem){
- return jQuery.find( selector, elem );
- });
-
- return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ?
- jQuery.unique( elems ) :
- elems );
- },
-
- clone: function( events ) {
- // Do the clone
- var ret = this.map(function(){
- if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {
- // IE copies events bound via attachEvent when
- // using cloneNode. Calling detachEvent on the
- // clone will also remove the events from the orignal
- // In order to get around this, we use innerHTML.
- // Unfortunately, this means some modifications to
- // attributes in IE that are actually only stored
- // as properties will not be copied (such as the
- // the name attribute on an input).
- var clone = this.cloneNode(true),
- container = document.createElement("div");
- container.appendChild(clone);
- return jQuery.clean([container.innerHTML])[0];
- } else
- return this.cloneNode(true);
- });
-
- // Need to set the expando to null on the cloned set if it exists
- // removeData doesn't work here, IE removes it from the original as well
- // this is primarily for IE but the data expando shouldn't be copied over in any browser
- var clone = ret.find("*").andSelf().each(function(){
- if ( this[ expando ] != undefined )
- this[ expando ] = null;
- });
-
- // Copy the events from the original to the clone
- if ( events === true )
- this.find("*").andSelf().each(function(i){
- if (this.nodeType == 3)
- return;
- var events = jQuery.data( this, "events" );
-
- for ( var type in events )
- for ( var handler in events[ type ] )
- jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
- });
-
- // Return the cloned set
- return ret;
- },
-
- filter: function( selector ) {
- return this.pushStack(
- jQuery.isFunction( selector ) &&
- jQuery.grep(this, function(elem, i){
- return selector.call( elem, i );
- }) ||
-
- jQuery.multiFilter( selector, this ) );
- },
-
- not: function( selector ) {
- if ( selector.constructor == String )
- // test special case where just one selector is passed in
- if ( isSimple.test( selector ) )
- return this.pushStack( jQuery.multiFilter( selector, this, true ) );
- else
- selector = jQuery.multiFilter( selector, this );
-
- var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
- return this.filter(function() {
- return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
- });
- },
-
- add: function( selector ) {
- return !selector ? this : this.pushStack( jQuery.merge(
- this.get(),
- selector.constructor == String ?
- jQuery( selector ).get() :
- selector.length != undefined && (!selector.nodeName || jQuery.nodeName(selector, "form")) ?
- selector : [selector] ) );
- },
-
- is: function( selector ) {
- return selector ?
- jQuery.multiFilter( selector, this ).length > 0 :
- false;
- },
-
- hasClass: function( selector ) {
- return this.is( "." + selector );
- },
-
- val: function( value ) {
- if ( value == undefined ) {
-
- if ( this.length ) {
- var elem = this[0];
-
- // We need to handle select boxes special
- if ( jQuery.nodeName( elem, "select" ) ) {
- var index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type == "select-one";
-
- // Nothing was selected
- if ( index < 0 )
- return null;
-
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
-
- if ( option.selected ) {
- // Get the specifc value for the option
- value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value;
-
- // We don't need an array for one selects
- if ( one )
- return value;
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
-
- // Everything else, we just grab the value
- } else
- return (this[0].value || "").replace(/\r/g, "");
-
- }
-
- return undefined;
- }
-
- return this.each(function(){
- if ( this.nodeType != 1 )
- return;
-
- if ( value.constructor == Array && /radio|checkbox/.test( this.type ) )
- this.checked = (jQuery.inArray(this.value, value) >= 0 ||
- jQuery.inArray(this.name, value) >= 0);
-
- else if ( jQuery.nodeName( this, "select" ) ) {
- var values = value.constructor == Array ?
- value :
- [ value ];
-
- jQuery( "option", this ).each(function(){
- this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
- jQuery.inArray( this.text, values ) >= 0);
- });
-
- if ( !values.length )
- this.selectedIndex = -1;
-
- } else
- this.value = value;
- });
- },
-
- html: function( value ) {
- return value == undefined ?
- (this.length ?
- this[0].innerHTML :
- null) :
- this.empty().append( value );
- },
-
- replaceWith: function( value ) {
- return this.after( value ).remove();
- },
-
- eq: function( i ) {
- return this.slice( i, i + 1 );
- },
-
- slice: function() {
- return this.pushStack( Array.prototype.slice.apply( this, arguments ) );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function(elem, i){
- return callback.call( elem, i, elem );
- }));
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- },
-
- data: function( key, value ){
- var parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value == null ) {
- var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- if ( data == undefined && this.length )
- data = jQuery.data( this[0], key );
-
- return data == null && parts[1] ?
- this.data( parts[0] ) :
- data;
- } else
- return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
- jQuery.data( this, key, value );
- });
- },
-
- removeData: function( key ){
- return this.each(function(){
- jQuery.removeData( this, key );
- });
- },
-
- domManip: function( args, table, reverse, callback ) {
- var clone = this.length > 1, elems;
-
- return this.each(function(){
- if ( !elems ) {
- elems = jQuery.clean( args, this.ownerDocument );
-
- if ( reverse )
- elems.reverse();
- }
-
- var obj = this;
-
- if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) )
- obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") );
-
- var scripts = jQuery( [] );
-
- jQuery.each(elems, function(){
- var elem = clone ?
- jQuery( this ).clone( true )[0] :
- this;
-
- // execute all scripts after the elements have been injected
- if ( jQuery.nodeName( elem, "script" ) ) {
- scripts = scripts.add( elem );
- } else {
- // Remove any inner scripts for later evaluation
- if ( elem.nodeType == 1 )
- scripts = scripts.add( jQuery( "script", elem ).remove() );
-
- // Inject the elements into the document
- callback.call( obj, elem );
- }
- });
-
- scripts.each( evalScript );
- });
- }
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.prototype.init.prototype = jQuery.prototype;
-
-function evalScript( i, elem ) {
- if ( elem.src )
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
-
- else
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
-
- if ( elem.parentNode )
- elem.parentNode.removeChild( elem );
-}
-
-jQuery.extend = jQuery.fn.extend = function() {
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
-
- // Handle a deep copy situation
- if ( target.constructor == Boolean ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target != "object" && typeof target != "function" )
- target = {};
-
- // extend jQuery itself if only one argument is passed
- if ( length == 1 ) {
- target = this;
- i = 0;
- }
-
- for ( ; i < length; i++ )
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null )
- // Extend the base object
- for ( var name in options ) {
- // Prevent never-ending loop
- if ( target === options[ name ] )
- continue;
-
- // Recurse if we're merging object values
- if ( deep && options[ name ] && typeof options[ name ] == "object" && target[ name ] && !options[ name ].nodeType )
- target[ name ] = jQuery.extend( target[ name ], options[ name ] );
-
- // Don't bring in undefined values
- else if ( options[ name ] != undefined )
- target[ name ] = options[ name ];
-
- }
-
- // Return the modified object
- return target;
-};
-
-var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {};
-
-// exclude the following css properties to add px
-var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
-
-jQuery.extend({
- noConflict: function( deep ) {
- window.$ = _$;
-
- if ( deep )
- window.jQuery = _jQuery;
-
- return jQuery;
- },
-
- // See test/unit/core.js for details concerning this function.
- isFunction: function( fn ) {
- return !!fn && typeof fn != "string" && !fn.nodeName &&
- fn.constructor != Array && /function/i.test( fn + "" );
- },
-
- // check if an element is in a (or is an) XML document
- isXMLDoc: function( elem ) {
- return elem.documentElement && !elem.body ||
- elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
- },
-
- // Evalulates a script in a global context
- globalEval: function( data ) {
- data = jQuery.trim( data );
-
- if ( data ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
-
- script.type = "text/javascript";
- if ( jQuery.browser.msie )
- script.text = data;
- else
- script.appendChild( document.createTextNode( data ) );
-
- head.appendChild( script );
- head.removeChild( script );
- }
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
- },
-
- cache: {},
-
- data: function( elem, name, data ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // Compute a unique ID for the element
- if ( !id )
- id = elem[ expando ] = ++uuid;
-
- // Only generate the data cache if we're
- // trying to access or manipulate it
- if ( name && !jQuery.cache[ id ] )
- jQuery.cache[ id ] = {};
-
- // Prevent overriding the named cache with undefined values
- if ( data != undefined )
- jQuery.cache[ id ][ name ] = data;
-
- // Return the named cache data, or the ID for the element
- return name ?
- jQuery.cache[ id ][ name ] :
- id;
- },
-
- removeData: function( elem, name ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // If we want to remove a specific section of the element's data
- if ( name ) {
- if ( jQuery.cache[ id ] ) {
- // Remove the section of cache data
- delete jQuery.cache[ id ][ name ];
-
- // If we've removed all the data, remove the element's cache
- name = "";
-
- for ( name in jQuery.cache[ id ] )
- break;
-
- if ( !name )
- jQuery.removeData( elem );
- }
-
- // Otherwise, we want to remove all of the element's data
- } else {
- // Clean up the element expando
- try {
- delete elem[ expando ];
- } catch(e){
- // IE has trouble directly removing the expando
- // but it's ok with using removeAttribute
- if ( elem.removeAttribute )
- elem.removeAttribute( expando );
- }
-
- // Completely remove the data cache
- delete jQuery.cache[ id ];
- }
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- if ( args ) {
- if ( object.length == undefined ) {
- for ( var name in object )
- if ( callback.apply( object[ name ], args ) === false )
- break;
- } else
- for ( var i = 0, length = object.length; i < length; i++ )
- if ( callback.apply( object[ i ], args ) === false )
- break;
-
- // A special, fast, case for the most common use of each
- } else {
- if ( object.length == undefined ) {
- for ( var name in object )
- if ( callback.call( object[ name ], name, object[ name ] ) === false )
- break;
- } else
- for ( var i = 0, length = object.length, value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
- }
-
- return object;
- },
-
- prop: function( elem, value, type, i, name ) {
- // Handle executable functions
- if ( jQuery.isFunction( value ) )
- value = value.call( elem, i );
-
- // Handle passing in a number to a CSS property
- return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ?
- value + "px" :
- value;
- },
-
- className: {
- // internal only, use addClass("class")
- add: function( elem, classNames ) {
- jQuery.each((classNames || "").split(/\s+/), function(i, className){
- if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
- elem.className += (elem.className ? " " : "") + className;
- });
- },
-
- // internal only, use removeClass("class")
- remove: function( elem, classNames ) {
- if (elem.nodeType == 1)
- elem.className = classNames != undefined ?
- jQuery.grep(elem.className.split(/\s+/), function(className){
- return !jQuery.className.has( classNames, className );
- }).join(" ") :
- "";
- },
-
- // internal only, use is(".class")
- has: function( elem, className ) {
- return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
- }
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( var name in options )
- elem.style[ name ] = old[ name ];
- },
-
- css: function( elem, name, force ) {
- if ( name == "width" || name == "height" ) {
- var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
-
- function getWH() {
- val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
- var padding = 0, border = 0;
- jQuery.each( which, function() {
- padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
- border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
- });
- val -= Math.round(padding + border);
- }
-
- if ( jQuery(elem).is(":visible") )
- getWH();
- else
- jQuery.swap( elem, props, getWH );
-
- return Math.max(0, val);
- }
-
- return jQuery.curCSS( elem, name, force );
- },
-
- curCSS: function( elem, name, force ) {
- var ret;
-
- // A helper method for determining if an element's values are broken
- function color( elem ) {
- if ( !jQuery.browser.safari )
- return false;
-
- var ret = document.defaultView.getComputedStyle( elem, null );
- return !ret || ret.getPropertyValue("color") == "";
- }
-
- // We need to handle opacity special in IE
- if ( name == "opacity" && jQuery.browser.msie ) {
- ret = jQuery.attr( elem.style, "opacity" );
-
- return ret == "" ?
- "1" :
- ret;
- }
- // Opera sometimes will give the wrong display answer, this fixes it, see #2037
- if ( jQuery.browser.opera && name == "display" ) {
- var save = elem.style.outline;
- elem.style.outline = "0 solid black";
- elem.style.outline = save;
- }
-
- // Make sure we're using the right name for getting the float value
- if ( name.match( /float/i ) )
- name = styleFloat;
-
- if ( !force && elem.style && elem.style[ name ] )
- ret = elem.style[ name ];
-
- else if ( document.defaultView && document.defaultView.getComputedStyle ) {
-
- // Only "float" is needed here
- if ( name.match( /float/i ) )
- name = "float";
-
- name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
-
- var getComputedStyle = document.defaultView.getComputedStyle( elem, null );
-
- if ( getComputedStyle && !color( elem ) )
- ret = getComputedStyle.getPropertyValue( name );
-
- // If the element isn't reporting its values properly in Safari
- // then some display: none elements are involved
- else {
- var swap = [], stack = [];
-
- // Locate all of the parent display: none elements
- for ( var a = elem; a && color(a); a = a.parentNode )
- stack.unshift(a);
-
- // Go through and make them visible, but in reverse
- // (It would be better if we knew the exact display type that they had)
- for ( var i = 0; i < stack.length; i++ )
- if ( color( stack[ i ] ) ) {
- swap[ i ] = stack[ i ].style.display;
- stack[ i ].style.display = "block";
- }
-
- // Since we flip the display style, we have to handle that
- // one special, otherwise get the value
- ret = name == "display" && swap[ stack.length - 1 ] != null ?
- "none" :
- ( getComputedStyle && getComputedStyle.getPropertyValue( name ) ) || "";
-
- // Finally, revert the display styles back
- for ( var i = 0; i < swap.length; i++ )
- if ( swap[ i ] != null )
- stack[ i ].style.display = swap[ i ];
- }
-
- // We should always get a number back from opacity
- if ( name == "opacity" && ret == "" )
- ret = "1";
-
- } else if ( elem.currentStyle ) {
- var camelCase = name.replace(/\-(\w)/g, function(all, letter){
- return letter.toUpperCase();
- });
-
- ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
- // Remember the original values
- var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- elem.runtimeStyle.left = elem.currentStyle.left;
- elem.style.left = ret || 0;
- ret = elem.style.pixelLeft + "px";
-
- // Revert the changed values
- elem.style.left = style;
- elem.runtimeStyle.left = runtimeStyle;
- }
- }
-
- return ret;
- },
-
- clean: function( elems, context ) {
- var ret = [];
- context = context || document;
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if (typeof context.createElement == 'undefined')
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
-
- jQuery.each(elems, function(i, elem){
- if ( !elem )
- return;
-
- if ( elem.constructor == Number )
- elem = elem.toString();
-
- // Convert html string into DOM nodes
- if ( typeof elem == "string" ) {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
- return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
- all :
- front + "></" + tag + ">";
- });
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div");
-
- var wrap =
- // option or optgroup
- !tags.indexOf("<opt") &&
- [ 1, "<select multiple='multiple'>", "</select>" ] ||
-
- !tags.indexOf("<leg") &&
- [ 1, "<fieldset>", "</fieldset>" ] ||
-
- tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
- [ 1, "<table>", "</table>" ] ||
-
- !tags.indexOf("<tr") &&
- [ 2, "<table><tbody>", "</tbody></table>" ] ||
-
- // <thead> matched above
- (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
- [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
-
- !tags.indexOf("<col") &&
- [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
-
- // IE can't serialize <link> and <script> tags normally
- jQuery.browser.msie &&
- [ 1, "div<div>", "</div>" ] ||
-
- [ 0, "", "" ];
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( wrap[0]-- )
- div = div.lastChild;
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( jQuery.browser.msie ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
- div.childNodes :
- [];
-
- for ( var j = tbody.length - 1; j >= 0 ; --j )
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( /^\s/.test( elem ) )
- div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-
- }
-
- elem = jQuery.makeArray( div.childNodes );
- }
-
- if ( elem.length === 0 && (!jQuery.nodeName( elem, "form" ) && !jQuery.nodeName( elem, "select" )) )
- return;
-
- if ( elem[0] == undefined || jQuery.nodeName( elem, "form" ) || elem.options )
- ret.push( elem );
-
- else
- ret = jQuery.merge( ret, elem );
-
- });
-
- return ret;
- },
-
- attr: function( elem, name, value ) {
- // don't set attributes on text and comment nodes
- if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
- return undefined;
-
- var fix = jQuery.isXMLDoc( elem ) ?
- {} :
- jQuery.props;
-
- // Safari mis-reports the default selected property of a hidden option
- // Accessing the parent's selectedIndex property fixes it
- if ( name == "selected" && jQuery.browser.safari )
- elem.parentNode.selectedIndex;
-
- // Certain attributes only work when accessed via the old DOM 0 way
- if ( fix[ name ] ) {
- if ( value != undefined )
- elem[ fix[ name ] ] = value;
-
- return elem[ fix[ name ] ];
-
- } else if ( jQuery.browser.msie && name == "style" )
- return jQuery.attr( elem.style, "cssText", value );
-
- else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName( elem, "form" ) && (name == "action" || name == "method") )
- return elem.getAttributeNode( name ).nodeValue;
-
- // IE elem.getAttribute passes even for style
- else if ( elem.tagName ) {
-
- if ( value != undefined ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
- throw "type property can't be changed";
-
- // convert the value to a string (all browsers do this but IE) see #1070
- elem.setAttribute( name, "" + value );
- }
-
- if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) )
- return elem.getAttribute( name, 2 );
-
- return elem.getAttribute( name );
-
- // elem is actually elem.style ... set the style
- } else {
- // IE actually uses filters for opacity
- if ( name == "opacity" && jQuery.browser.msie ) {
- if ( value != undefined ) {
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- elem.zoom = 1;
-
- // Set the alpha filter to set the opacity
- elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
- (parseFloat( value ).toString() == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
- }
-
- return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
- (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() :
- "";
- }
-
- name = name.replace(/-([a-z])/ig, function(all, letter){
- return letter.toUpperCase();
- });
-
- if ( value != undefined )
- elem[ name ] = value;
-
- return elem[ name ];
- }
- },
-
- trim: function( text ) {
- return (text || "").replace( /^\s+|\s+$/g, "" );
- },
-
- makeArray: function( array ) {
- var ret = [];
-
- // Need to use typeof to fight Safari childNodes crashes
- if ( typeof array != "array" )
- for ( var i = 0, length = array.length; i < length; i++ )
- ret.push( array[ i ] );
- else
- ret = array.slice( 0 );
-
- return ret;
- },
-
- inArray: function( elem, array ) {
- for ( var i = 0, length = array.length; i < length; i++ )
- if ( array[ i ] == elem )
- return i;
-
- return -1;
- },
-
- merge: function( first, second ) {
- // We have to loop this way because IE & Opera overwrite the length
- // expando of getElementsByTagName
-
- // Also, we need to make sure that the correct elements are being returned
- // (IE returns comment nodes in a '*' query)
- if ( jQuery.browser.msie ) {
- for ( var i = 0; second[ i ]; i++ )
- if ( second[ i ].nodeType != 8 )
- first.push( second[ i ] );
-
- } else
- for ( var i = 0; second[ i ]; i++ )
- first.push( second[ i ] );
-
- return first;
- },
-
- unique: function( array ) {
- var ret = [], done = {};
-
- try {
-
- for ( var i = 0, length = array.length; i < length; i++ ) {
- var id = jQuery.data( array[ i ] );
-
- if ( !done[ id ] ) {
- done[ id ] = true;
- ret.push( array[ i ] );
- }
- }
-
- } catch( e ) {
- ret = array;
- }
-
- return ret;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [];
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ )
- if ( !inv && callback( elems[ i ], i ) || inv && !callback( elems[ i ], i ) )
- ret.push( elems[ i ] );
-
- return ret;
- },
-
- map: function( elems, callback ) {
- var ret = [];
-
- // Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- var value = callback( elems[ i ], i );
-
- if ( value !== null && value != undefined ) {
- if ( value.constructor != Array )
- value = [ value ];
-
- ret = ret.concat( value );
- }
- }
-
- return ret;
- }
-});
-
-var userAgent = navigator.userAgent.toLowerCase();
-
-// Figure out what browser is being used
-jQuery.browser = {
- version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
- safari: /webkit/.test( userAgent ),
- opera: /opera/.test( userAgent ),
- msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
- mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
-};
-
-var styleFloat = jQuery.browser.msie ?
- "styleFloat" :
- "cssFloat";
-
-jQuery.extend({
- // Check to see if the W3C box model is being used
- boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
-
- props: {
- "for": "htmlFor",
- "class": "className",
- "float": styleFloat,
- cssFloat: styleFloat,
- styleFloat: styleFloat,
- innerHTML: "innerHTML",
- className: "className",
- value: "value",
- disabled: "disabled",
- checked: "checked",
- readonly: "readOnly",
- selected: "selected",
- maxlength: "maxLength",
- selectedIndex: "selectedIndex",
- defaultValue: "defaultValue",
- tagName: "tagName",
- nodeName: "nodeName"
- }
-});
-
-jQuery.each({
- parent: function(elem){return elem.parentNode;},
- parents: function(elem){return jQuery.dir(elem,"parentNode");},
- next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
- prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
- nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
- prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
- siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
- children: function(elem){return jQuery.sibling(elem.firstChild);},
- contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
-}, function(name, fn){
- jQuery.fn[ name ] = function( selector ) {
- var ret = jQuery.map( this, fn );
-
- if ( selector && typeof selector == "string" )
- ret = jQuery.multiFilter( selector, ret );
-
- return this.pushStack( jQuery.unique( ret ) );
- };
-});
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function(name, original){
- jQuery.fn[ name ] = function() {
- var args = arguments;
-
- return this.each(function(){
- for ( var i = 0, length = args.length; i < length; i++ )
- jQuery( args[ i ] )[ original ]( this );
- });
- };
-});
-
-jQuery.each({
- removeAttr: function( name ) {
- jQuery.attr( this, name, "" );
- if (this.nodeType == 1)
- this.removeAttribute( name );
- },
-
- addClass: function( classNames ) {
- jQuery.className.add( this, classNames );
- },
-
- removeClass: function( classNames ) {
- jQuery.className.remove( this, classNames );
- },
-
- toggleClass: function( classNames ) {
- jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" : "add" ]( this, classNames );
- },
-
- remove: function( selector ) {
- if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) {
- // Prevent memory leaks
- jQuery( "*", this ).add(this).each(function(){
- jQuery.event.remove(this);
- jQuery.removeData(this);
- });
- if (this.parentNode)
- this.parentNode.removeChild( this );
- }
- },
-
- empty: function() {
- // Remove element nodes and prevent memory leaks
- jQuery( ">*", this ).remove();
-
- // Remove any remaining nodes
- while ( this.firstChild )
- this.removeChild( this.firstChild );
- }
-}, function(name, fn){
- jQuery.fn[ name ] = function(){
- return this.each( fn, arguments );
- };
-});
-
-jQuery.each([ "Height", "Width" ], function(i, name){
- var type = name.toLowerCase();
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- return this[0] == window ?
- // Opera reports document.body.client[Width/Height] properly in both quirks and standards
- jQuery.browser.opera && document.body[ "client" + name ] ||
-
- // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
- jQuery.browser.safari && window[ "inner" + name ] ||
-
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] || document.body[ "client" + name ] :
-
- // Get document width or height
- this[0] == document ?
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- Math.max(
- Math.max(document.body["scroll" + name], document.documentElement["scroll" + name]),
- Math.max(document.body["offset" + name], document.documentElement["offset" + name])
- ) :
-
- // Get or set width or height on the element
- size == undefined ?
- // Get width or height on the element
- (this.length ? jQuery.css( this[0], type ) : null) :
-
- // Set the width or height on the element (default to pixels if value is unitless)
- this.css( type, size.constructor == String ? size : size + "px" );
- };
-});
-
-var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
- "(?:[\\w*_-]|\\\\.)" :
- "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
- quickChild = new RegExp("^>\\s*(" + chars + "+)"),
- quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
- quickClass = new RegExp("^([#.]?)(" + chars + "*)");
-
-jQuery.extend({
- expr: {
- "": function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},
- "#": function(a,i,m){return a.getAttribute("id")==m[2];},
- ":": {
- // Position Checks
- lt: function(a,i,m){return i<m[3]-0;},
- gt: function(a,i,m){return i>m[3]-0;},
- nth: function(a,i,m){return m[3]-0==i;},
- eq: function(a,i,m){return m[3]-0==i;},
- first: function(a,i){return i==0;},
- last: function(a,i,m,r){return i==r.length-1;},
- even: function(a,i){return i%2==0;},
- odd: function(a,i){return i%2;},
-
- // Child Checks
- "first-child": function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},
- "last-child": function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},
- "only-child": function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},
-
- // Parent Checks
- parent: function(a){return a.firstChild;},
- empty: function(a){return !a.firstChild;},
-
- // Text Check
- contains: function(a,i,m){return (a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},
-
- // Visibility
- visible: function(a){return "hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},
- hidden: function(a){return "hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},
-
- // Form attributes
- enabled: function(a){return !a.disabled;},
- disabled: function(a){return a.disabled;},
- checked: function(a){return a.checked;},
- selected: function(a){return a.selected||jQuery.attr(a,"selected");},
-
- // Form elements
- text: function(a){return "text"==a.type;},
- radio: function(a){return "radio"==a.type;},
- checkbox: function(a){return "checkbox"==a.type;},
- file: function(a){return "file"==a.type;},
- password: function(a){return "password"==a.type;},
- submit: function(a){return "submit"==a.type;},
- image: function(a){return "image"==a.type;},
- reset: function(a){return "reset"==a.type;},
- button: function(a){return "button"==a.type||jQuery.nodeName(a,"button");},
- input: function(a){return /input|select|textarea|button/i.test(a.nodeName);},
-
- // :has()
- has: function(a,i,m){return jQuery.find(m[3],a).length;},
-
- // :header
- header: function(a){return /h\d/i.test(a.nodeName);},
-
- // :animated
- animated: function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}
- }
- },
-
- // The regular expressions that power the parsing engine
- parse: [
- // Match: [@value='test'], [@foo]
- /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,
-
- // Match: :contains('foo')
- /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
-
- // Match: :even, :last-chlid, #id, .class
- new RegExp("^([:.#]*)(" + chars + "+)")
- ],
-
- multiFilter: function( expr, elems, not ) {
- var old, cur = [];
-
- while ( expr && expr != old ) {
- old = expr;
- var f = jQuery.filter( expr, elems, not );
- expr = f.t.replace(/^\s*,\s*/, "" );
- cur = not ? elems = f.r : jQuery.merge( cur, f.r );
- }
-
- return cur;
- },
-
- find: function( t, context ) {
- // Quickly handle non-string expressions
- if ( typeof t != "string" )
- return [ t ];
-
- // check to make sure context is a DOM element or a document
- if ( context && context.nodeType != 1 && context.nodeType != 9)
- return [ ];
-
- // Set the correct context (if none is provided)
- context = context || document;
-
- // Initialize the search
- var ret = [context], done = [], last, nodeName;
-
- // Continue while a selector expression exists, and while
- // we're no longer looping upon ourselves
- while ( t && last != t ) {
- var r = [];
- last = t;
-
- t = jQuery.trim(t);
-
- var foundToken = false;
-
- // An attempt at speeding up child selectors that
- // point to a specific element tag
- var re = quickChild;
- var m = re.exec(t);
-
- if ( m ) {
- nodeName = m[1].toUpperCase();
-
- // Perform our own iteration and filter
- for ( var i = 0; ret[i]; i++ )
- for ( var c = ret[i].firstChild; c; c = c.nextSibling )
- if ( c.nodeType == 1 && (nodeName == "*" || c.nodeName.toUpperCase() == nodeName) )
- r.push( c );
-
- ret = r;
- t = t.replace( re, "" );
- if ( t.indexOf(" ") == 0 ) continue;
- foundToken = true;
- } else {
- re = /^([>+~])\s*(\w*)/i;
-
- if ( (m = re.exec(t)) != null ) {
- r = [];
-
- var merge = {};
- nodeName = m[2].toUpperCase();
- m = m[1];
-
- for ( var j = 0, rl = ret.length; j < rl; j++ ) {
- var n = m == "~" || m == "+" ? ret[j].nextSibling : ret[j].firstChild;
- for ( ; n; n = n.nextSibling )
- if ( n.nodeType == 1 ) {
- var id = jQuery.data(n);
-
- if ( m == "~" && merge[id] ) break;
-
- if (!nodeName || n.nodeName.toUpperCase() == nodeName ) {
- if ( m == "~" ) merge[id] = true;
- r.push( n );
- }
-
- if ( m == "+" ) break;
- }
- }
-
- ret = r;
-
- // And remove the token
- t = jQuery.trim( t.replace( re, "" ) );
- foundToken = true;
- }
- }
-
- // See if there's still an expression, and that we haven't already
- // matched a token
- if ( t && !foundToken ) {
- // Handle multiple expressions
- if ( !t.indexOf(",") ) {
- // Clean the result set
- if ( context == ret[0] ) ret.shift();
-
- // Merge the result sets
- done = jQuery.merge( done, ret );
-
- // Reset the context
- r = ret = [context];
-
- // Touch up the selector string
- t = " " + t.substr(1,t.length);
-
- } else {
- // Optimize for the case nodeName#idName
- var re2 = quickID;
- var m = re2.exec(t);
-
- // Re-organize the results, so that they're consistent
- if ( m ) {
- m = [ 0, m[2], m[3], m[1] ];
-
- } else {
- // Otherwise, do a traditional filter check for
- // ID, class, and element selectors
- re2 = quickClass;
- m = re2.exec(t);
- }
-
- m[2] = m[2].replace(/\\/g, "");
-
- var elem = ret[ret.length-1];
-
- // Try to do a global search by ID, where we can
- if ( m[1] == "#" && elem && elem.getElementById && !jQuery.isXMLDoc(elem) ) {
- // Optimization for HTML document case
- var oid = elem.getElementById(m[2]);
-
- // Do a quick check for the existence of the actual ID attribute
- // to avoid selecting by the name attribute in IE
- // also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
- if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2] )
- oid = jQuery('[@id="'+m[2]+'"]', elem)[0];
-
- // Do a quick check for node name (where applicable) so
- // that div#foo searches will be really fast
- ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];
- } else {
- // We need to find all descendant elements
- for ( var i = 0; ret[i]; i++ ) {
- // Grab the tag name being searched for
- var tag = m[1] == "#" && m[3] ? m[3] : m[1] != "" || m[0] == "" ? "*" : m[2];
-
- // Handle IE7 being really dumb about <object>s
- if ( tag == "*" && ret[i].nodeName.toLowerCase() == "object" )
- tag = "param";
-
- r = jQuery.merge( r, ret[i].getElementsByTagName( tag ));
- }
-
- // It's faster to filter by class and be done with it
- if ( m[1] == "." )
- r = jQuery.classFilter( r, m[2] );
-
- // Same with ID filtering
- if ( m[1] == "#" ) {
- var tmp = [];
-
- // Try to find the element with the ID
- for ( var i = 0; r[i]; i++ )
- if ( r[i].getAttribute("id") == m[2] ) {
- tmp = [ r[i] ];
- break;
- }
-
- r = tmp;
- }
-
- ret = r;
- }
-
- t = t.replace( re2, "" );
- }
-
- }
-
- // If a selector string still exists
- if ( t ) {
- // Attempt to filter it
- var val = jQuery.filter(t,r);
- ret = r = val.r;
- t = jQuery.trim(val.t);
- }
- }
-
- // An error occurred with the selector;
- // just return an empty set instead
- if ( t )
- ret = [];
-
- // Remove the root context
- if ( ret && context == ret[0] )
- ret.shift();
-
- // And combine the results
- done = jQuery.merge( done, ret );
-
- return done;
- },
-
- classFilter: function(r,m,not){
- m = " " + m + " ";
- var tmp = [];
- for ( var i = 0; r[i]; i++ ) {
- var pass = (" " + r[i].className + " ").indexOf( m ) >= 0;
- if ( !not && pass || not && !pass )
- tmp.push( r[i] );
- }
- return tmp;
- },
-
- filter: function(t,r,not) {
- var last;
-
- // Look for common filter expressions
- while ( t && t != last ) {
- last = t;
-
- var p = jQuery.parse, m;
-
- for ( var i = 0; p[i]; i++ ) {
- m = p[i].exec( t );
-
- if ( m ) {
- // Remove what we just matched
- t = t.substring( m[0].length );
-
- m[2] = m[2].replace(/\\/g, "");
- break;
- }
- }
-
- if ( !m )
- break;
-
- // :not() is a special case that can be optimized by
- // keeping it out of the expression list
- if ( m[1] == ":" && m[2] == "not" )
- // optimize if only one selector found (most common case)
- r = isSimple.test( m[3] ) ?
- jQuery.filter(m[3], r, true).r :
- jQuery( r ).not( m[3] );
-
- // We can get a big speed boost by filtering by class here
- else if ( m[1] == "." )
- r = jQuery.classFilter(r, m[2], not);
-
- else if ( m[1] == "[" ) {
- var tmp = [], type = m[3];
-
- for ( var i = 0, rl = r.length; i < rl; i++ ) {
- var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
-
- if ( z == null || /href|src|selected/.test(m[2]) )
- z = jQuery.attr(a,m[2]) || '';
-
- if ( (type == "" && !!z ||
- type == "=" && z == m[5] ||
- type == "!=" && z != m[5] ||
- type == "^=" && z && !z.indexOf(m[5]) ||
- type == "$=" && z.substr(z.length - m[5].length) == m[5] ||
- (type == "*=" || type == "~=") && z.indexOf(m[5]) >= 0) ^ not )
- tmp.push( a );
- }
-
- r = tmp;
-
- // We can get a speed boost by handling nth-child here
- } else if ( m[1] == ":" && m[2] == "nth-child" ) {
- var merge = {}, tmp = [],
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
- m[3] == "even" && "2n" || m[3] == "odd" && "2n+1" ||
- !/\D/.test(m[3]) && "0n+" + m[3] || m[3]),
- // calculate the numbers (first)n+(last) including if they are negative
- first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;
-
- // loop through all the elements left in the jQuery object
- for ( var i = 0, rl = r.length; i < rl; i++ ) {
- var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);
-
- if ( !merge[id] ) {
- var c = 1;
-
- for ( var n = parentNode.firstChild; n; n = n.nextSibling )
- if ( n.nodeType == 1 )
- n.nodeIndex = c++;
-
- merge[id] = true;
- }
-
- var add = false;
-
- if ( first == 0 ) {
- if ( node.nodeIndex == last )
- add = true;
- } else if ( (node.nodeIndex - last) % first == 0 && (node.nodeIndex - last) / first >= 0 )
- add = true;
-
- if ( add ^ not )
- tmp.push( node );
- }
-
- r = tmp;
-
- // Otherwise, find the expression to execute
- } else {
- var fn = jQuery.expr[ m[1] ];
- if ( typeof fn == "object" )
- fn = fn[ m[2] ];
-
- if ( typeof fn == "string" )
- fn = eval("false||function(a,i){return " + fn + ";}");
-
- // Execute it against the current filter
- r = jQuery.grep( r, function(elem, i){
- return fn(elem, i, m, r);
- }, not );
- }
- }
-
- // Return an array of filtered elements (r)
- // and the modified expression string (t)
- return { r: r, t: t };
- },
-
- dir: function( elem, dir ){
- var matched = [];
- var cur = elem[dir];
- while ( cur && cur != document ) {
- if ( cur.nodeType == 1 )
- matched.push( cur );
- cur = cur[dir];
- }
- return matched;
- },
-
- nth: function(cur,result,dir,elem){
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] )
- if ( cur.nodeType == 1 && ++num == result )
- break;
-
- return cur;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && (!elem || n != elem) )
- r.push( n );
- }
-
- return r;
- }
-});
-
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code orignated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
- // Bind an event to an element
- // Original by Dean Edwards
- add: function(elem, types, handler, data) {
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
-
- // For whatever reason, IE has trouble passing the window object
- // around, causing it to be cloned in the process
- if ( jQuery.browser.msie && elem.setInterval != undefined )
- elem = window;
-
- // Make sure that the function being executed has a unique ID
- if ( !handler.guid )
- handler.guid = this.guid++;
-
- // if data is passed, bind to handler
- if( data != undefined ) {
- // Create temporary function pointer to original handler
- var fn = handler;
-
- // Create unique handler function, wrapped around original handler
- handler = function() {
- // Pass arguments and context to original handler
- return fn.apply(this, arguments);
- };
-
- // Store data in unique handler
- handler.data = data;
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- handler.guid = fn.guid;
- }
-
- // Init the element's event structure
- var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
- handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
- // returned undefined or false
- var val;
-
- // Handle the second event of a trigger and when
- // an event is called after a page has unloaded
- if ( typeof jQuery == "undefined" || jQuery.event.triggered )
- return val;
-
- val = jQuery.event.handle.apply(arguments.callee.elem, arguments);
-
- return val;
- });
- // Add elem as a property of the handle function
- // This is to prevent a memory leak with non-native
- // event in IE.
- handle.elem = elem;
-
- // Handle multiple events seperated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type) {
- // Namespaced event handlers
- var parts = type.split(".");
- type = parts[0];
- handler.type = parts[1];
-
- // Get the current list of functions bound to this event
- var handlers = events[type];
-
- // Init the event handler queue
- if (!handlers) {
- handlers = events[type] = {};
-
- // Check for a special event handler
- // Only use addEventListener/attachEvent if the special
- // events handler returns false
- if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem) === false ) {
- // Bind the global event handler to the element
- if (elem.addEventListener)
- elem.addEventListener(type, handle, false);
- else if (elem.attachEvent)
- elem.attachEvent("on" + type, handle);
- }
- }
-
- // Add the function to the element's handler list
- handlers[handler.guid] = handler;
-
- // Keep track of which events have been used, for global triggering
- jQuery.event.global[type] = true;
- });
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- guid: 1,
- global: {},
-
- // Detach an event or set of events from an element
- remove: function(elem, types, handler) {
- // don't do events on text and comment nodes
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
-
- var events = jQuery.data(elem, "events"), ret, index;
-
- if ( events ) {
- // Unbind all events for the element
- if ( types == undefined || (typeof types == "string" && types.charAt(0) == ".") )
- for ( var type in events )
- this.remove( elem, type + (types || "") );
- else {
- // types is actually an event object here
- if ( types.type ) {
- handler = types.handler;
- types = types.type;
- }
-
- // Handle multiple events seperated by a space
- // jQuery(...).unbind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type){
- // Namespaced event handlers
- var parts = type.split(".");
- type = parts[0];
-
- if ( events[type] ) {
- // remove the given handler for the given type
- if ( handler )
- delete events[type][handler.guid];
-
- // remove all handlers for the given type
- else
- for ( handler in events[type] )
- // Handle the removal of namespaced events
- if ( !parts[1] || events[type][handler].type == parts[1] )
- delete events[type][handler];
-
- // remove generic event handler if no more handlers exist
- for ( ret in events[type] ) break;
- if ( !ret ) {
- if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem) === false ) {
- if (elem.removeEventListener)
- elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
- else if (elem.detachEvent)
- elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
- }
- ret = null;
- delete events[type];
- }
- }
- });
- }
-
- // Remove the expando if it's no longer used
- for ( ret in events ) break;
- if ( !ret ) {
- var handle = jQuery.data( elem, "handle" );
- if ( handle ) handle.elem = null;
- jQuery.removeData( elem, "events" );
- jQuery.removeData( elem, "handle" );
- }
- }
- },
-
- trigger: function(type, data, elem, donative, extra) {
- // Clone the incoming data, if any
- data = jQuery.makeArray(data || []);
-
- if ( type.indexOf("!") >= 0 ) {
- type = type.slice(0, -1);
- var exclusive = true;
- }
-
- // Handle a global trigger
- if ( !elem ) {
- // Only trigger if we've ever bound an event for it
- if ( this.global[type] )
- jQuery("*").add([window, document]).trigger(type, data);
-
- // Handle triggering a single element
- } else {
- // don't do events on text and comment nodes
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return undefined;
-
- var val, ret, fn = jQuery.isFunction( elem[ type ] || null ),
- // Check to see if we need to provide a fake event, or not
- event = !data[0] || !data[0].preventDefault;
-
- // Pass along a fake event
- if ( event )
- data.unshift( this.fix({ type: type, target: elem }) );
-
- // Enforce the right trigger type
- data[0].type = type;
- if ( exclusive )
- data[0].exclusive = true;
-
- // Trigger the event
- if ( jQuery.isFunction( jQuery.data(elem, "handle") ) )
- val = jQuery.data(elem, "handle").apply( elem, data );
-
- // Handle triggering native .onfoo handlers
- if ( !fn && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
- val = false;
-
- // Extra functions don't get the custom event object
- if ( event )
- data.shift();
-
- // Handle triggering of extra function
- if ( extra && jQuery.isFunction( extra ) ) {
- // call the extra function and tack the current return value on the end for possible inspection
- ret = extra.apply( elem, val == null ? data : data.concat( val ) );
- // if anything is returned, give it precedence and have it overwrite the previous value
- if (ret !== undefined)
- val = ret;
- }
-
- // Trigger the native events (except for clicks on links)
- if ( fn && donative !== false && val !== false && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
- this.triggered = true;
- try {
- elem[ type ]();
- // prevent IE from throwing an error for some hidden elements
- } catch (e) {}
- }
-
- this.triggered = false;
- }
-
- return val;
- },
-
- handle: function(event) {
- // returned undefined or false
- var val;
-
- // Empty object is for triggered events with no data
- event = jQuery.event.fix( event || window.event || {} );
-
- // Namespaced event handlers
- var parts = event.type.split(".");
- event.type = parts[0];
-
- var handlers = jQuery.data(this, "events") && jQuery.data(this, "events")[event.type], args = Array.prototype.slice.call( arguments, 1 );
- args.unshift( event );
-
- for ( var j in handlers ) {
- var handler = handlers[j];
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- args[0].handler = handler;
- args[0].data = handler.data;
-
- // Filter the functions by class
- if ( !parts[1] && !event.exclusive || handler.type == parts[1] ) {
- var ret = handler.apply( this, args );
-
- if ( val !== false )
- val = ret;
-
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
-
- // Clean up added properties in IE to prevent memory leak
- if (jQuery.browser.msie)
- event.target = event.preventDefault = event.stopPropagation =
- event.handler = event.data = null;
-
- return val;
- },
-
- fix: function(event) {
- // store a copy of the original event object
- // and clone to set read-only properties
- var originalEvent = event;
- event = jQuery.extend({}, originalEvent);
-
- // add preventDefault and stopPropagation since
- // they will not work on the clone
- event.preventDefault = function() {
- // if preventDefault exists run it on the original event
- if (originalEvent.preventDefault)
- originalEvent.preventDefault();
- // otherwise set the returnValue property of the original event to false (IE)
- originalEvent.returnValue = false;
- };
- event.stopPropagation = function() {
- // if stopPropagation exists run it on the original event
- if (originalEvent.stopPropagation)
- originalEvent.stopPropagation();
- // otherwise set the cancelBubble property of the original event to true (IE)
- originalEvent.cancelBubble = true;
- };
-
- // Fix target property, if necessary
- if ( !event.target )
- event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
-
- // check if target is a textnode (safari)
- if ( event.target.nodeType == 3 )
- event.target = originalEvent.target.parentNode;
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && event.fromElement )
- event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && event.clientX != null ) {
- var doc = document.documentElement, body = document.body;
- event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
- event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
- }
-
- // Add which for key events
- if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
- event.which = event.charCode || event.keyCode;
-
- // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
- if ( !event.metaKey && event.ctrlKey )
- event.metaKey = event.ctrlKey;
-
- // Add which for click: 1 == left; 2 == middle; 3 == right
- // Note: button is not normalized, so don't use it
- if ( !event.which && event.button )
- event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
-
- return event;
- },
-
- special: {
- ready: {
- setup: function() {
- // Make sure the ready event is setup
- bindReady();
- return;
- },
-
- teardown: function() { return; }
- },
-
- mouseenter: {
- setup: function() {
- if ( jQuery.browser.msie ) return false;
- jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
- return true;
- },
-
- teardown: function() {
- if ( jQuery.browser.msie ) return false;
- jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
- return true;
- },
-
- handler: function(event) {
- // If we actually just moused on to a sub-element, ignore it
- if ( withinElement(event, this) ) return true;
- // Execute the right handlers by setting the event type to mouseenter
- arguments[0].type = "mouseenter";
- return jQuery.event.handle.apply(this, arguments);
- }
- },
-
- mouseleave: {
- setup: function() {
- if ( jQuery.browser.msie ) return false;
- jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
- return true;
- },
-
- teardown: function() {
- if ( jQuery.browser.msie ) return false;
- jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
- return true;
- },
-
- handler: function(event) {
- // If we actually just moused on to a sub-element, ignore it
- if ( withinElement(event, this) ) return true;
- // Execute the right handlers by setting the event type to mouseleave
- arguments[0].type = "mouseleave";
- return jQuery.event.handle.apply(this, arguments);
- }
- }
- }
-};
-
-jQuery.fn.extend({
- bind: function( type, data, fn ) {
- return type == "unload" ? this.one(type, data, fn) : this.each(function(){
- jQuery.event.add( this, type, fn || data, fn && data );
- });
- },
-
- one: function( type, data, fn ) {
- return this.each(function(){
- jQuery.event.add( this, type, function(event) {
- jQuery(this).unbind(event);
- return (fn || data).apply( this, arguments);
- }, fn && data);
- });
- },
-
- unbind: function( type, fn ) {
- return this.each(function(){
- jQuery.event.remove( this, type, fn );
- });
- },
-
- trigger: function( type, data, fn ) {
- return this.each(function(){
- jQuery.event.trigger( type, data, this, true, fn );
- });
- },
-
- triggerHandler: function( type, data, fn ) {
- if ( this[0] )
- return jQuery.event.trigger( type, data, this[0], false, fn );
- return undefined;
- },
-
- toggle: function() {
- // Save reference to arguments for access in closure
- var args = arguments;
-
- return this.click(function(event) {
- // Figure out which function to execute
- this.lastToggle = 0 == this.lastToggle ? 1 : 0;
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[this.lastToggle].apply( this, arguments ) || false;
- });
- },
-
- hover: function(fnOver, fnOut) {
- return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
- },
-
- ready: function(fn) {
- // Attach the listeners
- bindReady();
-
- // If the DOM is already ready
- if ( jQuery.isReady )
- // Execute the function immediately
- fn.call( document, jQuery );
-
- // Otherwise, remember the function for later
- else
- // Add the function to the wait list
- jQuery.readyList.push( function() { return fn.call(this, jQuery); } );
-
- return this;
- }
-});
-
-jQuery.extend({
- isReady: false,
- readyList: [],
- // Handle when the DOM is ready
- ready: function() {
- // Make sure that the DOM is not already loaded
- if ( !jQuery.isReady ) {
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If there are functions bound, to execute
- if ( jQuery.readyList ) {
- // Execute all of them
- jQuery.each( jQuery.readyList, function(){
- this.apply( document );
- });
-
- // Reset the list of functions
- jQuery.readyList = null;
- }
-
- // Trigger any bound ready events
- jQuery(document).triggerHandler("ready");
- }
- }
-});
-
-var readyBound = false;
-
-function bindReady(){
- if ( readyBound ) return;
- readyBound = true;
-
- // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event
- if ( document.addEventListener && !jQuery.browser.opera)
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", jQuery.ready, false );
-
- // If IE is used and is not in a frame
- // Continually check to see if the document is ready
- if ( jQuery.browser.msie && window == top ) (function(){
- if (jQuery.isReady) return;
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch( error ) {
- setTimeout( arguments.callee, 0 );
- return;
- }
- // and execute any waiting functions
- jQuery.ready();
- })();
-
- if ( jQuery.browser.opera )
- document.addEventListener( "DOMContentLoaded", function () {
- if (jQuery.isReady) return;
- for (var i = 0; i < document.styleSheets.length; i++)
- if (document.styleSheets[i].disabled) {
- setTimeout( arguments.callee, 0 );
- return;
- }
- // and execute any waiting functions
- jQuery.ready();
- }, false);
-
- if ( jQuery.browser.safari ) {
- var numStyles;
- (function(){
- if (jQuery.isReady) return;
- if ( document.readyState != "loaded" && document.readyState != "complete" ) {
- setTimeout( arguments.callee, 0 );
- return;
- }
- if ( numStyles === undefined )
- numStyles = jQuery("style, link[rel=stylesheet]").length;
- if ( document.styleSheets.length != numStyles ) {
- setTimeout( arguments.callee, 0 );
- return;
- }
- // and execute any waiting functions
- jQuery.ready();
- })();
- }
-
- // A fallback to window.onload, that will always work
- jQuery.event.add( window, "load", jQuery.ready );
-}
-
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
- "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," +
- "submit,keydown,keypress,keyup,error").split(","), function(i, name){
-
- // Handle event binding
- jQuery.fn[name] = function(fn){
- return fn ? this.bind(name, fn) : this.trigger(name);
- };
-});
-
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event, elem) {
- // Check if mouse(over|out) are still within the same parent element
- var parent = event.relatedTarget;
- // Traverse up the tree
- while ( parent && parent != elem ) try { parent = parent.parentNode; } catch(error) { parent = elem; }
- // Return true if we actually just moused on to a sub-element
- return parent == elem;
-};
-
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery(window).bind("unload", function() {
- jQuery("*").add(document).unbind();
-});
-jQuery.fn.extend({
- load: function( url, params, callback ) {
- if ( jQuery.isFunction( url ) )
- return this.bind("load", url);
-
- var off = url.indexOf(" ");
- if ( off >= 0 ) {
- var selector = url.slice(off, url.length);
- url = url.slice(0, off);
- }
-
- callback = callback || function(){};
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params )
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = null;
-
- // Otherwise, build a param string
- } else {
- params = jQuery.param( params );
- type = "POST";
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- complete: function(res, status){
- // If successful, inject the HTML into all the matched elements
- if ( status == "success" || status == "notmodified" )
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div/>")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- res.responseText );
-
- self.each( callback, [res.responseText, status, res] );
- }
- });
- return this;
- },
-
- serialize: function() {
- return jQuery.param(this.serializeArray());
- },
- serializeArray: function() {
- return this.map(function(){
- return jQuery.nodeName(this, "form") ?
- jQuery.makeArray(this.elements) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- (this.checked || /select|textarea/i.test(this.nodeName) ||
- /text|hidden|password/i.test(this.type));
- })
- .map(function(i, elem){
- var val = jQuery(this).val();
- return val == null ? null :
- val.constructor == Array ?
- jQuery.map( val, function(val, i){
- return {name: elem.name, value: val};
- }) :
- {name: elem.name, value: val};
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
- jQuery.fn[o] = function(f){
- return this.bind(o, f);
- };
-});
-
-var jsc = (new Date).getTime();
-
-jQuery.extend({
- get: function( url, data, callback, type ) {
- // shift arguments if data argument was ommited
- if ( jQuery.isFunction( data ) ) {
- callback = data;
- data = null;
- }
-
- return jQuery.ajax({
- type: "GET",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- getScript: function( url, callback ) {
- return jQuery.get(url, null, callback, "script");
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get(url, data, callback, "json");
- },
-
- post: function( url, data, callback, type ) {
- if ( jQuery.isFunction( data ) ) {
- callback = data;
- data = {};
- }
-
- return jQuery.ajax({
- type: "POST",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- ajaxSetup: function( settings ) {
- jQuery.extend( jQuery.ajaxSettings, settings );
- },
-
- ajaxSettings: {
- global: true,
- type: "GET",
- timeout: 0,
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- data: null,
- username: null,
- password: null,
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- script: "text/javascript, application/javascript",
- json: "application/json, text/javascript",
- text: "text/plain",
- _default: "*/*"
- }
- },
-
- // Last-Modified header cache for next request
- lastModified: {},
-
- ajax: function( s ) {
- var jsonp, jsre = /=\?(&|$)/g, status, data;
-
- // Extend the settings, but re-extend 's' so that it can be
- // checked again later (in the test suite, specifically)
- s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
- // convert data if not already a string
- if ( s.data && s.processData && typeof s.data != "string" )
- s.data = jQuery.param(s.data);
-
- // Handle JSONP Parameter Callbacks
- if ( s.dataType == "jsonp" ) {
- if ( s.type.toLowerCase() == "get" ) {
- if ( !s.url.match(jsre) )
- s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
- } else if ( !s.data || !s.data.match(jsre) )
- s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
- s.dataType = "json";
- }
-
- // Build temporary JSONP function
- if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
- jsonp = "jsonp" + jsc++;
-
- // Replace the =? sequence both in the query string and the data
- if ( s.data )
- s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
- s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-
- // We need to make sure
- // that a JSONP style response is executed properly
- s.dataType = "script";
-
- // Handle JSONP-style loading
- window[ jsonp ] = function(tmp){
- data = tmp;
- success();
- complete();
- // Garbage collect
- window[ jsonp ] = undefined;
- try{ delete window[ jsonp ]; } catch(e){}
- if ( head )
- head.removeChild( script );
- };
- }
-
- if ( s.dataType == "script" && s.cache == null )
- s.cache = false;
-
- if ( s.cache === false && s.type.toLowerCase() == "get" ) {
- var ts = (new Date()).getTime();
- // try replacing _= if it is there
- var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
- }
-
- // If data is available, append data to url for get requests
- if ( s.data && s.type.toLowerCase() == "get" ) {
- s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
- // IE likes to send both get and post data, prevent this
- s.data = null;
- }
-
- // Watch for a new set of requests
- if ( s.global && ! jQuery.active++ )
- jQuery.event.trigger( "ajaxStart" );
-
- // If we're requesting a remote document
- // and trying to load JSON or Script with a GET
- if ( (!s.url.indexOf("http") || !s.url.indexOf("//")) && s.dataType == "script" && s.type.toLowerCase() == "get" ) {
- var head = document.getElementsByTagName("head")[0];
- var script = document.createElement("script");
- script.src = s.url;
- if (s.scriptCharset)
- script.charset = s.scriptCharset;
-
- // Handle Script loading
- if ( !jsonp ) {
- var done = false;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function(){
- if ( !done && (!this.readyState ||
- this.readyState == "loaded" || this.readyState == "complete") ) {
- done = true;
- success();
- complete();
- head.removeChild( script );
- }
- };
- }
-
- head.appendChild(script);
-
- // We handle everything using the script element injection
- return undefined;
- }
-
- var requestDone = false;
-
- // Create the request object; Microsoft failed to properly
- // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
- var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
-
- // Open the socket
- xml.open(s.type, s.url, s.async, s.username, s.password);
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- // Set the correct header, if data is being sent
- if ( s.data )
- xml.setRequestHeader("Content-Type", s.contentType);
-
- // Set the If-Modified-Since header, if ifModified mode.
- if ( s.ifModified )
- xml.setRequestHeader("If-Modified-Since",
- jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
-
- // Set header so the called script knows that it's an XMLHttpRequest
- xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
-
- // Set the Accepts header for the server, depending on the dataType
- xml.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
- s.accepts[ s.dataType ] + ", */*" :
- s.accepts._default );
- } catch(e){}
-
- // Allow custom headers/mimetypes
- if ( s.beforeSend )
- s.beforeSend(xml);
-
- if ( s.global )
- jQuery.event.trigger("ajaxSend", [xml, s]);
-
- // Wait for a response to come back
- var onreadystatechange = function(isTimeout){
- // The transfer is complete and the data is available, or the request timed out
- if ( !requestDone && xml && (xml.readyState == 4 || isTimeout == "timeout") ) {
- requestDone = true;
-
- // clear poll interval
- if (ival) {
- clearInterval(ival);
- ival = null;
- }
-
- status = isTimeout == "timeout" && "timeout" ||
- !jQuery.httpSuccess( xml ) && "error" ||
- s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
- "success";
-
- if ( status == "success" ) {
- // Watch for, and catch, XML document parse errors
- try {
- // process the data (runs the xml through httpData regardless of callback)
- data = jQuery.httpData( xml, s.dataType );
- } catch(e) {
- status = "parsererror";
- }
- }
-
- // Make sure that the request was successful or notmodified
- if ( status == "success" ) {
- // Cache Last-Modified header, if ifModified mode.
- var modRes;
- try {
- modRes = xml.getResponseHeader("Last-Modified");
- } catch(e) {} // swallow exception thrown by FF if header is not available
-
- if ( s.ifModified && modRes )
- jQuery.lastModified[s.url] = modRes;
-
- // JSONP handles its own success callback
- if ( !jsonp )
- success();
- } else
- jQuery.handleError(s, xml, status);
-
- // Fire the complete handlers
- complete();
-
- // Stop memory leaks
- if ( s.async )
- xml = null;
- }
- };
-
- if ( s.async ) {
- // don't attach the handler to the request, just poll it instead
- var ival = setInterval(onreadystatechange, 13);
-
- // Timeout checker
- if ( s.timeout > 0 )
- setTimeout(function(){
- // Check to see if the request is still happening
- if ( xml ) {
- // Cancel the request
- xml.abort();
-
- if( !requestDone )
- onreadystatechange( "timeout" );
- }
- }, s.timeout);
- }
-
- // Send the data
- try {
- xml.send(s.data);
- } catch(e) {
- jQuery.handleError(s, xml, null, e);
- }
-
- // firefox 1.5 doesn't fire statechange for sync requests
- if ( !s.async )
- onreadystatechange();
-
- function success(){
- // If a local callback was specified, fire it and pass it the data
- if ( s.success )
- s.success( data, status );
-
- // Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxSuccess", [xml, s] );
- }
-
- function complete(){
- // Process result
- if ( s.complete )
- s.complete(xml, status);
-
- // The request was completed
- if ( s.global )
- jQuery.event.trigger( "ajaxComplete", [xml, s] );
-
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
- jQuery.event.trigger( "ajaxStop" );
- }
-
- // return XMLHttpRequest to allow aborting the request etc.
- return xml;
- },
-
- handleError: function( s, xml, status, e ) {
- // If a local callback was specified, fire it
- if ( s.error ) s.error( xml, status, e );
-
- // Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxError", [xml, s, e] );
- },
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Determines if an XMLHttpRequest was successful or not
- httpSuccess: function( r ) {
- try {
- // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
- return !r.status && location.protocol == "file:" ||
- ( r.status >= 200 && r.status < 300 ) || r.status == 304 || r.status == 1223 ||
- jQuery.browser.safari && r.status == undefined;
- } catch(e){}
- return false;
- },
-
- // Determines if an XMLHttpRequest returns NotModified
- httpNotModified: function( xml, url ) {
- try {
- var xmlRes = xml.getResponseHeader("Last-Modified");
-
- // Firefox always returns 200. check Last-Modified date
- return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
- jQuery.browser.safari && xml.status == undefined;
- } catch(e){}
- return false;
- },
-
- httpData: function( r, type ) {
- var ct = r.getResponseHeader("content-type");
- var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0;
- var data = xml ? r.responseXML : r.responseText;
-
- if ( xml && data.documentElement.tagName == "parsererror" )
- throw "parsererror";
-
- // If the type is "script", eval it in global context
- if ( type == "script" )
- jQuery.globalEval( data );
-
- // Get the JavaScript object, if JSON is used.
- if ( type == "json" )
- data = eval("(" + data + ")");
-
- return data;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a ) {
- var s = [];
-
- // If an array was passed in, assume that it is an array
- // of form elements
- if ( a.constructor == Array || a.jquery )
- // Serialize the form elements
- jQuery.each( a, function(){
- s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) );
- });
-
- // Otherwise, assume that it's an object of key/value pairs
- else
- // Serialize the key/values
- for ( var j in a )
- // If the value is an array then the key names need to be repeated
- if ( a[j] && a[j].constructor == Array )
- jQuery.each( a[j], function(){
- s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) );
- });
- else
- s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) );
-
- // Return the resulting serialization
- return s.join("&").replace(/%20/g, "+");
- }
-
-});
-jQuery.fn.extend({
- show: function(speed,callback){
- return speed ?
- this.animate({
- height: "show", width: "show", opacity: "show"
- }, speed, callback) :
-
- this.filter(":hidden").each(function(){
- this.style.display = this.oldblock || "";
- if ( jQuery.css(this,"display") == "none" ) {
- var elem = jQuery("<" + this.tagName + " />").appendTo("body");
- this.style.display = elem.css("display");
- // handle an edge condition where css is - div { display:none; } or similar
- if (this.style.display == "none")
- this.style.display = "block";
- elem.remove();
- }
- }).end();
- },
-
- hide: function(speed,callback){
- return speed ?
- this.animate({
- height: "hide", width: "hide", opacity: "hide"
- }, speed, callback) :
-
- this.filter(":visible").each(function(){
- this.oldblock = this.oldblock || jQuery.css(this,"display");
- this.style.display = "none";
- }).end();
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2 ){
- return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
- this._toggle( fn, fn2 ) :
- fn ?
- this.animate({
- height: "toggle", width: "toggle", opacity: "toggle"
- }, fn, fn2) :
- this.each(function(){
- jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
- });
- },
-
- slideDown: function(speed,callback){
- return this.animate({height: "show"}, speed, callback);
- },
-
- slideUp: function(speed,callback){
- return this.animate({height: "hide"}, speed, callback);
- },
-
- slideToggle: function(speed, callback){
- return this.animate({height: "toggle"}, speed, callback);
- },
-
- fadeIn: function(speed, callback){
- return this.animate({opacity: "show"}, speed, callback);
- },
-
- fadeOut: function(speed, callback){
- return this.animate({opacity: "hide"}, speed, callback);
- },
-
- fadeTo: function(speed,to,callback){
- return this.animate({opacity: to}, speed, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed(speed, easing, callback);
-
- return this[ optall.queue === false ? "each" : "queue" ](function(){
- if ( this.nodeType != 1)
- return false;
-
- var opt = jQuery.extend({}, optall);
- var hidden = jQuery(this).is(":hidden"), self = this;
-
- for ( var p in prop ) {
- if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
- return jQuery.isFunction(opt.complete) && opt.complete.apply(this);
-
- if ( p == "height" || p == "width" ) {
- // Store display property
- opt.display = jQuery.css(this, "display");
-
- // Make sure that nothing sneaks out
- opt.overflow = this.style.overflow;
- }
- }
-
- if ( opt.overflow != null )
- this.style.overflow = "hidden";
-
- opt.curAnim = jQuery.extend({}, prop);
-
- jQuery.each( prop, function(name, val){
- var e = new jQuery.fx( self, opt, name );
-
- if ( /toggle|show|hide/.test(val) )
- e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
- else {
- var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
- start = e.cur(true) || 0;
-
- if ( parts ) {
- var end = parseFloat(parts[2]),
- unit = parts[3] || "px";
-
- // We need to compute starting value
- if ( unit != "px" ) {
- self.style[ name ] = (end || 1) + unit;
- start = ((end || 1) / e.cur(true)) * start;
- self.style[ name ] = start + unit;
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] )
- end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
-
- e.custom( start, end, unit );
- } else
- e.custom( start, val, "" );
- }
- });
-
- // For JS strict compliance
- return true;
- });
- },
-
- queue: function(type, fn){
- if ( jQuery.isFunction(type) || ( type && type.constructor == Array )) {
- fn = type;
- type = "fx";
- }
-
- if ( !type || (typeof type == "string" && !fn) )
- return queue( this[0], type );
-
- return this.each(function(){
- if ( fn.constructor == Array )
- queue(this, type, fn);
- else {
- queue(this, type).push( fn );
-
- if ( queue(this, type).length == 1 )
- fn.apply(this);
- }
- });
- },
-
- stop: function(clearQueue, gotoEnd){
- var timers = jQuery.timers;
-
- if (clearQueue)
- this.queue([]);
-
- this.each(function(){
- // go in reverse order so anything added to the queue during the loop is ignored
- for ( var i = timers.length - 1; i >= 0; i-- )
- if ( timers[i].elem == this ) {
- if (gotoEnd)
- // force the next step to be the last
- timers[i](true);
- timers.splice(i, 1);
- }
- });
-
- // start the next in the queue if the last step wasn't forced
- if (!gotoEnd)
- this.dequeue();
-
- return this;
- }
-
-});
-
-var queue = function( elem, type, array ) {
- if ( !elem )
- return undefined;
-
- type = type || "fx";
-
- var q = jQuery.data( elem, type + "queue" );
-
- if ( !q || array )
- q = jQuery.data( elem, type + "queue",
- array ? jQuery.makeArray(array) : [] );
-
- return q;
-};
-
-jQuery.fn.dequeue = function(type){
- type = type || "fx";
-
- return this.each(function(){
- var q = queue(this, type);
-
- q.shift();
-
- if ( q.length )
- q[0].apply( this );
- });
-};
-
-jQuery.extend({
-
- speed: function(speed, easing, fn) {
- var opt = speed && speed.constructor == Object ? speed : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && easing.constructor != Function && easing
- };
-
- opt.duration = (opt.duration && opt.duration.constructor == Number ?
- opt.duration :
- { slow: 600, fast: 200 }[opt.duration]) || 400;
-
- // Queueing
- opt.old = opt.complete;
- opt.complete = function(){
- if ( opt.queue !== false )
- jQuery(this).dequeue();
- if ( jQuery.isFunction( opt.old ) )
- opt.old.apply( this );
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
- }
- },
-
- timers: [],
- timerId: null,
-
- fx: function( elem, options, prop ){
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- if ( !options.orig )
- options.orig = {};
- }
-
-});
-
-jQuery.fx.prototype = {
-
- // Simple function for setting a style value
- update: function(){
- if ( this.options.step )
- this.options.step.apply( this.elem, [ this.now, this ] );
-
- (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
- // Set display property to block for height/width animations
- if ( this.prop == "height" || this.prop == "width" )
- this.elem.style.display = "block";
- },
-
- // Get the current size
- cur: function(force){
- if ( this.elem[this.prop] != null && this.elem.style[this.prop] == null )
- return this.elem[ this.prop ];
-
- var r = parseFloat(jQuery.css(this.elem, this.prop, force));
- return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
- },
-
- // Start an animation from one number to another
- custom: function(from, to, unit){
- this.startTime = (new Date()).getTime();
- this.start = from;
- this.end = to;
- this.unit = unit || this.unit || "px";
- this.now = this.start;
- this.pos = this.state = 0;
- this.update();
-
- var self = this;
- function t(gotoEnd){
- return self.step(gotoEnd);
- }
-
- t.elem = this.elem;
-
- jQuery.timers.push(t);
-
- if ( jQuery.timerId == null ) {
- jQuery.timerId = setInterval(function(){
- var timers = jQuery.timers;
-
- for ( var i = 0; i < timers.length; i++ )
- if ( !timers[i]() )
- timers.splice(i--, 1);
-
- if ( !timers.length ) {
- clearInterval( jQuery.timerId );
- jQuery.timerId = null;
- }
- }, 13);
- }
- },
-
- // Simple 'show' function
- show: function(){
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
- this.options.show = true;
-
- // Begin the animation
- this.custom(0, this.cur());
-
- // Make sure that we start at a small width/height to avoid any
- // flash of content
- if ( this.prop == "width" || this.prop == "height" )
- this.elem.style[this.prop] = "1px";
-
- // Start by showing the element
- jQuery(this.elem).show();
- },
-
- // Simple 'hide' function
- hide: function(){
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom(this.cur(), 0);
- },
-
- // Each step of an animation
- step: function(gotoEnd){
- var t = (new Date()).getTime();
-
- if ( gotoEnd || t > this.options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- this.options.curAnim[ this.prop ] = true;
-
- var done = true;
- for ( var i in this.options.curAnim )
- if ( this.options.curAnim[i] !== true )
- done = false;
-
- if ( done ) {
- if ( this.options.display != null ) {
- // Reset the overflow
- this.elem.style.overflow = this.options.overflow;
-
- // Reset the display
- this.elem.style.display = this.options.display;
- if ( jQuery.css(this.elem, "display") == "none" )
- this.elem.style.display = "block";
- }
-
- // Hide the element if the "hide" operation was done
- if ( this.options.hide )
- this.elem.style.display = "none";
-
- // Reset the properties, if the item has been hidden or shown
- if ( this.options.hide || this.options.show )
- for ( var p in this.options.curAnim )
- jQuery.attr(this.elem.style, p, this.options.orig[p]);
- }
-
- // If a callback was provided, execute it
- if ( done && jQuery.isFunction( this.options.complete ) )
- // Execute the complete function
- this.options.complete.apply( this.elem );
-
- return false;
- } else {
- var n = t - this.startTime;
- this.state = n / this.options.duration;
-
- // Perform the easing function, defaults to swing
- this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
- this.now = this.start + ((this.end - this.start) * this.pos);
-
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-
-};
-
-jQuery.fx.step = {
- scrollLeft: function(fx){
- fx.elem.scrollLeft = fx.now;
- },
-
- scrollTop: function(fx){
- fx.elem.scrollTop = fx.now;
- },
-
- opacity: function(fx){
- jQuery.attr(fx.elem.style, "opacity", fx.now);
- },
-
- _default: function(fx){
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
- }
-};
-// The Offset Method
-// Originally By Brandon Aaron, part of the Dimension Plugin
-// http://jquery.com/plugins/project/dimensions
-jQuery.fn.offset = function() {
- var left = 0, top = 0, elem = this[0], results;
-
- if ( elem ) with ( jQuery.browser ) {
- var parent = elem.parentNode,
- offsetChild = elem,
- offsetParent = elem.offsetParent,
- doc = elem.ownerDocument,
- safari2 = safari && parseInt(version) < 522 && !/adobeair/i.test(userAgent),
- fixed = jQuery.css(elem, "position") == "fixed";
-
- // Use getBoundingClientRect if available
- if ( elem.getBoundingClientRect ) {
- var box = elem.getBoundingClientRect();
-
- // Add the document scroll offsets
- add(box.left + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
- box.top + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
-
- // IE adds the HTML element's border, by default it is medium which is 2px
- // IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }
- // IE 7 standards mode, the border is always 2px
- // This border/offset is typically represented by the clientLeft and clientTop properties
- // However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS
- // Therefore this method will be off by 2px in IE while in quirksmode
- add( -doc.documentElement.clientLeft, -doc.documentElement.clientTop );
-
- // Otherwise loop through the offsetParents and parentNodes
- } else {
-
- // Initial element offsets
- add( elem.offsetLeft, elem.offsetTop );
-
- // Get parent offsets
- while ( offsetParent ) {
- // Add offsetParent offsets
- add( offsetParent.offsetLeft, offsetParent.offsetTop );
-
- // Mozilla and Safari > 2 does not include the border on offset parents
- // However Mozilla adds the border for table or table cells
- if ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || safari && !safari2 )
- border( offsetParent );
-
- // Add the document scroll offsets if position is fixed on any offsetParent
- if ( !fixed && jQuery.css(offsetParent, "position") == "fixed" )
- fixed = true;
-
- // Set offsetChild to previous offsetParent unless it is the body element
- offsetChild = /^body$/i.test(offsetParent.tagName) ? offsetChild : offsetParent;
- // Get next offsetParent
- offsetParent = offsetParent.offsetParent;
- }
-
- // Get parent scroll offsets
- while ( parent && parent.tagName && !/^body|html$/i.test(parent.tagName) ) {
- // Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug
- if ( !/^inline|table.*$/i.test(jQuery.css(parent, "display")) )
- // Subtract parent scroll offsets
- add( -parent.scrollLeft, -parent.scrollTop );
-
- // Mozilla does not add the border for a parent that has overflow != visible
- if ( mozilla && jQuery.css(parent, "overflow") != "visible" )
- border( parent );
-
- // Get next parent
- parent = parent.parentNode;
- }
-
- // Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild
- // Mozilla doubles body offsets with a non-absolutely positioned offsetChild
- if ( (safari2 && (fixed || jQuery.css(offsetChild, "position") == "absolute")) ||
- (mozilla && jQuery.css(offsetChild, "position") != "absolute") )
- add( -doc.body.offsetLeft, -doc.body.offsetTop );
-
- // Add the document scroll offsets if position is fixed
- if ( fixed )
- add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),
- Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
- }
-
- // Return an object with top and left properties
- results = { top: top, left: left };
- }
-
- function border(elem) {
- add( jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true) );
- }
-
- function add(l, t) {
- left += parseInt(l) || 0;
- top += parseInt(t) || 0;
- }
-
- return results;
-};
+(function() {
+ /*
+ * jQuery 1.2.3 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $
+ * $Rev: 4663 $
+ */
+
+ // Map over jQuery in case of overwrite
+ if (window.jQuery)
+ var _jQuery = window.jQuery;
+
+ var jQuery = window.jQuery = function(selector, context) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.prototype.init(selector, context);
+ };
+
+ // Map over the $ in case of overwrite
+ if (window.$)
+ var _$ = window.$;
+
+ // Map the jQuery namespace to the '$' one
+ window.$ = jQuery;
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;
+
+ // Is it a simple selector
+ var isSimple = /^.[^:#\[\.]*$/;
+
+ jQuery.fn = jQuery.prototype = {
+ init: function(selector, context) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if (selector.nodeType) {
+ this[0] = selector;
+ this.length = 1;
+ return this;
+
+ // Handle HTML strings
+ } else if (typeof selector == "string") {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec(selector);
+
+ // Verify a match, and that no context was specified for #id
+ if (match && (match[1] || !context)) {
+
+ // HANDLE: $(html) -> $(array)
+ if (match[1])
+ selector = jQuery.clean([ match[1] ], context);
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById(match[3]);
+
+ // Make sure an element was located
+ if (elem)
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if (elem.id != match[3])
+ return jQuery().find(selector);
+
+ // Otherwise, we inject the element directly into the jQuery object
+ else {
+ this[0] = elem;
+ this.length = 1;
+ return this;
+ }
+
+ else
+ selector = [];
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return new jQuery(context).find(selector);
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if (jQuery.isFunction(selector))
+ return new jQuery(document)[ jQuery.fn.ready ? "ready"
+ : "load" ](selector);
+
+ return this.setArray(// HANDLE: $(array)
+ selector.constructor == Array && selector ||
+
+ // HANDLE: $(arraylike)
+ // Watch for when an array-like object, contains DOM nodes, is passed in as the selector
+ (selector.jquery || selector.length && selector != window
+ && !selector.nodeType && selector[0] != undefined
+ && selector[0].nodeType)
+ && jQuery.makeArray(selector) ||
+
+ // HANDLE: $(*)
+ [ selector ]);
+ },
+
+ // The current version of jQuery being used
+ jquery: "1.2.3",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // The number of elements contained in the matched element set
+ length: 0,
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function(num) {
+ return num == undefined ?
+
+ // Return a 'clean' array
+ jQuery.makeArray(this) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function(elems) {
+ // Build a new jQuery matched element set
+ var ret = jQuery(elems);
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function(elems) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply(this, elems);
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function(callback, args) {
+ return jQuery.each(this, callback, args);
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function(elem) {
+ var ret = -1;
+
+ // Locate the position of the desired element
+ this.each(function(i) {
+ if (this == elem)
+ ret = i;
+ });
+
+ return ret;
+ },
+
+ attr: function(name, value, type) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if (name.constructor == String)
+ if (value == undefined)
+ return this.length && jQuery[ type
+ || "attr" ](this[0], name) || undefined;
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i) {
+ // Set all the styles
+ for (name in options)
+ jQuery.attr(type ? this.style
+ : this, name, jQuery.prop(this, options[ name ], type, i, name));
+ });
+ },
+
+ css: function(key, value) {
+ // ignore negative width and height values
+ if ((key == 'width' || key == 'height') && parseFloat(value) < 0)
+ value = undefined;
+ return this.attr(key, value, "curCSS");
+ },
+
+ text: function(text) {
+ if (typeof text != "object" && text != null)
+ return this.empty().append((this[0] && this[0].ownerDocument
+ || document).createTextNode(text));
+
+ var ret = "";
+
+ jQuery.each(text || this, function() {
+ jQuery.each(this.childNodes, function() {
+ if (this.nodeType != 8)
+ ret += this.nodeType != 1 ? this.nodeValue
+ : jQuery.fn.text([ this ]);
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function(html) {
+ if (this[0])
+ // The elements to wrap the target around
+ jQuery(html, this[0].ownerDocument).clone().insertBefore(this[0]).map(function() {
+ var elem = this;
+
+ while (elem.firstChild)
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+
+ return this;
+ },
+
+ wrapInner: function(html) {
+ return this.each(function() {
+ jQuery(this).contents().wrapAll(html);
+ });
+ },
+
+ wrap: function(html) {
+ return this.each(function() {
+ jQuery(this).wrapAll(html);
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, false, function(elem) {
+ if (this.nodeType == 1)
+ this.appendChild(elem);
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, true, function(elem) {
+ if (this.nodeType == 1)
+ this.insertBefore(elem, this.firstChild);
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, false, function(elem) {
+ this.parentNode.insertBefore(elem, this);
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, true, function(elem) {
+ this.parentNode.insertBefore(elem, this.nextSibling);
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery([]);
+ },
+
+ find: function(selector) {
+ var elems = jQuery.map(this, function(elem) {
+ return jQuery.find(selector, elem);
+ });
+
+ return this.pushStack(/[^+>] [^+>]/.test(selector)
+ || selector.indexOf("..") > -1 ? jQuery.unique(elems)
+ : elems);
+ },
+
+ clone: function(events) {
+ // Do the clone
+ var ret = this.map(function() {
+ if (jQuery.browser.msie && !jQuery.isXMLDoc(this)) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var clone = this.cloneNode(true),
+ container = document.createElement("div");
+ container.appendChild(clone);
+ return jQuery.clean([container.innerHTML])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Need to set the expando to null on the cloned set if it exists
+ // removeData doesn't work here, IE removes it from the original as well
+ // this is primarily for IE but the data expando shouldn't be copied over in any browser
+ var clone = ret.find("*").andSelf().each(function() {
+ if (this[ expando ] != undefined)
+ this[ expando ] = null;
+ });
+
+ // Copy the events from the original to the clone
+ if (events === true)
+ this.find("*").andSelf().each(function(i) {
+ if (this.nodeType == 3)
+ return;
+ var events = jQuery.data(this, "events");
+
+ for (var type in events)
+ for (var handler in events[ type ])
+ jQuery.event.add(clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data);
+ });
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function(selector) {
+ return this.pushStack(jQuery.isFunction(selector)
+ && jQuery.grep(this, function(elem, i) {
+ return selector.call(elem, i);
+ }) ||
+
+ jQuery.multiFilter(selector, this));
+ },
+
+ not: function(selector) {
+ if (selector.constructor == String)
+ // test special case where just one selector is passed in
+ if (isSimple.test(selector))
+ return this.pushStack(jQuery.multiFilter(selector, this, true)); else
+ selector = jQuery.multiFilter(selector, this);
+
+ var isArrayLike = selector.length && selector[selector.length - 1]
+ !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray(this, selector) < 0 : this
+ != selector;
+ });
+ },
+
+ add: function(selector) {
+ return !selector ? this
+ : this.pushStack(jQuery.merge(this.get(), selector.constructor
+ == String ? jQuery(selector).get() : selector.length
+ != undefined && (!selector.nodeName
+ || jQuery.nodeName(selector, "form")) ? selector
+ : [selector]));
+ },
+
+ is: function(selector) {
+ return selector ? jQuery.multiFilter(selector, this).length > 0
+ : false;
+ },
+
+ hasClass: function(selector) {
+ return this.is("." + selector);
+ },
+
+ val: function(value) {
+ if (value == undefined) {
+
+ if (this.length) {
+ var elem = this[0];
+
+ // We need to handle select boxes special
+ if (jQuery.nodeName(elem, "select")) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if (index < 0)
+ return null;
+
+ // Loop through all the selected options
+ for (var i = one ? index : 0, max = one ? index + 1
+ : options.length; i < max; i++) {
+ var option = options[ i ];
+
+ if (option.selected) {
+ // Get the specifc value for the option
+ value = jQuery.browser.msie
+ && !option.attributes.value.specified
+ ? option.text : option.value;
+
+ // We don't need an array for one selects
+ if (one)
+ return value;
+
+ // Multi-Selects return an array
+ values.push(value);
+ }
+ }
+
+ return values;
+
+ // Everything else, we just grab the value
+ } else
+ return (this[0].value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ return this.each(function() {
+ if (this.nodeType != 1)
+ return;
+
+ if (value.constructor == Array
+ && /radio|checkbox/.test(this.type))
+ this.checked = (jQuery.inArray(this.value, value) >= 0
+ || jQuery.inArray(this.name, value) >= 0);
+
+ else if (jQuery.nodeName(this, "select")) {
+ var values = value.constructor == Array ? value : [ value ];
+
+ jQuery("option", this).each(function() {
+ this.selected = (jQuery.inArray(this.value, values) >= 0
+ || jQuery.inArray(this.text, values) >= 0);
+ });
+
+ if (!values.length)
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function(value) {
+ return value == undefined ? (this.length ? this[0].innerHTML : null)
+ : this.empty().append(value);
+ },
+
+ replaceWith: function(value) {
+ return this.after(value).remove();
+ },
+
+ eq: function(i) {
+ return this.slice(i, i + 1);
+ },
+
+ slice: function() {
+ return this.pushStack(Array.prototype.slice.apply(this, arguments));
+ },
+
+ map: function(callback) {
+ return this.pushStack(jQuery.map(this, function(elem, i) {
+ return callback.call(elem, i, elem);
+ }));
+ },
+
+ andSelf: function() {
+ return this.add(this.prevObject);
+ },
+
+ data: function(key, value) {
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if (value == null) {
+ var data = this.triggerHandler("getData" + parts[1]
+ + "!", [parts[0]]);
+
+ if (data == undefined && this.length)
+ data = jQuery.data(this[0], key);
+
+ return data == null && parts[1] ? this.data(parts[0]) : data;
+ } else
+ return this.trigger("setData" + parts[1]
+ + "!", [parts[0], value]).each(function() {
+ jQuery.data(this, key, value);
+ });
+ },
+
+ removeData: function(key) {
+ return this.each(function() {
+ jQuery.removeData(this, key);
+ });
+ },
+
+ domManip: function(args, table, reverse, callback) {
+ var clone = this.length > 1, elems;
+
+ return this.each(function() {
+ if (!elems) {
+ elems = jQuery.clean(args, this.ownerDocument);
+
+ if (reverse)
+ elems.reverse();
+ }
+
+ var obj = this;
+
+ if (table && jQuery.nodeName(this, "table")
+ && jQuery.nodeName(elems[0], "tr"))
+ obj = this.getElementsByTagName("tbody")[0]
+ || this.appendChild(this.ownerDocument.createElement("tbody"));
+
+ var scripts = jQuery([]);
+
+ jQuery.each(elems, function() {
+ var elem = clone ? jQuery(this).clone(true)[0] : this;
+
+ // execute all scripts after the elements have been injected
+ if (jQuery.nodeName(elem, "script")) {
+ scripts = scripts.add(elem);
+ } else {
+ // Remove any inner scripts for later evaluation
+ if (elem.nodeType == 1)
+ scripts = scripts.add(jQuery("script", elem).remove());
+
+ // Inject the elements into the document
+ callback.call(obj, elem);
+ }
+ });
+
+ scripts.each(evalScript);
+ });
+ }
+ };
+
+ // Give the init function the jQuery prototype for later instantiation
+ jQuery.prototype.init.prototype = jQuery.prototype;
+
+ function evalScript(i, elem) {
+ if (elem.src)
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML
+ || "");
+
+ if (elem.parentNode)
+ elem.parentNode.removeChild(elem);
+ }
+
+ jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0]
+ || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if (target.constructor == Boolean) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if (typeof target != "object" && typeof target != "function")
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if (length == 1) {
+ target = this;
+ i = 0;
+ }
+
+ for (; i < length; i++)
+ // Only deal with non-null/undefined values
+ if ((options = arguments[ i ]) != null)
+ // Extend the base object
+ for (var name in options) {
+ // Prevent never-ending loop
+ if (target === options[ name ])
+ continue;
+
+ // Recurse if we're merging object values
+ if (deep && options[ name ] && typeof options[ name ]
+ == "object" && target[ name ]
+ && !options[ name ].nodeType)
+ target[ name ]
+ = jQuery.extend(target[ name ], options[ name ]);
+
+ // Don't bring in undefined values
+ else if (options[ name ] != undefined)
+ target[ name ] = options[ name ];
+
+ }
+
+ // Return the modified object
+ return target;
+ };
+
+ var expando = "jQuery" + (new Date()).getTime(), uuid = 0, windowData = {};
+
+ // exclude the following css properties to add px
+ var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
+
+ jQuery.extend({
+ noConflict: function(deep) {
+ window.$ = _$;
+
+ if (deep)
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning this function.
+ isFunction: function(fn) {
+ return !!fn && typeof fn != "string" && !fn.nodeName
+ && fn.constructor != Array && /function/i.test(fn + "");
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function(elem) {
+ return elem.documentElement && !elem.body || elem.tagName
+ && elem.ownerDocument && !elem.ownerDocument.body;
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function(data) {
+ data = jQuery.trim(data);
+
+ if (data) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0]
+ || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if (jQuery.browser.msie)
+ script.text = data; else
+ script.appendChild(document.createTextNode(data));
+
+ head.appendChild(script);
+ head.removeChild(script);
+ }
+ },
+
+ nodeName: function(elem, name) {
+ return elem.nodeName && elem.nodeName.toUpperCase()
+ == name.toUpperCase();
+ },
+
+ cache: {},
+
+ data: function(elem, name, data) {
+ elem = elem == window ? windowData : elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if (!id)
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if (name && !jQuery.cache[ id ])
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if (data != undefined)
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ? jQuery.cache[ id ][ name ] : id;
+ },
+
+ removeData: function(elem, name) {
+ elem = elem == window ? windowData : elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if (name) {
+ if (jQuery.cache[ id ]) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for (name in jQuery.cache[ id ])
+ break;
+
+ if (!name)
+ jQuery.removeData(elem);
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e) {
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if (elem.removeAttribute)
+ elem.removeAttribute(expando);
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+
+ // args is for internal usage only
+ each: function(object, callback, args) {
+ if (args) {
+ if (object.length == undefined) {
+ for (var name in object)
+ if (callback.apply(object[ name ], args) === false)
+ break;
+ } else
+ for (var i = 0, length = object.length; i < length; i++)
+ if (callback.apply(object[ i ], args) === false)
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if (object.length == undefined) {
+ for (var name in object)
+ if (callback.call(object[ name ], name, object[ name ])
+ === false)
+ break;
+ } else
+ for (var i = 0, length = object.length, value = object[0];
+ i < length && callback.call(value, i, value) !== false;
+ value = object[++i]) {
+ }
+ }
+
+ return object;
+ },
+
+ prop: function(elem, value, type, i, name) {
+ // Handle executable functions
+ if (jQuery.isFunction(value))
+ value = value.call(elem, i);
+
+ // Handle passing in a number to a CSS property
+ return value && value.constructor == Number && type == "curCSS"
+ && !exclude.test(name) ? value + "px" : value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function(elem, classNames) {
+ jQuery.each((classNames || "").split(/\s+/), function(i,
+ className) {
+ if (elem.nodeType == 1
+ && !jQuery.className.has(elem.className, className))
+ elem.className += (elem.className ? " " : "")
+ + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function(elem, classNames) {
+ if (elem.nodeType == 1)
+ elem.className = classNames != undefined
+ ? jQuery.grep(elem.className.split(/\s+/), function(
+ className) {
+ return !jQuery.className.has(classNames, className);
+ }).join(" ") : "";
+ },
+
+ // internal only, use is(".class")
+ has: function(elem, className) {
+ return jQuery.inArray(className, (elem.className
+ || elem).toString().split(/\s+/)) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function(elem, options, callback) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for (var name in options) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call(elem);
+
+ // Revert the old values
+ for (var name in options)
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function(elem, name, force) {
+ if (name == "width" || name == "height") {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name
+ == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth
+ : elem.offsetHeight;
+ var padding = 0, border = 0;
+ jQuery.each(which, function() {
+ padding += parseFloat(jQuery.curCSS(elem, "padding"
+ + this, true)) || 0;
+ border += parseFloat(jQuery.curCSS(elem, "border" + this
+ + "Width", true)) || 0;
+ });
+ val -= Math.round(padding + border);
+ }
+
+ if (jQuery(elem).is(":visible"))
+ getWH(); else
+ jQuery.swap(elem, props, getWH);
+
+ return Math.max(0, val);
+ }
+
+ return jQuery.curCSS(elem, name, force);
+ },
+
+ curCSS: function(elem, name, force) {
+ var ret;
+
+ // A helper method for determining if an element's values are broken
+ function color(elem) {
+ if (!jQuery.browser.safari)
+ return false;
+
+ var ret = document.defaultView.getComputedStyle(elem, null);
+ return !ret || ret.getPropertyValue("color") == "";
+ }
+
+ // We need to handle opacity special in IE
+ if (name == "opacity" && jQuery.browser.msie) {
+ ret = jQuery.attr(elem.style, "opacity");
+
+ return ret == "" ? "1" : ret;
+ }
+ // Opera sometimes will give the wrong display answer, this fixes it, see #2037
+ if (jQuery.browser.opera && name == "display") {
+ var save = elem.style.outline;
+ elem.style.outline = "0 solid black";
+ elem.style.outline = save;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if (name.match(/float/i))
+ name = styleFloat;
+
+ if (!force && elem.style && elem.style[ name ])
+ ret = elem.style[ name ];
+
+ else if (document.defaultView
+ && document.defaultView.getComputedStyle) {
+
+ // Only "float" is needed here
+ if (name.match(/float/i))
+ name = "float";
+
+ name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
+
+ var getComputedStyle = document.defaultView.getComputedStyle(elem, null);
+
+ if (getComputedStyle && !color(elem))
+ ret = getComputedStyle.getPropertyValue(name);
+
+ // If the element isn't reporting its values properly in Safari
+ // then some display: none elements are involved
+ else {
+ var swap = [], stack = [];
+
+ // Locate all of the parent display: none elements
+ for (var a = elem; a && color(a); a = a.parentNode)
+ stack.unshift(a);
+
+ // Go through and make them visible, but in reverse
+ // (It would be better if we knew the exact display type that they had)
+ for (var i = 0; i < stack.length; i++)
+ if (color(stack[ i ])) {
+ swap[ i ] = stack[ i ].style.display;
+ stack[ i ].style.display = "block";
+ }
+
+ // Since we flip the display style, we have to handle that
+ // one special, otherwise get the value
+ ret = name == "display" && swap[ stack.length - 1 ] != null
+ ? "none" : ( getComputedStyle
+ && getComputedStyle.getPropertyValue(name) ) || "";
+
+ // Finally, revert the display styles back
+ for (var i = 0; i < swap.length; i++)
+ if (swap[ i ] != null)
+ stack[ i ].style.display = swap[ i ];
+ }
+
+ // We should always get a number back from opacity
+ if (name == "opacity" && ret == "")
+ ret = "1";
+
+ } else if (elem.currentStyle) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter) {
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ]
+ || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
+ // Remember the original values
+ var style = elem.style.left, runtimeStyle = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ elem.style.left = ret || 0;
+ ret = elem.style.pixelLeft + "px";
+
+ // Revert the changed values
+ elem.style.left = style;
+ elem.runtimeStyle.left = runtimeStyle;
+ }
+ }
+
+ return ret;
+ },
+
+ clean: function(elems, context) {
+ var ret = [];
+ context = context || document;
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if (typeof context.createElement == 'undefined')
+ context = context.ownerDocument || context[0]
+ && context[0].ownerDocument || document;
+
+ jQuery.each(elems, function(i, elem) {
+ if (!elem)
+ return;
+
+ if (elem.constructor == Number)
+ elem = elem.toString();
+
+ // Convert html string into DOM nodes
+ if (typeof elem == "string") {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all,
+ front,
+ tag) {
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)
+ ? all : front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = jQuery.trim(elem).toLowerCase(), div = context.createElement("div");
+
+ var wrap = // option or optgroup
+ !tags.indexOf("<opt")
+ && [ 1, "<select multiple='multiple'>", "</select>" ]
+ ||
+
+ !tags.indexOf("<leg")
+ && [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/)
+ && [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr")
+ && [ 2, "<table><tbody>", "</tbody></table>" ]
+ ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th"))
+ && [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ]
+ ||
+
+ !tags.indexOf("<col")
+ && [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ]
+ ||
+
+ // IE can't serialize <link> and <script> tags normally
+ jQuery.browser.msie && [ 1, "div<div>", "</div>" ]
+ ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while (wrap[0]--)
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if (jQuery.browser.msie) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var tbody = !tags.indexOf("<table")
+ && tags.indexOf("<tbody") < 0 ? div.firstChild
+ && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>"
+ && tags.indexOf("<tbody") < 0
+ ? div.childNodes : [];
+
+ for (var j = tbody.length - 1; j >= 0; --j)
+ if (jQuery.nodeName(tbody[ j ], "tbody")
+ && !tbody[ j ].childNodes.length)
+ tbody[ j ].parentNode.removeChild(tbody[ j ]);
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if (/^\s/.test(elem))
+ div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild);
+
+ }
+
+ elem = jQuery.makeArray(div.childNodes);
+ }
+
+ if (elem.length === 0 && (!jQuery.nodeName(elem, "form")
+ && !jQuery.nodeName(elem, "select")))
+ return;
+
+ if (elem[0] == undefined || jQuery.nodeName(elem, "form")
+ || elem.options)
+ ret.push(elem);
+
+ else
+ ret = jQuery.merge(ret, elem);
+
+ });
+
+ return ret;
+ },
+
+ attr: function(elem, name, value) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var fix = jQuery.isXMLDoc(elem) ? {} : jQuery.props;
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if (name == "selected" && jQuery.browser.safari)
+ elem.parentNode.selectedIndex;
+
+ // Certain attributes only work when accessed via the old DOM 0 way
+ if (fix[ name ]) {
+ if (value != undefined)
+ elem[ fix[ name ] ] = value;
+
+ return elem[ fix[ name ] ];
+
+ } else if (jQuery.browser.msie && name == "style")
+ return jQuery.attr(elem.style, "cssText", value);
+
+ else if (value == undefined && jQuery.browser.msie
+ && jQuery.nodeName(elem, "form") && (name == "action"
+ || name == "method"))
+ return elem.getAttributeNode(name).nodeValue;
+
+ // IE elem.getAttribute passes even for style
+ else if (elem.tagName) {
+
+ if (value != undefined) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if (name == "type" && jQuery.nodeName(elem, "input")
+ && elem.parentNode)
+ throw "type property can't be changed";
+
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute(name, "" + value);
+ }
+
+ if (jQuery.browser.msie && /href|src/.test(name)
+ && !jQuery.isXMLDoc(elem))
+ return elem.getAttribute(name, 2);
+
+ return elem.getAttribute(name);
+
+ // elem is actually elem.style ... set the style
+ } else {
+ // IE actually uses filters for opacity
+ if (name == "opacity" && jQuery.browser.msie) {
+ if (value != undefined) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter
+ || "").replace(/alpha\([^)]*\)/, "")
+ + (parseFloat(value).toString() == "NaN"
+ ? "" : "alpha(opacity=" + value * 100
+ + ")");
+ }
+
+ return elem.filter
+ && elem.filter.indexOf("opacity=") >= 0
+ ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])
+ / 100).toString() : "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all,
+ letter) {
+ return letter.toUpperCase();
+ });
+
+ if (value != undefined)
+ elem[ name ] = value;
+
+ return elem[ name ];
+ }
+ },
+
+ trim: function(text) {
+ return (text || "").replace(/^\s+|\s+$/g, "");
+ },
+
+ makeArray: function(array) {
+ var ret = [];
+
+ // Need to use typeof to fight Safari childNodes crashes
+ if (typeof array != "array")
+ for (var i = 0, length = array.length; i < length; i++)
+ ret.push(array[ i ]); else
+ ret = array.slice(0);
+
+ return ret;
+ },
+
+ inArray: function(elem, array) {
+ for (var i = 0, length = array.length; i < length; i++)
+ if (array[ i ] == elem)
+ return i;
+
+ return -1;
+ },
+
+ merge: function(first, second) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if (jQuery.browser.msie) {
+ for (var i = 0; second[ i ]; i++)
+ if (second[ i ].nodeType != 8)
+ first.push(second[ i ]);
+
+ } else
+ for (var i = 0; second[ i ]; i++)
+ first.push(second[ i ]);
+
+ return first;
+ },
+
+ unique: function(array) {
+ var ret = [], done = {};
+
+ try {
+
+ for (var i = 0, length = array.length; i < length; i++) {
+ var id = jQuery.data(array[ i ]);
+
+ if (!done[ id ]) {
+ done[ id ] = true;
+ ret.push(array[ i ]);
+ }
+ }
+
+ } catch(e) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function(elems, callback, inv) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for (var i = 0, length = elems.length; i < length; i++)
+ if (!inv && callback(elems[ i ], i) || inv
+ && !callback(elems[ i ], i))
+ ret.push(elems[ i ]);
+
+ return ret;
+ },
+
+ map: function(elems, callback) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for (var i = 0, length = elems.length; i < length; i++) {
+ var value = callback(elems[ i ], i);
+
+ if (value !== null && value != undefined) {
+ if (value.constructor != Array)
+ value = [ value ];
+
+ ret = ret.concat(value);
+ }
+ }
+
+ return ret;
+ }
+ });
+
+ var userAgent = navigator.userAgent.toLowerCase();
+
+ // Figure out what browser is being used
+ jQuery.browser = {
+ version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
+ safari: /webkit/.test(userAgent),
+ opera: /opera/.test(userAgent),
+ msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
+ mozilla: /mozilla/.test(userAgent)
+ && !/(compatible|webkit)/.test(userAgent)
+ };
+
+ var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
+
+ jQuery.extend({
+ // Check to see if the W3C box model is being used
+ boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
+
+ props: {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ innerHTML: "innerHTML",
+ className: "className",
+ value: "value",
+ disabled: "disabled",
+ checked: "checked",
+ readonly: "readOnly",
+ selected: "selected",
+ maxlength: "maxLength",
+ selectedIndex: "selectedIndex",
+ defaultValue: "defaultValue",
+ tagName: "tagName",
+ nodeName: "nodeName"
+ }
+ });
+
+ jQuery.each({
+ parent: function(elem) {
+ return elem.parentNode;
+ },
+ parents: function(elem) {
+ return jQuery.dir(elem, "parentNode");
+ },
+ next: function(elem) {
+ return jQuery.nth(elem, 2, "nextSibling");
+ },
+ prev: function(elem) {
+ return jQuery.nth(elem, 2, "previousSibling");
+ },
+ nextAll: function(elem) {
+ return jQuery.dir(elem, "nextSibling");
+ },
+ prevAll: function(elem) {
+ return jQuery.dir(elem, "previousSibling");
+ },
+ siblings: function(elem) {
+ return jQuery.sibling(elem.parentNode.firstChild, elem);
+ },
+ children: function(elem) {
+ return jQuery.sibling(elem.firstChild);
+ },
+ contents: function(elem) {
+ return jQuery.nodeName(elem, "iframe") ? elem.contentDocument
+ || elem.contentWindow.document
+ : jQuery.makeArray(elem.childNodes);
+ }
+ }, function(name, fn) {
+ jQuery.fn[ name ] = function(selector) {
+ var ret = jQuery.map(this, fn);
+
+ if (selector && typeof selector == "string")
+ ret = jQuery.multiFilter(selector, ret);
+
+ return this.pushStack(jQuery.unique(ret));
+ };
+ });
+
+ jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+ }, function(name, original) {
+ jQuery.fn[ name ] = function() {
+ var args = arguments;
+
+ return this.each(function() {
+ for (var i = 0, length = args.length; i < length; i++)
+ jQuery(args[ i ])[ original ](this);
+ });
+ };
+ });
+
+ jQuery.each({
+ removeAttr: function(name) {
+ jQuery.attr(this, name, "");
+ if (this.nodeType == 1)
+ this.removeAttribute(name);
+ },
+
+ addClass: function(classNames) {
+ jQuery.className.add(this, classNames);
+ },
+
+ removeClass: function(classNames) {
+ jQuery.className.remove(this, classNames);
+ },
+
+ toggleClass: function(classNames) {
+ jQuery.className[ jQuery.className.has(this, classNames) ? "remove"
+ : "add" ](this, classNames);
+ },
+
+ remove: function(selector) {
+ if (!selector || jQuery.filter(selector, [ this ]).r.length) {
+ // Prevent memory leaks
+ jQuery("*", this).add(this).each(function() {
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild(this);
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(">*", this).remove();
+
+ // Remove any remaining nodes
+ while (this.firstChild)
+ this.removeChild(this.firstChild);
+ }
+ }, function(name, fn) {
+ jQuery.fn[ name ] = function() {
+ return this.each(fn, arguments);
+ };
+ });
+
+ jQuery.each([ "Height", "Width" ], function(i, name) {
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function(size) {
+ // Get window width or height
+ return this[0] == window
+ ? // Opera reports document.body.client[Width/Height] properly in both quirks and standards
+ jQuery.browser.opera && document.body[ "client" + name ] ||
+
+ // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
+ jQuery.browser.safari && window[ "inner" + name ] ||
+
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat"
+ && document.documentElement[ "client" + name ]
+ || document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document
+ ? // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(Math.max(document.body["scroll"
+ + name], document.documentElement["scroll"
+ + name]), Math.max(document.body["offset"
+ + name], document.documentElement["offset" + name]))
+ :
+
+ // Get or set width or height on the element
+ size == undefined ? // Get width or height on the element
+ (this.length ? jQuery.css(this[0], type) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css(type, size.constructor == String ? size : size
+ + "px");
+ };
+ });
+
+ var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417
+ ? "(?:[\\w*_-]|\\\\.)" : "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
+ quickChild = new RegExp("^>\\s*(" + chars + "+)"),
+ quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
+ quickClass = new RegExp("^([#.]?)(" + chars + "*)");
+
+ jQuery.extend({
+ expr: {
+ "": function(a, i, m) {
+ return m[2] == "*" || jQuery.nodeName(a, m[2]);
+ },
+ "#": function(a, i, m) {
+ return a.getAttribute("id") == m[2];
+ },
+ ":": {
+ // Position Checks
+ lt: function(a, i, m) {
+ return i < m[3] - 0;
+ },
+ gt: function(a, i, m) {
+ return i > m[3] - 0;
+ },
+ nth: function(a, i, m) {
+ return m[3] - 0 == i;
+ },
+ eq: function(a, i, m) {
+ return m[3] - 0 == i;
+ },
+ first: function(a, i) {
+ return i == 0;
+ },
+ last: function(a, i, m, r) {
+ return i == r.length - 1;
+ },
+ even: function(a, i) {
+ return i % 2 == 0;
+ },
+ odd: function(a, i) {
+ return i % 2;
+ },
+
+ // Child Checks
+ "first-child": function(a) {
+ return a.parentNode.getElementsByTagName("*")[0] == a;
+ },
+ "last-child": function(a) {
+ return jQuery.nth(a.parentNode.lastChild, 1, "previousSibling")
+ == a;
+ },
+ "only-child": function(a) {
+ return !jQuery.nth(a.parentNode.lastChild, 2, "previousSibling");
+ },
+
+ // Parent Checks
+ parent: function(a) {
+ return a.firstChild;
+ },
+ empty: function(a) {
+ return !a.firstChild;
+ },
+
+ // Text Check
+ contains: function(a, i, m) {
+ return (a.textContent || a.innerText || jQuery(a).text()
+ || "").indexOf(m[3]) >= 0;
+ },
+
+ // Visibility
+ visible: function(a) {
+ return "hidden" != a.type && jQuery.css(a, "display")
+ != "none" && jQuery.css(a, "visibility")
+ != "hidden";
+ },
+ hidden: function(a) {
+ return "hidden" == a.type || jQuery.css(a, "display")
+ == "none" || jQuery.css(a, "visibility")
+ == "hidden";
+ },
+
+ // Form attributes
+ enabled: function(a) {
+ return !a.disabled;
+ },
+ disabled: function(a) {
+ return a.disabled;
+ },
+ checked: function(a) {
+ return a.checked;
+ },
+ selected: function(a) {
+ return a.selected || jQuery.attr(a, "selected");
+ },
+
+ // Form elements
+ text: function(a) {
+ return "text" == a.type;
+ },
+ radio: function(a) {
+ return "radio" == a.type;
+ },
+ checkbox: function(a) {
+ return "checkbox" == a.type;
+ },
+ file: function(a) {
+ return "file" == a.type;
+ },
+ password: function(a) {
+ return "password" == a.type;
+ },
+ submit: function(a) {
+ return "submit" == a.type;
+ },
+ image: function(a) {
+ return "image" == a.type;
+ },
+ reset: function(a) {
+ return "reset" == a.type;
+ },
+ button: function(a) {
+ return "button" == a.type || jQuery.nodeName(a, "button");
+ },
+ input: function(a) {
+ return /input|select|textarea|button/i.test(a.nodeName);
+ },
+
+ // :has()
+ has: function(a, i, m) {
+ return jQuery.find(m[3], a).length;
+ },
+
+ // :header
+ header: function(a) {
+ return /h\d/i.test(a.nodeName);
+ },
+
+ // :animated
+ animated: function(a) {
+ return jQuery.grep(jQuery.timers, function(fn) {
+ return a == fn.elem;
+ }).length;
+ }
+ }
+ },
+
+ // The regular expressions that power the parsing engine
+ parse: [
+ // Match: [@value='test'], [@foo]
+ /^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,
+
+ // Match: :contains('foo')
+ /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
+
+ // Match: :even, :last-chlid, #id, .class
+ new RegExp("^([:.#]*)(" + chars + "+)")
+ ],
+
+ multiFilter: function(expr, elems, not) {
+ var old, cur = [];
+
+ while (expr && expr != old) {
+ old = expr;
+ var f = jQuery.filter(expr, elems, not);
+ expr = f.t.replace(/^\s*,\s*/, "");
+ cur = not ? elems = f.r : jQuery.merge(cur, f.r);
+ }
+
+ return cur;
+ },
+
+ find: function(t, context) {
+ // Quickly handle non-string expressions
+ if (typeof t != "string")
+ return [ t ];
+
+ // check to make sure context is a DOM element or a document
+ if (context && context.nodeType != 1 && context.nodeType != 9)
+ return [ ];
+
+ // Set the correct context (if none is provided)
+ context = context || document;
+
+ // Initialize the search
+ var ret = [context], done = [], last, nodeName;
+
+ // Continue while a selector expression exists, and while
+ // we're no longer looping upon ourselves
+ while (t && last != t) {
+ var r = [];
+ last = t;
+
+ t = jQuery.trim(t);
+
+ var foundToken = false;
+
+ // An attempt at speeding up child selectors that
+ // point to a specific element tag
+ var re = quickChild;
+ var m = re.exec(t);
+
+ if (m) {
+ nodeName = m[1].toUpperCase();
+
+ // Perform our own iteration and filter
+ for (var i = 0; ret[i]; i++)
+ for (var c = ret[i].firstChild; c; c = c.nextSibling)
+ if (c.nodeType == 1 && (nodeName == "*"
+ || c.nodeName.toUpperCase() == nodeName))
+ r.push(c);
+
+ ret = r;
+ t = t.replace(re, "");
+ if (t.indexOf(" ") == 0) continue;
+ foundToken = true;
+ } else {
+ re = /^([>+~])\s*(\w*)/i;
+
+ if ((m = re.exec(t)) != null) {
+ r = [];
+
+ var merge = {};
+ nodeName = m[2].toUpperCase();
+ m = m[1];
+
+ for (var j = 0, rl = ret.length; j < rl; j++) {
+ var n = m == "~" || m == "+" ? ret[j].nextSibling
+ : ret[j].firstChild;
+ for (; n; n = n.nextSibling)
+ if (n.nodeType == 1) {
+ var id = jQuery.data(n);
+
+ if (m == "~" && merge[id]) break;
+
+ if (!nodeName || n.nodeName.toUpperCase()
+ == nodeName) {
+ if (m == "~") merge[id] = true;
+ r.push(n);
+ }
+
+ if (m == "+") break;
+ }
+ }
+
+ ret = r;
+
+ // And remove the token
+ t = jQuery.trim(t.replace(re, ""));
+ foundToken = true;
+ }
+ }
+
+ // See if there's still an expression, and that we haven't already
+ // matched a token
+ if (t && !foundToken) {
+ // Handle multiple expressions
+ if (!t.indexOf(",")) {
+ // Clean the result set
+ if (context == ret[0]) ret.shift();
+
+ // Merge the result sets
+ done = jQuery.merge(done, ret);
+
+ // Reset the context
+ r = ret = [context];
+
+ // Touch up the selector string
+ t = " " + t.substr(1, t.length);
+
+ } else {
+ // Optimize for the case nodeName#idName
+ var re2 = quickID;
+ var m = re2.exec(t);
+
+ // Re-organize the results, so that they're consistent
+ if (m) {
+ m = [ 0, m[2], m[3], m[1] ];
+
+ } else {
+ // Otherwise, do a traditional filter check for
+ // ID, class, and element selectors
+ re2 = quickClass;
+ m = re2.exec(t);
+ }
+
+ m[2] = m[2].replace(/\\/g, "");
+
+ var elem = ret[ret.length - 1];
+
+ // Try to do a global search by ID, where we can
+ if (m[1] == "#" && elem && elem.getElementById
+ && !jQuery.isXMLDoc(elem)) {
+ // Optimization for HTML document case
+ var oid = elem.getElementById(m[2]);
+
+ // Do a quick check for the existence of the actual ID attribute
+ // to avoid selecting by the name attribute in IE
+ // also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form
+ if ((jQuery.browser.msie || jQuery.browser.opera)
+ && oid && typeof oid.id == "string"
+ && oid.id != m[2])
+ oid = jQuery('[@id="' + m[2] + '"]', elem)[0];
+
+ // Do a quick check for node name (where applicable) so
+ // that div#foo searches will be really fast
+ ret = r = oid && (!m[3]
+ || jQuery.nodeName(oid, m[3])) ? [oid] : [];
+ } else {
+ // We need to find all descendant elements
+ for (var i = 0; ret[i]; i++) {
+ // Grab the tag name being searched for
+ var tag = m[1] == "#" && m[3] ? m[3] : m[1]
+ != "" || m[0] == "" ? "*" : m[2];
+
+ // Handle IE7 being really dumb about <object>s
+ if (tag == "*" && ret[i].nodeName.toLowerCase()
+ == "object")
+ tag = "param";
+
+ r = jQuery.merge(r, ret[i].getElementsByTagName(tag));
+ }
+
+ // It's faster to filter by class and be done with it
+ if (m[1] == ".")
+ r = jQuery.classFilter(r, m[2]);
+
+ // Same with ID filtering
+ if (m[1] == "#") {
+ var tmp = [];
+
+ // Try to find the element with the ID
+ for (var i = 0; r[i]; i++)
+ if (r[i].getAttribute("id") == m[2]) {
+ tmp = [ r[i] ];
+ break;
+ }
+
+ r = tmp;
+ }
+
+ ret = r;
+ }
+
+ t = t.replace(re2, "");
+ }
+
+ }
+
+ // If a selector string still exists
+ if (t) {
+ // Attempt to filter it
+ var val = jQuery.filter(t, r);
+ ret = r = val.r;
+ t = jQuery.trim(val.t);
+ }
+ }
+
+ // An error occurred with the selector;
+ // just return an empty set instead
+ if (t)
+ ret = [];
+
+ // Remove the root context
+ if (ret && context == ret[0])
+ ret.shift();
+
+ // And combine the results
+ done = jQuery.merge(done, ret);
+
+ return done;
+ },
+
+ classFilter: function(r, m, not) {
+ m = " " + m + " ";
+ var tmp = [];
+ for (var i = 0; r[i]; i++) {
+ var pass = (" " + r[i].className + " ").indexOf(m) >= 0;
+ if (!not && pass || not && !pass)
+ tmp.push(r[i]);
+ }
+ return tmp;
+ },
+
+ filter: function(t, r, not) {
+ var last;
+
+ // Look for common filter expressions
+ while (t && t != last) {
+ last = t;
+
+ var p = jQuery.parse, m;
+
+ for (var i = 0; p[i]; i++) {
+ m = p[i].exec(t);
+
+ if (m) {
+ // Remove what we just matched
+ t = t.substring(m[0].length);
+
+ m[2] = m[2].replace(/\\/g, "");
+ break;
+ }
+ }
+
+ if (!m)
+ break;
+
+ // :not() is a special case that can be optimized by
+ // keeping it out of the expression list
+ if (m[1] == ":" && m[2] == "not")
+ // optimize if only one selector found (most common case)
+ r = isSimple.test(m[3]) ? jQuery.filter(m[3], r, true).r
+ : jQuery(r).not(m[3]);
+
+ // We can get a big speed boost by filtering by class here
+ else if (m[1] == ".")
+ r = jQuery.classFilter(r, m[2], not);
+
+ else if (m[1] == "[") {
+ var tmp = [], type = m[3];
+
+ for (var i = 0, rl = r.length; i < rl; i++) {
+ var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];
+
+ if (z == null || /href|src|selected/.test(m[2]))
+ z = jQuery.attr(a, m[2]) || '';
+
+ if ((type == "" && !!z || type == "=" && z == m[5]
+ || type == "!=" && z != m[5] || type == "^="
+ && z && !z.indexOf(m[5]) || type == "$="
+ && z.substr(z.length - m[5].length) == m[5]
+ || (type == "*=" || type == "~=")
+ && z.indexOf(m[5]) >= 0) ^ not)
+ tmp.push(a);
+ }
+
+ r = tmp;
+
+ // We can get a speed boost by handling nth-child here
+ } else if (m[1] == ":" && m[2] == "nth-child") {
+ var merge = {}, tmp = [],
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]
+ == "even" && "2n" || m[3] == "odd"
+ && "2n+1" || !/\D/.test(m[3]) && "0n+"
+ + m[3] || m[3]),
+ // calculate the numbers (first)n+(last) including if they are negative
+ first = (test[1] + (test[2] || 1))
+ - 0, last = test[3] - 0;
+
+ // loop through all the elements left in the jQuery object
+ for (var i = 0, rl = r.length; i < rl; i++) {
+ var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);
+
+ if (!merge[id]) {
+ var c = 1;
+
+ for (var n = parentNode.firstChild; n;
+ n = n.nextSibling)
+ if (n.nodeType == 1)
+ n.nodeIndex = c++;
+
+ merge[id] = true;
+ }
+
+ var add = false;
+
+ if (first == 0) {
+ if (node.nodeIndex == last)
+ add = true;
+ } else if ((node.nodeIndex - last) % first == 0
+ && (node.nodeIndex - last) / first >= 0)
+ add = true;
+
+ if (add ^ not)
+ tmp.push(node);
+ }
+
+ r = tmp;
+
+ // Otherwise, find the expression to execute
+ } else {
+ var fn = jQuery.expr[ m[1] ];
+ if (typeof fn == "object")
+ fn = fn[ m[2] ];
+
+ if (typeof fn == "string")
+ fn = eval("false||function(a,i){return " + fn
+ + ";}");
+
+ // Execute it against the current filter
+ r = jQuery.grep(r, function(elem, i) {
+ return fn(elem, i, m, r);
+ }, not);
+ }
+ }
+
+ // Return an array of filtered elements (r)
+ // and the modified expression string (t)
+ return { r: r, t: t };
+ },
+
+ dir: function(elem, dir) {
+ var matched = [];
+ var cur = elem[dir];
+ while (cur && cur != document) {
+ if (cur.nodeType == 1)
+ matched.push(cur);
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function(cur, result, dir, elem) {
+ result = result || 1;
+ var num = 0;
+
+ for (; cur; cur = cur[dir])
+ if (cur.nodeType == 1 && ++num == result)
+ break;
+
+ return cur;
+ },
+
+ sibling: function(n, elem) {
+ var r = [];
+
+ for (; n; n = n.nextSibling) {
+ if (n.nodeType == 1 && (!elem || n != elem))
+ r.push(n);
+ }
+
+ return r;
+ }
+ });
+
+ /*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code orignated from
+ * Dean Edwards' addEvent library.
+ */
+ jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if (elem.nodeType == 3 || elem.nodeType == 8)
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if (jQuery.browser.msie && elem.setInterval != undefined)
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if (!handler.guid)
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if (data != undefined) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = function() {
+ // Pass arguments and context to original handler
+ return fn.apply(this, arguments);
+ };
+
+ // Store data in unique handler
+ handler.data = data;
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ handler.guid = fn.guid;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events")
+ || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle")
+ || jQuery.data(elem, "handle", function() {
+ // returned undefined or false
+ var val;
+
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ if (typeof jQuery == "undefined"
+ || jQuery.event.triggered)
+ return val;
+
+ val = jQuery.event.handle.apply(arguments.callee.elem, arguments);
+
+ return val;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var parts = type.split(".");
+ type = parts[0];
+ handler.type = parts[1];
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if (!jQuery.event.special[type]
+ || jQuery.event.special[type].setup.call(elem)
+ === false) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false); else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if (elem.nodeType == 3 || elem.nodeType == 8)
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if (events) {
+ // Unbind all events for the element
+ if (types == undefined || (typeof types == "string"
+ && types.charAt(0) == "."))
+ for (var type in events)
+ this.remove(elem, type + (types || "")); else {
+ // types is actually an event object here
+ if (types.type) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var parts = type.split(".");
+ type = parts[0];
+
+ if (events[type]) {
+ // remove the given handler for the given type
+ if (handler)
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for (handler in events[type])
+ // Handle the removal of namespaced events
+ if (!parts[1] || events[type][handler].type
+ == parts[1])
+ delete events[type][handler];
+
+ // remove generic event handler if no more handlers exist
+ for (ret in events[type]) break;
+ if (!ret) {
+ if (!jQuery.event.special[type]
+ || jQuery.event.special[type].teardown.call(elem)
+ === false) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false); else if (elem.detachEvent)
+ elem.detachEvent("on"
+ + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for (ret in events) break;
+ if (!ret) {
+ var handle = jQuery.data(elem, "handle");
+ if (handle) handle.elem = null;
+ jQuery.removeData(elem, "events");
+ jQuery.removeData(elem, "handle");
+ }
+ }
+ },
+
+ trigger: function(type, data, elem, donative, extra) {
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data || []);
+
+ if (type.indexOf("!") >= 0) {
+ type = type.slice(0, -1);
+ var exclusive = true;
+ }
+
+ // Handle a global trigger
+ if (!elem) {
+ // Only trigger if we've ever bound an event for it
+ if (this.global[type])
+ jQuery("*").add([window, document]).trigger(type, data);
+
+ // Handle triggering a single element
+ } else {
+ // don't do events on text and comment nodes
+ if (elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var val, ret, fn = jQuery.isFunction(elem[ type ] || null),
+ // Check to see if we need to provide a fake event, or not
+ event = !data[0] || !data[0].preventDefault;
+
+ // Pass along a fake event
+ if (event)
+ data.unshift(this.fix({ type: type, target: elem }));
+
+ // Enforce the right trigger type
+ data[0].type = type;
+ if (exclusive)
+ data[0].exclusive = true;
+
+ // Trigger the event
+ if (jQuery.isFunction(jQuery.data(elem, "handle")))
+ val = jQuery.data(elem, "handle").apply(elem, data);
+
+ // Handle triggering native .onfoo handlers
+ if (!fn && elem["on" + type] && elem["on"
+ + type].apply(elem, data) === false)
+ val = false;
+
+ // Extra functions don't get the custom event object
+ if (event)
+ data.shift();
+
+ // Handle triggering of extra function
+ if (extra && jQuery.isFunction(extra)) {
+ // call the extra function and tack the current return value on the end for possible inspection
+ ret = extra.apply(elem, val == null ? data
+ : data.concat(val));
+ // if anything is returned, give it precedence and have it overwrite the previous value
+ if (ret !== undefined)
+ val = ret;
+ }
+
+ // Trigger the native events (except for clicks on links)
+ if (fn && donative !== false && val !== false
+ && !(jQuery.nodeName(elem, 'a') && type == "click")) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {
+ }
+ }
+
+ this.triggered = false;
+ }
+
+ return val;
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var val;
+
+ // Empty object is for triggered events with no data
+ event = jQuery.event.fix(event || window.event || {});
+
+ // Namespaced event handlers
+ var parts = event.type.split(".");
+ event.type = parts[0];
+
+ var handlers = jQuery.data(this, "events")
+ && jQuery.data(this, "events")[event.type], args = Array.prototype.slice.call(arguments, 1);
+ args.unshift(event);
+
+ for (var j in handlers) {
+ var handler = handlers[j];
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ args[0].handler = handler;
+ args[0].data = handler.data;
+
+ // Filter the functions by class
+ if (!parts[1] && !event.exclusive || handler.type == parts[1]) {
+ var ret = handler.apply(this, args);
+
+ if (val !== false)
+ val = ret;
+
+ if (ret === false) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+ }
+
+ // Clean up added properties in IE to prevent memory leak
+ if (jQuery.browser.msie)
+ event.target = event.preventDefault = event.stopPropagation
+ = event.handler = event.data = null;
+
+ return val;
+ },
+
+ fix: function(event) {
+ // store a copy of the original event object
+ // and clone to set read-only properties
+ var originalEvent = event;
+ event = jQuery.extend({}, originalEvent);
+
+ // add preventDefault and stopPropagation since
+ // they will not work on the clone
+ event.preventDefault = function() {
+ // if preventDefault exists run it on the original event
+ if (originalEvent.preventDefault)
+ originalEvent.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ originalEvent.returnValue = false;
+ };
+ event.stopPropagation = function() {
+ // if stopPropagation exists run it on the original event
+ if (originalEvent.stopPropagation)
+ originalEvent.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ originalEvent.cancelBubble = true;
+ };
+
+ // Fix target property, if necessary
+ if (!event.target)
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if (event.target.nodeType == 3)
+ event.target = originalEvent.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if (!event.relatedTarget && event.fromElement)
+ event.relatedTarget = event.fromElement == event.target
+ ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if (event.pageX == null && event.clientX != null) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body
+ && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body
+ && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if (!event.which && ((event.charCode || event.charCode === 0)
+ ? event.charCode : event.keyCode))
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if (!event.metaKey && event.ctrlKey)
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if (!event.which && event.button)
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3
+ : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ special: {
+ ready: {
+ setup: function() {
+ // Make sure the ready event is setup
+ bindReady();
+ return;
+ },
+
+ teardown: function() {
+ return;
+ }
+ },
+
+ mouseenter: {
+ setup: function() {
+ if (jQuery.browser.msie) return false;
+ jQuery(this).bind("mouseover", jQuery.event.special.mouseenter.handler);
+ return true;
+ },
+
+ teardown: function() {
+ if (jQuery.browser.msie) return false;
+ jQuery(this).unbind("mouseover", jQuery.event.special.mouseenter.handler);
+ return true;
+ },
+
+ handler: function(event) {
+ // If we actually just moused on to a sub-element, ignore it
+ if (withinElement(event, this)) return true;
+ // Execute the right handlers by setting the event type to mouseenter
+ arguments[0].type = "mouseenter";
+ return jQuery.event.handle.apply(this, arguments);
+ }
+ },
+
+ mouseleave: {
+ setup: function() {
+ if (jQuery.browser.msie) return false;
+ jQuery(this).bind("mouseout", jQuery.event.special.mouseleave.handler);
+ return true;
+ },
+
+ teardown: function() {
+ if (jQuery.browser.msie) return false;
+ jQuery(this).unbind("mouseout", jQuery.event.special.mouseleave.handler);
+ return true;
+ },
+
+ handler: function(event) {
+ // If we actually just moused on to a sub-element, ignore it
+ if (withinElement(event, this)) return true;
+ // Execute the right handlers by setting the event type to mouseleave
+ arguments[0].type = "mouseleave";
+ return jQuery.event.handle.apply(this, arguments);
+ }
+ }
+ }
+ };
+
+ jQuery.fn.extend({
+ bind: function(type, data, fn) {
+ return type == "unload" ? this.one(type, data, fn)
+ : this.each(function() {
+ jQuery.event.add(this, type, fn || data, fn && data);
+ });
+ },
+
+ one: function(type, data, fn) {
+ return this.each(function() {
+ jQuery.event.add(this, type, function(event) {
+ jQuery(this).unbind(event);
+ return (fn || data).apply(this, arguments);
+ }, fn && data);
+ });
+ },
+
+ unbind: function(type, fn) {
+ return this.each(function() {
+ jQuery.event.remove(this, type, fn);
+ });
+ },
+
+ trigger: function(type, data, fn) {
+ return this.each(function() {
+ jQuery.event.trigger(type, data, this, true, fn);
+ });
+ },
+
+ triggerHandler: function(type, data, fn) {
+ if (this[0])
+ return jQuery.event.trigger(type, data, this[0], false, fn);
+ return undefined;
+ },
+
+ toggle: function() {
+ // Save reference to arguments for access in closure
+ var args = arguments;
+
+ return this.click(function(event) {
+ // Figure out which function to execute
+ this.lastToggle = 0 == this.lastToggle ? 1 : 0;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[this.lastToggle].apply(this, arguments) || false;
+ });
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if (jQuery.isReady)
+ // Execute the function immediately
+ fn.call(document, jQuery);
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push(function() {
+ return fn.call(this, jQuery);
+ });
+
+ return this;
+ }
+ });
+
+ jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if (!jQuery.isReady) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if (jQuery.readyList) {
+ // Execute all of them
+ jQuery.each(jQuery.readyList, function() {
+ this.apply(document);
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+ });
+
+ var readyBound = false;
+
+ function bindReady() {
+ if (readyBound) return;
+ readyBound = true;
+
+ // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event
+ if (document.addEventListener && !jQuery.browser.opera)
+ // Use the handy event callback
+ document.addEventListener("DOMContentLoaded", jQuery.ready, false);
+
+ // If IE is used and is not in a frame
+ // Continually check to see if the document is ready
+ if (jQuery.browser.msie && window == top) (function() {
+ if (jQuery.isReady) return;
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(error) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+
+ if (jQuery.browser.opera)
+ document.addEventListener("DOMContentLoaded", function () {
+ if (jQuery.isReady) return;
+ for (var i = 0; i < document.styleSheets.length; i++)
+ if (document.styleSheets[i].disabled) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ // and execute any waiting functions
+ jQuery.ready();
+ }, false);
+
+ if (jQuery.browser.safari) {
+ var numStyles;
+ (function() {
+ if (jQuery.isReady) return;
+ if (document.readyState != "loaded" && document.readyState
+ != "complete") {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ if (numStyles === undefined)
+ numStyles = jQuery("style, link[rel=stylesheet]").length;
+ if (document.styleSheets.length != numStyles) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add(window, "load", jQuery.ready);
+ }
+
+ jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"
+ + "mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"
+ + "submit,keydown,keypress,keyup,error").split(","), function(i,
+ name) {
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn) {
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+ });
+
+ // Checks if an event happened on an element within another element
+ // Used in jQuery.event.special.mouseenter and mouseleave handlers
+ var withinElement = function(event, elem) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while (parent && parent != elem) try {
+ parent = parent.parentNode;
+ } catch(error) {
+ parent = elem;
+ }
+ // Return true if we actually just moused on to a sub-element
+ return parent == elem;
+ };
+
+ // Prevent memory leaks in IE
+ // And prevent errors on refresh with events like mouseover in other browsers
+ // Window isn't included so as not to unbind existing unload events
+ jQuery(window).bind("unload", function() {
+ jQuery("*").add(document).unbind();
+ });
+ jQuery.fn.extend({
+ load: function(url, params, callback) {
+ if (jQuery.isFunction(url))
+ return this.bind("load", url);
+
+ var off = url.indexOf(" ");
+ if (off >= 0) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ callback = callback || function() {
+ };
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if (params)
+ // If it's a function
+ if (jQuery.isFunction(params)) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else {
+ params = jQuery.param(params);
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status) {
+ // If successful, inject the HTML into all the matched elements
+ if (status == "success" || status == "notmodified")
+ // See if a selector was specified
+ self.html(selector
+ ? // Create a dummy div to hold the results
+ jQuery("<div/>")// inject the contents of the document in, removing the scripts// to avoid any 'Permission Denied' errors in IE.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements.find(selector) :
+
+ // If not, just inject the full result
+ res.responseText);
+
+ self.each(callback, [res.responseText, status, res]);
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ return jQuery.nodeName(this, "form")
+ ? jQuery.makeArray(this.elements) : this;
+ }).filter(function() {
+ return this.name && !this.disabled && (this.checked
+ || /select|textarea/i.test(this.nodeName)
+ || /text|hidden|password/i.test(this.type));
+ }).map(function(i, elem) {
+ var val = jQuery(this).val();
+ return val == null ? null : val.constructor == Array
+ ? jQuery.map(val, function(val, i) {
+ return {name: elem.name, value: val};
+ }) : {name: elem.name, value: val};
+ }).get();
+ }
+ });
+
+ // Attach a bunch of functions for handling common AJAX events
+ jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(
+ i, o) {
+ jQuery.fn[o] = function(f) {
+ return this.bind(o, f);
+ };
+ });
+
+ var jsc = (new Date).getTime();
+
+ jQuery.extend({
+ get: function(url, data, callback, type) {
+ // shift arguments if data argument was ommited
+ if (jQuery.isFunction(data)) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function(url, callback) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function(url, data, callback) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function(url, data, callback, type) {
+ if (jQuery.isFunction(data)) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function(settings) {
+ jQuery.extend(jQuery.ajaxSettings, settings);
+ },
+
+ ajaxSettings: {
+ global: true,
+ type: "GET",
+ timeout: 0,
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ data: null,
+ username: null,
+ password: null,
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function(s) {
+ var jsonp, jsre = /=\?(&|$)/g, status, data;
+
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ // convert data if not already a string
+ if (s.data && s.processData && typeof s.data != "string")
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if (s.dataType == "jsonp") {
+ if (s.type.toLowerCase() == "get") {
+ if (!s.url.match(jsre))
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp
+ || "callback") + "=?";
+ } else if (!s.data || !s.data.match(jsre))
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp
+ || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if (s.dataType == "json" && (s.data && s.data.match(jsre)
+ || s.url.match(jsre))) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if (s.data)
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp) {
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try {
+ delete window[ jsonp ];
+ } catch(e) {
+ }
+ if (head)
+ head.removeChild(script);
+ };
+ }
+
+ if (s.dataType == "script" && s.cache == null)
+ s.cache = false;
+
+ if (s.cache === false && s.type.toLowerCase() == "get") {
+ var ts = (new Date()).getTime();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?")
+ + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if (s.data && s.type.toLowerCase() == "get") {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if (s.global && ! jQuery.active++)
+ jQuery.event.trigger("ajaxStart");
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ((!s.url.indexOf("http") || !s.url.indexOf("//")) && s.dataType
+ == "script" && s.type.toLowerCase() == "get") {
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if (!jsonp) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if (!done && (!this.readyState || this.readyState
+ == "loaded" || this.readyState == "complete")) {
+ done = true;
+ success();
+ complete();
+ head.removeChild(script);
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ var xml = window.ActiveXObject
+ ? new ActiveXObject("Microsoft.XMLHTTP")
+ : new XMLHttpRequest();
+
+ // Open the socket
+ xml.open(s.type, s.url, s.async, s.username, s.password);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if (s.data)
+ xml.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if (s.ifModified)
+ xml.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]
+ || "Thu, 01 Jan 1970 00:00:00 GMT");
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xml.setRequestHeader("Accept", s.dataType
+ && s.accepts[ s.dataType ] ? s.accepts[ s.dataType ]
+ + ", */*" : s.accepts._default);
+ } catch(e) {
+ }
+
+ // Allow custom headers/mimetypes
+ if (s.beforeSend)
+ s.beforeSend(xml);
+
+ if (s.global)
+ jQuery.event.trigger("ajaxSend", [xml, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout) {
+ // The transfer is complete and the data is available, or the request timed out
+ if (!requestDone && xml && (xml.readyState == 4 || isTimeout
+ == "timeout")) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" && "timeout"
+ || !jQuery.httpSuccess(xml) && "error"
+ || s.ifModified
+ && jQuery.httpNotModified(xml, s.url)
+ && "notmodified" || "success";
+
+ if (status == "success") {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData(xml, s.dataType);
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if (status == "success") {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xml.getResponseHeader("Last-Modified");
+ } catch(e) {
+ } // swallow exception thrown by FF if header is not available
+
+ if (s.ifModified && modRes)
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if (!jsonp)
+ success();
+ } else
+ jQuery.handleError(s, xml, status);
+
+ // Fire the complete handlers
+ complete();
+
+ // Stop memory leaks
+ if (s.async)
+ xml = null;
+ }
+ };
+
+ if (s.async) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if (s.timeout > 0)
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if (xml) {
+ // Cancel the request
+ xml.abort();
+
+ if (!requestDone)
+ onreadystatechange("timeout");
+ }
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xml.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xml, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if (!s.async)
+ onreadystatechange();
+
+ function success() {
+ // If a local callback was specified, fire it and pass it the data
+ if (s.success)
+ s.success(data, status);
+
+ // Fire the global callback
+ if (s.global)
+ jQuery.event.trigger("ajaxSuccess", [xml, s]);
+ }
+
+ function complete() {
+ // Process result
+ if (s.complete)
+ s.complete(xml, status);
+
+ // The request was completed
+ if (s.global)
+ jQuery.event.trigger("ajaxComplete", [xml, s]);
+
+ // Handle the global AJAX counter
+ if (s.global && ! --jQuery.active)
+ jQuery.event.trigger("ajaxStop");
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xml;
+ },
+
+ handleError: function(s, xml, status, e) {
+ // If a local callback was specified, fire it
+ if (s.error) s.error(xml, status, e);
+
+ // Fire the global callback
+ if (s.global)
+ jQuery.event.trigger("ajaxError", [xml, s, e]);
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function(r) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !r.status && location.protocol == "file:" || ( r.status
+ >= 200 && r.status < 300 ) || r.status == 304
+ || r.status == 1223 || jQuery.browser.safari && r.status
+ == undefined;
+ } catch(e) {
+ }
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function(xml, url) {
+ try {
+ var xmlRes = xml.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xml.status == 304 || xmlRes == jQuery.lastModified[url]
+ || jQuery.browser.safari && xml.status == undefined;
+ } catch(e) {
+ }
+ return false;
+ },
+
+ httpData: function(r, type) {
+ var ct = r.getResponseHeader("content-type");
+ var xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0;
+ var data = xml ? r.responseXML : r.responseText;
+
+ if (xml && data.documentElement.tagName == "parsererror")
+ throw "parsererror";
+
+ // If the type is "script", eval it in global context
+ if (type == "script")
+ jQuery.globalEval(data);
+
+ // Get the JavaScript object, if JSON is used.
+ if (type == "json")
+ data = eval("(" + data + ")");
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function(a) {
+ var s = [];
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if (a.constructor == Array || a.jquery)
+ // Serialize the form elements
+ jQuery.each(a, function() {
+ s.push(encodeURIComponent(this.name) + "="
+ + encodeURIComponent(this.value));
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for (var j in a)
+ // If the value is an array then the key names need to be repeated
+ if (a[j] && a[j].constructor == Array)
+ jQuery.each(a[j], function() {
+ s.push(encodeURIComponent(j) + "="
+ + encodeURIComponent(this));
+ }); else
+ s.push(encodeURIComponent(j) + "="
+ + encodeURIComponent(a[j]));
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+ });
+ jQuery.fn.extend({
+ show: function(speed, callback) {
+ return speed ? this.animate({
+ height: "show", width: "show", opacity: "show"
+ }, speed, callback) :
+
+ this.filter(":hidden").each(function() {
+ this.style.display = this.oldblock || "";
+ if (jQuery.css(this, "display") == "none") {
+ var elem = jQuery("<" + this.tagName
+ + " />").appendTo("body");
+ this.style.display = elem.css("display");
+ // handle an edge condition where css is - div { display:none; } or similar
+ if (this.style.display == "none")
+ this.style.display = "block";
+ elem.remove();
+ }
+ }).end();
+ },
+
+ hide: function(speed, callback) {
+ return speed ? this.animate({
+ height: "hide", width: "hide", opacity: "hide"
+ }, speed, callback) :
+
+ this.filter(":visible").each(function() {
+ this.oldblock = this.oldblock
+ || jQuery.css(this, "display");
+ this.style.display = "none";
+ }).end();
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function(fn, fn2) {
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2)
+ ? this._toggle(fn, fn2) : fn ? this.animate({
+ height: "toggle", width: "toggle", opacity: "toggle"
+ }, fn, fn2) : this.each(function() {
+ jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
+ });
+ },
+
+ slideDown: function(speed, callback) {
+ return this.animate({height: "show"}, speed, callback);
+ },
+
+ slideUp: function(speed, callback) {
+ return this.animate({height: "hide"}, speed, callback);
+ },
+
+ slideToggle: function(speed, callback) {
+ return this.animate({height: "toggle"}, speed, callback);
+ },
+
+ fadeIn: function(speed, callback) {
+ return this.animate({opacity: "show"}, speed, callback);
+ },
+
+ fadeOut: function(speed, callback) {
+ return this.animate({opacity: "hide"}, speed, callback);
+ },
+
+ fadeTo: function(speed, to, callback) {
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function(prop, speed, easing, callback) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each"
+ : "queue" ](function() {
+ if (this.nodeType != 1)
+ return false;
+
+ var opt = jQuery.extend({}, optall);
+ var hidden = jQuery(this).is(":hidden"), self = this;
+
+ for (var p in prop) {
+ if (prop[p] == "hide" && hidden || prop[p] == "show"
+ && !hidden)
+ return jQuery.isFunction(opt.complete)
+ && opt.complete.apply(this);
+
+ if (p == "height" || p == "width") {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if (opt.overflow != null)
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each(prop, function(name, val) {
+ var e = new jQuery.fx(self, opt, name);
+
+ if (/toggle|show|hide/.test(val))
+ e[ val == "toggle" ? hidden ? "show" : "hide"
+ : val ](prop); else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if (parts) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if (unit != "px") {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if (parts[1])
+ end = ((parts[1] == "-=" ? -1 : 1) * end)
+ + start;
+
+ e.custom(start, end, unit);
+ } else
+ e.custom(start, val, "");
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ queue: function(type, fn) {
+ if (jQuery.isFunction(type) || ( type && type.constructor
+ == Array )) {
+ fn = type;
+ type = "fx";
+ }
+
+ if (!type || (typeof type == "string" && !fn))
+ return queue(this[0], type);
+
+ return this.each(function() {
+ if (fn.constructor == Array)
+ queue(this, type, fn); else {
+ queue(this, type).push(fn);
+
+ if (queue(this, type).length == 1)
+ fn.apply(this);
+ }
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd) {
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for (var i = timers.length - 1; i >= 0; i--)
+ if (timers[i].elem == this) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+ });
+
+ var queue = function(elem, type, array) {
+ if (!elem)
+ return undefined;
+
+ type = type || "fx";
+
+ var q = jQuery.data(elem, type + "queue");
+
+ if (!q || array)
+ q = jQuery.data(elem, type + "queue", array
+ ? jQuery.makeArray(array) : []);
+
+ return q;
+ };
+
+ jQuery.fn.dequeue = function(type) {
+ type = type || "fx";
+
+ return this.each(function() {
+ var q = queue(this, type);
+
+ q.shift();
+
+ if (q.length)
+ q[0].apply(this);
+ });
+ };
+
+ jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = speed && speed.constructor == Object ? speed : {
+ complete: fn || !fn && easing || jQuery.isFunction(speed)
+ && speed,
+ duration: speed,
+ easing: fn && easing || easing && easing.constructor != Function
+ && easing
+ };
+
+ opt.duration = (opt.duration && opt.duration.constructor == Number
+ ? opt.duration : { slow: 600, fast: 200 }[opt.duration])
+ || 400;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if (opt.queue !== false)
+ jQuery(this).dequeue();
+ if (jQuery.isFunction(opt.old))
+ opt.old.apply(this);
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function(p, n, firstNum, diff) {
+ return firstNum + diff * p;
+ },
+ swing: function(p, n, firstNum, diff) {
+ return ((-Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+ timerId: null,
+
+ fx: function(elem, options, prop) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig)
+ options.orig = {};
+ }
+
+ });
+
+ jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function() {
+ if (this.options.step)
+ this.options.step.apply(this.elem, [ this.now, this ]);
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
+
+ // Set display property to block for height/width animations
+ if (this.prop == "height" || this.prop == "width")
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force) {
+ if (this.elem[this.prop] != null && this.elem.style[this.prop]
+ == null)
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r
+ : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit) {
+ this.startTime = (new Date()).getTime();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+ this.update();
+
+ var self = this;
+
+ function t(gotoEnd) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ jQuery.timers.push(t);
+
+ if (jQuery.timerId == null) {
+ jQuery.timerId = setInterval(function() {
+ var timers = jQuery.timers;
+
+ for (var i = 0; i < timers.length; i++)
+ if (!timers[i]())
+ timers.splice(i--, 1);
+
+ if (!timers.length) {
+ clearInterval(jQuery.timerId);
+ jQuery.timerId = null;
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop]
+ = jQuery.attr(this.elem.style, this.prop);
+ this.options.show = true;
+
+ // Begin the animation
+ this.custom(0, this.cur());
+
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ if (this.prop == "width" || this.prop == "height")
+ this.elem.style[this.prop] = "1px";
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop]
+ = jQuery.attr(this.elem.style, this.prop);
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd) {
+ var t = (new Date()).getTime();
+
+ if (gotoEnd || t > this.options.duration + this.startTime) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for (var i in this.options.curAnim)
+ if (this.options.curAnim[i] !== true)
+ done = false;
+
+ if (done) {
+ if (this.options.display != null) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if (jQuery.css(this.elem, "display") == "none")
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if (this.options.hide)
+ this.elem.style.display = "none";
+
+ // Reset the properties, if the item has been hidden or shown
+ if (this.options.hide || this.options.show)
+ for (var p in this.options.curAnim)
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+ }
+
+ // If a callback was provided, execute it
+ if (done && jQuery.isFunction(this.options.complete))
+ // Execute the complete function
+ this.options.complete.apply(this.elem);
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing
+ || (jQuery.easing.swing ? "swing"
+ : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+ };
+
+ jQuery.fx.step = {
+ scrollLeft: function(fx) {
+ fx.elem.scrollLeft = fx.now;
+ },
+
+ scrollTop: function(fx) {
+ fx.elem.scrollTop = fx.now;
+ },
+
+ opacity: function(fx) {
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx) {
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit;
+ }
+ };
+ // The Offset Method
+ // Originally By Brandon Aaron, part of the Dimension Plugin
+ // http://jquery.com/plugins/project/dimensions
+ jQuery.fn.offset = function() {
+ var left = 0, top = 0, elem = this[0], results;
+
+ if (elem) with (jQuery.browser) {
+ var parent = elem.parentNode,
+ offsetChild = elem,
+ offsetParent = elem.offsetParent,
+ doc = elem.ownerDocument,
+ safari2 = safari && parseInt(version) < 522
+ && !/adobeair/i.test(userAgent),
+ fixed = jQuery.css(elem, "position") == "fixed";
+
+ // Use getBoundingClientRect if available
+ if (elem.getBoundingClientRect) {
+ var box = elem.getBoundingClientRect();
+
+ // Add the document scroll offsets
+ add(box.left
+ + Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), box.top
+ + Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
+
+ // IE adds the HTML element's border, by default it is medium which is 2px
+ // IE 6 and 7 quirks mode the border width is overwritable by the following css html { border: 0; }
+ // IE 7 standards mode, the border is always 2px
+ // This border/offset is typically represented by the clientLeft and clientTop properties
+ // However, in IE6 and 7 quirks mode the clientLeft and clientTop properties are not updated when overwriting it via CSS
+ // Therefore this method will be off by 2px in IE while in quirksmode
+ add(-doc.documentElement.clientLeft, -doc.documentElement.clientTop);
+
+ // Otherwise loop through the offsetParents and parentNodes
+ } else {
+
+ // Initial element offsets
+ add(elem.offsetLeft, elem.offsetTop);
+
+ // Get parent offsets
+ while (offsetParent) {
+ // Add offsetParent offsets
+ add(offsetParent.offsetLeft, offsetParent.offsetTop);
+
+ // Mozilla and Safari > 2 does not include the border on offset parents
+ // However Mozilla adds the border for table or table cells
+ if (mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName)
+ || safari && !safari2)
+ border(offsetParent);
+
+ // Add the document scroll offsets if position is fixed on any offsetParent
+ if (!fixed && jQuery.css(offsetParent, "position")
+ == "fixed")
+ fixed = true;
+
+ // Set offsetChild to previous offsetParent unless it is the body element
+ offsetChild = /^body$/i.test(offsetParent.tagName)
+ ? offsetChild : offsetParent;
+ // Get next offsetParent
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ // Get parent scroll offsets
+ while (parent && parent.tagName
+ && !/^body|html$/i.test(parent.tagName)) {
+ // Remove parent scroll UNLESS that parent is inline or a table to work around Opera inline/table scrollLeft/Top bug
+ if (!/^inline|table.*$/i.test(jQuery.css(parent, "display")))
+ // Subtract parent scroll offsets
+ add(-parent.scrollLeft, -parent.scrollTop);
+
+ // Mozilla does not add the border for a parent that has overflow != visible
+ if (mozilla && jQuery.css(parent, "overflow") != "visible")
+ border(parent);
+
+ // Get next parent
+ parent = parent.parentNode;
+ }
+
+ // Safari <= 2 doubles body offsets with a fixed position element/offsetParent or absolutely positioned offsetChild
+ // Mozilla doubles body offsets with a non-absolutely positioned offsetChild
+ if ((safari2 && (fixed || jQuery.css(offsetChild, "position")
+ == "absolute")) || (mozilla
+ && jQuery.css(offsetChild, "position") != "absolute"))
+ add(-doc.body.offsetLeft, -doc.body.offsetTop);
+
+ // Add the document scroll offsets if position is fixed
+ if (fixed)
+ add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft), Math.max(doc.documentElement.scrollTop, doc.body.scrollTop));
+ }
+
+ // Return an object with top and left properties
+ results = { top: top, left: left };
+ }
+
+ function border(elem) {
+ add(jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, "borderTopWidth", true));
+ }
+
+ function add(l, t) {
+ left += parseInt(l) || 0;
+ top += parseInt(t) || 0;
+ }
+
+ return results;
+ };
})();
diff --git a/samples/src/main/java/gwtquery/samples/public/jquery-1.3.1.js b/samples/src/main/java/gwtquery/samples/public/jquery-1.3.1.js
index 1337b21d..0c01e44a 100644
--- a/samples/src/main/java/gwtquery/samples/public/jquery-1.3.1.js
+++ b/samples/src/main/java/gwtquery/samples/public/jquery-1.3.1.js
@@ -9,4234 +9,4366 @@
* Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009)
* Revision: 6158
*/
-(function(){
-
-var
- // Will speed up references to window, and allows munging its name.
- window = this,
- // Will speed up references to undefined, and allows munging its name.
- undefined,
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- jQuery = window.jQuery = window.$ = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context );
- },
-
- // A simple way to check for HTML strings or ID strings
- // (both of which we optimize for)
- quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
- // Is it a simple selector
- isSimple = /^.[^:#\[\.,]*$/;
-
-jQuery.fn = jQuery.prototype = {
- init: function( selector, context ) {
- // Make sure that a selection was provided
- selector = selector || document;
-
- // Handle $(DOMElement)
- if ( selector.nodeType ) {
- this[0] = selector;
- this.length = 1;
- this.context = selector;
- return this;
- }
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- // Are we dealing with HTML string or an ID?
- var match = quickExpr.exec( selector );
-
- // Verify a match, and that no context was specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] )
- selector = jQuery.clean( [ match[1] ], context );
-
- // HANDLE: $("#id")
- else {
- var elem = document.getElementById( match[3] );
-
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem && elem.id != match[3] )
- return jQuery().find( selector );
-
- // Otherwise, we inject the element directly into the jQuery object
- var ret = jQuery( elem || [] );
- ret.context = document;
- ret.selector = selector;
- return ret;
- }
-
- // HANDLE: $(expr, [context])
- // (which is just equivalent to: $(content).find(expr)
- } else
- return jQuery( context ).find( selector );
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) )
- return jQuery( document ).ready( selector );
-
- // Make sure that old selector state is passed along
- if ( selector.selector && selector.context ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return this.setArray(jQuery.makeArray(selector));
- },
-
- // Start with an empty selector
- selector: "",
-
- // The current version of jQuery being used
- jquery: "1.3.1",
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num === undefined ?
-
- // Return a 'clean' array
- jQuery.makeArray( this ) :
-
- // Return just the object
- this[ num ];
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems, name, selector ) {
- // Build a new jQuery matched element set
- var ret = jQuery( elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- ret.context = this.context;
-
- if ( name === "find" )
- ret.selector = this.selector + (this.selector ? " " : "") + selector;
- else if ( name )
- ret.selector = this.selector + "." + name + "(" + selector + ")";
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Force the current matched set of elements to become
- // the specified array of elements (destroying the stack in the process)
- // You should use pushStack() in order to do this, but maintain the stack
- setArray: function( elems ) {
- // Resetting the length to 0, then using the native Array push
- // is a super-fast way to populate an object with array-like properties
- this.length = 0;
- Array.prototype.push.apply( this, elems );
-
- return this;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem && elem.jquery ? elem[0] : elem
- , this );
- },
-
- attr: function( name, value, type ) {
- var options = name;
-
- // Look for the case where we're accessing a style value
- if ( typeof name === "string" )
- if ( value === undefined )
- return this[0] && jQuery[ type || "attr" ]( this[0], name );
-
- else {
- options = {};
- options[ name ] = value;
- }
-
- // Check to see if we're setting style values
- return this.each(function(i){
- // Set all the styles
- for ( name in options )
- jQuery.attr(
- type ?
- this.style :
- this,
- name, jQuery.prop( this, options[ name ], type, i, name )
- );
- });
- },
-
- css: function( key, value ) {
- // ignore negative width and height values
- if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
- value = undefined;
- return this.attr( key, value, "curCSS" );
- },
-
- text: function( text ) {
- if ( typeof text !== "object" && text != null )
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
-
- var ret = "";
-
- jQuery.each( text || this, function(){
- jQuery.each( this.childNodes, function(){
- if ( this.nodeType != 8 )
- ret += this.nodeType != 1 ?
- this.nodeValue :
- jQuery.fn.text( [ this ] );
- });
- });
-
- return ret;
- },
-
- wrapAll: function( html ) {
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).clone();
-
- if ( this[0].parentNode )
- wrap.insertBefore( this[0] );
-
- wrap.map(function(){
- var elem = this;
-
- while ( elem.firstChild )
- elem = elem.firstChild;
-
- return elem;
- }).append(this);
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- return this.each(function(){
- jQuery( this ).contents().wrapAll( html );
- });
- },
-
- wrap: function( html ) {
- return this.each(function(){
- jQuery( this ).wrapAll( html );
- });
- },
-
- append: function() {
- return this.domManip(arguments, true, function(elem){
- if (this.nodeType == 1)
- this.appendChild( elem );
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function(elem){
- if (this.nodeType == 1)
- this.insertBefore( elem, this.firstChild );
- });
- },
-
- before: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this );
- });
- },
-
- after: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
- },
-
- end: function() {
- return this.prevObject || jQuery( [] );
- },
-
- // For internal use only.
- // Behaves like an Array's .push method, not like a jQuery method.
- push: [].push,
-
- find: function( selector ) {
- if ( this.length === 1 && !/,/.test(selector) ) {
- var ret = this.pushStack( [], "find", selector );
- ret.length = 0;
- jQuery.find( selector, this[0], ret );
- return ret;
- } else {
- var elems = jQuery.map(this, function(elem){
- return jQuery.find( selector, elem );
- });
-
- return this.pushStack( /[^+>] [^+>]/.test( selector ) ?
- jQuery.unique( elems ) :
- elems, "find", selector );
- }
- },
-
- clone: function( events ) {
- // Do the clone
- var ret = this.map(function(){
- if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
- // IE copies events bound via attachEvent when
- // using cloneNode. Calling detachEvent on the
- // clone will also remove the events from the orignal
- // In order to get around this, we use innerHTML.
- // Unfortunately, this means some modifications to
- // attributes in IE that are actually only stored
- // as properties will not be copied (such as the
- // the name attribute on an input).
- var clone = this.cloneNode(true),
- container = document.createElement("div");
- container.appendChild(clone);
- return jQuery.clean([container.innerHTML])[0];
- } else
- return this.cloneNode(true);
- });
-
- // Need to set the expando to null on the cloned set if it exists
- // removeData doesn't work here, IE removes it from the original as well
- // this is primarily for IE but the data expando shouldn't be copied over in any browser
- var clone = ret.find("*").andSelf().each(function(){
- if ( this[ expando ] !== undefined )
- this[ expando ] = null;
- });
-
- // Copy the events from the original to the clone
- if ( events === true )
- this.find("*").andSelf().each(function(i){
- if (this.nodeType == 3)
- return;
- var events = jQuery.data( this, "events" );
-
- for ( var type in events )
- for ( var handler in events[ type ] )
- jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data );
- });
-
- // Return the cloned set
- return ret;
- },
-
- filter: function( selector ) {
- return this.pushStack(
- jQuery.isFunction( selector ) &&
- jQuery.grep(this, function(elem, i){
- return selector.call( elem, i );
- }) ||
-
- jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
- return elem.nodeType === 1;
- }) ), "filter", selector );
- },
-
- closest: function( selector ) {
- var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null;
-
- return this.map(function(){
- var cur = this;
- while ( cur && cur.ownerDocument ) {
- if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) )
- return cur;
- cur = cur.parentNode;
- }
- });
- },
-
- not: function( selector ) {
- if ( typeof selector === "string" )
- // test special case where just one selector is passed in
- if ( isSimple.test( selector ) )
- return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
- else
- selector = jQuery.multiFilter( selector, this );
-
- var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
- return this.filter(function() {
- return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
- });
- },
-
- add: function( selector ) {
- return this.pushStack( jQuery.unique( jQuery.merge(
- this.get(),
- typeof selector === "string" ?
- jQuery( selector ) :
- jQuery.makeArray( selector )
- )));
- },
-
- is: function( selector ) {
- return !!selector && jQuery.multiFilter( selector, this ).length > 0;
- },
-
- hasClass: function( selector ) {
- return !!selector && this.is( "." + selector );
- },
-
- val: function( value ) {
- if ( value === undefined ) {
- var elem = this[0];
-
- if ( elem ) {
- if( jQuery.nodeName( elem, 'option' ) )
- return (elem.attributes.value || {}).specified ? elem.value : elem.text;
-
- // We need to handle select boxes special
- if ( jQuery.nodeName( elem, "select" ) ) {
- var index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type == "select-one";
-
- // Nothing was selected
- if ( index < 0 )
- return null;
-
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
-
- if ( option.selected ) {
- // Get the specifc value for the option
- value = jQuery(option).val();
-
- // We don't need an array for one selects
- if ( one )
- return value;
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
- }
-
- // Everything else, we just grab the value
- return (elem.value || "").replace(/\r/g, "");
-
- }
-
- return undefined;
- }
-
- if ( typeof value === "number" )
- value += '';
-
- return this.each(function(){
- if ( this.nodeType != 1 )
- return;
-
- if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
- this.checked = (jQuery.inArray(this.value, value) >= 0 ||
- jQuery.inArray(this.name, value) >= 0);
-
- else if ( jQuery.nodeName( this, "select" ) ) {
- var values = jQuery.makeArray(value);
-
- jQuery( "option", this ).each(function(){
- this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
- jQuery.inArray( this.text, values ) >= 0);
- });
-
- if ( !values.length )
- this.selectedIndex = -1;
-
- } else
- this.value = value;
- });
- },
-
- html: function( value ) {
- return value === undefined ?
- (this[0] ?
- this[0].innerHTML :
- null) :
- this.empty().append( value );
- },
-
- replaceWith: function( value ) {
- return this.after( value ).remove();
- },
-
- eq: function( i ) {
- return this.slice( i, +i + 1 );
- },
-
- slice: function() {
- return this.pushStack( Array.prototype.slice.apply( this, arguments ),
- "slice", Array.prototype.slice.call(arguments).join(",") );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function(elem, i){
- return callback.call( elem, i, elem );
- }));
- },
-
- andSelf: function() {
- return this.add( this.prevObject );
- },
-
-
- domManip: function( args, table, callback ) {
- if ( this[0] ) {
- var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
- scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
- first = fragment.firstChild,
- extra = this.length > 1 ? fragment.cloneNode(true) : fragment;
-
- if ( first )
- for ( var i = 0, l = this.length; i < l; i++ )
- callback.call( root(this[i], first), i > 0 ? extra.cloneNode(true) : fragment );
-
- if ( scripts )
- jQuery.each( scripts, evalScript );
- }
-
- return this;
-
- function root( elem, cur ) {
- return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
- }
- }
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-function evalScript( i, elem ) {
- if ( elem.src )
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
-
- else
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
-
- if ( elem.parentNode )
- elem.parentNode.removeChild( elem );
-}
-
-function now(){
- return +new Date;
-}
-
-jQuery.extend = jQuery.fn.extend = function() {
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) )
- target = {};
-
- // extend jQuery itself if only one argument is passed
- if ( length == i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ )
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null )
- // Extend the base object
- for ( var name in options ) {
- var src = target[ name ], copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy )
- continue;
-
- // Recurse if we're merging object values
- if ( deep && copy && typeof copy === "object" && !copy.nodeType )
- target[ name ] = jQuery.extend( deep,
- // Never move original objects, clone them
- src || ( copy.length != null ? [ ] : { } )
- , copy );
-
- // Don't bring in undefined values
- else if ( copy !== undefined )
- target[ name ] = copy;
-
- }
-
- // Return the modified object
- return target;
-};
-
-// exclude the following css properties to add px
-var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
- // cache defaultView
- defaultView = document.defaultView || {},
- toString = Object.prototype.toString;
-
-jQuery.extend({
- noConflict: function( deep ) {
- window.$ = _$;
-
- if ( deep )
- window.jQuery = _jQuery;
-
- return jQuery;
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return toString.call(obj) === "[object Function]";
- },
-
- isArray: function( obj ) {
- return toString.call(obj) === "[object Array]";
- },
-
- // check if an element is in a (or is an) XML document
- isXMLDoc: function( elem ) {
- return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
- !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
- },
-
- // Evalulates a script in a global context
- globalEval: function( data ) {
- data = jQuery.trim( data );
-
- if ( data ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
-
- script.type = "text/javascript";
- if ( jQuery.support.scriptEval )
- script.appendChild( document.createTextNode( data ) );
- else
- script.text = data;
-
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709).
- head.insertBefore( script, head.firstChild );
- head.removeChild( script );
- }
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
- },
-
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0, length = object.length;
-
- if ( args ) {
- if ( length === undefined ) {
- for ( name in object )
- if ( callback.apply( object[ name ], args ) === false )
- break;
- } else
- for ( ; i < length; )
- if ( callback.apply( object[ i++ ], args ) === false )
- break;
-
- // A special, fast, case for the most common use of each
- } else {
- if ( length === undefined ) {
- for ( name in object )
- if ( callback.call( object[ name ], name, object[ name ] ) === false )
- break;
- } else
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
- }
-
- return object;
- },
-
- prop: function( elem, value, type, i, name ) {
- // Handle executable functions
- if ( jQuery.isFunction( value ) )
- value = value.call( elem, i );
-
- // Handle passing in a number to a CSS property
- return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
- value + "px" :
- value;
- },
-
- className: {
- // internal only, use addClass("class")
- add: function( elem, classNames ) {
- jQuery.each((classNames || "").split(/\s+/), function(i, className){
- if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
- elem.className += (elem.className ? " " : "") + className;
- });
- },
-
- // internal only, use removeClass("class")
- remove: function( elem, classNames ) {
- if (elem.nodeType == 1)
- elem.className = classNames !== undefined ?
- jQuery.grep(elem.className.split(/\s+/), function(className){
- return !jQuery.className.has( classNames, className );
- }).join(" ") :
- "";
- },
-
- // internal only, use hasClass("class")
- has: function( elem, className ) {
- return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
- }
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- callback.call( elem );
-
- // Revert the old values
- for ( var name in options )
- elem.style[ name ] = old[ name ];
- },
-
- css: function( elem, name, force ) {
- if ( name == "width" || name == "height" ) {
- var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
-
- function getWH() {
- val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
- var padding = 0, border = 0;
- jQuery.each( which, function() {
- padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
- border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
- });
- val -= Math.round(padding + border);
- }
-
- if ( jQuery(elem).is(":visible") )
- getWH();
- else
- jQuery.swap( elem, props, getWH );
-
- return Math.max(0, val);
- }
-
- return jQuery.curCSS( elem, name, force );
- },
-
- curCSS: function( elem, name, force ) {
- var ret, style = elem.style;
-
- // We need to handle opacity special in IE
- if ( name == "opacity" && !jQuery.support.opacity ) {
- ret = jQuery.attr( style, "opacity" );
-
- return ret == "" ?
- "1" :
- ret;
- }
-
- // Make sure we're using the right name for getting the float value
- if ( name.match( /float/i ) )
- name = styleFloat;
-
- if ( !force && style && style[ name ] )
- ret = style[ name ];
-
- else if ( defaultView.getComputedStyle ) {
-
- // Only "float" is needed here
- if ( name.match( /float/i ) )
- name = "float";
-
- name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
-
- var computedStyle = defaultView.getComputedStyle( elem, null );
-
- if ( computedStyle )
- ret = computedStyle.getPropertyValue( name );
-
- // We should always get a number back from opacity
- if ( name == "opacity" && ret == "" )
- ret = "1";
-
- } else if ( elem.currentStyle ) {
- var camelCase = name.replace(/\-(\w)/g, function(all, letter){
- return letter.toUpperCase();
- });
-
- ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
- // Remember the original values
- var left = style.left, rsLeft = elem.runtimeStyle.left;
+(function() {
+
+ var // Will speed up references to window, and allows munging its name.
+ window = this,
+ // Will speed up references to undefined, and allows munging its name.
+ undefined,
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ jQuery = window.jQuery = window.$ = function(selector, context) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init(selector, context);
+ },
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/;
+
+ jQuery.fn = jQuery.prototype = {
+ init: function(selector, context) {
+ // Make sure that a selection was provided
+ selector = selector || document;
+
+ // Handle $(DOMElement)
+ if (selector.nodeType) {
+ this[0] = selector;
+ this.length = 1;
+ this.context = selector;
+ return this;
+ }
+ // Handle HTML strings
+ if (typeof selector === "string") {
+ // Are we dealing with HTML string or an ID?
+ var match = quickExpr.exec(selector);
+
+ // Verify a match, and that no context was specified for #id
+ if (match && (match[1] || !context)) {
+
+ // HANDLE: $(html) -> $(array)
+ if (match[1])
+ selector = jQuery.clean([ match[1] ], context);
+
+ // HANDLE: $("#id")
+ else {
+ var elem = document.getElementById(match[3]);
+
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if (elem && elem.id != match[3])
+ return jQuery().find(selector);
+
+ // Otherwise, we inject the element directly into the jQuery object
+ var ret = jQuery(elem || []);
+ ret.context = document;
+ ret.selector = selector;
+ return ret;
+ }
+
+ // HANDLE: $(expr, [context])
+ // (which is just equivalent to: $(content).find(expr)
+ } else
+ return jQuery(context).find(selector);
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if (jQuery.isFunction(selector))
+ return jQuery(document).ready(selector);
+
+ // Make sure that old selector state is passed along
+ if (selector.selector && selector.context) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return this.setArray(jQuery.makeArray(selector));
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.3.1",
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function(num) {
+ return num === undefined ?
+
+ // Return a 'clean' array
+ jQuery.makeArray(this) :
+
+ // Return just the object
+ this[ num ];
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function(elems, name, selector) {
+ // Build a new jQuery matched element set
+ var ret = jQuery(elems);
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if (name === "find")
+ ret.selector = this.selector + (this.selector ? " " : "")
+ + selector; else if (name)
+ ret.selector = this.selector + "." + name + "(" + selector
+ + ")";
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Force the current matched set of elements to become
+ // the specified array of elements (destroying the stack in the process)
+ // You should use pushStack() in order to do this, but maintain the stack
+ setArray: function(elems) {
+ // Resetting the length to 0, then using the native Array push
+ // is a super-fast way to populate an object with array-like properties
+ this.length = 0;
+ Array.prototype.push.apply(this, elems);
+
+ return this;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function(callback, args) {
+ return jQuery.each(this, callback, args);
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function(elem) {
+ // Locate the position of the desired element
+ return jQuery.inArray(// If it receives a jQuery object, the first element is used
+ elem && elem.jquery ? elem[0] : elem, this);
+ },
+
+ attr: function(name, value, type) {
+ var options = name;
+
+ // Look for the case where we're accessing a style value
+ if (typeof name === "string")
+ if (value === undefined)
+ return this[0] && jQuery[ type || "attr" ](this[0], name);
+
+ else {
+ options = {};
+ options[ name ] = value;
+ }
+
+ // Check to see if we're setting style values
+ return this.each(function(i) {
+ // Set all the styles
+ for (name in options)
+ jQuery.attr(type ? this.style
+ : this, name, jQuery.prop(this, options[ name ], type, i, name));
+ });
+ },
+
+ css: function(key, value) {
+ // ignore negative width and height values
+ if ((key == 'width' || key == 'height') && parseFloat(value) < 0)
+ value = undefined;
+ return this.attr(key, value, "curCSS");
+ },
+
+ text: function(text) {
+ if (typeof text !== "object" && text != null)
+ return this.empty().append((this[0] && this[0].ownerDocument
+ || document).createTextNode(text));
+
+ var ret = "";
+
+ jQuery.each(text || this, function() {
+ jQuery.each(this.childNodes, function() {
+ if (this.nodeType != 8)
+ ret += this.nodeType != 1 ? this.nodeValue
+ : jQuery.fn.text([ this ]);
+ });
+ });
+
+ return ret;
+ },
+
+ wrapAll: function(html) {
+ if (this[0]) {
+ // The elements to wrap the target around
+ var wrap = jQuery(html, this[0].ownerDocument).clone();
+
+ if (this[0].parentNode)
+ wrap.insertBefore(this[0]);
+
+ wrap.map(function() {
+ var elem = this;
+
+ while (elem.firstChild)
+ elem = elem.firstChild;
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function(html) {
+ return this.each(function() {
+ jQuery(this).contents().wrapAll(html);
+ });
+ },
+
+ wrap: function(html) {
+ return this.each(function() {
+ jQuery(this).wrapAll(html);
+ });
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function(elem) {
+ if (this.nodeType == 1)
+ this.appendChild(elem);
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function(elem) {
+ if (this.nodeType == 1)
+ this.insertBefore(elem, this.firstChild);
+ });
+ },
+
+ before: function() {
+ return this.domManip(arguments, false, function(elem) {
+ this.parentNode.insertBefore(elem, this);
+ });
+ },
+
+ after: function() {
+ return this.domManip(arguments, false, function(elem) {
+ this.parentNode.insertBefore(elem, this.nextSibling);
+ });
+ },
+
+ end: function() {
+ return this.prevObject || jQuery([]);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's .push method, not like a jQuery method.
+ push: [].push,
+
+ find: function(selector) {
+ if (this.length === 1 && !/,/.test(selector)) {
+ var ret = this.pushStack([], "find", selector);
+ ret.length = 0;
+ jQuery.find(selector, this[0], ret);
+ return ret;
+ } else {
+ var elems = jQuery.map(this, function(elem) {
+ return jQuery.find(selector, elem);
+ });
+
+ return this.pushStack(/[^+>] [^+>]/.test(selector)
+ ? jQuery.unique(elems) : elems, "find", selector);
+ }
+ },
+
+ clone: function(events) {
+ // Do the clone
+ var ret = this.map(function() {
+ if (!jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this)) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var clone = this.cloneNode(true),
+ container = document.createElement("div");
+ container.appendChild(clone);
+ return jQuery.clean([container.innerHTML])[0];
+ } else
+ return this.cloneNode(true);
+ });
+
+ // Need to set the expando to null on the cloned set if it exists
+ // removeData doesn't work here, IE removes it from the original as well
+ // this is primarily for IE but the data expando shouldn't be copied over in any browser
+ var clone = ret.find("*").andSelf().each(function() {
+ if (this[ expando ] !== undefined)
+ this[ expando ] = null;
+ });
+
+ // Copy the events from the original to the clone
+ if (events === true)
+ this.find("*").andSelf().each(function(i) {
+ if (this.nodeType == 3)
+ return;
+ var events = jQuery.data(this, "events");
+
+ for (var type in events)
+ for (var handler in events[ type ])
+ jQuery.event.add(clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data);
+ });
+
+ // Return the cloned set
+ return ret;
+ },
+
+ filter: function(selector) {
+ return this.pushStack(jQuery.isFunction(selector)
+ && jQuery.grep(this, function(elem, i) {
+ return selector.call(elem, i);
+ }) ||
+
+ jQuery.multiFilter(selector, jQuery.grep(this, function(
+ elem) {
+ return elem.nodeType === 1;
+ })), "filter", selector);
+ },
+
+ closest: function(selector) {
+ var pos = jQuery.expr.match.POS.test(selector) ? jQuery(selector)
+ : null;
+
+ return this.map(function() {
+ var cur = this;
+ while (cur && cur.ownerDocument) {
+ if (pos ? pos.index(cur) > -1 : jQuery(cur).is(selector))
+ return cur;
+ cur = cur.parentNode;
+ }
+ });
+ },
+
+ not: function(selector) {
+ if (typeof selector === "string")
+ // test special case where just one selector is passed in
+ if (isSimple.test(selector))
+ return this.pushStack(jQuery.multiFilter(selector, this, true), "not", selector); else
+ selector = jQuery.multiFilter(selector, this);
+
+ var isArrayLike = selector.length && selector[selector.length - 1]
+ !== undefined && !selector.nodeType;
+ return this.filter(function() {
+ return isArrayLike ? jQuery.inArray(this, selector) < 0 : this
+ != selector;
+ });
+ },
+
+ add: function(selector) {
+ return this.pushStack(jQuery.unique(jQuery.merge(this.get(), typeof selector
+ === "string" ? jQuery(selector)
+ : jQuery.makeArray(selector))));
+ },
+
+ is: function(selector) {
+ return !!selector && jQuery.multiFilter(selector, this).length > 0;
+ },
+
+ hasClass: function(selector) {
+ return !!selector && this.is("." + selector);
+ },
+
+ val: function(value) {
+ if (value === undefined) {
+ var elem = this[0];
+
+ if (elem) {
+ if (jQuery.nodeName(elem, 'option'))
+ return (elem.attributes.value || {}).specified
+ ? elem.value : elem.text;
+
+ // We need to handle select boxes special
+ if (jQuery.nodeName(elem, "select")) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type == "select-one";
+
+ // Nothing was selected
+ if (index < 0)
+ return null;
+
+ // Loop through all the selected options
+ for (var i = one ? index : 0, max = one ? index + 1
+ : options.length; i < max; i++) {
+ var option = options[ i ];
+
+ if (option.selected) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if (one)
+ return value;
+
+ // Multi-Selects return an array
+ values.push(value);
+ }
+ }
+
+ return values;
+ }
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(/\r/g, "");
+
+ }
+
+ return undefined;
+ }
+
+ if (typeof value === "number")
+ value += '';
+
+ return this.each(function() {
+ if (this.nodeType != 1)
+ return;
+
+ if (jQuery.isArray(value) && /radio|checkbox/.test(this.type))
+ this.checked = (jQuery.inArray(this.value, value) >= 0
+ || jQuery.inArray(this.name, value) >= 0);
+
+ else if (jQuery.nodeName(this, "select")) {
+ var values = jQuery.makeArray(value);
+
+ jQuery("option", this).each(function() {
+ this.selected = (jQuery.inArray(this.value, values) >= 0
+ || jQuery.inArray(this.text, values) >= 0);
+ });
+
+ if (!values.length)
+ this.selectedIndex = -1;
+
+ } else
+ this.value = value;
+ });
+ },
+
+ html: function(value) {
+ return value === undefined ? (this[0] ? this[0].innerHTML : null)
+ : this.empty().append(value);
+ },
+
+ replaceWith: function(value) {
+ return this.after(value).remove();
+ },
+
+ eq: function(i) {
+ return this.slice(i, +i + 1);
+ },
+
+ slice: function() {
+ return this.pushStack(Array.prototype.slice.apply(this, arguments), "slice", Array.prototype.slice.call(arguments).join(","));
+ },
+
+ map: function(callback) {
+ return this.pushStack(jQuery.map(this, function(elem, i) {
+ return callback.call(elem, i, elem);
+ }));
+ },
+
+ andSelf: function() {
+ return this.add(this.prevObject);
+ },
+
+
+ domManip: function(args, table, callback) {
+ if (this[0]) {
+ var fragment = (this[0].ownerDocument
+ || this[0]).createDocumentFragment(),
+ scripts = jQuery.clean(args, (this[0].ownerDocument
+ || this[0]), fragment),
+ first = fragment.firstChild,
+ extra = this.length > 1 ? fragment.cloneNode(true)
+ : fragment;
+
+ if (first)
+ for (var i = 0, l = this.length; i < l; i++)
+ callback.call(root(this[i], first), i > 0
+ ? extra.cloneNode(true) : fragment);
+
+ if (scripts)
+ jQuery.each(scripts, evalScript);
+ }
+
+ return this;
+
+ function root(elem, cur) {
+ return table && jQuery.nodeName(elem, "table")
+ && jQuery.nodeName(cur, "tr")
+ ? (elem.getElementsByTagName("tbody")[0]
+ || elem.appendChild(elem.ownerDocument.createElement("tbody")))
+ : elem;
+ }
+ }
+ };
+
+ // Give the init function the jQuery prototype for later instantiation
+ jQuery.fn.init.prototype = jQuery.fn;
+
+ function evalScript(i, elem) {
+ if (elem.src)
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+
+ else
+ jQuery.globalEval(elem.text || elem.textContent || elem.innerHTML
+ || "");
+
+ if (elem.parentNode)
+ elem.parentNode.removeChild(elem);
+ }
+
+ function now() {
+ return +new Date;
+ }
+
+ jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0]
+ || {}, i = 1, length = arguments.length, deep = false, options;
+
+ // Handle a deep copy situation
+ if (typeof target === "boolean") {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if (typeof target !== "object" && !jQuery.isFunction(target))
+ target = {};
+
+ // extend jQuery itself if only one argument is passed
+ if (length == i) {
+ target = this;
+ --i;
+ }
+
+ for (; i < length; i++)
+ // Only deal with non-null/undefined values
+ if ((options = arguments[ i ]) != null)
+ // Extend the base object
+ for (var name in options) {
+ var src = target[ name ], copy = options[ name ];
+
+ // Prevent never-ending loop
+ if (target === copy)
+ continue;
+
+ // Recurse if we're merging object values
+ if (deep && copy && typeof copy === "object"
+ && !copy.nodeType)
+ target[ name ]
+ = jQuery.extend(deep, // Never move original objects, clone them
+ src || ( copy.length != null ? [ ]
+ : { } ), copy);
+
+ // Don't bring in undefined values
+ else if (copy !== undefined)
+ target[ name ] = copy;
+
+ }
+
+ // Return the modified object
+ return target;
+ };
+
+ // exclude the following css properties to add px
+ var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ // cache defaultView
+ defaultView = document.defaultView || {},
+ toString = Object.prototype.toString;
+
+ jQuery.extend({
+ noConflict: function(deep) {
+ window.$ = _$;
+
+ if (deep)
+ window.jQuery = _jQuery;
+
+ return jQuery;
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function(obj) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function(obj) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ // check if an element is in a (or is an) XML document
+ isXMLDoc: function(elem) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName
+ !== "HTML" || !!elem.ownerDocument
+ && jQuery.isXMLDoc(elem.ownerDocument);
+ },
+
+ // Evalulates a script in a global context
+ globalEval: function(data) {
+ data = jQuery.trim(data);
+
+ if (data) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0]
+ || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+ if (jQuery.support.scriptEval)
+ script.appendChild(document.createTextNode(data)); else
+ script.text = data;
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore(script, head.firstChild);
+ head.removeChild(script);
+ }
+ },
+
+ nodeName: function(elem, name) {
+ return elem.nodeName && elem.nodeName.toUpperCase()
+ == name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function(object, callback, args) {
+ var name, i = 0, length = object.length;
+
+ if (args) {
+ if (length === undefined) {
+ for (name in object)
+ if (callback.apply(object[ name ], args) === false)
+ break;
+ } else
+ for (; i < length;)
+ if (callback.apply(object[ i++ ], args) === false)
+ break;
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if (length === undefined) {
+ for (name in object)
+ if (callback.call(object[ name ], name, object[ name ])
+ === false)
+ break;
+ } else
+ for (var value = object[0];
+ i < length && callback.call(value, i, value) !== false;
+ value = object[++i]) {
+ }
+ }
+
+ return object;
+ },
+
+ prop: function(elem, value, type, i, name) {
+ // Handle executable functions
+ if (jQuery.isFunction(value))
+ value = value.call(elem, i);
+
+ // Handle passing in a number to a CSS property
+ return typeof value === "number" && type == "curCSS"
+ && !exclude.test(name) ? value + "px" : value;
+ },
+
+ className: {
+ // internal only, use addClass("class")
+ add: function(elem, classNames) {
+ jQuery.each((classNames || "").split(/\s+/), function(i,
+ className) {
+ if (elem.nodeType == 1
+ && !jQuery.className.has(elem.className, className))
+ elem.className += (elem.className ? " " : "")
+ + className;
+ });
+ },
+
+ // internal only, use removeClass("class")
+ remove: function(elem, classNames) {
+ if (elem.nodeType == 1)
+ elem.className = classNames !== undefined
+ ? jQuery.grep(elem.className.split(/\s+/), function(
+ className) {
+ return !jQuery.className.has(classNames, className);
+ }).join(" ") : "";
+ },
+
+ // internal only, use hasClass("class")
+ has: function(elem, className) {
+ return elem && jQuery.inArray(className, (elem.className
+ || elem).toString().split(/\s+/)) > -1;
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function(elem, options, callback) {
+ var old = {};
+ // Remember the old values, and insert the new ones
+ for (var name in options) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call(elem);
+
+ // Revert the old values
+ for (var name in options)
+ elem.style[ name ] = old[ name ];
+ },
+
+ css: function(elem, name, force) {
+ if (name == "width" || name == "height") {
+ var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name
+ == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+
+ function getWH() {
+ val = name == "width" ? elem.offsetWidth
+ : elem.offsetHeight;
+ var padding = 0, border = 0;
+ jQuery.each(which, function() {
+ padding += parseFloat(jQuery.curCSS(elem, "padding"
+ + this, true)) || 0;
+ border += parseFloat(jQuery.curCSS(elem, "border" + this
+ + "Width", true)) || 0;
+ });
+ val -= Math.round(padding + border);
+ }
+
+ if (jQuery(elem).is(":visible"))
+ getWH(); else
+ jQuery.swap(elem, props, getWH);
+
+ return Math.max(0, val);
+ }
+
+ return jQuery.curCSS(elem, name, force);
+ },
+
+ curCSS: function(elem, name, force) {
+ var ret, style = elem.style;
+
+ // We need to handle opacity special in IE
+ if (name == "opacity" && !jQuery.support.opacity) {
+ ret = jQuery.attr(style, "opacity");
+
+ return ret == "" ? "1" : ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if (name.match(/float/i))
+ name = styleFloat;
+
+ if (!force && style && style[ name ])
+ ret = style[ name ];
+
+ else if (defaultView.getComputedStyle) {
+
+ // Only "float" is needed here
+ if (name.match(/float/i))
+ name = "float";
+
+ name = name.replace(/([A-Z])/g, "-$1").toLowerCase();
+
+ var computedStyle = defaultView.getComputedStyle(elem, null);
+
+ if (computedStyle)
+ ret = computedStyle.getPropertyValue(name);
+
+ // We should always get a number back from opacity
+ if (name == "opacity" && ret == "")
+ ret = "1";
+
+ } else if (elem.currentStyle) {
+ var camelCase = name.replace(/\-(\w)/g, function(all, letter) {
+ return letter.toUpperCase();
+ });
+
+ ret = elem.currentStyle[ name ]
+ || elem.currentStyle[ camelCase ];
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if (!/^\d+(px)?$/i.test(ret) && /^\d/.test(ret)) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = ret || 0;
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
+
+ return ret;
+ },
- // Put in the new values to get a computed value out
- elem.runtimeStyle.left = elem.currentStyle.left;
- style.left = ret || 0;
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- elem.runtimeStyle.left = rsLeft;
- }
- }
-
- return ret;
- },
-
- clean: function( elems, context, fragment ) {
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" )
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
-
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
- var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
- if ( match )
- return [ context.createElement( match[1] ) ];
- }
-
- var ret = [], scripts = [], div = context.createElement("div");
-
- jQuery.each(elems, function(i, elem){
- if ( typeof elem === "number" )
- elem += '';
-
- if ( !elem )
- return;
-
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
- return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
- all :
- front + "></" + tag + ">";
- });
-
- // Trim whitespace, otherwise indexOf won't work as expected
- var tags = jQuery.trim( elem ).toLowerCase();
-
- var wrap =
- // option or optgroup
- !tags.indexOf("<opt") &&
- [ 1, "<select multiple='multiple'>", "</select>" ] ||
-
- !tags.indexOf("<leg") &&
- [ 1, "<fieldset>", "</fieldset>" ] ||
-
- tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
- [ 1, "<table>", "</table>" ] ||
-
- !tags.indexOf("<tr") &&
- [ 2, "<table><tbody>", "</tbody></table>" ] ||
-
- // <thead> matched above
- (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
- [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
-
- !tags.indexOf("<col") &&
- [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
-
- // IE can't serialize <link> and <script> tags normally
- !jQuery.support.htmlSerialize &&
- [ 1, "div<div>", "</div>" ] ||
-
- [ 0, "", "" ];
-
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
-
- // Move to the right depth
- while ( wrap[0]-- )
- div = div.lastChild;
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- var tbody = !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 ?
- div.firstChild && div.firstChild.childNodes :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] == "<table>" && tags.indexOf("<tbody") < 0 ?
- div.childNodes :
- [];
-
- for ( var j = tbody.length - 1; j >= 0 ; --j )
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
-
- }
-
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
- div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-
- elem = jQuery.makeArray( div.childNodes );
- }
-
- if ( elem.nodeType )
- ret.push( elem );
- else
- ret = jQuery.merge( ret, elem );
-
- });
-
- if ( fragment ) {
- for ( var i = 0; ret[i]; i++ ) {
- if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
- } else {
- if ( ret[i].nodeType === 1 )
- ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
- fragment.appendChild( ret[i] );
- }
- }
-
- return scripts;
- }
-
- return ret;
- },
-
- attr: function( elem, name, value ) {
- // don't set attributes on text and comment nodes
- if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
- return undefined;
-
- var notxml = !jQuery.isXMLDoc( elem ),
- // Whether we are setting (or getting)
- set = value !== undefined;
-
- // Try to normalize/fix the name
- name = notxml && jQuery.props[ name ] || name;
-
- // Only do all the following if this is a node (faster for style)
- // IE elem.getAttribute passes even for style
- if ( elem.tagName ) {
-
- // These attributes require special treatment
- var special = /href|src|style/.test( name );
-
- // Safari mis-reports the default selected property of a hidden option
- // Accessing the parent's selectedIndex property fixes it
- if ( name == "selected" && elem.parentNode )
- elem.parentNode.selectedIndex;
-
- // If applicable, access the attribute via the DOM 0 way
- if ( name in elem && notxml && !special ) {
- if ( set ){
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
- throw "type property can't be changed";
-
- elem[ name ] = value;
- }
-
- // browsers index elements by id/name on forms, give priority to attributes.
- if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
- return elem.getAttributeNode( name ).nodeValue;
-
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- if ( name == "tabIndex" ) {
- var attributeNode = elem.getAttributeNode( "tabIndex" );
- return attributeNode && attributeNode.specified
- ? attributeNode.value
- : elem.nodeName.match(/(button|input|object|select|textarea)/i)
- ? 0
- : elem.nodeName.match(/^(a|area)$/i) && elem.href
- ? 0
- : undefined;
- }
-
- return elem[ name ];
- }
-
- if ( !jQuery.support.style && notxml && name == "style" )
- return jQuery.attr( elem.style, "cssText", value );
-
- if ( set )
- // convert the value to a string (all browsers do this but IE) see #1070
- elem.setAttribute( name, "" + value );
-
- var attr = !jQuery.support.hrefNormalized && notxml && special
- // Some attributes require a special call on IE
- ? elem.getAttribute( name, 2 )
- : elem.getAttribute( name );
-
- // Non-existent attributes return null, we normalize to undefined
- return attr === null ? undefined : attr;
- }
-
- // elem is actually elem.style ... set the style
-
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name == "opacity" ) {
- if ( set ) {
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- elem.zoom = 1;
-
- // Set the alpha filter to set the opacity
- elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
- (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
- }
-
- return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
- (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
- "";
- }
-
- name = name.replace(/-([a-z])/ig, function(all, letter){
- return letter.toUpperCase();
- });
-
- if ( set )
- elem[ name ] = value;
-
- return elem[ name ];
- },
-
- trim: function( text ) {
- return (text || "").replace( /^\s+|\s+$/g, "" );
- },
-
- makeArray: function( array ) {
- var ret = [];
-
- if( array != null ){
- var i = array.length;
- // The window, strings (and functions) also have 'length'
- if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
- ret[0] = array;
- else
- while( i )
- ret[--i] = array[i];
- }
-
- return ret;
- },
-
- inArray: function( elem, array ) {
- for ( var i = 0, length = array.length; i < length; i++ )
- // Use === because on IE, window == document
- if ( array[ i ] === elem )
- return i;
-
- return -1;
- },
-
- merge: function( first, second ) {
- // We have to loop this way because IE & Opera overwrite the length
- // expando of getElementsByTagName
- var i = 0, elem, pos = first.length;
- // Also, we need to make sure that the correct elements are being returned
- // (IE returns comment nodes in a '*' query)
- if ( !jQuery.support.getAll ) {
- while ( (elem = second[ i++ ]) != null )
- if ( elem.nodeType != 8 )
- first[ pos++ ] = elem;
-
- } else
- while ( (elem = second[ i++ ]) != null )
- first[ pos++ ] = elem;
-
- return first;
- },
-
- unique: function( array ) {
- var ret = [], done = {};
-
- try {
-
- for ( var i = 0, length = array.length; i < length; i++ ) {
- var id = jQuery.data( array[ i ] );
-
- if ( !done[ id ] ) {
- done[ id ] = true;
- ret.push( array[ i ] );
- }
- }
-
- } catch( e ) {
- ret = array;
- }
-
- return ret;
- },
-
- grep: function( elems, callback, inv ) {
- var ret = [];
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ )
- if ( !inv != !callback( elems[ i ], i ) )
- ret.push( elems[ i ] );
-
- return ret;
- },
-
- map: function( elems, callback ) {
- var ret = [];
-
- // Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- var value = callback( elems[ i ], i );
-
- if ( value != null )
- ret[ ret.length ] = value;
- }
-
- return ret.concat.apply( [], ret );
- }
-});
-
-// Use of jQuery.browser is deprecated.
-// It's included for backwards compatibility and plugins,
-// although they should work to migrate away.
-
-var userAgent = navigator.userAgent.toLowerCase();
-
-// Figure out what browser is being used
-jQuery.browser = {
- version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
- safari: /webkit/.test( userAgent ),
- opera: /opera/.test( userAgent ),
- msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
- mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
-};
-
-jQuery.each({
- parent: function(elem){return elem.parentNode;},
- parents: function(elem){return jQuery.dir(elem,"parentNode");},
- next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
- prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
- nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
- prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
- siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
- children: function(elem){return jQuery.sibling(elem.firstChild);},
- contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
-}, function(name, fn){
- jQuery.fn[ name ] = function( selector ) {
- var ret = jQuery.map( this, fn );
-
- if ( selector && typeof selector == "string" )
- ret = jQuery.multiFilter( selector, ret );
-
- return this.pushStack( jQuery.unique( ret ), name, selector );
- };
-});
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function(name, original){
- jQuery.fn[ name ] = function() {
- var args = arguments;
-
- return this.each(function(){
- for ( var i = 0, length = args.length; i < length; i++ )
- jQuery( args[ i ] )[ original ]( this );
- });
- };
-});
-
-jQuery.each({
- removeAttr: function( name ) {
- jQuery.attr( this, name, "" );
- if (this.nodeType == 1)
- this.removeAttribute( name );
- },
-
- addClass: function( classNames ) {
- jQuery.className.add( this, classNames );
- },
-
- removeClass: function( classNames ) {
- jQuery.className.remove( this, classNames );
- },
-
- toggleClass: function( classNames, state ) {
- if( typeof state !== "boolean" )
- state = !jQuery.className.has( this, classNames );
- jQuery.className[ state ? "add" : "remove" ]( this, classNames );
- },
-
- remove: function( selector ) {
- if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
- // Prevent memory leaks
- jQuery( "*", this ).add([this]).each(function(){
- jQuery.event.remove(this);
- jQuery.removeData(this);
- });
- if (this.parentNode)
- this.parentNode.removeChild( this );
- }
- },
-
- empty: function() {
- // Remove element nodes and prevent memory leaks
- jQuery( ">*", this ).remove();
-
- // Remove any remaining nodes
- while ( this.firstChild )
- this.removeChild( this.firstChild );
- }
-}, function(name, fn){
- jQuery.fn[ name ] = function(){
- return this.each( fn, arguments );
- };
-});
-
-// Helper function used by the dimensions and offset modules
-function num(elem, prop) {
- return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
-}
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
-
-jQuery.extend({
- cache: {},
-
- data: function( elem, name, data ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // Compute a unique ID for the element
- if ( !id )
- id = elem[ expando ] = ++uuid;
-
- // Only generate the data cache if we're
- // trying to access or manipulate it
- if ( name && !jQuery.cache[ id ] )
- jQuery.cache[ id ] = {};
-
- // Prevent overriding the named cache with undefined values
- if ( data !== undefined )
- jQuery.cache[ id ][ name ] = data;
-
- // Return the named cache data, or the ID for the element
- return name ?
- jQuery.cache[ id ][ name ] :
- id;
- },
-
- removeData: function( elem, name ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // If we want to remove a specific section of the element's data
- if ( name ) {
- if ( jQuery.cache[ id ] ) {
- // Remove the section of cache data
- delete jQuery.cache[ id ][ name ];
-
- // If we've removed all the data, remove the element's cache
- name = "";
-
- for ( name in jQuery.cache[ id ] )
- break;
-
- if ( !name )
- jQuery.removeData( elem );
- }
-
- // Otherwise, we want to remove all of the element's data
- } else {
- // Clean up the element expando
- try {
- delete elem[ expando ];
- } catch(e){
- // IE has trouble directly removing the expando
- // but it's ok with using removeAttribute
- if ( elem.removeAttribute )
- elem.removeAttribute( expando );
- }
-
- // Completely remove the data cache
- delete jQuery.cache[ id ];
- }
- },
- queue: function( elem, type, data ) {
- if ( elem ){
-
- type = (type || "fx") + "queue";
-
- var q = jQuery.data( elem, type );
-
- if ( !q || jQuery.isArray(data) )
- q = jQuery.data( elem, type, jQuery.makeArray(data) );
- else if( data )
- q.push( data );
-
- }
- return q;
- },
-
- dequeue: function( elem, type ){
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift();
-
- if( !type || type === "fx" )
- fn = queue[0];
-
- if( fn !== undefined )
- fn.call(elem);
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ){
- var parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- if ( data === undefined && this.length )
- data = jQuery.data( this[0], key );
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
- } else
- return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
- jQuery.data( this, key, value );
- });
- },
-
- removeData: function( key ){
- return this.each(function(){
- jQuery.removeData( this, key );
- });
- },
- queue: function(type, data){
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined )
- return jQuery.queue( this[0], type );
-
- return this.each(function(){
- var queue = jQuery.queue( this, type, data );
-
- if( type == "fx" && queue.length == 1 )
- queue[0].call(this);
- });
- },
- dequeue: function(type){
- return this.each(function(){
- jQuery.dequeue( this, type );
- });
- }
-});/*!
- * Sizzle CSS Selector Engine - v0.9.3
- * Copyright 2009, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
- */
-(function(){
-
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
- done = 0,
- toString = Object.prototype.toString;
-
-var Sizzle = function(selector, context, results, seed) {
- results = results || [];
- context = context || document;
-
- if ( context.nodeType !== 1 && context.nodeType !== 9 )
- return [];
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- var parts = [], m, set, checkSet, check, mode, extra, prune = true;
-
- // Reset the position of the chunker regexp (start from head)
- chunker.lastIndex = 0;
-
- while ( (m = chunker.exec(selector)) !== null ) {
- parts.push( m[1] );
-
- if ( m[2] ) {
- extra = RegExp.rightContext;
- break;
- }
- }
-
- if ( parts.length > 1 && origPOS.exec( selector ) ) {
- if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
- set = posProcess( parts[0] + parts[1], context );
- } else {
- set = Expr.relative[ parts[0] ] ?
- [ context ] :
- Sizzle( parts.shift(), context );
-
- while ( parts.length ) {
- selector = parts.shift();
-
- if ( Expr.relative[ selector ] )
- selector += parts.shift();
-
- set = posProcess( selector, set );
- }
- }
- } else {
- var ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
- set = Sizzle.filter( ret.expr, ret.set );
-
- if ( parts.length > 0 ) {
- checkSet = makeArray(set);
- } else {
- prune = false;
- }
-
- while ( parts.length ) {
- var cur = parts.pop(), pop = cur;
-
- if ( !Expr.relative[ cur ] ) {
- cur = "";
- } else {
- pop = parts.pop();
- }
-
- if ( pop == null ) {
- pop = context;
- }
-
- Expr.relative[ cur ]( checkSet, pop, isXML(context) );
- }
- }
-
- if ( !checkSet ) {
- checkSet = set;
- }
-
- if ( !checkSet ) {
- throw "Syntax error, unrecognized expression: " + (cur || selector);
- }
-
- if ( toString.call(checkSet) === "[object Array]" ) {
- if ( !prune ) {
- results.push.apply( results, checkSet );
- } else if ( context.nodeType === 1 ) {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
- results.push( set[i] );
- }
- }
- } else {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
- results.push( set[i] );
- }
- }
- }
- } else {
- makeArray( checkSet, results );
- }
-
- if ( extra ) {
- Sizzle( extra, context, results, seed );
- }
-
- return results;
-};
-
-Sizzle.matches = function(expr, set){
- return Sizzle(expr, null, null, set);
-};
-
-Sizzle.find = function(expr, context, isXML){
- var set, match;
-
- if ( !expr ) {
- return [];
- }
-
- for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var type = Expr.order[i], match;
-
- if ( (match = Expr.match[ type ].exec( expr )) ) {
- var left = RegExp.leftContext;
-
- if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace(/\\/g, "");
- set = Expr.find[ type ]( match, context, isXML );
- if ( set != null ) {
- expr = expr.replace( Expr.match[ type ], "" );
- break;
- }
- }
- }
- }
-
- if ( !set ) {
- set = context.getElementsByTagName("*");
- }
-
- return {set: set, expr: expr};
-};
-
-Sizzle.filter = function(expr, set, inplace, not){
- var old = expr, result = [], curLoop = set, match, anyFound;
-
- while ( expr && set.length ) {
- for ( var type in Expr.filter ) {
- if ( (match = Expr.match[ type ].exec( expr )) != null ) {
- var filter = Expr.filter[ type ], found, item;
- anyFound = false;
-
- if ( curLoop == result ) {
- result = [];
- }
-
- if ( Expr.preFilter[ type ] ) {
- match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not );
-
- if ( !match ) {
- anyFound = found = true;
- } else if ( match === true ) {
- continue;
- }
- }
-
- if ( match ) {
- for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
- if ( item ) {
- found = filter( item, match, i, curLoop );
- var pass = not ^ !!found;
-
- if ( inplace && found != null ) {
- if ( pass ) {
- anyFound = true;
- } else {
- curLoop[i] = false;
- }
- } else if ( pass ) {
- result.push( item );
- anyFound = true;
- }
- }
- }
- }
-
- if ( found !== undefined ) {
- if ( !inplace ) {
- curLoop = result;
- }
-
- expr = expr.replace( Expr.match[ type ], "" );
-
- if ( !anyFound ) {
- return [];
- }
-
- break;
- }
- }
- }
-
- expr = expr.replace(/\s*,\s*/, "");
-
- // Improper expression
- if ( expr == old ) {
- if ( anyFound == null ) {
- throw "Syntax error, unrecognized expression: " + expr;
- } else {
- break;
- }
- }
-
- old = expr;
- }
-
- return curLoop;
-};
-
-var Expr = Sizzle.selectors = {
- order: [ "ID", "NAME", "TAG" ],
- match: {
- ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
- },
- attrMap: {
- "class": "className",
- "for": "htmlFor"
- },
- attrHandle: {
- href: function(elem){
- return elem.getAttribute("href");
- }
- },
- relative: {
- "+": function(checkSet, part){
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- var cur = elem.previousSibling;
- while ( cur && cur.nodeType !== 1 ) {
- cur = cur.previousSibling;
- }
- checkSet[i] = typeof part === "string" ?
- cur || false :
- cur === part;
- }
- }
-
- if ( typeof part === "string" ) {
- Sizzle.filter( part, checkSet, true );
- }
- },
- ">": function(checkSet, part, isXML){
- if ( typeof part === "string" && !/\W/.test(part) ) {
- part = isXML ? part : part.toUpperCase();
-
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- var parent = elem.parentNode;
- checkSet[i] = parent.nodeName === part ? parent : false;
- }
- }
- } else {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- checkSet[i] = typeof part === "string" ?
- elem.parentNode :
- elem.parentNode === part;
- }
- }
-
- if ( typeof part === "string" ) {
- Sizzle.filter( part, checkSet, true );
- }
- }
- },
- "": function(checkSet, part, isXML){
- var doneName = "done" + (done++), checkFn = dirCheck;
-
- if ( !part.match(/\W/) ) {
- var nodeCheck = part = isXML ? part : part.toUpperCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
- },
- "~": function(checkSet, part, isXML){
- var doneName = "done" + (done++), checkFn = dirCheck;
-
- if ( typeof part === "string" && !part.match(/\W/) ) {
- var nodeCheck = part = isXML ? part : part.toUpperCase();
- checkFn = dirNodeCheck;
- }
-
- checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
- }
- },
- find: {
- ID: function(match, context, isXML){
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- return m ? [m] : [];
- }
- },
- NAME: function(match, context, isXML){
- if ( typeof context.getElementsByName !== "undefined" && !isXML ) {
- return context.getElementsByName(match[1]);
- }
- },
- TAG: function(match, context){
- return context.getElementsByTagName(match[1]);
- }
- },
- preFilter: {
- CLASS: function(match, curLoop, inplace, result, not){
- match = " " + match[1].replace(/\\/g, "") + " ";
-
- var elem;
- for ( var i = 0; (elem = curLoop[i]) != null; i++ ) {
- if ( elem ) {
- if ( not ^ (" " + elem.className + " ").indexOf(match) >= 0 ) {
- if ( !inplace )
- result.push( elem );
- } else if ( inplace ) {
- curLoop[i] = false;
- }
- }
- }
-
- return false;
- },
- ID: function(match){
- return match[1].replace(/\\/g, "");
- },
- TAG: function(match, curLoop){
- for ( var i = 0; curLoop[i] === false; i++ ){}
- return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
- },
- CHILD: function(match){
- if ( match[1] == "nth" ) {
- // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
- match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
- !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
-
- // calculate the numbers (first)n+(last) including if they are negative
- match[2] = (test[1] + (test[2] || 1)) - 0;
- match[3] = test[3] - 0;
- }
-
- // TODO: Move to normal caching system
- match[0] = "done" + (done++);
-
- return match;
- },
- ATTR: function(match){
- var name = match[1].replace(/\\/g, "");
-
- if ( Expr.attrMap[name] ) {
- match[1] = Expr.attrMap[name];
- }
-
- if ( match[2] === "~=" ) {
- match[4] = " " + match[4] + " ";
- }
-
- return match;
- },
- PSEUDO: function(match, curLoop, inplace, result, not){
- if ( match[1] === "not" ) {
- // If we're dealing with a complex expression, or a simple one
- if ( match[3].match(chunker).length > 1 ) {
- match[3] = Sizzle(match[3], null, null, curLoop);
- } else {
- var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
- if ( !inplace ) {
- result.push.apply( result, ret );
- }
- return false;
- }
- } else if ( Expr.match.POS.test( match[0] ) ) {
- return true;
- }
-
- return match;
- },
- POS: function(match){
- match.unshift( true );
- return match;
- }
- },
- filters: {
- enabled: function(elem){
- return elem.disabled === false && elem.type !== "hidden";
- },
- disabled: function(elem){
- return elem.disabled === true;
- },
- checked: function(elem){
- return elem.checked === true;
- },
- selected: function(elem){
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- elem.parentNode.selectedIndex;
- return elem.selected === true;
- },
- parent: function(elem){
- return !!elem.firstChild;
- },
- empty: function(elem){
- return !elem.firstChild;
- },
- has: function(elem, i, match){
- return !!Sizzle( match[3], elem ).length;
- },
- header: function(elem){
- return /h\d/i.test( elem.nodeName );
- },
- text: function(elem){
- return "text" === elem.type;
- },
- radio: function(elem){
- return "radio" === elem.type;
- },
- checkbox: function(elem){
- return "checkbox" === elem.type;
- },
- file: function(elem){
- return "file" === elem.type;
- },
- password: function(elem){
- return "password" === elem.type;
- },
- submit: function(elem){
- return "submit" === elem.type;
- },
- image: function(elem){
- return "image" === elem.type;
- },
- reset: function(elem){
- return "reset" === elem.type;
- },
- button: function(elem){
- return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
- },
- input: function(elem){
- return /input|select|textarea|button/i.test(elem.nodeName);
- }
- },
- setFilters: {
- first: function(elem, i){
- return i === 0;
- },
- last: function(elem, i, match, array){
- return i === array.length - 1;
- },
- even: function(elem, i){
- return i % 2 === 0;
- },
- odd: function(elem, i){
- return i % 2 === 1;
- },
- lt: function(elem, i, match){
- return i < match[3] - 0;
- },
- gt: function(elem, i, match){
- return i > match[3] - 0;
- },
- nth: function(elem, i, match){
- return match[3] - 0 == i;
- },
- eq: function(elem, i, match){
- return match[3] - 0 == i;
- }
- },
- filter: {
- CHILD: function(elem, match){
- var type = match[1], parent = elem.parentNode;
-
- var doneName = match[0];
-
- if ( parent && (!parent[ doneName ] || !elem.nodeIndex) ) {
- var count = 1;
-
- for ( var node = parent.firstChild; node; node = node.nextSibling ) {
- if ( node.nodeType == 1 ) {
- node.nodeIndex = count++;
- }
- }
-
- parent[ doneName ] = count - 1;
- }
-
- if ( type == "first" ) {
- return elem.nodeIndex == 1;
- } else if ( type == "last" ) {
- return elem.nodeIndex == parent[ doneName ];
- } else if ( type == "only" ) {
- return parent[ doneName ] == 1;
- } else if ( type == "nth" ) {
- var add = false, first = match[2], last = match[3];
-
- if ( first == 1 && last == 0 ) {
- return true;
- }
-
- if ( first == 0 ) {
- if ( elem.nodeIndex == last ) {
- add = true;
- }
- } else if ( (elem.nodeIndex - last) % first == 0 && (elem.nodeIndex - last) / first >= 0 ) {
- add = true;
- }
-
- return add;
- }
- },
- PSEUDO: function(elem, match, i, array){
- var name = match[1], filter = Expr.filters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- } else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
- } else if ( name === "not" ) {
- var not = match[3];
-
- for ( var i = 0, l = not.length; i < l; i++ ) {
- if ( not[i] === elem ) {
- return false;
- }
- }
-
- return true;
- }
- },
- ID: function(elem, match){
- return elem.nodeType === 1 && elem.getAttribute("id") === match;
- },
- TAG: function(elem, match){
- return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
- },
- CLASS: function(elem, match){
- return match.test( elem.className );
- },
- ATTR: function(elem, match){
- var result = Expr.attrHandle[ match[1] ] ? Expr.attrHandle[ match[1] ]( elem ) : elem[ match[1] ] || elem.getAttribute( match[1] ), value = result + "", type = match[2], check = match[4];
- return result == null ?
- type === "!=" :
- type === "=" ?
- value === check :
- type === "*=" ?
- value.indexOf(check) >= 0 :
- type === "~=" ?
- (" " + value + " ").indexOf(check) >= 0 :
- !match[4] ?
- result :
- type === "!=" ?
- value != check :
- type === "^=" ?
- value.indexOf(check) === 0 :
- type === "$=" ?
- value.substr(value.length - check.length) === check :
- type === "|=" ?
- value === check || value.substr(0, check.length + 1) === check + "-" :
- false;
- },
- POS: function(elem, match, i, array){
- var name = match[2], filter = Expr.setFilters[ name ];
-
- if ( filter ) {
- return filter( elem, i, match, array );
- }
- }
- }
-};
-
-var origPOS = Expr.match.POS;
-
-for ( var type in Expr.match ) {
- Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
-}
-
-var makeArray = function(array, results) {
- array = Array.prototype.slice.call( array );
-
- if ( results ) {
- results.push.apply( results, array );
- return results;
- }
-
- return array;
-};
-
-// Perform a simple check to determine if the browser is capable of
-// converting a NodeList to an array using builtin methods.
-try {
- Array.prototype.slice.call( document.documentElement.childNodes );
-
-// Provide a fallback method if it does not work
-} catch(e){
- makeArray = function(array, results) {
- var ret = results || [];
-
- if ( toString.call(array) === "[object Array]" ) {
- Array.prototype.push.apply( ret, array );
- } else {
- if ( typeof array.length === "number" ) {
- for ( var i = 0, l = array.length; i < l; i++ ) {
- ret.push( array[i] );
- }
- } else {
- for ( var i = 0; array[i]; i++ ) {
- ret.push( array[i] );
- }
- }
- }
-
- return ret;
- };
-}
-
-// Check to see if the browser returns elements by name when
-// querying by getElementById (and provide a workaround)
-(function(){
- // We're going to inject a fake input element with a specified name
- var form = document.createElement("form"),
- id = "script" + (new Date).getTime();
- form.innerHTML = "<input name='" + id + "'/>";
-
- // Inject it into the root element, check its status, and remove it quickly
- var root = document.documentElement;
- root.insertBefore( form, root.firstChild );
-
- // The workaround has to do additional checks after a getElementById
- // Which slows things down for other browsers (hence the branching)
- if ( !!document.getElementById( id ) ) {
- Expr.find.ID = function(match, context, isXML){
- if ( typeof context.getElementById !== "undefined" && !isXML ) {
- var m = context.getElementById(match[1]);
- return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
- }
- };
-
- Expr.filter.ID = function(elem, match){
- var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
- return elem.nodeType === 1 && node && node.nodeValue === match;
- };
- }
-
- root.removeChild( form );
-})();
-
-(function(){
- // Check to see if the browser returns only elements
- // when doing getElementsByTagName("*")
-
- // Create a fake element
- var div = document.createElement("div");
- div.appendChild( document.createComment("") );
-
- // Make sure no comments are found
- if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function(match, context){
- var results = context.getElementsByTagName(match[1]);
-
- // Filter out possible comments
- if ( match[1] === "*" ) {
- var tmp = [];
-
- for ( var i = 0; results[i]; i++ ) {
- if ( results[i].nodeType === 1 ) {
- tmp.push( results[i] );
- }
- }
-
- results = tmp;
- }
-
- return results;
- };
- }
-
- // Check to see if an attribute returns normalized href attributes
- div.innerHTML = "<a href='#'></a>";
- if ( div.firstChild && div.firstChild.getAttribute("href") !== "#" ) {
- Expr.attrHandle.href = function(elem){
- return elem.getAttribute("href", 2);
- };
- }
+ clean: function(elems, context, fragment) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if (typeof context.createElement === "undefined")
+ context = context.ownerDocument || context[0]
+ && context[0].ownerDocument || document;
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ if (!fragment && elems.length === 1 && typeof elems[0]
+ === "string") {
+ var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
+ if (match)
+ return [ context.createElement(match[1]) ];
+ }
+
+ var ret = [], scripts = [], div = context.createElement("div");
+
+ jQuery.each(elems, function(i, elem) {
+ if (typeof elem === "number")
+ elem += '';
+
+ if (!elem)
+ return;
+
+ // Convert html string into DOM nodes
+ if (typeof elem === "string") {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all,
+ front,
+ tag) {
+ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)
+ ? all : front + "></" + tag + ">";
+ });
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tags = jQuery.trim(elem).toLowerCase();
+
+ var wrap = // option or optgroup
+ !tags.indexOf("<opt")
+ && [ 1, "<select multiple='multiple'>", "</select>" ]
+ ||
+
+ !tags.indexOf("<leg")
+ && [ 1, "<fieldset>", "</fieldset>" ] ||
+
+ tags.match(/^<(thead|tbody|tfoot|colg|cap)/)
+ && [ 1, "<table>", "</table>" ] ||
+
+ !tags.indexOf("<tr")
+ && [ 2, "<table><tbody>", "</tbody></table>" ]
+ ||
+
+ // <thead> matched above
+ (!tags.indexOf("<td") || !tags.indexOf("<th"))
+ && [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ]
+ ||
+
+ !tags.indexOf("<col")
+ && [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ]
+ ||
+
+ // IE can't serialize <link> and <script> tags normally
+ !jQuery.support.htmlSerialize
+ && [ 1, "div<div>", "</div>" ] ||
+
+ [ 0, "", "" ];
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while (wrap[0]--)
+ div = div.lastChild;
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if (!jQuery.support.tbody) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var tbody = !tags.indexOf("<table")
+ && tags.indexOf("<tbody") < 0 ? div.firstChild
+ && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] == "<table>"
+ && tags.indexOf("<tbody") < 0
+ ? div.childNodes : [];
+
+ for (var j = tbody.length - 1; j >= 0; --j)
+ if (jQuery.nodeName(tbody[ j ], "tbody")
+ && !tbody[ j ].childNodes.length)
+ tbody[ j ].parentNode.removeChild(tbody[ j ]);
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if (!jQuery.support.leadingWhitespace && /^\s/.test(elem))
+ div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]), div.firstChild);
+
+ elem = jQuery.makeArray(div.childNodes);
+ }
+
+ if (elem.nodeType)
+ ret.push(elem); else
+ ret = jQuery.merge(ret, elem);
+
+ });
+
+ if (fragment) {
+ for (var i = 0; ret[i]; i++) {
+ if (jQuery.nodeName(ret[i], "script") && (!ret[i].type
+ || ret[i].type.toLowerCase()
+ === "text/javascript")) {
+ scripts.push(ret[i].parentNode
+ ? ret[i].parentNode.removeChild(ret[i])
+ : ret[i]);
+ } else {
+ if (ret[i].nodeType === 1)
+ ret.splice.apply(ret, [i
+ + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))));
+ fragment.appendChild(ret[i]);
+ }
+ }
+
+ return scripts;
+ }
+
+ return ret;
+ },
+
+ attr: function(elem, name, value) {
+ // don't set attributes on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ var notxml = !jQuery.isXMLDoc(elem),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // Only do all the following if this is a node (faster for style)
+ // IE elem.getAttribute passes even for style
+ if (elem.tagName) {
+
+ // These attributes require special treatment
+ var special = /href|src|style/.test(name);
+
+ // Safari mis-reports the default selected property of a hidden option
+ // Accessing the parent's selectedIndex property fixes it
+ if (name == "selected" && elem.parentNode)
+ elem.parentNode.selectedIndex;
+
+ // If applicable, access the attribute via the DOM 0 way
+ if (name in elem && notxml && !special) {
+ if (set) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if (name == "type" && jQuery.nodeName(elem, "input")
+ && elem.parentNode)
+ throw "type property can't be changed";
+
+ elem[ name ] = value;
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if (jQuery.nodeName(elem, "form")
+ && elem.getAttributeNode(name))
+ return elem.getAttributeNode(name).nodeValue;
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if (name == "tabIndex") {
+ var attributeNode = elem.getAttributeNode("tabIndex");
+ return attributeNode && attributeNode.specified
+ ? attributeNode.value
+ : elem.nodeName.match(/(button|input|object|select|textarea)/i)
+ ? 0 : elem.nodeName.match(/^(a|area)$/i)
+ && elem.href ? 0 : undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if (!jQuery.support.style && notxml && name == "style")
+ return jQuery.attr(elem.style, "cssText", value);
+
+ if (set)
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute(name, "" + value);
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special
+ // Some attributes require a special call on IE
+ ? elem.getAttribute(name, 2) : elem.getAttribute(name);
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+
+ // elem is actually elem.style ... set the style
+
+ // IE uses filters for opacity
+ if (!jQuery.support.opacity && name == "opacity") {
+ if (set) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ elem.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ elem.filter = (elem.filter
+ || "").replace(/alpha\([^)]*\)/, "")
+ + (parseInt(value) + '' == "NaN" ? ""
+ : "alpha(opacity=" + value * 100 + ")");
+ }
+
+ return elem.filter && elem.filter.indexOf("opacity=") >= 0
+ ? (parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])
+ / 100) + '' : "";
+ }
+
+ name = name.replace(/-([a-z])/ig, function(all, letter) {
+ return letter.toUpperCase();
+ });
+
+ if (set)
+ elem[ name ] = value;
+
+ return elem[ name ];
+ },
+
+ trim: function(text) {
+ return (text || "").replace(/^\s+|\s+$/g, "");
+ },
+
+ makeArray: function(array) {
+ var ret = [];
+
+ if (array != null) {
+ var i = array.length;
+ // The window, strings (and functions) also have 'length'
+ if (i == null || typeof array === "string"
+ || jQuery.isFunction(array) || array.setInterval)
+ ret[0] = array; else
+ while (i)
+ ret[--i] = array[i];
+ }
+
+ return ret;
+ },
+
+ inArray: function(elem, array) {
+ for (var i = 0, length = array.length; i < length; i++)
+ // Use === because on IE, window == document
+ if (array[ i ] === elem)
+ return i;
+
+ return -1;
+ },
+
+ merge: function(first, second) {
+ // We have to loop this way because IE & Opera overwrite the length
+ // expando of getElementsByTagName
+ var i = 0, elem, pos = first.length;
+ // Also, we need to make sure that the correct elements are being returned
+ // (IE returns comment nodes in a '*' query)
+ if (!jQuery.support.getAll) {
+ while ((elem = second[ i++ ]) != null)
+ if (elem.nodeType != 8)
+ first[ pos++ ] = elem;
+
+ } else
+ while ((elem = second[ i++ ]) != null)
+ first[ pos++ ] = elem;
+
+ return first;
+ },
+
+ unique: function(array) {
+ var ret = [], done = {};
+
+ try {
+
+ for (var i = 0, length = array.length; i < length; i++) {
+ var id = jQuery.data(array[ i ]);
+
+ if (!done[ id ]) {
+ done[ id ] = true;
+ ret.push(array[ i ]);
+ }
+ }
+
+ } catch(e) {
+ ret = array;
+ }
+
+ return ret;
+ },
+
+ grep: function(elems, callback, inv) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for (var i = 0, length = elems.length; i < length; i++)
+ if (!inv != !callback(elems[ i ], i))
+ ret.push(elems[ i ]);
+
+ return ret;
+ },
+
+ map: function(elems, callback) {
+ var ret = [];
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for (var i = 0, length = elems.length; i < length; i++) {
+ var value = callback(elems[ i ], i);
+
+ if (value != null)
+ ret[ ret.length ] = value;
+ }
+
+ return ret.concat.apply([], ret);
+ }
+ });
+
+ // Use of jQuery.browser is deprecated.
+ // It's included for backwards compatibility and plugins,
+ // although they should work to migrate away.
+
+ var userAgent = navigator.userAgent.toLowerCase();
+
+ // Figure out what browser is being used
+ jQuery.browser = {
+ version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)
+ || [0,'0'])[1],
+ safari: /webkit/.test(userAgent),
+ opera: /opera/.test(userAgent),
+ msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
+ mozilla: /mozilla/.test(userAgent)
+ && !/(compatible|webkit)/.test(userAgent)
+ };
+
+ jQuery.each({
+ parent: function(elem) {
+ return elem.parentNode;
+ },
+ parents: function(elem) {
+ return jQuery.dir(elem, "parentNode");
+ },
+ next: function(elem) {
+ return jQuery.nth(elem, 2, "nextSibling");
+ },
+ prev: function(elem) {
+ return jQuery.nth(elem, 2, "previousSibling");
+ },
+ nextAll: function(elem) {
+ return jQuery.dir(elem, "nextSibling");
+ },
+ prevAll: function(elem) {
+ return jQuery.dir(elem, "previousSibling");
+ },
+ siblings: function(elem) {
+ return jQuery.sibling(elem.parentNode.firstChild, elem);
+ },
+ children: function(elem) {
+ return jQuery.sibling(elem.firstChild);
+ },
+ contents: function(elem) {
+ return jQuery.nodeName(elem, "iframe") ? elem.contentDocument
+ || elem.contentWindow.document
+ : jQuery.makeArray(elem.childNodes);
+ }
+ }, function(name, fn) {
+ jQuery.fn[ name ] = function(selector) {
+ var ret = jQuery.map(this, fn);
+
+ if (selector && typeof selector == "string")
+ ret = jQuery.multiFilter(selector, ret);
+
+ return this.pushStack(jQuery.unique(ret), name, selector);
+ };
+ });
+
+ jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+ }, function(name, original) {
+ jQuery.fn[ name ] = function() {
+ var args = arguments;
+
+ return this.each(function() {
+ for (var i = 0, length = args.length; i < length; i++)
+ jQuery(args[ i ])[ original ](this);
+ });
+ };
+ });
+
+ jQuery.each({
+ removeAttr: function(name) {
+ jQuery.attr(this, name, "");
+ if (this.nodeType == 1)
+ this.removeAttribute(name);
+ },
+
+ addClass: function(classNames) {
+ jQuery.className.add(this, classNames);
+ },
+
+ removeClass: function(classNames) {
+ jQuery.className.remove(this, classNames);
+ },
+
+ toggleClass: function(classNames, state) {
+ if (typeof state !== "boolean")
+ state = !jQuery.className.has(this, classNames);
+ jQuery.className[ state ? "add" : "remove" ](this, classNames);
+ },
+
+ remove: function(selector) {
+ if (!selector || jQuery.filter(selector, [ this ]).length) {
+ // Prevent memory leaks
+ jQuery("*", this).add([this]).each(function() {
+ jQuery.event.remove(this);
+ jQuery.removeData(this);
+ });
+ if (this.parentNode)
+ this.parentNode.removeChild(this);
+ }
+ },
+
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ jQuery(">*", this).remove();
+
+ // Remove any remaining nodes
+ while (this.firstChild)
+ this.removeChild(this.firstChild);
+ }
+ }, function(name, fn) {
+ jQuery.fn[ name ] = function() {
+ return this.each(fn, arguments);
+ };
+ });
+
+ // Helper function used by the dimensions and offset modules
+ function num(elem, prop) {
+ return elem[0] && parseInt(jQuery.curCSS(elem[0], prop, true), 10) || 0;
+ }
+
+ var expando = "jQuery" + now(), uuid = 0, windowData = {};
+
+ jQuery.extend({
+ cache: {},
+
+ data: function(elem, name, data) {
+ elem = elem == window ? windowData : elem;
+
+ var id = elem[ expando ];
+
+ // Compute a unique ID for the element
+ if (!id)
+ id = elem[ expando ] = ++uuid;
+
+ // Only generate the data cache if we're
+ // trying to access or manipulate it
+ if (name && !jQuery.cache[ id ])
+ jQuery.cache[ id ] = {};
+
+ // Prevent overriding the named cache with undefined values
+ if (data !== undefined)
+ jQuery.cache[ id ][ name ] = data;
+
+ // Return the named cache data, or the ID for the element
+ return name ? jQuery.cache[ id ][ name ] : id;
+ },
+
+ removeData: function(elem, name) {
+ elem = elem == window ? windowData : elem;
+
+ var id = elem[ expando ];
+
+ // If we want to remove a specific section of the element's data
+ if (name) {
+ if (jQuery.cache[ id ]) {
+ // Remove the section of cache data
+ delete jQuery.cache[ id ][ name ];
+
+ // If we've removed all the data, remove the element's cache
+ name = "";
+
+ for (name in jQuery.cache[ id ])
+ break;
+
+ if (!name)
+ jQuery.removeData(elem);
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch(e) {
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if (elem.removeAttribute)
+ elem.removeAttribute(expando);
+ }
+
+ // Completely remove the data cache
+ delete jQuery.cache[ id ];
+ }
+ },
+ queue: function(elem, type, data) {
+ if (elem) {
+
+ type = (type || "fx") + "queue";
+
+ var q = jQuery.data(elem, type);
+
+ if (!q || jQuery.isArray(data))
+ q = jQuery.data(elem, type, jQuery.makeArray(data)); else if (data)
+ q.push(data);
+
+ }
+ return q;
+ },
+
+ dequeue: function(elem, type) {
+ var queue = jQuery.queue(elem, type),
+ fn = queue.shift();
+
+ if (!type || type === "fx")
+ fn = queue[0];
+
+ if (fn !== undefined)
+ fn.call(elem);
+ }
+ });
+
+ jQuery.fn.extend({
+ data: function(key, value) {
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if (value === undefined) {
+ var data = this.triggerHandler("getData" + parts[1]
+ + "!", [parts[0]]);
+
+ if (data === undefined && this.length)
+ data = jQuery.data(this[0], key);
+
+ return data === undefined && parts[1] ? this.data(parts[0])
+ : data;
+ } else
+ return this.trigger("setData" + parts[1]
+ + "!", [parts[0], value]).each(function() {
+ jQuery.data(this, key, value);
+ });
+ },
+
+ removeData: function(key) {
+ return this.each(function() {
+ jQuery.removeData(this, key);
+ });
+ },
+ queue: function(type, data) {
+ if (typeof type !== "string") {
+ data = type;
+ type = "fx";
+ }
+
+ if (data === undefined)
+ return jQuery.queue(this[0], type);
+
+ return this.each(function() {
+ var queue = jQuery.queue(this, type, data);
+
+ if (type == "fx" && queue.length == 1)
+ queue[0].call(this);
+ });
+ },
+ dequeue: function(type) {
+ return this.each(function() {
+ jQuery.dequeue(this, type);
+ });
+ }
+ });
+ /*!
+ * Sizzle CSS Selector Engine - v0.9.3
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+ (function() {
+
+ var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]+['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[]+)+|[>+~])(\s*,\s*)?/g,
+ done = 0,
+ toString = Object.prototype.toString;
+
+ var Sizzle = function(selector, context, results, seed) {
+ results = results || [];
+ context = context || document;
+
+ if (context.nodeType !== 1 && context.nodeType !== 9)
+ return [];
+
+ if (!selector || typeof selector !== "string") {
+ return results;
+ }
+
+ var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+
+ // Reset the position of the chunker regexp (start from head)
+ chunker.lastIndex = 0;
+
+ while ((m = chunker.exec(selector)) !== null) {
+ parts.push(m[1]);
+
+ if (m[2]) {
+ extra = RegExp.rightContext;
+ break;
+ }
+ }
+
+ if (parts.length > 1 && origPOS.exec(selector)) {
+ if (parts.length === 2 && Expr.relative[ parts[0] ]) {
+ set = posProcess(parts[0] + parts[1], context);
+ } else {
+ set = Expr.relative[ parts[0] ] ? [ context ]
+ : Sizzle(parts.shift(), context);
+
+ while (parts.length) {
+ selector = parts.shift();
+
+ if (Expr.relative[ selector ])
+ selector += parts.shift();
+
+ set = posProcess(selector, set);
+ }
+ }
+ } else {
+ var ret = seed ? { expr: parts.pop(), set: makeArray(seed) }
+ : Sizzle.find(parts.pop(), parts.length === 1
+ && context.parentNode ? context.parentNode
+ : context, isXML(context));
+ set = Sizzle.filter(ret.expr, ret.set);
+
+ if (parts.length > 0) {
+ checkSet = makeArray(set);
+ } else {
+ prune = false;
+ }
+
+ while (parts.length) {
+ var cur = parts.pop(), pop = cur;
+
+ if (!Expr.relative[ cur ]) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if (pop == null) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ](checkSet, pop, isXML(context));
+ }
+ }
+
+ if (!checkSet) {
+ checkSet = set;
+ }
+
+ if (!checkSet) {
+ throw "Syntax error, unrecognized expression: " + (cur
+ || selector);
+ }
+
+ if (toString.call(checkSet) === "[object Array]") {
+ if (!prune) {
+ results.push.apply(results, checkSet);
+ } else if (context.nodeType === 1) {
+ for (var i = 0; checkSet[i] != null; i++) {
+ if (checkSet[i] && (checkSet[i] === true
+ || checkSet[i].nodeType === 1
+ && contains(context, checkSet[i]))) {
+ results.push(set[i]);
+ }
+ }
+ } else {
+ for (var i = 0; checkSet[i] != null; i++) {
+ if (checkSet[i] && checkSet[i].nodeType === 1) {
+ results.push(set[i]);
+ }
+ }
+ }
+ } else {
+ makeArray(checkSet, results);
+ }
+
+ if (extra) {
+ Sizzle(extra, context, results, seed);
+ }
+
+ return results;
+ };
+
+ Sizzle.matches = function(expr, set) {
+ return Sizzle(expr, null, null, set);
+ };
+
+ Sizzle.find = function(expr, context, isXML) {
+ var set, match;
+
+ if (!expr) {
+ return [];
+ }
+
+ for (var i = 0, l = Expr.order.length; i < l; i++) {
+ var type = Expr.order[i], match;
+
+ if ((match = Expr.match[ type ].exec(expr))) {
+ var left = RegExp.leftContext;
+
+ if (left.substr(left.length - 1) !== "\\") {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ](match, context, isXML);
+ if (set != null) {
+ expr = expr.replace(Expr.match[ type ], "");
+ break;
+ }
+ }
+ }
+ }
+
+ if (!set) {
+ set = context.getElementsByTagName("*");
+ }
+
+ return {set: set, expr: expr};
+ };
+
+ Sizzle.filter = function(expr, set, inplace, not) {
+ var old = expr, result = [], curLoop = set, match, anyFound;
+
+ while (expr && set.length) {
+ for (var type in Expr.filter) {
+ if ((match = Expr.match[ type ].exec(expr)) != null) {
+ var filter = Expr.filter[ type ], found, item;
+ anyFound = false;
+
+ if (curLoop == result) {
+ result = [];
+ }
+
+ if (Expr.preFilter[ type ]) {
+ match = Expr.preFilter[ type ](match, curLoop, inplace, result, not);
+
+ if (!match) {
+ anyFound = found = true;
+ } else if (match === true) {
+ continue;
+ }
+ }
+
+ if (match) {
+ for (var i = 0; (item = curLoop[i]) != null; i++) {
+ if (item) {
+ found = filter(item, match, i, curLoop);
+ var pass = not ^ !!found;
+
+ if (inplace && found != null) {
+ if (pass) {
+ anyFound = true;
+ } else {
+ curLoop[i] = false;
+ }
+ } else if (pass) {
+ result.push(item);
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if (found !== undefined) {
+ if (!inplace) {
+ curLoop = result;
+ }
+
+ expr = expr.replace(Expr.match[ type ], "");
+
+ if (!anyFound) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ expr = expr.replace(/\s*,\s*/, "");
+
+ // Improper expression
+ if (expr == old) {
+ if (anyFound == null) {
+ throw "Syntax error, unrecognized expression: " + expr;
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+ };
+
+ var Expr = Sizzle.selectors = {
+ order: [ "ID", "NAME", "TAG" ],
+ match: {
+ ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ },
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+ attrHandle: {
+ href: function(elem) {
+ return elem.getAttribute("href");
+ }
+ },
+ relative: {
+ "+": function(checkSet, part) {
+ for (var i = 0, l = checkSet.length; i < l; i++) {
+ var elem = checkSet[i];
+ if (elem) {
+ var cur = elem.previousSibling;
+ while (cur && cur.nodeType !== 1) {
+ cur = cur.previousSibling;
+ }
+ checkSet[i] = typeof part === "string" ? cur
+ || false : cur === part;
+ }
+ }
+
+ if (typeof part === "string") {
+ Sizzle.filter(part, checkSet, true);
+ }
+ },
+ ">": function(checkSet, part, isXML) {
+ if (typeof part === "string" && !/\W/.test(part)) {
+ part = isXML ? part : part.toUpperCase();
+
+ for (var i = 0, l = checkSet.length; i < l; i++) {
+ var elem = checkSet[i];
+ if (elem) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName === part ? parent
+ : false;
+ }
+ }
+ } else {
+ for (var i = 0, l = checkSet.length; i < l; i++) {
+ var elem = checkSet[i];
+ if (elem) {
+ checkSet[i] = typeof part === "string"
+ ? elem.parentNode : elem.parentNode
+ === part;
+ }
+ }
+
+ if (typeof part === "string") {
+ Sizzle.filter(part, checkSet, true);
+ }
+ }
+ },
+ "": function(checkSet, part, isXML) {
+ var doneName = "done" + (done++), checkFn = dirCheck;
+
+ if (!part.match(/\W/)) {
+ var nodeCheck = part = isXML ? part
+ : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ },
+ "~": function(checkSet, part, isXML) {
+ var doneName = "done" + (done++), checkFn = dirCheck;
+
+ if (typeof part === "string" && !part.match(/\W/)) {
+ var nodeCheck = part = isXML ? part
+ : part.toUpperCase();
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ }
+ },
+ find: {
+ ID: function(match, context, isXML) {
+ if (typeof context.getElementById !== "undefined"
+ && !isXML) {
+ var m = context.getElementById(match[1]);
+ return m ? [m] : [];
+ }
+ },
+ NAME: function(match, context, isXML) {
+ if (typeof context.getElementsByName !== "undefined"
+ && !isXML) {
+ return context.getElementsByName(match[1]);
+ }
+ },
+ TAG: function(match, context) {
+ return context.getElementsByTagName(match[1]);
+ }
+ },
+ preFilter: {
+ CLASS: function(match, curLoop, inplace, result, not) {
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ var elem;
+ for (var i = 0; (elem = curLoop[i]) != null; i++) {
+ if (elem) {
+ if (not ^ (" " + elem.className
+ + " ").indexOf(match) >= 0) {
+ if (!inplace)
+ result.push(elem);
+ } else if (inplace) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+ ID: function(match) {
+ return match[1].replace(/\\/g, "");
+ },
+ TAG: function(match, curLoop) {
+ for (var i = 0; curLoop[i] === false; i++) {
+ }
+ return curLoop[i] && isXML(curLoop[i]) ? match[1]
+ : match[1].toUpperCase();
+ },
+ CHILD: function(match) {
+ if (match[1] == "nth") {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]
+ == "even" && "2n" || match[2] == "odd" && "2n+1"
+ || !/\D/.test(match[2]) && "0n+" + match[2]
+ || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = "done" + (done++);
+
+ return match;
+ },
+ ATTR: function(match) {
+ var name = match[1].replace(/\\/g, "");
+
+ if (Expr.attrMap[name]) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if (match[2] === "~=") {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+ PSEUDO: function(match, curLoop, inplace, result, not) {
+ if (match[1] === "not") {
+ // If we're dealing with a complex expression, or a simple one
+ if (match[3].match(chunker).length > 1) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true
+ ^ not);
+ if (!inplace) {
+ result.push.apply(result, ret);
+ }
+ return false;
+ }
+ } else if (Expr.match.POS.test(match[0])) {
+ return true;
+ }
+
+ return match;
+ },
+ POS: function(match) {
+ match.unshift(true);
+ return match;
+ }
+ },
+ filters: {
+ enabled: function(elem) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+ disabled: function(elem) {
+ return elem.disabled === true;
+ },
+ checked: function(elem) {
+ return elem.checked === true;
+ },
+ selected: function(elem) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+ return elem.selected === true;
+ },
+ parent: function(elem) {
+ return !!elem.firstChild;
+ },
+ empty: function(elem) {
+ return !elem.firstChild;
+ },
+ has: function(elem, i, match) {
+ return !!Sizzle(match[3], elem).length;
+ },
+ header: function(elem) {
+ return /h\d/i.test(elem.nodeName);
+ },
+ text: function(elem) {
+ return "text" === elem.type;
+ },
+ radio: function(elem) {
+ return "radio" === elem.type;
+ },
+ checkbox: function(elem) {
+ return "checkbox" === elem.type;
+ },
+ file: function(elem) {
+ return "file" === elem.type;
+ },
+ password: function(elem) {
+ return "password" === elem.type;
+ },
+ submit: function(elem) {
+ return "submit" === elem.type;
+ },
+ image: function(elem) {
+ return "image" === elem.type;
+ },
+ reset: function(elem) {
+ return "reset" === elem.type;
+ },
+ button: function(elem) {
+ return "button" === elem.type || elem.nodeName.toUpperCase()
+ === "BUTTON";
+ },
+ input: function(elem) {
+ return /input|select|textarea|button/i.test(elem.nodeName);
+ }
+ },
+ setFilters: {
+ first: function(elem, i) {
+ return i === 0;
+ },
+ last: function(elem, i, match, array) {
+ return i === array.length - 1;
+ },
+ even: function(elem, i) {
+ return i % 2 === 0;
+ },
+ odd: function(elem, i) {
+ return i % 2 === 1;
+ },
+ lt: function(elem, i, match) {
+ return i < match[3] - 0;
+ },
+ gt: function(elem, i, match) {
+ return i > match[3] - 0;
+ },
+ nth: function(elem, i, match) {
+ return match[3] - 0 == i;
+ },
+ eq: function(elem, i, match) {
+ return match[3] - 0 == i;
+ }
+ },
+ filter: {
+ CHILD: function(elem, match) {
+ var type = match[1], parent = elem.parentNode;
+
+ var doneName = match[0];
+
+ if (parent && (!parent[ doneName ] || !elem.nodeIndex)) {
+ var count = 1;
+
+ for (var node = parent.firstChild; node;
+ node = node.nextSibling) {
+ if (node.nodeType == 1) {
+ node.nodeIndex = count++;
+ }
+ }
+
+ parent[ doneName ] = count - 1;
+ }
+
+ if (type == "first") {
+ return elem.nodeIndex == 1;
+ } else if (type == "last") {
+ return elem.nodeIndex == parent[ doneName ];
+ } else if (type == "only") {
+ return parent[ doneName ] == 1;
+ } else if (type == "nth") {
+ var add = false, first = match[2], last = match[3];
+
+ if (first == 1 && last == 0) {
+ return true;
+ }
+
+ if (first == 0) {
+ if (elem.nodeIndex == last) {
+ add = true;
+ }
+ } else if ((elem.nodeIndex - last) % first == 0
+ && (elem.nodeIndex - last) / first >= 0) {
+ add = true;
+ }
+
+ return add;
+ }
+ },
+ PSEUDO: function(elem, match, i, array) {
+ var name = match[1], filter = Expr.filters[ name ];
+
+ if (filter) {
+ return filter(elem, i, match, array);
+ } else if (name === "contains") {
+ return (elem.textContent || elem.innerText
+ || "").indexOf(match[3]) >= 0;
+ } else if (name === "not") {
+ var not = match[3];
+
+ for (var i = 0, l = not.length; i < l; i++) {
+ if (not[i] === elem) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+ },
+ ID: function(elem, match) {
+ return elem.nodeType === 1 && elem.getAttribute("id")
+ === match;
+ },
+ TAG: function(elem, match) {
+ return (match === "*" && elem.nodeType === 1)
+ || elem.nodeName === match;
+ },
+ CLASS: function(elem, match) {
+ return match.test(elem.className);
+ },
+ ATTR: function(elem, match) {
+ var result = Expr.attrHandle[ match[1] ]
+ ? Expr.attrHandle[ match[1] ](elem)
+ : elem[ match[1] ]
+ || elem.getAttribute(match[1]), value = result
+ + "", type = match[2], check = match[4];
+ return result == null ? type === "!=" : type === "=" ? value
+ === check : type === "*=" ? value.indexOf(check)
+ >= 0 : type === "~=" ? (" " + value
+ + " ").indexOf(check) >= 0 : !match[4] ? result
+ : type === "!=" ? value != check : type === "^="
+ ? value.indexOf(check) === 0 : type === "$="
+ ? value.substr(value.length - check.length)
+ === check : type === "|=" ? value === check
+ || value.substr(0, check.length + 1) === check + "-"
+ : false;
+ },
+ POS: function(elem, match, i, array) {
+ var name = match[2], filter = Expr.setFilters[ name ];
+
+ if (filter) {
+ return filter(elem, i, match, array);
+ }
+ }
+ }
+ };
+
+ var origPOS = Expr.match.POS;
+
+ for (var type in Expr.match) {
+ Expr.match[ type ] = RegExp(Expr.match[ type ].source
+ + /(?![^\[]*\])(?![^\(]*\))/.source);
+ }
+
+ var makeArray = function(array, results) {
+ array = Array.prototype.slice.call(array);
+
+ if (results) {
+ results.push.apply(results, array);
+ return results;
+ }
+
+ return array;
+ };
+
+ // Perform a simple check to determine if the browser is capable of
+ // converting a NodeList to an array using builtin methods.
+ try {
+ Array.prototype.slice.call(document.documentElement.childNodes);
+
+ // Provide a fallback method if it does not work
+ } catch(e) {
+ makeArray = function(array, results) {
+ var ret = results || [];
+
+ if (toString.call(array) === "[object Array]") {
+ Array.prototype.push.apply(ret, array);
+ } else {
+ if (typeof array.length === "number") {
+ for (var i = 0, l = array.length; i < l; i++) {
+ ret.push(array[i]);
+ }
+ } else {
+ for (var i = 0; array[i]; i++) {
+ ret.push(array[i]);
+ }
+ }
+ }
+
+ return ret;
+ };
+ }
+
+ // Check to see if the browser returns elements by name when
+ // querying by getElementById (and provide a workaround)
+ (function() {
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("form"),
+ id = "script" + (new Date).getTime();
+ form.innerHTML = "<input name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ var root = document.documentElement;
+ root.insertBefore(form, root.firstChild);
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if (!!document.getElementById(id)) {
+ Expr.find.ID = function(match, context, isXML) {
+ if (typeof context.getElementById !== "undefined"
+ && !isXML) {
+ var m = context.getElementById(match[1]);
+ return m ? m.id === match[1]
+ || typeof m.getAttributeNode !== "undefined"
+ && m.getAttributeNode("id").nodeValue
+ === match[1] ? [m] : undefined : [];
+ }
+ };
+
+ Expr.filter.ID = function(elem, match) {
+ var node = typeof elem.getAttributeNode !== "undefined"
+ && elem.getAttributeNode("id");
+ return elem.nodeType === 1 && node && node.nodeValue
+ === match;
+ };
+ }
+
+ root.removeChild(form);
+ })();
+
+ (function() {
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild(document.createComment(""));
+
+ // Make sure no comments are found
+ if (div.getElementsByTagName("*").length > 0) {
+ Expr.find.TAG = function(match, context) {
+ var results = context.getElementsByTagName(match[1]);
+
+ // Filter out possible comments
+ if (match[1] === "*") {
+ var tmp = [];
+
+ for (var i = 0; results[i]; i++) {
+ if (results[i].nodeType === 1) {
+ tmp.push(results[i]);
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+ if (div.firstChild && div.firstChild.getAttribute("href") !== "#") {
+ Expr.attrHandle.href = function(elem) {
+ return elem.getAttribute("href", 2);
+ };
+ }
+ })();
+
+ if (document.querySelectorAll) (function() {
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if (div.querySelectorAll && div.querySelectorAll(".TEST").length
+ === 0) {
+ return;
+ }
+
+ Sizzle = function(query, context, extra, seed) {
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if (!seed && context.nodeType === 9 && !isXML(context)) {
+ try {
+ return makeArray(context.querySelectorAll(query), extra);
+ } catch(e) {
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ Sizzle.find = oldSizzle.find;
+ Sizzle.filter = oldSizzle.filter;
+ Sizzle.selectors = oldSizzle.selectors;
+ Sizzle.matches = oldSizzle.matches;
+ })();
+
+ if (document.getElementsByClassName
+ && document.documentElement.getElementsByClassName) {
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function(match, context) {
+ return context.getElementsByClassName(match[1]);
+ };
+ }
+
+ function dirNodeCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
+ for (var i = 0, l = checkSet.length; i < l; i++) {
+ var elem = checkSet[i];
+ if (elem) {
+ elem = elem[dir];
+ var match = false;
+
+ while (elem && elem.nodeType) {
+ var done = elem[doneName];
+ if (done) {
+ match = checkSet[ done ];
+ break;
+ }
+
+ if (elem.nodeType === 1 && !isXML)
+ elem[doneName] = i;
+
+ if (elem.nodeName === cur) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+ }
+
+ function dirCheck(dir, cur, doneName, checkSet, nodeCheck, isXML) {
+ for (var i = 0, l = checkSet.length; i < l; i++) {
+ var elem = checkSet[i];
+ if (elem) {
+ elem = elem[dir];
+ var match = false;
+
+ while (elem && elem.nodeType) {
+ if (elem[doneName]) {
+ match = checkSet[ elem[doneName] ];
+ break;
+ }
+
+ if (elem.nodeType === 1) {
+ if (!isXML)
+ elem[doneName] = i;
+
+ if (typeof cur !== "string") {
+ if (elem === cur) {
+ match = true;
+ break;
+ }
+
+ } else if (Sizzle.filter(cur, [elem]).length > 0) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+ }
+
+ var contains = document.compareDocumentPosition ? function(a, b) {
+ return a.compareDocumentPosition(b) & 16;
+ } : function(a, b) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+ var isXML = function(elem) {
+ return elem.nodeType === 9 && elem.documentElement.nodeName
+ !== "HTML" || !!elem.ownerDocument
+ && isXML(elem.ownerDocument);
+ };
+
+ var posProcess = function(selector, context) {
+ var tmpSet = [], later = "", match,
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ((match = Expr.match.PSEUDO.exec(selector))) {
+ later += match[0];
+ selector = selector.replace(Expr.match.PSEUDO, "");
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for (var i = 0, l = root.length; i < l; i++) {
+ Sizzle(selector, root[i], tmpSet);
+ }
+
+ return Sizzle.filter(later, tmpSet);
+ };
+
+ // EXPOSE
+ jQuery.find = Sizzle;
+ jQuery.filter = Sizzle.filter;
+ jQuery.expr = Sizzle.selectors;
+ jQuery.expr[":"] = jQuery.expr.filters;
+
+ Sizzle.selectors.filters.hidden = function(elem) {
+ return "hidden" === elem.type || jQuery.css(elem, "display")
+ === "none" || jQuery.css(elem, "visibility") === "hidden";
+ };
+
+ Sizzle.selectors.filters.visible = function(elem) {
+ return "hidden" !== elem.type && jQuery.css(elem, "display")
+ !== "none" && jQuery.css(elem, "visibility") !== "hidden";
+ };
+
+ Sizzle.selectors.filters.animated = function(elem) {
+ return jQuery.grep(jQuery.timers, function(fn) {
+ return elem === fn.elem;
+ }).length;
+ };
+
+ jQuery.multiFilter = function(expr, elems, not) {
+ if (not) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return Sizzle.matches(expr, elems);
+ };
+
+ jQuery.dir = function(elem, dir) {
+ var matched = [], cur = elem[dir];
+ while (cur && cur != document) {
+ if (cur.nodeType == 1)
+ matched.push(cur);
+ cur = cur[dir];
+ }
+ return matched;
+ };
+
+ jQuery.nth = function(cur, result, dir, elem) {
+ result = result || 1;
+ var num = 0;
+
+ for (; cur; cur = cur[dir])
+ if (cur.nodeType == 1 && ++num == result)
+ break;
+
+ return cur;
+ };
+
+ jQuery.sibling = function(n, elem) {
+ var r = [];
+
+ for (; n; n = n.nextSibling) {
+ if (n.nodeType == 1 && n != elem)
+ r.push(n);
+ }
+
+ return r;
+ };
+
+ return;
+
+ window.Sizzle = Sizzle;
+
+ })();
+ /*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+ jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function(elem, types, handler, data) {
+ if (elem.nodeType == 3 || elem.nodeType == 8)
+ return;
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if (elem.setInterval && elem != window)
+ elem = window;
+
+ // Make sure that the function being executed has a unique ID
+ if (!handler.guid)
+ handler.guid = this.guid++;
+
+ // if data is passed, bind to handler
+ if (data !== undefined) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
+
+ // Create unique handler function, wrapped around original handler
+ handler = this.proxy(fn);
+
+ // Store data in unique handler
+ handler.data = data;
+ }
+
+ // Init the element's event structure
+ var events = jQuery.data(elem, "events")
+ || jQuery.data(elem, "events", {}),
+ handle = jQuery.data(elem, "handle")
+ || jQuery.data(elem, "handle", function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined"
+ && !jQuery.event.triggered
+ ? jQuery.event.handle.apply(arguments.callee.elem, arguments)
+ : undefined;
+ });
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ handler.type = namespaces.slice().sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[type];
+
+ if (jQuery.event.specialAll[type])
+ jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+
+ // Init the event handler queue
+ if (!handlers) {
+ handlers = events[type] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if (!jQuery.event.special[type]
+ || jQuery.event.special[type].setup.call(elem, data, namespaces)
+ === false) {
+ // Bind the global event handler to the element
+ if (elem.addEventListener)
+ elem.addEventListener(type, handle, false); else if (elem.attachEvent)
+ elem.attachEvent("on" + type, handle);
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[handler.guid] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[type] = true;
+ });
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ guid: 1,
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function(elem, types, handler) {
+ // don't do events on text and comment nodes
+ if (elem.nodeType == 3 || elem.nodeType == 8)
+ return;
+
+ var events = jQuery.data(elem, "events"), ret, index;
+
+ if (events) {
+ // Unbind all events for the element
+ if (types === undefined || (typeof types === "string"
+ && types.charAt(0) == "."))
+ for (var type in events)
+ this.remove(elem, type + (types || "")); else {
+ // types is actually an event object here
+ if (types.type) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events seperated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ jQuery.each(types.split(/\s+/), function(index, type) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var namespace = RegExp("(^|\\.)"
+ + namespaces.slice().sort().join(".*\\.")
+ + "(\\.|$)");
+
+ if (events[type]) {
+ // remove the given handler for the given type
+ if (handler)
+ delete events[type][handler.guid];
+
+ // remove all handlers for the given type
+ else
+ for (var handle in events[type])
+ // Handle the removal of namespaced events
+ if (namespace.test(events[type][handle].type))
+ delete events[type][handle];
+
+ if (jQuery.event.specialAll[type])
+ jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+
+ // remove generic event handler if no more handlers exist
+ for (ret in events[type]) break;
+ if (!ret) {
+ if (!jQuery.event.special[type]
+ || jQuery.event.special[type].teardown.call(elem, namespaces)
+ === false) {
+ if (elem.removeEventListener)
+ elem.removeEventListener(type, jQuery.data(elem, "handle"), false); else if (elem.detachEvent)
+ elem.detachEvent("on"
+ + type, jQuery.data(elem, "handle"));
+ }
+ ret = null;
+ delete events[type];
+ }
+ }
+ });
+ }
+
+ // Remove the expando if it's no longer used
+ for (ret in events) break;
+ if (!ret) {
+ var handle = jQuery.data(elem, "handle");
+ if (handle) handle.elem = null;
+ jQuery.removeData(elem, "events");
+ jQuery.removeData(elem, "handle");
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function(event, data, elem, bubbling) {
+ // Event object or event type
+ var type = event.type || event;
+
+ if (!bubbling) {
+ event = typeof event === "object" ? // jQuery.Event object
+ event[expando] ? event : // Object literal
+ jQuery.extend(jQuery.Event(type), event)
+ : // Just the event type (string)
+ jQuery.Event(type);
+
+ if (type.indexOf("!") >= 0) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if (!elem) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+ // Only trigger if we've ever bound an event for it
+ if (this.global[type])
+ jQuery.each(jQuery.cache, function() {
+ if (this.events && this.events[type])
+ jQuery.event.trigger(event, data, this.handle.elem);
+ });
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ return undefined;
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray(data);
+ data.unshift(event);
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data(elem, "handle");
+ if (handle)
+ handle.apply(elem, data);
+
+ // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
+ if ((!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click"))
+ && elem["on" + type] && elem["on" + type].apply(elem, data)
+ === false)
+ event.result = false;
+
+ // Trigger the native events (except for clicks on links)
+ if (!bubbling && elem[type] && !event.isDefaultPrevented()
+ && !(jQuery.nodeName(elem, 'a') && type == "click")) {
+ this.triggered = true;
+ try {
+ elem[ type ]();
+ // prevent IE from throwing an error for some hidden elements
+ } catch (e) {
+ }
+ }
+
+ this.triggered = false;
+
+ if (!event.isPropagationStopped()) {
+ var parent = elem.parentNode || elem.ownerDocument;
+ if (parent)
+ jQuery.event.trigger(event, data, parent, true);
+ }
+ },
+
+ handle: function(event) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix(event || window.event);
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = RegExp("(^|\\.)"
+ + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[event.type];
+
+ for (var j in handlers) {
+ var handler = handlers[j];
+
+ // Filter the functions by class
+ if (all || namespace.test(handler.type)) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply(this, arguments);
+
+ if (ret !== undefined) {
+ event.result = ret;
+ if (ret === false) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if (event.isImmediatePropagationStopped())
+ break;
+
+ }
+ }
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function(event) {
+ if (event[expando])
+ return event;
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event(originalEvent);
+
+ for (var i = this.props.length, prop; i;) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if (!event.target)
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+
+ // check if target is a textnode (safari)
+ if (event.target.nodeType == 3)
+ event.target = event.target.parentNode;
+
+ // Add relatedTarget, if necessary
+ if (!event.relatedTarget && event.fromElement)
+ event.relatedTarget = event.fromElement == event.target
+ ? event.toElement : event.fromElement;
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if (event.pageX == null && event.clientX != null) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body
+ && body.scrollLeft || 0) - (doc.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body
+ && body.scrollTop || 0) - (doc.clientTop || 0);
+ }
+
+ // Add which for key events
+ if (!event.which && ((event.charCode || event.charCode === 0)
+ ? event.charCode : event.keyCode))
+ event.which = event.charCode || event.keyCode;
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if (!event.metaKey && event.ctrlKey)
+ event.metaKey = event.ctrlKey;
+
+ // Add which for click: 1 == left; 2 == middle; 3 == right
+ // Note: button is not normalized, so don't use it
+ if (!event.which && event.button)
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3
+ : ( event.button & 4 ? 2 : 0 ) ));
+
+ return event;
+ },
+
+ proxy: function(fn, proxy) {
+ proxy = proxy || function() {
+ return fn.apply(this, arguments);
+ };
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: bindReady,
+ teardown: function() {
+ }
+ }
+ },
+
+ specialAll: {
+ live: {
+ setup: function(selector, namespaces) {
+ jQuery.event.add(this, namespaces[0], liveHandler);
+ },
+ teardown: function(namespaces) {
+ if (namespaces.length) {
+ var remove = 0, name = RegExp("(^|\\.)" + namespaces[0]
+ + "(\\.|$)");
+
+ jQuery.each((jQuery.data(this, "events").live
+ || {}), function() {
+ if (name.test(this.type))
+ remove++;
+ });
+
+ if (remove < 1)
+ jQuery.event.remove(this, namespaces[0], liveHandler);
+ }
+ }
+ }
+ }
+ };
+
+ jQuery.Event = function(src) {
+ // Allow instantiation without the 'new' keyword
+ if (!this.preventDefault)
+ return new jQuery.Event(src);
+
+ // Event object
+ if (src && src.type) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else
+ this.type = src;
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
+
+ // Mark it as fixed
+ this[expando] = true;
+ };
+
+ function returnFalse() {
+ return false;
+ }
+
+ function returnTrue() {
+ return true;
+ }
+
+ // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+ // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+ jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if (!e)
+ return;
+ // if preventDefault exists run it on the original event
+ if (e.preventDefault)
+ e.preventDefault();
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if (!e)
+ return;
+ // if stopPropagation exists run it on the original event
+ if (e.stopPropagation)
+ e.stopPropagation();
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation:function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+ };
+ // Checks if an event happened on an element within another element
+ // Used in jQuery.event.special.mouseenter and mouseleave handlers
+ var withinElement = function(event) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+ // Traverse up the tree
+ while (parent && parent != this)
+ try {
+ parent = parent.parentNode;
+ } catch(e) {
+ parent = this;
+ }
+
+ if (parent != this) {
+ // set the correct event type
+ event.type = event.data;
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply(this, arguments);
+ }
+ };
+
+ jQuery.each({
+ mouseover: 'mouseenter',
+ mouseout: 'mouseleave'
+ }, function(orig, fix) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ jQuery.event.add(this, orig, withinElement, fix);
+ },
+ teardown: function() {
+ jQuery.event.remove(this, orig, withinElement);
+ }
+ };
+ });
+
+ jQuery.fn.extend({
+ bind: function(type, data, fn) {
+ return type == "unload" ? this.one(type, data, fn)
+ : this.each(function() {
+ jQuery.event.add(this, type, fn || data, fn && data);
+ });
+ },
+
+ one: function(type, data, fn) {
+ var one = jQuery.event.proxy(fn || data, function(event) {
+ jQuery(this).unbind(event, one);
+ return (fn || data).apply(this, arguments);
+ });
+ return this.each(function() {
+ jQuery.event.add(this, type, one, fn && data);
+ });
+ },
+
+ unbind: function(type, fn) {
+ return this.each(function() {
+ jQuery.event.remove(this, type, fn);
+ });
+ },
+
+ trigger: function(type, data) {
+ return this.each(function() {
+ jQuery.event.trigger(type, data, this);
+ });
+ },
+
+ triggerHandler: function(type, data) {
+ if (this[0]) {
+ var event = jQuery.Event(type);
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger(event, data, this[0]);
+ return event.result;
+ }
+ },
+
+ toggle: function(fn) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while (i < args.length)
+ jQuery.event.proxy(fn, args[i++]);
+
+ return this.click(jQuery.event.proxy(fn, function(event) {
+ // Figure out which function to execute
+ this.lastToggle = ( this.lastToggle || 0 ) % i;
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ this.lastToggle++ ].apply(this, arguments)
+ || false;
+ }));
+ },
+
+ hover: function(fnOver, fnOut) {
+ return this.mouseenter(fnOver).mouseleave(fnOut);
+ },
+
+ ready: function(fn) {
+ // Attach the listeners
+ bindReady();
+
+ // If the DOM is already ready
+ if (jQuery.isReady)
+ // Execute the function immediately
+ fn.call(document, jQuery);
+
+ // Otherwise, remember the function for later
+ else
+ // Add the function to the wait list
+ jQuery.readyList.push(fn);
+
+ return this;
+ },
+
+ live: function(type, fn) {
+ var proxy = jQuery.event.proxy(fn);
+ proxy.guid += this.selector + type;
+
+ jQuery(document).bind(liveConvert(type, this.selector), this.selector, proxy);
+
+ return this;
+ },
+
+ die: function(type, fn) {
+ jQuery(document).unbind(liveConvert(type, this.selector), fn
+ ? { guid: fn.guid + this.selector + type } : null);
+ return this;
+ }
+ });
+
+ function liveHandler(event) {
+ var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
+ stop = true,
+ elems = [];
+
+ jQuery.each(jQuery.data(this, "events").live || [], function(i, fn) {
+ if (check.test(fn.type)) {
+ var elem = jQuery(event.target).closest(fn.data)[0];
+ if (elem)
+ elems.push({ elem: elem, fn: fn });
+ }
+ });
+
+ jQuery.each(elems, function() {
+ if (this.fn.call(this.elem, event, this.fn.data) === false)
+ stop = false;
+ });
+
+ return stop;
+ }
+
+ function liveConvert(type, selector) {
+ return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
+ }
+
+ jQuery.extend({
+ isReady: false,
+ readyList: [],
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if (!jQuery.isReady) {
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if (jQuery.readyList) {
+ // Execute all of them
+ jQuery.each(jQuery.readyList, function() {
+ this.call(document, jQuery);
+ });
+
+ // Reset the list of functions
+ jQuery.readyList = null;
+ }
+
+ // Trigger any bound ready events
+ jQuery(document).triggerHandler("ready");
+ }
+ }
+ });
+
+ var readyBound = false;
+
+ function bindReady() {
+ if (readyBound) return;
+ readyBound = true;
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if (document.addEventListener) {
+ // Use the handy event callback
+ document.addEventListener("DOMContentLoaded", function() {
+ document.removeEventListener("DOMContentLoaded", arguments.callee, false);
+ jQuery.ready();
+ }, false);
+
+ // If IE event model is used
+ } else if (document.attachEvent) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", function() {
+ if (document.readyState === "complete") {
+ document.detachEvent("onreadystatechange", arguments.callee);
+ jQuery.ready();
+ }
+ });
+
+ // If IE and not an iframe
+ // continually check to see if the document is ready
+ if (document.documentElement.doScroll && typeof window.frameElement
+ === "undefined") (function() {
+ if (jQuery.isReady) return;
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(error) {
+ setTimeout(arguments.callee, 0);
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+ })();
+ }
+
+ // A fallback to window.onload, that will always work
+ jQuery.event.add(window, "load", jQuery.ready);
+ }
+
+ jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"
+ + "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,"
+ + "change,select,submit,keydown,keypress,keyup,error").split(","), function(
+ i, name) {
+
+ // Handle event binding
+ jQuery.fn[name] = function(fn) {
+ return fn ? this.bind(name, fn) : this.trigger(name);
+ };
+ });
+
+ // Prevent memory leaks in IE
+ // And prevent errors on refresh with events like mouseover in other browsers
+ // Window isn't included so as not to unbind existing unload events
+ jQuery(window).bind('unload', function() {
+ for (var id in jQuery.cache)
+ // Skip the window
+ if (id != 1 && jQuery.cache[ id ].handle)
+ jQuery.event.remove(jQuery.cache[ id ].handle.elem);
+ });
+ (function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + (new Date).getTime();
+
+ div.style.display = "none";
+ div.innerHTML
+ = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if (!all || !all.length || !a) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType == 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that you can get all elements in an <object> element
+ // IE 7 always returns no results
+ objectAll: !!div.getElementsByTagName("object")[0].getElementsByTagName("*").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test(a.getAttribute("style")),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ opacity: a.style.opacity === "0.5",
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Will be defined later
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild(document.createTextNode("window." + id + "=1;"));
+ } catch(e) {
+ }
+
+ root.insertBefore(script, root.firstChild);
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if (window[ id ]) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ root.removeChild(script);
+
+ if (div.attachEvent && div.fireEvent) {
+ div.attachEvent("onclick", function() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", arguments.callee);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = "1px";
+ div.style.paddingLeft = "1px";
+
+ document.body.appendChild(div);
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild(div);
+ });
+ })();
+
+ var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+
+ jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ tabindex: "tabIndex"
+ };
+ jQuery.fn.extend({
+ // Keep a copy of the old load
+ _load: jQuery.fn.load,
+
+ load: function(url, params, callback) {
+ if (typeof url !== "string")
+ return this._load(url);
+
+ var off = url.indexOf(" ");
+ if (off >= 0) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if (params)
+ // If it's a function
+ if (jQuery.isFunction(params)) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if (typeof params === "object") {
+ params = jQuery.param(params);
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function(res, status) {
+ // If successful, inject the HTML into all the matched elements
+ if (status == "success" || status == "notmodified")
+ // See if a selector was specified
+ self.html(selector
+ ? // Create a dummy div to hold the results
+ jQuery("<div/>")// inject the contents of the document in, removing the scripts// to avoid any 'Permission Denied' errors in IE.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements.find(selector) :
+
+ // If not, just inject the full result
+ res.responseText);
+
+ if (callback)
+ self.each(callback, [res.responseText, status, res]);
+ }
+ });
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+ serializeArray: function() {
+ return this.map(function() {
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ }).filter(function() {
+ return this.name && !this.disabled && (this.checked
+ || /select|textarea/i.test(this.nodeName)
+ || /text|hidden|password/i.test(this.type));
+ }).map(function(i, elem) {
+ var val = jQuery(this).val();
+ return val == null ? null : jQuery.isArray(val)
+ ? jQuery.map(val, function(val, i) {
+ return {name: elem.name, value: val};
+ }) : {name: elem.name, value: val};
+ }).get();
+ }
+ });
+
+ // Attach a bunch of functions for handling common AJAX events
+ jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(
+ i, o) {
+ jQuery.fn[o] = function(f) {
+ return this.bind(o, f);
+ };
+ });
+
+ var jsc = now();
+
+ jQuery.extend({
+
+ get: function(url, data, callback, type) {
+ // shift arguments if data argument was ommited
+ if (jQuery.isFunction(data)) {
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function(url, callback) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function(url, data, callback) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function(url, data, callback, type) {
+ if (jQuery.isFunction(data)) {
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function(settings) {
+ jQuery.extend(jQuery.ajaxSettings, settings);
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ */
+ // Create the request object; Microsoft failed to properly
+ // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr:function() {
+ return window.ActiveXObject
+ ? new ActiveXObject("Microsoft.XMLHTTP")
+ : new XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+
+ ajax: function(s) {
+ // Extend the settings, but re-extend 's' so that it can be
+ // checked again later (in the test suite, specifically)
+ s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
+
+ var jsonp, jsre = /=\?(&|$)/g, status, data,
+ type = s.type.toUpperCase();
+
+ // convert data if not already a string
+ if (s.data && s.processData && typeof s.data !== "string")
+ s.data = jQuery.param(s.data);
+
+ // Handle JSONP Parameter Callbacks
+ if (s.dataType == "jsonp") {
+ if (type == "GET") {
+ if (!s.url.match(jsre))
+ s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp
+ || "callback") + "=?";
+ } else if (!s.data || !s.data.match(jsre))
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp
+ || "callback") + "=?";
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if (s.dataType == "json" && (s.data && s.data.match(jsre)
+ || s.url.match(jsre))) {
+ jsonp = "jsonp" + jsc++;
+
+ // Replace the =? sequence both in the query string and the data
+ if (s.data)
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ window[ jsonp ] = function(tmp) {
+ data = tmp;
+ success();
+ complete();
+ // Garbage collect
+ window[ jsonp ] = undefined;
+ try {
+ delete window[ jsonp ];
+ } catch(e) {
+ }
+ if (head)
+ head.removeChild(script);
+ };
+ }
+
+ if (s.dataType == "script" && s.cache == null)
+ s.cache = false;
+
+ if (s.cache === false && type == "GET") {
+ var ts = now();
+ // try replacing _= if it is there
+ var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?")
+ + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for get requests
+ if (s.data && type == "GET") {
+ s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
+
+ // IE likes to send both get and post data, prevent this
+ s.data = null;
+ }
+
+ // Watch for a new set of requests
+ if (s.global && ! jQuery.active++)
+ jQuery.event.trigger("ajaxStart");
+
+ // Matches an absolute URL, and saves the domain
+ var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec(s.url);
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if (s.dataType == "script" && type == "GET" && parts && ( parts[1]
+ && parts[1] != location.protocol || parts[2]
+ != location.host )) {
+
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement("script");
+ script.src = s.url;
+ if (s.scriptCharset)
+ script.charset = s.scriptCharset;
+
+ // Handle Script loading
+ if (!jsonp) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if (!done && (!this.readyState || this.readyState
+ == "loaded" || this.readyState == "complete")) {
+ done = true;
+ success();
+ complete();
+ head.removeChild(script);
+ }
+ };
+ }
+
+ head.appendChild(script);
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if (s.username)
+ xhr.open(type, s.url, s.async, s.username, s.password); else
+ xhr.open(type, s.url, s.async);
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set the correct header, if data is being sent
+ if (s.data)
+ xhr.setRequestHeader("Content-Type", s.contentType);
+
+ // Set the If-Modified-Since header, if ifModified mode.
+ if (s.ifModified)
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]
+ || "Thu, 01 Jan 1970 00:00:00 GMT");
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType
+ && s.accepts[ s.dataType ] ? s.accepts[ s.dataType ]
+ + ", */*" : s.accepts._default);
+ } catch(e) {
+ }
+
+ // Allow custom headers/mimetypes and early abort
+ if (s.beforeSend && s.beforeSend(xhr, s) === false) {
+ // Handle the global AJAX counter
+ if (s.global && ! --jQuery.active)
+ jQuery.event.trigger("ajaxStop");
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if (s.global)
+ jQuery.event.trigger("ajaxSend", [xhr, s]);
+
+ // Wait for a response to come back
+ var onreadystatechange = function(isTimeout) {
+ // The request was aborted, clear the interval and decrement jQuery.active
+ if (xhr.readyState == 0) {
+ if (ival) {
+ // clear poll interval
+ clearInterval(ival);
+ ival = null;
+ // Handle the global AJAX counter
+ if (s.global && ! --jQuery.active)
+ jQuery.event.trigger("ajaxStop");
+ }
+ // The transfer is complete and the data is available, or the request timed out
+ } else if (!requestDone && xhr && (xhr.readyState == 4
+ || isTimeout == "timeout")) {
+ requestDone = true;
+
+ // clear poll interval
+ if (ival) {
+ clearInterval(ival);
+ ival = null;
+ }
+
+ status = isTimeout == "timeout" ? "timeout"
+ : !jQuery.httpSuccess(xhr) ? "error" : s.ifModified
+ && jQuery.httpNotModified(xhr, s.url)
+ ? "notmodified" : "success";
+
+ if (status == "success") {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData(xhr, s.dataType, s);
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if (status == "success") {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xhr.getResponseHeader("Last-Modified");
+ } catch(e) {
+ } // swallow exception thrown by FF if header is not available
+
+ if (s.ifModified && modRes)
+ jQuery.lastModified[s.url] = modRes;
+
+ // JSONP handles its own success callback
+ if (!jsonp)
+ success();
+ } else
+ jQuery.handleError(s, xhr, status);
+
+ // Fire the complete handlers
+ complete();
+
+ if (isTimeout)
+ xhr.abort();
+
+ // Stop memory leaks
+ if (s.async)
+ xhr = null;
+ }
+ };
+
+ if (s.async) {
+ // don't attach the handler to the request, just poll it instead
+ var ival = setInterval(onreadystatechange, 13);
+
+ // Timeout checker
+ if (s.timeout > 0)
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if (xhr && !requestDone)
+ onreadystatechange("timeout");
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send(s.data);
+ } catch(e) {
+ jQuery.handleError(s, xhr, null, e);
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if (!s.async)
+ onreadystatechange();
+
+ function success() {
+ // If a local callback was specified, fire it and pass it the data
+ if (s.success)
+ s.success(data, status);
+
+ // Fire the global callback
+ if (s.global)
+ jQuery.event.trigger("ajaxSuccess", [xhr, s]);
+ }
+
+ function complete() {
+ // Process result
+ if (s.complete)
+ s.complete(xhr, status);
+
+ // The request was completed
+ if (s.global)
+ jQuery.event.trigger("ajaxComplete", [xhr, s]);
+
+ // Handle the global AJAX counter
+ if (s.global && ! --jQuery.active)
+ jQuery.event.trigger("ajaxStop");
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ handleError: function(s, xhr, status, e) {
+ // If a local callback was specified, fire it
+ if (s.error) s.error(xhr, status, e);
+
+ // Fire the global callback
+ if (s.global)
+ jQuery.event.trigger("ajaxError", [xhr, s, e]);
+ },
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function(xhr) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol == "file:"
+ || ( xhr.status >= 200 && xhr.status < 300 )
+ || xhr.status == 304 || xhr.status == 1223;
+ } catch(e) {
+ }
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function(xhr, url) {
+ try {
+ var xhrRes = xhr.getResponseHeader("Last-Modified");
+
+ // Firefox always returns 200. check Last-Modified date
+ return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
+ } catch(e) {
+ }
+ return false;
+ },
+
+ httpData: function(xhr, type, s) {
+ var ct = xhr.getResponseHeader("content-type"),
+ xml = type == "xml" || !type && ct && ct.indexOf("xml")
+ >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if (xml && data.documentElement.tagName == "parsererror")
+ throw "parsererror";
+
+ // Allow a pre-filtering function to sanitize the response
+ // s != null is checked to keep backwards compatibility
+ if (s && s.dataFilter)
+ data = s.dataFilter(data, type);
+
+ // The filter can actually parse the response
+ if (typeof data === "string") {
+
+ // If the type is "script", eval it in global context
+ if (type == "script")
+ jQuery.globalEval(data);
+
+ // Get the JavaScript object, if JSON is used.
+ if (type == "json")
+ data = window["eval"]("(" + data + ")");
+ }
+
+ return data;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function(a) {
+ var s = [ ];
+
+ function add(key, value) {
+ s[ s.length ] = encodeURIComponent(key) + '='
+ + encodeURIComponent(value);
+ }
+
+ ;
+
+ // If an array was passed in, assume that it is an array
+ // of form elements
+ if (jQuery.isArray(a) || a.jquery)
+ // Serialize the form elements
+ jQuery.each(a, function() {
+ add(this.name, this.value);
+ });
+
+ // Otherwise, assume that it's an object of key/value pairs
+ else
+ // Serialize the key/values
+ for (var j in a)
+ // If the value is an array then the key names need to be repeated
+ if (jQuery.isArray(a[j]))
+ jQuery.each(a[j], function() {
+ add(j, this);
+ }); else
+ add(j, jQuery.isFunction(a[j]) ? a[j]() : a[j]);
+
+ // Return the resulting serialization
+ return s.join("&").replace(/%20/g, "+");
+ }
+
+ });
+ var elemdisplay = {},
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+ function genFx(type, num) {
+ var obj = {};
+ jQuery.each(fxAttrs.concat.apply([], fxAttrs.slice(0, num)), function() {
+ obj[ this ] = type;
+ });
+ return obj;
+ }
+
+ jQuery.fn.extend({
+ show: function(speed, callback) {
+ if (speed) {
+ return this.animate(genFx("show", 3), speed, callback);
+ } else {
+ for (var i = 0, l = this.length; i < l; i++) {
+ var old = jQuery.data(this[i], "olddisplay");
+
+ this[i].style.display = old || "";
+
+ if (jQuery.css(this[i], "display") === "none") {
+ var tagName = this[i].tagName, display;
+
+ if (elemdisplay[ tagName ]) {
+ display = elemdisplay[ tagName ];
+ } else {
+ var elem = jQuery("<" + tagName
+ + " />").appendTo("body");
+
+ display = elem.css("display");
+ if (display === "none")
+ display = "block";
+
+ elem.remove();
+
+ elemdisplay[ tagName ] = display;
+ }
+
+ this[i].style.display
+ = jQuery.data(this[i], "olddisplay", display);
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function(speed, callback) {
+ if (speed) {
+ return this.animate(genFx("hide", 3), speed, callback);
+ } else {
+ for (var i = 0, l = this.length; i < l; i++) {
+ var old = jQuery.data(this[i], "olddisplay");
+ if (!old && old !== "none")
+ jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ this[i].style.display = "none";
+ }
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function(fn, fn2) {
+ var bool = typeof fn === "boolean";
+
+ return jQuery.isFunction(fn) && jQuery.isFunction(fn2)
+ ? this._toggle.apply(this, arguments) : fn == null || bool
+ ? this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ }) : this.animate(genFx("toggle", 3), fn, fn2);
+ },
+
+ fadeTo: function(speed, to, callback) {
+ return this.animate({opacity: to}, speed, callback);
+ },
+
+ animate: function(prop, speed, easing, callback) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ return this[ optall.queue === false ? "each"
+ : "queue" ](function() {
+
+ var opt = jQuery.extend({}, optall), p,
+ hidden = this.nodeType == 1
+ && jQuery(this).is(":hidden"),
+ self = this;
+
+ for (p in prop) {
+ if (prop[p] == "hide" && hidden || prop[p] == "show"
+ && !hidden)
+ return opt.complete.call(this);
+
+ if (( p == "height" || p == "width" ) && this.style) {
+ // Store display property
+ opt.display = jQuery.css(this, "display");
+
+ // Make sure that nothing sneaks out
+ opt.overflow = this.style.overflow;
+ }
+ }
+
+ if (opt.overflow != null)
+ this.style.overflow = "hidden";
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each(prop, function(name, val) {
+ var e = new jQuery.fx(self, opt, name);
+
+ if (/toggle|show|hide/.test(val))
+ e[ val == "toggle" ? hidden ? "show" : "hide"
+ : val ](prop); else {
+ var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ start = e.cur(true) || 0;
+
+ if (parts) {
+ var end = parseFloat(parts[2]),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if (unit != "px") {
+ self.style[ name ] = (end || 1) + unit;
+ start = ((end || 1) / e.cur(true)) * start;
+ self.style[ name ] = start + unit;
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if (parts[1])
+ end = ((parts[1] == "-=" ? -1 : 1) * end)
+ + start;
+
+ e.custom(start, end, unit);
+ } else
+ e.custom(start, val, "");
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function(clearQueue, gotoEnd) {
+ var timers = jQuery.timers;
+
+ if (clearQueue)
+ this.queue([]);
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for (var i = timers.length - 1; i >= 0; i--)
+ if (timers[i].elem == this) {
+ if (gotoEnd)
+ // force the next step to be the last
+ timers[i](true);
+ timers.splice(i, 1);
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if (!gotoEnd)
+ this.dequeue();
+
+ return this;
+ }
+
+ });
+
+ // Generate shortcuts for custom animations
+ jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" }
+ }, function(name, props) {
+ jQuery.fn[ name ] = function(speed, callback) {
+ return this.animate(props, speed, callback);
+ };
+ });
+
+ jQuery.extend({
+
+ speed: function(speed, easing, fn) {
+ var opt = typeof speed === "object" ? speed : {
+ complete: fn || !fn && easing || jQuery.isFunction(speed)
+ && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing)
+ && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number"
+ ? opt.duration : jQuery.fx.speeds[opt.duration]
+ || jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if (opt.queue !== false)
+ jQuery(this).dequeue();
+ if (jQuery.isFunction(opt.old))
+ opt.old.call(this);
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function(p, n, firstNum, diff) {
+ return firstNum + diff * p;
+ },
+ swing: function(p, n, firstNum, diff) {
+ return ((-Math.cos(p * Math.PI) / 2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function(elem, options, prop) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if (!options.orig)
+ options.orig = {};
+ }
+
+ });
+
+ jQuery.fx.prototype = {
+
+ // Simple function for setting a style value
+ update: function() {
+ if (this.options.step)
+ this.options.step.call(this.elem, this.now, this);
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)(this);
+
+ // Set display property to block for height/width animations
+ if (( this.prop == "height" || this.prop == "width" )
+ && this.elem.style)
+ this.elem.style.display = "block";
+ },
+
+ // Get the current size
+ cur: function(force) {
+ if (this.elem[this.prop] != null && (!this.elem.style
+ || this.elem.style[this.prop] == null))
+ return this.elem[ this.prop ];
+
+ var r = parseFloat(jQuery.css(this.elem, this.prop, force));
+ return r && r > -10000 ? r
+ : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function(from, to, unit) {
+ this.startTime = now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ var self = this;
+
+ function t(gotoEnd) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if (t() && jQuery.timers.push(t) == 1) {
+ timerId = setInterval(function() {
+ var timers = jQuery.timers;
+
+ for (var i = 0; i < timers.length; i++)
+ if (!timers[i]())
+ timers.splice(i--, 1);
+
+ if (!timers.length) {
+ clearInterval(timerId);
+ }
+ }, 13);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop]
+ = jQuery.attr(this.elem.style, this.prop);
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop == "width" || this.prop == "height" ? 1
+ : 0, this.cur());
+
+ // Start by showing the element
+ jQuery(this.elem).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop]
+ = jQuery.attr(this.elem.style, this.prop);
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function(gotoEnd) {
+ var t = now();
+
+ if (gotoEnd || t >= this.options.duration + this.startTime) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ var done = true;
+ for (var i in this.options.curAnim)
+ if (this.options.curAnim[i] !== true)
+ done = false;
+
+ if (done) {
+ if (this.options.display != null) {
+ // Reset the overflow
+ this.elem.style.overflow = this.options.overflow;
+
+ // Reset the display
+ this.elem.style.display = this.options.display;
+ if (jQuery.css(this.elem, "display") == "none")
+ this.elem.style.display = "block";
+ }
+
+ // Hide the element if the "hide" operation was done
+ if (this.options.hide)
+ jQuery(this.elem).hide();
+
+ // Reset the properties, if the item has been hidden or shown
+ if (this.options.hide || this.options.show)
+ for (var p in this.options.curAnim)
+ jQuery.attr(this.elem.style, p, this.options.orig[p]);
+
+ // Execute the complete function
+ this.options.complete.call(this.elem);
+ }
+
+ return false;
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[this.options.easing
+ || (jQuery.easing.swing ? "swing"
+ : "linear")](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+
+ };
+
+ jQuery.extend(jQuery.fx, {
+ speeds:{
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+ step: {
+
+ opacity: function(fx) {
+ jQuery.attr(fx.elem.style, "opacity", fx.now);
+ },
+
+ _default: function(fx) {
+ if (fx.elem.style && fx.elem.style[ fx.prop ] != null)
+ fx.elem.style[ fx.prop ] = fx.now + fx.unit; else
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ });
+ if (document.documentElement["getBoundingClientRect"])
+ jQuery.fn.offset = function() {
+ if (!this[0]) return { top: 0, left: 0 };
+ if (this[0]
+ === this[0].ownerDocument.body) return jQuery.offset.bodyOffset(this[0]);
+ var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+ clientTop = docElem.clientTop || body.clientTop
+ || 0, clientLeft = docElem.clientLeft
+ || body.clientLeft || 0,
+ top = box.top + (self.pageYOffset || jQuery.boxModel
+ && docElem.scrollTop || body.scrollTop )
+ - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.boxModel
+ && docElem.scrollLeft || body.scrollLeft)
+ - clientLeft;
+ return { top: top, left: left };
+ }; else
+ jQuery.fn.offset = function() {
+ if (!this[0]) return { top: 0, left: 0 };
+ if (this[0]
+ === this[0].ownerDocument.body) return jQuery.offset.bodyOffset(this[0]);
+ jQuery.offset.initialized || jQuery.offset.initialize();
+
+ var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+ doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
+ body = doc.body, defaultView = doc.defaultView,
+ prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ top = elem.offsetTop, left = elem.offsetLeft;
+
+ while ((elem = elem.parentNode) && elem !== body && elem
+ !== docElem) {
+ computedStyle = defaultView.getComputedStyle(elem, null);
+ top -= elem.scrollTop,left -= elem.scrollLeft;
+ if (elem === offsetParent) {
+ top += elem.offsetTop,left += elem.offsetLeft;
+ if (jQuery.offset.doesNotAddBorder
+ && !(jQuery.offset.doesAddBorderForTableAndCells
+ && /^t(able|d|h)$/i.test(elem.tagName)))
+ top += parseInt(computedStyle.borderTopWidth, 10)
+ || 0,left
+ += parseInt(computedStyle.borderLeftWidth, 10)
+ || 0;
+ prevOffsetParent = offsetParent,offsetParent
+ = elem.offsetParent;
+ }
+ if (jQuery.offset.subtractsBorderForOverflowNotVisible
+ && computedStyle.overflow !== "visible")
+ top += parseInt(computedStyle.borderTopWidth, 10) || 0,left
+ += parseInt(computedStyle.borderLeftWidth, 10) || 0;
+ prevComputedStyle = computedStyle;
+ }
+
+ if (prevComputedStyle.position === "relative"
+ || prevComputedStyle.position === "static")
+ top += body.offsetTop,left += body.offsetLeft;
+
+ if (prevComputedStyle.position === "fixed")
+ top += Math.max(docElem.scrollTop, body.scrollTop),left
+ += Math.max(docElem.scrollLeft, body.scrollLeft);
+
+ return { top: top, left: left };
+ };
+
+ jQuery.offset = {
+ initialize: function() {
+ if (this.initialized) return;
+ var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
+ html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+
+ rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
+ for (prop in rules) container.style[prop] = rules[prop];
+
+ container.innerHTML = html;
+ body.insertBefore(container, body.firstChild);
+ innerDiv = container.firstChild,checkDiv = innerDiv.firstChild,td
+ = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ innerDiv.style.overflow = 'hidden',innerDiv.style.position
+ = 'relative';
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop
+ === -5);
+
+ body.style.marginTop = '1px';
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
+ body.style.marginTop = bodyMarginTop;
+
+ body.removeChild(container);
+ this.initialized = true;
+ },
+
+ bodyOffset: function(body) {
+ jQuery.offset.initialized || jQuery.offset.initialize();
+ var top = body.offsetTop, left = body.offsetLeft;
+ if (jQuery.offset.doesNotIncludeMarginInBodyOffset)
+ top += parseInt(jQuery.curCSS(body, 'marginTop', true), 10)
+ || 0,left
+ += parseInt(jQuery.curCSS(body, 'marginLeft', true), 10)
+ || 0;
+ return { top: top, left: left };
+ }
+ };
+
+ jQuery.fn.extend({
+ position: function() {
+ var left = 0, top = 0, results;
+
+ if (this[0]) {
+ // Get *real* offsetParent
+ var offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].tagName)
+ ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= num(this, 'marginTop');
+ offset.left -= num(this, 'marginLeft');
+
+ // Add offsetParent borders
+ parentOffset.top += num(offsetParent, 'borderTopWidth');
+ parentOffset.left += num(offsetParent, 'borderLeftWidth');
+
+ // Subtract the two offsets
+ results = {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ }
+
+ return results;
+ },
+
+ offsetParent: function() {
+ var offsetParent = this[0].offsetParent || document.body;
+ while (offsetParent && (!/^body|html$/i.test(offsetParent.tagName)
+ && jQuery.css(offsetParent, 'position') == 'static'))
+ offsetParent = offsetParent.offsetParent;
+ return jQuery(offsetParent);
+ }
+ });
+
+ // Create scrollLeft and scrollTop methods
+ jQuery.each(['Left', 'Top'], function(i, name) {
+ var method = 'scroll' + name;
+
+ jQuery.fn[ method ] = function(val) {
+ if (!this[0]) return null;
+
+ return val !== undefined ?
+
+ // Set the scroll offset
+ this.each(function() {
+ this == window || this == document ? window.scrollTo(!i
+ ? val : jQuery(window).scrollLeft(), i ? val
+ : jQuery(window).scrollTop()) : this[ method ]
+ = val;
+ }) :
+
+ // Return the scroll offset
+ this[0] == window || this[0] == document ? self[ i
+ ? 'pageYOffset' : 'pageXOffset' ] || jQuery.boxModel
+ && document.documentElement[ method ]
+ || document.body[ method ] : this[0][ method ];
+ };
+ });
+ // Create innerHeight, innerWidth, outerHeight and outerWidth methods
+ jQuery.each([ "Height", "Width" ], function(i, name) {
+
+ var tl = i ? "Left" : "Top", // top or left
+ br = i ? "Right" : "Bottom"; // bottom or right
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[ name.toLowerCase() ]() + num(this, "padding" + tl)
+ + num(this, "padding" + br);
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function(margin) {
+ return this["inner" + name]() + num(this, "border" + tl + "Width")
+ + num(this, "border" + br + "Width") + (margin
+ ? num(this, "margin" + tl) + num(this, "margin" + br) : 0);
+ };
+
+ var type = name.toLowerCase();
+
+ jQuery.fn[ type ] = function(size) {
+ // Get window width or height
+ return this[0] == window
+ ? // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ document.compatMode == "CSS1Compat"
+ && document.documentElement[ "client" + name ]
+ || document.body[ "client" + name ] :
+
+ // Get document width or height
+ this[0] == document
+ ? // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ Math.max(document.documentElement["client"
+ + name], document.body["scroll"
+ + name], document.documentElement["scroll"
+ + name], document.body["offset"
+ + name], document.documentElement["offset" + name]) :
+
+ // Get or set width or height on the element
+ size === undefined ? // Get width or height on the element
+ (this.length ? jQuery.css(this[0], type) : null) :
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ this.css(type, typeof size === "string" ? size : size
+ + "px");
+ };
+
+ });
})();
-
-if ( document.querySelectorAll ) (function(){
- var oldSizzle = Sizzle, div = document.createElement("div");
- div.innerHTML = "<p class='TEST'></p>";
-
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
-
- Sizzle = function(query, context, extra, seed){
- context = context || document;
-
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && context.nodeType === 9 && !isXML(context) ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
- }
-
- return oldSizzle(query, context, extra, seed);
- };
-
- Sizzle.find = oldSizzle.find;
- Sizzle.filter = oldSizzle.filter;
- Sizzle.selectors = oldSizzle.selectors;
- Sizzle.matches = oldSizzle.matches;
-})();
-
-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) {
- Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function(match, context) {
- return context.getElementsByClassName(match[1]);
- };
-}
-
-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem && elem.nodeType ) {
- var done = elem[doneName];
- if ( done ) {
- match = checkSet[ done ];
- break;
- }
-
- if ( elem.nodeType === 1 && !isXML )
- elem[doneName] = i;
-
- if ( elem.nodeName === cur ) {
- match = elem;
- break;
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
- if ( elem ) {
- elem = elem[dir];
- var match = false;
-
- while ( elem && elem.nodeType ) {
- if ( elem[doneName] ) {
- match = checkSet[ elem[doneName] ];
- break;
- }
-
- if ( elem.nodeType === 1 ) {
- if ( !isXML )
- elem[doneName] = i;
-
- if ( typeof cur !== "string" ) {
- if ( elem === cur ) {
- match = true;
- break;
- }
-
- } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
- match = elem;
- break;
- }
- }
-
- elem = elem[dir];
- }
-
- checkSet[i] = match;
- }
- }
-}
-
-var contains = document.compareDocumentPosition ? function(a, b){
- return a.compareDocumentPosition(b) & 16;
-} : function(a, b){
- return a !== b && (a.contains ? a.contains(b) : true);
-};
-
-var isXML = function(elem){
- return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
- !!elem.ownerDocument && isXML( elem.ownerDocument );
-};
-
-var posProcess = function(selector, context){
- var tmpSet = [], later = "", match,
- root = context.nodeType ? [context] : context;
-
- // Position selectors must be done after the filter
- // And so must :not(positional) so we move all PSEUDOs to the end
- while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
- later += match[0];
- selector = selector.replace( Expr.match.PSEUDO, "" );
- }
-
- selector = Expr.relative[selector] ? selector + "*" : selector;
-
- for ( var i = 0, l = root.length; i < l; i++ ) {
- Sizzle( selector, root[i], tmpSet );
- }
-
- return Sizzle.filter( later, tmpSet );
-};
-
-// EXPOSE
-jQuery.find = Sizzle;
-jQuery.filter = Sizzle.filter;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.filters;
-
-Sizzle.selectors.filters.hidden = function(elem){
- return "hidden" === elem.type ||
- jQuery.css(elem, "display") === "none" ||
- jQuery.css(elem, "visibility") === "hidden";
-};
-
-Sizzle.selectors.filters.visible = function(elem){
- return "hidden" !== elem.type &&
- jQuery.css(elem, "display") !== "none" &&
- jQuery.css(elem, "visibility") !== "hidden";
-};
-
-Sizzle.selectors.filters.animated = function(elem){
- return jQuery.grep(jQuery.timers, function(fn){
- return elem === fn.elem;
- }).length;
-};
-
-jQuery.multiFilter = function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return Sizzle.matches(expr, elems);
-};
-
-jQuery.dir = function( elem, dir ){
- var matched = [], cur = elem[dir];
- while ( cur && cur != document ) {
- if ( cur.nodeType == 1 )
- matched.push( cur );
- cur = cur[dir];
- }
- return matched;
-};
-
-jQuery.nth = function(cur, result, dir, elem){
- result = result || 1;
- var num = 0;
-
- for ( ; cur; cur = cur[dir] )
- if ( cur.nodeType == 1 && ++num == result )
- break;
-
- return cur;
-};
-
-jQuery.sibling = function(n, elem){
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && n != elem )
- r.push( n );
- }
-
- return r;
-};
-
-return;
-
-window.Sizzle = Sizzle;
-
-})();
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
-
- // Bind an event to an element
- // Original by Dean Edwards
- add: function(elem, types, handler, data) {
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
-
- // For whatever reason, IE has trouble passing the window object
- // around, causing it to be cloned in the process
- if ( elem.setInterval && elem != window )
- elem = window;
-
- // Make sure that the function being executed has a unique ID
- if ( !handler.guid )
- handler.guid = this.guid++;
-
- // if data is passed, bind to handler
- if ( data !== undefined ) {
- // Create temporary function pointer to original handler
- var fn = handler;
-
- // Create unique handler function, wrapped around original handler
- handler = this.proxy( fn );
-
- // Store data in unique handler
- handler.data = data;
- }
-
- // Init the element's event structure
- var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
- handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
- // Handle the second event of a trigger and when
- // an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
- jQuery.event.handle.apply(arguments.callee.elem, arguments) :
- undefined;
- });
- // Add elem as a property of the handle function
- // This is to prevent a memory leak with non-native
- // event in IE.
- handle.elem = elem;
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type) {
- // Namespaced event handlers
- var namespaces = type.split(".");
- type = namespaces.shift();
- handler.type = namespaces.slice().sort().join(".");
-
- // Get the current list of functions bound to this event
- var handlers = events[type];
-
- if ( jQuery.event.specialAll[type] )
- jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
-
- // Init the event handler queue
- if (!handlers) {
- handlers = events[type] = {};
-
- // Check for a special event handler
- // Only use addEventListener/attachEvent if the special
- // events handler returns false
- if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
- // Bind the global event handler to the element
- if (elem.addEventListener)
- elem.addEventListener(type, handle, false);
- else if (elem.attachEvent)
- elem.attachEvent("on" + type, handle);
- }
- }
-
- // Add the function to the element's handler list
- handlers[handler.guid] = handler;
-
- // Keep track of which events have been used, for global triggering
- jQuery.event.global[type] = true;
- });
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- guid: 1,
- global: {},
-
- // Detach an event or set of events from an element
- remove: function(elem, types, handler) {
- // don't do events on text and comment nodes
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
-
- var events = jQuery.data(elem, "events"), ret, index;
-
- if ( events ) {
- // Unbind all events for the element
- if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
- for ( var type in events )
- this.remove( elem, type + (types || "") );
- else {
- // types is actually an event object here
- if ( types.type ) {
- handler = types.handler;
- types = types.type;
- }
-
- // Handle multiple events seperated by a space
- // jQuery(...).unbind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type){
- // Namespaced event handlers
- var namespaces = type.split(".");
- type = namespaces.shift();
- var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
- if ( events[type] ) {
- // remove the given handler for the given type
- if ( handler )
- delete events[type][handler.guid];
-
- // remove all handlers for the given type
- else
- for ( var handle in events[type] )
- // Handle the removal of namespaced events
- if ( namespace.test(events[type][handle].type) )
- delete events[type][handle];
-
- if ( jQuery.event.specialAll[type] )
- jQuery.event.specialAll[type].teardown.call(elem, namespaces);
-
- // remove generic event handler if no more handlers exist
- for ( ret in events[type] ) break;
- if ( !ret ) {
- if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
- if (elem.removeEventListener)
- elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
- else if (elem.detachEvent)
- elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
- }
- ret = null;
- delete events[type];
- }
- }
- });
- }
-
- // Remove the expando if it's no longer used
- for ( ret in events ) break;
- if ( !ret ) {
- var handle = jQuery.data( elem, "handle" );
- if ( handle ) handle.elem = null;
- jQuery.removeData( elem, "events" );
- jQuery.removeData( elem, "handle" );
- }
- }
- },
-
- // bubbling is internal
- trigger: function( event, data, elem, bubbling ) {
- // Event object or event type
- var type = event.type || event;
-
- if( !bubbling ){
- event = typeof event === "object" ?
- // jQuery.Event object
- event[expando] ? event :
- // Object literal
- jQuery.extend( jQuery.Event(type), event ) :
- // Just the event type (string)
- jQuery.Event(type);
-
- if ( type.indexOf("!") >= 0 ) {
- event.type = type = type.slice(0, -1);
- event.exclusive = true;
- }
-
- // Handle a global trigger
- if ( !elem ) {
- // Don't bubble custom events when global (to avoid too much overhead)
- event.stopPropagation();
- // Only trigger if we've ever bound an event for it
- if ( this.global[type] )
- jQuery.each( jQuery.cache, function(){
- if ( this.events && this.events[type] )
- jQuery.event.trigger( event, data, this.handle.elem );
- });
- }
-
- // Handle triggering a single element
-
- // don't do events on text and comment nodes
- if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
- return undefined;
-
- // Clean up in case it is reused
- event.result = undefined;
- event.target = elem;
-
- // Clone the incoming data, if any
- data = jQuery.makeArray(data);
- data.unshift( event );
- }
-
- event.currentTarget = elem;
-
- // Trigger the event, it is assumed that "handle" is a function
- var handle = jQuery.data(elem, "handle");
- if ( handle )
- handle.apply( elem, data );
-
- // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
- if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
- event.result = false;
-
- // Trigger the native events (except for clicks on links)
- if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
- this.triggered = true;
- try {
- elem[ type ]();
- // prevent IE from throwing an error for some hidden elements
- } catch (e) {}
- }
-
- this.triggered = false;
-
- if ( !event.isPropagationStopped() ) {
- var parent = elem.parentNode || elem.ownerDocument;
- if ( parent )
- jQuery.event.trigger(event, data, parent, true);
- }
- },
-
- handle: function(event) {
- // returned undefined or false
- var all, handlers;
-
- event = arguments[0] = jQuery.event.fix( event || window.event );
-
- // Namespaced event handlers
- var namespaces = event.type.split(".");
- event.type = namespaces.shift();
-
- // Cache this now, all = true means, any handler
- all = !namespaces.length && !event.exclusive;
-
- var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
-
- handlers = ( jQuery.data(this, "events") || {} )[event.type];
-
- for ( var j in handlers ) {
- var handler = handlers[j];
-
- // Filter the functions by class
- if ( all || namespace.test(handler.type) ) {
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- event.handler = handler;
- event.data = handler.data;
-
- var ret = handler.apply(this, arguments);
-
- if( ret !== undefined ){
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
-
- if( event.isImmediatePropagationStopped() )
- break;
-
- }
- }
- },
-
- props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-
- fix: function(event) {
- if ( event[expando] )
- return event;
-
- // store a copy of the original event object
- // and "clone" to set read-only properties
- var originalEvent = event;
- event = jQuery.Event( originalEvent );
-
- for ( var i = this.props.length, prop; i; ){
- prop = this.props[ --i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Fix target property, if necessary
- if ( !event.target )
- event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
-
- // check if target is a textnode (safari)
- if ( event.target.nodeType == 3 )
- event.target = event.target.parentNode;
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && event.fromElement )
- event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && event.clientX != null ) {
- var doc = document.documentElement, body = document.body;
- event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
- event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
- }
-
- // Add which for key events
- if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
- event.which = event.charCode || event.keyCode;
-
- // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
- if ( !event.metaKey && event.ctrlKey )
- event.metaKey = event.ctrlKey;
-
- // Add which for click: 1 == left; 2 == middle; 3 == right
- // Note: button is not normalized, so don't use it
- if ( !event.which && event.button )
- event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
-
- return event;
- },
-
- proxy: function( fn, proxy ){
- proxy = proxy || function(){ return fn.apply(this, arguments); };
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
- // So proxy can be declared as an argument
- return proxy;
- },
-
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: bindReady,
- teardown: function() {}
- }
- },
-
- specialAll: {
- live: {
- setup: function( selector, namespaces ){
- jQuery.event.add( this, namespaces[0], liveHandler );
- },
- teardown: function( namespaces ){
- if ( namespaces.length ) {
- var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
-
- jQuery.each( (jQuery.data(this, "events").live || {}), function(){
- if ( name.test(this.type) )
- remove++;
- });
-
- if ( remove < 1 )
- jQuery.event.remove( this, namespaces[0], liveHandler );
- }
- }
- }
- }
-};
-
-jQuery.Event = function( src ){
- // Allow instantiation without the 'new' keyword
- if( !this.preventDefault )
- return new jQuery.Event(src);
-
- // Event object
- if( src && src.type ){
- this.originalEvent = src;
- this.type = src.type;
- // Event type
- }else
- this.type = src;
-
- // timeStamp is buggy for some events on Firefox(#3843)
- // So we won't rely on the native value
- this.timeStamp = now();
-
- // Mark it as fixed
- this[expando] = true;
-};
-
-function returnFalse(){
- return false;
-}
-function returnTrue(){
- return true;
-}
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
-
- var e = this.originalEvent;
- if( !e )
- return;
- // if preventDefault exists run it on the original event
- if (e.preventDefault)
- e.preventDefault();
- // otherwise set the returnValue property of the original event to false (IE)
- e.returnValue = false;
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
-
- var e = this.originalEvent;
- if( !e )
- return;
- // if stopPropagation exists run it on the original event
- if (e.stopPropagation)
- e.stopPropagation();
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation:function(){
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event) {
- // Check if mouse(over|out) are still within the same parent element
- var parent = event.relatedTarget;
- // Traverse up the tree
- while ( parent && parent != this )
- try { parent = parent.parentNode; }
- catch(e) { parent = this; }
-
- if( parent != this ){
- // set the correct event type
- event.type = event.data;
- // handle event if we actually just moused on to a non sub-element
- jQuery.event.handle.apply( this, arguments );
- }
-};
-
-jQuery.each({
- mouseover: 'mouseenter',
- mouseout: 'mouseleave'
-}, function( orig, fix ){
- jQuery.event.special[ fix ] = {
- setup: function(){
- jQuery.event.add( this, orig, withinElement, fix );
- },
- teardown: function(){
- jQuery.event.remove( this, orig, withinElement );
- }
- };
-});
-
-jQuery.fn.extend({
- bind: function( type, data, fn ) {
- return type == "unload" ? this.one(type, data, fn) : this.each(function(){
- jQuery.event.add( this, type, fn || data, fn && data );
- });
- },
-
- one: function( type, data, fn ) {
- var one = jQuery.event.proxy( fn || data, function(event) {
- jQuery(this).unbind(event, one);
- return (fn || data).apply( this, arguments );
- });
- return this.each(function(){
- jQuery.event.add( this, type, one, fn && data);
- });
- },
-
- unbind: function( type, fn ) {
- return this.each(function(){
- jQuery.event.remove( this, type, fn );
- });
- },
-
- trigger: function( type, data ) {
- return this.each(function(){
- jQuery.event.trigger( type, data, this );
- });
- },
-
- triggerHandler: function( type, data ) {
- if( this[0] ){
- var event = jQuery.Event(type);
- event.preventDefault();
- event.stopPropagation();
- jQuery.event.trigger( event, data, this[0] );
- return event.result;
- }
- },
-
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments, i = 1;
-
- // link all the functions, so any of them can unbind this click handler
- while( i < args.length )
- jQuery.event.proxy( fn, args[i++] );
-
- return this.click( jQuery.event.proxy( fn, function(event) {
- // Figure out which function to execute
- this.lastToggle = ( this.lastToggle || 0 ) % i;
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ this.lastToggle++ ].apply( this, arguments ) || false;
- }));
- },
-
- hover: function(fnOver, fnOut) {
- return this.mouseenter(fnOver).mouseleave(fnOut);
- },
-
- ready: function(fn) {
- // Attach the listeners
- bindReady();
-
- // If the DOM is already ready
- if ( jQuery.isReady )
- // Execute the function immediately
- fn.call( document, jQuery );
-
- // Otherwise, remember the function for later
- else
- // Add the function to the wait list
- jQuery.readyList.push( fn );
-
- return this;
- },
-
- live: function( type, fn ){
- var proxy = jQuery.event.proxy( fn );
- proxy.guid += this.selector + type;
-
- jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
-
- return this;
- },
-
- die: function( type, fn ){
- jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
- return this;
- }
-});
-
-function liveHandler( event ){
- var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
- stop = true,
- elems = [];
-
- jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
- if ( check.test(fn.type) ) {
- var elem = jQuery(event.target).closest(fn.data)[0];
- if ( elem )
- elems.push({ elem: elem, fn: fn });
- }
- });
-
- jQuery.each(elems, function(){
- if ( this.fn.call(this.elem, event, this.fn.data) === false )
- stop = false;
- });
-
- return stop;
-}
-
-function liveConvert(type, selector){
- return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
-}
-
-jQuery.extend({
- isReady: false,
- readyList: [],
- // Handle when the DOM is ready
- ready: function() {
- // Make sure that the DOM is not already loaded
- if ( !jQuery.isReady ) {
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If there are functions bound, to execute
- if ( jQuery.readyList ) {
- // Execute all of them
- jQuery.each( jQuery.readyList, function(){
- this.call( document, jQuery );
- });
-
- // Reset the list of functions
- jQuery.readyList = null;
- }
-
- // Trigger any bound ready events
- jQuery(document).triggerHandler("ready");
- }
- }
-});
-
-var readyBound = false;
-
-function bindReady(){
- if ( readyBound ) return;
- readyBound = true;
-
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", function(){
- document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
- jQuery.ready();
- }, false );
-
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent("onreadystatechange", function(){
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", arguments.callee );
- jQuery.ready();
- }
- });
-
- // If IE and not an iframe
- // continually check to see if the document is ready
- if ( document.documentElement.doScroll && typeof window.frameElement === "undefined" ) (function(){
- if ( jQuery.isReady ) return;
-
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch( error ) {
- setTimeout( arguments.callee, 0 );
- return;
- }
-
- // and execute any waiting functions
- jQuery.ready();
- })();
- }
-
- // A fallback to window.onload, that will always work
- jQuery.event.add( window, "load", jQuery.ready );
-}
-
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
- "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
- "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
-
- // Handle event binding
- jQuery.fn[name] = function(fn){
- return fn ? this.bind(name, fn) : this.trigger(name);
- };
-});
-
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery( window ).bind( 'unload', function(){
- for ( var id in jQuery.cache )
- // Skip the window
- if ( id != 1 && jQuery.cache[ id ].handle )
- jQuery.event.remove( jQuery.cache[ id ].handle.elem );
-});
-(function(){
-
- jQuery.support = {};
-
- var root = document.documentElement,
- script = document.createElement("script"),
- div = document.createElement("div"),
- id = "script" + (new Date).getTime();
-
- div.style.display = "none";
- div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
-
- var all = div.getElementsByTagName("*"),
- a = div.getElementsByTagName("a")[0];
-
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return;
- }
-
- jQuery.support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType == 3,
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that you can get all elements in an <object> element
- // IE 7 always returns no results
- objectAll: !!div.getElementsByTagName("object")[0]
- .getElementsByTagName("*").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText insted)
- style: /red/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- opacity: a.style.opacity === "0.5",
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Will be defined later
- scriptEval: false,
- noCloneEvent: true,
- boxModel: null
- };
-
- script.type = "text/javascript";
- try {
- script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
- } catch(e){}
-
- root.insertBefore( script, root.firstChild );
-
- // Make sure that the execution of code works by injecting a script
- // tag with appendChild/createTextNode
- // (IE doesn't support this, fails, and uses .text instead)
- if ( window[ id ] ) {
- jQuery.support.scriptEval = true;
- delete window[ id ];
- }
-
- root.removeChild( script );
-
- if ( div.attachEvent && div.fireEvent ) {
- div.attachEvent("onclick", function(){
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- jQuery.support.noCloneEvent = false;
- div.detachEvent("onclick", arguments.callee);
- });
- div.cloneNode(true).fireEvent("onclick");
- }
-
- // Figure out if the W3C box model works as expected
- // document.body must exist before we can do this
- jQuery(function(){
- var div = document.createElement("div");
- div.style.width = "1px";
- div.style.paddingLeft = "1px";
-
- document.body.appendChild( div );
- jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
- document.body.removeChild( div );
- });
-})();
-
-var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
-
-jQuery.props = {
- "for": "htmlFor",
- "class": "className",
- "float": styleFloat,
- cssFloat: styleFloat,
- styleFloat: styleFloat,
- readonly: "readOnly",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- rowspan: "rowSpan",
- tabindex: "tabIndex"
-};
-jQuery.fn.extend({
- // Keep a copy of the old load
- _load: jQuery.fn.load,
-
- load: function( url, params, callback ) {
- if ( typeof url !== "string" )
- return this._load( url );
-
- var off = url.indexOf(" ");
- if ( off >= 0 ) {
- var selector = url.slice(off, url.length);
- url = url.slice(0, off);
- }
-
- // Default to a GET request
- var type = "GET";
-
- // If the second parameter was provided
- if ( params )
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
- // We assume that it's the callback
- callback = params;
- params = null;
-
- // Otherwise, build a param string
- } else if( typeof params === "object" ) {
- params = jQuery.param( params );
- type = "POST";
- }
-
- var self = this;
-
- // Request the remote document
- jQuery.ajax({
- url: url,
- type: type,
- dataType: "html",
- data: params,
- complete: function(res, status){
- // If successful, inject the HTML into all the matched elements
- if ( status == "success" || status == "notmodified" )
- // See if a selector was specified
- self.html( selector ?
- // Create a dummy div to hold the results
- jQuery("<div/>")
- // inject the contents of the document in, removing the scripts
- // to avoid any 'Permission Denied' errors in IE
- .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
-
- // Locate the specified elements
- .find(selector) :
-
- // If not, just inject the full result
- res.responseText );
-
- if( callback )
- self.each( callback, [res.responseText, status, res] );
- }
- });
- return this;
- },
-
- serialize: function() {
- return jQuery.param(this.serializeArray());
- },
- serializeArray: function() {
- return this.map(function(){
- return this.elements ? jQuery.makeArray(this.elements) : this;
- })
- .filter(function(){
- return this.name && !this.disabled &&
- (this.checked || /select|textarea/i.test(this.nodeName) ||
- /text|hidden|password/i.test(this.type));
- })
- .map(function(i, elem){
- var val = jQuery(this).val();
- return val == null ? null :
- jQuery.isArray(val) ?
- jQuery.map( val, function(val, i){
- return {name: elem.name, value: val};
- }) :
- {name: elem.name, value: val};
- }).get();
- }
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
- jQuery.fn[o] = function(f){
- return this.bind(o, f);
- };
-});
-
-var jsc = now();
-
-jQuery.extend({
-
- get: function( url, data, callback, type ) {
- // shift arguments if data argument was ommited
- if ( jQuery.isFunction( data ) ) {
- callback = data;
- data = null;
- }
-
- return jQuery.ajax({
- type: "GET",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- getScript: function( url, callback ) {
- return jQuery.get(url, null, callback, "script");
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get(url, data, callback, "json");
- },
-
- post: function( url, data, callback, type ) {
- if ( jQuery.isFunction( data ) ) {
- callback = data;
- data = {};
- }
-
- return jQuery.ajax({
- type: "POST",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- ajaxSetup: function( settings ) {
- jQuery.extend( jQuery.ajaxSettings, settings );
- },
-
- ajaxSettings: {
- url: location.href,
- global: true,
- type: "GET",
- contentType: "application/x-www-form-urlencoded",
- processData: true,
- async: true,
- /*
- timeout: 0,
- data: null,
- username: null,
- password: null,
- */
- // Create the request object; Microsoft failed to properly
- // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
- // This function can be overriden by calling jQuery.ajaxSetup
- xhr:function(){
- return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
- },
- accepts: {
- xml: "application/xml, text/xml",
- html: "text/html",
- script: "text/javascript, application/javascript",
- json: "application/json, text/javascript",
- text: "text/plain",
- _default: "*/*"
- }
- },
-
- // Last-Modified header cache for next request
- lastModified: {},
-
- ajax: function( s ) {
- // Extend the settings, but re-extend 's' so that it can be
- // checked again later (in the test suite, specifically)
- s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
- var jsonp, jsre = /=\?(&|$)/g, status, data,
- type = s.type.toUpperCase();
-
- // convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" )
- s.data = jQuery.param(s.data);
-
- // Handle JSONP Parameter Callbacks
- if ( s.dataType == "jsonp" ) {
- if ( type == "GET" ) {
- if ( !s.url.match(jsre) )
- s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
- } else if ( !s.data || !s.data.match(jsre) )
- s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
- s.dataType = "json";
- }
-
- // Build temporary JSONP function
- if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
- jsonp = "jsonp" + jsc++;
-
- // Replace the =? sequence both in the query string and the data
- if ( s.data )
- s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
- s.url = s.url.replace(jsre, "=" + jsonp + "$1");
-
- // We need to make sure
- // that a JSONP style response is executed properly
- s.dataType = "script";
-
- // Handle JSONP-style loading
- window[ jsonp ] = function(tmp){
- data = tmp;
- success();
- complete();
- // Garbage collect
- window[ jsonp ] = undefined;
- try{ delete window[ jsonp ]; } catch(e){}
- if ( head )
- head.removeChild( script );
- };
- }
-
- if ( s.dataType == "script" && s.cache == null )
- s.cache = false;
-
- if ( s.cache === false && type == "GET" ) {
- var ts = now();
- // try replacing _= if it is there
- var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
- }
-
- // If data is available, append data to url for get requests
- if ( s.data && type == "GET" ) {
- s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
- // IE likes to send both get and post data, prevent this
- s.data = null;
- }
-
- // Watch for a new set of requests
- if ( s.global && ! jQuery.active++ )
- jQuery.event.trigger( "ajaxStart" );
-
- // Matches an absolute URL, and saves the domain
- var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
-
- // If we're requesting a remote document
- // and trying to load JSON or Script with a GET
- if ( s.dataType == "script" && type == "GET" && parts
- && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
-
- var head = document.getElementsByTagName("head")[0];
- var script = document.createElement("script");
- script.src = s.url;
- if (s.scriptCharset)
- script.charset = s.scriptCharset;
-
- // Handle Script loading
- if ( !jsonp ) {
- var done = false;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function(){
- if ( !done && (!this.readyState ||
- this.readyState == "loaded" || this.readyState == "complete") ) {
- done = true;
- success();
- complete();
- head.removeChild( script );
- }
- };
- }
-
- head.appendChild(script);
-
- // We handle everything using the script element injection
- return undefined;
- }
-
- var requestDone = false;
-
- // Create the request object
- var xhr = s.xhr();
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if( s.username )
- xhr.open(type, s.url, s.async, s.username, s.password);
- else
- xhr.open(type, s.url, s.async);
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- // Set the correct header, if data is being sent
- if ( s.data )
- xhr.setRequestHeader("Content-Type", s.contentType);
-
- // Set the If-Modified-Since header, if ifModified mode.
- if ( s.ifModified )
- xhr.setRequestHeader("If-Modified-Since",
- jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
-
- // Set header so the called script knows that it's an XMLHttpRequest
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
-
- // Set the Accepts header for the server, depending on the dataType
- xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
- s.accepts[ s.dataType ] + ", */*" :
- s.accepts._default );
- } catch(e){}
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
- jQuery.event.trigger( "ajaxStop" );
- // close opended socket
- xhr.abort();
- return false;
- }
-
- if ( s.global )
- jQuery.event.trigger("ajaxSend", [xhr, s]);
-
- // Wait for a response to come back
- var onreadystatechange = function(isTimeout){
- // The request was aborted, clear the interval and decrement jQuery.active
- if (xhr.readyState == 0) {
- if (ival) {
- // clear poll interval
- clearInterval(ival);
- ival = null;
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
- jQuery.event.trigger( "ajaxStop" );
- }
- // The transfer is complete and the data is available, or the request timed out
- } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
- requestDone = true;
-
- // clear poll interval
- if (ival) {
- clearInterval(ival);
- ival = null;
- }
-
- status = isTimeout == "timeout" ? "timeout" :
- !jQuery.httpSuccess( xhr ) ? "error" :
- s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
- "success";
-
- if ( status == "success" ) {
- // Watch for, and catch, XML document parse errors
- try {
- // process the data (runs the xml through httpData regardless of callback)
- data = jQuery.httpData( xhr, s.dataType, s );
- } catch(e) {
- status = "parsererror";
- }
- }
-
- // Make sure that the request was successful or notmodified
- if ( status == "success" ) {
- // Cache Last-Modified header, if ifModified mode.
- var modRes;
- try {
- modRes = xhr.getResponseHeader("Last-Modified");
- } catch(e) {} // swallow exception thrown by FF if header is not available
-
- if ( s.ifModified && modRes )
- jQuery.lastModified[s.url] = modRes;
-
- // JSONP handles its own success callback
- if ( !jsonp )
- success();
- } else
- jQuery.handleError(s, xhr, status);
-
- // Fire the complete handlers
- complete();
-
- if ( isTimeout )
- xhr.abort();
-
- // Stop memory leaks
- if ( s.async )
- xhr = null;
- }
- };
-
- if ( s.async ) {
- // don't attach the handler to the request, just poll it instead
- var ival = setInterval(onreadystatechange, 13);
-
- // Timeout checker
- if ( s.timeout > 0 )
- setTimeout(function(){
- // Check to see if the request is still happening
- if ( xhr && !requestDone )
- onreadystatechange( "timeout" );
- }, s.timeout);
- }
-
- // Send the data
- try {
- xhr.send(s.data);
- } catch(e) {
- jQuery.handleError(s, xhr, null, e);
- }
-
- // firefox 1.5 doesn't fire statechange for sync requests
- if ( !s.async )
- onreadystatechange();
-
- function success(){
- // If a local callback was specified, fire it and pass it the data
- if ( s.success )
- s.success( data, status );
-
- // Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
- }
-
- function complete(){
- // Process result
- if ( s.complete )
- s.complete(xhr, status);
-
- // The request was completed
- if ( s.global )
- jQuery.event.trigger( "ajaxComplete", [xhr, s] );
-
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
- jQuery.event.trigger( "ajaxStop" );
- }
-
- // return XMLHttpRequest to allow aborting the request etc.
- return xhr;
- },
-
- handleError: function( s, xhr, status, e ) {
- // If a local callback was specified, fire it
- if ( s.error ) s.error( xhr, status, e );
-
- // Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxError", [xhr, s, e] );
- },
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Determines if an XMLHttpRequest was successful or not
- httpSuccess: function( xhr ) {
- try {
- // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
- return !xhr.status && location.protocol == "file:" ||
- ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
- } catch(e){}
- return false;
- },
-
- // Determines if an XMLHttpRequest returns NotModified
- httpNotModified: function( xhr, url ) {
- try {
- var xhrRes = xhr.getResponseHeader("Last-Modified");
-
- // Firefox always returns 200. check Last-Modified date
- return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
- } catch(e){}
- return false;
- },
-
- httpData: function( xhr, type, s ) {
- var ct = xhr.getResponseHeader("content-type"),
- xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
- data = xml ? xhr.responseXML : xhr.responseText;
-
- if ( xml && data.documentElement.tagName == "parsererror" )
- throw "parsererror";
-
- // Allow a pre-filtering function to sanitize the response
- // s != null is checked to keep backwards compatibility
- if( s && s.dataFilter )
- data = s.dataFilter( data, type );
-
- // The filter can actually parse the response
- if( typeof data === "string" ){
-
- // If the type is "script", eval it in global context
- if ( type == "script" )
- jQuery.globalEval( data );
-
- // Get the JavaScript object, if JSON is used.
- if ( type == "json" )
- data = window["eval"]("(" + data + ")");
- }
-
- return data;
- },
-
- // Serialize an array of form elements or a set of
- // key/values into a query string
- param: function( a ) {
- var s = [ ];
-
- function add( key, value ){
- s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
- };
-
- // If an array was passed in, assume that it is an array
- // of form elements
- if ( jQuery.isArray(a) || a.jquery )
- // Serialize the form elements
- jQuery.each( a, function(){
- add( this.name, this.value );
- });
-
- // Otherwise, assume that it's an object of key/value pairs
- else
- // Serialize the key/values
- for ( var j in a )
- // If the value is an array then the key names need to be repeated
- if ( jQuery.isArray(a[j]) )
- jQuery.each( a[j], function(){
- add( j, this );
- });
- else
- add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
-
- // Return the resulting serialization
- return s.join("&").replace(/%20/g, "+");
- }
-
-});
-var elemdisplay = {},
- timerId,
- fxAttrs = [
- // height animations
- [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
- // width animations
- [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
- // opacity animations
- [ "opacity" ]
- ];
-
-function genFx( type, num ){
- var obj = {};
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
- obj[ this ] = type;
- });
- return obj;
-}
-
-jQuery.fn.extend({
- show: function(speed,callback){
- if ( speed ) {
- return this.animate( genFx("show", 3), speed, callback);
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ){
- var old = jQuery.data(this[i], "olddisplay");
-
- this[i].style.display = old || "";
-
- if ( jQuery.css(this[i], "display") === "none" ) {
- var tagName = this[i].tagName, display;
-
- if ( elemdisplay[ tagName ] ) {
- display = elemdisplay[ tagName ];
- } else {
- var elem = jQuery("<" + tagName + " />").appendTo("body");
-
- display = elem.css("display");
- if ( display === "none" )
- display = "block";
-
- elem.remove();
-
- elemdisplay[ tagName ] = display;
- }
-
- this[i].style.display = jQuery.data(this[i], "olddisplay", display);
- }
- }
-
- return this;
- }
- },
-
- hide: function(speed,callback){
- if ( speed ) {
- return this.animate( genFx("hide", 3), speed, callback);
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ){
- var old = jQuery.data(this[i], "olddisplay");
- if ( !old && old !== "none" )
- jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
- this[i].style.display = "none";
- }
- return this;
- }
- },
-
- // Save the old toggle function
- _toggle: jQuery.fn.toggle,
-
- toggle: function( fn, fn2 ){
- var bool = typeof fn === "boolean";
-
- return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
- this._toggle.apply( this, arguments ) :
- fn == null || bool ?
- this.each(function(){
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- }) :
- this.animate(genFx("toggle", 3), fn, fn2);
- },
-
- fadeTo: function(speed,to,callback){
- return this.animate({opacity: to}, speed, callback);
- },
-
- animate: function( prop, speed, easing, callback ) {
- var optall = jQuery.speed(speed, easing, callback);
-
- return this[ optall.queue === false ? "each" : "queue" ](function(){
-
- var opt = jQuery.extend({}, optall), p,
- hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
- self = this;
-
- for ( p in prop ) {
- if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
- return opt.complete.call(this);
-
- if ( ( p == "height" || p == "width" ) && this.style ) {
- // Store display property
- opt.display = jQuery.css(this, "display");
-
- // Make sure that nothing sneaks out
- opt.overflow = this.style.overflow;
- }
- }
-
- if ( opt.overflow != null )
- this.style.overflow = "hidden";
-
- opt.curAnim = jQuery.extend({}, prop);
-
- jQuery.each( prop, function(name, val){
- var e = new jQuery.fx( self, opt, name );
-
- if ( /toggle|show|hide/.test(val) )
- e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
- else {
- var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
- start = e.cur(true) || 0;
-
- if ( parts ) {
- var end = parseFloat(parts[2]),
- unit = parts[3] || "px";
-
- // We need to compute starting value
- if ( unit != "px" ) {
- self.style[ name ] = (end || 1) + unit;
- start = ((end || 1) / e.cur(true)) * start;
- self.style[ name ] = start + unit;
- }
-
- // If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] )
- end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
-
- e.custom( start, end, unit );
- } else
- e.custom( start, val, "" );
- }
- });
-
- // For JS strict compliance
- return true;
- });
- },
-
- stop: function(clearQueue, gotoEnd){
- var timers = jQuery.timers;
-
- if (clearQueue)
- this.queue([]);
-
- this.each(function(){
- // go in reverse order so anything added to the queue during the loop is ignored
- for ( var i = timers.length - 1; i >= 0; i-- )
- if ( timers[i].elem == this ) {
- if (gotoEnd)
- // force the next step to be the last
- timers[i](true);
- timers.splice(i, 1);
- }
- });
-
- // start the next in the queue if the last step wasn't forced
- if (!gotoEnd)
- this.dequeue();
-
- return this;
- }
-
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx("show", 1),
- slideUp: genFx("hide", 1),
- slideToggle: genFx("toggle", 1),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" }
-}, function( name, props ){
- jQuery.fn[ name ] = function( speed, callback ){
- return this.animate( props, speed, callback );
- };
-});
-
-jQuery.extend({
-
- speed: function(speed, easing, fn) {
- var opt = typeof speed === "object" ? speed : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
-
- // Queueing
- opt.old = opt.complete;
- opt.complete = function(){
- if ( opt.queue !== false )
- jQuery(this).dequeue();
- if ( jQuery.isFunction( opt.old ) )
- opt.old.call( this );
- };
-
- return opt;
- },
-
- easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
- },
- swing: function( p, n, firstNum, diff ) {
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
- }
- },
-
- timers: [],
-
- fx: function( elem, options, prop ){
- this.options = options;
- this.elem = elem;
- this.prop = prop;
-
- if ( !options.orig )
- options.orig = {};
- }
-
-});
-
-jQuery.fx.prototype = {
-
- // Simple function for setting a style value
- update: function(){
- if ( this.options.step )
- this.options.step.call( this.elem, this.now, this );
-
- (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
- // Set display property to block for height/width animations
- if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
- this.elem.style.display = "block";
- },
-
- // Get the current size
- cur: function(force){
- if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
- return this.elem[ this.prop ];
-
- var r = parseFloat(jQuery.css(this.elem, this.prop, force));
- return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
- },
-
- // Start an animation from one number to another
- custom: function(from, to, unit){
- this.startTime = now();
- this.start = from;
- this.end = to;
- this.unit = unit || this.unit || "px";
- this.now = this.start;
- this.pos = this.state = 0;
-
- var self = this;
- function t(gotoEnd){
- return self.step(gotoEnd);
- }
-
- t.elem = this.elem;
-
- if ( t() && jQuery.timers.push(t) == 1 ) {
- timerId = setInterval(function(){
- var timers = jQuery.timers;
-
- for ( var i = 0; i < timers.length; i++ )
- if ( !timers[i]() )
- timers.splice(i--, 1);
-
- if ( !timers.length ) {
- clearInterval( timerId );
- }
- }, 13);
- }
- },
-
- // Simple 'show' function
- show: function(){
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
- this.options.show = true;
-
- // Begin the animation
- // Make sure that we start at a small width/height to avoid any
- // flash of content
- this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
-
- // Start by showing the element
- jQuery(this.elem).show();
- },
-
- // Simple 'hide' function
- hide: function(){
- // Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
- this.options.hide = true;
-
- // Begin the animation
- this.custom(this.cur(), 0);
- },
-
- // Each step of an animation
- step: function(gotoEnd){
- var t = now();
-
- if ( gotoEnd || t >= this.options.duration + this.startTime ) {
- this.now = this.end;
- this.pos = this.state = 1;
- this.update();
-
- this.options.curAnim[ this.prop ] = true;
-
- var done = true;
- for ( var i in this.options.curAnim )
- if ( this.options.curAnim[i] !== true )
- done = false;
-
- if ( done ) {
- if ( this.options.display != null ) {
- // Reset the overflow
- this.elem.style.overflow = this.options.overflow;
-
- // Reset the display
- this.elem.style.display = this.options.display;
- if ( jQuery.css(this.elem, "display") == "none" )
- this.elem.style.display = "block";
- }
-
- // Hide the element if the "hide" operation was done
- if ( this.options.hide )
- jQuery(this.elem).hide();
-
- // Reset the properties, if the item has been hidden or shown
- if ( this.options.hide || this.options.show )
- for ( var p in this.options.curAnim )
- jQuery.attr(this.elem.style, p, this.options.orig[p]);
-
- // Execute the complete function
- this.options.complete.call( this.elem );
- }
-
- return false;
- } else {
- var n = t - this.startTime;
- this.state = n / this.options.duration;
-
- // Perform the easing function, defaults to swing
- this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
- this.now = this.start + ((this.end - this.start) * this.pos);
-
- // Perform the next step of the animation
- this.update();
- }
-
- return true;
- }
-
-};
-
-jQuery.extend( jQuery.fx, {
- speeds:{
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
- },
- step: {
-
- opacity: function(fx){
- jQuery.attr(fx.elem.style, "opacity", fx.now);
- },
-
- _default: function(fx){
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
- else
- fx.elem[ fx.prop ] = fx.now;
- }
- }
-});
-if ( document.documentElement["getBoundingClientRect"] )
- jQuery.fn.offset = function() {
- if ( !this[0] ) return { top: 0, left: 0 };
- if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
- var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
- clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
- top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
- left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
- return { top: top, left: left };
- };
-else
- jQuery.fn.offset = function() {
- if ( !this[0] ) return { top: 0, left: 0 };
- if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
- jQuery.offset.initialized || jQuery.offset.initialize();
-
- var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
- doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
- body = doc.body, defaultView = doc.defaultView,
- prevComputedStyle = defaultView.getComputedStyle(elem, null),
- top = elem.offsetTop, left = elem.offsetLeft;
-
- while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- computedStyle = defaultView.getComputedStyle(elem, null);
- top -= elem.scrollTop, left -= elem.scrollLeft;
- if ( elem === offsetParent ) {
- top += elem.offsetTop, left += elem.offsetLeft;
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
- top += parseInt( computedStyle.borderTopWidth, 10) || 0,
- left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
- prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
- }
- if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
- top += parseInt( computedStyle.borderTopWidth, 10) || 0,
- left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
- prevComputedStyle = computedStyle;
- }
-
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
- top += body.offsetTop,
- left += body.offsetLeft;
-
- if ( prevComputedStyle.position === "fixed" )
- top += Math.max(docElem.scrollTop, body.scrollTop),
- left += Math.max(docElem.scrollLeft, body.scrollLeft);
-
- return { top: top, left: left };
- };
-
-jQuery.offset = {
- initialize: function() {
- if ( this.initialized ) return;
- var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
- html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
-
- rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
- for ( prop in rules ) container.style[prop] = rules[prop];
-
- container.innerHTML = html;
- body.insertBefore(container, body.firstChild);
- innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
-
- this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
- this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
-
- innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
- this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
-
- body.style.marginTop = '1px';
- this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
- body.style.marginTop = bodyMarginTop;
-
- body.removeChild(container);
- this.initialized = true;
- },
-
- bodyOffset: function(body) {
- jQuery.offset.initialized || jQuery.offset.initialize();
- var top = body.offsetTop, left = body.offsetLeft;
- if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
- top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
- left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
- return { top: top, left: left };
- }
-};
-
-
-jQuery.fn.extend({
- position: function() {
- var left = 0, top = 0, results;
-
- if ( this[0] ) {
- // Get *real* offsetParent
- var offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= num( this, 'marginTop' );
- offset.left -= num( this, 'marginLeft' );
-
- // Add offsetParent borders
- parentOffset.top += num( offsetParent, 'borderTopWidth' );
- parentOffset.left += num( offsetParent, 'borderLeftWidth' );
-
- // Subtract the two offsets
- results = {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
- }
-
- return results;
- },
-
- offsetParent: function() {
- var offsetParent = this[0].offsetParent || document.body;
- while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
- offsetParent = offsetParent.offsetParent;
- return jQuery(offsetParent);
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( ['Left', 'Top'], function(i, name) {
- var method = 'scroll' + name;
-
- jQuery.fn[ method ] = function(val) {
- if (!this[0]) return null;
-
- return val !== undefined ?
-
- // Set the scroll offset
- this.each(function() {
- this == window || this == document ?
- window.scrollTo(
- !i ? val : jQuery(window).scrollLeft(),
- i ? val : jQuery(window).scrollTop()
- ) :
- this[ method ] = val;
- }) :
-
- // Return the scroll offset
- this[0] == window || this[0] == document ?
- self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
- jQuery.boxModel && document.documentElement[ method ] ||
- document.body[ method ] :
- this[0][ method ];
- };
-});
-// Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
-
- var tl = i ? "Left" : "Top", // top or left
- br = i ? "Right" : "Bottom"; // bottom or right
-
- // innerHeight and innerWidth
- jQuery.fn["inner" + name] = function(){
- return this[ name.toLowerCase() ]() +
- num(this, "padding" + tl) +
- num(this, "padding" + br);
- };
-
- // outerHeight and outerWidth
- jQuery.fn["outer" + name] = function(margin) {
- return this["inner" + name]() +
- num(this, "border" + tl + "Width") +
- num(this, "border" + br + "Width") +
- (margin ?
- num(this, "margin" + tl) + num(this, "margin" + br) : 0);
- };
-
- var type = name.toLowerCase();
-
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- return this[0] == window ?
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
- document.body[ "client" + name ] :
-
- // Get document width or height
- this[0] == document ?
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- Math.max(
- document.documentElement["client" + name],
- document.body["scroll" + name], document.documentElement["scroll" + name],
- document.body["offset" + name], document.documentElement["offset" + name]
- ) :
-
- // Get or set width or height on the element
- size === undefined ?
- // Get width or height on the element
- (this.length ? jQuery.css( this[0], type ) : null) :
-
- // Set the width or height on the element (default to pixels if value is unitless)
- this.css( type, typeof size === "string" ? size : size + "px" );
- };
-
-});})();
diff --git a/samples/src/main/java/gwtquery/samples/public/prototype-1.6.0.3.js b/samples/src/main/java/gwtquery/samples/public/prototype-1.6.0.3.js
index dfe8ab4e..6bcf91a7 100644
--- a/samples/src/main/java/gwtquery/samples/public/prototype-1.6.0.3.js
+++ b/samples/src/main/java/gwtquery/samples/public/prototype-1.6.0.3.js
@@ -7,1529 +7,1579 @@
*--------------------------------------------------------------------------*/
var Prototype = {
- Version: '1.6.0.3',
-
- Browser: {
- IE: !!(window.attachEvent &&
- navigator.userAgent.indexOf('Opera') === -1),
- Opera: navigator.userAgent.indexOf('Opera') > -1,
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 &&
- navigator.userAgent.indexOf('KHTML') === -1,
- MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
- },
-
- BrowserFeatures: {
- XPath: !!document.evaluate,
- SelectorsAPI: !!document.querySelector,
- ElementExtensions: !!window.HTMLElement,
- SpecificElementExtensions:
- document.createElement('div')['__proto__'] &&
- document.createElement('div')['__proto__'] !==
- document.createElement('form')['__proto__']
- },
-
- ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
- JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
-
- emptyFunction: function() { },
- K: function(x) { return x }
+ Version: '1.6.0.3',
+
+ Browser: {
+ IE: !!(window.attachEvent && navigator.userAgent.indexOf('Opera')
+ === -1),
+ Opera: navigator.userAgent.indexOf('Opera') > -1,
+ WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
+ Gecko: navigator.userAgent.indexOf('Gecko') > -1
+ && navigator.userAgent.indexOf('KHTML') === -1,
+ MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
+ },
+
+ BrowserFeatures: {
+ XPath: !!document.evaluate,
+ SelectorsAPI: !!document.querySelector,
+ ElementExtensions: !!window.HTMLElement,
+ SpecificElementExtensions:
+ document.createElement('div')['__proto__']
+ && document.createElement('div')['__proto__']
+ !== document.createElement('form')['__proto__']
+ },
+
+ ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
+ JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
+
+ emptyFunction: function() {
+ },
+ K: function(x) {
+ return x
+ }
};
if (Prototype.Browser.MobileSafari)
- Prototype.BrowserFeatures.SpecificElementExtensions = false;
-
+ Prototype.BrowserFeatures.SpecificElementExtensions = false;
/* Based on Alex Arnell's inheritance implementation. */
var Class = {
- create: function() {
- var parent = null, properties = $A(arguments);
- if (Object.isFunction(properties[0]))
- parent = properties.shift();
+ create: function() {
+ var parent = null, properties = $A(arguments);
+ if (Object.isFunction(properties[0]))
+ parent = properties.shift();
- function klass() {
- this.initialize.apply(this, arguments);
- }
+ function klass() {
+ this.initialize.apply(this, arguments);
+ }
- Object.extend(klass, Class.Methods);
- klass.superclass = parent;
- klass.subclasses = [];
+ Object.extend(klass, Class.Methods);
+ klass.superclass = parent;
+ klass.subclasses = [];
- if (parent) {
- var subclass = function() { };
- subclass.prototype = parent.prototype;
- klass.prototype = new subclass;
- parent.subclasses.push(klass);
- }
+ if (parent) {
+ var subclass = function() {
+ };
+ subclass.prototype = parent.prototype;
+ klass.prototype = new subclass;
+ parent.subclasses.push(klass);
+ }
- for (var i = 0; i < properties.length; i++)
- klass.addMethods(properties[i]);
+ for (var i = 0; i < properties.length; i++)
+ klass.addMethods(properties[i]);
- if (!klass.prototype.initialize)
- klass.prototype.initialize = Prototype.emptyFunction;
+ if (!klass.prototype.initialize)
+ klass.prototype.initialize = Prototype.emptyFunction;
- klass.prototype.constructor = klass;
+ klass.prototype.constructor = klass;
- return klass;
- }
+ return klass;
+ }
};
Class.Methods = {
- addMethods: function(source) {
- var ancestor = this.superclass && this.superclass.prototype;
- var properties = Object.keys(source);
-
- if (!Object.keys({ toString: true }).length)
- properties.push("toString", "valueOf");
-
- for (var i = 0, length = properties.length; i < length; i++) {
- var property = properties[i], value = source[property];
- if (ancestor && Object.isFunction(value) &&
- value.argumentNames().first() == "$super") {
- var method = value;
- value = (function(m) {
- return function() { return ancestor[m].apply(this, arguments) };
- })(property).wrap(method);
-
- value.valueOf = method.valueOf.bind(method);
- value.toString = method.toString.bind(method);
- }
- this.prototype[property] = value;
- }
+ addMethods: function(source) {
+ var ancestor = this.superclass && this.superclass.prototype;
+ var properties = Object.keys(source);
+
+ if (!Object.keys({ toString: true }).length)
+ properties.push("toString", "valueOf");
+
+ for (var i = 0, length = properties.length; i < length; i++) {
+ var property = properties[i], value = source[property];
+ if (ancestor && Object.isFunction(value)
+ && value.argumentNames().first() == "$super") {
+ var method = value;
+ value = (function(m) {
+ return function() {
+ return ancestor[m].apply(this, arguments)
+ };
+ })(property).wrap(method);
+
+ value.valueOf = method.valueOf.bind(method);
+ value.toString = method.toString.bind(method);
+ }
+ this.prototype[property] = value;
+ }
- return this;
- }
+ return this;
+ }
};
var Abstract = { };
Object.extend = function(destination, source) {
- for (var property in source)
- destination[property] = source[property];
- return destination;
+ for (var property in source)
+ destination[property] = source[property];
+ return destination;
};
Object.extend(Object, {
- inspect: function(object) {
- try {
- if (Object.isUndefined(object)) return 'undefined';
- if (object === null) return 'null';
- return object.inspect ? object.inspect() : String(object);
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
- },
-
- toJSON: function(object) {
- var type = typeof object;
- switch (type) {
- case 'undefined':
- case 'function':
- case 'unknown': return;
- case 'boolean': return object.toString();
- }
+ inspect: function(object) {
+ try {
+ if (Object.isUndefined(object)) return 'undefined';
+ if (object === null) return 'null';
+ return object.inspect ? object.inspect() : String(object);
+ } catch (e) {
+ if (e instanceof RangeError) return '...';
+ throw e;
+ }
+ },
- if (object === null) return 'null';
- if (object.toJSON) return object.toJSON();
- if (Object.isElement(object)) return;
+ toJSON: function(object) {
+ var type = typeof object;
+ switch (type) {
+ case 'undefined':
+ case 'function':
+ case 'unknown': return;
+ case 'boolean': return object.toString();
+ }
- var results = [];
- for (var property in object) {
- var value = Object.toJSON(object[property]);
- if (!Object.isUndefined(value))
- results.push(property.toJSON() + ': ' + value);
- }
+ if (object === null) return 'null';
+ if (object.toJSON) return object.toJSON();
+ if (Object.isElement(object)) return;
+
+ var results = [];
+ for (var property in object) {
+ var value = Object.toJSON(object[property]);
+ if (!Object.isUndefined(value))
+ results.push(property.toJSON() + ': ' + value);
+ }
+
+ return '{' + results.join(', ') + '}';
+ },
+
+ toQueryString: function(object) {
+ return $H(object).toQueryString();
+ },
+
+ toHTML: function(object) {
+ return object && object.toHTML ? object.toHTML()
+ : String.interpret(object);
+ },
+
+ keys: function(object) {
+ var keys = [];
+ for (var property in object)
+ keys.push(property);
+ return keys;
+ },
+
+ values: function(object) {
+ var values = [];
+ for (var property in object)
+ values.push(object[property]);
+ return values;
+ },
+
+ clone: function(object) {
+ return Object.extend({ }, object);
+ },
- return '{' + results.join(', ') + '}';
- },
-
- toQueryString: function(object) {
- return $H(object).toQueryString();
- },
-
- toHTML: function(object) {
- return object && object.toHTML ? object.toHTML() : String.interpret(object);
- },
-
- keys: function(object) {
- var keys = [];
- for (var property in object)
- keys.push(property);
- return keys;
- },
-
- values: function(object) {
- var values = [];
- for (var property in object)
- values.push(object[property]);
- return values;
- },
-
- clone: function(object) {
- return Object.extend({ }, object);
- },
-
- isElement: function(object) {
- return !!(object && object.nodeType == 1);
- },
-
- isArray: function(object) {
- return object != null && typeof object == "object" &&
- 'splice' in object && 'join' in object;
- },
-
- isHash: function(object) {
- return object instanceof Hash;
- },
-
- isFunction: function(object) {
- return typeof object == "function";
- },
-
- isString: function(object) {
- return typeof object == "string";
- },
-
- isNumber: function(object) {
- return typeof object == "number";
- },
-
- isUndefined: function(object) {
- return typeof object == "undefined";
- }
+ isElement: function(object) {
+ return !!(object && object.nodeType == 1);
+ },
+
+ isArray: function(object) {
+ return object != null && typeof object == "object" && 'splice' in object
+ && 'join' in object;
+ },
+
+ isHash: function(object) {
+ return object instanceof Hash;
+ },
+
+ isFunction: function(object) {
+ return typeof object == "function";
+ },
+
+ isString: function(object) {
+ return typeof object == "string";
+ },
+
+ isNumber: function(object) {
+ return typeof object == "number";
+ },
+
+ isUndefined: function(object) {
+ return typeof object == "undefined";
+ }
});
Object.extend(Function.prototype, {
- argumentNames: function() {
- var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]
- .replace(/\s+/g, '').split(',');
- return names.length == 1 && !names[0] ? [] : names;
- },
-
- bind: function() {
- if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
- },
+ argumentNames: function() {
+ var names = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1].replace(/\s+/g, '').split(',');
+ return names.length == 1 && !names[0] ? [] : names;
+ },
- bindAsEventListener: function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function(event) {
- return __method.apply(object, [event || window.event].concat(args));
- }
- },
+ bind: function() {
+ if (arguments.length < 2
+ && Object.isUndefined(arguments[0])) return this;
+ var __method = this, args = $A(arguments), object = args.shift();
+ return function() {
+ return __method.apply(object, args.concat($A(arguments)));
+ }
+ },
- curry: function() {
- if (!arguments.length) return this;
- var __method = this, args = $A(arguments);
- return function() {
- return __method.apply(this, args.concat($A(arguments)));
- }
- },
-
- delay: function() {
- var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
- return window.setTimeout(function() {
- return __method.apply(__method, args);
- }, timeout);
- },
-
- defer: function() {
- var args = [0.01].concat($A(arguments));
- return this.delay.apply(this, args);
- },
-
- wrap: function(wrapper) {
- var __method = this;
- return function() {
- return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
- }
- },
+ bindAsEventListener: function() {
+ var __method = this, args = $A(arguments), object = args.shift();
+ return function(event) {
+ return __method.apply(object, [event || window.event].concat(args));
+ }
+ },
- methodize: function() {
- if (this._methodized) return this._methodized;
- var __method = this;
- return this._methodized = function() {
- return __method.apply(null, [this].concat($A(arguments)));
- };
- }
+ curry: function() {
+ if (!arguments.length) return this;
+ var __method = this, args = $A(arguments);
+ return function() {
+ return __method.apply(this, args.concat($A(arguments)));
+ }
+ },
+
+ delay: function() {
+ var __method = this, args = $A(arguments), timeout = args.shift()
+ * 1000;
+ return window.setTimeout(function() {
+ return __method.apply(__method, args);
+ }, timeout);
+ },
+
+ defer: function() {
+ var args = [0.01].concat($A(arguments));
+ return this.delay.apply(this, args);
+ },
+
+ wrap: function(wrapper) {
+ var __method = this;
+ return function() {
+ return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
+ }
+ },
+
+ methodize: function() {
+ if (this._methodized) return this._methodized;
+ var __method = this;
+ return this._methodized = function() {
+ return __method.apply(null, [this].concat($A(arguments)));
+ };
+ }
});
Date.prototype.toJSON = function() {
- return '"' + this.getUTCFullYear() + '-' +
- (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
- this.getUTCDate().toPaddedString(2) + 'T' +
- this.getUTCHours().toPaddedString(2) + ':' +
- this.getUTCMinutes().toPaddedString(2) + ':' +
- this.getUTCSeconds().toPaddedString(2) + 'Z"';
+ return '"' + this.getUTCFullYear() + '-' + (this.getUTCMonth()
+ + 1).toPaddedString(2) + '-' + this.getUTCDate().toPaddedString(2)
+ + 'T' + this.getUTCHours().toPaddedString(2) + ':'
+ + this.getUTCMinutes().toPaddedString(2) + ':'
+ + this.getUTCSeconds().toPaddedString(2) + 'Z"';
};
var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0, length = arguments.length; i < length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) { }
- }
+ these: function() {
+ var returnValue;
+
+ for (var i = 0, length = arguments.length; i < length; i++) {
+ var lambda = arguments[i];
+ try {
+ returnValue = lambda();
+ break;
+ } catch (e) {
+ }
+ }
- return returnValue;
- }
+ return returnValue;
+ }
};
RegExp.prototype.match = RegExp.prototype.test;
RegExp.escape = function(str) {
- return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
+ return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
};
/*--------------------------------------------------------------------------*/
var PeriodicalExecuter = Class.create({
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- execute: function() {
- this.callback(this);
- },
-
- stop: function() {
- if (!this.timer) return;
- clearInterval(this.timer);
- this.timer = null;
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.execute();
- } finally {
+ initialize: function(callback, frequency) {
+ this.callback = callback;
+ this.frequency = frequency;
this.currentlyExecuting = false;
- }
+
+ this.registerCallback();
+ },
+
+ registerCallback: function() {
+ this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency
+ * 1000);
+ },
+
+ execute: function() {
+ this.callback(this);
+ },
+
+ stop: function() {
+ if (!this.timer) return;
+ clearInterval(this.timer);
+ this.timer = null;
+ },
+
+ onTimerEvent: function() {
+ if (!this.currentlyExecuting) {
+ try {
+ this.currentlyExecuting = true;
+ this.execute();
+ } finally {
+ this.currentlyExecuting = false;
+ }
+ }
}
- }
});
Object.extend(String, {
- interpret: function(value) {
- return value == null ? '' : String(value);
- },
- specialChar: {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '\\': '\\\\'
- }
+ interpret: function(value) {
+ return value == null ? '' : String(value);
+ },
+ specialChar: {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '\\': '\\\\'
+ }
});
Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += String.interpret(replacement(match));
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
+ gsub: function(pattern, replacement) {
+ var result = '', source = this, match;
+ replacement = arguments.callee.prepareReplacement(replacement);
+
+ while (source.length > 0) {
+ if (match = source.match(pattern)) {
+ result += source.slice(0, match.index);
+ result += String.interpret(replacement(match));
+ source = source.slice(match.index + match[0].length);
+ } else {
+ result += source,source = '';
+ }
+ }
+ return result;
+ },
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = Object.isUndefined(count) ? 1 : count;
+ sub: function(pattern, replacement, count) {
+ replacement = this.gsub.prepareReplacement(replacement);
+ count = Object.isUndefined(count) ? 1 : count;
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return String(this);
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = Object.isUndefined(truncation) ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : String(this);
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var self = arguments.callee;
- self.text.data = this;
- return self.div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = new Element('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
- $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
- div.childNodes[0].nodeValue) : '';
- },
-
- toQueryParams: function(separator) {
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
- if (!match) return { };
-
- return match[1].split(separator || '&').inject({ }, function(hash, pair) {
- if ((pair = pair.split('='))[0]) {
- var key = decodeURIComponent(pair.shift());
- var value = pair.length > 1 ? pair.join('=') : pair[0];
- if (value != undefined) value = decodeURIComponent(value);
-
- if (key in hash) {
- if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
- hash[key].push(value);
- }
- else hash[key] = value;
- }
- return hash;
- });
- },
+ return this.gsub(pattern, function(match) {
+ if (--count < 0) return match[0];
+ return replacement(match);
+ });
+ },
- toArray: function() {
- return this.split('');
- },
+ scan: function(pattern, iterator) {
+ this.gsub(pattern, iterator);
+ return String(this);
+ },
- succ: function() {
- return this.slice(0, this.length - 1) +
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
- },
+ truncate: function(length, truncation) {
+ length = length || 30;
+ truncation = Object.isUndefined(truncation) ? '...' : truncation;
+ return this.length > length ? this.slice(0, length - truncation.length)
+ + truncation : String(this);
+ },
- times: function(count) {
- return count < 1 ? '' : new Array(count + 1).join(this);
- },
+ strip: function() {
+ return this.replace(/^\s+/, '').replace(/\s+$/, '');
+ },
- camelize: function() {
- var parts = this.split('-'), len = parts.length;
- if (len == 1) return parts[0];
+ stripTags: function() {
+ return this.replace(/<\/?[^>]+>/gi, '');
+ },
- var camelized = this.charAt(0) == '-'
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
- : parts[0];
+ stripScripts: function() {
+ return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+ },
- for (var i = 1; i < len; i++)
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
+ extractScripts: function() {
+ var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+ var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+ return (this.match(matchAll) || []).map(function(scriptTag) {
+ return (scriptTag.match(matchOne) || ['', ''])[1];
+ });
+ },
- return camelized;
- },
+ evalScripts: function() {
+ return this.extractScripts().map(function(script) {
+ return eval(script)
+ });
+ },
- capitalize: function() {
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
- },
+ escapeHTML: function() {
+ var self = arguments.callee;
+ self.text.data = this;
+ return self.div.innerHTML;
+ },
- underscore: function() {
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
- },
+ unescapeHTML: function() {
+ var div = new Element('div');
+ div.innerHTML = this.stripTags();
+ return div.childNodes[0] ? (div.childNodes.length > 1
+ ? $A(div.childNodes).inject('', function(memo, node) {
+ return memo + node.nodeValue
+ }) : div.childNodes[0].nodeValue) : '';
+ },
- dasherize: function() {
- return this.gsub(/_/,'-');
- },
+ toQueryParams: function(separator) {
+ var match = this.strip().match(/([^?#]*)(#.*)?$/);
+ if (!match) return { };
+
+ return match[1].split(separator || '&').inject({ }, function(hash,
+ pair) {
+ if ((pair = pair.split('='))[0]) {
+ var key = decodeURIComponent(pair.shift());
+ var value = pair.length > 1 ? pair.join('=') : pair[0];
+ if (value != undefined) value = decodeURIComponent(value);
+
+ if (key in hash) {
+ if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
+ hash[key].push(value);
+ } else hash[key] = value;
+ }
+ return hash;
+ });
+ },
- inspect: function(useDoubleQuotes) {
- var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
- var character = String.specialChar[match[0]];
- return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
- });
- if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
- },
-
- toJSON: function() {
- return this.inspect(true);
- },
-
- unfilterJSON: function(filter) {
- return this.sub(filter || Prototype.JSONFilter, '#{1}');
- },
-
- isJSON: function() {
- var str = this;
- if (str.blank()) return false;
- str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
- return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
- },
-
- evalJSON: function(sanitize) {
- var json = this.unfilterJSON();
- try {
- if (!sanitize || json.isJSON()) return eval('(' + json + ')');
- } catch (e) { }
- throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
- },
-
- include: function(pattern) {
- return this.indexOf(pattern) > -1;
- },
-
- startsWith: function(pattern) {
- return this.indexOf(pattern) === 0;
- },
-
- endsWith: function(pattern) {
- var d = this.length - pattern.length;
- return d >= 0 && this.lastIndexOf(pattern) === d;
- },
-
- empty: function() {
- return this == '';
- },
-
- blank: function() {
- return /^\s*$/.test(this);
- },
-
- interpolate: function(object, pattern) {
- return new Template(this, pattern).evaluate(object);
- }
+ toArray: function() {
+ return this.split('');
+ },
+
+ succ: function() {
+ return this.slice(0, this.length - 1)
+ + String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
+ },
+
+ times: function(count) {
+ return count < 1 ? '' : new Array(count + 1).join(this);
+ },
+
+ camelize: function() {
+ var parts = this.split('-'), len = parts.length;
+ if (len == 1) return parts[0];
+
+ var camelized = this.charAt(0) == '-' ? parts[0].charAt(0).toUpperCase()
+ + parts[0].substring(1) : parts[0];
+
+ for (var i = 1; i < len; i++)
+ camelized += parts[i].charAt(0).toUpperCase()
+ + parts[i].substring(1);
+
+ return camelized;
+ },
+
+ capitalize: function() {
+ return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
+ },
+
+ underscore: function() {
+ return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/, '#{1}_#{2}').gsub(/([a-z\d])([A-Z])/, '#{1}_#{2}').gsub(/-/, '_').toLowerCase();
+ },
+
+ dasherize: function() {
+ return this.gsub(/_/, '-');
+ },
+
+ inspect: function(useDoubleQuotes) {
+ var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
+ var character = String.specialChar[match[0]];
+ return character ? character : '\\u00'
+ + match[0].charCodeAt().toPaddedString(2, 16);
+ });
+ if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"')
+ + '"';
+ return "'" + escapedString.replace(/'/g, '\\\'') + "'";
+ },
+
+ toJSON: function() {
+ return this.inspect(true);
+ },
+
+ unfilterJSON: function(filter) {
+ return this.sub(filter || Prototype.JSONFilter, '#{1}');
+ },
+
+ isJSON: function() {
+ var str = this;
+ if (str.blank()) return false;
+ str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
+ return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
+ },
+
+ evalJSON: function(sanitize) {
+ var json = this.unfilterJSON();
+ try {
+ if (!sanitize || json.isJSON()) return eval('(' + json + ')');
+ } catch (e) {
+ }
+ throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
+ },
+
+ include: function(pattern) {
+ return this.indexOf(pattern) > -1;
+ },
+
+ startsWith: function(pattern) {
+ return this.indexOf(pattern) === 0;
+ },
+
+ endsWith: function(pattern) {
+ var d = this.length - pattern.length;
+ return d >= 0 && this.lastIndexOf(pattern) === d;
+ },
+
+ empty: function() {
+ return this == '';
+ },
+
+ blank: function() {
+ return /^\s*$/.test(this);
+ },
+
+ interpolate: function(object, pattern) {
+ return new Template(this, pattern).evaluate(object);
+ }
});
-if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
- escapeHTML: function() {
- return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
- },
- unescapeHTML: function() {
- return this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
- }
+if (Prototype.Browser.WebKit
+ || Prototype.Browser.IE) Object.extend(String.prototype, {
+ escapeHTML: function() {
+ return this.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+ },
+ unescapeHTML: function() {
+ return this.stripTags().replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>');
+ }
});
String.prototype.gsub.prepareReplacement = function(replacement) {
- if (Object.isFunction(replacement)) return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
+ if (Object.isFunction(replacement)) return replacement;
+ var template = new Template(replacement);
+ return function(match) {
+ return template.evaluate(match)
+ };
};
String.prototype.parseQuery = String.prototype.toQueryParams;
Object.extend(String.prototype.escapeHTML, {
- div: document.createElement('div'),
- text: document.createTextNode('')
+ div: document.createElement('div'),
+ text: document.createTextNode('')
});
String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.text);
var Template = Class.create({
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- if (Object.isFunction(object.toTemplateReplacements))
- object = object.toTemplateReplacements();
-
- return this.template.gsub(this.pattern, function(match) {
- if (object == null) return '';
-
- var before = match[1] || '';
- if (before == '\\') return match[2];
-
- var ctx = object, expr = match[3];
- var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
- match = pattern.exec(expr);
- if (match == null) return before;
-
- while (match != null) {
- var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
- ctx = ctx[comp];
- if (null == ctx || '' == match[3]) break;
- expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
- match = pattern.exec(expr);
- }
-
- return before + String.interpret(ctx);
- });
- }
+ initialize: function(template, pattern) {
+ this.template = template.toString();
+ this.pattern = pattern || Template.Pattern;
+ },
+
+ evaluate: function(object) {
+ if (Object.isFunction(object.toTemplateReplacements))
+ object = object.toTemplateReplacements();
+
+ return this.template.gsub(this.pattern, function(match) {
+ if (object == null) return '';
+
+ var before = match[1] || '';
+ if (before == '\\') return match[2];
+
+ var ctx = object, expr = match[3];
+ var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
+ match = pattern.exec(expr);
+ if (match == null) return before;
+
+ while (match != null) {
+ var comp = match[1].startsWith('[')
+ ? match[2].gsub('\\\\]', ']') : match[1];
+ ctx = ctx[comp];
+ if (null == ctx || '' == match[3]) break;
+ expr = expr.substring('[' == match[3] ? match[1].length
+ : match[0].length);
+ match = pattern.exec(expr);
+ }
+
+ return before + String.interpret(ctx);
+ });
+ }
});
Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
var $break = { };
var Enumerable = {
- each: function(iterator, context) {
- var index = 0;
- try {
- this._each(function(value) {
- iterator.call(context, value, index++);
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- return this;
- },
-
- eachSlice: function(number, iterator, context) {
- var index = -number, slices = [], array = this.toArray();
- if (number < 1) return array;
- while ((index += number) < array.length)
- slices.push(array.slice(index, index+number));
- return slices.collect(iterator, context);
- },
-
- all: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result = true;
- this.each(function(value, index) {
- result = result && !!iterator.call(context, value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result = false;
- this.each(function(value, index) {
- if (result = !!iterator.call(context, value, index))
- throw $break;
- });
- return result;
- },
+ each: function(iterator, context) {
+ var index = 0;
+ try {
+ this._each(function(value) {
+ iterator.call(context, value, index++);
+ });
+ } catch (e) {
+ if (e != $break) throw e;
+ }
+ return this;
+ },
- collect: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var results = [];
- this.each(function(value, index) {
- results.push(iterator.call(context, value, index));
- });
- return results;
- },
-
- detect: function(iterator, context) {
- var result;
- this.each(function(value, index) {
- if (iterator.call(context, value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
+ eachSlice: function(number, iterator, context) {
+ var index = -number, slices = [], array = this.toArray();
+ if (number < 1) return array;
+ while ((index += number) < array.length)
+ slices.push(array.slice(index, index + number));
+ return slices.collect(iterator, context);
+ },
- findAll: function(iterator, context) {
- var results = [];
- this.each(function(value, index) {
- if (iterator.call(context, value, index))
- results.push(value);
- });
- return results;
- },
+ all: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var result = true;
+ this.each(function(value, index) {
+ result = result && !!iterator.call(context, value, index);
+ if (!result) throw $break;
+ });
+ return result;
+ },
- grep: function(filter, iterator, context) {
- iterator = iterator || Prototype.K;
- var results = [];
+ any: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var result = false;
+ this.each(function(value, index) {
+ if (result = !!iterator.call(context, value, index))
+ throw $break;
+ });
+ return result;
+ },
- if (Object.isString(filter))
- filter = new RegExp(filter);
+ collect: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var results = [];
+ this.each(function(value, index) {
+ results.push(iterator.call(context, value, index));
+ });
+ return results;
+ },
- this.each(function(value, index) {
- if (filter.match(value))
- results.push(iterator.call(context, value, index));
- });
- return results;
- },
-
- include: function(object) {
- if (Object.isFunction(this.indexOf))
- if (this.indexOf(object) != -1) return true;
-
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inGroupsOf: function(number, fillWith) {
- fillWith = Object.isUndefined(fillWith) ? null : fillWith;
- return this.eachSlice(number, function(slice) {
- while(slice.length < number) slice.push(fillWith);
- return slice;
- });
- },
+ detect: function(iterator, context) {
+ var result;
+ this.each(function(value, index) {
+ if (iterator.call(context, value, index)) {
+ result = value;
+ throw $break;
+ }
+ });
+ return result;
+ },
- inject: function(memo, iterator, context) {
- this.each(function(value, index) {
- memo = iterator.call(context, memo, value, index);
- });
- return memo;
- },
+ findAll: function(iterator, context) {
+ var results = [];
+ this.each(function(value, index) {
+ if (iterator.call(context, value, index))
+ results.push(value);
+ });
+ return results;
+ },
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.map(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator.call(context, value, index);
- if (result == null || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator.call(context, value, index);
- if (result == null || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator, context) {
- iterator = iterator || Prototype.K;
- var trues = [], falses = [];
- this.each(function(value, index) {
- (iterator.call(context, value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
+ grep: function(filter, iterator, context) {
+ iterator = iterator || Prototype.K;
+ var results = [];
- pluck: function(property) {
- var results = [];
- this.each(function(value) {
- results.push(value[property]);
- });
- return results;
- },
+ if (Object.isString(filter))
+ filter = new RegExp(filter);
- reject: function(iterator, context) {
- var results = [];
- this.each(function(value, index) {
- if (!iterator.call(context, value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator, context) {
- return this.map(function(value, index) {
- return {
- value: value,
- criteria: iterator.call(context, value, index)
- };
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.map();
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (Object.isFunction(args.last()))
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
+ this.each(function(value, index) {
+ if (filter.match(value))
+ results.push(iterator.call(context, value, index));
+ });
+ return results;
+ },
+
+ include: function(object) {
+ if (Object.isFunction(this.indexOf))
+ if (this.indexOf(object) != -1) return true;
+
+ var found = false;
+ this.each(function(value) {
+ if (value == object) {
+ found = true;
+ throw $break;
+ }
+ });
+ return found;
+ },
+
+ inGroupsOf: function(number, fillWith) {
+ fillWith = Object.isUndefined(fillWith) ? null : fillWith;
+ return this.eachSlice(number, function(slice) {
+ while (slice.length < number) slice.push(fillWith);
+ return slice;
+ });
+ },
- size: function() {
- return this.toArray().length;
- },
+ inject: function(memo, iterator, context) {
+ this.each(function(value, index) {
+ memo = iterator.call(context, memo, value, index);
+ });
+ return memo;
+ },
+
+ invoke: function(method) {
+ var args = $A(arguments).slice(1);
+ return this.map(function(value) {
+ return value[method].apply(value, args);
+ });
+ },
+
+ max: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var result;
+ this.each(function(value, index) {
+ value = iterator.call(context, value, index);
+ if (result == null || value >= result)
+ result = value;
+ });
+ return result;
+ },
+
+ min: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var result;
+ this.each(function(value, index) {
+ value = iterator.call(context, value, index);
+ if (result == null || value < result)
+ result = value;
+ });
+ return result;
+ },
+
+ partition: function(iterator, context) {
+ iterator = iterator || Prototype.K;
+ var trues = [], falses = [];
+ this.each(function(value, index) {
+ (iterator.call(context, value, index) ? trues : falses).push(value);
+ });
+ return [trues, falses];
+ },
+
+ pluck: function(property) {
+ var results = [];
+ this.each(function(value) {
+ results.push(value[property]);
+ });
+ return results;
+ },
+
+ reject: function(iterator, context) {
+ var results = [];
+ this.each(function(value, index) {
+ if (!iterator.call(context, value, index))
+ results.push(value);
+ });
+ return results;
+ },
+
+ sortBy: function(iterator, context) {
+ return this.map(function(value, index) {
+ return {
+ value: value,
+ criteria: iterator.call(context, value, index)
+ };
+ }).sort(function(left, right) {
+ var a = left.criteria, b = right.criteria;
+ return a < b ? -1 : a > b ? 1 : 0;
+ }).pluck('value');
+ },
+
+ toArray: function() {
+ return this.map();
+ },
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
+ zip: function() {
+ var iterator = Prototype.K, args = $A(arguments);
+ if (Object.isFunction(args.last()))
+ iterator = args.pop();
+
+ var collections = [this].concat(args).map($A);
+ return this.map(function(value, index) {
+ return iterator(collections.pluck(index));
+ });
+ },
+
+ size: function() {
+ return this.toArray().length;
+ },
+
+ inspect: function() {
+ return '#<Enumerable:' + this.toArray().inspect() + '>';
+ }
};
Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- filter: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray,
- every: Enumerable.all,
- some: Enumerable.any
+ map: Enumerable.collect,
+ find: Enumerable.detect,
+ select: Enumerable.findAll,
+ filter: Enumerable.findAll,
+ member: Enumerable.include,
+ entries: Enumerable.toArray,
+ every: Enumerable.all,
+ some: Enumerable.any
});
function $A(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) return iterable.toArray();
- var length = iterable.length || 0, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
-}
-
-if (Prototype.Browser.WebKit) {
- $A = function(iterable) {
if (!iterable) return [];
- // In Safari, only use the `toArray` method if it's not a NodeList.
- // A NodeList is a function, has an function `item` property, and a numeric
- // `length` property. Adapted from Google Doctype.
- if (!(typeof iterable === 'function' && typeof iterable.length ===
- 'number' && typeof iterable.item === 'function') && iterable.toArray)
- return iterable.toArray();
+ if (iterable.toArray) return iterable.toArray();
var length = iterable.length || 0, results = new Array(length);
while (length--) results[length] = iterable[length];
return results;
- };
+}
+
+if (Prototype.Browser.WebKit) {
+ $A = function(iterable) {
+ if (!iterable) return [];
+ // In Safari, only use the `toArray` method if it's not a NodeList.
+ // A NodeList is a function, has an function `item` property, and a numeric
+ // `length` property. Adapted from Google Doctype.
+ if (!(typeof iterable === 'function' && typeof iterable.length
+ === 'number' && typeof iterable.item === 'function')
+ && iterable.toArray)
+ return iterable.toArray();
+ var length = iterable.length || 0, results = new Array(length);
+ while (length--) results[length] = iterable[length];
+ return results;
+ };
}
Array.from = $A;
Object.extend(Array.prototype, Enumerable);
-if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
+if (!Array.prototype._reverse) Array.prototype._reverse
+ = Array.prototype.reverse;
Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0, length = this.length; i < length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != null;
- });
- },
+ _each: function(iterator) {
+ for (var i = 0, length = this.length; i < length; i++)
+ iterator(this[i]);
+ },
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(Object.isArray(value) ?
- value.flatten() : [value]);
- });
- },
+ clear: function() {
+ this.length = 0;
+ return this;
+ },
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
+ first: function() {
+ return this[0];
+ },
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
+ last: function() {
+ return this[this.length - 1];
+ },
- reduce: function() {
- return this.length > 1 ? this : this[0];
- },
+ compact: function() {
+ return this.select(function(value) {
+ return value != null;
+ });
+ },
- uniq: function(sorted) {
- return this.inject([], function(array, value, index) {
- if (0 == index || (sorted ? array.last() != value : !array.include(value)))
- array.push(value);
- return array;
- });
- },
+ flatten: function() {
+ return this.inject([], function(array, value) {
+ return array.concat(Object.isArray(value) ? value.flatten()
+ : [value]);
+ });
+ },
- intersect: function(array) {
- return this.uniq().findAll(function(item) {
- return array.detect(function(value) { return item === value });
- });
- },
+ without: function() {
+ var values = $A(arguments);
+ return this.select(function(value) {
+ return !values.include(value);
+ });
+ },
- clone: function() {
- return [].concat(this);
- },
+ reverse: function(inline) {
+ return (inline !== false ? this : this.toArray())._reverse();
+ },
- size: function() {
- return this.length;
- },
+ reduce: function() {
+ return this.length > 1 ? this : this[0];
+ },
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- },
+ uniq: function(sorted) {
+ return this.inject([], function(array, value, index) {
+ if (0 == index || (sorted ? array.last() != value
+ : !array.include(value)))
+ array.push(value);
+ return array;
+ });
+ },
- toJSON: function() {
- var results = [];
- this.each(function(object) {
- var value = Object.toJSON(object);
- if (!Object.isUndefined(value)) results.push(value);
- });
- return '[' + results.join(', ') + ']';
- }
+ intersect: function(array) {
+ return this.uniq().findAll(function(item) {
+ return array.detect(function(value) {
+ return item === value
+ });
+ });
+ },
+
+ clone: function() {
+ return [].concat(this);
+ },
+
+ size: function() {
+ return this.length;
+ },
+
+ inspect: function() {
+ return '[' + this.map(Object.inspect).join(', ') + ']';
+ },
+
+ toJSON: function() {
+ var results = [];
+ this.each(function(object) {
+ var value = Object.toJSON(object);
+ if (!Object.isUndefined(value)) results.push(value);
+ });
+ return '[' + results.join(', ') + ']';
+ }
});
// use native browser JS 1.6 implementation if available
if (Object.isFunction(Array.prototype.forEach))
- Array.prototype._each = Array.prototype.forEach;
+ Array.prototype._each = Array.prototype.forEach;
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
- i || (i = 0);
- var length = this.length;
- if (i < 0) i = length + i;
- for (; i < length; i++)
- if (this[i] === item) return i;
- return -1;
+ i || (i = 0);
+ var length = this.length;
+ if (i < 0) i = length + i;
+ for (; i < length; i++)
+ if (this[i] === item) return i;
+ return -1;
};
-if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
- i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
- var n = this.slice(0, i).reverse().indexOf(item);
- return (n < 0) ? n : i - n - 1;
+if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item,
+ i) {
+ i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
+ var n = this.slice(0, i).reverse().indexOf(item);
+ return (n < 0) ? n : i - n - 1;
};
Array.prototype.toArray = Array.prototype.clone;
function $w(string) {
- if (!Object.isString(string)) return [];
- string = string.strip();
- return string ? string.split(/\s+/) : [];
+ if (!Object.isString(string)) return [];
+ string = string.strip();
+ return string ? string.split(/\s+/) : [];
}
-if (Prototype.Browser.Opera){
- Array.prototype.concat = function() {
- var array = [];
- for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
- for (var i = 0, length = arguments.length; i < length; i++) {
- if (Object.isArray(arguments[i])) {
- for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
- array.push(arguments[i][j]);
- } else {
- array.push(arguments[i]);
- }
- }
- return array;
- };
+if (Prototype.Browser.Opera) {
+ Array.prototype.concat = function() {
+ var array = [];
+ for (var i = 0, length = this.length; i < length;
+ i++) array.push(this[i]);
+ for (var i = 0, length = arguments.length; i < length; i++) {
+ if (Object.isArray(arguments[i])) {
+ for (var j = 0, arrayLength = arguments[i].length;
+ j < arrayLength; j++)
+ array.push(arguments[i][j]);
+ } else {
+ array.push(arguments[i]);
+ }
+ }
+ return array;
+ };
}
Object.extend(Number.prototype, {
- toColorPart: function() {
- return this.toPaddedString(2, 16);
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator, context) {
- $R(0, this, true).each(iterator, context);
- return this;
- },
-
- toPaddedString: function(length, radix) {
- var string = this.toString(radix || 10);
- return '0'.times(length - string.length) + string;
- },
-
- toJSON: function() {
- return isFinite(this) ? this.toString() : 'null';
- }
+ toColorPart: function() {
+ return this.toPaddedString(2, 16);
+ },
+
+ succ: function() {
+ return this + 1;
+ },
+
+ times: function(iterator, context) {
+ $R(0, this, true).each(iterator, context);
+ return this;
+ },
+
+ toPaddedString: function(length, radix) {
+ var string = this.toString(radix || 10);
+ return '0'.times(length - string.length) + string;
+ },
+
+ toJSON: function() {
+ return isFinite(this) ? this.toString() : 'null';
+ }
});
-$w('abs round ceil floor').each(function(method){
- Number.prototype[method] = Math[method].methodize();
+$w('abs round ceil floor').each(function(method) {
+ Number.prototype[method] = Math[method].methodize();
});
function $H(object) {
- return new Hash(object);
-};
+ return new Hash(object);
+}
+;
var Hash = Class.create(Enumerable, (function() {
- function toQueryPair(key, value) {
- if (Object.isUndefined(value)) return key;
- return key + '=' + encodeURIComponent(String.interpret(value));
- }
+ function toQueryPair(key, value) {
+ if (Object.isUndefined(value)) return key;
+ return key + '=' + encodeURIComponent(String.interpret(value));
+ }
- return {
- initialize: function(object) {
- this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
- },
+ return {
+ initialize: function(object) {
+ this._object = Object.isHash(object) ? object.toObject()
+ : Object.clone(object);
+ },
- _each: function(iterator) {
- for (var key in this._object) {
- var value = this._object[key], pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- },
+ _each: function(iterator) {
+ for (var key in this._object) {
+ var value = this._object[key], pair = [key, value];
+ pair.key = key;
+ pair.value = value;
+ iterator(pair);
+ }
+ },
- set: function(key, value) {
- return this._object[key] = value;
- },
+ set: function(key, value) {
+ return this._object[key] = value;
+ },
- get: function(key) {
- // simulating poorly supported hasOwnProperty
- if (this._object[key] !== Object.prototype[key])
- return this._object[key];
- },
+ get: function(key) {
+ // simulating poorly supported hasOwnProperty
+ if (this._object[key] !== Object.prototype[key])
+ return this._object[key];
+ },
- unset: function(key) {
- var value = this._object[key];
- delete this._object[key];
- return value;
- },
+ unset: function(key) {
+ var value = this._object[key];
+ delete this._object[key];
+ return value;
+ },
- toObject: function() {
- return Object.clone(this._object);
- },
+ toObject: function() {
+ return Object.clone(this._object);
+ },
- keys: function() {
- return this.pluck('key');
- },
+ keys: function() {
+ return this.pluck('key');
+ },
- values: function() {
- return this.pluck('value');
- },
+ values: function() {
+ return this.pluck('value');
+ },
- index: function(value) {
- var match = this.detect(function(pair) {
- return pair.value === value;
- });
- return match && match.key;
- },
+ index: function(value) {
+ var match = this.detect(function(pair) {
+ return pair.value === value;
+ });
+ return match && match.key;
+ },
- merge: function(object) {
- return this.clone().update(object);
- },
+ merge: function(object) {
+ return this.clone().update(object);
+ },
- update: function(object) {
- return new Hash(object).inject(this, function(result, pair) {
- result.set(pair.key, pair.value);
- return result;
- });
- },
+ update: function(object) {
+ return new Hash(object).inject(this, function(result, pair) {
+ result.set(pair.key, pair.value);
+ return result;
+ });
+ },
- toQueryString: function() {
- return this.inject([], function(results, pair) {
- var key = encodeURIComponent(pair.key), values = pair.value;
+ toQueryString: function() {
+ return this.inject([], function(results, pair) {
+ var key = encodeURIComponent(pair.key), values = pair.value;
- if (values && typeof values == 'object') {
- if (Object.isArray(values))
- return results.concat(values.map(toQueryPair.curry(key)));
- } else results.push(toQueryPair(key, values));
- return results;
- }).join('&');
- },
+ if (values && typeof values == 'object') {
+ if (Object.isArray(values))
+ return results.concat(values.map(toQueryPair.curry(key)));
+ } else results.push(toQueryPair(key, values));
+ return results;
+ }).join('&');
+ },
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- },
+ inspect: function() {
+ return '#<Hash:{' + this.map(function(pair) {
+ return pair.map(Object.inspect).join(': ');
+ }).join(', ') + '}>';
+ },
- toJSON: function() {
- return Object.toJSON(this.toObject());
- },
+ toJSON: function() {
+ return Object.toJSON(this.toObject());
+ },
- clone: function() {
- return new Hash(this);
+ clone: function() {
+ return new Hash(this);
+ }
}
- }
})());
Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
Hash.from = $H;
var ObjectRange = Class.create(Enumerable, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- while (this.include(value)) {
- iterator(value);
- value = value.succ();
+ initialize: function(start, end, exclusive) {
+ this.start = start;
+ this.end = end;
+ this.exclusive = exclusive;
+ },
+
+ _each: function(iterator) {
+ var value = this.start;
+ while (this.include(value)) {
+ iterator(value);
+ value = value.succ();
+ }
+ },
+
+ include: function(value) {
+ if (value < this.start)
+ return false;
+ if (this.exclusive)
+ return value < this.end;
+ return value <= this.end;
}
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
});
var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
+ return new ObjectRange(start, end, exclusive);
};
var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
+ getTransport: function() {
+ return Try.these(function() {
+ return new XMLHttpRequest()
+ }, function() {
+ return new ActiveXObject('Msxml2.XMLHTTP')
+ }, function() {
+ return new ActiveXObject('Microsoft.XMLHTTP')
+ }) || false;
+ },
+
+ activeRequestCount: 0
};
Ajax.Responders = {
- responders: [],
+ responders: [],
- _each: function(iterator) {
- this.responders._each(iterator);
- },
+ _each: function(iterator) {
+ this.responders._each(iterator);
+ },
- register: function(responder) {
- if (!this.include(responder))
- this.responders.push(responder);
- },
+ register: function(responder) {
+ if (!this.include(responder))
+ this.responders.push(responder);
+ },
- unregister: function(responder) {
- this.responders = this.responders.without(responder);
- },
+ unregister: function(responder) {
+ this.responders = this.responders.without(responder);
+ },
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (Object.isFunction(responder[callback])) {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) { }
- }
- });
- }
+ dispatch: function(callback, request, transport, json) {
+ this.each(function(responder) {
+ if (Object.isFunction(responder[callback])) {
+ try {
+ responder[callback].apply(responder, [request, transport, json]);
+ } catch (e) {
+ }
+ }
+ });
+ }
};
Object.extend(Ajax.Responders, Enumerable);
Ajax.Responders.register({
- onCreate: function() { Ajax.activeRequestCount++ },
- onComplete: function() { Ajax.activeRequestCount-- }
+ onCreate: function() {
+ Ajax.activeRequestCount++
+ },
+ onComplete: function() {
+ Ajax.activeRequestCount--
+ }
});
Ajax.Base = Class.create({
- initialize: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- parameters: '',
- evalJSON: true,
- evalJS: true
- };
- Object.extend(this.options, options || { });
-
- this.options.method = this.options.method.toLowerCase();
-
- if (Object.isString(this.options.parameters))
- this.options.parameters = this.options.parameters.toQueryParams();
- else if (Object.isHash(this.options.parameters))
- this.options.parameters = this.options.parameters.toObject();
- }
+ initialize: function(options) {
+ this.options = {
+ method: 'post',
+ asynchronous: true,
+ contentType: 'application/x-www-form-urlencoded',
+ encoding: 'UTF-8',
+ parameters: '',
+ evalJSON: true,
+ evalJS: true
+ };
+ Object.extend(this.options, options || { });
+
+ this.options.method = this.options.method.toLowerCase();
+
+ if (Object.isString(this.options.parameters))
+ this.options.parameters
+ = this.options.parameters.toQueryParams(); else if (Object.isHash(this.options.parameters))
+ this.options.parameters = this.options.parameters.toObject();
+ }
});
Ajax.Request = Class.create(Ajax.Base, {
- _complete: false,
-
- initialize: function($super, url, options) {
- $super(options);
- this.transport = Ajax.getTransport();
- this.request(url);
- },
-
- request: function(url) {
- this.url = url;
- this.method = this.options.method;
- var params = Object.clone(this.options.parameters);
-
- if (!['get', 'post'].include(this.method)) {
- // simulate other verbs over post
- params['_method'] = this.method;
- this.method = 'post';
- }
+ _complete: false,
- this.parameters = params;
+ initialize: function($super, url, options) {
+ $super(options);
+ this.transport = Ajax.getTransport();
+ this.request(url);
+ },
- if (params = Object.toQueryString(params)) {
- // when GET, append parameters to URL
- if (this.method == 'get')
- this.url += (this.url.include('?') ? '&' : '?') + params;
- else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
- params += '&_=';
- }
+ request: function(url) {
+ this.url = url;
+ this.method = this.options.method;
+ var params = Object.clone(this.options.parameters);
- try {
- var response = new Ajax.Response(this);
- if (this.options.onCreate) this.options.onCreate(response);
- Ajax.Responders.dispatch('onCreate', this, response);
+ if (!['get', 'post'].include(this.method)) {
+ // simulate other verbs over post
+ params['_method'] = this.method;
+ this.method = 'post';
+ }
- this.transport.open(this.method.toUpperCase(), this.url,
- this.options.asynchronous);
+ this.parameters = params;
- if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
+ if (params = Object.toQueryString(params)) {
+ // when GET, append parameters to URL
+ if (this.method == 'get')
+ this.url += (this.url.include('?') ? '&' : '?')
+ + params; else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+ params += '&_=';
+ }
- this.transport.onreadystatechange = this.onStateChange.bind(this);
- this.setRequestHeaders();
+ try {
+ var response = new Ajax.Response(this);
+ if (this.options.onCreate) this.options.onCreate(response);
+ Ajax.Responders.dispatch('onCreate', this, response);
- this.body = this.method == 'post' ? (this.options.postBody || params) : null;
- this.transport.send(this.body);
+ this.transport.open(this.method.toUpperCase(), this.url, this.options.asynchronous);
- /* Force Firefox to handle ready state 4 for synchronous requests */
- if (!this.options.asynchronous && this.transport.overrideMimeType)
- this.onStateChange();
+ if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
- }
- catch (e) {
- this.dispatchException(e);
- }
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState > 1 && !((readyState == 4) && this._complete))
- this.respondToReadyState(this.transport.readyState);
- },
-
- setRequestHeaders: function() {
- var headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Prototype-Version': Prototype.Version,
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
- };
+ this.transport.onreadystatechange = this.onStateChange.bind(this);
+ this.setRequestHeaders();
- if (this.method == 'post') {
- headers['Content-type'] = this.options.contentType +
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
- /* Force "Connection: close" for older Mozilla browsers to work
- * around a bug where XMLHttpRequest sends an incorrect
- * Content-length header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType &&
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
- headers['Connection'] = 'close';
- }
+ this.body = this.method == 'post' ? (this.options.postBody
+ || params) : null;
+ this.transport.send(this.body);
- // user-defined headers
- if (typeof this.options.requestHeaders == 'object') {
- var extras = this.options.requestHeaders;
+ /* Force Firefox to handle ready state 4 for synchronous requests */
+ if (!this.options.asynchronous && this.transport.overrideMimeType)
+ this.onStateChange();
- if (Object.isFunction(extras.push))
- for (var i = 0, length = extras.length; i < length; i += 2)
- headers[extras[i]] = extras[i+1];
- else
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
- }
+ } catch (e) {
+ this.dispatchException(e);
+ }
+ },
- for (var name in headers)
- this.transport.setRequestHeader(name, headers[name]);
- },
-
- success: function() {
- var status = this.getStatus();
- return !status || (status >= 200 && status < 300);
- },
-
- getStatus: function() {
- try {
- return this.transport.status || 0;
- } catch (e) { return 0 }
- },
-
- respondToReadyState: function(readyState) {
- var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
-
- if (state == 'Complete') {
- try {
- this._complete = true;
- (this.options['on' + response.status]
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- var contentType = response.getHeader('Content-type');
- if (this.options.evalJS == 'force'
- || (this.options.evalJS && this.isSameOrigin() && contentType
- && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
- this.evalResponse();
- }
+ onStateChange: function() {
+ var readyState = this.transport.readyState;
+ if (readyState > 1 && !((readyState == 4) && this._complete))
+ this.respondToReadyState(this.transport.readyState);
+ },
- try {
- (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
- Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
+ setRequestHeaders: function() {
+ var headers = {
+ 'X-Requested-With': 'XMLHttpRequest',
+ 'X-Prototype-Version': Prototype.Version,
+ 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+ };
+
+ if (this.method == 'post') {
+ headers['Content-type'] = this.options.contentType
+ + (this.options.encoding ? '; charset='
+ + this.options.encoding : '');
+
+ /* Force "Connection: close" for older Mozilla browsers to work
+ * around a bug where XMLHttpRequest sends an incorrect
+ * Content-length header. See Mozilla Bugzilla #246651.
+ */
+ if (this.transport.overrideMimeType
+ && (navigator.userAgent.match(/Gecko\/(\d{4})/)
+ || [0,2005])[1] < 2005)
+ headers['Connection'] = 'close';
+ }
- if (state == 'Complete') {
- // avoid memory leak in MSIE: clean up
- this.transport.onreadystatechange = Prototype.emptyFunction;
- }
- },
-
- isSameOrigin: function() {
- var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
- return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
- protocol: location.protocol,
- domain: document.domain,
- port: location.port ? ':' + location.port : ''
- }));
- },
-
- getHeader: function(name) {
- try {
- return this.transport.getResponseHeader(name) || null;
- } catch (e) { return null }
- },
-
- evalResponse: function() {
- try {
- return eval((this.transport.responseText || '').unfilterJSON());
- } catch (e) {
- this.dispatchException(e);
- }
- },
+ // user-defined headers
+ if (typeof this.options.requestHeaders == 'object') {
+ var extras = this.options.requestHeaders;
+
+ if (Object.isFunction(extras.push))
+ for (var i = 0, length = extras.length; i < length; i += 2)
+ headers[extras[i]] = extras[i + 1]; else
+ $H(extras).each(function(pair) {
+ headers[pair.key] = pair.value
+ });
+ }
+
+ for (var name in headers)
+ this.transport.setRequestHeader(name, headers[name]);
+ },
+
+ success: function() {
+ var status = this.getStatus();
+ return !status || (status >= 200 && status < 300);
+ },
+
+ getStatus: function() {
+ try {
+ return this.transport.status || 0;
+ } catch (e) {
+ return 0
+ }
+ },
+
+ respondToReadyState: function(readyState) {
+ var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
+
+ if (state == 'Complete') {
+ try {
+ this._complete = true;
+ (this.options['on' + response.status] || this.options['on'
+ + (this.success() ? 'Success' : 'Failure')]
+ || Prototype.emptyFunction)(response, response.headerJSON);
+ } catch (e) {
+ this.dispatchException(e);
+ }
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
+ var contentType = response.getHeader('Content-type');
+ if (this.options.evalJS == 'force' || (this.options.evalJS
+ && this.isSameOrigin() && contentType
+ && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
+ this.evalResponse();
+ }
+
+ try {
+ (this.options['on' + state]
+ || Prototype.emptyFunction)(response, response.headerJSON);
+ Ajax.Responders.dispatch('on'
+ + state, this, response, response.headerJSON);
+ } catch (e) {
+ this.dispatchException(e);
+ }
+
+ if (state == 'Complete') {
+ // avoid memory leak in MSIE: clean up
+ this.transport.onreadystatechange = Prototype.emptyFunction;
+ }
+ },
+
+ isSameOrigin: function() {
+ var m = this.url.match(/^\s*https?:\/\/[^\/]*/);
+ return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({
+ protocol: location.protocol,
+ domain: document.domain,
+ port: location.port ? ':' + location.port : ''
+ }));
+ },
+
+ getHeader: function(name) {
+ try {
+ return this.transport.getResponseHeader(name) || null;
+ } catch (e) {
+ return null
+ }
+ },
+
+ evalResponse: function() {
+ try {
+ return eval((this.transport.responseText || '').unfilterJSON());
+ } catch (e) {
+ this.dispatchException(e);
+ }
+ },
+
+ dispatchException: function(exception) {
+ (this.options.onException || Prototype.emptyFunction)(this, exception);
+ Ajax.Responders.dispatch('onException', this, exception);
+ }
});
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+Ajax.Request.Events
+ = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
Ajax.Response = Class.create({
- initialize: function(request){
- this.request = request;
- var transport = this.transport = request.transport,
- readyState = this.readyState = transport.readyState;
-
- if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
- this.status = this.getStatus();
- this.statusText = this.getStatusText();
- this.responseText = String.interpret(transport.responseText);
- this.headerJSON = this._getHeaderJSON();
- }
+ initialize: function(request) {
+ this.request = request;
+ var transport = this.transport = request.transport,
+ readyState = this.readyState = transport.readyState;
+
+ if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
+ this.status = this.getStatus();
+ this.statusText = this.getStatusText();
+ this.responseText = String.interpret(transport.responseText);
+ this.headerJSON = this._getHeaderJSON();
+ }
- if(readyState == 4) {
- var xml = transport.responseXML;
- this.responseXML = Object.isUndefined(xml) ? null : xml;
- this.responseJSON = this._getResponseJSON();
- }
- },
-
- status: 0,
- statusText: '',
-
- getStatus: Ajax.Request.prototype.getStatus,
-
- getStatusText: function() {
- try {
- return this.transport.statusText || '';
- } catch (e) { return '' }
- },
-
- getHeader: Ajax.Request.prototype.getHeader,
-
- getAllHeaders: function() {
- try {
- return this.getAllResponseHeaders();
- } catch (e) { return null }
- },
-
- getResponseHeader: function(name) {
- return this.transport.getResponseHeader(name);
- },
-
- getAllResponseHeaders: function() {
- return this.transport.getAllResponseHeaders();
- },
-
- _getHeaderJSON: function() {
- var json = this.getHeader('X-JSON');
- if (!json) return null;
- json = decodeURIComponent(escape(json));
- try {
- return json.evalJSON(this.request.options.sanitizeJSON ||
- !this.request.isSameOrigin());
- } catch (e) {
- this.request.dispatchException(e);
- }
- },
-
- _getResponseJSON: function() {
- var options = this.request.options;
- if (!options.evalJSON || (options.evalJSON != 'force' &&
- !(this.getHeader('Content-type') || '').include('application/json')) ||
- this.responseText.blank())
- return null;
- try {
- return this.responseText.evalJSON(options.sanitizeJSON ||
- !this.request.isSameOrigin());
- } catch (e) {
- this.request.dispatchException(e);
+ if (readyState == 4) {
+ var xml = transport.responseXML;
+ this.responseXML = Object.isUndefined(xml) ? null : xml;
+ this.responseJSON = this._getResponseJSON();
+ }
+ },
+
+ status: 0,
+ statusText: '',
+
+ getStatus: Ajax.Request.prototype.getStatus,
+
+ getStatusText: function() {
+ try {
+ return this.transport.statusText || '';
+ } catch (e) {
+ return ''
+ }
+ },
+
+ getHeader: Ajax.Request.prototype.getHeader,
+
+ getAllHeaders: function() {
+ try {
+ return this.getAllResponseHeaders();
+ } catch (e) {
+ return null
+ }
+ },
+
+ getResponseHeader: function(name) {
+ return this.transport.getResponseHeader(name);
+ },
+
+ getAllResponseHeaders: function() {
+ return this.transport.getAllResponseHeaders();
+ },
+
+ _getHeaderJSON: function() {
+ var json = this.getHeader('X-JSON');
+ if (!json) return null;
+ json = decodeURIComponent(escape(json));
+ try {
+ return json.evalJSON(this.request.options.sanitizeJSON
+ || !this.request.isSameOrigin());
+ } catch (e) {
+ this.request.dispatchException(e);
+ }
+ },
+
+ _getResponseJSON: function() {
+ var options = this.request.options;
+ if (!options.evalJSON || (options.evalJSON != 'force'
+ && !(this.getHeader('Content-type')
+ || '').include('application/json'))
+ || this.responseText.blank())
+ return null;
+ try {
+ return this.responseText.evalJSON(options.sanitizeJSON
+ || !this.request.isSameOrigin());
+ } catch (e) {
+ this.request.dispatchException(e);
+ }
}
- }
});
Ajax.Updater = Class.create(Ajax.Request, {
- initialize: function($super, container, url, options) {
- this.container = {
- success: (container.success || container),
- failure: (container.failure || (container.success ? null : container))
- };
-
- options = Object.clone(options);
- var onComplete = options.onComplete;
- options.onComplete = (function(response, json) {
- this.updateContent(response.responseText);
- if (Object.isFunction(onComplete)) onComplete(response, json);
- }).bind(this);
-
- $super(url, options);
- },
+ initialize: function($super, container, url, options) {
+ this.container = {
+ success: (container.success || container),
+ failure: (container.failure || (container.success ? null
+ : container))
+ };
+
+ options = Object.clone(options);
+ var onComplete = options.onComplete;
+ options.onComplete = (function(response, json) {
+ this.updateContent(response.responseText);
+ if (Object.isFunction(onComplete)) onComplete(response, json);
+ }).bind(this);
+
+ $super(url, options);
+ },
- updateContent: function(responseText) {
- var receiver = this.container[this.success() ? 'success' : 'failure'],
- options = this.options;
+ updateContent: function(responseText) {
+ var receiver = this.container[this.success() ? 'success' : 'failure'],
+ options = this.options;
- if (!options.evalScripts) responseText = responseText.stripScripts();
+ if (!options.evalScripts) responseText = responseText.stripScripts();
- if (receiver = $(receiver)) {
- if (options.insertion) {
- if (Object.isString(options.insertion)) {
- var insertion = { }; insertion[options.insertion] = responseText;
- receiver.insert(insertion);
+ if (receiver = $(receiver)) {
+ if (options.insertion) {
+ if (Object.isString(options.insertion)) {
+ var insertion = { };
+ insertion[options.insertion] = responseText;
+ receiver.insert(insertion);
+ } else options.insertion(receiver, responseText);
+ } else receiver.update(responseText);
}
- else options.insertion(receiver, responseText);
- }
- else receiver.update(responseText);
}
- }
});
Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
- initialize: function($super, container, url, options) {
- $super(options);
- this.onComplete = this.options.onComplete;
+ initialize: function($super, container, url, options) {
+ $super(options);
+ this.onComplete = this.options.onComplete;
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
+ this.frequency = (this.options.frequency || 2);
+ this.decay = (this.options.decay || 1);
- this.updater = { };
- this.container = container;
- this.url = url;
+ this.updater = { };
+ this.container = container;
+ this.url = url;
- this.start();
- },
+ this.start();
+ },
- start: function() {
- this.options.onComplete = this.updateComplete.bind(this);
- this.onTimerEvent();
- },
+ start: function() {
+ this.options.onComplete = this.updateComplete.bind(this);
+ this.onTimerEvent();
+ },
- stop: function() {
- this.updater.options.onComplete = undefined;
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
+ stop: function() {
+ this.updater.options.onComplete = undefined;
+ clearTimeout(this.timer);
+ (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+ },
- updateComplete: function(response) {
- if (this.options.decay) {
- this.decay = (response.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
+ updateComplete: function(response) {
+ if (this.options.decay) {
+ this.decay = (response.responseText == this.lastText ? this.decay
+ * this.options.decay : 1);
- this.lastText = response.responseText;
- }
- this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
- },
+ this.lastText = response.responseText;
+ }
+ this.timer = this.onTimerEvent.bind(this).delay(this.decay
+ * this.frequency);
+ },
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
+ onTimerEvent: function() {
+ this.updater = new Ajax.Updater(this.container, this.url, this.options);
+ }
});
function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- }
- if (Object.isString(element))
- element = document.getElementById(element);
- return Element.extend(element);
+ if (arguments.length > 1) {
+ for (var i = 0, elements = [], length = arguments.length; i < length;
+ i++)
+ elements.push($(arguments[i]));
+ return elements;
+ }
+ if (Object.isString(element))
+ element = document.getElementById(element);
+ return Element.extend(element);
}
if (Prototype.BrowserFeatures.XPath) {
- document._getElementsByXPath = function(expression, parentElement) {
- var results = [];
- var query = document.evaluate(expression, $(parentElement) || document,
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i = 0, length = query.snapshotLength; i < length; i++)
- results.push(Element.extend(query.snapshotItem(i)));
- return results;
- };
+ document._getElementsByXPath = function(expression, parentElement) {
+ var results = [];
+ var query = document.evaluate(expression, $(parentElement)
+ || document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+ for (var i = 0, length = query.snapshotLength; i < length; i++)
+ results.push(Element.extend(query.snapshotItem(i)));
+ return results;
+ };
}
/*--------------------------------------------------------------------------*/
@@ -1537,2096 +1587,2182 @@ if (Prototype.BrowserFeatures.XPath) {
if (!window.Node) var Node = { };
if (!Node.ELEMENT_NODE) {
- // DOM level 2 ECMAScript Language Binding
- Object.extend(Node, {
- ELEMENT_NODE: 1,
- ATTRIBUTE_NODE: 2,
- TEXT_NODE: 3,
- CDATA_SECTION_NODE: 4,
- ENTITY_REFERENCE_NODE: 5,
- ENTITY_NODE: 6,
- PROCESSING_INSTRUCTION_NODE: 7,
- COMMENT_NODE: 8,
- DOCUMENT_NODE: 9,
- DOCUMENT_TYPE_NODE: 10,
- DOCUMENT_FRAGMENT_NODE: 11,
- NOTATION_NODE: 12
- });
+ // DOM level 2 ECMAScript Language Binding
+ Object.extend(Node, {
+ ELEMENT_NODE: 1,
+ ATTRIBUTE_NODE: 2,
+ TEXT_NODE: 3,
+ CDATA_SECTION_NODE: 4,
+ ENTITY_REFERENCE_NODE: 5,
+ ENTITY_NODE: 6,
+ PROCESSING_INSTRUCTION_NODE: 7,
+ COMMENT_NODE: 8,
+ DOCUMENT_NODE: 9,
+ DOCUMENT_TYPE_NODE: 10,
+ DOCUMENT_FRAGMENT_NODE: 11,
+ NOTATION_NODE: 12
+ });
}
(function() {
- var element = this.Element;
- this.Element = function(tagName, attributes) {
- attributes = attributes || { };
- tagName = tagName.toLowerCase();
- var cache = Element.cache;
- if (Prototype.Browser.IE && attributes.name) {
- tagName = '<' + tagName + ' name="' + attributes.name + '">';
- delete attributes.name;
- return Element.writeAttribute(document.createElement(tagName), attributes);
- }
- if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
- return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
- };
- Object.extend(this.Element, element || { });
- if (element) this.Element.prototype = element.prototype;
+ var element = this.Element;
+ this.Element = function(tagName, attributes) {
+ attributes = attributes || { };
+ tagName = tagName.toLowerCase();
+ var cache = Element.cache;
+ if (Prototype.Browser.IE && attributes.name) {
+ tagName = '<' + tagName + ' name="' + attributes.name + '">';
+ delete attributes.name;
+ return Element.writeAttribute(document.createElement(tagName), attributes);
+ }
+ if (!cache[tagName]) cache[tagName]
+ = Element.extend(document.createElement(tagName));
+ return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
+ };
+ Object.extend(this.Element, element || { });
+ if (element) this.Element.prototype = element.prototype;
}).call(window);
Element.cache = { };
Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function(element) {
- element = $(element);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- return element;
- },
-
- hide: function(element) {
- element = $(element);
- element.style.display = 'none';
- return element;
- },
-
- show: function(element) {
- element = $(element);
- element.style.display = '';
- return element;
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- return element;
- },
-
- update: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
- content = Object.toHTML(content);
- element.innerHTML = content.stripScripts();
- content.evalScripts.bind(content).defer();
- return element;
- },
-
- replace: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- else if (!Object.isElement(content)) {
- content = Object.toHTML(content);
- var range = element.ownerDocument.createRange();
- range.selectNode(element);
- content.evalScripts.bind(content).defer();
- content = range.createContextualFragment(content.stripScripts());
- }
- element.parentNode.replaceChild(content, element);
- return element;
- },
+ visible: function(element) {
+ return $(element).style.display != 'none';
+ },
- insert: function(element, insertions) {
- element = $(element);
+ toggle: function(element) {
+ element = $(element);
+ Element[Element.visible(element) ? 'hide' : 'show'](element);
+ return element;
+ },
- if (Object.isString(insertions) || Object.isNumber(insertions) ||
- Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
- insertions = {bottom:insertions};
+ hide: function(element) {
+ element = $(element);
+ element.style.display = 'none';
+ return element;
+ },
- var content, insert, tagName, childNodes;
+ show: function(element) {
+ element = $(element);
+ element.style.display = '';
+ return element;
+ },
- for (var position in insertions) {
- content = insertions[position];
- position = position.toLowerCase();
- insert = Element._insertionTranslations[position];
+ remove: function(element) {
+ element = $(element);
+ element.parentNode.removeChild(element);
+ return element;
+ },
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- insert(element, content);
- continue;
- }
+ update: function(element, content) {
+ element = $(element);
+ if (content && content.toElement) content = content.toElement();
+ if (Object.isElement(content)) return element.update().insert(content);
+ content = Object.toHTML(content);
+ element.innerHTML = content.stripScripts();
+ content.evalScripts.bind(content).defer();
+ return element;
+ },
- content = Object.toHTML(content);
+ replace: function(element, content) {
+ element = $(element);
+ if (content && content.toElement) content
+ = content.toElement(); else if (!Object.isElement(content)) {
+ content = Object.toHTML(content);
+ var range = element.ownerDocument.createRange();
+ range.selectNode(element);
+ content.evalScripts.bind(content).defer();
+ content = range.createContextualFragment(content.stripScripts());
+ }
+ element.parentNode.replaceChild(content, element);
+ return element;
+ },
- tagName = ((position == 'before' || position == 'after')
- ? element.parentNode : element).tagName.toUpperCase();
+ insert: function(element, insertions) {
+ element = $(element);
- childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+ if (Object.isString(insertions) || Object.isNumber(insertions)
+ || Object.isElement(insertions) || (insertions
+ && (insertions.toElement || insertions.toHTML)))
+ insertions = {bottom:insertions};
- if (position == 'top' || position == 'after') childNodes.reverse();
- childNodes.each(insert.curry(element));
+ var content, insert, tagName, childNodes;
- content.evalScripts.bind(content).defer();
- }
+ for (var position in insertions) {
+ content = insertions[position];
+ position = position.toLowerCase();
+ insert = Element._insertionTranslations[position];
- return element;
- },
-
- wrap: function(element, wrapper, attributes) {
- element = $(element);
- if (Object.isElement(wrapper))
- $(wrapper).writeAttribute(attributes || { });
- else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
- else wrapper = new Element('div', wrapper);
- if (element.parentNode)
- element.parentNode.replaceChild(wrapper, element);
- wrapper.appendChild(element);
- return wrapper;
- },
-
- inspect: function(element) {
- element = $(element);
- var result = '<' + element.tagName.toLowerCase();
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
- var property = pair.first(), attribute = pair.last();
- var value = (element[property] || '').toString();
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
- });
- return result + '>';
- },
-
- recursivelyCollect: function(element, property) {
- element = $(element);
- var elements = [];
- while (element = element[property])
- if (element.nodeType == 1)
- elements.push(Element.extend(element));
- return elements;
- },
-
- ancestors: function(element) {
- return $(element).recursivelyCollect('parentNode');
- },
-
- descendants: function(element) {
- return $(element).select("*");
- },
-
- firstDescendant: function(element) {
- element = $(element).firstChild;
- while (element && element.nodeType != 1) element = element.nextSibling;
- return $(element);
- },
-
- immediateDescendants: function(element) {
- if (!(element = $(element).firstChild)) return [];
- while (element && element.nodeType != 1) element = element.nextSibling;
- if (element) return [element].concat($(element).nextSiblings());
- return [];
- },
-
- previousSiblings: function(element) {
- return $(element).recursivelyCollect('previousSibling');
- },
-
- nextSiblings: function(element) {
- return $(element).recursivelyCollect('nextSibling');
- },
-
- siblings: function(element) {
- element = $(element);
- return element.previousSiblings().reverse().concat(element.nextSiblings());
- },
-
- match: function(element, selector) {
- if (Object.isString(selector))
- selector = new Selector(selector);
- return selector.match($(element));
- },
-
- up: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(element.parentNode);
- var ancestors = element.ancestors();
- return Object.isNumber(expression) ? ancestors[expression] :
- Selector.findElement(ancestors, expression, index);
- },
-
- down: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return element.firstDescendant();
- return Object.isNumber(expression) ? element.descendants()[expression] :
- Element.select(element, expression)[index || 0];
- },
-
- previous: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
- var previousSiblings = element.previousSiblings();
- return Object.isNumber(expression) ? previousSiblings[expression] :
- Selector.findElement(previousSiblings, expression, index);
- },
-
- next: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
- var nextSiblings = element.nextSiblings();
- return Object.isNumber(expression) ? nextSiblings[expression] :
- Selector.findElement(nextSiblings, expression, index);
- },
-
- select: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element, args);
- },
-
- adjacent: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element.parentNode, args).without(element);
- },
-
- identify: function(element) {
- element = $(element);
- var id = element.readAttribute('id'), self = arguments.callee;
- if (id) return id;
- do { id = 'anonymous_element_' + self.counter++ } while ($(id));
- element.writeAttribute('id', id);
- return id;
- },
-
- readAttribute: function(element, name) {
- element = $(element);
- if (Prototype.Browser.IE) {
- var t = Element._attributeTranslations.read;
- if (t.values[name]) return t.values[name](element, name);
- if (t.names[name]) name = t.names[name];
- if (name.include(':')) {
- return (!element.attributes || !element.attributes[name]) ? null :
- element.attributes[name].value;
- }
- }
- return element.getAttribute(name);
- },
-
- writeAttribute: function(element, name, value) {
- element = $(element);
- var attributes = { }, t = Element._attributeTranslations.write;
-
- if (typeof name == 'object') attributes = name;
- else attributes[name] = Object.isUndefined(value) ? true : value;
-
- for (var attr in attributes) {
- name = t.names[attr] || attr;
- value = attributes[attr];
- if (t.values[attr]) name = t.values[attr](element, value);
- if (value === false || value === null)
- element.removeAttribute(name);
- else if (value === true)
- element.setAttribute(name, name);
- else element.setAttribute(name, value);
- }
- return element;
- },
-
- getHeight: function(element) {
- return $(element).getDimensions().height;
- },
-
- getWidth: function(element) {
- return $(element).getDimensions().width;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- var elementClassName = element.className;
- return (elementClassName.length > 0 && (elementClassName == className ||
- new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- if (!element.hasClassName(className))
- element.className += (element.className ? ' ' : '') + className;
- return element;
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- element.className = element.className.replace(
- new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
- return element;
- },
-
- toggleClassName: function(element, className) {
- if (!(element = $(element))) return;
- return element[element.hasClassName(className) ?
- 'removeClassName' : 'addClassName'](className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- var node = element.firstChild;
- while (node) {
- var nextNode = node.nextSibling;
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- element.removeChild(node);
- node = nextNode;
- }
- return element;
- },
-
- empty: function(element) {
- return $(element).innerHTML.blank();
- },
-
- descendantOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
-
- if (element.compareDocumentPosition)
- return (element.compareDocumentPosition(ancestor) & 8) === 8;
-
- if (ancestor.contains)
- return ancestor.contains(element) && ancestor !== element;
-
- while (element = element.parentNode)
- if (element == ancestor) return true;
-
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var pos = element.cumulativeOffset();
- window.scrollTo(pos[0], pos[1]);
- return element;
- },
-
- getStyle: function(element, style) {
- element = $(element);
- style = style == 'float' ? 'cssFloat' : style.camelize();
- var value = element.style[style];
- if (!value || value == 'auto') {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css[style] : null;
- }
- if (style == 'opacity') return value ? parseFloat(value) : 1.0;
- return value == 'auto' ? null : value;
- },
-
- getOpacity: function(element) {
- return $(element).getStyle('opacity');
- },
-
- setStyle: function(element, styles) {
- element = $(element);
- var elementStyle = element.style, match;
- if (Object.isString(styles)) {
- element.style.cssText += ';' + styles;
- return styles.include('opacity') ?
- element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
- }
- for (var property in styles)
- if (property == 'opacity') element.setOpacity(styles[property]);
- else
- elementStyle[(property == 'float' || property == 'cssFloat') ?
- (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
- property] = styles[property];
-
- return element;
- },
-
- setOpacity: function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
- return element;
- },
-
- getDimensions: function(element) {
- element = $(element);
- var display = element.getStyle('display');
- if (display != 'none' && display != null) // Safari bug
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- var originalDisplay = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = 'block';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = originalDisplay;
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (Prototype.Browser.Opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- return element;
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- return element;
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return element;
- element._overflow = Element.getStyle(element, 'overflow') || 'auto';
- if (element._overflow !== 'hidden')
- element.style.overflow = 'hidden';
- return element;
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (!element._overflow) return element;
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
- element._overflow = null;
- return element;
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- if (element.tagName.toUpperCase() == 'BODY') break;
- var p = Element.getStyle(element, 'position');
- if (p !== 'static') break;
- }
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'absolute') return element;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- var offsets = element.positionedOffset();
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.width = width + 'px';
- element.style.height = height + 'px';
- return element;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'relative') return element;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- element.style.position = 'relative';
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
-
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.height = element._originalHeight;
- element.style.width = element._originalWidth;
- return element;
- },
-
- cumulativeScrollOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.scrollTop || 0;
- valueL += element.scrollLeft || 0;
- element = element.parentNode;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- getOffsetParent: function(element) {
- if (element.offsetParent) return $(element.offsetParent);
- if (element == document.body) return $(element);
-
- while ((element = element.parentNode) && element != document.body)
- if (Element.getStyle(element, 'position') != 'static')
+ if (content && content.toElement) content = content.toElement();
+ if (Object.isElement(content)) {
+ insert(element, content);
+ continue;
+ }
+
+ content = Object.toHTML(content);
+
+ tagName = ((position == 'before' || position == 'after')
+ ? element.parentNode : element).tagName.toUpperCase();
+
+ childNodes
+ = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+
+ if (position == 'top' || position == 'after') childNodes.reverse();
+ childNodes.each(insert.curry(element));
+
+ content.evalScripts.bind(content).defer();
+ }
+
+ return element;
+ },
+
+ wrap: function(element, wrapper, attributes) {
+ element = $(element);
+ if (Object.isElement(wrapper))
+ $(wrapper).writeAttribute(attributes
+ || { }); else if (Object.isString(wrapper)) wrapper
+ = new Element(wrapper, attributes); else wrapper
+ = new Element('div', wrapper);
+ if (element.parentNode)
+ element.parentNode.replaceChild(wrapper, element);
+ wrapper.appendChild(element);
+ return wrapper;
+ },
+
+ inspect: function(element) {
+ element = $(element);
+ var result = '<' + element.tagName.toLowerCase();
+ $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+ var property = pair.first(), attribute = pair.last();
+ var value = (element[property] || '').toString();
+ if (value) result += ' ' + attribute + '=' + value.inspect(true);
+ });
+ return result + '>';
+ },
+
+ recursivelyCollect: function(element, property) {
+ element = $(element);
+ var elements = [];
+ while (element = element[property])
+ if (element.nodeType == 1)
+ elements.push(Element.extend(element));
+ return elements;
+ },
+
+ ancestors: function(element) {
+ return $(element).recursivelyCollect('parentNode');
+ },
+
+ descendants: function(element) {
+ return $(element).select("*");
+ },
+
+ firstDescendant: function(element) {
+ element = $(element).firstChild;
+ while (element && element.nodeType != 1) element = element.nextSibling;
return $(element);
+ },
- return $(document.body);
- },
-
- viewportOffset: function(forElement) {
- var valueT = 0, valueL = 0;
-
- var element = forElement;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
-
- // Safari fix
- if (element.offsetParent == document.body &&
- Element.getStyle(element, 'position') == 'absolute') break;
-
- } while (element = element.offsetParent);
-
- element = forElement;
- do {
- if (!Prototype.Browser.Opera || (element.tagName && (element.tagName.toUpperCase() == 'BODY'))) {
- valueT -= element.scrollTop || 0;
- valueL -= element.scrollLeft || 0;
- }
- } while (element = element.parentNode);
-
- return Element._returnOffset(valueL, valueT);
- },
-
- clonePosition: function(element, source) {
- var options = Object.extend({
- setLeft: true,
- setTop: true,
- setWidth: true,
- setHeight: true,
- offsetTop: 0,
- offsetLeft: 0
- }, arguments[2] || { });
-
- // find page position of source
- source = $(source);
- var p = source.viewportOffset();
-
- // find coordinate system to use
- element = $(element);
- var delta = [0, 0];
- var parent = null;
- // delta [0,0] will do fine with position: fixed elements,
- // position:absolute needs offsetParent deltas
- if (Element.getStyle(element, 'position') == 'absolute') {
- parent = element.getOffsetParent();
- delta = parent.viewportOffset();
- }
+ immediateDescendants: function(element) {
+ if (!(element = $(element).firstChild)) return [];
+ while (element && element.nodeType != 1) element = element.nextSibling;
+ if (element) return [element].concat($(element).nextSiblings());
+ return [];
+ },
- // correct by body offsets (fixes Safari)
- if (parent == document.body) {
- delta[0] -= document.body.offsetLeft;
- delta[1] -= document.body.offsetTop;
- }
+ previousSiblings: function(element) {
+ return $(element).recursivelyCollect('previousSibling');
+ },
+
+ nextSiblings: function(element) {
+ return $(element).recursivelyCollect('nextSibling');
+ },
+
+ siblings: function(element) {
+ element = $(element);
+ return element.previousSiblings().reverse().concat(element.nextSiblings());
+ },
+
+ match: function(element, selector) {
+ if (Object.isString(selector))
+ selector = new Selector(selector);
+ return selector.match($(element));
+ },
- // set position
- if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
- if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
- if (options.setWidth) element.style.width = source.offsetWidth + 'px';
- if (options.setHeight) element.style.height = source.offsetHeight + 'px';
- return element;
- }
+ up: function(element, expression, index) {
+ element = $(element);
+ if (arguments.length == 1) return $(element.parentNode);
+ var ancestors = element.ancestors();
+ return Object.isNumber(expression) ? ancestors[expression]
+ : Selector.findElement(ancestors, expression, index);
+ },
+
+ down: function(element, expression, index) {
+ element = $(element);
+ if (arguments.length == 1) return element.firstDescendant();
+ return Object.isNumber(expression) ? element.descendants()[expression]
+ : Element.select(element, expression)[index || 0];
+ },
+
+ previous: function(element, expression, index) {
+ element = $(element);
+ if (arguments.length
+ == 1) return $(Selector.handlers.previousElementSibling(element));
+ var previousSiblings = element.previousSiblings();
+ return Object.isNumber(expression) ? previousSiblings[expression]
+ : Selector.findElement(previousSiblings, expression, index);
+ },
+
+ next: function(element, expression, index) {
+ element = $(element);
+ if (arguments.length
+ == 1) return $(Selector.handlers.nextElementSibling(element));
+ var nextSiblings = element.nextSiblings();
+ return Object.isNumber(expression) ? nextSiblings[expression]
+ : Selector.findElement(nextSiblings, expression, index);
+ },
+
+ select: function() {
+ var args = $A(arguments), element = $(args.shift());
+ return Selector.findChildElements(element, args);
+ },
+
+ adjacent: function() {
+ var args = $A(arguments), element = $(args.shift());
+ return Selector.findChildElements(element.parentNode, args).without(element);
+ },
+
+ identify: function(element) {
+ element = $(element);
+ var id = element.readAttribute('id'), self = arguments.callee;
+ if (id) return id;
+ do {
+ id = 'anonymous_element_' + self.counter++
+ } while ($(id));
+ element.writeAttribute('id', id);
+ return id;
+ },
+
+ readAttribute: function(element, name) {
+ element = $(element);
+ if (Prototype.Browser.IE) {
+ var t = Element._attributeTranslations.read;
+ if (t.values[name]) return t.values[name](element, name);
+ if (t.names[name]) name = t.names[name];
+ if (name.include(':')) {
+ return (!element.attributes || !element.attributes[name]) ? null
+ : element.attributes[name].value;
+ }
+ }
+ return element.getAttribute(name);
+ },
+
+ writeAttribute: function(element, name, value) {
+ element = $(element);
+ var attributes = { }, t = Element._attributeTranslations.write;
+
+ if (typeof name == 'object') attributes = name; else attributes[name]
+ = Object.isUndefined(value) ? true : value;
+
+ for (var attr in attributes) {
+ name = t.names[attr] || attr;
+ value = attributes[attr];
+ if (t.values[attr]) name = t.values[attr](element, value);
+ if (value === false || value === null)
+ element.removeAttribute(name); else if (value === true)
+ element.setAttribute(name, name); else element.setAttribute(name, value);
+ }
+ return element;
+ },
+
+ getHeight: function(element) {
+ return $(element).getDimensions().height;
+ },
+
+ getWidth: function(element) {
+ return $(element).getDimensions().width;
+ },
+
+ classNames: function(element) {
+ return new Element.ClassNames(element);
+ },
+
+ hasClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ var elementClassName = element.className;
+ return (elementClassName.length > 0 && (elementClassName == className
+ || new RegExp("(^|\\s)" + className
+ + "(\\s|$)").test(elementClassName)));
+ },
+
+ addClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ if (!element.hasClassName(className))
+ element.className += (element.className ? ' ' : '') + className;
+ return element;
+ },
+
+ removeClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ element.className = element.className.replace(new RegExp("(^|\\s+)"
+ + className + "(\\s+|$)"), ' ').strip();
+ return element;
+ },
+
+ toggleClassName: function(element, className) {
+ if (!(element = $(element))) return;
+ return element[element.hasClassName(className) ? 'removeClassName'
+ : 'addClassName'](className);
+ },
+
+ // removes whitespace-only text node children
+ cleanWhitespace: function(element) {
+ element = $(element);
+ var node = element.firstChild;
+ while (node) {
+ var nextNode = node.nextSibling;
+ if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+ element.removeChild(node);
+ node = nextNode;
+ }
+ return element;
+ },
+
+ empty: function(element) {
+ return $(element).innerHTML.blank();
+ },
+
+ descendantOf: function(element, ancestor) {
+ element = $(element),ancestor = $(ancestor);
+
+ if (element.compareDocumentPosition)
+ return (element.compareDocumentPosition(ancestor) & 8) === 8;
+
+ if (ancestor.contains)
+ return ancestor.contains(element) && ancestor !== element;
+
+ while (element = element.parentNode)
+ if (element == ancestor) return true;
+
+ return false;
+ },
+
+ scrollTo: function(element) {
+ element = $(element);
+ var pos = element.cumulativeOffset();
+ window.scrollTo(pos[0], pos[1]);
+ return element;
+ },
+
+ getStyle: function(element, style) {
+ element = $(element);
+ style = style == 'float' ? 'cssFloat' : style.camelize();
+ var value = element.style[style];
+ if (!value || value == 'auto') {
+ var css = document.defaultView.getComputedStyle(element, null);
+ value = css ? css[style] : null;
+ }
+ if (style == 'opacity') return value ? parseFloat(value) : 1.0;
+ return value == 'auto' ? null : value;
+ },
+
+ getOpacity: function(element) {
+ return $(element).getStyle('opacity');
+ },
+
+ setStyle: function(element, styles) {
+ element = $(element);
+ var elementStyle = element.style, match;
+ if (Object.isString(styles)) {
+ element.style.cssText += ';' + styles;
+ return styles.include('opacity')
+ ? element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1])
+ : element;
+ }
+ for (var property in styles)
+ if (property
+ == 'opacity') element.setOpacity(styles[property]); else
+ elementStyle[(property == 'float' || property == 'cssFloat')
+ ? (Object.isUndefined(elementStyle.styleFloat)
+ ? 'cssFloat' : 'styleFloat') : property]
+ = styles[property];
+
+ return element;
+ },
+
+ setOpacity: function(element, value) {
+ element = $(element);
+ element.style.opacity = (value == 1 || value === '') ? '' : (value
+ < 0.00001) ? 0 : value;
+ return element;
+ },
+
+ getDimensions: function(element) {
+ element = $(element);
+ var display = element.getStyle('display');
+ if (display != 'none' && display != null) // Safari bug
+ return {width: element.offsetWidth, height: element.offsetHeight};
+
+ // All *Width and *Height properties give 0 on elements with display none,
+ // so enable the element temporarily
+ var els = element.style;
+ var originalVisibility = els.visibility;
+ var originalPosition = els.position;
+ var originalDisplay = els.display;
+ els.visibility = 'hidden';
+ els.position = 'absolute';
+ els.display = 'block';
+ var originalWidth = element.clientWidth;
+ var originalHeight = element.clientHeight;
+ els.display = originalDisplay;
+ els.position = originalPosition;
+ els.visibility = originalVisibility;
+ return {width: originalWidth, height: originalHeight};
+ },
+
+ makePositioned: function(element) {
+ element = $(element);
+ var pos = Element.getStyle(element, 'position');
+ if (pos == 'static' || !pos) {
+ element._madePositioned = true;
+ element.style.position = 'relative';
+ // Opera returns the offset relative to the positioning context, when an
+ // element is position relative but top and left have not been defined
+ if (Prototype.Browser.Opera) {
+ element.style.top = 0;
+ element.style.left = 0;
+ }
+ }
+ return element;
+ },
+
+ undoPositioned: function(element) {
+ element = $(element);
+ if (element._madePositioned) {
+ element._madePositioned = undefined;
+ element.style.position = element.style.top = element.style.left
+ = element.style.bottom = element.style.right = '';
+ }
+ return element;
+ },
+
+ makeClipping: function(element) {
+ element = $(element);
+ if (element._overflow) return element;
+ element._overflow = Element.getStyle(element, 'overflow') || 'auto';
+ if (element._overflow !== 'hidden')
+ element.style.overflow = 'hidden';
+ return element;
+ },
+
+ undoClipping: function(element) {
+ element = $(element);
+ if (!element._overflow) return element;
+ element.style.overflow = element._overflow == 'auto' ? ''
+ : element._overflow;
+ element._overflow = null;
+ return element;
+ },
+
+ cumulativeOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ } while (element);
+ return Element._returnOffset(valueL, valueT);
+ },
+
+ positionedOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ element = element.offsetParent;
+ if (element) {
+ if (element.tagName.toUpperCase() == 'BODY') break;
+ var p = Element.getStyle(element, 'position');
+ if (p !== 'static') break;
+ }
+ } while (element);
+ return Element._returnOffset(valueL, valueT);
+ },
+
+ absolutize: function(element) {
+ element = $(element);
+ if (element.getStyle('position') == 'absolute') return element;
+ // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+ var offsets = element.positionedOffset();
+ var top = offsets[1];
+ var left = offsets[0];
+ var width = element.clientWidth;
+ var height = element.clientHeight;
+
+ element._originalLeft = left - parseFloat(element.style.left || 0);
+ element._originalTop = top - parseFloat(element.style.top || 0);
+ element._originalWidth = element.style.width;
+ element._originalHeight = element.style.height;
+
+ element.style.position = 'absolute';
+ element.style.top = top + 'px';
+ element.style.left = left + 'px';
+ element.style.width = width + 'px';
+ element.style.height = height + 'px';
+ return element;
+ },
+
+ relativize: function(element) {
+ element = $(element);
+ if (element.getStyle('position') == 'relative') return element;
+ // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+ element.style.position = 'relative';
+ var top = parseFloat(element.style.top || 0) - (element._originalTop
+ || 0);
+ var left = parseFloat(element.style.left || 0) - (element._originalLeft
+ || 0);
+
+ element.style.top = top + 'px';
+ element.style.left = left + 'px';
+ element.style.height = element._originalHeight;
+ element.style.width = element._originalWidth;
+ return element;
+ },
+
+ cumulativeScrollOffset: function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.scrollTop || 0;
+ valueL += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element);
+ return Element._returnOffset(valueL, valueT);
+ },
+
+ getOffsetParent: function(element) {
+ if (element.offsetParent) return $(element.offsetParent);
+ if (element == document.body) return $(element);
+
+ while ((element = element.parentNode) && element != document.body)
+ if (Element.getStyle(element, 'position') != 'static')
+ return $(element);
+
+ return $(document.body);
+ },
+
+ viewportOffset: function(forElement) {
+ var valueT = 0, valueL = 0;
+
+ var element = forElement;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+
+ // Safari fix
+ if (element.offsetParent == document.body
+ && Element.getStyle(element, 'position')
+ == 'absolute') break;
+
+ } while (element = element.offsetParent);
+
+ element = forElement;
+ do {
+ if (!Prototype.Browser.Opera || (element.tagName
+ && (element.tagName.toUpperCase() == 'BODY'))) {
+ valueT -= element.scrollTop || 0;
+ valueL -= element.scrollLeft || 0;
+ }
+ } while (element = element.parentNode);
+
+ return Element._returnOffset(valueL, valueT);
+ },
+
+ clonePosition: function(element, source) {
+ var options = Object.extend({
+ setLeft: true,
+ setTop: true,
+ setWidth: true,
+ setHeight: true,
+ offsetTop: 0,
+ offsetLeft: 0
+ }, arguments[2] || { });
+
+ // find page position of source
+ source = $(source);
+ var p = source.viewportOffset();
+
+ // find coordinate system to use
+ element = $(element);
+ var delta = [0, 0];
+ var parent = null;
+ // delta [0,0] will do fine with position: fixed elements,
+ // position:absolute needs offsetParent deltas
+ if (Element.getStyle(element, 'position') == 'absolute') {
+ parent = element.getOffsetParent();
+ delta = parent.viewportOffset();
+ }
+
+ // correct by body offsets (fixes Safari)
+ if (parent == document.body) {
+ delta[0] -= document.body.offsetLeft;
+ delta[1] -= document.body.offsetTop;
+ }
+
+ // set position
+ if (options.setLeft) element.style.left = (p[0] - delta[0]
+ + options.offsetLeft) + 'px';
+ if (options.setTop) element.style.top = (p[1] - delta[1]
+ + options.offsetTop) + 'px';
+ if (options.setWidth) element.style.width = source.offsetWidth + 'px';
+ if (options.setHeight) element.style.height = source.offsetHeight
+ + 'px';
+ return element;
+ }
};
Element.Methods.identify.counter = 1;
Object.extend(Element.Methods, {
- getElementsBySelector: Element.Methods.select,
- childElements: Element.Methods.immediateDescendants
+ getElementsBySelector: Element.Methods.select,
+ childElements: Element.Methods.immediateDescendants
});
Element._attributeTranslations = {
- write: {
- names: {
- className: 'class',
- htmlFor: 'for'
- },
- values: { }
- }
+ write: {
+ names: {
+ className: 'class',
+ htmlFor: 'for'
+ },
+ values: { }
+ }
};
if (Prototype.Browser.Opera) {
- Element.Methods.getStyle = Element.Methods.getStyle.wrap(
- function(proceed, element, style) {
- switch (style) {
- case 'left': case 'top': case 'right': case 'bottom':
- if (proceed(element, 'position') === 'static') return null;
- case 'height': case 'width':
- // returns '0px' for hidden elements; we want it to return null
- if (!Element.visible(element)) return null;
-
- // returns the border-box dimensions rather than the content-box
- // dimensions, so we subtract padding and borders from the value
- var dim = parseInt(proceed(element, style), 10);
-
- if (dim !== element['offset' + style.capitalize()])
- return dim + 'px';
-
- var properties;
- if (style === 'height') {
- properties = ['border-top-width', 'padding-top',
- 'padding-bottom', 'border-bottom-width'];
- }
- else {
- properties = ['border-left-width', 'padding-left',
- 'padding-right', 'border-right-width'];
- }
- return properties.inject(dim, function(memo, property) {
- var val = proceed(element, property);
- return val === null ? memo : memo - parseInt(val, 10);
- }) + 'px';
- default: return proceed(element, style);
- }
- }
- );
+ Element.Methods.getStyle = Element.Methods.getStyle.wrap(function(proceed,
+ element,
+ style) {
+ switch (style) {
+ case 'left': case 'top': case 'right': case 'bottom':
+ if (proceed(element, 'position') === 'static') return null;
+ case 'height': case 'width':
+ // returns '0px' for hidden elements; we want it to return null
+ if (!Element.visible(element)) return null;
+
+ // returns the border-box dimensions rather than the content-box
+ // dimensions, so we subtract padding and borders from the value
+ var dim = parseInt(proceed(element, style), 10);
+
+ if (dim !== element['offset' + style.capitalize()])
+ return dim + 'px';
+
+ var properties;
+ if (style === 'height') {
+ properties = ['border-top-width', 'padding-top',
+ 'padding-bottom', 'border-bottom-width'];
+ } else {
+ properties = ['border-left-width', 'padding-left',
+ 'padding-right', 'border-right-width'];
+ }
+ return properties.inject(dim, function(memo, property) {
+ var val = proceed(element, property);
+ return val === null ? memo : memo - parseInt(val, 10);
+ }) + 'px';
+ default: return proceed(element, style);
+ }
+ });
- Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
- function(proceed, element, attribute) {
- if (attribute === 'title') return element.title;
- return proceed(element, attribute);
- }
- );
+ Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(function(
+ proceed, element, attribute) {
+ if (attribute === 'title') return element.title;
+ return proceed(element, attribute);
+ });
}
else if (Prototype.Browser.IE) {
- // IE doesn't report offsets correctly for static elements, so we change them
- // to "relative" to get the values, then change them back.
- Element.Methods.getOffsetParent = Element.Methods.getOffsetParent.wrap(
- function(proceed, element) {
- element = $(element);
- // IE throws an error if element is not in document
- try { element.offsetParent }
- catch(e) { return $(document.body) }
- var position = element.getStyle('position');
- if (position !== 'static') return proceed(element);
- element.setStyle({ position: 'relative' });
- var value = proceed(element);
- element.setStyle({ position: position });
- return value;
- }
- );
-
- $w('positionedOffset viewportOffset').each(function(method) {
- Element.Methods[method] = Element.Methods[method].wrap(
- function(proceed, element) {
+ // IE doesn't report offsets correctly for static elements, so we change them
+ // to "relative" to get the values, then change them back.
+ Element.Methods.getOffsetParent
+ = Element.Methods.getOffsetParent.wrap(function(proceed, element) {
element = $(element);
- try { element.offsetParent }
- catch(e) { return Element._returnOffset(0,0) }
+ // IE throws an error if element is not in document
+ try {
+ element.offsetParent
+ } catch(e) {
+ return $(document.body)
+ }
var position = element.getStyle('position');
if (position !== 'static') return proceed(element);
- // Trigger hasLayout on the offset parent so that IE6 reports
- // accurate offsetTop and offsetLeft values for position: fixed.
- var offsetParent = element.getOffsetParent();
- if (offsetParent && offsetParent.getStyle('position') === 'fixed')
- offsetParent.setStyle({ zoom: 1 });
element.setStyle({ position: 'relative' });
var value = proceed(element);
element.setStyle({ position: position });
return value;
- }
- );
- });
-
- Element.Methods.cumulativeOffset = Element.Methods.cumulativeOffset.wrap(
- function(proceed, element) {
- try { element.offsetParent }
- catch(e) { return Element._returnOffset(0,0) }
- return proceed(element);
- }
- );
-
- Element.Methods.getStyle = function(element, style) {
- element = $(element);
- style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
- var value = element.style[style];
- if (!value && element.currentStyle) value = element.currentStyle[style];
-
- if (style == 'opacity') {
- if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
- if (value[1]) return parseFloat(value[1]) / 100;
- return 1.0;
- }
+ });
- if (value == 'auto') {
- if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
- return element['offset' + style.capitalize()] + 'px';
- return null;
- }
- return value;
- };
+ $w('positionedOffset viewportOffset').each(function(method) {
+ Element.Methods[method] = Element.Methods[method].wrap(function(proceed,
+ element) {
+ element = $(element);
+ try {
+ element.offsetParent
+ } catch(e) {
+ return Element._returnOffset(0, 0)
+ }
+ var position = element.getStyle('position');
+ if (position !== 'static') return proceed(element);
+ // Trigger hasLayout on the offset parent so that IE6 reports
+ // accurate offsetTop and offsetLeft values for position: fixed.
+ var offsetParent = element.getOffsetParent();
+ if (offsetParent && offsetParent.getStyle('position') === 'fixed')
+ offsetParent.setStyle({ zoom: 1 });
+ element.setStyle({ position: 'relative' });
+ var value = proceed(element);
+ element.setStyle({ position: position });
+ return value;
+ });
+ });
- Element.Methods.setOpacity = function(element, value) {
- function stripAlpha(filter){
- return filter.replace(/alpha\([^\)]*\)/gi,'');
- }
- element = $(element);
- var currentStyle = element.currentStyle;
- if ((currentStyle && !currentStyle.hasLayout) ||
- (!currentStyle && element.style.zoom == 'normal'))
- element.style.zoom = 1;
-
- var filter = element.getStyle('filter'), style = element.style;
- if (value == 1 || value === '') {
- (filter = stripAlpha(filter)) ?
- style.filter = filter : style.removeAttribute('filter');
- return element;
- } else if (value < 0.00001) value = 0;
- style.filter = stripAlpha(filter) +
- 'alpha(opacity=' + (value * 100) + ')';
- return element;
- };
-
- Element._attributeTranslations = {
- read: {
- names: {
- 'class': 'className',
- 'for': 'htmlFor'
- },
- values: {
- _getAttr: function(element, attribute) {
- return element.getAttribute(attribute, 2);
- },
- _getAttrNode: function(element, attribute) {
- var node = element.getAttributeNode(attribute);
- return node ? node.value : "";
- },
- _getEv: function(element, attribute) {
- attribute = element.getAttribute(attribute);
- return attribute ? attribute.toString().slice(23, -2) : null;
- },
- _flag: function(element, attribute) {
- return $(element).hasAttribute(attribute) ? attribute : null;
- },
- style: function(element) {
- return element.style.cssText.toLowerCase();
- },
- title: function(element) {
- return element.title;
+ Element.Methods.cumulativeOffset
+ = Element.Methods.cumulativeOffset.wrap(function(proceed, element) {
+ try {
+ element.offsetParent
+ } catch(e) {
+ return Element._returnOffset(0, 0)
}
- }
- }
- };
-
- Element._attributeTranslations.write = {
- names: Object.extend({
- cellpadding: 'cellPadding',
- cellspacing: 'cellSpacing'
- }, Element._attributeTranslations.read.names),
- values: {
- checked: function(element, value) {
- element.checked = !!value;
- },
-
- style: function(element, value) {
- element.style.cssText = value ? value : '';
- }
- }
- };
-
- Element._attributeTranslations.has = {};
-
- $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
- 'encType maxLength readOnly longDesc frameBorder').each(function(attr) {
- Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
- Element._attributeTranslations.has[attr.toLowerCase()] = attr;
- });
-
- (function(v) {
- Object.extend(v, {
- href: v._getAttr,
- src: v._getAttr,
- type: v._getAttr,
- action: v._getAttrNode,
- disabled: v._flag,
- checked: v._flag,
- readonly: v._flag,
- multiple: v._flag,
- onload: v._getEv,
- onunload: v._getEv,
- onclick: v._getEv,
- ondblclick: v._getEv,
- onmousedown: v._getEv,
- onmouseup: v._getEv,
- onmouseover: v._getEv,
- onmousemove: v._getEv,
- onmouseout: v._getEv,
- onfocus: v._getEv,
- onblur: v._getEv,
- onkeypress: v._getEv,
- onkeydown: v._getEv,
- onkeyup: v._getEv,
- onsubmit: v._getEv,
- onreset: v._getEv,
- onselect: v._getEv,
- onchange: v._getEv
+ return proceed(element);
});
- })(Element._attributeTranslations.read.values);
+
+ Element.Methods.getStyle = function(element, style) {
+ element = $(element);
+ style = (style == 'float' || style == 'cssFloat') ? 'styleFloat'
+ : style.camelize();
+ var value = element.style[style];
+ if (!value && element.currentStyle) value = element.currentStyle[style];
+
+ if (style == 'opacity') {
+ if (value = (element.getStyle('filter')
+ || '').match(/alpha\(opacity=(.*)\)/))
+ if (value[1]) return parseFloat(value[1]) / 100;
+ return 1.0;
+ }
+
+ if (value == 'auto') {
+ if ((style == 'width' || style == 'height')
+ && (element.getStyle('display') != 'none'))
+ return element['offset' + style.capitalize()] + 'px';
+ return null;
+ }
+ return value;
+ };
+
+ Element.Methods.setOpacity = function(element, value) {
+ function stripAlpha(filter) {
+ return filter.replace(/alpha\([^\)]*\)/gi, '');
+ }
+
+ element = $(element);
+ var currentStyle = element.currentStyle;
+ if ((currentStyle && !currentStyle.hasLayout) || (!currentStyle
+ && element.style.zoom == 'normal'))
+ element.style.zoom = 1;
+
+ var filter = element.getStyle('filter'), style = element.style;
+ if (value == 1 || value === '') {
+ (filter = stripAlpha(filter)) ? style.filter = filter
+ : style.removeAttribute('filter');
+ return element;
+ } else if (value < 0.00001) value = 0;
+ style.filter = stripAlpha(filter) + 'alpha(opacity=' + (value * 100)
+ + ')';
+ return element;
+ };
+
+ Element._attributeTranslations = {
+ read: {
+ names: {
+ 'class': 'className',
+ 'for': 'htmlFor'
+ },
+ values: {
+ _getAttr: function(element, attribute) {
+ return element.getAttribute(attribute, 2);
+ },
+ _getAttrNode: function(element, attribute) {
+ var node = element.getAttributeNode(attribute);
+ return node ? node.value : "";
+ },
+ _getEv: function(element, attribute) {
+ attribute = element.getAttribute(attribute);
+ return attribute ? attribute.toString().slice(23, -2)
+ : null;
+ },
+ _flag: function(element, attribute) {
+ return $(element).hasAttribute(attribute) ? attribute
+ : null;
+ },
+ style: function(element) {
+ return element.style.cssText.toLowerCase();
+ },
+ title: function(element) {
+ return element.title;
+ }
+ }
+ }
+ };
+
+ Element._attributeTranslations.write = {
+ names: Object.extend({
+ cellpadding: 'cellPadding',
+ cellspacing: 'cellSpacing'
+ }, Element._attributeTranslations.read.names),
+ values: {
+ checked: function(element, value) {
+ element.checked = !!value;
+ },
+
+ style: function(element, value) {
+ element.style.cssText = value ? value : '';
+ }
+ }
+ };
+
+ Element._attributeTranslations.has = {};
+
+ $w('colSpan rowSpan vAlign dateTime accessKey tabIndex '
+ + 'encType maxLength readOnly longDesc frameBorder').each(function(
+ attr) {
+ Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
+ Element._attributeTranslations.has[attr.toLowerCase()] = attr;
+ });
+
+ (function(v) {
+ Object.extend(v, {
+ href: v._getAttr,
+ src: v._getAttr,
+ type: v._getAttr,
+ action: v._getAttrNode,
+ disabled: v._flag,
+ checked: v._flag,
+ readonly: v._flag,
+ multiple: v._flag,
+ onload: v._getEv,
+ onunload: v._getEv,
+ onclick: v._getEv,
+ ondblclick: v._getEv,
+ onmousedown: v._getEv,
+ onmouseup: v._getEv,
+ onmouseover: v._getEv,
+ onmousemove: v._getEv,
+ onmouseout: v._getEv,
+ onfocus: v._getEv,
+ onblur: v._getEv,
+ onkeypress: v._getEv,
+ onkeydown: v._getEv,
+ onkeyup: v._getEv,
+ onsubmit: v._getEv,
+ onreset: v._getEv,
+ onselect: v._getEv,
+ onchange: v._getEv
+ });
+ })(Element._attributeTranslations.read.values);
}
else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1) ? 0.999999 :
- (value === '') ? '' : (value < 0.00001) ? 0 : value;
- return element;
- };
-}
+ Element.Methods.setOpacity = function(element, value) {
+ element = $(element);
+ element.style.opacity = (value == 1) ? 0.999999 : (value === '')
+ ? '' : (value < 0.00001) ? 0 : value;
+ return element;
+ };
+ }
-else if (Prototype.Browser.WebKit) {
- Element.Methods.setOpacity = function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
-
- if (value == 1)
- if(element.tagName.toUpperCase() == 'IMG' && element.width) {
- element.width++; element.width--;
- } else try {
- var n = document.createTextNode(' ');
- element.appendChild(n);
- element.removeChild(n);
- } catch (e) { }
-
- return element;
- };
-
- // Safari returns margins on body which is incorrect if the child is absolutely
- // positioned. For performance reasons, redefine Element#cumulativeOffset for
- // KHTML/WebKit only.
- Element.Methods.cumulativeOffset = function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- if (element.offsetParent == document.body)
- if (Element.getStyle(element, 'position') == 'absolute') break;
-
- element = element.offsetParent;
- } while (element);
-
- return Element._returnOffset(valueL, valueT);
- };
-}
+ else if (Prototype.Browser.WebKit) {
+ Element.Methods.setOpacity = function(element, value) {
+ element = $(element);
+ element.style.opacity = (value == 1 || value === '') ? ''
+ : (value < 0.00001) ? 0 : value;
+
+ if (value == 1)
+ if (element.tagName.toUpperCase() == 'IMG'
+ && element.width) {
+ element.width++;
+ element.width--;
+ } else try {
+ var n = document.createTextNode(' ');
+ element.appendChild(n);
+ element.removeChild(n);
+ } catch (e) {
+ }
+
+ return element;
+ };
+
+ // Safari returns margins on body which is incorrect if the child is absolutely
+ // positioned. For performance reasons, redefine Element#cumulativeOffset for
+ // KHTML/WebKit only.
+ Element.Methods.cumulativeOffset = function(element) {
+ var valueT = 0, valueL = 0;
+ do {
+ valueT += element.offsetTop || 0;
+ valueL += element.offsetLeft || 0;
+ if (element.offsetParent == document.body)
+ if (Element.getStyle(element, 'position')
+ == 'absolute') break;
+
+ element = element.offsetParent;
+ } while (element);
+
+ return Element._returnOffset(valueL, valueT);
+ };
+ }
if (Prototype.Browser.IE || Prototype.Browser.Opera) {
- // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
- Element.Methods.update = function(element, content) {
- element = $(element);
+ // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
+ Element.Methods.update = function(element, content) {
+ element = $(element);
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
+ if (content && content.toElement) content = content.toElement();
+ if (Object.isElement(content)) return element.update().insert(content);
- content = Object.toHTML(content);
- var tagName = element.tagName.toUpperCase();
+ content = Object.toHTML(content);
+ var tagName = element.tagName.toUpperCase();
- if (tagName in Element._insertionTranslations.tags) {
- $A(element.childNodes).each(function(node) { element.removeChild(node) });
- Element._getContentFromAnonymousElement(tagName, content.stripScripts())
- .each(function(node) { element.appendChild(node) });
- }
- else element.innerHTML = content.stripScripts();
+ if (tagName in Element._insertionTranslations.tags) {
+ $A(element.childNodes).each(function(node) {
+ element.removeChild(node)
+ });
+ Element._getContentFromAnonymousElement(tagName, content.stripScripts()).each(function(
+ node) {
+ element.appendChild(node)
+ });
+ } else element.innerHTML = content.stripScripts();
- content.evalScripts.bind(content).defer();
- return element;
- };
+ content.evalScripts.bind(content).defer();
+ return element;
+ };
}
if ('outerHTML' in document.createElement('div')) {
- Element.Methods.replace = function(element, content) {
- element = $(element);
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- element.parentNode.replaceChild(content, element);
- return element;
- }
+ Element.Methods.replace = function(element, content) {
+ element = $(element);
- content = Object.toHTML(content);
- var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
-
- if (Element._insertionTranslations.tags[tagName]) {
- var nextSibling = element.next();
- var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
- parent.removeChild(element);
- if (nextSibling)
- fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
- else
- fragments.each(function(node) { parent.appendChild(node) });
- }
- else element.outerHTML = content.stripScripts();
+ if (content && content.toElement) content = content.toElement();
+ if (Object.isElement(content)) {
+ element.parentNode.replaceChild(content, element);
+ return element;
+ }
- content.evalScripts.bind(content).defer();
- return element;
- };
+ content = Object.toHTML(content);
+ var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
+
+ if (Element._insertionTranslations.tags[tagName]) {
+ var nextSibling = element.next();
+ var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+ parent.removeChild(element);
+ if (nextSibling)
+ fragments.each(function(node) {
+ parent.insertBefore(node, nextSibling)
+ }); else
+ fragments.each(function(node) {
+ parent.appendChild(node)
+ });
+ } else element.outerHTML = content.stripScripts();
+
+ content.evalScripts.bind(content).defer();
+ return element;
+ };
}
Element._returnOffset = function(l, t) {
- var result = [l, t];
- result.left = l;
- result.top = t;
- return result;
+ var result = [l, t];
+ result.left = l;
+ result.top = t;
+ return result;
};
Element._getContentFromAnonymousElement = function(tagName, html) {
- var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
- if (t) {
- div.innerHTML = t[0] + html + t[1];
- t[2].times(function() { div = div.firstChild });
- } else div.innerHTML = html;
- return $A(div.childNodes);
+ var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
+ if (t) {
+ div.innerHTML = t[0] + html + t[1];
+ t[2].times(function() {
+ div = div.firstChild
+ });
+ } else div.innerHTML = html;
+ return $A(div.childNodes);
};
Element._insertionTranslations = {
- before: function(element, node) {
- element.parentNode.insertBefore(node, element);
- },
- top: function(element, node) {
- element.insertBefore(node, element.firstChild);
- },
- bottom: function(element, node) {
- element.appendChild(node);
- },
- after: function(element, node) {
- element.parentNode.insertBefore(node, element.nextSibling);
- },
- tags: {
- TABLE: ['<table>', '</table>', 1],
- TBODY: ['<table><tbody>', '</tbody></table>', 2],
- TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],
- TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
- SELECT: ['<select>', '</select>', 1]
- }
+ before: function(element, node) {
+ element.parentNode.insertBefore(node, element);
+ },
+ top: function(element, node) {
+ element.insertBefore(node, element.firstChild);
+ },
+ bottom: function(element, node) {
+ element.appendChild(node);
+ },
+ after: function(element, node) {
+ element.parentNode.insertBefore(node, element.nextSibling);
+ },
+ tags: {
+ TABLE: ['<table>', '</table>', 1],
+ TBODY: ['<table><tbody>', '</tbody></table>', 2],
+ TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],
+ TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
+ SELECT: ['<select>', '</select>', 1]
+ }
};
(function() {
- Object.extend(this.tags, {
- THEAD: this.tags.TBODY,
- TFOOT: this.tags.TBODY,
- TH: this.tags.TD
- });
+ Object.extend(this.tags, {
+ THEAD: this.tags.TBODY,
+ TFOOT: this.tags.TBODY,
+ TH: this.tags.TD
+ });
}).call(Element._insertionTranslations);
Element.Methods.Simulated = {
- hasAttribute: function(element, attribute) {
- attribute = Element._attributeTranslations.has[attribute] || attribute;
- var node = $(element).getAttributeNode(attribute);
- return !!(node && node.specified);
- }
+ hasAttribute: function(element, attribute) {
+ attribute = Element._attributeTranslations.has[attribute] || attribute;
+ var node = $(element).getAttributeNode(attribute);
+ return !!(node && node.specified);
+ }
};
Element.Methods.ByTag = { };
Object.extend(Element, Element.Methods);
-if (!Prototype.BrowserFeatures.ElementExtensions &&
- document.createElement('div')['__proto__']) {
- window.HTMLElement = { };
- window.HTMLElement.prototype = document.createElement('div')['__proto__'];
- Prototype.BrowserFeatures.ElementExtensions = true;
+if (!Prototype.BrowserFeatures.ElementExtensions
+ && document.createElement('div')['__proto__']) {
+ window.HTMLElement = { };
+ window.HTMLElement.prototype = document.createElement('div')['__proto__'];
+ Prototype.BrowserFeatures.ElementExtensions = true;
}
Element.extend = (function() {
- if (Prototype.BrowserFeatures.SpecificElementExtensions)
- return Prototype.K;
+ if (Prototype.BrowserFeatures.SpecificElementExtensions)
+ return Prototype.K;
- var Methods = { }, ByTag = Element.Methods.ByTag;
+ var Methods = { }, ByTag = Element.Methods.ByTag;
- var extend = Object.extend(function(element) {
- if (!element || element._extendedByPrototype ||
- element.nodeType != 1 || element == window) return element;
+ var extend = Object.extend(function(element) {
+ if (!element || element._extendedByPrototype || element.nodeType != 1
+ || element == window) return element;
- var methods = Object.clone(Methods),
- tagName = element.tagName.toUpperCase(), property, value;
+ var methods = Object.clone(Methods),
+ tagName = element.tagName.toUpperCase(), property, value;
- // extend methods for specific tags
- if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
+ // extend methods for specific tags
+ if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
- for (property in methods) {
- value = methods[property];
- if (Object.isFunction(value) && !(property in element))
- element[property] = value.methodize();
- }
+ for (property in methods) {
+ value = methods[property];
+ if (Object.isFunction(value) && !(property in element))
+ element[property] = value.methodize();
+ }
- element._extendedByPrototype = Prototype.emptyFunction;
- return element;
+ element._extendedByPrototype = Prototype.emptyFunction;
+ return element;
- }, {
- refresh: function() {
- // extend methods for all tags (Safari doesn't need this)
- if (!Prototype.BrowserFeatures.ElementExtensions) {
- Object.extend(Methods, Element.Methods);
- Object.extend(Methods, Element.Methods.Simulated);
- }
- }
- });
+ }, {
+ refresh: function() {
+ // extend methods for all tags (Safari doesn't need this)
+ if (!Prototype.BrowserFeatures.ElementExtensions) {
+ Object.extend(Methods, Element.Methods);
+ Object.extend(Methods, Element.Methods.Simulated);
+ }
+ }
+ });
- extend.refresh();
- return extend;
+ extend.refresh();
+ return extend;
})();
Element.hasAttribute = function(element, attribute) {
- if (element.hasAttribute) return element.hasAttribute(attribute);
- return Element.Methods.Simulated.hasAttribute(element, attribute);
+ if (element.hasAttribute) return element.hasAttribute(attribute);
+ return Element.Methods.Simulated.hasAttribute(element, attribute);
};
Element.addMethods = function(methods) {
- var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
-
- if (!methods) {
- Object.extend(Form, Form.Methods);
- Object.extend(Form.Element, Form.Element.Methods);
- Object.extend(Element.Methods.ByTag, {
- "FORM": Object.clone(Form.Methods),
- "INPUT": Object.clone(Form.Element.Methods),
- "SELECT": Object.clone(Form.Element.Methods),
- "TEXTAREA": Object.clone(Form.Element.Methods)
- });
- }
-
- if (arguments.length == 2) {
- var tagName = methods;
- methods = arguments[1];
- }
-
- if (!tagName) Object.extend(Element.Methods, methods || { });
- else {
- if (Object.isArray(tagName)) tagName.each(extend);
- else extend(tagName);
- }
-
- function extend(tagName) {
- tagName = tagName.toUpperCase();
- if (!Element.Methods.ByTag[tagName])
- Element.Methods.ByTag[tagName] = { };
- Object.extend(Element.Methods.ByTag[tagName], methods);
- }
-
- function copy(methods, destination, onlyIfAbsent) {
- onlyIfAbsent = onlyIfAbsent || false;
- for (var property in methods) {
- var value = methods[property];
- if (!Object.isFunction(value)) continue;
- if (!onlyIfAbsent || !(property in destination))
- destination[property] = value.methodize();
+ var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
+
+ if (!methods) {
+ Object.extend(Form, Form.Methods);
+ Object.extend(Form.Element, Form.Element.Methods);
+ Object.extend(Element.Methods.ByTag, {
+ "FORM": Object.clone(Form.Methods),
+ "INPUT": Object.clone(Form.Element.Methods),
+ "SELECT": Object.clone(Form.Element.Methods),
+ "TEXTAREA": Object.clone(Form.Element.Methods)
+ });
}
- }
-
- function findDOMClass(tagName) {
- var klass;
- var trans = {
- "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
- "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
- "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
- "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
- "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
- "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
- "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
- "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
- "FrameSet", "IFRAME": "IFrame"
- };
- if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName + 'Element';
- if (window[klass]) return window[klass];
- klass = 'HTML' + tagName.capitalize() + 'Element';
- if (window[klass]) return window[klass];
-
- window[klass] = { };
- window[klass].prototype = document.createElement(tagName)['__proto__'];
- return window[klass];
- }
-
- if (F.ElementExtensions) {
- copy(Element.Methods, HTMLElement.prototype);
- copy(Element.Methods.Simulated, HTMLElement.prototype, true);
- }
-
- if (F.SpecificElementExtensions) {
- for (var tag in Element.Methods.ByTag) {
- var klass = findDOMClass(tag);
- if (Object.isUndefined(klass)) continue;
- copy(T[tag], klass.prototype);
+
+ if (arguments.length == 2) {
+ var tagName = methods;
+ methods = arguments[1];
}
- }
- Object.extend(Element, Element.Methods);
- delete Element.ByTag;
+ if (!tagName) Object.extend(Element.Methods, methods || { }); else {
+ if (Object.isArray(tagName)) tagName.each(extend); else extend(tagName);
+ }
+
+ function extend(tagName) {
+ tagName = tagName.toUpperCase();
+ if (!Element.Methods.ByTag[tagName])
+ Element.Methods.ByTag[tagName] = { };
+ Object.extend(Element.Methods.ByTag[tagName], methods);
+ }
- if (Element.extend.refresh) Element.extend.refresh();
- Element.cache = { };
+ function copy(methods, destination, onlyIfAbsent) {
+ onlyIfAbsent = onlyIfAbsent || false;
+ for (var property in methods) {
+ var value = methods[property];
+ if (!Object.isFunction(value)) continue;
+ if (!onlyIfAbsent || !(property in destination))
+ destination[property] = value.methodize();
+ }
+ }
+
+ function findDOMClass(tagName) {
+ var klass;
+ var trans = {
+ "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
+ "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
+ "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
+ "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
+ "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
+ "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
+ "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
+ "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
+ "FrameSet", "IFRAME": "IFrame"
+ };
+ if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
+ if (window[klass]) return window[klass];
+ klass = 'HTML' + tagName + 'Element';
+ if (window[klass]) return window[klass];
+ klass = 'HTML' + tagName.capitalize() + 'Element';
+ if (window[klass]) return window[klass];
+
+ window[klass] = { };
+ window[klass].prototype = document.createElement(tagName)['__proto__'];
+ return window[klass];
+ }
+
+ if (F.ElementExtensions) {
+ copy(Element.Methods, HTMLElement.prototype);
+ copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+ }
+
+ if (F.SpecificElementExtensions) {
+ for (var tag in Element.Methods.ByTag) {
+ var klass = findDOMClass(tag);
+ if (Object.isUndefined(klass)) continue;
+ copy(T[tag], klass.prototype);
+ }
+ }
+
+ Object.extend(Element, Element.Methods);
+ delete Element.ByTag;
+
+ if (Element.extend.refresh) Element.extend.refresh();
+ Element.cache = { };
};
document.viewport = {
- getDimensions: function() {
- var dimensions = { }, B = Prototype.Browser;
- $w('width height').each(function(d) {
- var D = d.capitalize();
- if (B.WebKit && !document.evaluate) {
- // Safari <3.0 needs self.innerWidth/Height
- dimensions[d] = self['inner' + D];
- } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
- // Opera <9.5 needs document.body.clientWidth/Height
- dimensions[d] = document.body['client' + D]
- } else {
- dimensions[d] = document.documentElement['client' + D];
- }
- });
- return dimensions;
- },
-
- getWidth: function() {
- return this.getDimensions().width;
- },
-
- getHeight: function() {
- return this.getDimensions().height;
- },
-
- getScrollOffsets: function() {
- return Element._returnOffset(
- window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
- window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
- }
+ getDimensions: function() {
+ var dimensions = { }, B = Prototype.Browser;
+ $w('width height').each(function(d) {
+ var D = d.capitalize();
+ if (B.WebKit && !document.evaluate) {
+ // Safari <3.0 needs self.innerWidth/Height
+ dimensions[d] = self['inner' + D];
+ } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {
+ // Opera <9.5 needs document.body.clientWidth/Height
+ dimensions[d] = document.body['client' + D]
+ } else {
+ dimensions[d] = document.documentElement['client' + D];
+ }
+ });
+ return dimensions;
+ },
+
+ getWidth: function() {
+ return this.getDimensions().width;
+ },
+
+ getHeight: function() {
+ return this.getDimensions().height;
+ },
+
+ getScrollOffsets: function() {
+ return Element._returnOffset(window.pageXOffset
+ || document.documentElement.scrollLeft
+ || document.body.scrollLeft, window.pageYOffset
+ || document.documentElement.scrollTop
+ || document.body.scrollTop);
+ }
};
/* Portions of the Selector class are derived from Jack Slocum's DomQuery,
* part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
* license. Please see http://www.yui-ext.com/ for more information. */
var Selector = Class.create({
- initialize: function(expression) {
- this.expression = expression.strip();
-
- if (this.shouldUseSelectorsAPI()) {
- this.mode = 'selectorsAPI';
- } else if (this.shouldUseXPath()) {
- this.mode = 'xpath';
- this.compileXPathMatcher();
- } else {
- this.mode = "normal";
- this.compileMatcher();
- }
-
- },
+ initialize: function(expression) {
+ this.expression = expression.strip();
+
+ if (this.shouldUseSelectorsAPI()) {
+ this.mode = 'selectorsAPI';
+ } else if (this.shouldUseXPath()) {
+ this.mode = 'xpath';
+ this.compileXPathMatcher();
+ } else {
+ this.mode = "normal";
+ this.compileMatcher();
+ }
- shouldUseXPath: function() {
- if (!Prototype.BrowserFeatures.XPath) return false;
+ },
- var e = this.expression;
+ shouldUseXPath: function() {
+ if (!Prototype.BrowserFeatures.XPath) return false;
- // Safari 3 chokes on :*-of-type and :empty
- if (Prototype.Browser.WebKit &&
- (e.include("-of-type") || e.include(":empty")))
- return false;
+ var e = this.expression;
- // XPath can't do namespaced attributes, nor can it read
- // the "checked" property from DOM nodes
- if ((/(\[[\w-]*?:|:checked)/).test(e))
- return false;
+ // Safari 3 chokes on :*-of-type and :empty
+ if (Prototype.Browser.WebKit && (e.include("-of-type")
+ || e.include(":empty")))
+ return false;
- return true;
- },
+ // XPath can't do namespaced attributes, nor can it read
+ // the "checked" property from DOM nodes
+ if ((/(\[[\w-]*?:|:checked)/).test(e))
+ return false;
- shouldUseSelectorsAPI: function() {
- if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
+ return true;
+ },
- if (!Selector._div) Selector._div = new Element('div');
+ shouldUseSelectorsAPI: function() {
+ if (!Prototype.BrowserFeatures.SelectorsAPI) return false;
- // Make sure the browser treats the selector as valid. Test on an
- // isolated element to minimize cost of this check.
- try {
- Selector._div.querySelector(this.expression);
- } catch(e) {
- return false;
- }
+ if (!Selector._div) Selector._div = new Element('div');
- return true;
- },
+ // Make sure the browser treats the selector as valid. Test on an
+ // isolated element to minimize cost of this check.
+ try {
+ Selector._div.querySelector(this.expression);
+ } catch(e) {
+ return false;
+ }
- compileMatcher: function() {
- var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
- c = Selector.criteria, le, p, m;
+ return true;
+ },
- if (Selector._cache[e]) {
- this.matcher = Selector._cache[e];
- return;
- }
+ compileMatcher: function() {
+ var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
+ c = Selector.criteria, le, p, m;
- this.matcher = ["this.matcher = function(root) {",
- "var r = root, h = Selector.handlers, c = false, n;"];
-
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
- new Template(c[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
+ if (Selector._cache[e]) {
+ this.matcher = Selector._cache[e];
+ return;
}
- }
- }
- this.matcher.push("return h.unique(n);\n}");
- eval(this.matcher.join('\n'));
- Selector._cache[this.expression] = this.matcher;
- },
+ this.matcher = ["this.matcher = function(root) {",
+ "var r = root, h = Selector.handlers, c = false, n;"];
+
+ while (e && le != e && (/\S/).test(e)) {
+ le = e;
+ for (var i in ps) {
+ p = ps[i];
+ if (m = e.match(p)) {
+ this.matcher.push(Object.isFunction(c[i]) ? c[i](m)
+ : new Template(c[i]).evaluate(m));
+ e = e.replace(m[0], '');
+ break;
+ }
+ }
+ }
- compileXPathMatcher: function() {
- var e = this.expression, ps = Selector.patterns,
- x = Selector.xpath, le, m;
+ this.matcher.push("return h.unique(n);\n}");
+ eval(this.matcher.join('\n'));
+ Selector._cache[this.expression] = this.matcher;
+ },
- if (Selector._cache[e]) {
- this.xpath = Selector._cache[e]; return;
- }
+ compileXPathMatcher: function() {
+ var e = this.expression, ps = Selector.patterns,
+ x = Selector.xpath, le, m;
- this.matcher = ['.//*'];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- if (m = e.match(ps[i])) {
- this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
- new Template(x[i]).evaluate(m));
- e = e.replace(m[0], '');
- break;
+ if (Selector._cache[e]) {
+ this.xpath = Selector._cache[e];
+ return;
}
- }
- }
- this.xpath = this.matcher.join('');
- Selector._cache[this.expression] = this.xpath;
- },
-
- findElements: function(root) {
- root = root || document;
- var e = this.expression, results;
-
- switch (this.mode) {
- case 'selectorsAPI':
- // querySelectorAll queries document-wide, then filters to descendants
- // of the context element. That's not what we want.
- // Add an explicit context to the selector if necessary.
- if (root !== document) {
- var oldId = root.id, id = $(root).identify();
- e = "#" + id + " " + e;
+ this.matcher = ['.//*'];
+ while (e && le != e && (/\S/).test(e)) {
+ le = e;
+ for (var i in ps) {
+ if (m = e.match(ps[i])) {
+ this.matcher.push(Object.isFunction(x[i]) ? x[i](m)
+ : new Template(x[i]).evaluate(m));
+ e = e.replace(m[0], '');
+ break;
+ }
+ }
}
- results = $A(root.querySelectorAll(e)).map(Element.extend);
- root.id = oldId;
+ this.xpath = this.matcher.join('');
+ Selector._cache[this.expression] = this.xpath;
+ },
- return results;
- case 'xpath':
- return document._getElementsByXPath(this.xpath, root);
- default:
- return this.matcher(root);
- }
- },
-
- match: function(element) {
- this.tokens = [];
-
- var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
- var le, p, m;
-
- while (e && le !== e && (/\S/).test(e)) {
- le = e;
- for (var i in ps) {
- p = ps[i];
- if (m = e.match(p)) {
- // use the Selector.assertions methods unless the selector
- // is too complex.
- if (as[i]) {
- this.tokens.push([i, Object.clone(m)]);
- e = e.replace(m[0], '');
- } else {
- // reluctantly do a document-wide search
- // and look for a match in the array
- return this.findElements(document).include(element);
- }
+ findElements: function(root) {
+ root = root || document;
+ var e = this.expression, results;
+
+ switch (this.mode) {
+ case 'selectorsAPI':
+ // querySelectorAll queries document-wide, then filters to descendants
+ // of the context element. That's not what we want.
+ // Add an explicit context to the selector if necessary.
+ if (root !== document) {
+ var oldId = root.id, id = $(root).identify();
+ e = "#" + id + " " + e;
+ }
+
+ results = $A(root.querySelectorAll(e)).map(Element.extend);
+ root.id = oldId;
+
+ return results;
+ case 'xpath':
+ return document._getElementsByXPath(this.xpath, root);
+ default:
+ return this.matcher(root);
}
- }
- }
+ },
- var match = true, name, matches;
- for (var i = 0, token; token = this.tokens[i]; i++) {
- name = token[0], matches = token[1];
- if (!Selector.assertions[name](element, matches)) {
- match = false; break;
- }
- }
+ match: function(element) {
+ this.tokens = [];
+
+ var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
+ var le, p, m;
+
+ while (e && le !== e && (/\S/).test(e)) {
+ le = e;
+ for (var i in ps) {
+ p = ps[i];
+ if (m = e.match(p)) {
+ // use the Selector.assertions methods unless the selector
+ // is too complex.
+ if (as[i]) {
+ this.tokens.push([i, Object.clone(m)]);
+ e = e.replace(m[0], '');
+ } else {
+ // reluctantly do a document-wide search
+ // and look for a match in the array
+ return this.findElements(document).include(element);
+ }
+ }
+ }
+ }
- return match;
- },
+ var match = true, name, matches;
+ for (var i = 0, token; token = this.tokens[i]; i++) {
+ name = token[0],matches = token[1];
+ if (!Selector.assertions[name](element, matches)) {
+ match = false;
+ break;
+ }
+ }
- toString: function() {
- return this.expression;
- },
+ return match;
+ },
+
+ toString: function() {
+ return this.expression;
+ },
- inspect: function() {
- return "#<Selector:" + this.expression.inspect() + ">";
- }
+ inspect: function() {
+ return "#<Selector:" + this.expression.inspect() + ">";
+ }
});
Object.extend(Selector, {
- _cache: { },
-
- xpath: {
- descendant: "//*",
- child: "/*",
- adjacent: "/following-sibling::*[1]",
- laterSibling: '/following-sibling::*',
- tagName: function(m) {
- if (m[1] == '*') return '';
- return "[local-name()='" + m[1].toLowerCase() +
- "' or local-name()='" + m[1].toUpperCase() + "']";
- },
- className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",
- id: "[@id='#{1}']",
- attrPresence: function(m) {
- m[1] = m[1].toLowerCase();
- return new Template("[@#{1}]").evaluate(m);
- },
- attr: function(m) {
- m[1] = m[1].toLowerCase();
- m[3] = m[5] || m[6];
- return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
- },
- pseudo: function(m) {
- var h = Selector.xpath.pseudos[m[1]];
- if (!h) return '';
- if (Object.isFunction(h)) return h(m);
- return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
- },
- operators: {
- '=': "[@#{1}='#{3}']",
- '!=': "[@#{1}!='#{3}']",
- '^=': "[starts-with(@#{1}, '#{3}')]",
- '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
- '*=': "[contains(@#{1}, '#{3}')]",
- '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
- '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
- },
- pseudos: {
- 'first-child': '[not(preceding-sibling::*)]',
- 'last-child': '[not(following-sibling::*)]',
- 'only-child': '[not(preceding-sibling::* or following-sibling::*)]',
- 'empty': "[count(*) = 0 and (count(text()) = 0)]",
- 'checked': "[@checked]",
- 'disabled': "[(@disabled) and (@type!='hidden')]",
- 'enabled': "[not(@disabled) and (@type!='hidden')]",
- 'not': function(m) {
- var e = m[6], p = Selector.patterns,
- x = Selector.xpath, le, v;
-
- var exclusion = [];
- while (e && le != e && (/\S/).test(e)) {
- le = e;
- for (var i in p) {
- if (m = e.match(p[i])) {
- v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
- exclusion.push("(" + v.substring(1, v.length - 1) + ")");
- e = e.replace(m[0], '');
- break;
+ _cache: { },
+
+ xpath: {
+ descendant: "//*",
+ child: "/*",
+ adjacent: "/following-sibling::*[1]",
+ laterSibling: '/following-sibling::*',
+ tagName: function(m) {
+ if (m[1] == '*') return '';
+ return "[local-name()='" + m[1].toLowerCase()
+ + "' or local-name()='" + m[1].toUpperCase() + "']";
+ },
+ className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",
+ id: "[@id='#{1}']",
+ attrPresence: function(m) {
+ m[1] = m[1].toLowerCase();
+ return new Template("[@#{1}]").evaluate(m);
+ },
+ attr: function(m) {
+ m[1] = m[1].toLowerCase();
+ m[3] = m[5] || m[6];
+ return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
+ },
+ pseudo: function(m) {
+ var h = Selector.xpath.pseudos[m[1]];
+ if (!h) return '';
+ if (Object.isFunction(h)) return h(m);
+ return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
+ },
+ operators: {
+ '=': "[@#{1}='#{3}']",
+ '!=': "[@#{1}!='#{3}']",
+ '^=': "[starts-with(@#{1}, '#{3}')]",
+ '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
+ '*=': "[contains(@#{1}, '#{3}')]",
+ '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
+ '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
+ },
+ pseudos: {
+ 'first-child': '[not(preceding-sibling::*)]',
+ 'last-child': '[not(following-sibling::*)]',
+ 'only-child': '[not(preceding-sibling::* or following-sibling::*)]',
+ 'empty': "[count(*) = 0 and (count(text()) = 0)]",
+ 'checked': "[@checked]",
+ 'disabled': "[(@disabled) and (@type!='hidden')]",
+ 'enabled': "[not(@disabled) and (@type!='hidden')]",
+ 'not': function(m) {
+ var e = m[6], p = Selector.patterns,
+ x = Selector.xpath, le, v;
+
+ var exclusion = [];
+ while (e && le != e && (/\S/).test(e)) {
+ le = e;
+ for (var i in p) {
+ if (m = e.match(p[i])) {
+ v = Object.isFunction(x[i]) ? x[i](m)
+ : new Template(x[i]).evaluate(m);
+ exclusion.push("(" + v.substring(1, v.length - 1)
+ + ")");
+ e = e.replace(m[0], '');
+ break;
+ }
+ }
+ }
+ return "[not(" + exclusion.join(" and ") + ")]";
+ },
+ 'nth-child': function(m) {
+ return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
+ },
+ 'nth-last-child': function(m) {
+ return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
+ },
+ 'nth-of-type': function(m) {
+ return Selector.xpath.pseudos.nth("position() ", m);
+ },
+ 'nth-last-of-type': function(m) {
+ return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
+ },
+ 'first-of-type': function(m) {
+ m[6] = "1";
+ return Selector.xpath.pseudos['nth-of-type'](m);
+ },
+ 'last-of-type': function(m) {
+ m[6] = "1";
+ return Selector.xpath.pseudos['nth-last-of-type'](m);
+ },
+ 'only-of-type': function(m) {
+ var p = Selector.xpath.pseudos;
+ return p['first-of-type'](m) + p['last-of-type'](m);
+ },
+ nth: function(fragment, m) {
+ var mm, formula = m[6], predicate;
+ if (formula == 'even') formula = '2n+0';
+ if (formula == 'odd') formula = '2n+1';
+ if (mm = formula.match(/^(\d+)$/)) // digit only
+ return '[' + fragment + "= " + mm[1] + ']';
+ if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+ if (mm[1] == "-") mm[1] = -1;
+ var a = mm[1] ? Number(mm[1]) : 1;
+ var b = mm[2] ? Number(mm[2]) : 0;
+ predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and "
+ + "((#{fragment} - #{b}) div #{a} >= 0)]";
+ return new Template(predicate).evaluate({
+ fragment: fragment, a: a, b: b });
+ }
}
- }
- }
- return "[not(" + exclusion.join(" and ") + ")]";
- },
- 'nth-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
- },
- 'nth-last-child': function(m) {
- return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
- },
- 'nth-of-type': function(m) {
- return Selector.xpath.pseudos.nth("position() ", m);
- },
- 'nth-last-of-type': function(m) {
- return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
- },
- 'first-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
- },
- 'last-of-type': function(m) {
- m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
- },
- 'only-of-type': function(m) {
- var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
- },
- nth: function(fragment, m) {
- var mm, formula = m[6], predicate;
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- if (mm = formula.match(/^(\d+)$/)) // digit only
- return '[' + fragment + "= " + mm[1] + ']';
- if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (mm[1] == "-") mm[1] = -1;
- var a = mm[1] ? Number(mm[1]) : 1;
- var b = mm[2] ? Number(mm[2]) : 0;
- predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
- "((#{fragment} - #{b}) div #{a} >= 0)]";
- return new Template(predicate).evaluate({
- fragment: fragment, a: a, b: b });
- }
- }
- }
- },
-
- criteria: {
- tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;',
- className: 'n = h.className(n, r, "#{1}", c); c = false;',
- id: 'n = h.id(n, r, "#{1}", c); c = false;',
- attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
- attr: function(m) {
- m[3] = (m[5] || m[6]);
- return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
- },
- pseudo: function(m) {
- if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
- return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
- },
- descendant: 'c = "descendant";',
- child: 'c = "child";',
- adjacent: 'c = "adjacent";',
- laterSibling: 'c = "laterSibling";'
- },
-
- patterns: {
- // combinators must be listed first
- // (and descendant needs to be last combinator)
- laterSibling: /^\s*~\s*/,
- child: /^\s*>\s*/,
- adjacent: /^\s*\+\s*/,
- descendant: /^\s/,
-
- // selectors follow
- tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,
- id: /^#([\w\-\*]+)(\b|$)/,
- className: /^\.([\w\-\*]+)(\b|$)/,
- pseudo:
-/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
- attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,
- attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
- },
-
- // for Selector.match and Element#match
- assertions: {
- tagName: function(element, matches) {
- return matches[1].toUpperCase() == element.tagName.toUpperCase();
- },
-
- className: function(element, matches) {
- return Element.hasClassName(element, matches[1]);
- },
-
- id: function(element, matches) {
- return element.id === matches[1];
- },
-
- attrPresence: function(element, matches) {
- return Element.hasAttribute(element, matches[1]);
- },
-
- attr: function(element, matches) {
- var nodeValue = Element.readAttribute(element, matches[1]);
- return nodeValue && Selector.operators[matches[2]](nodeValue, matches[5] || matches[6]);
- }
- },
-
- handlers: {
- // UTILITY FUNCTIONS
- // joins two collections
- concat: function(a, b) {
- for (var i = 0, node; node = b[i]; i++)
- a.push(node);
- return a;
- },
-
- // marks an array of nodes for counting
- mark: function(nodes) {
- var _true = Prototype.emptyFunction;
- for (var i = 0, node; node = nodes[i]; i++)
- node._countedByPrototype = _true;
- return nodes;
- },
-
- unmark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node._countedByPrototype = undefined;
- return nodes;
- },
-
- // mark each child node with its position (for nth calls)
- // "ofType" flag indicates whether we're indexing for nth-of-type
- // rather than nth-child
- index: function(parentNode, reverse, ofType) {
- parentNode._countedByPrototype = Prototype.emptyFunction;
- if (reverse) {
- for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
- var node = nodes[i];
- if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
}
- } else {
- for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
- if (node.nodeType == 1 && (!ofType || node._countedByPrototype)) node.nodeIndex = j++;
- }
- },
-
- // filters out duplicates and extends all nodes
- unique: function(nodes) {
- if (nodes.length == 0) return nodes;
- var results = [], n;
- for (var i = 0, l = nodes.length; i < l; i++)
- if (!(n = nodes[i])._countedByPrototype) {
- n._countedByPrototype = Prototype.emptyFunction;
- results.push(Element.extend(n));
- }
- return Selector.handlers.unmark(results);
},
- // COMBINATOR FUNCTIONS
- descendant: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName('*'));
- return results;
+ criteria: {
+ tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;',
+ className: 'n = h.className(n, r, "#{1}", c); c = false;',
+ id: 'n = h.id(n, r, "#{1}", c); c = false;',
+ attrPresence: 'n = h.attrPresence(n, r, "#{1}", c); c = false;',
+ attr: function(m) {
+ m[3] = (m[5] || m[6]);
+ return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}", c); c = false;').evaluate(m);
+ },
+ pseudo: function(m) {
+ if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
+ return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
+ },
+ descendant: 'c = "descendant";',
+ child: 'c = "child";',
+ adjacent: 'c = "adjacent";',
+ laterSibling: 'c = "laterSibling";'
},
- child: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- for (var j = 0, child; child = node.childNodes[j]; j++)
- if (child.nodeType == 1 && child.tagName != '!') results.push(child);
- }
- return results;
+ patterns: {
+ // combinators must be listed first
+ // (and descendant needs to be last combinator)
+ laterSibling: /^\s*~\s*/,
+ child: /^\s*>\s*/,
+ adjacent: /^\s*\+\s*/,
+ descendant: /^\s/,
+
+ // selectors follow
+ tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,
+ id: /^#([\w\-\*]+)(\b|$)/,
+ className: /^\.([\w\-\*]+)(\b|$)/,
+ pseudo:
+ /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s|[:+~>]))/,
+ attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,
+ attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
},
- adjacent: function(nodes) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- var next = this.nextElementSibling(node);
- if (next) results.push(next);
- }
- return results;
- },
+ // for Selector.match and Element#match
+ assertions: {
+ tagName: function(element, matches) {
+ return matches[1].toUpperCase() == element.tagName.toUpperCase();
+ },
- laterSibling: function(nodes) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- h.concat(results, Element.nextSiblings(node));
- return results;
- },
+ className: function(element, matches) {
+ return Element.hasClassName(element, matches[1]);
+ },
- nextElementSibling: function(node) {
- while (node = node.nextSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
+ id: function(element, matches) {
+ return element.id === matches[1];
+ },
- previousElementSibling: function(node) {
- while (node = node.previousSibling)
- if (node.nodeType == 1) return node;
- return null;
- },
+ attrPresence: function(element, matches) {
+ return Element.hasAttribute(element, matches[1]);
+ },
- // TOKEN FUNCTIONS
- tagName: function(nodes, root, tagName, combinator) {
- var uTagName = tagName.toUpperCase();
- var results = [], h = Selector.handlers;
- if (nodes) {
- if (combinator) {
- // fastlane for ordinary descendant combinators
- if (combinator == "descendant") {
- for (var i = 0, node; node = nodes[i]; i++)
- h.concat(results, node.getElementsByTagName(tagName));
- return results;
- } else nodes = this[combinator](nodes);
- if (tagName == "*") return nodes;
+ attr: function(element, matches) {
+ var nodeValue = Element.readAttribute(element, matches[1]);
+ return nodeValue
+ && Selector.operators[matches[2]](nodeValue, matches[5]
+ || matches[6]);
}
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.tagName.toUpperCase() === uTagName) results.push(node);
- return results;
- } else return root.getElementsByTagName(tagName);
},
- id: function(nodes, root, id, combinator) {
- var targetNode = $(id), h = Selector.handlers;
- if (!targetNode) return [];
- if (!nodes && root == document) return [targetNode];
- if (nodes) {
- if (combinator) {
- if (combinator == 'child') {
+ handlers: {
+ // UTILITY FUNCTIONS
+ // joins two collections
+ concat: function(a, b) {
+ for (var i = 0, node; node = b[i]; i++)
+ a.push(node);
+ return a;
+ },
+
+ // marks an array of nodes for counting
+ mark: function(nodes) {
+ var _true = Prototype.emptyFunction;
for (var i = 0, node; node = nodes[i]; i++)
- if (targetNode.parentNode == node) return [targetNode];
- } else if (combinator == 'descendant') {
+ node._countedByPrototype = _true;
+ return nodes;
+ },
+
+ unmark: function(nodes) {
for (var i = 0, node; node = nodes[i]; i++)
- if (Element.descendantOf(targetNode, node)) return [targetNode];
- } else if (combinator == 'adjacent') {
+ node._countedByPrototype = undefined;
+ return nodes;
+ },
+
+ // mark each child node with its position (for nth calls)
+ // "ofType" flag indicates whether we're indexing for nth-of-type
+ // rather than nth-child
+ index: function(parentNode, reverse, ofType) {
+ parentNode._countedByPrototype = Prototype.emptyFunction;
+ if (reverse) {
+ for (var nodes = parentNode.childNodes, i = nodes.length
+ - 1, j = 1; i >= 0; i--) {
+ var node = nodes[i];
+ if (node.nodeType == 1 && (!ofType
+ || node._countedByPrototype)) node.nodeIndex = j++;
+ }
+ } else {
+ for (var i = 0, j = 1, nodes = parentNode.childNodes;
+ node = nodes[i]; i++)
+ if (node.nodeType == 1 && (!ofType
+ || node._countedByPrototype)) node.nodeIndex = j++;
+ }
+ },
+
+ // filters out duplicates and extends all nodes
+ unique: function(nodes) {
+ if (nodes.length == 0) return nodes;
+ var results = [], n;
+ for (var i = 0, l = nodes.length; i < l; i++)
+ if (!(n = nodes[i])._countedByPrototype) {
+ n._countedByPrototype = Prototype.emptyFunction;
+ results.push(Element.extend(n));
+ }
+ return Selector.handlers.unmark(results);
+ },
+
+ // COMBINATOR FUNCTIONS
+ descendant: function(nodes) {
+ var h = Selector.handlers;
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ h.concat(results, node.getElementsByTagName('*'));
+ return results;
+ },
+
+ child: function(nodes) {
+ var h = Selector.handlers;
+ for (var i = 0, results = [], node; node = nodes[i]; i++) {
+ for (var j = 0, child; child = node.childNodes[j]; j++)
+ if (child.nodeType == 1 && child.tagName
+ != '!') results.push(child);
+ }
+ return results;
+ },
+
+ adjacent: function(nodes) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++) {
+ var next = this.nextElementSibling(node);
+ if (next) results.push(next);
+ }
+ return results;
+ },
+
+ laterSibling: function(nodes) {
+ var h = Selector.handlers;
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ h.concat(results, Element.nextSiblings(node));
+ return results;
+ },
+
+ nextElementSibling: function(node) {
+ while (node = node.nextSibling)
+ if (node.nodeType == 1) return node;
+ return null;
+ },
+
+ previousElementSibling: function(node) {
+ while (node = node.previousSibling)
+ if (node.nodeType == 1) return node;
+ return null;
+ },
+
+ // TOKEN FUNCTIONS
+ tagName: function(nodes, root, tagName, combinator) {
+ var uTagName = tagName.toUpperCase();
+ var results = [], h = Selector.handlers;
+ if (nodes) {
+ if (combinator) {
+ // fastlane for ordinary descendant combinators
+ if (combinator == "descendant") {
+ for (var i = 0, node; node = nodes[i]; i++)
+ h.concat(results, node.getElementsByTagName(tagName));
+ return results;
+ } else nodes = this[combinator](nodes);
+ if (tagName == "*") return nodes;
+ }
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (node.tagName.toUpperCase()
+ === uTagName) results.push(node);
+ return results;
+ } else return root.getElementsByTagName(tagName);
+ },
+
+ id: function(nodes, root, id, combinator) {
+ var targetNode = $(id), h = Selector.handlers;
+ if (!targetNode) return [];
+ if (!nodes && root == document) return [targetNode];
+ if (nodes) {
+ if (combinator) {
+ if (combinator == 'child') {
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (targetNode.parentNode
+ == node) return [targetNode];
+ } else if (combinator == 'descendant') {
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (Element.descendantOf(targetNode, node)) return [targetNode];
+ } else if (combinator == 'adjacent') {
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (Selector.handlers.previousElementSibling(targetNode)
+ == node)
+ return [targetNode];
+ } else nodes = h[combinator](nodes);
+ }
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (node == targetNode) return [targetNode];
+ return [];
+ }
+ return (targetNode && Element.descendantOf(targetNode, root))
+ ? [targetNode] : [];
+ },
+
+ className: function(nodes, root, className, combinator) {
+ if (nodes && combinator) nodes = this[combinator](nodes);
+ return Selector.handlers.byClassName(nodes, root, className);
+ },
+
+ byClassName: function(nodes, root, className) {
+ if (!nodes) nodes = Selector.handlers.descendant([root]);
+ var needle = ' ' + className + ' ';
+ for (var i = 0, results = [], node, nodeClassName; node = nodes[i];
+ i++) {
+ nodeClassName = node.className;
+ if (nodeClassName.length == 0) continue;
+ if (nodeClassName == className || (' ' + nodeClassName
+ + ' ').include(needle))
+ results.push(node);
+ }
+ return results;
+ },
+
+ attrPresence: function(nodes, root, attr, combinator) {
+ if (!nodes) nodes = root.getElementsByTagName("*");
+ if (nodes && combinator) nodes = this[combinator](nodes);
+ var results = [];
for (var i = 0, node; node = nodes[i]; i++)
- if (Selector.handlers.previousElementSibling(targetNode) == node)
- return [targetNode];
- } else nodes = h[combinator](nodes);
- }
- for (var i = 0, node; node = nodes[i]; i++)
- if (node == targetNode) return [targetNode];
- return [];
- }
- return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
- },
-
- className: function(nodes, root, className, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- return Selector.handlers.byClassName(nodes, root, className);
- },
-
- byClassName: function(nodes, root, className) {
- if (!nodes) nodes = Selector.handlers.descendant([root]);
- var needle = ' ' + className + ' ';
- for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
- nodeClassName = node.className;
- if (nodeClassName.length == 0) continue;
- if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
- results.push(node);
- }
- return results;
- },
-
- attrPresence: function(nodes, root, attr, combinator) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- if (nodes && combinator) nodes = this[combinator](nodes);
- var results = [];
- for (var i = 0, node; node = nodes[i]; i++)
- if (Element.hasAttribute(node, attr)) results.push(node);
- return results;
- },
-
- attr: function(nodes, root, attr, value, operator, combinator) {
- if (!nodes) nodes = root.getElementsByTagName("*");
- if (nodes && combinator) nodes = this[combinator](nodes);
- var handler = Selector.operators[operator], results = [];
- for (var i = 0, node; node = nodes[i]; i++) {
- var nodeValue = Element.readAttribute(node, attr);
- if (nodeValue === null) continue;
- if (handler(nodeValue, value)) results.push(node);
- }
- return results;
- },
-
- pseudo: function(nodes, name, value, root, combinator) {
- if (nodes && combinator) nodes = this[combinator](nodes);
- if (!nodes) nodes = root.getElementsByTagName("*");
- return Selector.pseudos[name](nodes, value, root);
- }
- },
-
- pseudos: {
- 'first-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.previousElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'last-child': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- if (Selector.handlers.nextElementSibling(node)) continue;
- results.push(node);
- }
- return results;
- },
- 'only-child': function(nodes, value, root) {
- var h = Selector.handlers;
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
- results.push(node);
- return results;
- },
- 'nth-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root);
- },
- 'nth-last-child': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true);
- },
- 'nth-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, false, true);
- },
- 'nth-last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, formula, root, true, true);
- },
- 'first-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, false, true);
- },
- 'last-of-type': function(nodes, formula, root) {
- return Selector.pseudos.nth(nodes, "1", root, true, true);
- },
- 'only-of-type': function(nodes, formula, root) {
- var p = Selector.pseudos;
- return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
- },
-
- // handles the an+b logic
- getIndices: function(a, b, total) {
- if (a == 0) return b > 0 ? [b] : [];
- return $R(1, total).inject([], function(memo, i) {
- if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
- return memo;
- });
- },
-
- // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
- nth: function(nodes, formula, root, reverse, ofType) {
- if (nodes.length == 0) return [];
- if (formula == 'even') formula = '2n+0';
- if (formula == 'odd') formula = '2n+1';
- var h = Selector.handlers, results = [], indexed = [], m;
- h.mark(nodes);
- for (var i = 0, node; node = nodes[i]; i++) {
- if (!node.parentNode._countedByPrototype) {
- h.index(node.parentNode, reverse, ofType);
- indexed.push(node.parentNode);
- }
- }
- if (formula.match(/^\d+$/)) { // just a number
- formula = Number(formula);
- for (var i = 0, node; node = nodes[i]; i++)
- if (node.nodeIndex == formula) results.push(node);
- } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
- if (m[1] == "-") m[1] = -1;
- var a = m[1] ? Number(m[1]) : 1;
- var b = m[2] ? Number(m[2]) : 0;
- var indices = Selector.pseudos.getIndices(a, b, nodes.length);
- for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
- for (var j = 0; j < l; j++)
- if (node.nodeIndex == indices[j]) results.push(node);
+ if (Element.hasAttribute(node, attr)) results.push(node);
+ return results;
+ },
+
+ attr: function(nodes, root, attr, value, operator, combinator) {
+ if (!nodes) nodes = root.getElementsByTagName("*");
+ if (nodes && combinator) nodes = this[combinator](nodes);
+ var handler = Selector.operators[operator], results = [];
+ for (var i = 0, node; node = nodes[i]; i++) {
+ var nodeValue = Element.readAttribute(node, attr);
+ if (nodeValue === null) continue;
+ if (handler(nodeValue, value)) results.push(node);
+ }
+ return results;
+ },
+
+ pseudo: function(nodes, name, value, root, combinator) {
+ if (nodes && combinator) nodes = this[combinator](nodes);
+ if (!nodes) nodes = root.getElementsByTagName("*");
+ return Selector.pseudos[name](nodes, value, root);
}
- }
- h.unmark(nodes);
- h.unmark(indexed);
- return results;
},
- 'empty': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
- // IE treats comments as element nodes
- if (node.tagName == '!' || node.firstChild) continue;
- results.push(node);
- }
- return results;
+ pseudos: {
+ 'first-child': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++) {
+ if (Selector.handlers.previousElementSibling(node)) continue;
+ results.push(node);
+ }
+ return results;
+ },
+ 'last-child': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++) {
+ if (Selector.handlers.nextElementSibling(node)) continue;
+ results.push(node);
+ }
+ return results;
+ },
+ 'only-child': function(nodes, value, root) {
+ var h = Selector.handlers;
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ if (!h.previousElementSibling(node)
+ && !h.nextElementSibling(node))
+ results.push(node);
+ return results;
+ },
+ 'nth-child': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, formula, root);
+ },
+ 'nth-last-child': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, formula, root, true);
+ },
+ 'nth-of-type': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, formula, root, false, true);
+ },
+ 'nth-last-of-type': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, formula, root, true, true);
+ },
+ 'first-of-type': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, "1", root, false, true);
+ },
+ 'last-of-type': function(nodes, formula, root) {
+ return Selector.pseudos.nth(nodes, "1", root, true, true);
+ },
+ 'only-of-type': function(nodes, formula, root) {
+ var p = Selector.pseudos;
+ return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
+ },
+
+ // handles the an+b logic
+ getIndices: function(a, b, total) {
+ if (a == 0) return b > 0 ? [b] : [];
+ return $R(1, total).inject([], function(memo, i) {
+ if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
+ return memo;
+ });
+ },
+
+ // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
+ nth: function(nodes, formula, root, reverse, ofType) {
+ if (nodes.length == 0) return [];
+ if (formula == 'even') formula = '2n+0';
+ if (formula == 'odd') formula = '2n+1';
+ var h = Selector.handlers, results = [], indexed = [], m;
+ h.mark(nodes);
+ for (var i = 0, node; node = nodes[i]; i++) {
+ if (!node.parentNode._countedByPrototype) {
+ h.index(node.parentNode, reverse, ofType);
+ indexed.push(node.parentNode);
+ }
+ }
+ if (formula.match(/^\d+$/)) { // just a number
+ formula = Number(formula);
+ for (var i = 0, node; node = nodes[i]; i++)
+ if (node.nodeIndex == formula) results.push(node);
+ } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+ if (m[1] == "-") m[1] = -1;
+ var a = m[1] ? Number(m[1]) : 1;
+ var b = m[2] ? Number(m[2]) : 0;
+ var indices = Selector.pseudos.getIndices(a, b, nodes.length);
+ for (var i = 0, node, l = indices.length; node = nodes[i];
+ i++) {
+ for (var j = 0; j < l; j++)
+ if (node.nodeIndex == indices[j]) results.push(node);
+ }
+ }
+ h.unmark(nodes);
+ h.unmark(indexed);
+ return results;
+ },
+
+ 'empty': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++) {
+ // IE treats comments as element nodes
+ if (node.tagName == '!' || node.firstChild) continue;
+ results.push(node);
+ }
+ return results;
+ },
+
+ 'not': function(nodes, selector, root) {
+ var h = Selector.handlers, selectorType, m;
+ var exclusions = new Selector(selector).findElements(root);
+ h.mark(exclusions);
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ if (!node._countedByPrototype) results.push(node);
+ h.unmark(exclusions);
+ return results;
+ },
+
+ 'enabled': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ if (!node.disabled && (!node.type || node.type !== 'hidden'))
+ results.push(node);
+ return results;
+ },
+
+ 'disabled': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ if (node.disabled) results.push(node);
+ return results;
+ },
+
+ 'checked': function(nodes, value, root) {
+ for (var i = 0, results = [], node; node = nodes[i]; i++)
+ if (node.checked) results.push(node);
+ return results;
+ }
},
- 'not': function(nodes, selector, root) {
- var h = Selector.handlers, selectorType, m;
- var exclusions = new Selector(selector).findElements(root);
- h.mark(exclusions);
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node._countedByPrototype) results.push(node);
- h.unmark(exclusions);
- return results;
+ operators: {
+ '=': function(nv, v) {
+ return nv == v;
+ },
+ '!=': function(nv, v) {
+ return nv != v;
+ },
+ '^=': function(nv, v) {
+ return nv == v || nv && nv.startsWith(v);
+ },
+ '$=': function(nv, v) {
+ return nv == v || nv && nv.endsWith(v);
+ },
+ '*=': function(nv, v) {
+ return nv == v || nv && nv.include(v);
+ },
+ '$=': function(nv, v) {
+ return nv.endsWith(v);
+ },
+ '*=': function(nv, v) {
+ return nv.include(v);
+ },
+ '~=': function(nv, v) {
+ return (' ' + nv + ' ').include(' ' + v + ' ');
+ },
+ '|=': function(nv, v) {
+ return ('-' + (nv || "").toUpperCase() + '-').include('-' + (v
+ || "").toUpperCase() + '-');
+ }
},
- 'enabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (!node.disabled && (!node.type || node.type !== 'hidden'))
- results.push(node);
- return results;
+ split: function(expression) {
+ var expressions = [];
+ expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(
+ m) {
+ expressions.push(m[1].strip());
+ });
+ return expressions;
},
- 'disabled': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.disabled) results.push(node);
- return results;
+ matchElements: function(elements, expression) {
+ var matches = $$(expression), h = Selector.handlers;
+ h.mark(matches);
+ for (var i = 0, results = [], element; element = elements[i]; i++)
+ if (element._countedByPrototype) results.push(element);
+ h.unmark(matches);
+ return results;
},
- 'checked': function(nodes, value, root) {
- for (var i = 0, results = [], node; node = nodes[i]; i++)
- if (node.checked) results.push(node);
- return results;
- }
- },
-
- operators: {
- '=': function(nv, v) { return nv == v; },
- '!=': function(nv, v) { return nv != v; },
- '^=': function(nv, v) { return nv == v || nv && nv.startsWith(v); },
- '$=': function(nv, v) { return nv == v || nv && nv.endsWith(v); },
- '*=': function(nv, v) { return nv == v || nv && nv.include(v); },
- '$=': function(nv, v) { return nv.endsWith(v); },
- '*=': function(nv, v) { return nv.include(v); },
- '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
- '|=': function(nv, v) { return ('-' + (nv || "").toUpperCase() +
- '-').include('-' + (v || "").toUpperCase() + '-'); }
- },
-
- split: function(expression) {
- var expressions = [];
- expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
- expressions.push(m[1].strip());
- });
- return expressions;
- },
-
- matchElements: function(elements, expression) {
- var matches = $$(expression), h = Selector.handlers;
- h.mark(matches);
- for (var i = 0, results = [], element; element = elements[i]; i++)
- if (element._countedByPrototype) results.push(element);
- h.unmark(matches);
- return results;
- },
+ findElement: function(elements, expression, index) {
+ if (Object.isNumber(expression)) {
+ index = expression;
+ expression = false;
+ }
+ return Selector.matchElements(elements, expression || '*')[index || 0];
+ },
- findElement: function(elements, expression, index) {
- if (Object.isNumber(expression)) {
- index = expression; expression = false;
- }
- return Selector.matchElements(elements, expression || '*')[index || 0];
- },
-
- findChildElements: function(element, expressions) {
- expressions = Selector.split(expressions.join(','));
- var results = [], h = Selector.handlers;
- for (var i = 0, l = expressions.length, selector; i < l; i++) {
- selector = new Selector(expressions[i].strip());
- h.concat(results, selector.findElements(element));
+ findChildElements: function(element, expressions) {
+ expressions = Selector.split(expressions.join(','));
+ var results = [], h = Selector.handlers;
+ for (var i = 0, l = expressions.length, selector; i < l; i++) {
+ selector = new Selector(expressions[i].strip());
+ h.concat(results, selector.findElements(element));
+ }
+ return (l > 1) ? h.unique(results) : results;
}
- return (l > 1) ? h.unique(results) : results;
- }
});
if (Prototype.Browser.IE) {
- Object.extend(Selector.handlers, {
- // IE returns comment nodes on getElementsByTagName("*").
- // Filter them out.
- concat: function(a, b) {
- for (var i = 0, node; node = b[i]; i++)
- if (node.tagName !== "!") a.push(node);
- return a;
- },
-
- // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
- unmark: function(nodes) {
- for (var i = 0, node; node = nodes[i]; i++)
- node.removeAttribute('_countedByPrototype');
- return nodes;
- }
- });
+ Object.extend(Selector.handlers, {
+ // IE returns comment nodes on getElementsByTagName("*").
+ // Filter them out.
+ concat: function(a, b) {
+ for (var i = 0, node; node = b[i]; i++)
+ if (node.tagName !== "!") a.push(node);
+ return a;
+ },
+
+ // IE improperly serializes _countedByPrototype in (inner|outer)HTML.
+ unmark: function(nodes) {
+ for (var i = 0, node; node = nodes[i]; i++)
+ node.removeAttribute('_countedByPrototype');
+ return nodes;
+ }
+ });
}
function $$() {
- return Selector.findChildElements(document, $A(arguments));
+ return Selector.findChildElements(document, $A(arguments));
}
var Form = {
- reset: function(form) {
- $(form).reset();
- return form;
- },
-
- serializeElements: function(elements, options) {
- if (typeof options != 'object') options = { hash: !!options };
- else if (Object.isUndefined(options.hash)) options.hash = true;
- var key, value, submitted = false, submit = options.submit;
-
- var data = elements.inject({ }, function(result, element) {
- if (!element.disabled && element.name) {
- key = element.name; value = $(element).getValue();
- if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&
- submit !== false && (!submit || key == submit) && (submitted = true)))) {
- if (key in result) {
- // a key is already present; construct an array of values
- if (!Object.isArray(result[key])) result[key] = [result[key]];
- result[key].push(value);
- }
- else result[key] = value;
- }
- }
- return result;
- });
+ reset: function(form) {
+ $(form).reset();
+ return form;
+ },
+
+ serializeElements: function(elements, options) {
+ if (typeof options != 'object') options
+ = { hash: !!options }; else if (Object.isUndefined(options.hash)) options.hash
+ = true;
+ var key, value, submitted = false, submit = options.submit;
+
+ var data = elements.inject({ }, function(result, element) {
+ if (!element.disabled && element.name) {
+ key = element.name;
+ value = $(element).getValue();
+ if (value != null && element.type != 'file' && (element.type
+ != 'submit' || (!submitted && submit !== false
+ && (!submit || key == submit) && (submitted = true)))) {
+ if (key in result) {
+ // a key is already present; construct an array of values
+ if (!Object.isArray(result[key])) result[key]
+ = [result[key]];
+ result[key].push(value);
+ } else result[key] = value;
+ }
+ }
+ return result;
+ });
- return options.hash ? data : Object.toQueryString(data);
- }
+ return options.hash ? data : Object.toQueryString(data);
+ }
};
Form.Methods = {
- serialize: function(form, options) {
- return Form.serializeElements(Form.getElements(form), options);
- },
-
- getElements: function(form) {
- return $A($(form).getElementsByTagName('*')).inject([],
- function(elements, child) {
- if (Form.Element.Serializers[child.tagName.toLowerCase()])
- elements.push(Element.extend(child));
- return elements;
- }
- );
- },
+ serialize: function(form, options) {
+ return Form.serializeElements(Form.getElements(form), options);
+ },
- getInputs: function(form, typeName, name) {
- form = $(form);
- var inputs = form.getElementsByTagName('input');
+ getElements: function(form) {
+ return $A($(form).getElementsByTagName('*')).inject([], function(
+ elements, child) {
+ if (Form.Element.Serializers[child.tagName.toLowerCase()])
+ elements.push(Element.extend(child));
+ return elements;
+ });
+ },
- if (!typeName && !name) return $A(inputs).map(Element.extend);
+ getInputs: function(form, typeName, name) {
+ form = $(form);
+ var inputs = form.getElementsByTagName('input');
- for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
- var input = inputs[i];
- if ((typeName && input.type != typeName) || (name && input.name != name))
- continue;
- matchingInputs.push(Element.extend(input));
- }
+ if (!typeName && !name) return $A(inputs).map(Element.extend);
- return matchingInputs;
- },
+ for (var i = 0, matchingInputs = [], length = inputs.length; i < length;
+ i++) {
+ var input = inputs[i];
+ if ((typeName && input.type != typeName) || (name && input.name
+ != name))
+ continue;
+ matchingInputs.push(Element.extend(input));
+ }
- disable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('disable');
- return form;
- },
+ return matchingInputs;
+ },
- enable: function(form) {
- form = $(form);
- Form.getElements(form).invoke('enable');
- return form;
- },
+ disable: function(form) {
+ form = $(form);
+ Form.getElements(form).invoke('disable');
+ return form;
+ },
- findFirstElement: function(form) {
- var elements = $(form).getElements().findAll(function(element) {
- return 'hidden' != element.type && !element.disabled;
- });
- var firstByIndex = elements.findAll(function(element) {
- return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
- }).sortBy(function(element) { return element.tabIndex }).first();
+ enable: function(form) {
+ form = $(form);
+ Form.getElements(form).invoke('enable');
+ return form;
+ },
- return firstByIndex ? firstByIndex : elements.find(function(element) {
- return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
- });
- },
+ findFirstElement: function(form) {
+ var elements = $(form).getElements().findAll(function(element) {
+ return 'hidden' != element.type && !element.disabled;
+ });
+ var firstByIndex = elements.findAll(function(element) {
+ return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
+ }).sortBy(function(element) {
+ return element.tabIndex
+ }).first();
+
+ return firstByIndex ? firstByIndex : elements.find(function(element) {
+ return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+ });
+ },
- focusFirstElement: function(form) {
- form = $(form);
- form.findFirstElement().activate();
- return form;
- },
+ focusFirstElement: function(form) {
+ form = $(form);
+ form.findFirstElement().activate();
+ return form;
+ },
- request: function(form, options) {
- form = $(form), options = Object.clone(options || { });
+ request: function(form, options) {
+ form = $(form),options = Object.clone(options || { });
- var params = options.parameters, action = form.readAttribute('action') || '';
- if (action.blank()) action = window.location.href;
- options.parameters = form.serialize(true);
+ var params = options.parameters, action = form.readAttribute('action')
+ || '';
+ if (action.blank()) action = window.location.href;
+ options.parameters = form.serialize(true);
- if (params) {
- if (Object.isString(params)) params = params.toQueryParams();
- Object.extend(options.parameters, params);
- }
+ if (params) {
+ if (Object.isString(params)) params = params.toQueryParams();
+ Object.extend(options.parameters, params);
+ }
- if (form.hasAttribute('method') && !options.method)
- options.method = form.method;
+ if (form.hasAttribute('method') && !options.method)
+ options.method = form.method;
- return new Ajax.Request(action, options);
- }
+ return new Ajax.Request(action, options);
+ }
};
/*--------------------------------------------------------------------------*/
Form.Element = {
- focus: function(element) {
- $(element).focus();
- return element;
- },
-
- select: function(element) {
- $(element).select();
- return element;
- }
+ focus: function(element) {
+ $(element).focus();
+ return element;
+ },
+
+ select: function(element) {
+ $(element).select();
+ return element;
+ }
};
Form.Element.Methods = {
- serialize: function(element) {
- element = $(element);
- if (!element.disabled && element.name) {
- var value = element.getValue();
- if (value != undefined) {
- var pair = { };
- pair[element.name] = value;
- return Object.toQueryString(pair);
- }
+ serialize: function(element) {
+ element = $(element);
+ if (!element.disabled && element.name) {
+ var value = element.getValue();
+ if (value != undefined) {
+ var pair = { };
+ pair[element.name] = value;
+ return Object.toQueryString(pair);
+ }
+ }
+ return '';
+ },
+
+ getValue: function(element) {
+ element = $(element);
+ var method = element.tagName.toLowerCase();
+ return Form.Element.Serializers[method](element);
+ },
+
+ setValue: function(element, value) {
+ element = $(element);
+ var method = element.tagName.toLowerCase();
+ Form.Element.Serializers[method](element, value);
+ return element;
+ },
+
+ clear: function(element) {
+ $(element).value = '';
+ return element;
+ },
+
+ present: function(element) {
+ return $(element).value != '';
+ },
+
+ activate: function(element) {
+ element = $(element);
+ try {
+ element.focus();
+ if (element.select && (element.tagName.toLowerCase() != 'input'
+ || !['button', 'reset', 'submit'].include(element.type)))
+ element.select();
+ } catch (e) {
+ }
+ return element;
+ },
+
+ disable: function(element) {
+ element = $(element);
+ element.disabled = true;
+ return element;
+ },
+
+ enable: function(element) {
+ element = $(element);
+ element.disabled = false;
+ return element;
}
- return '';
- },
-
- getValue: function(element) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- return Form.Element.Serializers[method](element);
- },
-
- setValue: function(element, value) {
- element = $(element);
- var method = element.tagName.toLowerCase();
- Form.Element.Serializers[method](element, value);
- return element;
- },
-
- clear: function(element) {
- $(element).value = '';
- return element;
- },
-
- present: function(element) {
- return $(element).value != '';
- },
-
- activate: function(element) {
- element = $(element);
- try {
- element.focus();
- if (element.select && (element.tagName.toLowerCase() != 'input' ||
- !['button', 'reset', 'submit'].include(element.type)))
- element.select();
- } catch (e) { }
- return element;
- },
-
- disable: function(element) {
- element = $(element);
- element.disabled = true;
- return element;
- },
-
- enable: function(element) {
- element = $(element);
- element.disabled = false;
- return element;
- }
};
/*--------------------------------------------------------------------------*/
@@ -3637,498 +3773,514 @@ var $F = Form.Element.Methods.getValue;
/*--------------------------------------------------------------------------*/
Form.Element.Serializers = {
- input: function(element, value) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- return Form.Element.Serializers.inputSelector(element, value);
- default:
- return Form.Element.Serializers.textarea(element, value);
- }
- },
-
- inputSelector: function(element, value) {
- if (Object.isUndefined(value)) return element.checked ? element.value : null;
- else element.checked = !!value;
- },
-
- textarea: function(element, value) {
- if (Object.isUndefined(value)) return element.value;
- else element.value = value;
- },
-
- select: function(element, value) {
- if (Object.isUndefined(value))
- return this[element.type == 'select-one' ?
- 'selectOne' : 'selectMany'](element);
- else {
- var opt, currentValue, single = !Object.isArray(value);
- for (var i = 0, length = element.length; i < length; i++) {
- opt = element.options[i];
- currentValue = this.optionValue(opt);
- if (single) {
- if (currentValue == value) {
- opt.selected = true;
- return;
- }
+ input: function(element, value) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ return Form.Element.Serializers.inputSelector(element, value);
+ default:
+ return Form.Element.Serializers.textarea(element, value);
}
- else opt.selected = value.include(currentValue);
- }
- }
- },
+ },
- selectOne: function(element) {
- var index = element.selectedIndex;
- return index >= 0 ? this.optionValue(element.options[index]) : null;
- },
+ inputSelector: function(element, value) {
+ if (Object.isUndefined(value)) return element.checked ? element.value
+ : null; else element.checked = !!value;
+ },
- selectMany: function(element) {
- var values, length = element.length;
- if (!length) return null;
+ textarea: function(element, value) {
+ if (Object.isUndefined(value)) return element.value; else element.value
+ = value;
+ },
- for (var i = 0, values = []; i < length; i++) {
- var opt = element.options[i];
- if (opt.selected) values.push(this.optionValue(opt));
- }
- return values;
- },
+ select: function(element, value) {
+ if (Object.isUndefined(value))
+ return this[element.type == 'select-one' ? 'selectOne'
+ : 'selectMany'](element); else {
+ var opt, currentValue, single = !Object.isArray(value);
+ for (var i = 0, length = element.length; i < length; i++) {
+ opt = element.options[i];
+ currentValue = this.optionValue(opt);
+ if (single) {
+ if (currentValue == value) {
+ opt.selected = true;
+ return;
+ }
+ } else opt.selected = value.include(currentValue);
+ }
+ }
+ },
+
+ selectOne: function(element) {
+ var index = element.selectedIndex;
+ return index >= 0 ? this.optionValue(element.options[index]) : null;
+ },
- optionValue: function(opt) {
- // extend element because hasAttribute may not be native
- return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
- }
+ selectMany: function(element) {
+ var values, length = element.length;
+ if (!length) return null;
+
+ for (var i = 0, values = []; i < length; i++) {
+ var opt = element.options[i];
+ if (opt.selected) values.push(this.optionValue(opt));
+ }
+ return values;
+ },
+
+ optionValue: function(opt) {
+ // extend element because hasAttribute may not be native
+ return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+ }
};
/*--------------------------------------------------------------------------*/
Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
- initialize: function($super, element, frequency, callback) {
- $super(callback, frequency);
- this.element = $(element);
- this.lastValue = this.getValue();
- },
-
- execute: function() {
- var value = this.getValue();
- if (Object.isString(this.lastValue) && Object.isString(value) ?
- this.lastValue != value : String(this.lastValue) != String(value)) {
- this.callback(this.element, value);
- this.lastValue = value;
+ initialize: function($super, element, frequency, callback) {
+ $super(callback, frequency);
+ this.element = $(element);
+ this.lastValue = this.getValue();
+ },
+
+ execute: function() {
+ var value = this.getValue();
+ if (Object.isString(this.lastValue) && Object.isString(value)
+ ? this.lastValue != value : String(this.lastValue)
+ != String(value)) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
}
- }
});
Form.Element.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
});
Form.Observer = Class.create(Abstract.TimedObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
});
/*--------------------------------------------------------------------------*/
Abstract.EventObserver = Class.create({
- initialize: function(element, callback) {
- this.element = $(element);
- this.callback = callback;
-
- this.lastValue = this.getValue();
- if (this.element.tagName.toLowerCase() == 'form')
- this.registerFormCallbacks();
- else
- this.registerCallback(this.element);
- },
-
- onElementEvent: function() {
- var value = this.getValue();
- if (this.lastValue != value) {
- this.callback(this.element, value);
- this.lastValue = value;
- }
- },
-
- registerFormCallbacks: function() {
- Form.getElements(this.element).each(this.registerCallback, this);
- },
-
- registerCallback: function(element) {
- if (element.type) {
- switch (element.type.toLowerCase()) {
- case 'checkbox':
- case 'radio':
- Event.observe(element, 'click', this.onElementEvent.bind(this));
- break;
- default:
- Event.observe(element, 'change', this.onElementEvent.bind(this));
- break;
- }
+ initialize: function(element, callback) {
+ this.element = $(element);
+ this.callback = callback;
+
+ this.lastValue = this.getValue();
+ if (this.element.tagName.toLowerCase() == 'form')
+ this.registerFormCallbacks(); else
+ this.registerCallback(this.element);
+ },
+
+ onElementEvent: function() {
+ var value = this.getValue();
+ if (this.lastValue != value) {
+ this.callback(this.element, value);
+ this.lastValue = value;
+ }
+ },
+
+ registerFormCallbacks: function() {
+ Form.getElements(this.element).each(this.registerCallback, this);
+ },
+
+ registerCallback: function(element) {
+ if (element.type) {
+ switch (element.type.toLowerCase()) {
+ case 'checkbox':
+ case 'radio':
+ Event.observe(element, 'click', this.onElementEvent.bind(this));
+ break;
+ default:
+ Event.observe(element, 'change', this.onElementEvent.bind(this));
+ break;
+ }
+ }
}
- }
});
Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.Element.getValue(this.element);
- }
+ getValue: function() {
+ return Form.Element.getValue(this.element);
+ }
});
Form.EventObserver = Class.create(Abstract.EventObserver, {
- getValue: function() {
- return Form.serialize(this.element);
- }
+ getValue: function() {
+ return Form.serialize(this.element);
+ }
});
if (!window.Event) var Event = { };
Object.extend(Event, {
- KEY_BACKSPACE: 8,
- KEY_TAB: 9,
- KEY_RETURN: 13,
- KEY_ESC: 27,
- KEY_LEFT: 37,
- KEY_UP: 38,
- KEY_RIGHT: 39,
- KEY_DOWN: 40,
- KEY_DELETE: 46,
- KEY_HOME: 36,
- KEY_END: 35,
- KEY_PAGEUP: 33,
- KEY_PAGEDOWN: 34,
- KEY_INSERT: 45,
-
- cache: { },
-
- relatedTarget: function(event) {
- var element;
- switch(event.type) {
- case 'mouseover': element = event.fromElement; break;
- case 'mouseout': element = event.toElement; break;
- default: return null;
+ KEY_BACKSPACE: 8,
+ KEY_TAB: 9,
+ KEY_RETURN: 13,
+ KEY_ESC: 27,
+ KEY_LEFT: 37,
+ KEY_UP: 38,
+ KEY_RIGHT: 39,
+ KEY_DOWN: 40,
+ KEY_DELETE: 46,
+ KEY_HOME: 36,
+ KEY_END: 35,
+ KEY_PAGEUP: 33,
+ KEY_PAGEDOWN: 34,
+ KEY_INSERT: 45,
+
+ cache: { },
+
+ relatedTarget: function(event) {
+ var element;
+ switch (event.type) {
+ case 'mouseover': element = event.fromElement; break;
+ case 'mouseout': element = event.toElement; break;
+ default: return null;
+ }
+ return Element.extend(element);
}
- return Element.extend(element);
- }
});
Event.Methods = (function() {
- var isButton;
+ var isButton;
- if (Prototype.Browser.IE) {
- var buttonMap = { 0: 1, 1: 4, 2: 2 };
- isButton = function(event, code) {
- return event.button == buttonMap[code];
- };
+ if (Prototype.Browser.IE) {
+ var buttonMap = { 0: 1, 1: 4, 2: 2 };
+ isButton = function(event, code) {
+ return event.button == buttonMap[code];
+ };
+
+ } else if (Prototype.Browser.WebKit) {
+ isButton = function(event, code) {
+ switch (code) {
+ case 0: return event.which == 1 && !event.metaKey;
+ case 1: return event.which == 1 && event.metaKey;
+ default: return false;
+ }
+ };
- } else if (Prototype.Browser.WebKit) {
- isButton = function(event, code) {
- switch (code) {
- case 0: return event.which == 1 && !event.metaKey;
- case 1: return event.which == 1 && event.metaKey;
- default: return false;
- }
- };
+ } else {
+ isButton = function(event, code) {
+ return event.which ? (event.which === code + 1) : (event.button
+ === code);
+ };
+ }
- } else {
- isButton = function(event, code) {
- return event.which ? (event.which === code + 1) : (event.button === code);
+ return {
+ isLeftClick: function(event) {
+ return isButton(event, 0)
+ },
+ isMiddleClick: function(event) {
+ return isButton(event, 1)
+ },
+ isRightClick: function(event) {
+ return isButton(event, 2)
+ },
+
+ element: function(event) {
+ event = Event.extend(event);
+
+ var node = event.target,
+ type = event.type,
+ currentTarget = event.currentTarget;
+
+ if (currentTarget && currentTarget.tagName) {
+ // Firefox screws up the "click" event when moving between radio buttons
+ // via arrow keys. It also screws up the "load" and "error" events on images,
+ // reporting the document as the target instead of the original image.
+ if (type === 'load' || type === 'error' || (type === 'click'
+ && currentTarget.tagName.toLowerCase() === 'input'
+ && currentTarget.type === 'radio'))
+ node = currentTarget;
+ }
+ if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
+ return Element.extend(node);
+ },
+
+ findElement: function(event, expression) {
+ var element = Event.element(event);
+ if (!expression) return element;
+ var elements = [element].concat(element.ancestors());
+ return Selector.findElement(elements, expression, 0);
+ },
+
+ pointer: function(event) {
+ var docElement = document.documentElement,
+ body = document.body || { scrollLeft: 0, scrollTop: 0 };
+ return {
+ x: event.pageX || (event.clientX + (docElement.scrollLeft
+ || body.scrollLeft) - (docElement.clientLeft || 0)),
+ y: event.pageY || (event.clientY + (docElement.scrollTop
+ || body.scrollTop) - (docElement.clientTop || 0))
+ };
+ },
+
+ pointerX: function(event) {
+ return Event.pointer(event).x
+ },
+ pointerY: function(event) {
+ return Event.pointer(event).y
+ },
+
+ stop: function(event) {
+ Event.extend(event);
+ event.preventDefault();
+ event.stopPropagation();
+ event.stopped = true;
+ }
};
- }
-
- return {
- isLeftClick: function(event) { return isButton(event, 0) },
- isMiddleClick: function(event) { return isButton(event, 1) },
- isRightClick: function(event) { return isButton(event, 2) },
-
- element: function(event) {
- event = Event.extend(event);
-
- var node = event.target,
- type = event.type,
- currentTarget = event.currentTarget;
-
- if (currentTarget && currentTarget.tagName) {
- // Firefox screws up the "click" event when moving between radio buttons
- // via arrow keys. It also screws up the "load" and "error" events on images,
- // reporting the document as the target instead of the original image.
- if (type === 'load' || type === 'error' ||
- (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'
- && currentTarget.type === 'radio'))
- node = currentTarget;
- }
- if (node.nodeType == Node.TEXT_NODE) node = node.parentNode;
- return Element.extend(node);
- },
-
- findElement: function(event, expression) {
- var element = Event.element(event);
- if (!expression) return element;
- var elements = [element].concat(element.ancestors());
- return Selector.findElement(elements, expression, 0);
- },
-
- pointer: function(event) {
- var docElement = document.documentElement,
- body = document.body || { scrollLeft: 0, scrollTop: 0 };
- return {
- x: event.pageX || (event.clientX +
- (docElement.scrollLeft || body.scrollLeft) -
- (docElement.clientLeft || 0)),
- y: event.pageY || (event.clientY +
- (docElement.scrollTop || body.scrollTop) -
- (docElement.clientTop || 0))
- };
- },
-
- pointerX: function(event) { return Event.pointer(event).x },
- pointerY: function(event) { return Event.pointer(event).y },
-
- stop: function(event) {
- Event.extend(event);
- event.preventDefault();
- event.stopPropagation();
- event.stopped = true;
- }
- };
})();
Event.extend = (function() {
- var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
- m[name] = Event.Methods[name].methodize();
- return m;
- });
-
- if (Prototype.Browser.IE) {
- Object.extend(methods, {
- stopPropagation: function() { this.cancelBubble = true },
- preventDefault: function() { this.returnValue = false },
- inspect: function() { return "[object Event]" }
+ var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
+ m[name] = Event.Methods[name].methodize();
+ return m;
});
- return function(event) {
- if (!event) return false;
- if (event._extendedByPrototype) return event;
-
- event._extendedByPrototype = Prototype.emptyFunction;
- var pointer = Event.pointer(event);
- Object.extend(event, {
- target: event.srcElement,
- relatedTarget: Event.relatedTarget(event),
- pageX: pointer.x,
- pageY: pointer.y
- });
- return Object.extend(event, methods);
- };
+ if (Prototype.Browser.IE) {
+ Object.extend(methods, {
+ stopPropagation: function() {
+ this.cancelBubble = true
+ },
+ preventDefault: function() {
+ this.returnValue = false
+ },
+ inspect: function() {
+ return "[object Event]"
+ }
+ });
- } else {
- Event.prototype = Event.prototype || document.createEvent("HTMLEvents")['__proto__'];
- Object.extend(Event.prototype, methods);
- return Prototype.K;
- }
+ return function(event) {
+ if (!event) return false;
+ if (event._extendedByPrototype) return event;
+
+ event._extendedByPrototype = Prototype.emptyFunction;
+ var pointer = Event.pointer(event);
+ Object.extend(event, {
+ target: event.srcElement,
+ relatedTarget: Event.relatedTarget(event),
+ pageX: pointer.x,
+ pageY: pointer.y
+ });
+ return Object.extend(event, methods);
+ };
+
+ } else {
+ Event.prototype = Event.prototype
+ || document.createEvent("HTMLEvents")['__proto__'];
+ Object.extend(Event.prototype, methods);
+ return Prototype.K;
+ }
})();
Object.extend(Event, (function() {
- var cache = Event.cache;
-
- function getEventID(element) {
- if (element._prototypeEventID) return element._prototypeEventID[0];
- arguments.callee.id = arguments.callee.id || 1;
- return element._prototypeEventID = [++arguments.callee.id];
- }
-
- function getDOMEventName(eventName) {
- if (eventName && eventName.include(':')) return "dataavailable";
- return eventName;
- }
-
- function getCacheForID(id) {
- return cache[id] = cache[id] || { };
- }
-
- function getWrappersForEventName(id, eventName) {
- var c = getCacheForID(id);
- return c[eventName] = c[eventName] || [];
- }
-
- function createWrapper(element, eventName, handler) {
- var id = getEventID(element);
- var c = getWrappersForEventName(id, eventName);
- if (c.pluck("handler").include(handler)) return false;
-
- var wrapper = function(event) {
- if (!Event || !Event.extend ||
- (event.eventName && event.eventName != eventName))
- return false;
-
- Event.extend(event);
- handler.call(element, event);
- };
+ var cache = Event.cache;
- wrapper.handler = handler;
- c.push(wrapper);
- return wrapper;
- }
-
- function findWrapper(id, eventName, handler) {
- var c = getWrappersForEventName(id, eventName);
- return c.find(function(wrapper) { return wrapper.handler == handler });
- }
-
- function destroyWrapper(id, eventName, handler) {
- var c = getCacheForID(id);
- if (!c[eventName]) return false;
- c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
- }
-
- function destroyCache() {
- for (var id in cache)
- for (var eventName in cache[id])
- cache[id][eventName] = null;
- }
-
-
- // Internet Explorer needs to remove event handlers on page unload
- // in order to avoid memory leaks.
- if (window.attachEvent) {
- window.attachEvent("onunload", destroyCache);
- }
-
- // Safari has a dummy event handler on page unload so that it won't
- // use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
- // object when page is returned to via the back button using its bfcache.
- if (Prototype.Browser.WebKit) {
- window.addEventListener('unload', Prototype.emptyFunction, false);
- }
-
- return {
- observe: function(element, eventName, handler) {
- element = $(element);
- var name = getDOMEventName(eventName);
-
- var wrapper = createWrapper(element, eventName, handler);
- if (!wrapper) return element;
-
- if (element.addEventListener) {
- element.addEventListener(name, wrapper, false);
- } else {
- element.attachEvent("on" + name, wrapper);
- }
-
- return element;
- },
-
- stopObserving: function(element, eventName, handler) {
- element = $(element);
- var id = getEventID(element), name = getDOMEventName(eventName);
-
- if (!handler && eventName) {
- getWrappersForEventName(id, eventName).each(function(wrapper) {
- element.stopObserving(eventName, wrapper.handler);
- });
- return element;
+ function getEventID(element) {
+ if (element._prototypeEventID) return element._prototypeEventID[0];
+ arguments.callee.id = arguments.callee.id || 1;
+ return element._prototypeEventID = [++arguments.callee.id];
+ }
- } else if (!eventName) {
- Object.keys(getCacheForID(id)).each(function(eventName) {
- element.stopObserving(eventName);
- });
- return element;
- }
+ function getDOMEventName(eventName) {
+ if (eventName && eventName.include(':')) return "dataavailable";
+ return eventName;
+ }
+
+ function getCacheForID(id) {
+ return cache[id] = cache[id] || { };
+ }
- var wrapper = findWrapper(id, eventName, handler);
- if (!wrapper) return element;
+ function getWrappersForEventName(id, eventName) {
+ var c = getCacheForID(id);
+ return c[eventName] = c[eventName] || [];
+ }
- if (element.removeEventListener) {
- element.removeEventListener(name, wrapper, false);
- } else {
- element.detachEvent("on" + name, wrapper);
- }
+ function createWrapper(element, eventName, handler) {
+ var id = getEventID(element);
+ var c = getWrappersForEventName(id, eventName);
+ if (c.pluck("handler").include(handler)) return false;
- destroyWrapper(id, eventName, handler);
+ var wrapper = function(event) {
+ if (!Event || !Event.extend || (event.eventName && event.eventName
+ != eventName))
+ return false;
- return element;
- },
+ Event.extend(event);
+ handler.call(element, event);
+ };
- fire: function(element, eventName, memo) {
- element = $(element);
- if (element == document && document.createEvent && !element.dispatchEvent)
- element = document.documentElement;
+ wrapper.handler = handler;
+ c.push(wrapper);
+ return wrapper;
+ }
- var event;
- if (document.createEvent) {
- event = document.createEvent("HTMLEvents");
- event.initEvent("dataavailable", true, true);
- } else {
- event = document.createEventObject();
- event.eventType = "ondataavailable";
- }
+ function findWrapper(id, eventName, handler) {
+ var c = getWrappersForEventName(id, eventName);
+ return c.find(function(wrapper) {
+ return wrapper.handler == handler
+ });
+ }
+
+ function destroyWrapper(id, eventName, handler) {
+ var c = getCacheForID(id);
+ if (!c[eventName]) return false;
+ c[eventName]
+ = c[eventName].without(findWrapper(id, eventName, handler));
+ }
- event.eventName = eventName;
- event.memo = memo || { };
+ function destroyCache() {
+ for (var id in cache)
+ for (var eventName in cache[id])
+ cache[id][eventName] = null;
+ }
- if (document.createEvent) {
- element.dispatchEvent(event);
- } else {
- element.fireEvent(event.eventType, event);
- }
+ // Internet Explorer needs to remove event handlers on page unload
+ // in order to avoid memory leaks.
+ if (window.attachEvent) {
+ window.attachEvent("onunload", destroyCache);
+ }
- return Event.extend(event);
+ // Safari has a dummy event handler on page unload so that it won't
+ // use its bfcache. Safari <= 3.1 has an issue with restoring the "document"
+ // object when page is returned to via the back button using its bfcache.
+ if (Prototype.Browser.WebKit) {
+ window.addEventListener('unload', Prototype.emptyFunction, false);
}
- };
+
+ return {
+ observe: function(element, eventName, handler) {
+ element = $(element);
+ var name = getDOMEventName(eventName);
+
+ var wrapper = createWrapper(element, eventName, handler);
+ if (!wrapper) return element;
+
+ if (element.addEventListener) {
+ element.addEventListener(name, wrapper, false);
+ } else {
+ element.attachEvent("on" + name, wrapper);
+ }
+
+ return element;
+ },
+
+ stopObserving: function(element, eventName, handler) {
+ element = $(element);
+ var id = getEventID(element), name = getDOMEventName(eventName);
+
+ if (!handler && eventName) {
+ getWrappersForEventName(id, eventName).each(function(wrapper) {
+ element.stopObserving(eventName, wrapper.handler);
+ });
+ return element;
+
+ } else if (!eventName) {
+ Object.keys(getCacheForID(id)).each(function(eventName) {
+ element.stopObserving(eventName);
+ });
+ return element;
+ }
+
+ var wrapper = findWrapper(id, eventName, handler);
+ if (!wrapper) return element;
+
+ if (element.removeEventListener) {
+ element.removeEventListener(name, wrapper, false);
+ } else {
+ element.detachEvent("on" + name, wrapper);
+ }
+
+ destroyWrapper(id, eventName, handler);
+
+ return element;
+ },
+
+ fire: function(element, eventName, memo) {
+ element = $(element);
+ if (element == document && document.createEvent
+ && !element.dispatchEvent)
+ element = document.documentElement;
+
+ var event;
+ if (document.createEvent) {
+ event = document.createEvent("HTMLEvents");
+ event.initEvent("dataavailable", true, true);
+ } else {
+ event = document.createEventObject();
+ event.eventType = "ondataavailable";
+ }
+
+ event.eventName = eventName;
+ event.memo = memo || { };
+
+ if (document.createEvent) {
+ element.dispatchEvent(event);
+ } else {
+ element.fireEvent(event.eventType, event);
+ }
+
+ return Event.extend(event);
+ }
+ };
})());
Object.extend(Event, Event.Methods);
Element.addMethods({
- fire: Event.fire,
- observe: Event.observe,
- stopObserving: Event.stopObserving
+ fire: Event.fire,
+ observe: Event.observe,
+ stopObserving: Event.stopObserving
});
Object.extend(document, {
- fire: Element.Methods.fire.methodize(),
- observe: Element.Methods.observe.methodize(),
- stopObserving: Element.Methods.stopObserving.methodize(),
- loaded: false
+ fire: Element.Methods.fire.methodize(),
+ observe: Element.Methods.observe.methodize(),
+ stopObserving: Element.Methods.stopObserving.methodize(),
+ loaded: false
});
(function() {
- /* Support for the DOMContentLoaded event is based on work by Dan Webb,
+ /* Support for the DOMContentLoaded event is based on work by Dan Webb,
Matthias Miller, Dean Edwards and John Resig. */
- var timer;
+ var timer;
- function fireContentLoadedEvent() {
- if (document.loaded) return;
- if (timer) window.clearInterval(timer);
- document.fire("dom:loaded");
- document.loaded = true;
- }
+ function fireContentLoadedEvent() {
+ if (document.loaded) return;
+ if (timer) window.clearInterval(timer);
+ document.fire("dom:loaded");
+ document.loaded = true;
+ }
- if (document.addEventListener) {
- if (Prototype.Browser.WebKit) {
- timer = window.setInterval(function() {
- if (/loaded|complete/.test(document.readyState))
- fireContentLoadedEvent();
- }, 0);
+ if (document.addEventListener) {
+ if (Prototype.Browser.WebKit) {
+ timer = window.setInterval(function() {
+ if (/loaded|complete/.test(document.readyState))
+ fireContentLoadedEvent();
+ }, 0);
- Event.observe(window, "load", fireContentLoadedEvent);
+ Event.observe(window, "load", fireContentLoadedEvent);
+
+ } else {
+ document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false);
+ }
} else {
- document.addEventListener("DOMContentLoaded",
- fireContentLoadedEvent, false);
+ document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
+ $("__onDOMContentLoaded").onreadystatechange = function() {
+ if (this.readyState == "complete") {
+ this.onreadystatechange = null;
+ fireContentLoadedEvent();
+ }
+ };
}
-
- } else {
- document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
- $("__onDOMContentLoaded").onreadystatechange = function() {
- if (this.readyState == "complete") {
- this.onreadystatechange = null;
- fireContentLoadedEvent();
- }
- };
- }
})();
/*------------------------------- DEPRECATED -------------------------------*/
@@ -4139,21 +4291,21 @@ var Toggle = { display: Element.toggle };
Element.Methods.childOf = Element.Methods.descendantOf;
var Insertion = {
- Before: function(element, content) {
- return Element.insert(element, {before:content});
- },
+ Before: function(element, content) {
+ return Element.insert(element, {before:content});
+ },
- Top: function(element, content) {
- return Element.insert(element, {top:content});
- },
+ Top: function(element, content) {
+ return Element.insert(element, {top:content});
+ },
- Bottom: function(element, content) {
- return Element.insert(element, {bottom:content});
- },
+ Bottom: function(element, content) {
+ return Element.insert(element, {bottom:content});
+ },
- After: function(element, content) {
- return Element.insert(element, {after:content});
- }
+ After: function(element, content) {
+ return Element.insert(element, {after:content});
+ }
};
var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
@@ -4161,156 +4313,156 @@ var $continue = new Error('"throw $continue" is deprecated, use "return" instead
// This should be moved to script.aculo.us; notice the deprecated methods
// further below, that map to the newer Element methods.
var Position = {
- // set to true if needed, warning: firefox performance problems
- // NOT neeeded for page scrolling, only if draggable contained in
- // scrollable elements
- includeScrollOffsets: false,
-
- // must be called before calling withinIncludingScrolloffset, every time the
- // page is scrolled
- prepare: function() {
- this.deltaX = window.pageXOffset
- || document.documentElement.scrollLeft
- || document.body.scrollLeft
- || 0;
- this.deltaY = window.pageYOffset
- || document.documentElement.scrollTop
- || document.body.scrollTop
- || 0;
- },
-
- // caches x/y coordinate pair to use with overlap
- within: function(element, x, y) {
- if (this.includeScrollOffsets)
- return this.withinIncludingScrolloffsets(element, x, y);
- this.xcomp = x;
- this.ycomp = y;
- this.offset = Element.cumulativeOffset(element);
-
- return (y >= this.offset[1] &&
- y < this.offset[1] + element.offsetHeight &&
- x >= this.offset[0] &&
- x < this.offset[0] + element.offsetWidth);
- },
-
- withinIncludingScrolloffsets: function(element, x, y) {
- var offsetcache = Element.cumulativeScrollOffset(element);
-
- this.xcomp = x + offsetcache[0] - this.deltaX;
- this.ycomp = y + offsetcache[1] - this.deltaY;
- this.offset = Element.cumulativeOffset(element);
-
- return (this.ycomp >= this.offset[1] &&
- this.ycomp < this.offset[1] + element.offsetHeight &&
- this.xcomp >= this.offset[0] &&
- this.xcomp < this.offset[0] + element.offsetWidth);
- },
-
- // within must be called directly before
- overlap: function(mode, element) {
- if (!mode) return 0;
- if (mode == 'vertical')
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
- element.offsetHeight;
- if (mode == 'horizontal')
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
- element.offsetWidth;
- },
-
- // Deprecation layer -- use newer Element methods now (1.5.2).
-
- cumulativeOffset: Element.Methods.cumulativeOffset,
-
- positionedOffset: Element.Methods.positionedOffset,
-
- absolutize: function(element) {
- Position.prepare();
- return Element.absolutize(element);
- },
-
- relativize: function(element) {
- Position.prepare();
- return Element.relativize(element);
- },
-
- realOffset: Element.Methods.cumulativeScrollOffset,
-
- offsetParent: Element.Methods.getOffsetParent,
-
- page: Element.Methods.viewportOffset,
-
- clone: function(source, target, options) {
- options = options || { };
- return Element.clonePosition(target, source, options);
- }
+ // set to true if needed, warning: firefox performance problems
+ // NOT neeeded for page scrolling, only if draggable contained in
+ // scrollable elements
+ includeScrollOffsets: false,
+
+ // must be called before calling withinIncludingScrolloffset, every time the
+ // page is scrolled
+ prepare: function() {
+ this.deltaX = window.pageXOffset || document.documentElement.scrollLeft
+ || document.body.scrollLeft || 0;
+ this.deltaY = window.pageYOffset || document.documentElement.scrollTop
+ || document.body.scrollTop || 0;
+ },
+
+ // caches x/y coordinate pair to use with overlap
+ within: function(element, x, y) {
+ if (this.includeScrollOffsets)
+ return this.withinIncludingScrolloffsets(element, x, y);
+ this.xcomp = x;
+ this.ycomp = y;
+ this.offset = Element.cumulativeOffset(element);
+
+ return (y >= this.offset[1] && y < this.offset[1] + element.offsetHeight
+ && x >= this.offset[0] && x < this.offset[0]
+ + element.offsetWidth);
+ },
+
+ withinIncludingScrolloffsets: function(element, x, y) {
+ var offsetcache = Element.cumulativeScrollOffset(element);
+
+ this.xcomp = x + offsetcache[0] - this.deltaX;
+ this.ycomp = y + offsetcache[1] - this.deltaY;
+ this.offset = Element.cumulativeOffset(element);
+
+ return (this.ycomp >= this.offset[1] && this.ycomp < this.offset[1]
+ + element.offsetHeight && this.xcomp >= this.offset[0]
+ && this.xcomp < this.offset[0] + element.offsetWidth);
+ },
+
+ // within must be called directly before
+ overlap: function(mode, element) {
+ if (!mode) return 0;
+ if (mode == 'vertical')
+ return ((this.offset[1] + element.offsetHeight) - this.ycomp)
+ / element.offsetHeight;
+ if (mode == 'horizontal')
+ return ((this.offset[0] + element.offsetWidth) - this.xcomp)
+ / element.offsetWidth;
+ },
+
+ // Deprecation layer -- use newer Element methods now (1.5.2).
+
+ cumulativeOffset: Element.Methods.cumulativeOffset,
+
+ positionedOffset: Element.Methods.positionedOffset,
+
+ absolutize: function(element) {
+ Position.prepare();
+ return Element.absolutize(element);
+ },
+
+ relativize: function(element) {
+ Position.prepare();
+ return Element.relativize(element);
+ },
+
+ realOffset: Element.Methods.cumulativeScrollOffset,
+
+ offsetParent: Element.Methods.getOffsetParent,
+
+ page: Element.Methods.viewportOffset,
+
+ clone: function(source, target, options) {
+ options = options || { };
+ return Element.clonePosition(target, source, options);
+ }
};
/*--------------------------------------------------------------------------*/
-if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
- function iter(name) {
- return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
- }
-
- instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
- function(element, className) {
- className = className.toString().strip();
- var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
- return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
- } : function(element, className) {
- className = className.toString().strip();
- var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
- if (!classNames && !className) return elements;
-
- var nodes = $(element).getElementsByTagName('*');
- className = ' ' + className + ' ';
-
- for (var i = 0, child, cn; child = nodes[i]; i++) {
- if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
- (classNames && classNames.all(function(name) {
- return !name.toString().blank() && cn.include(' ' + name + ' ');
- }))))
- elements.push(Element.extend(child));
+if (!document.getElementsByClassName) document.getElementsByClassName
+ = function(instanceMethods) {
+ function iter(name) {
+ return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' "
+ + name + " ')]";
}
- return elements;
- };
- return function(className, parentElement) {
- return $(parentElement || document.body).getElementsByClassName(className);
- };
+ instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath
+ ? function(element, className) {
+ className = className.toString().strip();
+ var cond = /\s/.test(className) ? $w(className).map(iter).join('')
+ : iter(className);
+ return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
+ } : function(element, className) {
+ className = className.toString().strip();
+ var elements = [], classNames = (/\s/.test(className) ? $w(className)
+ : null);
+ if (!classNames && !className) return elements;
+
+ var nodes = $(element).getElementsByTagName('*');
+ className = ' ' + className + ' ';
+
+ for (var i = 0, child, cn; child = nodes[i]; i++) {
+ if (child.className && (cn = ' ' + child.className + ' ')
+ && (cn.include(className) || (classNames
+ && classNames.all(function(name) {
+ return !name.toString().blank() && cn.include(' ' + name + ' ');
+ }))))
+ elements.push(Element.extend(child));
+ }
+ return elements;
+ };
+
+ return function(className, parentElement) {
+ return $(parentElement
+ || document.body).getElementsByClassName(className);
+ };
}(Element.Methods);
/*--------------------------------------------------------------------------*/
Element.ClassNames = Class.create();
Element.ClassNames.prototype = {
- initialize: function(element) {
- this.element = $(element);
- },
-
- _each: function(iterator) {
- this.element.className.split(/\s+/).select(function(name) {
- return name.length > 0;
- })._each(iterator);
- },
-
- set: function(className) {
- this.element.className = className;
- },
-
- add: function(classNameToAdd) {
- if (this.include(classNameToAdd)) return;
- this.set($A(this).concat(classNameToAdd).join(' '));
- },
-
- remove: function(classNameToRemove) {
- if (!this.include(classNameToRemove)) return;
- this.set($A(this).without(classNameToRemove).join(' '));
- },
-
- toString: function() {
- return $A(this).join(' ');
- }
+ initialize: function(element) {
+ this.element = $(element);
+ },
+
+ _each: function(iterator) {
+ this.element.className.split(/\s+/).select(function(name) {
+ return name.length > 0;
+ })._each(iterator);
+ },
+
+ set: function(className) {
+ this.element.className = className;
+ },
+
+ add: function(classNameToAdd) {
+ if (this.include(classNameToAdd)) return;
+ this.set($A(this).concat(classNameToAdd).join(' '));
+ },
+
+ remove: function(classNameToRemove) {
+ if (!this.include(classNameToRemove)) return;
+ this.set($A(this).without(classNameToRemove).join(' '));
+ },
+
+ toString: function() {
+ return $A(this).join(' ');
+ }
};
Object.extend(Element.ClassNames.prototype, Enumerable);
diff --git a/samples/src/main/java/gwtquery/samples/public/racetrack.html b/samples/src/main/java/gwtquery/samples/public/racetrack.html
index 62ce171d..46fdc541 100644
--- a/samples/src/main/java/gwtquery/samples/public/racetrack.html
+++ b/samples/src/main/java/gwtquery/samples/public/racetrack.html
@@ -36,10 +36,9 @@
.horse span {
font-weight: bold;
font-size: 150%;
- color: white;
- /*left: -70px;*/
- /*top: -30px;*/
- /*position: relative;*/
+ color: white; /*left: -70px;*/
+ /*top: -30px;*/
+ /*position: relative;*/
}
</style>
</head>
@@ -47,10 +46,12 @@
<div id="racefield"
style="width:790px; background-image: url(grass-texture-small.jpg); background-repeat: repeat;">
<div id="gwthorse" class="horse">
- <nobr><img class="himg" src="horse.gif"><img src="gwt-logo-cs.gif"></nobr>
+ <nobr><img class="himg" src="horse.gif"><img src="gwt-logo-cs.gif">
+ </nobr>
</div>
<div id="jqueryhorse" class="horse">
- <nobr><img class="himg" src="horse.gif"><img src="logo_jquery.gif"></nobr>
+ <nobr><img class="himg" src="horse.gif"><img src="logo_jquery.gif">
+ </nobr>
</div>
<div id="dojohorse" class="horse">