summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore5
-rw-r--r--Makefile22
-rw-r--r--README73
-rwxr-xr-xbin/build2
-rw-r--r--docs/.gitignore1
-rw-r--r--docs/examples/assets/css/jquerytools.dateinput.skin1.css144
-rw-r--r--docs/examples/assets/css/jquerytools.tabs.tabs-no-images.css (renamed from docs/examples/assets/css/tabs-no-images.css)17
-rw-r--r--docs/examples/assets/css/style.css2
-rw-r--r--docs/examples/assets/js/.gitignore1
-rw-r--r--docs/examples/assets/js/dependencies.js367
-rw-r--r--docs/examples/index.html39
-rw-r--r--docs/examples/jarmon_example_recipes.js126
-rw-r--r--jarmon/external.doc.js63
-rw-r--r--jarmon/jarmon.js1055
-rw-r--r--jarmon/jarmon.test.js137
-rw-r--r--jarmonbuild/commands.py150
-rw-r--r--jarmonbuild/jsdoc.json11
-rw-r--r--jarmonbuild/yuidoc_template/assets/ac-js162
-rw-r--r--jarmonbuild/yuidoc_template/assets/api-js42
-rw-r--r--jarmonbuild/yuidoc_template/assets/api.css242
-rw-r--r--jarmonbuild/yuidoc_template/assets/bg_hd.gifbin96 -> 0 bytes
-rw-r--r--jarmonbuild/yuidoc_template/assets/reset-fonts-grids-min.css7
-rw-r--r--jarmonbuild/yuidoc_template/classmap.tmpl15
-rw-r--r--jarmonbuild/yuidoc_template/index.tmpl9
-rw-r--r--jarmonbuild/yuidoc_template/main.tmpl685
25 files changed, 831 insertions, 2546 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f825d82
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.pyc
+
+/build/
+/test.rrd
+/jarmon-*.zip
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..5b564b3
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,22 @@
+VERSION = 16.12
+
+all: jsdeps apidocs testdata
+dist: release
+clean:
+ git clean -fdX
+.PHONY: all dist clean
+
+.PHONY: release jsdeps apidocs testdata
+release:
+ bin/build $@ $(VERSION)
+jsdeps:
+ bin/build $@ .
+apidocs:
+ bin/build $@ $(VERSION) .
+testdata:
+ bin/build $@ .
+
+docs/examples/assets/js/dependencies.js: jsdeps
+docs/apidocs: apidocs
+test.rrd: testdata
+jarmon-$(VERSION).zip: release
diff --git a/README b/README
index d66c517..2da9744 100644
--- a/README
+++ b/README
@@ -1,48 +1,47 @@
-Jarmon 11.10.1
-
-
-What is this?
-=============
-jarmon.js contains various wrappers and convenience fuctions for working with
-the javascriptRRD, Flot and RRD files generated by eg Collectd.
-Additionally, there is a fully working example which demonstrates how to use
-jarmon.js and how to integrate it with other javascript components - such as
-calendar date pickers etc.
+jarmon.js contains various wrappers and convenience fuctions for
+working with the [javascriptRRD][], [Flot][] and RRD files generated
+by eg [Collectd][]. Additionally, there is a fully working example
+which demonstrates how to use jarmon.js and how to integrate it with
+other javascript components - such as calendar date pickers etc.
+[javascriptRRD]: http://javascriptrrd.sourceforge.net/
+[Flot]: http://www.flotcharts.org/
+[Collectd]: https://collectd.org/
Debian / Ubuntu Quick Start
===========================
-There is a demo html page in the docs/examples folder.
-To get this demo working, you will need to serve that page from a
-local webserver and serve the folder that contains your RRD files.
-
-This demo is designed to work with the RRD files generated by
-<a href="http://collectd.org/">Collectd</a>.
-
-# Install and configure collectd (enable the rrd plugin)
-$ aptitude install collectd
-# Create a project folder and check out the code
-$ mkdir -p ~/Projects/Jarmon
-$ cd ~/Projects/Jarmon
-$ bzr branch lp:~richardw/jarmon/trunk
-$ cd trunk
-
-# Link to the collectd rrd folder
-$ ln -s /var/lib/collectd/rrd/localhost docs/examples/data
-
-# Start a local webserver - here we use Twisted, but there are other web server
-# config examples in docs/
-$ aptitude install twisted
-$ twistd -n web --port 8080 --path .
-
-$ firefox http://localhost:8080/docs/examples/index.html
+There is a demo html page in the `docs/examples` folder. To get this
+demo working, you will need to serve that page from a local webserver
+and serve the folder that contains your RRD files.
+This demo is designed to work with the RRD files generated by
+[Collectd][].
+
+ # Install and configure collectd (enable the rrd plugin)
+ $ aptitude install collectd
+
+ # Create a project folder and check out the code
+ $ mkdir -p ~/Projects/Jarmon
+ $ cd ~/Projects/Jarmon
+ $ bzr branch lp:~richardw/jarmon/trunk
+ $ cd trunk
+
+ # Link to the collectd rrd folder
+ $ ln -s /var/lib/collectd/rrd/localhost docs/examples/data
+
+ # Start a local webserver - here we use Python 2's built-in web
+ # server, but there are other web server config examples in docs/
+ $ python2 -m SimpleHTTPServer 8080
+
+ $ firefox http://localhost:8080/docs/examples/index.html
Next Steps
==========
+
Examine:
- * docs/examples/index.html
- * docs/examples/jarmon_example_recipes.js
+ * `docs/examples/index.html`
+ * `docs/examples/jarmon_example_recipes.js`
-...for examples of how to use jarmon.js then add your own chart recipes.
+...for examples of how to use jarmon.js then add your own chart
+recipes.
diff --git a/bin/build b/bin/build
index 54a4b62..3b95e94 100755
--- a/bin/build
+++ b/bin/build
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
import os
import sys
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 0000000..6a7cbfd
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1 @@
+/apidocs/
diff --git a/docs/examples/assets/css/jquerytools.dateinput.skin1.css b/docs/examples/assets/css/jquerytools.dateinput.skin1.css
deleted file mode 100644
index 69aedb8..0000000
--- a/docs/examples/assets/css/jquerytools.dateinput.skin1.css
+++ /dev/null
@@ -1,144 +0,0 @@
-/* For the details, see: http://flowplayer.org/tools/dateinput/index.html#skinning */
-
-/* the input field */
-.date {
- border:1px solid #ccc;
- font-size:18px;
- padding:4px;
- text-align:center;
- width:194px;
- -moz-box-shadow:0 0 10px #eee inset;
-}
-
-/* calendar root element */
-#calroot {
- margin-top:-1px;
- width:198px;
- padding:2px;
- background-color:#fff;
- font-size:11px;
- border:1px solid #ccc;
- -moz-border-radius:5px;
- -webkit-border-radius:5px;
- -moz-box-shadow: 0 0 15px #666;
- -webkit-box-shadow: 0 0 15px #666;
-}
-
-/* head. contains title, prev/next month controls and possible month/year selectors */
-#calhead {
- padding:2px 0;
- height:22px;
-}
-
-#caltitle {
- font-size:14px;
- color:#0150D1;
- float:left;
- text-align:center;
- width:155px;
- line-height:20px;
- text-shadow:0 1px 0 #ddd;
-}
-
-#calnext, #calprev {
- display:block;
- width:20px;
- height:20px;
- background:transparent url(../icons/prev.gif) no-repeat scroll center center;
- float:left;
- cursor:pointer;
-}
-
-#calnext {
- background-image:url(../icons/next.gif);
- float:right;
-}
-
-#calprev.caldisabled, #calnext.caldisabled {
- visibility:hidden;
-}
-
-/* year/month selector */
-#caltitle select {
- font-size:10px;
-}
-
-/* names of the days */
-#caldays {
- height:14px;
- border-bottom:1px solid #ddd;
-}
-
-#caldays span {
- display:block;
- float:left;
- width:28px;
- text-align:center;
-}
-
-/* container for weeks */
-#calweeks {
- background-color:#fff;
- margin-top:4px;
-}
-
-/* single week */
-.calweek {
- clear:left;
- height:22px;
-}
-
-/* single day */
-.calweek a {
- display:block;
- float:left;
- width:27px;
- height:20px;
- text-decoration:none;
- font-size:11px;
- margin-left:1px;
- text-align:center;
- line-height:20px;
- color:#666;
- -moz-border-radius:3px;
- -webkit-border-radius:3px;
-}
-
-/* different states */
-.calweek a:hover, .calfocus {
- background-color:#ddd;
-}
-
-/* sunday */
-a.calsun {
- color:red;
-}
-
-/* offmonth day */
-a.caloff {
- color:#ccc;
-}
-
-a.caloff:hover {
- background-color:rgb(245, 245, 250);
-}
-
-
-/* unselecteble day */
-a.caldisabled {
- background-color:#efefef !important;
- color:#ccc !important;
- cursor:default;
-}
-
-/* current day */
-#calcurrent {
- background-color:#498CE2;
- color:#fff;
-}
-
-/* today */
-#caltoday {
- background-color:#333;
- color:#fff;
-}
diff --git a/docs/examples/assets/css/tabs-no-images.css b/docs/examples/assets/css/jquerytools.tabs.tabs-no-images.css
index 58a54b4..26349cc 100644
--- a/docs/examples/assets/css/tabs-no-images.css
+++ b/docs/examples/assets/css/jquerytools.tabs.tabs-no-images.css
@@ -1,3 +1,9 @@
+/* Skin for jQuery Tools tabs.
+ *
+ * Based on <https://github.com/jquerytools/jquerytools.github.com/blob/master/media/css/tabs-no-images.css>.
+ *
+ * Documentation on tabs: <http://jquerytools.github.io/documentation/tabs/index.html>
+ */
/* root element for tabs */
ul.css-tabs {
@@ -28,10 +34,12 @@ ul.css-tabs a {
background-color:#efefef;
color:#777;
margin-right:2px;
- -moz-border-radius-topleft: 4px;
- -moz-border-radius-topright:4px;
position:relative;
top:1px;
+ outline:0;
+ border-radius:4px 4px 0 0;
+ -moz-border-radius:4px 4px 0 0;
+ -webkit-border-radius:4px 4px 0 0;
}
ul.css-tabs a:hover {
@@ -42,7 +50,7 @@ ul.css-tabs a:hover {
/* selected tab */
ul.css-tabs a.current {
background-color:#ddd;
- border-bottom:2px solid #ddd;
+ border-bottom:1px solid #ddd;
color:#000;
cursor:default;
}
@@ -57,6 +65,3 @@ ul.css-tabs a.current {
padding:15px 20px;
background-color:#ddd;
}
-
-
-
diff --git a/docs/examples/assets/css/style.css b/docs/examples/assets/css/style.css
index e82ec30..2968265 100644
--- a/docs/examples/assets/css/style.css
+++ b/docs/examples/assets/css/style.css
@@ -19,7 +19,7 @@ p, li, dt, dd, td, th, div {
.loading .title {
background-repeat: no-repeat;
background-position: 0 50%;
- background-image: url(/assets/icons/loading.gif);
+ background-image: url(../icons/loading.gif);
}
.range-preview {
diff --git a/docs/examples/assets/js/.gitignore b/docs/examples/assets/js/.gitignore
new file mode 100644
index 0000000..28cff73
--- /dev/null
+++ b/docs/examples/assets/js/.gitignore
@@ -0,0 +1 @@
+/dependencies.js
diff --git a/docs/examples/assets/js/dependencies.js b/docs/examples/assets/js/dependencies.js
deleted file mode 100644
index 9f3e0ae..0000000
--- a/docs/examples/assets/js/dependencies.js
+++ /dev/null
@@ -1,367 +0,0 @@
-// Compiled with closure-compiler on 2011-09-11 10:32:10.022178
-// @code_url http://code.jquery.com/jquery-1.6.3.js
-// @code_url http://flot.googlecode.com/svn/trunk/excanvas.js
-// @code_url http://flot.googlecode.com/svn/trunk/jquery.flot.js
-// @code_url http://flot.googlecode.com/svn/trunk/jquery.flot.stack.js
-// @code_url http://flot.googlecode.com/svn/trunk/jquery.flot.selection.js
-// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/dateinput/dateinput.js
-// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/tabs/tabs.js
-// @code_url https://raw.github.com/jquerytools/jquerytools/dev/src/toolbox/toolbox.history.js
-// @compilation_level SIMPLE_OPTIMIZATIONS
-// @formatting print_input_delimiter
-// @output_format text
-// @output_info compiled_code
-// Input 0
-(function(d,j){function E(a,c,h){if(h===j&&a.nodeType===1)if(h="data-"+c.replace(xa,"$1-$2").toLowerCase(),h=a.getAttribute(h),typeof h==="string"){try{h=h==="true"?!0:h==="false"?!1:h==="null"?null:!b.isNaN(h)?parseFloat(h):ba.test(h)?b.parseJSON(h):h}catch(k){}b.data(a,c,h)}else h=j;return h}function n(a){for(var c in a)if(c!=="toJSON")return!1;return!0}function J(a,c,h){var k=c+"defer",s=c+"queue",H=c+"mark",g=b.data(a,k,j,!0);g&&(h==="queue"||!b.data(a,s,j,!0))&&(h==="mark"||!b.data(a,H,j,!0))&&
-setTimeout(function(){!b.data(a,s,j,!0)&&!b.data(a,H,j,!0)&&(b.removeData(a,k,!0),g.resolve())},0)}function D(){return!1}function l(){return!0}function x(a,c,h){var k=b.extend({},h[0]);k.type=a;k.originalEvent={};k.liveFired=j;b.event.handle.call(c,k);k.isDefaultPrevented()&&h[0].preventDefault()}function y(a){var c,h,k,s,H,g,e,d,f,p,u,A=[];s=[];H=b._data(this,"events");if(!(a.liveFired===this||!H||!H.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(u=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+
-"(\\.|$)"));a.liveFired=this;var r=H.live.slice(0);for(e=0;e<r.length;e++)H=r[e],H.origType.replace(ga,"")===a.type?s.push(H.selector):r.splice(e--,1);s=b(a.target).closest(s,a.currentTarget);for(d=0,f=s.length;d<f;d++){p=s[d];for(e=0;e<r.length;e++)if(H=r[e],p.selector===H.selector&&(!u||u.test(H.namespace))&&!p.elem.disabled){g=p.elem;k=null;if(H.preType==="mouseenter"||H.preType==="mouseleave")a.type=H.preType,(k=b(a.relatedTarget).closest(H.selector)[0])&&b.contains(g,k)&&(k=g);(!k||k!==g)&&A.push({elem:g,
-handleObj:H,level:p.level})}}for(d=0,f=A.length;d<f;d++){s=A[d];if(h&&s.level>h)break;a.currentTarget=s.elem;a.data=s.handleObj.data;a.handleObj=s.handleObj;u=s.handleObj.origHandler.apply(s.elem,arguments);if(u===!1||a.isPropagationStopped())if(h=s.level,u===!1&&(c=!1),a.isImmediatePropagationStopped())break}return c}}function V(a,c){return(a&&a!=="*"?a+".":"")+c.replace(qa,"`").replace(v,"&")}function L(a,c,h){c=c||0;if(b.isFunction(c))return b.grep(a,function(a,b){return!!c.call(a,b,a)===h});else if(c.nodeType)return b.grep(a,
-function(a){return a===c===h});else if(typeof c==="string"){var k=b.grep(a,function(a){return a.nodeType===1});if(Ga.test(c))return b.filter(c,k,!h);else c=b.filter(c,k)}return b.grep(a,function(a){return b.inArray(a,c)>=0===h})}function R(a,c){if(c.nodeType===1&&b.hasData(a)){var h=b.expando,k=b.data(a),s=b.data(c,k);if(k=k[h]){var H=k.events,s=s[h]=b.extend({},k);if(H){delete s.handle;s.events={};for(var g in H){h=0;for(k=H[g].length;h<k;h++)b.event.add(c,g+(H[g][h].namespace?".":"")+H[g][h].namespace,
-H[g][h],H[g][h].data)}}}}}function M(a,c){var h;if(c.nodeType===1){c.clearAttributes&&c.clearAttributes();c.mergeAttributes&&c.mergeAttributes(a);h=c.nodeName.toLowerCase();if(h==="object")c.outerHTML=a.outerHTML;else if(h==="input"&&(a.type==="checkbox"||a.type==="radio")){if(a.checked)c.defaultChecked=c.checked=a.checked;if(c.value!==a.value)c.value=a.value}else if(h==="option")c.selected=a.defaultSelected;else if(h==="input"||h==="textarea")c.defaultValue=a.defaultValue;c.removeAttribute(b.expando)}}
-function K(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function z(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function C(a){b.nodeName(a,"input")?z(a):"getElementsByTagName"in a&&b.grep(a.getElementsByTagName("input"),z)}function ma(a,c){c.src?b.ajax({url:c.src,async:!1,dataType:"script"}):b.globalEval((c.text||c.textContent||c.innerHTML||"").replace(gb,"/*$0*/"));c.parentNode&&c.parentNode.removeChild(c)}
-function S(a,c,h){var k=c==="width"?a.offsetWidth:a.offsetHeight,s=c==="width"?hb:ib;if(k>0)return h!=="border"&&b.each(s,function(){h||(k-=parseFloat(b.css(a,"padding"+this))||0);h==="margin"?k+=parseFloat(b.css(a,h+this))||0:k-=parseFloat(b.css(a,"border"+this+"Width"))||0}),k+"px";k=Ja(a,c,c);if(k<0||k==null)k=a.style[c]||0;k=parseFloat(k)||0;h&&b.each(s,function(){k+=parseFloat(b.css(a,"padding"+this))||0;h!=="padding"&&(k+=parseFloat(b.css(a,"border"+this+"Width"))||0);h==="margin"&&(k+=parseFloat(b.css(a,
-h+this))||0)});return k+"px"}function B(a){return function(c,h){var Z;typeof c!=="string"&&(h=c,c="*");if(b.isFunction(h))for(var k=c.toLowerCase().split(Wa),s=0,H=k.length,g,e;s<H;s++)g=k[s],(e=/^\+/.test(g))&&(g=g.substr(1)||"*"),Z=a[g]=a[g]||[],g=Z,g[e?"unshift":"push"](h)}}function O(a,c,b,k,s,H){s=s||c.dataTypes[0];H=H||{};H[s]=!0;for(var s=a[s],g=0,e=s?s.length:0,d=a===Ta,f;g<e&&(d||!f);g++)f=s[g](c,b,k),typeof f==="string"&&(!d||H[f]?f=j:(c.dataTypes.unshift(f),f=O(a,c,b,k,f,H)));if((d||!f)&&
-!H["*"])f=O(a,c,b,k,"*",H);return f}function N(a,c){var h,k,s=b.ajaxSettings.flatOptions||{};for(h in c)c[h]!==j&&((s[h]?a:k||(k={}))[h]=c[h]);k&&b.extend(!0,a,k)}function t(a,c,h,k){if(b.isArray(c))b.each(c,function(c,s){h||jb.test(a)?k(a,s):t(a+"["+(typeof s==="object"||b.isArray(s)?c:"")+"]",s,h,k)});else if(!h&&c!=null&&typeof c==="object")for(var s in c)t(a+"["+s+"]",c[s],h,k);else k(a,c)}function ra(){try{return new d.XMLHttpRequest}catch(a){}}function I(){setTimeout(Fa,0);return Pa=b.now()}
-function Fa(){Pa=j}function ca(a,c){var h={};b.each(Xa.concat.apply([],Xa.slice(0,c)),function(){h[this]=a});return h}function Aa(a){if(!Ua[a]){var c=w.body,h=b("<"+a+">").appendTo(c),k=h.css("display");h.remove();if(k==="none"||k===""){if(!Ca)Ca=w.createElement("iframe"),Ca.frameBorder=Ca.width=Ca.height=0;c.appendChild(Ca);if(!Ka||!Ca.createElement)Ka=(Ca.contentWindow||Ca.contentDocument).document,Ka.write((w.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),Ka.close();h=Ka.createElement(a);
-Ka.body.appendChild(h);k=b.css(h,"display");c.removeChild(Ca)}Ua[a]=k}return Ua[a]}function ya(a){return b.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var w=d.document,ha=d.navigator,na=d.location,b=function(){function a(){if(!c.isReady){try{w.documentElement.doScroll("left")}catch(b){setTimeout(a,1);return}c.ready()}}var c=function(a,b){return new c.fn.init(a,b,s)},b=d.jQuery,k=d.$,s,g=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,e=/\S/,f=/^\s+/,p=/\s+$/,u=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
-r=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,P=/(?:^|:|,)(?:\s*\[)+/g,ka=/(webkit)[ \/]([\w.]+)/,la=/(opera)(?:.*version)?[ \/]([\w.]+)/,v=/(msie) ([\w.]+)/,W=/(mozilla)(?:.*? rv:([\w.]+))?/,Z=/-([a-z]|[0-9])/ig,kb=/^-ms-/,lb=function(a,c){return(c+"").toUpperCase()},Y=ha.userAgent,Qa,La,T=Object.prototype.toString,Q=Object.prototype.hasOwnProperty,l=Array.prototype.push,oa=Array.prototype.slice,x=String.prototype.trim,
-z=Array.prototype.indexOf,n={};c.fn=c.prototype={constructor:c,init:function(a,b,h){var k;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(a==="body"&&!b&&w.body)return this.context=w,this[0]=w.body,this.selector=a,this.length=1,this;if(typeof a==="string")if((k=a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?[null,a,null]:g.exec(a))&&(k[1]||!b))if(k[1])return h=(b=b instanceof c?b[0]:b)?b.ownerDocument||b:w,(a=A.exec(a))?c.isPlainObject(b)?(a=[w.createElement(a[1])],
-c.fn.attr.call(a,b,!0)):a=[h.createElement(a[1])]:(a=c.buildFragment([k[1]],[h]),a=(a.cacheable?c.clone(a.fragment):a.fragment).childNodes),c.merge(this,a);else{if((b=w.getElementById(k[2]))&&b.parentNode){if(b.id!==k[2])return h.find(a);this.length=1;this[0]=b}this.context=w;this.selector=a;return this}else return!b||b.jquery?(b||h).find(a):this.constructor(b).find(a);else if(c.isFunction(a))return h.ready(a);if(a.selector!==j)this.selector=a.selector,this.context=a.context;return c.makeArray(a,
-this)},selector:"",jquery:"1.6.3",length:0,size:function(){return this.length},toArray:function(){return oa.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,h){var k=this.constructor();c.isArray(a)?l.apply(k,a):c.merge(k,a);k.prevObject=this;k.context=this.context;if(b==="find")k.selector=this.selector+(this.selector?" ":"")+h;else if(b)k.selector=this.selector+"."+b+"("+h+")";return k},each:function(a,b){return c.each(this,a,b)},
-ready:function(a){c.bindReady();Qa.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(oa.apply(this,arguments),"slice",oa.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(c,b){return a.call(c,b,c)}))},end:function(){return this.prevObject||this.constructor(null)},push:l,sort:[].sort,splice:[].splice};c.fn.init.prototype=
-c.fn;c.extend=c.fn.extend=function(){var a,b,h,k,s,g=arguments[0]||{},H=1,Z=arguments.length,e=!1;typeof g==="boolean"&&(e=g,g=arguments[1]||{},H=2);typeof g!=="object"&&!c.isFunction(g)&&(g={});Z===H&&(g=this,--H);for(;H<Z;H++)if((a=arguments[H])!=null)for(b in a)h=g[b],k=a[b],g!==k&&(e&&k&&(c.isPlainObject(k)||(s=c.isArray(k)))?(s?(s=!1,h=h&&c.isArray(h)?h:[]):h=h&&c.isPlainObject(h)?h:{},g[b]=c.extend(e,h,k)):k!==j&&(g[b]=k));return g};c.extend({noConflict:function(a){if(d.$===c)d.$=k;if(a&&d.jQuery===
-c)d.jQuery=b;return c},isReady:!1,readyWait:1,holdReady:function(a){a?c.readyWait++:c.ready(!0)},ready:function(a){if(a===!0&&!--c.readyWait||a!==!0&&!c.isReady){if(!w.body)return setTimeout(c.ready,1);c.isReady=!0;a!==!0&&--c.readyWait>0||(Qa.resolveWith(w,[c]),c.fn.trigger&&c(w).trigger("ready").unbind("ready"))}},bindReady:function(){if(!Qa){Qa=c._Deferred();if(w.readyState==="complete")return setTimeout(c.ready,1);if(w.addEventListener)w.addEventListener("DOMContentLoaded",La,!1),d.addEventListener("load",
-c.ready,!1);else if(w.attachEvent){w.attachEvent("onreadystatechange",La);d.attachEvent("onload",c.ready);var b=!1;try{b=d.frameElement==null}catch(h){}w.documentElement.doScroll&&b&&a()}}},isFunction:function(a){return c.type(a)==="function"},isArray:Array.isArray||function(a){return c.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!u.test(a)||isNaN(a)},type:function(a){return a==null?String(a):n[T.call(a)]||"object"},isPlainObject:function(a){if(!a||
-c.type(a)!=="object"||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!Q.call(a,"constructor")&&!Q.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(b){return!1}for(var h in a);return h===j||Q.call(a,h)},isEmptyObject:function(a){for(var c in a)return!1;return!0},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(d.JSON&&d.JSON.parse)return d.JSON.parse(a);if(r.test(a.replace(o,"@").replace(q,"]").replace(P,"")))return(new Function("return "+
-a))();c.error("Invalid JSON: "+a)},parseXML:function(a){var b,h;try{d.DOMParser?(h=new DOMParser,b=h.parseFromString(a,"text/xml")):(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(k){b=j}(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)&&c.error("Invalid XML: "+a);return b},noop:function(){},globalEval:function(a){a&&e.test(a)&&(d.execScript||function(a){d.eval.call(d,a)})(a)},camelCase:function(a){return a.replace(kb,"ms-").replace(Z,lb)},nodeName:function(a,
-c){return a.nodeName&&a.nodeName.toUpperCase()===c.toUpperCase()},each:function(a,b,h){var k,s=0,g=a.length,H=g===j||c.isFunction(a);if(h)if(H)for(k in a){if(b.apply(a[k],h)===!1)break}else for(;s<g;){if(b.apply(a[s++],h)===!1)break}else if(H)for(k in a){if(b.call(a[k],k,a[k])===!1)break}else for(;s<g;)if(b.call(a[s],s,a[s++])===!1)break;return a},trim:x?function(a){return a==null?"":x.call(a)}:function(a){return a==null?"":a.toString().replace(f,"").replace(p,"")},makeArray:function(a,b){var h=b||
-[];if(a!=null){var k=c.type(a);a.length==null||k==="string"||k==="function"||k==="regexp"||c.isWindow(a)?l.call(h,a):c.merge(h,a)}return h},inArray:function(a,c){if(!c)return-1;if(z)return z.call(c,a);for(var b=0,h=c.length;b<h;b++)if(c[b]===a)return b;return-1},merge:function(a,c){var b=a.length,h=0;if(typeof c.length==="number")for(var k=c.length;h<k;h++)a[b++]=c[h];else for(;c[h]!==j;)a[b++]=c[h++];a.length=b;return a},grep:function(a,c,b){for(var h=[],k,b=!!b,s=0,g=a.length;s<g;s++)k=!!c(a[s],
-s),b!==k&&h.push(a[s]);return h},map:function(a,b,h){var k,s,g=[],H=0,Z=a.length;if(a instanceof c||Z!==j&&typeof Z==="number"&&(Z>0&&a[0]&&a[Z-1]||Z===0||c.isArray(a)))for(;H<Z;H++)k=b(a[H],H,h),k!=null&&(g[g.length]=k);else for(s in a)k=b(a[s],s,h),k!=null&&(g[g.length]=k);return g.concat.apply([],g)},guid:1,proxy:function(a,b){if(typeof b==="string")var h=a[b],b=a,a=h;if(!c.isFunction(a))return j;var k=oa.call(arguments,2),h=function(){return a.apply(b,k.concat(oa.call(arguments)))};h.guid=a.guid=
-a.guid||h.guid||c.guid++;return h},access:function(a,b,h,k,s,g){var H=a.length;if(typeof b==="object"){for(var Z in b)c.access(a,Z,b[Z],k,s,h);return a}if(h!==j){k=!g&&k&&c.isFunction(h);for(Z=0;Z<H;Z++)s(a[Z],b,k?h.call(a[Z],Z,s(a[Z],b)):h,g);return a}return H?s(a[0],b):j},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();a=ka.exec(a)||la.exec(a)||v.exec(a)||a.indexOf("compatible")<0&&W.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},sub:function(){function a(c,
-b){return new a.fn.init(c,b)}c.extend(!0,a,this);a.superclass=this;a.fn=a.prototype=this();a.fn.constructor=a;a.sub=this.sub;a.fn.init=function(h,k){k&&k instanceof c&&!(k instanceof a)&&(k=a(k));return c.fn.init.call(this,h,k,b)};a.fn.init.prototype=a.fn;var b=a(w);return a},browser:{}});c.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,c){n["[object "+c+"]"]=c.toLowerCase()});Y=c.uaMatch(Y);if(Y.browser)c.browser[Y.browser]=!0,c.browser.version=Y.version;if(c.browser.webkit)c.browser.safari=
-!0;e.test("\u00a0")&&(f=/^[\s\xA0]+/,p=/[\s\xA0]+$/);s=c(w);w.addEventListener?La=function(){w.removeEventListener("DOMContentLoaded",La,!1);c.ready()}:w.attachEvent&&(La=function(){w.readyState==="complete"&&(w.detachEvent("onreadystatechange",La),c.ready())});return c}(),X="done fail isResolved isRejected promise then always pipe".split(" "),G=[].slice;b.extend({_Deferred:function(){var a=[],c,h,k,s={done:function(){if(!k){var h=arguments,g,e,f,d,p;c&&(p=c,c=0);for(g=0,e=h.length;g<e;g++)f=h[g],
-d=b.type(f),d==="array"?s.done.apply(s,f):d==="function"&&a.push(f);p&&s.resolveWith(p[0],p[1])}return this},resolveWith:function(b,s){if(!k&&!c&&!h){s=s||[];h=1;try{for(;a[0];)a.shift().apply(b,s)}finally{c=[b,s],h=0}}return this},resolve:function(){s.resolveWith(this,arguments);return this},isResolved:function(){return!(!h&&!c)},cancel:function(){k=1;a=[];return this}};return s},Deferred:function(a){var c=b._Deferred(),h=b._Deferred(),k;b.extend(c,{then:function(a,b){c.done(a).fail(b);return this},
-always:function(){return c.done.apply(c,arguments).fail.apply(this,arguments)},fail:h.done,rejectWith:h.resolveWith,reject:h.resolve,isRejected:h.isResolved,pipe:function(a,h){return b.Deferred(function(k){b.each({done:[a,"resolve"],fail:[h,"reject"]},function(a,h){var s=h[0],g=h[1],H;if(b.isFunction(s))c[a](function(){if((H=s.apply(this,arguments))&&b.isFunction(H.promise))H.promise().then(k.resolve,k.reject);else k[g+"With"](this===c?k:this,[H])});else c[a](k[g])})}).promise()},promise:function(a){if(a==
-null){if(k)return k;k=a={}}for(var b=X.length;b--;)a[X[b]]=c[X[b]];return a}});c.done(h.cancel).fail(c.cancel);delete c.cancel;a&&a.call(c,c);return c},when:function(a){function c(a){return function(c){h[a]=arguments.length>1?G.call(arguments,0):c;--g||e.resolveWith(e,G.call(h,0))}}var h=arguments,k=0,s=h.length,g=s,e=s<=1&&a&&b.isFunction(a.promise)?a:b.Deferred();if(s>1){for(;k<s;k++)h[k]&&b.isFunction(h[k].promise)?h[k].promise().then(c(k),e.reject):--g;g||e.resolveWith(e,h)}else e!==a&&e.resolveWith(e,
-s?[a]:[]);return e.promise()}});b.support=function(){var a=w.createElement("div"),c=w.documentElement,h,k,s,g,e,f;a.setAttribute("className","t");a.innerHTML=" <link><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type=checkbox>";h=a.getElementsByTagName("*");k=a.getElementsByTagName("a")[0];if(!h||!h.length||!k)return{};s=w.createElement("select");g=s.appendChild(w.createElement("option"));h=a.getElementsByTagName("input")[0];e={leadingWhitespace:a.firstChild.nodeType===
-3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(k.getAttribute("style")),hrefNormalized:k.getAttribute("href")==="/a",opacity:/^0.55$/.test(k.style.opacity),cssFloat:!!k.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0};h.checked=
-!0;e.noCloneChecked=h.cloneNode(!0).checked;s.disabled=!0;e.optDisabled=!g.disabled;try{delete a.test}catch(d){e.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){e.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick"));h=w.createElement("input");h.value="t";h.setAttribute("type","radio");e.radioValue=h.value==="t";h.setAttribute("checked","checked");a.appendChild(h);k=w.createDocumentFragment();k.appendChild(a.firstChild);e.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked;
-a.innerHTML="";a.style.width=a.style.paddingLeft="1px";s=w.getElementsByTagName("body")[0];k=w.createElement(s?"div":"body");g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};s&&b.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(f in g)k.style[f]=g[f];k.appendChild(a);c=s||c;c.insertBefore(k,c.firstChild);e.appendChecked=h.checked;e.boxModel=a.offsetWidth===2;if("zoom"in a.style)a.style.display="inline",a.style.zoom=1,e.inlineBlockNeedsLayout=a.offsetWidth===
-2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",e.shrinkWrapBlocks=a.offsetWidth!==2;a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";s=a.getElementsByTagName("td");h=s[0].offsetHeight===0;s[0].style.display="";s[1].style.display="none";e.reliableHiddenOffsets=h&&s[0].offsetHeight===0;a.innerHTML="";if(w.defaultView&&w.defaultView.getComputedStyle)h=w.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),
-e.reliableMarginRight=(parseInt((w.defaultView.getComputedStyle(h,null)||{marginRight:0}).marginRight,10)||0)===0;k.innerHTML="";c.removeChild(k);if(a.attachEvent)for(f in{submit:1,change:1,focusin:1})c="on"+f,h=c in a,h||(a.setAttribute(c,"return;"),h=typeof a[c]==="function"),e[f+"Bubbles"]=h;k=k=s=g=s=h=a=h=null;return e}();b.boxModel=b.support.boxModel;var ba=/^(?:\{.*\}|\[.*\])$/,xa=/([a-z])([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,
-object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?b.cache[a[b.expando]]:a[b.expando];return!!a&&!n(a)},data:function(a,c,h,k){if(b.acceptData(a)){var s=b.expando,g=typeof c==="string",e=a.nodeType,f=e?b.cache:a,d=e?a[b.expando]:a[b.expando]&&b.expando;if(d&&(!k||!d||!f[d]||f[d][s])||!(g&&h===j)){if(!d)e?a[b.expando]=d=++b.uuid:d=b.expando;if(!f[d]&&(f[d]={},!e))f[d].toJSON=b.noop;if(typeof c==="object"||typeof c==="function")k?f[d][s]=b.extend(f[d][s],
-c):f[d]=b.extend(f[d],c);a=f[d];k&&(a[s]||(a[s]={}),a=a[s]);h!==j&&(a[b.camelCase(c)]=h);if(c==="events"&&!a[c])return a[s]&&a[s].events;g?(h=a[c],h==null&&(h=a[b.camelCase(c)])):h=a;return h}}},removeData:function(a,c,h){if(b.acceptData(a)){var k,s=b.expando,g=a.nodeType,e=g?b.cache:a,f=g?a[b.expando]:b.expando;if(e[f]){if(c&&(k=h?e[f][s]:e[f]))if(k[c]||(c=b.camelCase(c)),delete k[c],!n(k))return;if(h&&(delete e[f][s],!n(e[f])))return;c=e[f][s];b.support.deleteExpando||!e.setInterval?delete e[f]:
-e[f]=null;if(c){e[f]={};if(!g)e[f].toJSON=b.noop;e[f][s]=c}else g&&(b.support.deleteExpando?delete a[b.expando]:a.removeAttribute?a.removeAttribute(b.expando):a[b.expando]=null)}}},_data:function(a,c,h){return b.data(a,c,h,!0)},acceptData:function(a){if(a.nodeName){var c=b.noData[a.nodeName.toLowerCase()];if(c)return!(c===!0||a.getAttribute("classid")!==c)}return!0}});b.fn.extend({data:function(a,c){var h=null;if(typeof a==="undefined"){if(this.length&&(h=b.data(this[0]),this[0].nodeType===1))for(var k=
-this[0].attributes,s,g=0,e=k.length;g<e;g++)s=k[g].name,s.indexOf("data-")===0&&(s=b.camelCase(s.substring(5)),E(this[0],s,h[s]));return h}else if(typeof a==="object")return this.each(function(){b.data(this,a)});var f=a.split(".");f[1]=f[1]?"."+f[1]:"";return c===j?(h=this.triggerHandler("getData"+f[1]+"!",[f[0]]),h===j&&this.length&&(h=b.data(this[0],a),h=E(this[0],a,h)),h===j&&f[1]?this.data(f[0]):h):this.each(function(){var h=b(this),k=[f[0],c];h.triggerHandler("setData"+f[1]+"!",k);b.data(this,
-a,c);h.triggerHandler("changeData"+f[1]+"!",k)})},removeData:function(a){return this.each(function(){b.removeData(this,a)})}});b.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",b.data(a,c,(b.data(a,c,j,!0)||0)+1,!0))},_unmark:function(a,c,h){a!==!0&&(h=c,c=a,a=!1);if(c){var h=h||"fx",k=h+"mark";(a=a?0:(b.data(c,k,j,!0)||1)-1)?b.data(c,k,a,!0):(b.removeData(c,k,!0),J(c,h,"mark"))}},queue:function(a,c,h){if(a){var c=(c||"fx")+"queue",k=b.data(a,c,j,!0);h&&(!k||b.isArray(h)?k=b.data(a,c,b.makeArray(h),
-!0):k.push(h));return k||[]}},dequeue:function(a,c){var c=c||"fx",h=b.queue(a,c),k=h.shift();k==="inprogress"&&(k=h.shift());k&&(c==="fx"&&h.unshift("inprogress"),k.call(a,function(){b.dequeue(a,c)}));h.length||(b.removeData(a,c+"queue",!0),J(a,c,"queue"))}});b.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");return c===j?b.queue(this[0],a):this.each(function(){var h=b.queue(this,a,c);a==="fx"&&h[0]!=="inprogress"&&b.dequeue(this,a)})},dequeue:function(a){return this.each(function(){b.dequeue(this,
-a)})},delay:function(a,c){a=b.fx?b.fx.speeds[a]||a:a;c=c||"fx";return this.queue(c,function(){var h=this;setTimeout(function(){b.dequeue(h,c)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a){function c(){--g||h.resolveWith(k,[k])}typeof a!=="string"&&(a=j);var a=a||"fx",h=b.Deferred(),k=this,s=k.length,g=1,e=a+"defer",f=a+"queue";a+="mark";for(var d;s--;)if(d=b.data(k[s],e,j,!0)||(b.data(k[s],f,j,!0)||b.data(k[s],a,j,!0))&&b.data(k[s],e,b._Deferred(),!0))g++,d.done(c);
-c();return h.promise()}});var ea=/[\n\t\r]/g,da=/\s+/,sa=/\r/g,f=/^(?:button|input)$/i,P=/^(?:button|input|object|select|textarea)$/i,r=/^a(?:rea)?$/i,W=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,q,o;b.fn.extend({attr:function(a,c){return b.access(this,a,c,!0,b.attr)},removeAttr:function(a){return this.each(function(){b.removeAttr(this,a)})},prop:function(a,c){return b.access(this,a,c,!0,b.prop)},removeProp:function(a){a=
-b.propFix[a]||a;return this.each(function(){try{this[a]=j,delete this[a]}catch(c){}})},addClass:function(a){var c,h,k,s,g,e,f;if(b.isFunction(a))return this.each(function(c){b(this).addClass(a.call(this,c,this.className))});if(a&&typeof a==="string"){c=a.split(da);for(h=0,k=this.length;h<k;h++)if(s=this[h],s.nodeType===1)if(!s.className&&c.length===1)s.className=a;else{g=" "+s.className+" ";for(e=0,f=c.length;e<f;e++)~g.indexOf(" "+c[e]+" ")||(g+=c[e]+" ");s.className=b.trim(g)}}return this},removeClass:function(a){var c,
-h,k,s,g,e,f;if(b.isFunction(a))return this.each(function(c){b(this).removeClass(a.call(this,c,this.className))});if(a&&typeof a==="string"||a===j){c=(a||"").split(da);for(h=0,k=this.length;h<k;h++)if(s=this[h],s.nodeType===1&&s.className)if(a){g=(" "+s.className+" ").replace(ea," ");for(e=0,f=c.length;e<f;e++)g=g.replace(" "+c[e]+" "," ");s.className=b.trim(g)}else s.className=""}return this},toggleClass:function(a,c){var h=typeof a,k=typeof c==="boolean";return b.isFunction(a)?this.each(function(h){b(this).toggleClass(a.call(this,
-h,this.className,c),c)}):this.each(function(){if(h==="string")for(var s,g=0,e=b(this),f=c,d=a.split(da);s=d[g++];)f=k?f:!e.hasClass(s),e[f?"addClass":"removeClass"](s);else if(h==="undefined"||h==="boolean")this.className&&b._data(this,"__className__",this.className),this.className=this.className||a===!1?"":b._data(this,"__className__")||""})},hasClass:function(a){for(var a=" "+a+" ",c=0,b=this.length;c<b;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(ea," ").indexOf(a)>-1)return!0;
-return!1},val:function(a){var c,h,k=this[0];if(!arguments.length){if(k){if((c=b.valHooks[k.nodeName.toLowerCase()]||b.valHooks[k.type])&&"get"in c&&(h=c.get(k,"value"))!==j)return h;h=k.value;return typeof h==="string"?h.replace(sa,""):h==null?"":h}return j}var s=b.isFunction(a);return this.each(function(h){var k=b(this);if(this.nodeType===1&&(h=s?a.call(this,h,k.val()):a,h==null?h="":typeof h==="number"?h+="":b.isArray(h)&&(h=b.map(h,function(a){return a==null?"":a+""})),c=b.valHooks[this.nodeName.toLowerCase()]||
-b.valHooks[this.type],!c||!("set"in c)||c.set(this,h,"value")===j))this.value=h})}});b.extend({valHooks:{option:{get:function(a){var c=a.attributes.value;return!c||c.specified?a.value:a.text}},select:{get:function(a){var c,h=a.selectedIndex,k=[],s=a.options,a=a.type==="select-one";if(h<0)return null;for(var g=a?h:0,e=a?h+1:s.length;g<e;g++)if(c=s[g],c.selected&&(b.support.optDisabled?!c.disabled:c.getAttribute("disabled")===null)&&(!c.parentNode.disabled||!b.nodeName(c.parentNode,"optgroup"))){c=
-b(c).val();if(a)return c;k.push(c)}return a&&!k.length&&s.length?b(s[h]).val():k},set:function(a,c){var h=b.makeArray(c);b(a).find("option").each(function(){this.selected=b.inArray(b(this).val(),h)>=0});if(!h.length)a.selectedIndex=-1;return h}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,h,k){var s=a.nodeType;if(!a||s===3||s===8||s===2)return j;if(k&&c in b.attrFn)return b(a)[c](h);if(!("getAttribute"in a))return b.prop(a,
-c,h);var g,e;if(k=s!==1||!b.isXMLDoc(a))c=b.attrFix[c]||c,(e=b.attrHooks[c])||(W.test(c)?e=o:q&&(e=q));return h!==j?h===null?(b.removeAttr(a,c),j):e&&"set"in e&&k&&(g=e.set(a,h,c))!==j?g:(a.setAttribute(c,""+h),h):e&&"get"in e&&k&&(g=e.get(a,c))!==null?g:(g=a.getAttribute(c),g===null?j:g)},removeAttr:function(a,c){var h;if(a.nodeType===1&&(c=b.attrFix[c]||c,b.attr(a,c,""),a.removeAttribute(c),W.test(c)&&(h=b.propFix[c]||c)in a))a[h]=!1},attrHooks:{type:{set:function(a,c){if(f.test(a.nodeName)&&a.parentNode)b.error("type property can't be changed");
-else if(!b.support.radioValue&&c==="radio"&&b.nodeName(a,"input")){var h=a.value;a.setAttribute("type",c);if(h)a.value=h;return c}}},value:{get:function(a,c){return q&&b.nodeName(a,"button")?q.get(a,c):c in a?a.value:null},set:function(a,c,h){if(q&&b.nodeName(a,"button"))return q.set(a,c,h);a.value=c}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",
-frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,h){var k=a.nodeType;if(!a||k===3||k===8||k===2)return j;var s,g;if(k!==1||!b.isXMLDoc(a))c=b.propFix[c]||c,g=b.propHooks[c];return h!==j?g&&"set"in g&&(s=g.set(a,h,c))!==j?s:a[c]=h:g&&"get"in g&&(s=g.get(a,c))!==null?s:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):P.test(a.nodeName)||r.test(a.nodeName)&&a.href?0:j}}}});b.attrHooks.tabIndex=b.propHooks.tabIndex;
-o={get:function(a,c){var h;return b.prop(a,c)===!0||(h=a.getAttributeNode(c))&&h.nodeValue!==!1?c.toLowerCase():j},set:function(a,c,h){c===!1?b.removeAttr(a,h):(c=b.propFix[h]||h,c in a&&(a[c]=!0),a.setAttribute(h,h.toLowerCase()));return h}};if(!b.support.getSetAttribute)q=b.valHooks.button={get:function(a,c){var b;return(b=a.getAttributeNode(c))&&b.nodeValue!==""?b.nodeValue:j},set:function(a,c,b){var k=a.getAttributeNode(b);k||(k=w.createAttribute(b),a.setAttributeNode(k));return k.nodeValue=c+
-""}},b.each(["width","height"],function(a,c){b.attrHooks[c]=b.extend(b.attrHooks[c],{set:function(a,b){if(b==="")return a.setAttribute(c,"auto"),b}})});b.support.hrefNormalized||b.each(["href","src","width","height"],function(a,c){b.attrHooks[c]=b.extend(b.attrHooks[c],{get:function(a){a=a.getAttribute(c,2);return a===null?j:a}})});if(!b.support.style)b.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||j},set:function(a,c){return a.style.cssText=""+c}};if(!b.support.optSelected)b.propHooks.selected=
-b.extend(b.propHooks.selected,{get:function(){return null}});b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}});b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(a,c){if(b.isArray(c))return a.checked=b.inArray(b(a).val(),c)>=0}})});var ga=/\.(.*)$/,Da=/^(?:textarea|input|select)$/i,qa=/\./g,v=/ /g,$=/[^\w\s.|`]/g,fa=function(a){return a.replace($,"\\$&")};b.event=
-{add:function(a,c,h,k){if(!(a.nodeType===3||a.nodeType===8)){if(h===!1)h=D;else if(!h)return;var g,e;if(h.handler)g=h,h=g.handler;if(!h.guid)h.guid=b.guid++;if(e=b._data(a)){var f=e.events,d=e.handle;if(!f)e.events=f={};if(!d)e.handle=d=function(a){return typeof b!=="undefined"&&(!a||b.event.triggered!==a.type)?b.event.handle.apply(d.elem,arguments):j};d.elem=a;for(var c=c.split(" "),p,u=0,A;p=c[u++];){e=g?b.extend({},g):{handler:h,data:k};p.indexOf(".")>-1?(A=p.split("."),p=A.shift(),e.namespace=
-A.slice(0).sort().join(".")):(A=[],e.namespace="");e.type=p;if(!e.guid)e.guid=h.guid;var r=f[p],o=b.event.special[p]||{};if(!r&&(r=f[p]=[],!o.setup||o.setup.call(a,k,A,d)===!1))a.addEventListener?a.addEventListener(p,d,!1):a.attachEvent&&a.attachEvent("on"+p,d);if(o.add&&(o.add.call(a,e),!e.handler.guid))e.handler.guid=h.guid;r.push(e);b.event.global[p]=!0}a=null}}},global:{},remove:function(a,c,h,k){if(!(a.nodeType===3||a.nodeType===8)){h===!1&&(h=D);var g,e,f=0,d,p,u,A,r,o,q=b.hasData(a)&&b._data(a),
-P=q&&q.events;if(q&&P){if(c&&c.type)h=c.handler,c=c.type;if(!c||typeof c==="string"&&c.charAt(0)===".")for(g in c=c||"",P)b.event.remove(a,g+c);else{for(c=c.split(" ");g=c[f++];)if(A=g,d=g.indexOf(".")<0,p=[],d||(p=g.split("."),g=p.shift(),u=RegExp("(^|\\.)"+b.map(p.slice(0).sort(),fa).join("\\.(?:.*\\.)?")+"(\\.|$)")),r=P[g])if(h){A=b.event.special[g]||{};for(e=k||0;e<r.length;e++)if(o=r[e],h.guid===o.guid){if(d||u.test(o.namespace))k==null&&r.splice(e--,1),A.remove&&A.remove.call(a,o);if(k!=null)break}if(r.length===
-0||k!=null&&r.length===1)(!A.teardown||A.teardown.call(a,p)===!1)&&b.removeEvent(a,g,q.handle),delete P[g]}else for(e=0;e<r.length;e++)if(o=r[e],d||u.test(o.namespace))b.event.remove(a,A,o.handler,e),r.splice(e--,1);if(b.isEmptyObject(P)){if(c=q.handle)c.elem=null;delete q.events;delete q.handle;b.isEmptyObject(q)&&b.removeData(a,j,!0)}}}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(a,c,h,k){var g=a.type||a,e=[],f;g.indexOf("!")>=0&&(g=g.slice(0,-1),f=!0);g.indexOf(".")>=0&&
-(e=g.split("."),g=e.shift(),e.sort());if(h&&!b.event.customEvent[g]||b.event.global[g]){a=typeof a==="object"?a[b.expando]?a:new b.Event(g,a):new b.Event(g);a.type=g;a.exclusive=f;a.namespace=e.join(".");a.namespace_re=RegExp("(^|\\.)"+e.join("\\.(?:.*\\.)?")+"(\\.|$)");if(k||!h)a.preventDefault(),a.stopPropagation();if(h){if(!(h.nodeType===3||h.nodeType===8)){a.result=j;a.target=h;c=c!=null?b.makeArray(c):[];c.unshift(a);e=h;k=g.indexOf(":")<0?"on"+g:"";do{f=b._data(e,"handle");a.currentTarget=e;
-f&&f.apply(e,c);if(k&&b.acceptData(e)&&e[k]&&e[k].apply(e,c)===!1)a.result=!1,a.preventDefault();e=e.parentNode||e.ownerDocument||e===a.target.ownerDocument&&d}while(e&&!a.isPropagationStopped());if(!a.isDefaultPrevented()){var p,e=b.event.special[g]||{};if((!e._default||e._default.call(h.ownerDocument,a)===!1)&&!(g==="click"&&b.nodeName(h,"a"))&&b.acceptData(h)){try{if(k&&h[g])(p=h[k])&&(h[k]=null),b.event.triggered=g,h[g]()}catch(u){}p&&(h[k]=p);b.event.triggered=j}}return a.result}}else b.each(b.cache,
-function(){var h=this[b.expando];h&&h.events&&h.events[g]&&b.event.trigger(a,c,h.handle.elem)})}},handle:function(a){var a=b.event.fix(a||d.event),c=((b._data(this,"events")||{})[a.type]||[]).slice(0),h=!a.exclusive&&!a.namespace,k=Array.prototype.slice.call(arguments,0);k[0]=a;a.currentTarget=this;for(var g=0,e=c.length;g<e;g++){var f=c[g];if(h||a.namespace_re.test(f.namespace)){a.handler=f.handler;a.data=f.data;a.handleObj=f;f=f.handler.apply(this,k);if(f!==j)a.result=f,f===!1&&(a.preventDefault(),
-a.stopPropagation());if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[b.expando])return a;for(var c=a,a=b.Event(c),h=this.props.length,
-k;h;)k=this.props[--h],a[k]=c[k];if(!a.target)a.target=a.srcElement||w;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null)h=a.target.ownerDocument||w,c=h.documentElement,h=h.body,a.pageX=a.clientX+(c&&c.scrollLeft||h&&h.scrollLeft||0)-(c&&c.clientLeft||h&&h.clientLeft||0),a.pageY=a.clientY+(c&&c.scrollTop||h&&h.scrollTop||0)-(c&&c.clientTop||h&&h.clientTop||0);
-if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==j)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:b.proxy,special:{ready:{setup:b.bindReady,teardown:b.noop},live:{add:function(a){b.event.add(this,V(a.origType,a.selector),b.extend({},a,{handler:y,guid:a.handler.guid}))},remove:function(a){b.event.remove(this,V(a.origType,a.selector),a)}},beforeunload:{setup:function(a,
-c,h){if(b.isWindow(this))this.onbeforeunload=h},teardown:function(a,c){if(this.onbeforeunload===c)this.onbeforeunload=null}}}};b.removeEvent=w.removeEventListener?function(a,c,b){a.removeEventListener&&a.removeEventListener(c,b,!1)}:function(a,c,b){a.detachEvent&&a.detachEvent("on"+c,b)};b.Event=function(a,c){if(!this.preventDefault)return new b.Event(a,c);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?
-l:D):this.type=a;c&&b.extend(this,c);this.timeStamp=b.now();this[b.expando]=!0};b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=l;var a=this.originalEvent;if(a)a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=l;var a=this.originalEvent;if(a)a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=l;this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,
-isImmediatePropagationStopped:D};var ia=function(a){var c=a.relatedTarget,h=!1,k=a.type;a.type=a.data;if(c!==this&&(c&&(h=b.contains(this,c)),!h))b.event.handle.apply(this,arguments),a.type=k},F=function(a){a.type=a.data;b.event.handle.apply(this,arguments)};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,c){b.event.special[a]={setup:function(h){b.event.add(this,c,h&&h.selector?F:ia,a)},teardown:function(a){b.event.remove(this,c,a&&a.selector?F:ia)}}});if(!b.support.submitBubbles)b.event.special.submit=
-{setup:function(){if(b.nodeName(this,"form"))return!1;else b.event.add(this,"click.specialSubmit",function(a){var c=a.target,h=b.nodeName(c,"input")?c.type:"";(h==="submit"||h==="image")&&b(c).closest("form").length&&x("submit",this,arguments)}),b.event.add(this,"keypress.specialSubmit",function(a){var c=a.target,h=b.nodeName(c,"input")?c.type:"";(h==="text"||h==="password")&&b(c).closest("form").length&&a.keyCode===13&&x("submit",this,arguments)})},teardown:function(){b.event.remove(this,".specialSubmit")}};
-if(!b.support.changeBubbles){var aa,ja=function(a){var c=b.nodeName(a,"input")?a.type:"",h=a.value;if(c==="radio"||c==="checkbox")h=a.checked;else if(c==="select-multiple")h=a.selectedIndex>-1?b.map(a.options,function(a){return a.selected}).join("-"):"";else if(b.nodeName(a,"select"))h=a.selectedIndex;return h},wa=function(a,c){var h=a.target,k,g;if(Da.test(h.nodeName)&&!h.readOnly&&(k=b._data(h,"_change_data"),g=ja(h),(a.type!=="focusout"||h.type!=="radio")&&b._data(h,"_change_data",g),!(k===j||
-g===k)))if(k!=null||g)a.type="change",a.liveFired=j,b.event.trigger(a,c,h)};b.event.special.change={filters:{focusout:wa,beforedeactivate:wa,click:function(a){var c=a.target,h=b.nodeName(c,"input")?c.type:"";(h==="radio"||h==="checkbox"||b.nodeName(c,"select"))&&wa.call(this,a)},keydown:function(a){var c=a.target,h=b.nodeName(c,"input")?c.type:"";(a.keyCode===13&&!b.nodeName(c,"textarea")||a.keyCode===32&&(h==="checkbox"||h==="radio")||h==="select-multiple")&&wa.call(this,a)},beforeactivate:function(a){a=
-a.target;b._data(a,"_change_data",ja(a))}},setup:function(){if(this.type==="file")return!1;for(var a in aa)b.event.add(this,a+".specialChange",aa[a]);return Da.test(this.nodeName)},teardown:function(){b.event.remove(this,".specialChange");return Da.test(this.nodeName)}};aa=b.event.special.change.filters;aa.focus=aa.beforeactivate}b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(a,c){function h(a){var h=b.event.fix(a);h.type=c;h.originalEvent={};b.event.trigger(h,null,h.target);
-h.isDefaultPrevented()&&a.preventDefault()}var k=0;b.event.special[c]={setup:function(){k++===0&&w.addEventListener(a,h,!0)},teardown:function(){--k===0&&w.removeEventListener(a,h,!0)}}});b.each(["bind","one"],function(a,c){b.fn[c]=function(a,k,g){var e;if(typeof a==="object"){for(var f in a)this[c](f,k,a[f],g);return this}if(arguments.length===2||k===!1)g=k,k=j;c==="one"?(e=function(a){b(this).unbind(a,e);return g.apply(this,arguments)},e.guid=g.guid||b.guid++):e=g;if(a==="unload"&&c!=="one")this.one(a,
-k,g);else{f=0;for(var d=this.length;f<d;f++)b.event.add(this[f],a,e,k)}return this}});b.fn.extend({unbind:function(a,c){if(typeof a==="object"&&!a.preventDefault)for(var h in a)this.unbind(h,a[h]);else{h=0;for(var k=this.length;h<k;h++)b.event.remove(this[h],a,c)}return this},delegate:function(a,c,b,k){return this.live(c,b,k,a)},undelegate:function(a,c,b){return arguments.length===0?this.unbind("live"):this.die(c,null,b,a)},trigger:function(a,c){return this.each(function(){b.event.trigger(a,c,this)})},
-triggerHandler:function(a,c){if(this[0])return b.event.trigger(a,c,this[0],!0)},toggle:function(a){var c=arguments,h=a.guid||b.guid++,k=0,g=function(h){var g=(b.data(this,"lastToggle"+a.guid)||0)%k;b.data(this,"lastToggle"+a.guid,g+1);h.preventDefault();return c[g].apply(this,arguments)||!1};for(g.guid=h;k<c.length;)c[k++].guid=h;return this.click(g)},hover:function(a,c){return this.mouseenter(a).mouseleave(c||a)}});var ta={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};
-b.each(["live","die"],function(a,c){b.fn[c]=function(a,k,g,e){var f=0,d,p,u=e||this.selector,A=e?this:b(this.context);if(typeof a==="object"&&!a.preventDefault){for(d in a)A[c](d,k,a[d],u);return this}if(c==="die"&&!a&&e&&e.charAt(0)===".")return A.unbind(e),this;if(k===!1||b.isFunction(k))g=k||D,k=j;for(a=(a||"").split(" ");(e=a[f++])!=null;)if(d=ga.exec(e),p="",d&&(p=d[0],e=e.replace(ga,"")),e==="hover")a.push("mouseenter"+p,"mouseleave"+p);else if(d=e,ta[e]?(a.push(ta[e]+p),e+=p):e=(ta[e]||e)+
-p,c==="live"){p=0;for(var r=A.length;p<r;p++)b.event.add(A[p],"live."+V(e,u),{data:k,selector:u,handler:g,origType:e,origHandler:g,preType:d})}else A.unbind("live."+V(e,u),g);return this}});b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,c){b.fn[c]=function(a,b){b==null&&(b=a,a=null);return arguments.length>0?this.bind(c,a,b):this.trigger(c)};
-b.attrFn&&(b.attrFn[c]=!0)});(function(){function a(a,c,b,h,k,g){for(var k=0,e=h.length;k<e;k++){var s=h[k];if(s){for(var f=!1,s=s[a];s;){if(s.sizcache===b){f=h[s.sizset];break}if(s.nodeType===1&&!g)s.sizcache=b,s.sizset=k;if(s.nodeName.toLowerCase()===c){f=s;break}s=s[a]}h[k]=f}}}function c(a,c,b,h,k,g){for(var k=0,e=h.length;k<e;k++){var s=h[k];if(s){for(var f=!1,s=s[a];s;){if(s.sizcache===b){f=h[s.sizset];break}if(s.nodeType===1){if(!g)s.sizcache=b,s.sizset=k;if(typeof c!=="string"){if(s===c){f=
-!0;break}}else if(u.filter(c,[s]).length>0){f=s;break}}s=s[a]}h[k]=f}}}var h=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,k=0,g=Object.prototype.toString,e=!1,f=!0,d=/\\/g,p=/\W/;[0,0].sort(function(){f=!1;return 0});var u=function(a,c,b,k){var b=b||[],e=c=c||w;if(c.nodeType!==1&&c.nodeType!==9)return[];if(!a||typeof a!=="string")return b;var f,d,p,H,o,q=!0,ka=u.isXML(c),j=[],la=a;do if(h.exec(""),f=h.exec(la))if(la=
-f[3],j.push(f[1]),f[2]){H=f[3];break}while(f);if(j.length>1&&r.exec(a))if(j.length===2&&A.relative[j[0]])d=Y(j[0]+j[1],c);else for(d=A.relative[j[0]]?[c]:u(j.shift(),c);j.length;)a=j.shift(),A.relative[a]&&(a+=j.shift()),d=Y(a,d);else if(!k&&j.length>1&&c.nodeType===9&&!ka&&A.match.ID.test(j[0])&&!A.match.ID.test(j[j.length-1])&&(f=u.find(j.shift(),c,ka),c=f.expr?u.filter(f.expr,f.set)[0]:f.set[0]),c){f=k?{expr:j.pop(),set:P(k)}:u.find(j.pop(),j.length===1&&(j[0]==="~"||j[0]==="+")&&c.parentNode?
-c.parentNode:c,ka);d=f.expr?u.filter(f.expr,f.set):f.set;for(j.length>0?p=P(d):q=!1;j.length;)f=o=j.pop(),A.relative[o]?f=j.pop():o="",f==null&&(f=c),A.relative[o](p,f,ka)}else p=[];p||(p=d);p||u.error(o||a);if(g.call(p)==="[object Array]")if(q)if(c&&c.nodeType===1)for(a=0;p[a]!=null;a++)p[a]&&(p[a]===!0||p[a].nodeType===1&&u.contains(c,p[a]))&&b.push(d[a]);else for(a=0;p[a]!=null;a++)p[a]&&p[a].nodeType===1&&b.push(d[a]);else b.push.apply(b,p);else P(p,b);H&&(u(H,e,b,k),u.uniqueSort(b));return b};
-u.uniqueSort=function(a){if(la&&(e=f,a.sort(la),e))for(var c=1;c<a.length;c++)a[c]===a[c-1]&&a.splice(c--,1);return a};u.matches=function(a,c){return u(a,null,null,c)};u.matchesSelector=function(a,c){return u(c,null,null,[a]).length>0};u.find=function(a,c,b){var h;if(!a)return[];for(var k=0,g=A.order.length;k<g;k++){var e,s=A.order[k];if(e=A.leftMatch[s].exec(a)){var f=e[1];e.splice(1,1);if(f.substr(f.length-1)!=="\\"&&(e[1]=(e[1]||"").replace(d,""),h=A.find[s](e,c,b),h!=null)){a=a.replace(A.match[s],
-"");break}}}h||(h=typeof c.getElementsByTagName!=="undefined"?c.getElementsByTagName("*"):[]);return{set:h,expr:a}};u.filter=function(a,c,b,h){for(var k,g,e=a,s=[],f=c,d=c&&c[0]&&u.isXML(c[0]);a&&c.length;){for(var p in A.filter)if((k=A.leftMatch[p].exec(a))!=null&&k[2]){var r,H,o=A.filter[p];H=k[1];g=!1;k.splice(1,1);if(H.substr(H.length-1)!=="\\"){f===s&&(s=[]);if(A.preFilter[p])if(k=A.preFilter[p](k,f,b,s,h,d)){if(k===!0)continue}else g=r=!0;if(k)for(var q=0;(H=f[q])!=null;q++)if(H){r=o(H,k,q,
-f);var P=h^!!r;b&&r!=null?P?g=!0:f[q]=!1:P&&(s.push(H),g=!0)}if(r!==j){b||(f=s);a=a.replace(A.match[p],"");if(!g)return[];break}}}if(a===e)if(g==null)u.error(a);else break;e=a}return f};u.error=function(a){throw"Syntax error, unrecognized expression: "+a;};var A=u.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|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
-TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,c){var b=
-typeof c==="string",h=b&&!p.test(c),b=b&&!h;h&&(c=c.toLowerCase());for(var h=0,k=a.length,g;h<k;h++)if(g=a[h]){for(;(g=g.previousSibling)&&g.nodeType!==1;);a[h]=b||g&&g.nodeName.toLowerCase()===c?g||!1:g===c}b&&u.filter(c,a,!0)},">":function(a,c){var b,h=typeof c==="string",k=0,g=a.length;if(h&&!p.test(c))for(c=c.toLowerCase();k<g;k++){if(b=a[k])b=b.parentNode,a[k]=b.nodeName.toLowerCase()===c?b:!1}else{for(;k<g;k++)(b=a[k])&&(a[k]=h?b.parentNode:b.parentNode===c);h&&u.filter(c,a,!0)}},"":function(b,
-h,g){var e,s=k++,f=c;typeof h==="string"&&!p.test(h)&&(e=h=h.toLowerCase(),f=a);f("parentNode",h,s,b,e,g)},"~":function(b,h,g){var e,s=k++,f=c;typeof h==="string"&&!p.test(h)&&(e=h=h.toLowerCase(),f=a);f("previousSibling",h,s,b,e,g)}},find:{ID:function(a,c,b){if(typeof c.getElementById!=="undefined"&&!b)return(a=c.getElementById(a[1]))&&a.parentNode?[a]:[]},NAME:function(a,c){if(typeof c.getElementsByName!=="undefined"){for(var b=[],h=c.getElementsByName(a[1]),k=0,g=h.length;k<g;k++)h[k].getAttribute("name")===
-a[1]&&b.push(h[k]);return b.length===0?null:b}},TAG:function(a,c){if(typeof c.getElementsByTagName!=="undefined")return c.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,c,b,h,k,g){a=" "+a[1].replace(d,"")+" ";if(g)return a;for(var g=0,e;(e=c[g])!=null;g++)e&&(k^(e.className&&(" "+e.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?b||h.push(e):b&&(c[g]=!1));return!1},ID:function(a){return a[1].replace(d,"")},TAG:function(a){return a[1].replace(d,"").toLowerCase()},CHILD:function(a){if(a[1]===
-"nth"){a[2]||u.error(a[0]);a[2]=a[2].replace(/^\+|\s*/g,"");var c=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=c[1]+(c[2]||1)-0;a[3]=c[3]-0}else a[2]&&u.error(a[0]);a[0]=k++;return a},ATTR:function(a,c,b,h,k,g){c=a[1]=a[1].replace(d,"");!g&&A.attrMap[c]&&(a[1]=A.attrMap[c]);a[4]=(a[4]||a[5]||"").replace(d,"");a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(a,c,b,k,g){if(a[1]==="not")if((h.exec(a[3])||"").length>1||
-/^\w/.test(a[3]))a[3]=u(a[3],null,null,c);else return a=u.filter(a[3],c,b,1^g),b||k.push.apply(k,a),!1;else if(A.match.POS.test(a[0])||A.match.CHILD.test(a[0]))return!0;return a},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},
-has:function(a,c,b){return!!u(b[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var c=a.getAttribute("type"),b=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===b&&(c===b||c===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()===
-"input"&&"password"===a.type},submit:function(a){var c=a.nodeName.toLowerCase();return(c==="input"||c==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var c=a.nodeName.toLowerCase();return(c==="input"||c==="button")&&"reset"===a.type},button:function(a){var c=a.nodeName.toLowerCase();return c==="input"&&"button"===a.type||c==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===
-a.ownerDocument.activeElement}},setFilters:{first:function(a,c){return c===0},last:function(a,c,b,h){return c===h.length-1},even:function(a,c){return c%2===0},odd:function(a,c){return c%2===1},lt:function(a,c,b){return c<b[3]-0},gt:function(a,c,b){return c>b[3]-0},nth:function(a,c,b){return b[3]-0===c},eq:function(a,c,b){return b[3]-0===c}},filter:{PSEUDO:function(a,c,b,h){var k=c[1],g=A.filters[k];if(g)return g(a,b,c,h);else if(k==="contains")return(a.textContent||a.innerText||u.getText([a])||"").indexOf(c[3])>=
-0;else if(k==="not"){c=c[3];b=0;for(h=c.length;b<h;b++)if(c[b]===a)return!1;return!0}else u.error(k)},CHILD:function(a,c){var b=c[1],h=a;switch(b){case "only":case "first":for(;h=h.previousSibling;)if(h.nodeType===1)return!1;if(b==="first")return!0;h=a;case "last":for(;h=h.nextSibling;)if(h.nodeType===1)return!1;return!0;case "nth":var b=c[2],k=c[3];if(b===1&&k===0)return!0;var g=c[0],e=a.parentNode;if(e&&(e.sizcache!==g||!a.nodeIndex)){for(var s=0,h=e.firstChild;h;h=h.nextSibling)if(h.nodeType===
-1)h.nodeIndex=++s;e.sizcache=g}h=a.nodeIndex-k;return b===0?h===0:h%b===0&&h/b>=0}},ID:function(a,c){return a.nodeType===1&&a.getAttribute("id")===c},TAG:function(a,c){return c==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===c},CLASS:function(a,c){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(c)>-1},ATTR:function(a,c){var b=c[1],b=A.attrHandle[b]?A.attrHandle[b](a):a[b]!=null?a[b]:a.getAttribute(b),h=b+"",k=c[2],g=c[4];return b==null?k==="!=":k==="="?h===g:k==="*="?h.indexOf(g)>=
-0:k==="~="?(" "+h+" ").indexOf(g)>=0:!g?h&&b!==!1:k==="!="?h!==g:k==="^="?h.indexOf(g)===0:k==="$="?h.substr(h.length-g.length)===g:k==="|="?h===g||h.substr(0,g.length+1)===g+"-":!1},POS:function(a,c,b,h){var k=A.setFilters[c[2]];if(k)return k(a,b,c,h)}}},r=A.match.POS,o=function(a,c){return"\\"+(c-0+1)},q;for(q in A.match)A.match[q]=RegExp(A.match[q].source+/(?![^\[]*\])(?![^\(]*\))/.source),A.leftMatch[q]=RegExp(/(^(?:.|\r|\n)*?)/.source+A.match[q].source.replace(/\\(\d+)/g,o));var P=function(a,
-c){a=Array.prototype.slice.call(a,0);return c?(c.push.apply(c,a),c):a};try{Array.prototype.slice.call(w.documentElement.childNodes,0)}catch(ka){P=function(a,c){var b=0,h=c||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(h,a);else if(typeof a.length==="number")for(var k=a.length;b<k;b++)h.push(a[b]);else for(;a[b];b++)h.push(a[b]);return h}}var la,v;w.documentElement.compareDocumentPosition?la=function(a,c){return a===c?(e=!0,0):!a.compareDocumentPosition||!c.compareDocumentPosition?
-a.compareDocumentPosition?-1:1:a.compareDocumentPosition(c)&4?-1:1}:(la=function(a,c){if(a===c)return e=!0,0;else if(a.sourceIndex&&c.sourceIndex)return a.sourceIndex-c.sourceIndex;var b,h,k=[],g=[];b=a.parentNode;h=c.parentNode;var s=b;if(b===h)return v(a,c);else if(b){if(!h)return 1}else return-1;for(;s;)k.unshift(s),s=s.parentNode;for(s=h;s;)g.unshift(s),s=s.parentNode;b=k.length;h=g.length;for(s=0;s<b&&s<h;s++)if(k[s]!==g[s])return v(k[s],g[s]);return s===b?v(a,g[s],-1):v(k[s],c,1)},v=function(a,
-c,b){if(a===c)return b;for(a=a.nextSibling;a;){if(a===c)return-1;a=a.nextSibling}return 1});u.getText=function(a){for(var c="",b,h=0;a[h];h++)b=a[h],b.nodeType===3||b.nodeType===4?c+=b.nodeValue:b.nodeType!==8&&(c+=u.getText(b.childNodes));return c};(function(){var a=w.createElement("div"),c="script"+(new Date).getTime(),b=w.documentElement;a.innerHTML="<a name='"+c+"'/>";b.insertBefore(a,b.firstChild);if(w.getElementById(c))A.find.ID=function(a,c,b){if(typeof c.getElementById!=="undefined"&&!b)return(c=
-c.getElementById(a[1]))?c.id===a[1]||typeof c.getAttributeNode!=="undefined"&&c.getAttributeNode("id").nodeValue===a[1]?[c]:j:[]},A.filter.ID=function(a,c){var b=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&b&&b.nodeValue===c};b.removeChild(a);b=a=null})();(function(){var a=w.createElement("div");a.appendChild(w.createComment(""));if(a.getElementsByTagName("*").length>0)A.find.TAG=function(a,c){var b=c.getElementsByTagName(a[1]);if(a[1]==="*"){for(var h=
-[],k=0;b[k];k++)b[k].nodeType===1&&h.push(b[k]);b=h}return b};a.innerHTML="<a href='#'></a>";if(a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#")A.attrHandle.href=function(a){return a.getAttribute("href",2)};a=null})();w.querySelectorAll&&function(){var a=u,c=w.createElement("div");c.innerHTML="<p class='TEST'></p>";if(!(c.querySelectorAll&&c.querySelectorAll(".TEST").length===0)){u=function(c,b,h,k){b=b||w;if(!k&&!u.isXML(b)){var g=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(c);
-if(g&&(b.nodeType===1||b.nodeType===9))if(g[1])return P(b.getElementsByTagName(c),h);else if(g[2]&&A.find.CLASS&&b.getElementsByClassName)return P(b.getElementsByClassName(g[2]),h);if(b.nodeType===9){if(c==="body"&&b.body)return P([b.body],h);else if(g&&g[3]){var s=b.getElementById(g[3]);if(s&&s.parentNode){if(s.id===g[3])return P([s],h)}else return P([],h)}try{return P(b.querySelectorAll(c),h)}catch(e){}}else if(b.nodeType===1&&b.nodeName.toLowerCase()!=="object"){var g=b,f=(s=b.getAttribute("id"))||
-"__sizzle__",d=b.parentNode,p=/^\s*[+~]/.test(c);s?f=f.replace(/'/g,"\\$&"):b.setAttribute("id",f);if(p&&d)b=b.parentNode;try{if(!p||d)return P(b.querySelectorAll("[id='"+f+"'] "+c),h)}catch(r){}finally{s||g.removeAttribute("id")}}}return a(c,b,h,k)};for(var b in a)u[b]=a[b];c=null}}();(function(){var a=w.documentElement,c=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(c){var b=!c.call(w.createElement("div"),"div"),h=!1;try{c.call(w.documentElement,"[test!='']:sizzle")}catch(k){h=
-!0}u.matchesSelector=function(a,k){k=k.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u.isXML(a))try{if(h||!A.match.PSEUDO.test(k)&&!/!=/.test(k)){var g=c.call(a,k);if(g||!b||a.document&&a.document.nodeType!==11)return g}}catch(s){}return u(k,null,null,[a]).length>0}}})();(function(){var a=w.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0&&(a.lastChild.className="e",a.getElementsByClassName("e").length!==
-1))A.order.splice(1,0,"CLASS"),A.find.CLASS=function(a,c,b){if(typeof c.getElementsByClassName!=="undefined"&&!b)return c.getElementsByClassName(a[1])},a=null})();u.contains=w.documentElement.contains?function(a,c){return a!==c&&(a.contains?a.contains(c):!0)}:w.documentElement.compareDocumentPosition?function(a,c){return!!(a.compareDocumentPosition(c)&16)}:function(){return!1};u.isXML=function(a){return(a=(a?a.ownerDocument||a:0).documentElement)?a.nodeName!=="HTML":!1};var Y=function(a,c){for(var b,
-h=[],k="",g=c.nodeType?[c]:c;b=A.match.PSEUDO.exec(a);)k+=b[0],a=a.replace(A.match.PSEUDO,"");a=A.relative[a]?a+"*":a;b=0;for(var s=g.length;b<s;b++)u(a,g[b],h);return u.filter(k,h)};b.find=u;b.expr=u.selectors;b.expr[":"]=b.expr.filters;b.unique=u.uniqueSort;b.text=u.getText;b.isXMLDoc=u.isXML;b.contains=u.contains})();var ua=/Until$/,U=/^(?:parents|prevUntil|prevAll)/,za=/,/,Ga=/^.[^:#\[\.,]*$/,g=Array.prototype.slice,u=b.expr.match.POS,e={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(a){var c=
-this,h,k;if(typeof a!=="string")return b(a).filter(function(){for(h=0,k=c.length;h<k;h++)if(b.contains(c[h],this))return!0});var g=this.pushStack("","find",a),e,f,d;for(h=0,k=this.length;h<k;h++)if(e=g.length,b.find(a,this[h],g),h>0)for(f=e;f<g.length;f++)for(d=0;d<e;d++)if(g[d]===g[f]){g.splice(f--,1);break}return g},has:function(a){var c=b(a);return this.filter(function(){for(var a=0,k=c.length;a<k;a++)if(b.contains(this,c[a]))return!0})},not:function(a){return this.pushStack(L(this,a,!1),"not",
-a)},filter:function(a){return this.pushStack(L(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a==="string"?b.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,c){var h=[],k,g,e=this[0];if(b.isArray(a)){var f,d={},p=1;if(e&&a.length){for(k=0,g=a.length;k<g;k++)f=a[k],d[f]||(d[f]=u.test(f)?b(f,c||this.context):f);for(;e&&e.ownerDocument&&e!==c;){for(f in d)k=d[f],(k.jquery?k.index(e)>-1:b(e).is(k))&&h.push({selector:f,elem:e,level:p});e=e.parentNode;p++}}return h}f=u.test(a)||
-typeof a!=="string"?b(a,c||this.context):0;for(k=0,g=this.length;k<g;k++)for(e=this[k];e;)if(f?f.index(e)>-1:b.find.matchesSelector(e,a)){h.push(e);break}else if(e=e.parentNode,!e||!e.ownerDocument||e===c||e.nodeType===11)break;h=h.length>1?b.unique(h):h;return this.pushStack(h,"closest",a)},index:function(a){return!a?this[0]&&this[0].parentNode?this.prevAll().length:-1:typeof a==="string"?b.inArray(this[0],b(a)):b.inArray(a.jquery?a[0]:a,this)},add:function(a,c){var h=typeof a==="string"?b(a,c):
-b.makeArray(a&&a.nodeType?[a]:a),k=b.merge(this.get(),h);return this.pushStack(!h[0]||!h[0].parentNode||h[0].parentNode.nodeType===11||!k[0]||!k[0].parentNode||k[0].parentNode.nodeType===11?k:b.unique(k))},andSelf:function(){return this.add(this.prevObject)}});b.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return b.dir(a,"parentNode")},parentsUntil:function(a,c,h){return b.dir(a,"parentNode",h)},next:function(a){return b.nth(a,2,"nextSibling")},prev:function(a){return b.nth(a,
-2,"previousSibling")},nextAll:function(a){return b.dir(a,"nextSibling")},prevAll:function(a){return b.dir(a,"previousSibling")},nextUntil:function(a,c,h){return b.dir(a,"nextSibling",h)},prevUntil:function(a,c,h){return b.dir(a,"previousSibling",h)},siblings:function(a){return b.sibling(a.parentNode.firstChild,a)},children:function(a){return b.sibling(a.firstChild)},contents:function(a){return b.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:b.makeArray(a.childNodes)}},function(a,
-c){b.fn[a]=function(h,k){var s=b.map(this,c,h),f=g.call(arguments);ua.test(a)||(k=h);k&&typeof k==="string"&&(s=b.filter(k,s));s=this.length>1&&!e[a]?b.unique(s):s;if((this.length>1||za.test(k))&&U.test(a))s=s.reverse();return this.pushStack(s,a,f.join(","))}});b.extend({filter:function(a,c,h){h&&(a=":not("+a+")");return c.length===1?b.find.matchesSelector(c[0],a)?[c[0]]:[]:b.find.matches(a,c)},dir:function(a,c,h){for(var k=[],a=a[c];a&&a.nodeType!==9&&(h===j||a.nodeType!==1||!b(a).is(h));)a.nodeType===
-1&&k.push(a),a=a[c];return k},nth:function(a,c,b){for(var c=c||1,k=0;a;a=a[b])if(a.nodeType===1&&++k===c)break;return a},sibling:function(a,c){for(var b=[];a;a=a.nextSibling)a.nodeType===1&&a!==c&&b.push(a);return b}});var A=/ jQuery\d+="(?:\d+|null)"/g,p=/^\s+/,ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,la=/<([\w:]+)/,Q=/<tbody/i,Y=/<|&#?\w+;/,oa=/<(?:script|object|embed|option|style)/i,T=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=/\/(java|ecma)script/i,gb=/^\s*<!(?:\[CDATA\[|\-\-)/,
-pa={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};pa.optgroup=pa.option;pa.tbody=pa.tfoot=pa.colgroup=pa.caption=pa.thead;pa.th=pa.td;if(!b.support.htmlSerialize)pa._default=[1,"div<div>","</div>"];b.fn.extend({text:function(a){return b.isFunction(a)?
-this.each(function(c){var h=b(this);h.text(a.call(this,c,h.text()))}):typeof a!=="object"&&a!==j?this.empty().append((this[0]&&this[0].ownerDocument||w).createTextNode(a)):b.text(this)},wrapAll:function(a){if(b.isFunction(a))return this.each(function(c){b(this).wrapAll(a.call(this,c))});if(this[0]){var c=b(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&c.insertBefore(this[0]);c.map(function(){for(var a=this;a.firstChild&&a.firstChild.nodeType===1;)a=a.firstChild;return a}).append(this)}return this},
-wrapInner:function(a){return b.isFunction(a)?this.each(function(c){b(this).wrapInner(a.call(this,c))}):this.each(function(){var c=b(this),h=c.contents();h.length?h.wrapAll(a):c.append(a)})},wrap:function(a){return this.each(function(){b(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,
-!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});else if(arguments.length){var a=b(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});else if(arguments.length){var a=
-this.pushStack(this,"after",arguments);a.push.apply(a,b(arguments[0]).toArray());return a}},remove:function(a,c){for(var h=0,k;(k=this[h])!=null;h++)if(!a||b.filter(a,[k]).length)!c&&k.nodeType===1&&(b.cleanData(k.getElementsByTagName("*")),b.cleanData([k])),k.parentNode&&k.parentNode.removeChild(k);return this},empty:function(){for(var a=0,c;(c=this[a])!=null;a++)for(c.nodeType===1&&b.cleanData(c.getElementsByTagName("*"));c.firstChild;)c.removeChild(c.firstChild);return this},clone:function(a,c){a=
-a==null?!1:a;c=c==null?a:c;return this.map(function(){return b.clone(this,a,c)})},html:function(a){if(a===j)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(A,""):null;else if(typeof a==="string"&&!oa.test(a)&&(b.support.leadingWhitespace||!p.test(a))&&!pa[(la.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ka,"<$1></$2>");try{for(var c=0,h=this.length;c<h;c++)if(this[c].nodeType===1)b.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a}catch(k){this.empty().append(a)}}else b.isFunction(a)?
-this.each(function(c){var h=b(this);h.html(a.call(this,c,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(b.isFunction(a))return this.each(function(c){var h=b(this),k=h.html();h.replaceWith(a.call(this,c,k))});typeof a!=="string"&&(a=b(a).detach());return this.each(function(){var c=this.nextSibling,h=this.parentNode;b(this).remove();c?b(c).before(a):b(h).append(a)})}else return this.length?this.pushStack(b(b.isFunction(a)?a():a),"replaceWith",
-a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,h){var k,g,e,f=a[0],d=[];if(!b.support.checkClone&&arguments.length===3&&typeof f==="string"&&T.test(f))return this.each(function(){b(this).domManip(a,c,h,!0)});if(b.isFunction(f))return this.each(function(k){var g=b(this);a[0]=f.call(this,k,c?g.html():j);g.domManip(a,c,h)});if(this[0]){k=f&&f.parentNode;k=b.support.parentNode&&k&&k.nodeType===11&&k.childNodes.length===this.length?{fragment:k}:b.buildFragment(a,this,d);e=
-k.fragment;if(g=e.childNodes.length===1?e=e.firstChild:e.firstChild){c=c&&b.nodeName(g,"tr");g=0;for(var p=this.length,u=p-1;g<p;g++)h.call(c?b.nodeName(this[g],"table")?this[g].getElementsByTagName("tbody")[0]||this[g].appendChild(this[g].ownerDocument.createElement("tbody")):this[g]:this[g],k.cacheable||p>1&&g<u?b.clone(e,!0,!0):e)}d.length&&b.each(d,ma)}return this}});b.buildFragment=function(a,c,h){var k,g,e,f;c&&c[0]&&(f=c[0].ownerDocument||c[0]);f.createDocumentFragment||(f=w);if(a.length===
-1&&typeof a[0]==="string"&&a[0].length<512&&f===w&&a[0].charAt(0)==="<"&&!oa.test(a[0])&&(b.support.checkClone||!T.test(a[0])))g=!0,(e=b.fragments[a[0]])&&e!==1&&(k=e);k||(k=f.createDocumentFragment(),b.clean(a,f,k,h));g&&(b.fragments[a[0]]=e?k:1);return{fragment:k,cacheable:g}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,c){b.fn[a]=function(h){var k=[],h=b(h),g=this.length===1&&this[0].parentNode;if(g&&
-g.nodeType===11&&g.childNodes.length===1&&h.length===1)return h[c](this[0]),this;else{for(var g=0,e=h.length;g<e;g++){var f=(g>0?this.clone(!0):this).get();b(h[g])[c](f);k=k.concat(f)}return this.pushStack(k,a,h.selector)}}});b.extend({clone:function(a,c,h){var k=a.cloneNode(!0),g,e,f;if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!b.isXMLDoc(a)){M(a,k);g=K(a);e=K(k);for(f=0;g[f];++f)e[f]&&M(g[f],e[f])}if(c&&(R(a,k),h)){g=K(a);e=K(k);for(f=0;g[f];++f)R(g[f],
-e[f])}return k},clean:function(a,c,h,k){c=c||w;typeof c.createElement==="undefined"&&(c=c.ownerDocument||c[0]&&c[0].ownerDocument||w);for(var g=[],e,f=0,d;(d=a[f])!=null;f++)if(typeof d==="number"&&(d+=""),d){if(typeof d==="string")if(Y.test(d)){d=d.replace(ka,"<$1></$2>");e=(la.exec(d)||["",""])[1].toLowerCase();var u=pa[e]||pa._default,A=u[0],r=c.createElement("div");for(r.innerHTML=u[1]+d+u[2];A--;)r=r.lastChild;if(!b.support.tbody){A=Q.test(d);u=e==="table"&&!A?r.firstChild&&r.firstChild.childNodes:
-u[1]==="<table>"&&!A?r.childNodes:[];for(e=u.length-1;e>=0;--e)b.nodeName(u[e],"tbody")&&!u[e].childNodes.length&&u[e].parentNode.removeChild(u[e])}!b.support.leadingWhitespace&&p.test(d)&&r.insertBefore(c.createTextNode(p.exec(d)[0]),r.firstChild);d=r.childNodes}else d=c.createTextNode(d);var o;if(!b.support.appendChecked)if(d[0]&&typeof(o=d.length)==="number")for(e=0;e<o;e++)C(d[e]);else C(d);d.nodeType?g.push(d):g=b.merge(g,d)}if(h){a=function(a){return!a.type||Ma.test(a.type)};for(f=0;g[f];f++)k&&
-b.nodeName(g[f],"script")&&(!g[f].type||g[f].type.toLowerCase()==="text/javascript")?k.push(g[f].parentNode?g[f].parentNode.removeChild(g[f]):g[f]):(g[f].nodeType===1&&(c=b.grep(g[f].getElementsByTagName("script"),a),g.splice.apply(g,[f+1,0].concat(c))),h.appendChild(g[f]))}return g},cleanData:function(a){for(var c,h,k=b.cache,g=b.expando,e=b.event.special,f=b.support.deleteExpando,d=0,p;(p=a[d])!=null;d++)if(!p.nodeName||!b.noData[p.nodeName.toLowerCase()])if(h=p[b.expando]){if((c=k[h]&&k[h][g])&&
-c.events){for(var u in c.events)e[u]?b.event.remove(p,u):b.removeEvent(p,u,c.handle);if(c.handle)c.handle.elem=null}f?delete p[b.expando]:p.removeAttribute&&p.removeAttribute(b.expando);delete k[h]}}});var Ba=/alpha\([^)]*\)/i,Na=/opacity=([^)]*)/,va=/([A-Z]|^ms)/g,Ea=/^-?\d+(?:px)?$/i,mb=/^-?\d/,nb=/^([\-+])=([\-+.\de]+)/,ob={position:"absolute",visibility:"hidden",display:"block"},hb=["Left","Right"],ib=["Top","Bottom"],Ja,Ya,Za;b.fn.css=function(a,c){return arguments.length===2&&c===j?this:b.access(this,
-a,c,!0,function(a,c,g){return g!==j?b.style(a,c,g):b.css(a,c)})};b.extend({cssHooks:{opacity:{get:function(a,c){if(c){var b=Ja(a,"opacity","opacity");return b===""?"1":b}else return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,h,k){if(a&&!(a.nodeType===3||a.nodeType===8||!a.style)){var g,e=b.camelCase(c),f=a.style,d=b.cssHooks[e],c=b.cssProps[e]||
-e;if(h!==j){k=typeof h;if(k==="string"&&(g=nb.exec(h)))h=+(g[1]+1)*+g[2]+parseFloat(b.css(a,c)),k="number";if(!(h==null||k==="number"&&isNaN(h)))if(k==="number"&&!b.cssNumber[e]&&(h+="px"),!d||!("set"in d)||(h=d.set(a,h))!==j)try{f[c]=h}catch(p){}}else return d&&"get"in d&&(g=d.get(a,!1,k))!==j?g:f[c]}},css:function(a,c,h){var k,g,c=b.camelCase(c);g=b.cssHooks[c];c=b.cssProps[c]||c;c==="cssFloat"&&(c="float");if(g&&"get"in g&&(k=g.get(a,!0,h))!==j)return k;else if(Ja)return Ja(a,c)},swap:function(a,
-c,b){var g={},e;for(e in c)g[e]=a.style[e],a.style[e]=c[e];b.call(a);for(e in c)a.style[e]=g[e]}});b.curCSS=b.css;b.each(["height","width"],function(a,c){b.cssHooks[c]={get:function(a,g,e){var f;if(g){if(a.offsetWidth!==0)return S(a,c,e);else b.swap(a,ob,function(){f=S(a,c,e)});return f}},set:function(a,c){if(Ea.test(c)){if(c=parseFloat(c),c>=0)return c+"px"}else return c}}});if(!b.support.opacity)b.cssHooks.opacity={get:function(a,c){return Na.test((c&&a.currentStyle?a.currentStyle.filter:a.style.filter)||
-"")?parseFloat(RegExp.$1)/100+"":c?"1":""},set:function(a,c){var h=a.style,g=a.currentStyle,e=b.isNaN(c)?"":"alpha(opacity="+c*100+")",f=g&&g.filter||h.filter||"";h.zoom=1;if(c>=1&&b.trim(f.replace(Ba,""))===""&&(h.removeAttribute("filter"),g&&!g.filter))return;h.filter=Ba.test(f)?f.replace(Ba,e):f+" "+e}};b(function(){if(!b.support.reliableMarginRight)b.cssHooks.marginRight={get:function(a,c){var h;b.swap(a,{display:"inline-block"},function(){h=c?Ja(a,"margin-right","marginRight"):a.style.marginRight});
-return h}}});w.defaultView&&w.defaultView.getComputedStyle&&(Ya=function(a,c){var h,g,c=c.replace(va,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return j;if(g=g.getComputedStyle(a,null))h=g.getPropertyValue(c),h===""&&!b.contains(a.ownerDocument.documentElement,a)&&(h=b.style(a,c));return h});w.documentElement.currentStyle&&(Za=function(a,c){var b,g=a.currentStyle&&a.currentStyle[c],e=a.runtimeStyle&&a.runtimeStyle[c],f=a.style;if(!Ea.test(g)&&mb.test(g)){b=f.left;if(e)a.runtimeStyle.left=
-a.currentStyle.left;f.left=c==="fontSize"?"1em":g||0;g=f.pixelLeft+"px";f.left=b;if(e)a.runtimeStyle.left=e}return g===""?"auto":g});Ja=Ya||Za;if(b.expr&&b.expr.filters)b.expr.filters.hidden=function(a){var c=a.offsetHeight;return a.offsetWidth===0&&c===0||!b.support.reliableHiddenOffsets&&(a.style.display||b.css(a,"display"))==="none"},b.expr.filters.visible=function(a){return!b.expr.filters.hidden(a)};var pb=/%20/g,jb=/\[\]$/,$a=/\r?\n/g,qb=/#.*$/,rb=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,sb=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
-tb=/^(?:GET|HEAD)$/,ub=/^\/\//,ab=/\?/,vb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,wb=/^(?:select|textarea)/i,Wa=/\s+/,xb=/([?&])_=[^&]*/,bb=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,cb=b.fn.load,Ta={},db={},Ha,Ia,eb=["*/"]+["*"];try{Ha=na.href}catch(Db){Ha=w.createElement("a"),Ha.href="",Ha=Ha.href}Ia=bb.exec(Ha.toLowerCase())||[];b.fn.extend({load:function(a,c,h){if(typeof a!=="string"&&cb)return cb.apply(this,arguments);else if(!this.length)return this;var g=a.indexOf(" ");
-if(g>=0)var e=a.slice(g,a.length),a=a.slice(0,g);g="GET";c&&(b.isFunction(c)?(h=c,c=j):typeof c==="object"&&(c=b.param(c,b.ajaxSettings.traditional),g="POST"));var f=this;b.ajax({url:a,type:g,dataType:"html",data:c,complete:function(a,c,g){g=a.responseText;a.isResolved()&&(a.done(function(a){g=a}),f.html(e?b("<div>").append(g.replace(vb,"")).find(e):g));h&&f.each(h,[g,c,a])}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?
-b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||wb.test(this.nodeName)||sb.test(this.type))}).map(function(a,c){var h=b(this).val();return h==null?null:b.isArray(h)?b.map(h,function(a){return{name:c.name,value:a.replace($a,"\r\n")}}):{name:c.name,value:h.replace($a,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,c){b.fn[c]=function(a){return this.bind(c,a)}});b.each(["get","post"],
-function(a,c){b[c]=function(a,g,e,f){b.isFunction(g)&&(f=f||e,e=g,g=j);return b.ajax({type:c,url:a,data:g,success:e,dataType:f})}});b.extend({getScript:function(a,c){return b.get(a,j,c,"script")},getJSON:function(a,c,h){return b.get(a,c,h,"json")},ajaxSetup:function(a,c){c?N(a,b.ajaxSettings):(c=a,a=b.ajaxSettings);N(a,c);return a},ajaxSettings:{url:Ha,isLocal:/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(Ia[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",
-processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":eb},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":d.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:B(Ta),ajaxTransport:B(db),ajax:function(a,c){function h(a,c,h,r){if(Y!==2){Y=2;la&&clearTimeout(la);ka=j;q=r||"";
-Q.readyState=a>0?4:0;var o,P,v,r=c;if(h){var T=g,l=Q,oa=T.contents,x=T.dataTypes,z=T.responseFields,n,w,t,B;for(w in z)w in h&&(l[z[w]]=h[w]);for(;x[0]==="*";)x.shift(),n===j&&(n=T.mimeType||l.getResponseHeader("content-type"));if(n)for(w in oa)if(oa[w]&&oa[w].test(n)){x.unshift(w);break}if(x[0]in h)t=x[0];else{for(w in h){if(!x[0]||T.converters[w+" "+x[0]]){t=w;break}B||(B=w)}t=t||B}t?(t!==x[0]&&x.unshift(t),h=h[t]):h=void 0}else h=j;if(a>=200&&a<300||a===304){if(g.ifModified){if(n=Q.getResponseHeader("Last-Modified"))b.lastModified[A]=
-n;if(n=Q.getResponseHeader("Etag"))b.etag[A]=n}if(a===304)r="notmodified",o=!0;else try{n=g;n.dataFilter&&(h=n.dataFilter(h,n.dataType));var va=n.dataTypes;w={};var ga,Na,C=va.length,Ma,F=va[0],Ea,E,y,Ba,D;for(ga=1;ga<C;ga++){if(ga===1)for(Na in n.converters)typeof Na==="string"&&(w[Na.toLowerCase()]=n.converters[Na]);Ea=F;F=va[ga];if(F==="*")F=Ea;else if(Ea!=="*"&&Ea!==F){E=Ea+" "+F;y=w[E]||w["* "+F];if(!y)for(Ba in D=j,w)if(Ma=Ba.split(" "),Ma[0]===Ea||Ma[0]==="*")if(D=w[Ma[1]+" "+F]){Ba=w[Ba];
-Ba===!0?y=D:D===!0&&(y=Ba);break}!y&&!D&&b.error("No conversion from "+E.replace(" "," to "));y!==!0&&(h=y?y(h):D(Ba(h)))}}P=h;r="success";o=!0}catch(pa){r="parsererror",v=pa}}else if(v=r,!r||a)r="error",a<0&&(a=0);Q.status=a;Q.statusText=""+(c||r);o?d.resolveWith(e,[P,r,Q]):d.rejectWith(e,[Q,r,v]);Q.statusCode(u);u=j;W&&f.trigger("ajax"+(o?"Success":"Error"),[Q,g,o?P:v]);p.resolveWith(e,[Q,r]);W&&(f.trigger("ajaxComplete",[Q,g]),--b.active||b.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,
-a=j);var c=c||{},g=b.ajaxSetup({},c),e=g.context||g,f=e!==g&&(e.nodeType||e instanceof b)?b(e):b.event,d=b.Deferred(),p=b._Deferred(),u=g.statusCode||{},A,r={},o={},q,P,ka,la,v,Y=0,W,T,Q={readyState:0,setRequestHeader:function(a,c){if(!Y){var b=a.toLowerCase(),a=o[b]=o[b]||a;r[a]=c}return this},getAllResponseHeaders:function(){return Y===2?q:null},getResponseHeader:function(a){var c;if(Y===2){if(!P)for(P={};c=rb.exec(q);)P[c[1].toLowerCase()]=c[2];c=P[a.toLowerCase()]}return c===j?null:c},overrideMimeType:function(a){if(!Y)g.mimeType=
-a;return this},abort:function(a){a=a||"abort";ka&&ka.abort(a);h(0,a);return this}};d.promise(Q);Q.success=Q.done;Q.error=Q.fail;Q.complete=p.done;Q.statusCode=function(a){if(a){var c;if(Y<2)for(c in a)u[c]=[u[c],a[c]];else c=a[Q.status],Q.then(c,c)}return this};g.url=((a||g.url)+"").replace(qb,"").replace(ub,Ia[1]+"//");g.dataTypes=b.trim(g.dataType||"*").toLowerCase().split(Wa);if(g.crossDomain==null)v=bb.exec(g.url.toLowerCase()),g.crossDomain=!(!v||!(v[1]!=Ia[1]||v[2]!=Ia[2]||(v[3]||(v[1]==="http:"?
-80:443))!=(Ia[3]||(Ia[1]==="http:"?80:443))));if(g.data&&g.processData&&typeof g.data!=="string")g.data=b.param(g.data,g.traditional);O(Ta,g,c,Q);if(Y===2)return!1;W=g.global;g.type=g.type.toUpperCase();g.hasContent=!tb.test(g.type);W&&b.active++===0&&b.event.trigger("ajaxStart");if(!g.hasContent&&(g.data&&(g.url+=(ab.test(g.url)?"&":"?")+g.data,delete g.data),A=g.url,g.cache===!1)){v=b.now();var l=g.url.replace(xb,"$1_="+v);g.url=l+(l===g.url?(ab.test(g.url)?"&":"?")+"_="+v:"")}(g.data&&g.hasContent&&
-g.contentType!==!1||c.contentType)&&Q.setRequestHeader("Content-Type",g.contentType);g.ifModified&&(A=A||g.url,b.lastModified[A]&&Q.setRequestHeader("If-Modified-Since",b.lastModified[A]),b.etag[A]&&Q.setRequestHeader("If-None-Match",b.etag[A]));Q.setRequestHeader("Accept",g.dataTypes[0]&&g.accepts[g.dataTypes[0]]?g.accepts[g.dataTypes[0]]+(g.dataTypes[0]!=="*"?", "+eb+"; q=0.01":""):g.accepts["*"]);for(T in g.headers)Q.setRequestHeader(T,g.headers[T]);if(g.beforeSend&&(g.beforeSend.call(e,Q,g)===
-!1||Y===2))return Q.abort(),!1;for(T in{success:1,error:1,complete:1})Q[T](g[T]);if(ka=O(db,g,c,Q)){Q.readyState=1;W&&f.trigger("ajaxSend",[Q,g]);g.async&&g.timeout>0&&(la=setTimeout(function(){Q.abort("timeout")},g.timeout));try{Y=1,ka.send(r,h)}catch(oa){Y<2?h(-1,oa):b.error(oa)}}else h(-1,"No Transport");return Q},param:function(a,c){var g=[],k=function(a,c){c=b.isFunction(c)?c():c;g[g.length]=encodeURIComponent(a)+"="+encodeURIComponent(c)};if(c===j)c=b.ajaxSettings.traditional;if(b.isArray(a)||
-a.jquery&&!b.isPlainObject(a))b.each(a,function(){k(this.name,this.value)});else for(var e in a)t(e,a[e],c,k);return g.join("&").replace(pb,"+")}});b.extend({active:0,lastModified:{},etag:{}});var yb=b.now(),Ra=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+yb++}});b.ajaxPrefilter("json jsonp",function(a,c,g){c=a.contentType==="application/x-www-form-urlencoded"&&typeof a.data==="string";if(a.dataTypes[0]==="jsonp"||a.jsonp!==!1&&(Ra.test(a.url)||c&&
-Ra.test(a.data))){var k,e=a.jsonpCallback=b.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,f=d[e],p=a.url,u=a.data,A="$1"+e+"$2";a.jsonp!==!1&&(p=p.replace(Ra,A),a.url===p&&(c&&(u=u.replace(Ra,A)),a.data===u&&(p+=(/\?/.test(p)?"&":"?")+a.jsonp+"="+e)));a.url=p;a.data=u;d[e]=function(a){k=[a]};g.always(function(){d[e]=f;if(k&&b.isFunction(f))d[e](k[0])});a.converters["script json"]=function(){k||b.error(e+" was not called");return k[0]};a.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},
-contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){b.globalEval(a);return a}}});b.ajaxPrefilter("script",function(a){if(a.cache===j)a.cache=!1;if(a.crossDomain)a.type="GET",a.global=!1});b.ajaxTransport("script",function(a){if(a.crossDomain){var c,b=w.head||w.getElementsByTagName("head")[0]||w.documentElement;return{send:function(g,e){c=w.createElement("script");c.async="async";if(a.scriptCharset)c.charset=a.scriptCharset;c.src=a.url;c.onload=c.onreadystatechange=function(a,
-g){if(g||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,b&&c.parentNode&&b.removeChild(c),c=j,g||e(200,"success")};b.insertBefore(c,b.firstChild)},abort:function(){if(c)c.onload(0,1)}}}});var Va=d.ActiveXObject?function(){for(var a in Oa)Oa[a](0,1)}:!1,zb=0,Oa;b.ajaxSettings.xhr=d.ActiveXObject?function(){var a;if(!(a=!this.isLocal&&ra()))a:{try{a=new d.ActiveXObject("Microsoft.XMLHTTP");break a}catch(c){}a=void 0}return a}:ra;(function(a){b.extend(b.support,
-{ajax:!!a,cors:!!a&&"withCredentials"in a})})(b.ajaxSettings.xhr());b.support.ajax&&b.ajaxTransport(function(a){if(!a.crossDomain||b.support.cors){var c;return{send:function(g,k){var e=a.xhr(),f,p;a.username?e.open(a.type,a.url,a.async,a.username,a.password):e.open(a.type,a.url,a.async);if(a.xhrFields)for(p in a.xhrFields)e[p]=a.xhrFields[p];a.mimeType&&e.overrideMimeType&&e.overrideMimeType(a.mimeType);!a.crossDomain&&!g["X-Requested-With"]&&(g["X-Requested-With"]="XMLHttpRequest");try{for(p in g)e.setRequestHeader(p,
-g[p])}catch(u){}e.send(a.hasContent&&a.data||null);c=function(g,h){var d,p,u,A,r;try{if(c&&(h||e.readyState===4)){c=j;if(f)e.onreadystatechange=b.noop,Va&&delete Oa[f];if(h)e.readyState!==4&&e.abort();else{d=e.status;u=e.getAllResponseHeaders();A={};if((r=e.responseXML)&&r.documentElement)A.xml=r;A.text=e.responseText;try{p=e.statusText}catch(o){p=""}!d&&a.isLocal&&!a.crossDomain?d=A.text?200:404:d===1223&&(d=204)}}}catch(P){h||k(-1,P)}A&&k(d,p,A,u)};!a.async||e.readyState===4?c():(f=++zb,Va&&(Oa||
-(Oa={},b(d).unload(Va)),Oa[f]=c),e.onreadystatechange=c)},abort:function(){c&&c(0,1)}}}});var Ua={},Ca,Ka,Ab=/^(?:toggle|show|hide)$/,Bb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,Sa,Xa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],Pa;b.fn.extend({show:function(a,c,g){if(a||a===0)return this.animate(ca("show",3),a,c,g);else{for(var g=0,e=this.length;g<e;g++)if(a=this[g],a.style){c=a.style.display;if(!b._data(a,
-"olddisplay")&&c==="none")c=a.style.display="";c===""&&b.css(a,"display")==="none"&&b._data(a,"olddisplay",Aa(a.nodeName))}for(g=0;g<e;g++)if(a=this[g],a.style&&(c=a.style.display,c===""||c==="none"))a.style.display=b._data(a,"olddisplay")||"";return this}},hide:function(a,c,g){if(a||a===0)return this.animate(ca("hide",3),a,c,g);else{a=0;for(c=this.length;a<c;a++)this[a].style&&(g=b.css(this[a],"display"),g!=="none"&&!b._data(this[a],"olddisplay")&&b._data(this[a],"olddisplay",g));for(a=0;a<c;a++)if(this[a].style)this[a].style.display=
-"none";return this}},_toggle:b.fn.toggle,toggle:function(a,c,g){var e=typeof a==="boolean";b.isFunction(a)&&b.isFunction(c)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var c=e?a:b(this).is(":hidden");b(this)[c?"show":"hide"]()}):this.animate(ca("toggle",3),a,c,g);return this},fadeTo:function(a,c,b,g){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:c},a,b,g)},animate:function(a,c,g,e){var f=b.speed(c,g,e);if(b.isEmptyObject(a))return this.each(f.complete,
-[!1]);a=b.extend({},a);return this[f.queue===!1?"each":"queue"](function(){var s;f.queue===!1&&b._mark(this);var c=b.extend({},f),g=this.nodeType===1,h=g&&b(this).is(":hidden"),e,k,d,p,u;c.animatedProperties={};for(d in a){e=b.camelCase(d);d!==e&&(a[e]=a[d],delete a[d]);k=a[e];b.isArray(k)?(c.animatedProperties[e]=k[1],s=a[e]=k[0],k=s):c.animatedProperties[e]=c.specialEasing&&c.specialEasing[e]||c.easing||"swing";if(k==="hide"&&h||k==="show"&&!h)return c.complete.call(this);if(g&&(e==="height"||e===
-"width"))if(c.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],b.css(this,"display")==="inline"&&b.css(this,"float")==="none")b.support.inlineBlockNeedsLayout?(k=Aa(this.nodeName),k==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"}if(c.overflow!=null)this.style.overflow="hidden";for(d in a)if(g=new b.fx(this,c,d),k=a[d],Ab.test(k))g[k==="toggle"?h?"show":"hide":k]();else e=Bb.exec(k),p=g.cur(),e?
-(k=parseFloat(e[2]),u=e[3]||(b.cssNumber[d]?"":"px"),u!=="px"&&(b.style(this,d,(k||1)+u),p*=(k||1)/g.cur(),b.style(this,d,p+u)),e[1]&&(k=(e[1]==="-="?-1:1)*k+p),g.custom(p,k,u)):g.custom(p,k,"");return!0})},stop:function(a,c){a&&this.queue([]);this.each(function(){var a=b.timers,g=a.length;for(c||b._unmark(!0,this);g--;)if(a[g].elem===this){if(c)a[g](!0);a.splice(g,1)}});c||this.dequeue();return this}});b.each({slideDown:ca("show",1),slideUp:ca("hide",1),slideToggle:ca("toggle",1),fadeIn:{opacity:"show"},
-fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,c){b.fn[a]=function(a,b,g){return this.animate(c,a,b,g)}});b.extend({speed:function(a,c,g){var e=a&&typeof a==="object"?b.extend({},a):{complete:g||!g&&c||b.isFunction(a)&&a,duration:a,easing:g&&c||c&&!b.isFunction(c)&&c};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;e.old=e.complete;e.complete=function(a){b.isFunction(e.old)&&e.old.call(this);e.queue!==
-!1?b.dequeue(this):a!==!1&&b._unmark(this)};return e},easing:{linear:function(a,c,b,g){return b+g*a},swing:function(a,c,b,g){return(-Math.cos(a*Math.PI)/2+0.5)*g+b}},timers:[],fx:function(a,c,b){this.options=c;this.elem=a;this.prop=b;c.orig=c.orig||{}}});b.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];
-var a,c=b.css(this.elem,this.prop);return isNaN(a=parseFloat(c))?!c||c==="auto"?0:c:a},custom:function(a,c,g){function e(a){return f.step(a)}var f=this,d=b.fx;this.startTime=Pa||I();this.start=a;this.end=c;this.unit=g||this.unit||(b.cssNumber[this.prop]?"":"px");this.now=this.start;this.pos=this.state=0;e.elem=this.elem;e()&&b.timers.push(e)&&!Sa&&(Sa=setInterval(d.tick,d.interval))},show:function(){this.options.orig[this.prop]=b.style(this.elem,this.prop);this.options.show=!0;this.custom(this.prop===
-"width"||this.prop==="height"?1:0,this.cur());b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b.style(this.elem,this.prop);this.options.hide=!0;this.custom(this.cur(),0)},step:function(a){var c=Pa||I(),g=!0,e=this.elem,f=this.options,d;if(a||c>=f.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();f.animatedProperties[this.prop]=!0;for(d in f.animatedProperties)f.animatedProperties[d]!==!0&&(g=!1);if(g){f.overflow!=null&&!b.support.shrinkWrapBlocks&&b.each(["",
-"X","Y"],function(a,c){e.style["overflow"+c]=f.overflow[a]});f.hide&&b(e).hide();if(f.hide||f.show)for(var p in f.animatedProperties)b.style(e,p,f.orig[p]);f.complete.call(e)}return!1}else f.duration==Infinity?this.now=c:(a=c-this.startTime,this.state=a/f.duration,this.pos=b.easing[f.animatedProperties[this.prop]](this.state,a,0,1,f.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}};b.extend(b.fx,{tick:function(){for(var a=b.timers,c=0;c<a.length;++c)a[c]()||a.splice(c--,
-1);a.length||b.fx.stop()},interval:13,stop:function(){clearInterval(Sa);Sa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){b.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}});if(b.expr&&b.expr.filters)b.expr.filters.animated=function(a){return b.grep(b.timers,function(c){return a===c.elem}).length};var Cb=/^t(?:able|d|h)$/i,
-fb=/^(?:body|html)$/i;b.fn.offset="getBoundingClientRect"in w.documentElement?function(a){var c=this[0],g;if(a)return this.each(function(c){b.offset.setOffset(this,a,c)});if(!c||!c.ownerDocument)return null;if(c===c.ownerDocument.body)return b.offset.bodyOffset(c);try{g=c.getBoundingClientRect()}catch(e){}var f=c.ownerDocument,d=f.documentElement;if(!g||!b.contains(d,c))return g?{top:g.top,left:g.left}:{top:0,left:0};c=f.body;f=ya(f);return{top:g.top+(f.pageYOffset||b.support.boxModel&&d.scrollTop||
-c.scrollTop)-(d.clientTop||c.clientTop||0),left:g.left+(f.pageXOffset||b.support.boxModel&&d.scrollLeft||c.scrollLeft)-(d.clientLeft||c.clientLeft||0)}}:function(a){var c=this[0];if(a)return this.each(function(c){b.offset.setOffset(this,a,c)});if(!c||!c.ownerDocument)return null;if(c===c.ownerDocument.body)return b.offset.bodyOffset(c);b.offset.initialize();var g,e=c.offsetParent,f=c.ownerDocument,d=f.documentElement,p=f.body;g=(f=f.defaultView)?f.getComputedStyle(c,null):c.currentStyle;for(var u=
-c.offsetTop,A=c.offsetLeft;(c=c.parentNode)&&c!==p&&c!==d;){if(b.offset.supportsFixedPosition&&g.position==="fixed")break;g=f?f.getComputedStyle(c,null):c.currentStyle;u-=c.scrollTop;A-=c.scrollLeft;if(c===e){u+=c.offsetTop;A+=c.offsetLeft;if(b.offset.doesNotAddBorder&&(!b.offset.doesAddBorderForTableAndCells||!Cb.test(c.nodeName)))u+=parseFloat(g.borderTopWidth)||0,A+=parseFloat(g.borderLeftWidth)||0;e=c.offsetParent}b.offset.subtractsBorderForOverflowNotVisible&&g.overflow!=="visible"&&(u+=parseFloat(g.borderTopWidth)||
-0,A+=parseFloat(g.borderLeftWidth)||0)}if(g.position==="relative"||g.position==="static")u+=p.offsetTop,A+=p.offsetLeft;b.offset.supportsFixedPosition&&g.position==="fixed"&&(u+=Math.max(d.scrollTop,p.scrollTop),A+=Math.max(d.scrollLeft,p.scrollLeft));return{top:u,left:A}};b.offset={initialize:function(){var a=w.body,c=w.createElement("div"),g,e,f,d=parseFloat(b.css(a,"marginTop"))||0;b.extend(c.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});
-c.innerHTML="<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>";a.insertBefore(c,a.firstChild);g=c.firstChild;e=g.firstChild;f=g.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=f.offsetTop===5;e.style.position=
-"fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";g.style.overflow="hidden";g.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==d;a.removeChild(c);b.offset.initialize=b.noop},bodyOffset:function(a){var c=a.offsetTop,g=a.offsetLeft;b.offset.initialize();b.offset.doesNotIncludeMarginInBodyOffset&&(c+=parseFloat(b.css(a,"marginTop"))||0,g+=parseFloat(b.css(a,
-"marginLeft"))||0);return{top:c,left:g}},setOffset:function(a,c,g){var e=b.css(a,"position");if(e==="static")a.style.position="relative";var f=b(a),d=f.offset(),p=b.css(a,"top"),u=b.css(a,"left"),A={},r={};(e==="absolute"||e==="fixed")&&b.inArray("auto",[p,u])>-1?(r=f.position(),e=r.top,u=r.left):(e=parseFloat(p)||0,u=parseFloat(u)||0);b.isFunction(c)&&(c=c.call(a,g,d));if(c.top!=null)A.top=c.top-d.top+e;if(c.left!=null)A.left=c.left-d.left+u;"using"in c?c.using.call(a,A):f.css(A)}};b.fn.extend({position:function(){if(!this[0])return null;
-var a=this[0],c=this.offsetParent(),g=this.offset(),e=fb.test(c[0].nodeName)?{top:0,left:0}:c.offset();g.top-=parseFloat(b.css(a,"marginTop"))||0;g.left-=parseFloat(b.css(a,"marginLeft"))||0;e.top+=parseFloat(b.css(c[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(c[0],"borderLeftWidth"))||0;return{top:g.top-e.top,left:g.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||w.body;a&&!fb.test(a.nodeName)&&b.css(a,"position")==="static";)a=a.offsetParent;return a})}});
-b.each(["Left","Top"],function(a,c){var g="scroll"+c;b.fn[g]=function(c){var e,f;if(c===j){e=this[0];return!e?null:(f=ya(e))?"pageXOffset"in f?f[a?"pageYOffset":"pageXOffset"]:b.support.boxModel&&f.document.documentElement[g]||f.document.body[g]:e[g]}return this.each(function(){(f=ya(this))?f.scrollTo(!a?c:b(f).scrollLeft(),a?c:b(f).scrollTop()):this[g]=c})}});b.each(["Height","Width"],function(a,c){var g=c.toLowerCase();b.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(b.css(a,
-g,"padding")):null};b.fn["outer"+c]=function(a){var c=this[0];return c&&c.style?parseFloat(b.css(c,g,a?"margin":"border")):null};b.fn[g]=function(a){var e=this[0];if(!e)return a==null?null:this;if(b.isFunction(a))return this.each(function(c){var e=b(this);e[g](a.call(this,c,e[g]()))});if(b.isWindow(e)){var f=e.document.documentElement["client"+c],d=e.document.body;return e.document.compatMode==="CSS1Compat"&&f||d&&d["client"+c]||f}else return e.nodeType===9?Math.max(e.documentElement["client"+c],
-e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]):a===j?(e=b.css(e,g),f=parseFloat(e),b.isNaN(f)?e:f):this.css(g,typeof a==="string"?a:a+"px")}});d.jQuery=d.$=b})(window);
-// Input 1
-document.createElement("canvas").getContext||function(){function d(){return this.context_||(this.context_=new K(this))}function j(b,d,r){var j=na.call(arguments,2);return function(){return b.apply(d,j.concat(na.call(arguments)))}}function E(b){return String(b).replace(/&/g,"&amp;").replace(/"/g,"&quot;")}function n(b){b.namespaces.g_vml_||b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");
-if(!b.styleSheets.ex_canvas_)b=b.createStyleSheet(),b.owningElement.id="ex_canvas_",b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}function J(b){var d=b.srcElement;switch(b.propertyName){case "width":d.getContext().clearRect();d.style.width=d.attributes.width.nodeValue+"px";d.firstChild.style.width=d.clientWidth+"px";break;case "height":d.getContext().clearRect(),d.style.height=d.attributes.height.nodeValue+"px",d.firstChild.style.height=d.clientHeight+
-"px"}}function D(b){b=b.srcElement;if(b.firstChild)b.firstChild.style.width=b.clientWidth+"px",b.firstChild.style.height=b.clientHeight+"px"}function l(){return[[1,0,0],[0,1,0],[0,0,1]]}function x(b,d){for(var r=l(),j=0;j<3;j++)for(var q=0;q<3;q++){for(var o=0,w=0;w<3;w++)o+=b[j][w]*d[w][q];r[j][q]=o}return r}function y(b,d){d.fillStyle=b.fillStyle;d.lineCap=b.lineCap;d.lineJoin=b.lineJoin;d.lineWidth=b.lineWidth;d.miterLimit=b.miterLimit;d.shadowBlur=b.shadowBlur;d.shadowColor=b.shadowColor;d.shadowOffsetX=
-b.shadowOffsetX;d.shadowOffsetY=b.shadowOffsetY;d.strokeStyle=b.strokeStyle;d.globalAlpha=b.globalAlpha;d.font=b.font;d.textAlign=b.textAlign;d.textBaseline=b.textBaseline;d.arcScaleX_=b.arcScaleX_;d.arcScaleY_=b.arcScaleY_;d.lineScale_=b.lineScale_}function V(b){var d=b.indexOf("(",3),r=b.indexOf(")",d+1),d=b.substring(d+1,r).split(",");if(d.length!=4||b.charAt(3)!="a")d[3]=1;return d}function L(b,d,r){return Math.min(r,Math.max(d,b))}function R(b,d,r){r<0&&r++;r>1&&r--;return 6*r<1?b+(d-b)*6*r:
-2*r<1?d:3*r<2?b+(d-b)*(2/3-r)*6:b}function M(b){if(b in ea)return ea[b];var d,r=1,b=String(b);if(b.charAt(0)=="#")d=b;else if(/^rgb/.test(b)){r=V(b);d="#";for(var j,q=0;q<3;q++)j=r[q].indexOf("%")!=-1?Math.floor(parseFloat(r[q])/100*255):+r[q],d+=X[L(j,0,255)];r=+r[3]}else if(/^hsl/.test(b)){q=r=V(b);d=parseFloat(q[0])/360%360;d<0&&d++;j=L(parseFloat(q[1])/100,0,1);q=L(parseFloat(q[2])/100,0,1);if(j==0)j=q=d=q;else{var o=q<0.5?q*(1+j):q+j-q*j,l=2*q-o;j=R(l,o,d+1/3);q=R(l,o,d);d=R(l,o,d-1/3)}d="#"+
-X[Math.floor(j*255)]+X[Math.floor(q*255)]+X[Math.floor(d*255)];r=r[3]}else d=xa[b]||b;return ea[b]={color:d,alpha:r}}function K(b){this.m_=l();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=w*1;this.globalAlpha=1;this.font="10px sans-serif";this.textAlign="left";this.textBaseline="alphabetic";this.canvas=b;var d="width:"+b.clientWidth+"px;height:"+b.clientHeight+"px;overflow:hidden;position:absolute",
-r=b.ownerDocument.createElement("div");r.style.cssText=d;b.appendChild(r);d=r.cloneNode(!1);d.style.backgroundColor="red";d.style.filter="alpha(opacity=0)";b.appendChild(d);this.element_=r;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}function z(b,d,r,j){b.currentPath_.push({type:"bezierCurveTo",cp1x:d.x,cp1y:d.y,cp2x:r.x,cp2y:r.y,x:j.x,y:j.y});b.currentX_=j.x;b.currentY_=j.y}function C(b,d){var r=M(b.strokeStyle),j=r.color,r=r.alpha*b.globalAlpha,q=b.lineScale_*b.lineWidth;q<1&&(r*=q);d.push("<g_vml_:stroke",
-' opacity="',r,'"',' joinstyle="',b.lineJoin,'"',' miterlimit="',b.miterLimit,'"',' endcap="',sa[b.lineCap]||"square",'"',' weight="',q,'px"',' color="',j,'" />')}function ma(b,d,r,j){var q=b.fillStyle,o=b.arcScaleX_,l=b.arcScaleY_,n=j.x-r.x,x=j.y-r.y;if(q instanceof O){var v=0,z=j=0,t=0,B=1;if(q.type_=="gradient"){var v=q.x1_/o,r=q.y1_/l,F=S(b,q.x0_/o,q.y0_/l),v=S(b,v,r),v=Math.atan2(v.x-F.x,v.y-F.y)*180/Math.PI;v<0&&(v+=360);v<1.0E-6&&(v=0)}else F=S(b,q.x0_,q.y0_),j=(F.x-r.x)/n,z=(F.y-r.y)/x,n/=
-o*w,x/=l*w,B=ra.max(n,x),t=2*q.r0_/B,B=2*q.r1_/B-t;o=q.colors_;o.sort(function(b,d){return b.offset-d.offset});for(var l=o.length,F=o[0].color,r=o[l-1].color,n=o[0].alpha*b.globalAlpha,b=o[l-1].alpha*b.globalAlpha,x=[],C=0;C<l;C++){var y=o[C];x.push(y.offset*B+t+" "+y.color)}d.push('<g_vml_:fill type="',q.type_,'"',' method="none" focus="100%"',' color="',F,'"',' color2="',r,'"',' colors="',x.join(","),'"',' opacity="',b,'"',' g_o_:opacity2="',n,'"',' angle="',v,'"',' focusposition="',j,",",z,'" />')}else q instanceof
-N?n&&x&&d.push("<g_vml_:fill",' position="',-r.x/n*o*o,",",-r.y/x*l*l,'"',' type="tile"',' src="',q.src_,'" />'):(q=M(b.fillStyle),d.push('<g_vml_:fill color="',q.color,'" opacity="',q.alpha*b.globalAlpha,'" />'))}function S(b,d,r){b=b.m_;return{x:w*(d*b[0][0]+r*b[1][0]+b[2][0])-ha,y:w*(d*b[0][1]+r*b[1][1]+b[2][1])-ha}}function B(b,d,r){if(isFinite(d[0][0])&&isFinite(d[0][1])&&isFinite(d[1][0])&&isFinite(d[1][1])&&isFinite(d[2][0])&&isFinite(d[2][1])&&(b.m_=d,r))b.lineScale_=ya(Aa(d[0][0]*d[1][1]-
-d[0][1]*d[1][0]))}function O(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}function N(b,d){if(!b||b.nodeType!=1||b.tagName!="IMG")throw new t("TYPE_MISMATCH_ERR");if(b.readyState!="complete")throw new t("INVALID_STATE_ERR");switch(d){case "repeat":case null:case "":this.repetition_="repeat";break;case "repeat-x":case "repeat-y":case "no-repeat":this.repetition_=d;break;default:throw new t("SYNTAX_ERR");}this.src_=b.src;this.width_=b.width;this.height_=b.height}
-function t(b){this.code=this[b];this.message=b+": DOM Exception "+this.code}var ra=Math,I=ra.round,Fa=ra.sin,ca=ra.cos,Aa=ra.abs,ya=ra.sqrt,w=10,ha=w/2;navigator.userAgent.match(/MSIE ([\d.]+)?/);var na=Array.prototype.slice;n(document);var b={init:function(b){b=b||document;b.createElement("canvas");b.attachEvent("onreadystatechange",j(this.init_,this,b))},init_:function(b){for(var b=b.getElementsByTagName("canvas"),d=0;d<b.length;d++)this.initElement(b[d])},initElement:function(b){if(!b.getContext){b.getContext=
-d;n(b.ownerDocument);b.innerHTML="";b.attachEvent("onpropertychange",J);b.attachEvent("onresize",D);var j=b.attributes;j.width&&j.width.specified?b.style.width=j.width.nodeValue+"px":b.width=b.clientWidth;j.height&&j.height.specified?b.style.height=j.height.nodeValue+"px":b.height=b.clientHeight}return b}};b.init();for(var X=[],G=0;G<16;G++)for(var ba=0;ba<16;ba++)X[G*16+ba]=G.toString(16)+ba.toString(16);var xa={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",
-bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",
-darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",
-ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",
-mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",
-peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"},
-ea={},da={},sa={butt:"flat",round:"round"},G=K.prototype;G.clearRect=function(){if(this.textMeasureEl_)this.textMeasureEl_.removeNode(!0),this.textMeasureEl_=null;this.element_.innerHTML=""};G.beginPath=function(){this.currentPath_=[]};G.moveTo=function(b,d){var r=S(this,b,d);this.currentPath_.push({type:"moveTo",x:r.x,y:r.y});this.currentX_=r.x;this.currentY_=r.y};G.lineTo=function(b,d){var r=S(this,b,d);this.currentPath_.push({type:"lineTo",x:r.x,y:r.y});this.currentX_=r.x;this.currentY_=r.y};G.bezierCurveTo=
-function(b,d,r,j,q,o){q=S(this,q,o);b=S(this,b,d);r=S(this,r,j);z(this,b,r,q)};G.quadraticCurveTo=function(b,d,r,j){b=S(this,b,d);r=S(this,r,j);j={x:this.currentX_+2/3*(b.x-this.currentX_),y:this.currentY_+2/3*(b.y-this.currentY_)};z(this,j,{x:j.x+(r.x-this.currentX_)/3,y:j.y+(r.y-this.currentY_)/3},r)};G.arc=function(b,d,r,j,q,o){r*=w;var l=o?"at":"wa",n=b+ca(j)*r-ha,x=d+Fa(j)*r-ha,j=b+ca(q)*r-ha,q=d+Fa(q)*r-ha;n==j&&!o&&(n+=0.125);b=S(this,b,d);n=S(this,n,x);j=S(this,j,q);this.currentPath_.push({type:l,
-x:b.x,y:b.y,radius:r,xStart:n.x,yStart:n.y,xEnd:j.x,yEnd:j.y})};G.rect=function(b,d,r,j){this.moveTo(b,d);this.lineTo(b+r,d);this.lineTo(b+r,d+j);this.lineTo(b,d+j);this.closePath()};G.strokeRect=function(b,d,r,j){var q=this.currentPath_;this.beginPath();this.moveTo(b,d);this.lineTo(b+r,d);this.lineTo(b+r,d+j);this.lineTo(b,d+j);this.closePath();this.stroke();this.currentPath_=q};G.fillRect=function(b,d,r,j){var q=this.currentPath_;this.beginPath();this.moveTo(b,d);this.lineTo(b+r,d);this.lineTo(b+
-r,d+j);this.lineTo(b,d+j);this.closePath();this.fill();this.currentPath_=q};G.createLinearGradient=function(b,d,r,j){var q=new O("gradient");q.x0_=b;q.y0_=d;q.x1_=r;q.y1_=j;return q};G.createRadialGradient=function(b,d,r,j,q,o){var l=new O("gradientradial");l.x0_=b;l.y0_=d;l.r0_=r;l.x1_=j;l.y1_=q;l.r1_=o;return l};G.drawImage=function(b,d){var r,j,q,o,l,n,x,v;q=b.runtimeStyle.width;o=b.runtimeStyle.height;b.runtimeStyle.width="auto";b.runtimeStyle.height="auto";var z=b.width,t=b.height;b.runtimeStyle.width=
-q;b.runtimeStyle.height=o;if(arguments.length==3)r=arguments[1],j=arguments[2],l=n=0,x=q=z,v=o=t;else if(arguments.length==5)r=arguments[1],j=arguments[2],q=arguments[3],o=arguments[4],l=n=0,x=z,v=t;else if(arguments.length==9)l=arguments[1],n=arguments[2],x=arguments[3],v=arguments[4],r=arguments[5],j=arguments[6],q=arguments[7],o=arguments[8];else throw Error("Invalid number of arguments");var B=S(this,r,j),C=[];C.push(" <g_vml_:group",' coordsize="',w*10,",",w*10,'"',' coordorigin="0,0"',' style="width:',
-10,"px;height:",10,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var y=[];y.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",I(B.x/w),",","Dy=",I(B.y/w),"");var E=S(this,r+q,j),D=S(this,r,j+o);r=S(this,r+q,j+o);B.x=ra.max(B.x,E.x,D.x,r.x);B.y=ra.max(B.y,E.y,D.y,r.y);C.push("padding:0 ",I(B.x/w),"px ",I(B.y/w),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",y.join(""),", sizingmethod='clip');")}else C.push("top:",
-I(B.y/w),"px;left:",I(B.x/w),"px;");C.push(' ">','<g_vml_:image src="',b.src,'"',' style="width:',w*q,"px;"," height:",w*o,'px"',' cropleft="',l/z,'"',' croptop="',n/t,'"',' cropright="',(z-l-x)/z,'"',' cropbottom="',(t-n-v)/t,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",C.join(""))};G.stroke=function(b){for(var d={x:null,y:null},j={x:null,y:null},l=0;l<this.currentPath_.length;l+=5E3){var q=[];q.push("<g_vml_:shape",' filled="',!!b,'"',' style="position:absolute;width:',
-10,"px;height:",10,'px;"',' coordorigin="0,0"',' coordsize="',w*10,",",w*10,'"',' stroked="',!b,'"',' path="');for(var o=l;o<Math.min(l+5E3,this.currentPath_.length);o++){o%5E3==0&&o>0&&q.push(" m ",I(this.currentPath_[o-1].x),",",I(this.currentPath_[o-1].y));var n=this.currentPath_[o];switch(n.type){case "moveTo":q.push(" m ",I(n.x),",",I(n.y));break;case "lineTo":q.push(" l ",I(n.x),",",I(n.y));break;case "close":q.push(" x ");n=null;break;case "bezierCurveTo":q.push(" c ",I(n.cp1x),",",I(n.cp1y),
-",",I(n.cp2x),",",I(n.cp2y),",",I(n.x),",",I(n.y));break;case "at":case "wa":q.push(" ",n.type," ",I(n.x-this.arcScaleX_*n.radius),",",I(n.y-this.arcScaleY_*n.radius)," ",I(n.x+this.arcScaleX_*n.radius),",",I(n.y+this.arcScaleY_*n.radius)," ",I(n.xStart),",",I(n.yStart)," ",I(n.xEnd),",",I(n.yEnd))}if(n){if(d.x==null||n.x<d.x)d.x=n.x;if(j.x==null||n.x>j.x)j.x=n.x;if(d.y==null||n.y<d.y)d.y=n.y;if(j.y==null||n.y>j.y)j.y=n.y}}q.push(' ">');b?ma(this,q,d,j):C(this,q);q.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",
-q.join(""))}};G.fill=function(){this.stroke(!0)};G.closePath=function(){this.currentPath_.push({type:"close"})};G.save=function(){var b={};y(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=x(l(),this.m_)};G.restore=function(){if(this.aStack_.length)y(this.aStack_.pop(),this),this.m_=this.mStack_.pop()};G.translate=function(b,d){B(this,x([[1,0,0],[0,1,0],[b,d,1]],this.m_),!1)};G.rotate=function(b){var d=ca(b),b=Fa(b);B(this,x([[d,b,0],[-b,d,0],[0,0,1]],this.m_),!1)};G.scale=function(b,
-d){this.arcScaleX_*=b;this.arcScaleY_*=d;B(this,x([[b,0,0],[0,d,0],[0,0,1]],this.m_),!0)};G.transform=function(b,d,j,n,q,o){B(this,x([[b,d,0],[j,n,0],[q,o,1]],this.m_),!0)};G.setTransform=function(b,d,j,n,q,o){B(this,[[b,d,0],[j,n,0],[q,o,1]],!0)};G.drawText_=function(b,d,j,n,q){var o=this.m_,n=0,l=1E3,x=0,z=[],v;v=this.font;if(da[v])v=da[v];else{var t=document.createElement("div").style;try{t.font=v}catch(B){}v=da[v]={style:t.fontStyle||"normal",variant:t.fontVariant||"normal",weight:t.fontWeight||
-"normal",size:t.fontSize||10,family:t.fontFamily||"sans-serif"}}var t=v,y=this.element_;v={};for(var D in t)v[D]=t[D];D=parseFloat(y.currentStyle.fontSize);y=parseFloat(t.size);v.size=typeof t.size=="number"?t.size:t.size.indexOf("px")!=-1?y:t.size.indexOf("em")!=-1?D*y:t.size.indexOf("%")!=-1?D/100*y:t.size.indexOf("pt")!=-1?y/0.75:D;v.size*=0.981;D=v.style+" "+v.variant+" "+v.weight+" "+v.size+"px "+v.family;y=this.element_.currentStyle;t=this.textAlign.toLowerCase();switch(t){case "left":case "center":case "right":break;
-case "end":t=y.direction=="ltr"?"right":"left";break;case "start":t=y.direction=="rtl"?"right":"left";break;default:t="left"}switch(this.textBaseline){case "hanging":case "top":x=v.size/1.75;break;case "middle":break;default:case null:case "alphabetic":case "ideographic":case "bottom":x=-v.size/2.25}switch(t){case "right":n=1E3;l=0.05;break;case "center":n=l=500}d=S(this,d+0,j+x);z.push('<g_vml_:line from="',-n,' 0" to="',l,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!q,'" stroked="',
-!!q,'" style="position:absolute;width:1px;height:1px;">');q?C(this,z):ma(this,z,{x:-n,y:0},{x:l,y:v.size});q=o[0][0].toFixed(3)+","+o[1][0].toFixed(3)+","+o[0][1].toFixed(3)+","+o[1][1].toFixed(3)+",0,0";d=I(d.x/w)+","+I(d.y/w);z.push('<g_vml_:skew on="t" matrix="',q,'" ',' offset="',d,'" origin="',n,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',E(b),'" style="v-text-align:',t,";font:",E(D),'" /></g_vml_:line>');this.element_.insertAdjacentHTML("beforeEnd",z.join(""))};
-G.fillText=function(b,d,j,n){this.drawText_(b,d,j,n,!1)};G.strokeText=function(b,d,j,n){this.drawText_(b,d,j,n,!0)};G.measureText=function(b){if(!this.textMeasureEl_)this.element_.insertAdjacentHTML("beforeEnd",'<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>'),this.textMeasureEl_=this.element_.lastChild;var d=this.element_.ownerDocument;this.textMeasureEl_.innerHTML="";this.textMeasureEl_.style.font=this.font;this.textMeasureEl_.appendChild(d.createTextNode(b));
-return{width:this.textMeasureEl_.offsetWidth}};G.clip=function(){};G.arcTo=function(){};G.createPattern=function(b,d){return new N(b,d)};O.prototype.addColorStop=function(b,d){d=M(d);this.colors_.push({offset:b,color:d.color,alpha:d.alpha})};G=t.prototype=Error();G.INDEX_SIZE_ERR=1;G.DOMSTRING_SIZE_ERR=2;G.HIERARCHY_REQUEST_ERR=3;G.WRONG_DOCUMENT_ERR=4;G.INVALID_CHARACTER_ERR=5;G.NO_DATA_ALLOWED_ERR=6;G.NO_MODIFICATION_ALLOWED_ERR=7;G.NOT_FOUND_ERR=8;G.NOT_SUPPORTED_ERR=9;G.INUSE_ATTRIBUTE_ERR=10;
-G.INVALID_STATE_ERR=11;G.SYNTAX_ERR=12;G.INVALID_MODIFICATION_ERR=13;G.NAMESPACE_ERR=14;G.INVALID_ACCESS_ERR=15;G.VALIDATION_ERR=16;G.TYPE_MISMATCH_ERR=17;G_vmlCanvasManager=b;CanvasRenderingContext2D=K;CanvasGradient=O;CanvasPattern=N;DOMException=t}();
-// Input 2
-(function(d){d.color={};d.color.make=function(j,n,J,D){var l={};l.r=j||0;l.g=n||0;l.b=J||0;l.a=D!=null?D:1;l.add=function(d,j){for(var n=0;n<d.length;++n)l[d.charAt(n)]+=j;return l.normalize()};l.scale=function(d,j){for(var n=0;n<d.length;++n)l[d.charAt(n)]*=j;return l.normalize()};l.toString=function(){return l.a>=1?"rgb("+[l.r,l.g,l.b].join(",")+")":"rgba("+[l.r,l.g,l.b,l.a].join(",")+")"};l.normalize=function(){function d(j,n,l){return n<j?j:n>l?l:n}l.r=d(0,parseInt(l.r),255);l.g=d(0,parseInt(l.g),
-255);l.b=d(0,parseInt(l.b),255);l.a=d(0,l.a,1);return l};l.clone=function(){return d.color.make(l.r,l.b,l.g,l.a)};return l.normalize()};d.color.extract=function(j,n){var J;do{J=j.css(n).toLowerCase();if(J!=""&&J!="transparent")break;j=j.parent()}while(!d.nodeName(j.get(0),"body"));J=="rgba(0, 0, 0, 0)"&&(J="transparent");return d.color.parse(J)};d.color.parse=function(E){var n,J=d.color.make;if(n=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(E))return J(parseInt(n[1],10),
-parseInt(n[2],10),parseInt(n[3],10));if(n=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E))return J(parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),parseFloat(n[4]));if(n=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(E))return J(parseFloat(n[1])*2.55,parseFloat(n[2])*2.55,parseFloat(n[3])*2.55);if(n=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(E))return J(parseFloat(n[1])*
-2.55,parseFloat(n[2])*2.55,parseFloat(n[3])*2.55,parseFloat(n[4]));if(n=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(E))return J(parseInt(n[1],16),parseInt(n[2],16),parseInt(n[3],16));if(n=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(E))return J(parseInt(n[1]+n[1],16),parseInt(n[2]+n[2],16),parseInt(n[3]+n[3],16));E=d.trim(E).toLowerCase();return E=="transparent"?J(255,255,255,0):(n=j[E]||[0,0,0],J(n[0],n[1],n[2]))};var j={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
-0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
-211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
-(function(d){function j(j,J,D,l){function x(b,d){for(var d=[U].concat(d),e=0;e<b.length;++e)b[e].apply(this,d)}function y(b){for(var u=[],e=0;e<b.length;++e){var f=d.extend(!0,{},o.series);b[e].data!=null?(f.data=b[e].data,delete b[e].data,d.extend(!0,f,b[e]),b[e].data=f.data):f.data=b[e];u.push(f)}q=u;u=q.length;e=[];f=[];for(b=0;b<q.length;++b){var p=q[b].color;p!=null&&(--u,typeof p=="number"?f.push(p):e.push(d.color.parse(q[b].color)))}for(b=0;b<f.length;++b)u=Math.max(u,f[b]+1);e=[];for(b=f=
-0;e.length<u;)p=o.colors.length==b?d.color.make(100,100,100):d.color.parse(o.colors[b]),p.scale("rgb",1+(f%2==1?-1:1)*Math.ceil(f/2)*0.2),e.push(p),++b,b>=o.colors.length&&(b=0,++f);for(b=u=0;b<q.length;++b){f=q[b];if(f.color==null)f.color=e[u].toString(),++u;else if(typeof f.color=="number")f.color=e[f.color].toString();if(f.lines.show==null){var j,p=!0;for(j in f)if(f[j]&&f[j].show){p=!1;break}if(p)f.lines.show=!0}f.xaxis=M(fa,V(f,"x"));f.yaxis=M(ia,V(f,"y"))}K()}function V(b,d){var e=b[d+"axis"];
-if(typeof e=="object")e=e.n;typeof e!="number"&&(e=1);return e}function L(){return d.grep(fa.concat(ia),function(b){return b})}function R(b){var d={},e,f;for(e=0;e<fa.length;++e)(f=fa[e])&&f.used&&(d["x"+f.n]=f.c2p(b.left));for(e=0;e<ia.length;++e)(f=ia[e])&&f.used&&(d["y"+f.n]=f.c2p(b.top));if(d.x1!==void 0)d.x=d.x1;if(d.y1!==void 0)d.y=d.y1;return d}function M(b,f){b[f-1]||(b[f-1]={n:f,direction:b==fa?"x":"y",options:d.extend(!0,{},b==fa?o.xaxis:o.yaxis)});return b[f-1]}function K(){function b(g,
-e,d){if(e<g.datamin&&e!=-j)g.datamin=e;if(d>g.datamax&&d!=j)g.datamax=d}var f=Number.POSITIVE_INFINITY,e=Number.NEGATIVE_INFINITY,j=Number.MAX_VALUE,p,r,o,n,l,v,T,t,w,z;d.each(L(),function(b,g){g.datamin=f;g.datamax=e;g.used=!1});for(p=0;p<q.length;++p)l=q[p],l.datapoints={points:[]},x(ua.processRawData,[l,l.data,l.datapoints]);for(p=0;p<q.length;++p){l=q[p];var B=l.data,C=l.datapoints.format;if(!C){C=[];C.push({x:!0,number:!0,required:!0});C.push({y:!0,number:!0,required:!0});if(l.bars.show||l.lines.show&&
-l.lines.fill)if(C.push({y:!0,number:!0,required:!1,defaultValue:0}),l.bars.horizontal)delete C[C.length-1].y,C[C.length-1].x=!0;l.datapoints.format=C}if(l.datapoints.pointsize==null){l.datapoints.pointsize=C.length;T=l.datapoints.pointsize;v=l.datapoints.points;insertSteps=l.lines.show&&l.lines.steps;l.xaxis.used=l.yaxis.used=!0;for(r=o=0;r<B.length;++r,o+=T){z=B[r];var va=z==null;if(!va)for(n=0;n<T;++n){t=z[n];if(w=C[n])if(w.number&&t!=null&&(t=+t,isNaN(t)?t=null:t==Infinity?t=j:t==-Infinity&&(t=
--j)),t==null&&(w.required&&(va=!0),w.defaultValue!=null))t=w.defaultValue;v[o+n]=t}if(va)for(n=0;n<T;++n)t=v[o+n],t!=null&&(w=C[n],w.x&&b(l.xaxis,t,t),w.y&&b(l.yaxis,t,t)),v[o+n]=null;else if(insertSteps&&o>0&&v[o-T]!=null&&v[o-T]!=v[o]&&v[o-T+1]!=v[o+1]){for(n=0;n<T;++n)v[o+T+n]=v[o+n];v[o+1]=v[o-T+1];o+=T}}}}for(p=0;p<q.length;++p)l=q[p],x(ua.processDatapoints,[l,l.datapoints]);for(p=0;p<q.length;++p){l=q[p];v=l.datapoints.points;T=l.datapoints.pointsize;C=l.datapoints.format;z=o=f;va=B=e;for(r=
-0;r<v.length;r+=T)if(v[r]!=null)for(n=0;n<T;++n)if(t=v[r+n],(w=C[n])&&!(t==j||t==-j))w.x&&(t<o&&(o=t),t>B&&(B=t)),w.y&&(t<z&&(z=t),t>va&&(va=t));l.bars.show&&(r=l.bars.align=="left"?0:-l.bars.barWidth/2,l.bars.horizontal?(z+=r,va+=r+l.bars.barWidth):(o+=r,B+=r+l.bars.barWidth));b(l.xaxis,o,B);b(l.yaxis,z,va)}d.each(L(),function(b,g){if(g.datamin==f)g.datamin=null;if(g.datamax==e)g.datamax=null})}function z(b,f){var e=document.createElement("canvas");e.className=f;e.width=aa;e.height=ja;b||d(e).css({position:"absolute",
-left:0,top:0});d(e).appendTo(j);e.getContext||(e=window.G_vmlCanvasManager.initElement(e));e.getContext("2d").save();return e}function C(){aa=j.width();ja=j.height();if(aa<=0||ja<=0)throw"Invalid dimensions for plot, width = "+aa+", height = "+ja;}function ma(b){if(b.width!=aa)b.width=aa;if(b.height!=ja)b.height=ja;b=b.getContext("2d");b.restore();b.save()}function S(b){function d(b){return b}var e,f,p=b.options.transform||d,j=b.options.inverseTransform;b.direction=="x"?(e=b.scale=wa/Math.abs(p(b.max)-
-p(b.min)),f=Math.min(p(b.max),p(b.min))):(e=b.scale=ta/Math.abs(p(b.max)-p(b.min)),e=-e,f=Math.max(p(b.max),p(b.min)));b.p2c=p==d?function(b){return(b-f)*e}:function(b){return(p(b)-f)*e};b.c2p=j?function(b){return j(f+b/e)}:function(b){return f+b/e}}function B(b){var f=b.labelWidth,e=b.labelHeight,j=b.options.position,p=b.options.tickLength,r=o.grid.axisMargin,l=o.grid.labelMargin,q=b.direction=="x"?fa:ia,n=d.grep(q,function(b){return b&&b.options.position==j&&b.reserveSpace});d.inArray(b,n)==n.length-
-1&&(r=0);if(p==null)var p=d.grep(q,function(b){return b&&b.reserveSpace}),v=d.inArray(b,p)==0,p=v?"full":5;isNaN(+p)||(l+=+p);b.direction=="x"?(e+=l,j=="bottom"?(F.bottom+=e+r,b.box={top:ja-F.bottom,height:e}):(b.box={top:F.top+r,height:e},F.top+=e+r)):(f+=l,j=="left"?(b.box={left:F.left+r,width:f},F.left+=f+r):(F.right+=f+r,b.box={left:aa-F.right,width:f}));b.position=j;b.tickLength=p;b.box.padding=l;b.innermost=v}function O(){var b=o.grid.minBorderMargin,f={x:0,y:0},e;if(b==null)for(e=b=0;e<q.length;++e)b=
-Math.max(b,2*(q[e].points.radius+q[e].points.lineWidth/2));f.x=f.y=Math.ceil(b);d.each(L(),function(b,g){var e=g.direction;g.reserveSpace&&(f[e]=Math.ceil(Math.max(f[e],(e=="x"?g.labelWidth:g.labelHeight)/2)))});F.left=Math.max(f.x,F.left);F.right=Math.max(f.x,F.right);F.top=Math.max(f.y,F.top);F.bottom=Math.max(f.y,F.bottom)}function N(){var g,f=L();g=o.grid.show;for(var e in F)F[e]=g?o.grid.borderWidth:0;d.each(f,function(b,g){g.show=g.options.show;if(g.show==null)g.show=g.used;g.reserveSpace=g.show||
-g.options.reserveSpace;var e=g.options,d=+(e.min!=null?e.min:g.datamin),f=+(e.max!=null?e.max:g.datamax),j=f-d;if(j==0){if(j=f==0?1:0.01,e.min==null&&(d-=j),e.max==null||e.min!=null)f+=j}else{var u=e.autoscaleMargin;u!=null&&(e.min==null&&(d-=j*u,d<0&&g.datamin!=null&&g.datamin>=0&&(d=0)),e.max==null&&(f+=j*u,f>0&&g.datamax!=null&&g.datamax<=0&&(f=0)))}g.min=d;g.max=f});if(g){var r={style:j.css("font-style"),size:Math.round(0.8*(+j.css("font-size").replace("px","")||13)),variant:j.css("font-variant"),
-weight:j.css("font-weight"),family:j.css("font-family")};e=d.grep(f,function(b){return b.reserveSpace});d.each(e,function(b,g){t(g);var e=g.options.ticks,f=[];e==null||typeof e=="number"&&e>0?f=g.tickGenerator(g):e&&(f=d.isFunction(e)?e(g):e);var j;g.ticks=[];for(e=0;e<f.length;++e){var u=null,o=f[e];typeof o=="object"?(j=+o[0],o.length>1&&(u=o[1])):j=+o;u==null&&(u=g.tickFormatter(j,g));isNaN(j)||g.ticks.push({v:j,label:u})}f=g.ticks;if(g.options.autoscaleMargin&&f.length>0){if(g.options.min==null)g.min=
-Math.min(g.min,f[0].v);if(g.options.max==null&&f.length>1)g.max=Math.max(g.max,f[f.length-1].v)}g.font=d.extend({},r,g.options.font);f=g.options;e=g.ticks||[];j=f.labelWidth||0;u=f.labelHeight||0;o=g.font;v.save();v.font=o.style+" "+o.variant+" "+o.weight+" "+o.size+"px '"+o.family+"'";for(var l=0;l<e.length;++l){var q=e[l];q.lines=[];q.width=q.height=0;if(q.label){for(var n=q.label.replace(/<br ?\/?>|\r\n|\r/g,"\n").split("\n"),w=0;w<n.length;++w){var z={text:n[w]},x=v.measureText(z.text);z.width=
-x.width;z.height=x.height!=null?x.height:o.size;z.height+=Math.round(o.size*0.15);q.width=Math.max(z.width,q.width);q.height+=z.height;q.lines.push(z)}f.labelWidth==null&&(j=Math.max(j,q.width));f.labelHeight==null&&(u=Math.max(u,q.height))}}v.restore();g.labelWidth=Math.ceil(j);g.labelHeight=Math.ceil(u)});for(g=e.length-1;g>=0;--g)B(e[g]);O();d.each(e,function(b,g){g.direction=="x"?(g.box.left=F.left-g.labelWidth/2,g.box.width=aa-F.left-F.right+g.labelWidth):(g.box.top=F.top-g.labelHeight/2,g.box.height=
-ja-F.bottom-F.top+g.labelHeight)})}wa=aa-F.left-F.right;ta=ja-F.bottom-F.top;d.each(f,function(b,g){S(g)});b()}function t(b){var f=b.options,e;e=typeof f.ticks=="number"&&f.ticks>0?f.ticks:0.3*Math.sqrt(b.direction=="x"?aa:ja);e=(b.max-b.min)/e;var j,p,r,o;if(f.mode=="time"){var q={second:1E3,minute:6E4,hour:36E5,day:864E5,month:2592E6,year:525949.2*6E4};o=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],
-[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];j=0;f.minTickSize!=null&&(j=typeof f.tickSize=="number"?f.tickSize:f.minTickSize[0]*q[f.minTickSize[1]]);for(p=0;p<o.length-1;++p)if(e<(o[p][0]*q[o[p][1]]+o[p+1][0]*q[o[p+1][1]])/2&&o[p][0]*q[o[p][1]]>=j)break;j=o[p][0];r=o[p][1];r=="year"&&(p=Math.pow(10,Math.floor(Math.log(e/q.year)/Math.LN10)),o=e/q.year/p,j=o<1.5?1:o<3?2:o<7.5?5:10,
-j*=p);b.tickSize=f.tickSize||[j,r];p=function(b){var g=[],e=b.tickSize[0],d=b.tickSize[1],f=new Date(b.min),j=e*q[d];d=="second"&&f.setUTCSeconds(E(f.getUTCSeconds(),e));d=="minute"&&f.setUTCMinutes(E(f.getUTCMinutes(),e));d=="hour"&&f.setUTCHours(E(f.getUTCHours(),e));d=="month"&&f.setUTCMonth(E(f.getUTCMonth(),e));d=="year"&&f.setUTCFullYear(E(f.getUTCFullYear(),e));f.setUTCMilliseconds(0);j>=q.minute&&f.setUTCSeconds(0);j>=q.hour&&f.setUTCMinutes(0);j>=q.day&&f.setUTCHours(0);j>=q.day*4&&f.setUTCDate(1);
-j>=q.year&&f.setUTCMonth(0);var p=0,u=Number.NaN,o;do if(o=u,u=f.getTime(),g.push(u),d=="month")if(e<1){f.setUTCDate(1);var r=f.getTime();f.setUTCMonth(f.getUTCMonth()+1);var A=f.getTime();f.setTime(u+p*q.hour+(A-r)*e);p=f.getUTCHours();f.setUTCHours(0)}else f.setUTCMonth(f.getUTCMonth()+e);else d=="year"?f.setUTCFullYear(f.getUTCFullYear()+e):f.setTime(u+j);while(u<b.max&&u!=o);return g};j=function(b,g){var e=new Date(b);if(f.timeformat!=null)return d.plot.formatDate(e,f.timeformat,f.monthNames);
-var j=g.tickSize[0]*q[g.tickSize[1]],p=g.max-g.min,o=f.twelveHourClock?" %p":"";fmt=j<q.minute?"%h:%M:%S"+o:j<q.day?p<2*q.day?"%h:%M"+o:"%b %d %h:%M"+o:j<q.month?"%b %d":j<q.year?p<q.year?"%b":"%b %y":"%y";return d.plot.formatDate(e,fmt,f.monthNames)}}else{r=f.tickDecimals;var l=-Math.floor(Math.log(e)/Math.LN10);r!=null&&l>r&&(l=r);p=Math.pow(10,-l);o=e/p;if(o<1.5)j=1;else if(o<3){if(j=2,o>2.25&&(r==null||l+1<=r))j=2.5,++l}else j=o<7.5?5:10;j*=p;if(f.minTickSize!=null&&j<f.minTickSize)j=f.minTickSize;
-b.tickDecimals=Math.max(0,r!=null?r:l);b.tickSize=f.tickSize||j;p=function(b){var g=[],e=E(b.min,b.tickSize),d=0,f=Number.NaN,j;do j=f,f=e+d*b.tickSize,g.push(f),++d;while(f<b.max&&f!=j);return g};j=function(b,g){return b.toFixed(g.tickDecimals)}}if(f.alignTicksWithAxis!=null){var n=(b.direction=="x"?fa:ia)[f.alignTicksWithAxis-1];if(n&&n.used&&n!=b){p=p(b);if(p.length>0){if(f.min==null)b.min=Math.min(b.min,p[0]);if(f.max==null&&p.length>1)b.max=Math.max(b.max,p[p.length-1])}p=function(b){var g=[],
-e,d;for(d=0;d<n.ticks.length;++d)e=(n.ticks[d].v-n.min)/(n.max-n.min),e=b.min+e*(b.max-b.min),g.push(e);return g};if(!b.mode&&f.tickDecimals==null&&(e=Math.max(0,-Math.floor(Math.log(e)/Math.LN10)+1),o=p(b),!(o.length>1&&/\..*0$/.test((o[1]-o[0]).toFixed(e)))))b.tickDecimals=e}}b.tickGenerator=p;b.tickFormatter=d.isFunction(f.tickFormatter)?function(b,g){return""+f.tickFormatter(b,g)}:j}function ra(){v.clearRect(0,0,aa,ja);var b=o.grid;if(b.show&&b.backgroundColor)v.save(),v.translate(F.left,F.top),
-v.fillStyle=W(o.grid.backgroundColor,ta,0,"rgba(255, 255, 255, 0)"),v.fillRect(0,0,wa,ta),v.restore();b.show&&!b.aboveData&&(Fa(),ca());for(var d=0;d<q.length;++d){x(ua.drawSeries,[v,q[d]]);var e=q[d];e.lines.show&&Aa(e);e.bars.show&&ha(e);e.points.show&&ya(e)}x(ua.draw,[v]);b.show&&b.aboveData&&(Fa(),ca())}function I(b,d){var e,f,j,o,r=L();for(i=0;i<r.length;++i)if(e=r[i],e.direction==d&&(o=d+e.n+"axis",!b[o]&&e.n==1&&(o=d+"axis"),b[o])){f=b[o].from;j=b[o].to;break}b[o]||(e=d=="x"?fa[0]:ia[0],f=
-b[d+"1"],j=b[d+"2"]);f!=null&&j!=null&&f>j&&(o=f,f=j,j=o);return{from:f,to:j,axis:e}}function Fa(){var b;v.save();v.translate(F.left,F.top);var f=o.grid.markings;if(f){if(d.isFunction(f)){var e=U.getAxes();e.xmin=e.xaxis.min;e.xmax=e.xaxis.max;e.ymin=e.yaxis.min;e.ymax=e.yaxis.max;f=f(e)}for(b=0;b<f.length;++b){var e=f[b],j=I(e,"x"),p=I(e,"y");if(j.from==null)j.from=j.axis.min;if(j.to==null)j.to=j.axis.max;if(p.from==null)p.from=p.axis.min;if(p.to==null)p.to=p.axis.max;if(!(j.to<j.axis.min||j.from>
-j.axis.max||p.to<p.axis.min||p.from>p.axis.max))if(j.from=Math.max(j.from,j.axis.min),j.to=Math.min(j.to,j.axis.max),p.from=Math.max(p.from,p.axis.min),p.to=Math.min(p.to,p.axis.max),!(j.from==j.to&&p.from==p.to))j.from=j.axis.p2c(j.from),j.to=j.axis.p2c(j.to),p.from=p.axis.p2c(p.from),p.to=p.axis.p2c(p.to),j.from==j.to||p.from==p.to?(v.beginPath(),v.strokeStyle=e.color||o.grid.markingsColor,v.lineWidth=e.lineWidth||o.grid.markingsLineWidth,v.moveTo(j.from,p.from),v.lineTo(j.to,p.to),v.stroke()):
-(v.fillStyle=e.color||o.grid.markingsColor,v.fillRect(j.from,p.to,j.to-j.from,p.from-p.to))}}e=L();f=o.grid.borderWidth;for(j=0;j<e.length;++j){p=e[j];b=p.box;var r=p.tickLength,q,l,n,t;if(p.show&&p.ticks.length!=0){v.strokeStyle=p.options.tickColor||d.color.parse(p.options.color).scale("a",0.22).toString();v.lineWidth=1;p.direction=="x"?(q=0,l=r=="full"?p.position=="top"?0:ta:b.top-F.top+(p.position=="top"?b.height:0)):(l=0,q=r=="full"?p.position=="left"?0:wa:b.left-F.left+(p.position=="left"?b.width:
-0));p.innermost||(v.beginPath(),n=t=0,p.direction=="x"?n=wa:t=ta,v.lineWidth==1&&(q=Math.floor(q)+0.5,l=Math.floor(l)+0.5),v.moveTo(q,l),v.lineTo(q+n,l+t),v.stroke());v.beginPath();for(b=0;b<p.ticks.length;++b){var w=p.ticks[b].v;n=t=0;w<p.min||w>p.max||r=="full"&&f>0&&(w==p.min||w==p.max)||(p.direction=="x"?(q=p.p2c(w),t=r=="full"?-ta:r,p.position=="top"&&(t=-t)):(l=p.p2c(w),n=r=="full"?-wa:r,p.position=="left"&&(n=-n)),v.lineWidth==1&&(p.direction=="x"?q=Math.floor(q)+0.5:l=Math.floor(l)+0.5),v.moveTo(q,
-l),v.lineTo(q+n,l+t))}v.stroke()}}if(f)v.lineWidth=f,v.strokeStyle=o.grid.borderColor,v.strokeRect(-f/2,-f/2,wa+f,ta+f);v.restore()}function ca(){v.save();d.each(L(),function(b,f){if(f.show&&f.ticks.length!=0){var e=f.box,j=f.font;v.fillStyle=f.options.color;v.font=j.style+" "+j.variant+" "+j.weight+" "+j.size+"px "+j.family;v.textAlign="start";v.textBaseline="middle";for(j=0;j<f.ticks.length;++j){var p=f.ticks[j];if(p.label&&!(p.v<f.min||p.v>f.max))for(var o,r,q=0,l,n=0;n<p.lines.length;++n)l=p.lines[n],
-f.direction=="x"?(o=F.left+f.p2c(p.v)-l.width/2,r=f.position=="bottom"?e.top+e.padding:e.top+e.height-e.padding-p.height):(r=F.top+f.p2c(p.v)-p.height/2,o=f.position=="left"?e.left+e.width-e.padding-l.width:e.left+e.padding),r+=l.height/2+q,q+=l.height,d.browser.opera&&(o=Math.floor(o),r=Math.ceil(r-2)),v.fillText(l.text,o,r)}}});v.restore()}function Aa(b){function d(b,g,e,f,j){var p=b.points,b=b.pointsize,o=null,r=null;v.beginPath();for(var q=b;q<p.length;q+=b){var l=p[q-b],u=p[q-b+1],n=p[q],t=p[q+
-1];if(!(l==null||n==null)){if(u<=t&&u<j.min){if(t<j.min)continue;l=(j.min-u)/(t-u)*(n-l)+l;u=j.min}else if(t<=u&&t<j.min){if(u<j.min)continue;n=(j.min-u)/(t-u)*(n-l)+l;t=j.min}if(u>=t&&u>j.max){if(t>j.max)continue;l=(j.max-u)/(t-u)*(n-l)+l;u=j.max}else if(t>=u&&t>j.max){if(u>j.max)continue;n=(j.max-u)/(t-u)*(n-l)+l;t=j.max}if(l<=n&&l<f.min){if(n<f.min)continue;u=(f.min-l)/(n-l)*(t-u)+u;l=f.min}else if(n<=l&&n<f.min){if(l<f.min)continue;t=(f.min-l)/(n-l)*(t-u)+u;n=f.min}if(l>=n&&l>f.max){if(n>f.max)continue;
-u=(f.max-l)/(n-l)*(t-u)+u;l=f.max}else if(n>=l&&n>f.max){if(l>f.max)continue;t=(f.max-l)/(n-l)*(t-u)+u;n=f.max}(l!=o||u!=r)&&v.moveTo(f.p2c(l)+g,j.p2c(u)+e);o=n;r=t;v.lineTo(f.p2c(n)+g,j.p2c(t)+e)}}v.stroke()}function e(b,g,e){for(var d=b.points,b=b.pointsize,f=Math.min(Math.max(0,e.min),e.max),j=0,p=!1,o=1,r=0,l=0;;){if(b>0&&j>d.length+b)break;j+=b;var u=d[j-b],q=d[j-b+o],n=d[j],t=d[j+o];if(p){if(b>0&&u!=null&&n==null){l=j;b=-b;o=2;continue}if(b<0&&j==r+b){v.fill();p=!1;b=-b;o=1;j=r=l+b;continue}}if(!(u==
-null||n==null)){if(u<=n&&u<g.min){if(n<g.min)continue;q=(g.min-u)/(n-u)*(t-q)+q;u=g.min}else if(n<=u&&n<g.min){if(u<g.min)continue;t=(g.min-u)/(n-u)*(t-q)+q;n=g.min}if(u>=n&&u>g.max){if(n>g.max)continue;q=(g.max-u)/(n-u)*(t-q)+q;u=g.max}else if(n>=u&&n>g.max){if(u>g.max)continue;t=(g.max-u)/(n-u)*(t-q)+q;n=g.max}p||(v.beginPath(),v.moveTo(g.p2c(u),e.p2c(f)),p=!0);if(q>=e.max&&t>=e.max)v.lineTo(g.p2c(u),e.p2c(e.max)),v.lineTo(g.p2c(n),e.p2c(e.max));else if(q<=e.min&&t<=e.min)v.lineTo(g.p2c(u),e.p2c(e.min)),
-v.lineTo(g.p2c(n),e.p2c(e.min));else{var A=u,w=n;if(q<=t&&q<e.min&&t>=e.min)u=(e.min-q)/(t-q)*(n-u)+u,q=e.min;else if(t<=q&&t<e.min&&q>=e.min)n=(e.min-q)/(t-q)*(n-u)+u,t=e.min;if(q>=t&&q>e.max&&t<=e.max)u=(e.max-q)/(t-q)*(n-u)+u,q=e.max;else if(t>=q&&t>e.max&&q<=e.max)n=(e.max-q)/(t-q)*(n-u)+u,t=e.max;u!=A&&v.lineTo(g.p2c(A),e.p2c(q));v.lineTo(g.p2c(u),e.p2c(q));v.lineTo(g.p2c(n),e.p2c(t));n!=w&&(v.lineTo(g.p2c(n),e.p2c(t)),v.lineTo(g.p2c(w),e.p2c(t)))}}}}v.save();v.translate(F.left,F.top);v.lineJoin=
-"round";var f=b.lines.lineWidth,j=b.shadowSize;if(f>0&&j>0){v.lineWidth=j;v.strokeStyle="rgba(0,0,0,0.1)";var o=Math.PI/18;d(b.datapoints,Math.sin(o)*(f/2+j/2),Math.cos(o)*(f/2+j/2),b.xaxis,b.yaxis);v.lineWidth=j/2;d(b.datapoints,Math.sin(o)*(f/2+j/4),Math.cos(o)*(f/2+j/4),b.xaxis,b.yaxis)}v.lineWidth=f;v.strokeStyle=b.color;if(j=na(b.lines,b.color,0,ta))v.fillStyle=j,e(b.datapoints,b.xaxis,b.yaxis);f>0&&d(b.datapoints,0,0,b.xaxis,b.yaxis);v.restore()}function ya(b){function d(b,g,e,f,j,p,o,u){for(var r=
-b.points,b=b.pointsize,q=0;q<r.length;q+=b){var n=r[q],l=r[q+1];if(!(n==null||n<p.min||n>p.max||l<o.min||l>o.max)){v.beginPath();n=p.p2c(n);l=o.p2c(l)+f;u=="circle"?v.arc(n,l,g,0,j?Math.PI:Math.PI*2,!1):u(v,n,l,g,j);v.closePath();if(e)v.fillStyle=e,v.fill();v.stroke()}}}v.save();v.translate(F.left,F.top);var e=b.points.lineWidth,f=b.shadowSize,j=b.points.radius,o=b.points.symbol;if(e>0&&f>0)f/=2,v.lineWidth=f,v.strokeStyle="rgba(0,0,0,0.1)",d(b.datapoints,j,null,f+f/2,!0,b.xaxis,b.yaxis,o),v.strokeStyle=
-"rgba(0,0,0,0.2)",d(b.datapoints,j,null,f/2,!0,b.xaxis,b.yaxis,o);v.lineWidth=e;v.strokeStyle=b.color;d(b.datapoints,j,na(b.points,b.color),0,!1,b.xaxis,b.yaxis,o);v.restore()}function w(b,d,e,f,j,o,r,q,n,l,t,v){var w,z,x,B;t?(B=z=x=!0,w=!1,t=e,e=d+f,j=d+j,b<t&&(d=b,b=t,t=d,w=!0,z=!1)):(w=z=x=!0,B=!1,t=b+f,b+=j,j=e,e=d,e<j&&(d=e,e=j,j=d,B=!0,x=!1));if(!(b<q.min||t>q.max||e<n.min||j>n.max)){if(t<q.min)t=q.min,w=!1;if(b>q.max)b=q.max,z=!1;if(j<n.min)j=n.min,B=!1;if(e>n.max)e=n.max,x=!1;t=q.p2c(t);j=
-n.p2c(j);b=q.p2c(b);e=n.p2c(e);if(r)l.beginPath(),l.moveTo(t,j),l.lineTo(t,e),l.lineTo(b,e),l.lineTo(b,j),l.fillStyle=r(j,e),l.fill();if(v>0&&(w||z||x||B))l.beginPath(),l.moveTo(t,j+o),w?l.lineTo(t,e+o):l.moveTo(t,e+o),x?l.lineTo(b,e+o):l.moveTo(b,e+o),z?l.lineTo(b,j+o):l.moveTo(b,j+o),B?l.lineTo(t,j+o):l.moveTo(t,j+o),l.stroke()}}function ha(b){v.save();v.translate(F.left,F.top);v.lineWidth=b.bars.lineWidth;v.strokeStyle=b.color;var d=b.bars.align=="left"?0:-b.bars.barWidth/2;(function(e,d,f,j,o,
-q,r){for(var l=e.points,e=e.pointsize,u=0;u<l.length;u+=e)l[u]!=null&&w(l[u],l[u+1],l[u+2],d,f,j,o,q,r,v,b.bars.horizontal,b.bars.lineWidth)})(b.datapoints,d,d+b.bars.barWidth,0,b.bars.fill?function(e,d){return na(b.bars,b.color,e,d)}:null,b.xaxis,b.yaxis);v.restore()}function na(b,f,e,j){var o=b.fill;if(!o)return null;if(b.fillColor)return W(b.fillColor,e,j,f);b=d.color.parse(f);b.a=typeof o=="number"?o:0.4;b.normalize();return b.toString()}function b(){j.find(".legend").remove();if(o.legend.show){for(var b=
-[],f=!1,e=o.legend.labelFormatter,l,p,r=0;r<q.length;++r)if(l=q[r],p=l.label)r%o.legend.noColumns==0&&(f&&b.push("</tr>"),b.push("<tr>"),f=!0),e&&(p=e(p,l)),b.push('<td class="legendColorBox"><div style="border:1px solid '+o.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+l.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+p+"</td>");f&&b.push("</tr>");if(b.length!=0)if(f='<table style="font-size:smaller;color:'+o.grid.color+'">'+b.join("")+
-"</table>",o.legend.container!=null)d(o.legend.container).html(f);else if(b="",e=o.legend.position,l=o.legend.margin,l[0]==null&&(l=[l,l]),e.charAt(0)=="n"?b+="top:"+(l[1]+F.top)+"px;":e.charAt(0)=="s"&&(b+="bottom:"+(l[1]+F.bottom)+"px;"),e.charAt(1)=="e"?b+="right:"+(l[0]+F.right)+"px;":e.charAt(1)=="w"&&(b+="left:"+(l[0]+F.left)+"px;"),f=d('<div class="legend">'+f.replace('style="','style="position:absolute;'+b+";")+"</div>").appendTo(j),o.legend.backgroundOpacity!=0){e=o.legend.backgroundColor;
-if(e==null)e=(e=o.grid.backgroundColor)&&typeof e=="string"?d.color.parse(e):d.color.extract(f,"background-color"),e.a=1,e=e.toString();l=f.children();d('<div style="position:absolute;width:'+l.width()+"px;height:"+l.height()+"px;"+b+"background-color:"+e+';"> </div>').prependTo(f).css("opacity",o.legend.backgroundOpacity)}}}function X(b){o.grid.hoverable&&xa("plothover",b,function(b){return b.hoverable!=!1})}function G(b){o.grid.hoverable&&xa("plothover",b,function(){return!1})}function ba(b){xa("plotclick",
-b,function(b){return b.clickable!=!1})}function xa(b,d,e){var l=qa.offset(),p=d.pageX-l.left-F.left,r=d.pageY-l.top-F.top,t=R({left:p,top:r});t.pageX=d.pageX;t.pageY=d.pageY;var d=o.grid.mouseActiveRadius,v=d*d+1,w=null,z,x;for(z=q.length-1;z>=0;--z)if(e(q[z])){var B=q[z],C=B.xaxis,y=B.yaxis,D=B.datapoints.points,E=B.datapoints.pointsize,O=C.c2p(p),I=y.c2p(r),G=d/C.scale,J=d/y.scale;if(C.options.inverseTransform)G=Number.MAX_VALUE;if(y.options.inverseTransform)J=Number.MAX_VALUE;if(B.lines.show||
-B.points.show)for(x=0;x<D.length;x+=E){var N=D[x],W=D[x+1];if(N!=null&&!(N-O>G||N-O<-G||W-I>J||W-I<-J))N=Math.abs(C.p2c(N)-p),W=Math.abs(y.p2c(W)-r),W=N*N+W*W,W<v&&(v=W,w=[z,x/E])}if(B.bars.show&&!w){C=B.bars.align=="left"?0:-B.bars.barWidth/2;B=C+B.bars.barWidth;for(x=0;x<D.length;x+=E)if(N=D[x],W=D[x+1],y=D[x+2],N!=null&&(q[z].bars.horizontal?O<=Math.max(y,N)&&O>=Math.min(y,N)&&I>=W+C&&I<=W+B:O>=N+C&&O<=N+B&&I>=Math.min(y,W)&&I<=Math.max(y,W)))w=[z,x/E]}}w?(z=w[0],x=w[1],E=q[z].datapoints.pointsize,
-e={datapoint:q[z].datapoints.points.slice(x*E,(x+1)*E),dataIndex:x,series:q[z],seriesIndex:z}):e=null;if(e)e.pageX=parseInt(e.series.xaxis.p2c(e.datapoint[0])+l.left+F.left),e.pageY=parseInt(e.series.yaxis.p2c(e.datapoint[1])+l.top+F.top);if(o.grid.autoHighlight){for(l=0;l<za.length;++l)p=za[l],p.auto==b&&(!e||!(p.series==e.series&&p.point[0]==e.datapoint[0]&&p.point[1]==e.datapoint[1]))&&f(p.series,p.point);e&&sa(e.series,e.datapoint,b)}j.trigger(b,[t,e])}function ea(){var b=o.interaction.redrawOverlayInterval;
-b==-1?da():Ga||(Ga=setTimeout(da,b))}function da(){Ga=null;$.save();$.clearRect(0,0,aa,ja);$.translate(F.left,F.top);var b,f;for(b=0;b<za.length;++b)if(f=za[b],f.series.bars.show)r(f.series,f.point);else{var e=f.series,j=f.point;f=j[0];var j=j[1],o=e.xaxis,l=e.yaxis;if(!(f<o.min||f>o.max||j<l.min||j>l.max)){var q=e.points.radius+e.points.lineWidth/2;$.lineWidth=q;$.strokeStyle=d.color.parse(e.color).scale("a",0.5).toString();q*=1.5;f=o.p2c(f);j=l.p2c(j);$.beginPath();e.points.symbol=="circle"?$.arc(f,
-j,q,0,2*Math.PI,!1):e.points.symbol($,f,j,q,!1);$.closePath();$.stroke()}}$.restore();x(ua.drawOverlay,[$])}function sa(b,d,e){typeof b=="number"&&(b=q[b]);if(typeof d=="number")var f=b.datapoints.pointsize,d=b.datapoints.points.slice(f*d,f*(d+1));f=P(b,d);if(f==-1)za.push({series:b,point:d,auto:e}),ea();else if(!e)za[f].auto=!1}function f(b,d){b==null&&d==null&&(za=[],ea());typeof b=="number"&&(b=q[b]);typeof d=="number"&&(d=b.data[d]);var e=P(b,d);e!=-1&&(za.splice(e,1),ea())}function P(b,d){for(var e=
-0;e<za.length;++e){var f=za[e];if(f.series==b&&f.point[0]==d[0]&&f.point[1]==d[1])return e}return-1}function r(b,f){$.lineWidth=b.bars.lineWidth;$.strokeStyle=d.color.parse(b.color).scale("a",0.5).toString();var e=d.color.parse(b.color).scale("a",0.5).toString(),j=b.bars.align=="left"?0:-b.bars.barWidth/2;w(f[0],f[1],f[2]||0,j,j+b.bars.barWidth,0,function(){return e},b.xaxis,b.yaxis,$,b.bars.horizontal,b.bars.lineWidth)}function W(b,f,e,j){if(typeof b=="string")return b;else{for(var f=v.createLinearGradient(0,
-e,0,f),e=0,o=b.colors.length;e<o;++e){var l=b.colors[e];if(typeof l!="string"){var r=d.color.parse(j);l.brightness!=null&&(r=r.scale("rgb",l.brightness));l.opacity!=null&&(r.a*=l.opacity);l=r.toString()}f.addColorStop(e/(o-1),l)}return f}}var q=[],o={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:!0,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85},xaxis:{show:null,position:"bottom",
-mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:!1},yaxis:{autoscaleMargin:0.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:!1,radius:3,lineWidth:2,fill:!0,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,
-fill:!1,fillColor:null,steps:!1},bars:{show:!1,lineWidth:2,barWidth:1,fill:!0,fillColor:null,align:"left",horizontal:!1},shadowSize:3},grid:{show:!0,aboveData:!1,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:!1,hoverable:!1,autoHighlight:!0,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1E3/60},hooks:{}},ga=null,Da=null,qa=null,v=null,$=
-null,fa=[],ia=[],F={left:0,right:0,top:0,bottom:0},aa=0,ja=0,wa=0,ta=0,ua={processOptions:[],processRawData:[],processDatapoints:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},U=this;U.setData=y;U.setupGrid=N;U.draw=ra;U.getPlaceholder=function(){return j};U.getCanvas=function(){return ga};U.getPlotOffset=function(){return F};U.width=function(){return wa};U.height=function(){return ta};U.offset=function(){var b=qa.offset();b.left+=F.left;b.top+=F.top;return b};U.getData=function(){return q};
-U.getAxes=function(){var b={};d.each(fa.concat(ia),function(d,e){e&&(b[e.direction+(e.n!=1?e.n:"")+"axis"]=e)});return b};U.getXAxes=function(){return fa};U.getYAxes=function(){return ia};U.c2p=R;U.p2c=function(b){var d={},e,f,j;for(e=0;e<fa.length;++e)if((f=fa[e])&&f.used)if(j="x"+f.n,b[j]==null&&f.n==1&&(j="x"),b[j]!=null){d.left=f.p2c(b[j]);break}for(e=0;e<ia.length;++e)if((f=ia[e])&&f.used)if(j="y"+f.n,b[j]==null&&f.n==1&&(j="y"),b[j]!=null){d.top=f.p2c(b[j]);break}return d};U.getOptions=function(){return o};
-U.highlight=sa;U.unhighlight=f;U.triggerRedrawOverlay=ea;U.pointOffset=function(b){return{left:parseInt(fa[V(b,"x")-1].p2c(+b.x)+F.left),top:parseInt(ia[V(b,"y")-1].p2c(+b.y)+F.top)}};U.shutdown=function(){Ga&&clearTimeout(Ga);qa.unbind("mousemove",X);qa.unbind("mouseleave",G);qa.unbind("click",ba);x(ua.shutdown,[qa])};U.resize=function(){C();ma(ga);ma(Da)};U.hooks=ua;(function(){for(var b=0;b<l.length;++b){var f=l[b];f.init(U);f.options&&d.extend(!0,o,f.options)}})(U);(function(b){d.extend(!0,o,
-b);if(o.xaxis.color==null)o.xaxis.color=o.grid.color;if(o.yaxis.color==null)o.yaxis.color=o.grid.color;if(o.xaxis.tickColor==null)o.xaxis.tickColor=o.grid.tickColor;if(o.yaxis.tickColor==null)o.yaxis.tickColor=o.grid.tickColor;if(o.grid.borderColor==null)o.grid.borderColor=o.grid.color;if(o.grid.tickColor==null)o.grid.tickColor=d.color.parse(o.grid.color).scale("a",0.22).toString();for(b=0;b<Math.max(1,o.xaxes.length);++b)o.xaxes[b]=d.extend(!0,{},o.xaxis,o.xaxes[b]);for(b=0;b<Math.max(1,o.yaxes.length);++b)o.yaxes[b]=
-d.extend(!0,{},o.yaxis,o.yaxes[b]);if(o.xaxis.noTicks&&o.xaxis.ticks==null)o.xaxis.ticks=o.xaxis.noTicks;if(o.yaxis.noTicks&&o.yaxis.ticks==null)o.yaxis.ticks=o.yaxis.noTicks;if(o.x2axis)o.xaxes[1]=d.extend(!0,{},o.xaxis,o.x2axis),o.xaxes[1].position="top";if(o.y2axis)o.yaxes[1]=d.extend(!0,{},o.yaxis,o.y2axis),o.yaxes[1].position="right";if(o.grid.coloredAreas)o.grid.markings=o.grid.coloredAreas;if(o.grid.coloredAreasColor)o.grid.markingsColor=o.grid.coloredAreasColor;o.lines&&d.extend(!0,o.series.lines,
-o.lines);o.points&&d.extend(!0,o.series.points,o.points);o.bars&&d.extend(!0,o.series.bars,o.bars);if(o.shadowSize!=null)o.series.shadowSize=o.shadowSize;for(b=0;b<o.xaxes.length;++b)M(fa,b+1).options=o.xaxes[b];for(b=0;b<o.yaxes.length;++b)M(ia,b+1).options=o.yaxes[b];for(var f in ua)o.hooks[f]&&o.hooks[f].length&&(ua[f]=ua[f].concat(o.hooks[f]));x(ua.processOptions,[o])})(D);(function(){var b;b=j.children("canvas.flot-base");var f=j.children("canvas.flot-overlay");b.length==0||f==0?(j.html(""),
-j.css({padding:0}),j.css("position")=="static"&&j.css("position","relative"),C(),ga=z(!0,"flot-base"),Da=z(!1,"flot-overlay"),b=!1):(ga=b.get(0),Da=f.get(0),b=!0);v=ga.getContext("2d");$=Da.getContext("2d");qa=d(Da);b&&(j.data("plot").shutdown(),U.resize(),$.clearRect(0,0,aa,ja),qa.unbind(),j.children().not([ga,Da]).remove());j.data("plot",U)})();y(J);N();ra();o.grid.hoverable&&(qa.mousemove(X),qa.mouseleave(G));o.grid.clickable&&qa.click(ba);x(ua.bindEvents,[qa]);var za=[],Ga=null}function E(d,j){return j*
-Math.floor(d/j)}d.plot=function(n,E,D){return new j(d(n),E,D,d.plot.plugins)};d.plot.version="0.7";d.plot.plugins=[];d.plot.formatDate=function(d,j,D){var l=function(d){d=""+d;return d.length==1?"0"+d:d},x=[],y=!1,E=!1,L=d.getUTCHours(),R=L<12;D==null&&(D="Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","));j.search(/%p|%P/)!=-1&&(L>12?L-=12:L==0&&(L=12));for(var M=0;M<j.length;++M){var K=j.charAt(M);if(y){switch(K){case "h":K=""+L;break;case "H":K=l(L);break;case "M":K=l(d.getUTCMinutes());
-break;case "S":K=l(d.getUTCSeconds());break;case "d":K=""+d.getUTCDate();break;case "m":K=""+(d.getUTCMonth()+1);break;case "y":K=""+d.getUTCFullYear();break;case "b":K=""+D[d.getUTCMonth()];break;case "p":K=R?"am":"pm";break;case "P":K=R?"AM":"PM";break;case "0":K="",E=!0}K&&E&&(K=l(K),E=!1);x.push(K);E||(y=!1)}else K=="%"?y=!0:x.push(K)}return x.join("")}})(jQuery);
-// Input 3
-(function(d){d.plot.plugins.push({init:function(d){d.hooks.processDatapoints.push(function(d,j,J){if(j.stack!=null){for(var D,d=d.getData(),l=null,x=0;x<d.length;++x){if(j==d[x])break;d[x].stack==j.stack&&(l=d[x])}if(D=l){d=J.pointsize;l=J.points;x=D.datapoints.pointsize;D=D.datapoints.points;var y=[],V,L,R,M,K,z,C=j.lines.show;M=j.bars.horizontal;var ma=d>2&&(M?J.format[2].x:J.format[2].y),j=C&&j.lines.steps;R=!0;for(var S=M?1:0,B=M?0:1,O=0,N=0,t;;){if(O>=l.length)break;t=y.length;if(l[O]==null){for(m=
-0;m<d;++m)y.push(l[O+m]);O+=d}else if(N>=D.length){if(!C)for(m=0;m<d;++m)y.push(l[O+m]);O+=d}else if(D[N]==null){for(m=0;m<d;++m)y.push(null);R=!0;N+=x}else{V=l[O+S];L=l[O+B];M=D[N+S];K=D[N+B];z=0;if(V==M){for(m=0;m<d;++m)y.push(l[O+m]);y[t+B]+=K;z=K;O+=d;N+=x}else if(V>M){if(C&&O>0&&l[O-d]!=null){R=L+(l[O-d+B]-L)*(M-V)/(l[O-d+S]-V);y.push(M);y.push(R+K);for(m=2;m<d;++m)y.push(l[O+m]);z=K}N+=x}else{if(R&&C){O+=d;continue}for(m=0;m<d;++m)y.push(l[O+m]);C&&N>0&&D[N-x]!=null&&(z=K+(D[N-x+B]-K)*(V-M)/
-(D[N-x+S]-M));y[t+B]+=z;O+=d}R=!1;t!=y.length&&ma&&(y[t+2]+=z)}if(j&&t!=y.length&&t>0&&y[t]!=null&&y[t]!=y[t-d]&&y[t+1]!=y[t-d+1]){for(m=0;m<d;++m)y[t+d+m]=y[t+m];y[t+1]=y[t-d+1]}}J.points=y}}})},options:{series:{stack:null}},name:"stack",version:"1.2"})})(jQuery);
-// Input 4
-(function(d){d.plot.plugins.push({init:function(j){var E,n,J,D,l,x;function y(d){J&&(K(d),j.getPlaceholder().trigger("plotselecting",[L()]))}function V(l){if(l.which==1){document.body.focus();if(document.onselectstart!==void 0&&E==null)E=document.onselectstart,document.onselectstart=function(){return!1};if(document.ondrag!==void 0&&n==null)n=document.ondrag,document.ondrag=function(){return!1};M(D,l);J=!0;S=function(d){S=null;if(document.onselectstart!==void 0)document.onselectstart=E;if(document.ondrag!==
-void 0)document.ondrag=n;J=!1;K(d);ma()?R():(j.getPlaceholder().trigger("plotunselected",[]),j.getPlaceholder().trigger("plotselecting",[null]))};d(document).one("mouseup",S)}}function L(){if(!ma())return null;var n={},z=D,x=l;d.each(j.getAxes(),function(d,j){if(j.used){var l=j.c2p(z[j.direction]),C=j.c2p(x[j.direction]);n[d]={from:Math.min(l,C),to:Math.max(l,C)}}});return n}function R(){var d=L();j.getPlaceholder().trigger("plotselected",[d]);d.xaxis&&d.yaxis&&j.getPlaceholder().trigger("selected",
-[{x1:d.xaxis.from,y1:d.yaxis.from,x2:d.xaxis.to,y2:d.yaxis.to}])}function M(d,l){var n=j.getOptions(),t=j.getPlaceholder().offset(),z=j.getPlotOffset(),x=l.pageX-t.left-z.left,C=j.width();d.x=x<0?0:x>C?C:x;t=l.pageY-t.top-z.top;z=j.height();d.y=t<0?0:t>z?z:t;if(n.selection.mode=="y")d.x=d==D?0:j.width();if(n.selection.mode=="x")d.y=d==D?0:j.height()}function K(d){d.pageX!=null&&(M(l,d),ma()?(x=!0,j.triggerRedrawOverlay()):z(!0))}function z(d){x&&(x=!1,j.triggerRedrawOverlay(),d||j.getPlaceholder().trigger("plotunselected",
-[]))}function C(d,l){var n,t,z,x,C=j.getAxes(),y;for(y in C)if(n=C[y],n.direction==l&&(x=l+n.n+"axis",!d[x]&&n.n==1&&(x=l+"axis"),d[x])){t=d[x].from;z=d[x].to;break}d[x]||(n=l=="x"?j.getXAxes()[0]:j.getYAxes()[0],t=d[l+"1"],z=d[l+"2"]);t!=null&&z!=null&&t>z&&(x=t,t=z,z=x);return{from:t,to:z,axis:n}}function ma(){return Math.abs(l.x-D.x)>=5&&Math.abs(l.y-D.y)>=5}D={x:-1,y:-1};l={x:-1,y:-1};x=!1;J=!1;E=void 0;n=void 0;var S=null;j.clearSelection=z;j.setSelection=function(d,n){var z,t=j.getOptions();
-t.selection.mode=="y"?(D.x=0,l.x=j.width()):(z=C(d,"x"),D.x=z.axis.p2c(z.from),l.x=z.axis.p2c(z.to));t.selection.mode=="x"?(D.y=0,l.y=j.height()):(z=C(d,"y"),D.y=z.axis.p2c(z.from),l.y=z.axis.p2c(z.to));x=!0;j.triggerRedrawOverlay();!n&&ma()&&R()};j.getSelection=L;j.hooks.bindEvents.push(function(d,j){d.getOptions().selection.mode!=null&&(j.mousemove(y),j.mousedown(V))});j.hooks.drawOverlay.push(function(j,n){if(x&&ma()){var z=j.getPlotOffset(),t=j.getOptions();n.save();n.translate(z.left,z.top);
-z=d.color.parse(t.selection.color);n.strokeStyle=z.scale("a",0.8).toString();n.lineWidth=1;n.lineJoin="round";n.fillStyle=z.scale("a",0.4).toString();var z=Math.min(D.x,l.x),t=Math.min(D.y,l.y),C=Math.abs(l.x-D.x),y=Math.abs(l.y-D.y);n.fillRect(z,t,C,y);n.strokeRect(z,t,C,y);n.restore()}});j.hooks.shutdown.push(function(j,l){l.unbind("mousemove",y);l.unbind("mousedown",V);S&&d(document).unbind("mouseup",S)})},options:{selection:{mode:null,color:"#e8cfac"}},name:"selection",version:"1.1"})})(jQuery);
-// Input 5
-// Input 6
-/*
-
- jQuery Tools @VERSION Dateinput - <input type="date" /> for humans
-
- NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
-
- http://flowplayer.org/tools/form/dateinput/
-
- Since: Mar 2010
- Date: @DATE
-*/
-(function(d,j){function E(d,j){d=""+d;for(j=j||2;d.length<j;)d="0"+d;return d}function n(d,j,l){var n=d.getDate(),x=d.getDay(),y=d.getMonth(),d=d.getFullYear(),D={d:n,dd:E(n),ddd:R[l].shortDays[x],dddd:R[l].days[x],m:y+1,mm:E(y+1),mmm:R[l].shortMonths[y],mmmm:R[l].months[y],yy:String(d).slice(2),yyyy:d},j=j.replace(M,function(d){return d in D?D[d]:d.slice(1,d.length-1)});return K.html(j).html()}function J(d){return parseInt(d,10)}function D(d,j){return d.getFullYear()===j.getFullYear()&&d.getMonth()==
-j.getMonth()&&d.getDate()==j.getDate()}function l(d){if(d!==j){if(d.constructor==Date)return d;if(typeof d=="string"){var l=d.split("-");if(l.length==3)return new Date(J(l[0]),J(l[1])-1,J(l[2]));if(!/^-?\d+$/.test(d))return;d=J(d)}l=new Date;l.setDate(l.getDate()+d);return l}}function x(x,C){function E(f,j,l){b=f;w=f.getFullYear();ha=f.getMonth();na=f.getDate();l=l||d.Event("api");l.type="beforeChange";ea.trigger(l,[f]);if(!l.isDefaultPrevented())x.val(n(f,j.format,j.lang)),l.type="change",ea.trigger(l),
-x.data("date",f),B.hide(l)}function K(b){b.type="onShow";ea.trigger(b);d(document).bind("keydown.d",function(b){if(b.ctrlKey)return!0;var f=b.keyCode;if(f==8)return x.val(""),B.hide(b);if(f==27||f==9)return B.hide(b);if(d(L).index(f)>=0){if(!ba)return B.show(b),b.preventDefault();var j=d("#"+t.weeks+" a"),l=d("."+t.focus),n=j.index(l);l.removeClass(t.focus);if(f==74||f==40)n+=7;else if(f==75||f==38)n-=7;else if(f==76||f==39)n+=1;else if(f==72||f==37)n-=1;n>41?(B.addMonth(),l=d("#"+t.weeks+" a:eq("+
-(n-42)+")")):n<0?(B.addMonth(-1),l=d("#"+t.weeks+" a:eq("+(n+42)+")")):l=j.eq(n);l.addClass(t.focus);return b.preventDefault()}if(f==34)return B.addMonth();if(f==33)return B.addMonth(-1);if(f==36)return B.today();f==13&&(d(b.target).is("select")||d("."+t.focus).click());return d([16,17,18,9]).index(f)>=0});d(document).bind("click.d",function(b){var f=b.target;!d(f).parents("#"+t.root).length&&f!=x[0]&&(!ca||f!=ca[0])&&B.hide(b)})}var B=this,O=new Date,N=O.getFullYear(),t=C.css,M=R[C.lang],I=d("#"+
-t.root),V=I.find("#"+t.title),ca,Aa,ya,w,ha,na,b=x.attr("data-value")||C.value||x.val(),X=x.attr("min")||C.min,G=x.attr("max")||C.max,ba,xa;X===0&&(X="0");b=l(b)||O;X=l(X||new Date(N+C.yearRange[0],1,1));G=l(G||new Date(N+C.yearRange[1]+1,1,-1));if(!M)throw"Dateinput: invalid language: "+C.lang;x.attr("type")=="date"&&(xa=x.clone(),N=xa.wrap("<div/>").parent().html(),N=d(N.replace(/type/i,"type=text data-orig-type")),C.value&&N.val(C.value),x.replaceWith(N),x=N);x.addClass(t.input);var ea=x.add(B);
-if(!I.length){I=d("<div><div><a/><div/><a/></div><div><div/><div/></div></div>").hide().css({position:"absolute"}).attr("id",t.root);I.children().eq(0).attr("id",t.head).end().eq(1).attr("id",t.body).children().eq(0).attr("id",t.days).end().eq(1).attr("id",t.weeks).end().end().end().find("a").eq(0).attr("id",t.prev).end().eq(1).attr("id",t.next);V=I.find("#"+t.head).find("div").attr("id",t.title);if(C.selectors){var da=d("<select/>").attr("id",t.month),sa=d("<select/>").attr("id",t.year);V.html(da.add(sa))}for(var N=
-I.find("#"+t.days),f=0;f<7;f++)N.append(d("<span/>").text(M.shortDays[(f+C.firstDay)%7]));d("body").append(I)}C.trigger&&(ca=d("<a/>").attr("href","#").addClass(t.trigger).click(function(b){C.toggle?B.toggle():B.show();return b.preventDefault()}).insertAfter(x));var P=I.find("#"+t.weeks),sa=I.find("#"+t.year),da=I.find("#"+t.month);d.extend(B,{show:function(f){if(!x.attr("readonly")&&!x.attr("disabled")&&!ba&&(f=f||d.Event(),f.type="onBeforeShow",ea.trigger(f),!f.isDefaultPrevented())){d.each(y,function(){this.hide()});
-ba=!0;da.unbind("change").change(function(){B.setValue(sa.val(),d(this).val())});sa.unbind("change").change(function(){B.setValue(d(this).val(),da.val())});Aa=I.find("#"+t.prev).unbind("click").click(function(){Aa.hasClass(t.disabled)||B.addMonth(-1);return!1});ya=I.find("#"+t.next).unbind("click").click(function(){ya.hasClass(t.disabled)||B.addMonth();return!1});B.setValue(b);var j=x.offset();/iPad/i.test(navigator.userAgent)&&(j.top-=d(window).scrollTop());I.css({top:j.top+x.outerHeight({margins:!0})+
-C.offset[0],left:j.left+C.offset[1]});C.speed?I.show(C.speed,function(){K(f)}):(I.show(),K(f));return B}},setValue:function(f,n,q){var o=J(n)>=-1?new Date(J(f),J(n),J(q==j||isNaN(q)?1:q)):f||b;o<X?o=X:o>G&&(o=G);typeof f=="string"&&(o=l(f));f=o.getFullYear();n=o.getMonth();q=o.getDate();n==-1?(n=11,f--):n==12&&(n=0,f++);if(!ba)return E(o,C),B;ha=n;w=f;na=q;var q=(new Date(f,n,1-C.firstDay)).getDay(),x=(new Date(f,n+1,0)).getDate(),z=(new Date(f,n-1+1,0)).getDate(),y;if(C.selectors){da.empty();d.each(M.months,
-function(b,j){X<new Date(f,b+1,1)&&G>new Date(f,b,0)&&da.append(d("<option/>").html(j).attr("value",b))});sa.empty();for(var o=O.getFullYear(),v=o+C.yearRange[0];v<o+C.yearRange[1];v++)X<new Date(v+1,0,1)&&G>new Date(v,0,0)&&sa.append(d("<option/>").text(v));da.val(n);sa.val(f)}else V.html(M.months[n]+" "+f);P.empty();Aa.add(ya).removeClass(t.disabled);for(var v=!q?-7:0,K,I;v<(!q?35:42);v++)K=d("<a/>"),v%7===0&&(y=d("<div/>").addClass(t.week),P.append(y)),v<q?(K.addClass(t.off),I=z-q+v+1,o=new Date(f,
-n-1,I)):v>=q+x?(K.addClass(t.off),I=v-x-q+1,o=new Date(f,n+1,I)):(I=v-q+1,o=new Date(f,n,I),D(b,o)?K.attr("id",t.current).addClass(t.focus):D(O,o)&&K.attr("id",t.today)),X&&o<X&&K.add(Aa).addClass(t.disabled),G&&o>G&&K.add(ya).addClass(t.disabled),K.attr("href","#"+I).text(I).data("date",o),y.append(K);P.find("a").click(function(b){var f=d(this);f.hasClass(t.disabled)||(d("#"+t.current).removeAttr("id"),f.attr("id",t.current),E(f.data("date"),C,b));return!1});t.sunday&&P.find(t.week).each(function(){var b=
-C.firstDay?7-C.firstDay:0;d(this).children().slice(b,b+1).addClass(t.sunday)});return B},setMin:function(d,f){X=l(d);f&&b<X&&B.setValue(X);return B},setMax:function(d,f){G=l(d);f&&b>G&&B.setValue(G);return B},today:function(){return B.setValue(O)},addDay:function(b){return this.setValue(w,ha,na+(b||1))},addMonth:function(b){var b=ha+(b||1),d=(new Date(w,b+1,0)).getDate();return this.setValue(w,b,na<=d?na:d)},addYear:function(b){return this.setValue(w+(b||1),ha,na)},destroy:function(){x.add(document).unbind("click.d").unbind("keydown.d");
-I.add(ca).remove();x.removeData("dateinput").removeClass(t.input);xa&&x.replaceWith(xa)},hide:function(b){if(ba){b=d.Event();b.type="onHide";ea.trigger(b);d(document).unbind("click.d").unbind("keydown.d");if(b.isDefaultPrevented())return;I.hide();ba=!1}return B},toggle:function(){return B.isOpen()?B.hide():B.show()},getConf:function(){return C},getInput:function(){return x},getCalendar:function(){return I},getValue:function(d){return d?n(b,d,C.lang):b},isOpen:function(){return ba}});d.each(["onBeforeShow",
-"onShow","change","onHide"],function(b,f){d.isFunction(C[f])&&d(B).bind(f,C[f]);B[f]=function(b){b&&d(B).bind(f,b);return B}});C.editable||x.bind("focus.d click.d",B.show).keydown(function(b){var f=b.keyCode;return!ba&&d(L).index(f)>=0?(B.show(b),b.preventDefault()):b.shiftKey||b.ctrlKey||b.altKey||f==9?!0:b.preventDefault()});l(x.val())&&E(b,C)}d.tools=d.tools||{version:"@VERSION"};var y=[],V,L=[75,76,38,39,74,72,40,37],R={};V=d.tools.dateinput={conf:{format:"mm/dd/yy",selectors:!1,yearRange:[-5,
-5],lang:"en",offset:[0,0],speed:0,firstDay:0,min:j,max:j,trigger:0,toggle:0,editable:0,css:{prefix:"cal",input:"date",root:0,head:0,title:0,prev:0,next:0,month:0,year:0,days:0,body:0,weeks:0,today:0,current:0,week:0,off:0,sunday:0,focus:0,disabled:0,trigger:0}},localize:function(j,l){d.each(l,function(d,j){l[d]=j.split(",")});R[j]=l}};V.localize("en",{months:"January,February,March,April,May,June,July,August,September,October,November,December",shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec",
-days:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",shortDays:"Sun,Mon,Tue,Wed,Thu,Fri,Sat"});var M=/d{1,4}|m{1,4}|yy(?:yy)?|"[^"]*"|'[^']*'/g,K=d("<a/>");d.expr[":"].date=function(j){var l=j.getAttribute("type");return l&&l=="date"||!!d(j).data("dateinput")};d.fn.dateinput=function(j){if(this.data("dateinput"))return this;j=d.extend(!0,{},V.conf,j);d.each(j.css,function(d,l){!l&&d!="prefix"&&(j.css[d]=(j.css.prefix||"")+(l||d))});var l;this.each(function(){var n=new x(d(this),j);y.push(n);
-n=n.getInput().data("dateinput",n);l=l?l.add(n):n});return l?l:this}})(jQuery);
-// Input 7
-/*
-
- jQuery Tools @VERSION Tabs- The basics of UI design.
-
- NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
-
- http://flowplayer.org/tools/tabs/
-
- Since: November 2008
- Date: @DATE
-*/
-(function(d){function j(j,l,n){var y=this,J=j.add(this),L=j.find(n.tabs),R=l.jquery?l:j.children(l),M;L.length||(L=j.children());R.length||(R=j.parent().find(l));R.length||(R=d(l));d.extend(this,{click:function(j,l){var C=L.eq(j);typeof j=="string"&&j.replace("#","")&&(C=L.filter("[href*="+j.replace("#","")+"]"),j=Math.max(L.index(C),0));if(n.rotate){var D=L.length-1;if(j<0)return y.click(D,l);if(j>D)return y.click(0,l)}if(!C.length){if(M>=0)return y;j=n.initialIndex;C=L.eq(j)}if(j===M)return y;l=
-l||d.Event();l.type="onBeforeClick";J.trigger(l,[j]);if(!l.isDefaultPrevented())return E[n.effect].call(y,j,function(){M=j;l.type="onClick";J.trigger(l,[j])}),L.removeClass(n.current),C.addClass(n.current),y},getConf:function(){return n},getTabs:function(){return L},getPanes:function(){return R},getCurrentPane:function(){return R.eq(M)},getCurrentTab:function(){return L.eq(M)},getIndex:function(){return M},next:function(){return y.click(M+1)},prev:function(){return y.click(M-1)},destroy:function(){L.unbind(n.event).removeClass(n.current);
-R.find("a[href^=#]").unbind("click.T");return y}});d.each("onBeforeClick,onClick".split(","),function(j,l){d.isFunction(n[l])&&d(y).bind(l,n[l]);y[l]=function(j){j&&d(y).bind(l,j);return y}});if(n.history&&d.fn.history)d.tools.history.init(L),n.event="history";L.each(function(j){d(this).bind(n.event,function(d){y.click(j,d);return d.preventDefault()})});R.find("a[href^=#]").bind("click.T",function(j){y.click(d(this).attr("href"),j)});location.hash&&n.tabs=="a"&&j.find("[href="+location.hash+"]").length?
-y.click(location.hash):(n.initialIndex===0||n.initialIndex>0)&&y.click(n.initialIndex)}d.tools=d.tools||{version:"@VERSION"};d.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:!1,slideUpSpeed:400,slideDownSpeed:400,history:!1},addEffect:function(d,j){E[d]=j}};var E={"default":function(d,j){this.getPanes().hide().eq(d).show();j.call()},fade:function(d,j){var n=this.getConf(),y=n.fadeOutSpeed,E=this.getPanes();y?E.fadeOut(y):
-E.hide();E.eq(d).fadeIn(n.fadeInSpeed,j)},slide:function(d,j){var n=this.getConf();this.getPanes().slideUp(n.slideUpSpeed);this.getPanes().eq(d).slideDown(n.slideDownSpeed,j)},ajax:function(d,j){this.getPanes().eq(0).load(this.getTabs().eq(d).attr("href"),j)}},n,J;d.tools.tabs.addEffect("horizontal",function(j,l){if(!n){var x=this.getPanes().eq(j),y=this.getCurrentPane();J||(J=this.getPanes().eq(0).width());n=!0;x.show();y.animate({width:0},{step:function(d){x.css("width",J-d)},complete:function(){d(this).hide();
-l.call();n=!1}});y.length||(l.call(),n=!1)}});d.fn.tabs=function(n,l){var x=this.data("tabs");x&&(x.destroy(),this.removeData("tabs"));d.isFunction(l)&&(l={onBeforeClick:l});l=d.extend({},d.tools.tabs.conf,l);this.each(function(){x=new j(d(this),n,l);d(this).data("tabs",x)});return l.api?x:this}})(jQuery);
-// Input 8
-/*
-
- jQuery Tools @VERSION History "Back button for AJAX apps"
-
- NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
-
- http://flowplayer.org/tools/toolbox/history.html
-
- Since: Mar 2010
- Date: @DATE
-*/
-(function(d){function j(d){if(d){var j=n.contentWindow.document;j.open().close();j.location.hash=d}}var E,n,J,D;d.tools=d.tools||{version:"@VERSION"};d.tools.history={init:function(l){D||(d.browser.msie&&d.browser.version<"8"?n||(n=d("<iframe/>").attr("src","javascript:false;").hide().get(0),d("body").prepend(n),setInterval(function(){var j=n.contentWindow.document.location.hash;E!==j&&d(window).trigger("hash",j)},100),j(location.hash||"#")):setInterval(function(){var j=location.hash;j!==E&&d(window).trigger("hash",
-j)},100),J=!J?l:J.add(l),l.click(function(l){var y=d(this).attr("href");n&&j(y);if(y.slice(0,1)!="#")return location.href="#"+y,l.preventDefault()}),D=!0)}};d(window).bind("hash",function(j,n){n?J.filter(function(){var j=d(this).attr("href");return j==n||j==n.replace("#","")}).trigger("history",[n]):J.eq(0).trigger("history",[n]);E=n});d.fn.history=function(j){d.tools.history.init(this);return this.bind("history",j)}})(jQuery);
diff --git a/docs/examples/index.html b/docs/examples/index.html
index 7e456ee..472dd6a 100644
--- a/docs/examples/index.html
+++ b/docs/examples/index.html
@@ -8,51 +8,26 @@
Collectd RRD data</title>
<link rel="stylesheet" type="text/css" href="assets/css/style.css" />
- <link rel="stylesheet" type="text/css" href="assets/css/tabs-no-images.css" />
- <link rel="stylesheet" type="text/css" href="assets/css/jquerytools.dateinput.skin1.css" />
+ <link rel="stylesheet" type="text/css" href="assets/css/jquerytools.tabs.tabs-no-images.css" />
<script type="text/javascript" src="assets/js/dependencies.js"></script>
<script type="text/javascript" src="assets/js/rrdFile-1.1.1.js"></script>
<script type="text/javascript" src="../../jarmon/jarmon.js"></script>
<script type="text/javascript" src="jarmon_example_recipes.js"></script>
- <script type="text/javascript">
-
- $(function() {
- jarmon.buildTabbedChartUi(
- $('.chart-container').remove(),
- jarmon.CHART_RECIPES_COLLECTD,
- $('.tabbed-chart-interface'),
- jarmon.TAB_RECIPES_STANDARD,
- $('.chartRangeControl')
- );
- });
</script>
</head>
<body>
<div class="chartRangeControl">
<form>
- <div>
- <span class="timerange_control custom">
- <img src="assets/icons/calendar.png" width="16" height="16" alt="calendar" class="from_custom"
- title="Click to choose a custom start date" />
- <input name="from_custom" type="text" readonly="readonly"
- title="Time range start" />
- <img src="assets/icons/calendar.png" width="16" height="16" alt="calendar" class="to_custom"
- title="Click to choose a custom end date" />
- <input name="to_custom" type="text" readonly="readonly"
- title="Time range end" />
- </span>
- <span class="timerange_control standard">
- <select name="from_standard"
- title="Time range shortcuts - click to select an alternative time range" >
- </select>
+ <div class="range-inputs">
+ <span class="custom">
+ <input name="from" type="datetime-local" step="1" />
+ <input name="to" type="datetime-local" step="1" />
</span>
- <input name="from" type="hidden" />
- <input name="to" type="hidden" />
- <select name="tzoffset"
- title="Timezone offset - click to choose a custom timezone offset" ></select>
+ <select name="shortcuts" title="Time range shortcuts - click to select an alternative time range" ></select>
+ <select name="tzoffset" title="Timezone offset - click to choose a custom timezone offset" ></select>
<input name="action" value="Update" type="button"
title="Graph update - click to update all graphs" />
</div>
diff --git a/docs/examples/jarmon_example_recipes.js b/docs/examples/jarmon_example_recipes.js
index 7acfa8d..bd5c28f 100644
--- a/docs/examples/jarmon_example_recipes.js
+++ b/docs/examples/jarmon_example_recipes.js
@@ -4,70 +4,76 @@
* Some example recipes for Collectd RRD data - you *will* need to modify this
* based on the RRD data available on your system.
*/
+$(function() {
-if(typeof(jarmon) === 'undefined') {
- var jarmon = {};
-}
+ var tabRecipes = [
+ ['System', ['cpu', 'memory','load']],
+ ['Network', ['interface']]
+ ];
-jarmon.TAB_RECIPES_STANDARD = [
- ['System', ['cpu', 'memory','load']],
- ['Network', ['interface']]
-];
+ var chartRecipes = {
+ 'cpu': {
+ title: 'CPU Usage',
+ data: [
+ ['data/cpu-0/cpu-wait.rrd', 0, 'CPU-0 Wait', '%'],
+ ['data/cpu-1/cpu-wait.rrd', 0, 'CPU-1 Wait', '%'],
+ ['data/cpu-0/cpu-system.rrd', 0, 'CPU-0 System', '%'],
+ ['data/cpu-1/cpu-system.rrd', 0, 'CPU-1 System', '%'],
+ ['data/cpu-0/cpu-user.rrd', 0, 'CPU-0 User', '%'],
+ ['data/cpu-1/cpu-user.rrd', 0, 'CPU-1 User', '%']
+ ],
+ options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS,
+ jarmon.Chart.STACKED_OPTIONS)
+ },
-jarmon.CHART_RECIPES_COLLECTD = {
- 'cpu': {
- title: 'CPU Usage',
- data: [
- ['data/cpu-0/cpu-wait.rrd', 0, 'CPU-0 Wait', '%'],
- ['data/cpu-1/cpu-wait.rrd', 0, 'CPU-1 Wait', '%'],
- ['data/cpu-0/cpu-system.rrd', 0, 'CPU-0 System', '%'],
- ['data/cpu-1/cpu-system.rrd', 0, 'CPU-1 System', '%'],
- ['data/cpu-0/cpu-user.rrd', 0, 'CPU-0 User', '%'],
- ['data/cpu-1/cpu-user.rrd', 0, 'CPU-1 User', '%']
- ],
- options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS,
- jarmon.Chart.STACKED_OPTIONS)
- },
+ 'memory': {
+ title: 'Memory',
+ data: [
+ ['data/memory/memory-buffered.rrd', 0, 'Buffered', 'B'],
+ ['data/memory/memory-used.rrd', 0, 'Used', 'B'],
+ ['data/memory/memory-cached.rrd', 0, 'Cached', 'B'],
+ ['data/memory/memory-free.rrd', 0, 'Free', 'B']
+ ],
+ options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS,
+ jarmon.Chart.STACKED_OPTIONS)
+ },
- 'memory': {
- title: 'Memory',
- data: [
- ['data/memory/memory-buffered.rrd', 0, 'Buffered', 'B'],
- ['data/memory/memory-used.rrd', 0, 'Used', 'B'],
- ['data/memory/memory-cached.rrd', 0, 'Cached', 'B'],
- ['data/memory/memory-free.rrd', 0, 'Free', 'B']
- ],
- options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS,
- jarmon.Chart.STACKED_OPTIONS)
- },
+ 'load': {
+ title: 'Load Average',
+ data: [
+ ['data/load/load.rrd', 'shortterm', 'Short Term', ''],
+ ['data/load/load.rrd', 'midterm', 'Medium Term', ''],
+ ['data/load/load.rrd', 'longterm', 'Long Term', '']
+ ],
+ options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
+ },
- 'load': {
- title: 'Load Average',
- data: [
- ['data/load/load.rrd', 'shortterm', 'Short Term', ''],
- ['data/load/load.rrd', 'midterm', 'Medium Term', ''],
- ['data/load/load.rrd', 'longterm', 'Long Term', '']
- ],
- options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
- },
+ 'interface': {
+ title: 'Wlan0 Throughput',
+ data: [
+ ['data/interface-wlan0/if_octets.rrd', 'tx', 'Transmit', 'bit/s', function (v) { return -v*8; }],
+ ['data/interface-wlan0/if_octets.rrd', 'rx', 'Receive', 'bit/s', function (v) { return v*8; }]
+ ],
+ options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
+ },
- 'interface': {
- title: 'Wlan0 Throughput',
- data: [
- ['data/interface/if_octets-wlan0.rrd', 'tx', 'Transmit', 'bit/s', function (v) { return v*8; }],
- ['data/interface/if_octets-wlan0.rrd', 'rx', 'Receive', 'bit/s', function (v) { return v*8; }]
- ],
- options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
- },
+ 'droprate': {
+ title: 'Ping Droprate',
+ data: [
+ ['data/ping/ping_droprate-google.com.rrd', 0,
+ 'google.com', '%', function (v) { return v*100; }],
+ ['data/ping/ping_droprate-softlayer.com.rrd', 0,
+ 'softlayer.com', '%', function (v) { return v*100; }]
+ ],
+ options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
+ }
+ };
- 'droprate': {
- title: 'Ping Droprate',
- data: [
- ['data/ping/ping_droprate-google.com.rrd', 0,
- 'google.com', '%', function (v) { return v*100; }],
- ['data/ping/ping_droprate-softlayer.com.rrd', 0,
- 'softlayer.com', '%', function (v) { return v*100; }]
- ],
- options: jQuery.extend(true, {}, jarmon.Chart.BASE_OPTIONS)
- }
-};
+ jarmon.buildTabbedChartUi(
+ $('.chart-container').remove(),
+ chartRecipes,
+ $('.tabbed-chart-interface'),
+ tabRecipes,
+ $('.chartRangeControl')
+ );
+});
diff --git a/jarmon/external.doc.js b/jarmon/external.doc.js
new file mode 100644
index 0000000..10d9ea7
--- /dev/null
+++ b/jarmon/external.doc.js
@@ -0,0 +1,63 @@
+/**
+ * jQuery
+ * @module jQuery
+ * @see http://api.jquery.com/
+ */
+/**
+ * @typedef module:jQuery.jQuery
+ * @see http://api.jquery.com/Types/#jQuery
+ */
+/**
+ * @typedef module:jQuery.Deferred
+ * @see http://api.jquery.com/category/deferred-object/
+ */
+/**
+ * @function module:jQuery.ajax
+ * @see https://api.jquery.com/jQuery.ajax/
+ */
+
+/**
+ * {@link http://jquerytools.github.io/ jQuery Tools} / tabs
+ * @module jQueryTools/tabs
+ * @see http://jquerytools.github.io/documentation/tabs/index.html
+ */
+
+/**
+ * {@link http://jquerytools.github.io/ jQuery Tools} / toolbox/history
+ * @module jQueryTools/toolbox/history
+ * @see http://jquerytools.github.io/documentation/toolbox/history.html
+ */
+
+/**
+ * {@link http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/index.html javascriptRRD}/binaryXHR
+ * @module javascriptRRD/binaryXHR
+ * @see http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/binaryXHR_js.html
+ */
+/**
+ * @typedef module:javascriptRRD/binaryXHR.BinaryFile
+ * @see http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/binaryXHR_js.html#BinaryFile
+ */
+
+/**
+ * {@link http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/index.html javascriptRRD}/rrdFile
+ * @module javascriptRRD/rrdFile
+ * @see http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/rrdFile_js.html
+ */
+/**
+ * @typedef module:javascriptRRD/rrdFile.RRDFile
+ * @see http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/rrdFile_js.html#RRDFile
+ */
+
+/**
+ * {@link http://www.flotcharts.org/ Flot}
+ * @module Flot
+ * @see https://github.com/flot/flot/blob/master/API.md
+ */
+/**
+ * @typedef module:Flot.data
+ * @see https://github.com/flot/flot/blob/master/API.md#data-format
+ */
+/**
+ * @typedef module:Flot.options
+ * @see https://github.com/flot/flot/blob/master/API.md#plot-options
+ */
diff --git a/jarmon/jarmon.js b/jarmon/jarmon.js
index e30a228..c7af4ed 100644
--- a/jarmon/jarmon.js
+++ b/jarmon/jarmon.js
@@ -9,233 +9,41 @@
* - http://collectd.org/
*
* Requirements:
- * - JavascriptRRD: http://javascriptrrd.sourceforge.net/
- * - jQuery: http://jquery.com/
- * - Flot: http://code.google.com/p/flot/
- *
- * @module jarmon
+ * - javascriptRRD/rrdFile 0.6/1.1: http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/rrdFile_js.html
+ * - javascriptRRD/binaryXHR 0.6/1.1: http://javascriptrrd.sourceforge.net/docs/javascriptrrd_v1.1.1/doc/lib/binaryXHR_js.html
+ * - jQuery 1.6.3: http://jquery.com/
+ * - Flot 1.7: http://www.flotcharts.org/
+ * - jQueryTools/tabs: http://jquerytools.github.io/documentation/tabs/index.html
+ * - jQueryTools/toolbox/history: http://jquerytools.github.io/documentation/toolbox/history.html
*/
/**
* A namespace for Jarmon
*
- * @class jarmon
- * @static
+ * @namespace jarmon
*/
if(typeof(jarmon) === 'undefined') {
var jarmon = {};
}
-// A VBScript and Javascript helper function to convert IE responseBody to a
-// byte string.
-// http://miskun.com/javascript/internet-explorer-and-binary-files-data-access/
-var IEBinaryToArray_ByteStr_Script =
- "<!-- IEBinaryToArray_ByteStr -->\r\n"+
- "<script type='text/vbscript'>\r\n"+
- "Function IEBinaryToArray_ByteStr(Binary)\r\n"+
- " IEBinaryToArray_ByteStr = CStr(Binary)\r\n"+
- "End Function\r\n"+
- "Function IEBinaryToArray_ByteStr_Last(Binary)\r\n"+
- " Dim lastIndex\r\n"+
- " lastIndex = LenB(Binary)\r\n"+
- " if lastIndex mod 2 Then\r\n"+
- " IEBinaryToArray_ByteStr_Last = Chr( AscB( MidB( Binary, lastIndex, 1 ) ) )\r\n"+
- " Else\r\n"+
- " IEBinaryToArray_ByteStr_Last = "+'""'+"\r\n"+
- " End If\r\n"+
- "End Function\r\n"+
- "</script>\r\n";
-document.write(IEBinaryToArray_ByteStr_Script);
-
-jarmon.GetIEByteArray_ByteStr = function(IEByteArray) {
- if(typeof(jarmon.ByteMapping) === 'undefined') {
- jarmon.ByteMapping = {};
- for ( var i = 0; i < 256; i++ ) {
- for ( var j = 0; j < 256; j++ ) {
- jarmon.ByteMapping[ String.fromCharCode( i + j * 256 ) ] =
- String.fromCharCode(i) + String.fromCharCode(j);
- }
- }
- }
-
- var rawBytes = IEBinaryToArray_ByteStr(IEByteArray);
- var lastChr = IEBinaryToArray_ByteStr_Last(IEByteArray);
- return rawBytes.replace(/[\s\S]/g,
- function( match ) { return jarmon.ByteMapping[match]; }) + lastChr;
-};
+/**
+ * @callback jarmon.RrdQueryRemote.Downloader
+ * @param url {string} The url of the object to be downloaded
+ * @return {module:jQuery.Deferred} A Deferred which will callback with an
+ * instance of {@link module:javascriptRRD/binaryXHR.BinaryFile}
+ */
-/*
- * BinaryFile over XMLHttpRequest
- * Part of the javascriptRRD package
- * Copyright (c) 2009 Frank Wuerthwein, fkw@ucsd.edu
- * MIT License [http://www.opensource.org/licenses/mit-license.php]
+/**
+ * Download a binary file asynchronously using the {@link jQuery.ajax}
+ * function.
*
- * Original repository: http://javascriptrrd.sourceforge.net/
+ * @member
+ * @type jarmon.RrdQueryRemote.Downloader
*
- * Based on:
- * Binary Ajax 0.1.5
- * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com,
- * http://blog.nihilogic.dk/
- * MIT License [http://www.opensource.org/licenses/mit-license.php]
+ * @requires jQuery
+ * @requires javascriptRRD/binaryXHR
*/
-
-// ============================================================
-// Exception class
-jarmon.InvalidBinaryFile = function(msg) {
- this.message=msg;
- this.name="Invalid BinaryFile";
-};
-
-// pretty print
-jarmon.InvalidBinaryFile.prototype.toString = function() {
- return this.name + ': "' + this.message + '"';
-};
-
-// =====================================================================
-// BinaryFile class
-// Allows access to element inside a binary stream
-jarmon.BinaryFile = function(strData, iDataOffset, iDataLength) {
-
- var data = strData;
- var dataOffset = iDataOffset || 0;
- var dataLength = 0;
- // added
- var doubleMantExpHi=Math.pow(2,-28);
- var doubleMantExpLo=Math.pow(2,-52);
- var doubleMantExpFast=Math.pow(2,-20);
-
- if (typeof strData === "string") {
- dataLength = iDataLength || data.length;
- } else {
- throw new jarmon.InvalidBinaryFile(
- "Unsupported type " + (typeof strData));
- }
-
- this.getRawData = function() {
- return data;
- };
-
- this.getByteAt = function(iOffset) {
- return data.charCodeAt(iOffset + dataOffset) & 0xFF;
- };
-
- this.getLength = function() {
- return dataLength;
- };
-
- this.getSByteAt = function(iOffset) {
- var iByte = this.getByteAt(iOffset);
- if (iByte > 127)
- return iByte - 256;
- else
- return iByte;
- };
-
- this.getShortAt = function(iOffset) {
- var iShort = (
- this.getByteAt(iOffset + 1) << 8) + this.getByteAt(iOffset);
- if (iShort < 0) iShort += 65536;
- return iShort;
- };
- this.getSShortAt = function(iOffset) {
- var iUShort = this.getShortAt(iOffset);
- if (iUShort > 32767)
- return iUShort - 65536;
- else
- return iUShort;
- };
- this.getLongAt = function(iOffset) {
- var iByte1 = this.getByteAt(iOffset),
- iByte2 = this.getByteAt(iOffset + 1),
- iByte3 = this.getByteAt(iOffset + 2),
- iByte4 = this.getByteAt(iOffset + 3);
-
- var iLong = (((((iByte4 << 8) + iByte3) << 8) + iByte2) << 8) + iByte1;
- if (iLong < 0) iLong += 4294967296;
- return iLong;
- };
- this.getSLongAt = function(iOffset) {
- var iULong = this.getLongAt(iOffset);
- if (iULong > 2147483647)
- return iULong - 4294967296;
- else
- return iULong;
- };
- this.getStringAt = function(iOffset, iLength) {
- var aStr = [];
- for (var i=iOffset,j=0;i<iOffset+iLength;i++,j++) {
- aStr[j] = String.fromCharCode(this.getByteAt(i));
- }
- return aStr.join("");
- };
-
- // Added
- this.getCStringAt = function(iOffset, iMaxLength) {
- var aStr = [];
- for (var i=iOffset,j=0;(i<iOffset+iMaxLength) &&
- (this.getByteAt(i)>0);i++,j++) {
- aStr[j] = String.fromCharCode(this.getByteAt(i));
- }
- return aStr.join("");
- };
-
- // Added
- this.getDoubleAt = function(iOffset) {
- var iByte1 = this.getByteAt(iOffset),
- iByte2 = this.getByteAt(iOffset + 1),
- iByte3 = this.getByteAt(iOffset + 2),
- iByte4 = this.getByteAt(iOffset + 3),
- iByte5 = this.getByteAt(iOffset + 4),
- iByte6 = this.getByteAt(iOffset + 5),
- iByte7 = this.getByteAt(iOffset + 6),
- iByte8 = this.getByteAt(iOffset + 7);
- var iSign=iByte8 >> 7;
- var iExpRaw=((iByte8 & 0x7F)<< 4) + (iByte7 >> 4);
- var iMantHi=((((((iByte7 & 0x0F) << 8) + iByte6) << 8) + iByte5) << 8) + iByte4;
- var iMantLo=((((iByte3) << 8) + iByte2) << 8) + iByte1;
-
- if (iExpRaw===0) return 0.0;
- if (iExpRaw===0x7ff) return undefined;
-
- var iExp=(iExpRaw & 0x7FF)-1023;
-
- var dDouble = ((iSign===1)?-1:1)*Math.pow(2,iExp)*(1.0 + iMantLo*doubleMantExpLo + iMantHi*doubleMantExpHi);
- return dDouble;
- };
- // added
- // Extracts only 4 bytes out of 8, loosing in precision (20 bit mantissa)
- this.getFastDoubleAt = function(iOffset) {
- var iByte5 = this.getByteAt(iOffset + 4),
- iByte6 = this.getByteAt(iOffset + 5),
- iByte7 = this.getByteAt(iOffset + 6),
- iByte8 = this.getByteAt(iOffset + 7);
- var iSign=iByte8 >> 7;
- var iExpRaw=((iByte8 & 0x7F)<< 4) + (iByte7 >> 4);
- var iMant=((((iByte7 & 0x0F) << 8) + iByte6) << 8) + iByte5;
-
- if (iExpRaw===0) return 0.0;
- if (iExpRaw===0x7ff) return undefined;
-
- var iExp=(iExpRaw & 0x7FF)-1023;
-
- var dDouble = ((iSign===1)?-1:1)*Math.pow(2,iExp)*(1.0 + iMant*doubleMantExpFast);
- return dDouble;
- };
-
- this.getCharAt = function(iOffset) {
- return String.fromCharCode(this.getByteAt(iOffset));
- };
-};
-
jarmon.downloadBinary = function(url) {
- /**
- * Download a binary file asynchronously using the jQuery.ajax function
- *
- * @method downloadBinary
- * @param url {String} The url of the object to be downloaded
- * @return {Object} A deferred which will callback with an instance of
- * javascriptrrd.BinaryFile
- */
var d = jQuery.Deferred();
$.ajax({
url: url,
@@ -253,15 +61,11 @@ jarmon.downloadBinary = function(url) {
delete this._nativeXhr;
},
success: function(data, textStatus, jqXHR) {
- // In IE we return the responseBody
- if(typeof(this._nativeXhr.responseBody) !== 'undefined') {
- d.resolve(
- new jarmon.BinaryFile(
- jarmon.GetIEByteArray_ByteStr(
- this._nativeXhr.responseBody)));
- } else {
- d.resolve(new jarmon.BinaryFile(data));
+ var response = this._nativeXhr.responseBody // for IE
+ if (response==undefined) {
+ response=this._nativeXhr.responseText // for standards-compliant browsers
}
+ d.resolve(new BinaryFile(response));
},
error: function(xhr, textStatus, errorThrown) {
d.reject(new Error(textStatus + ':' + xhr.status));
@@ -271,16 +75,18 @@ jarmon.downloadBinary = function(url) {
};
+/**
+ * Copied from jquery.flot.js and modified to allow timezone
+ * adjustment.
+ *
+ * @method
+ * @requires Flot
+ *
+ * @param v {number} The timestamp to be formatted
+ * @param axis {Object} A hash containing information about the time axis
+ * @return {string} The formatted datetime string
+ **/
jarmon.localTimeFormatter = function (v, axis) {
- /**
- * Copied from jquery.flot.js and modified to allow timezone
- * adjustment.
- *
- * @method localTimeFormatter
- * @param v {Number} The timestamp to be formatted
- * @param axis {Object} A hash containing information about the time axis
- * @return {String} The formatted datetime string
- **/
// map of app. size of time units in milliseconds
var timeUnitSize = {
"second": 1000,
@@ -329,44 +135,37 @@ jarmon.localTimeFormatter = function (v, axis) {
/**
- * A wrapper around an instance of javascriptrrd.RRDFile which provides a
- * convenient way to query the RRDFile based on time range, RRD data source (DS)
- * and RRD consolidation function (CF).
+ * A wrapper around an instance of {@link module:javascriptRRD/rrdFile.RRDFile} which
+ * provides a convenient way to query the RRDFile based on time range, RRD data
+ * source (DS) and RRD consolidation function (CF).
*
- * @class jarmon.RrdQuery
* @constructor
- * @param rrd {Object} A javascriptrrd.RRDFile
- * @param unit {String} The unit symbol for this data series
- * @param transformer {Function} A callable which performs a
- * tranfsformation of the values returned from the RRD file.
+ * @param rrd {module:javascriptRRD/rrdFile.RRDFile}
+ * @param unit {string} The unit symbol for this data series
**/
-jarmon.RrdQuery = function(rrd, unit, transformer) {
+jarmon.RrdQuery = function(rrd, unit) {
this.rrd = rrd;
this.unit = unit;
- if(typeof(transformer) !== 'undefined') {
- this.transformer = transformer;
- } else {
- this.transformer = function(v) {return v;};
- }
};
+/**
+ * Generate a Flot compatible data object containing rows between start and end
+ * time. The rows are taken from the first RRA whose data spans the requested
+ * time range.
+ *
+ * @method
+ * @param startTimeJs {number} start timestamp in microseconds
+ * @param endTimeJs {number} end timestamp in microseconds
+ * @param [dsId=0] {(string|number)} identifier of the RRD datasource
+ * @param [cfName="AVERAGE"] {string} The name of an RRD consolidation function
+ * (CF) eg AVERAGE, MIN, MAX
+ * @param {function} [transformer=function(v){return v}] A callable which
+ * performs a transformation of the values returned from the RRD file.
+ * @return {module:Flot.data} A Flot compatible data series
+ * eg `{label: '', data: [], unit: ''}`
+ **/
jarmon.RrdQuery.prototype.getData = function(startTimeJs, endTimeJs,
- dsId, cfName) {
- /**
- * Generate a Flot compatible data object containing rows between start and
- * end time. The rows are taken from the first RRA whose data spans the
- * requested time range.
- *
- * @method getData
- * @param startTimeJs {Number} start timestamp in microseconds
- * @param endTimeJs {Number} end timestamp in microseconds
- * @param dsId {Variant} identifier of the RRD datasource (string or number)
- * @param cfName {String} The name of an RRD consolidation function (CF)
- * eg AVERAGE, MIN, MAX
- * @return {Object} A Flot compatible data series
- * eg label: '', data: [], unit: ''
- **/
-
+ dsId, cfName, transformer) {
if (startTimeJs >= endTimeJs) {
throw RangeError(
['starttime must be less than endtime.',
@@ -392,6 +191,10 @@ jarmon.RrdQuery.prototype.getData = function(startTimeJs, endTimeJs,
cfName = 'AVERAGE';
}
+ if(typeof(transformer) === 'undefined') {
+ transformer = function(v) {return v;};
+ }
+
var rra, step, rraRowCount, lastRowTime, firstRowTime;
for(var i=0; i<this.rrd.getNrRRAs(); i++) {
@@ -450,7 +253,7 @@ jarmon.RrdQuery.prototype.getData = function(startTimeJs, endTimeJs,
var val;
var timestamp = startRowTime;
for(i=startRowIndex; i<endRowIndex; i++) {
- val = this.transformer(rra.getEl(i, dsIndex));
+ val = transformer(rra.getEl(i, dsIndex));
flotData.push([timestamp*1000.0, val]);
timestamp += step;
}
@@ -466,31 +269,29 @@ jarmon.RrdQuery.prototype.getData = function(startTimeJs, endTimeJs,
};
+/**
+ * Return a list of RRD Data Source names
+ *
+ * @method
+ * @return {Array.<string>} An array of DS names.
+ **/
jarmon.RrdQuery.prototype.getDSNames = function() {
- /**
- * Return a list of RRD Data Source names
- *
- * @method getDSNames
- * @return {Array} An array of DS names.
- **/
return this.rrd.getDSNames();
};
/**
- * A wrapper around RrdQuery which provides asynchronous access to the data in a
- * remote RRD file.
+ * A wrapper around {@link jarmon.RrdQuery} which provides asynchronous access
+ * to the data in a remote RRD file.
*
- * @class jarmon.RrdQueryRemote
* @constructor
- * @param url {String} The url of a remote RRD file
- * @param unit {String} The unit suffix of this data eg 'bit/sec'
- * @param downloader {Function} A callable which returns a Deferred and calls
- * back with a javascriptrrd.BinaryFile when it has downloaded.
- * @param transformer {Function} A callable which performs a
- * tranfsformation of the values returned from the RRD file.
+ * @requires javascriptRRD/rrdFile
+ *
+ * @param url {string} The url of a remote RRD file
+ * @param unit {string} The unit suffix of this data eg 'bit/sec'
+ * @param [downloader=jarmon.downloadBinary] {jarmon.RrdQueryRemote.Downloader}
**/
-jarmon.RrdQueryRemote = function(url, unit, downloader, transformer) {
+jarmon.RrdQueryRemote = function(url, unit, downloader) {
this.url = url;
this.unit = unit;
if(typeof(downloader) == 'undefined') {
@@ -498,13 +299,22 @@ jarmon.RrdQueryRemote = function(url, unit, downloader, transformer) {
} else {
this.downloader = downloader;
}
- this.transformer = transformer;
this.lastUpdate = 0;
this._download = null;
};
-
+/**
+ * Asynchronously call a method on the underlying {@link jarmon.RrdQuery}. Think of it
+ * as an async .apply().
+ *
+ * @method
+ * @private
+ * @param methodName {string}
+ * @param args {Array}
+ * @return {module:jQuery.Deferred} A Deferred that calls .methodName(args...) on the
+ * underlying {@link jarmon.RrdQuery}.
+ */
jarmon.RrdQueryRemote.prototype._callRemote = function(methodName, args) {
// Download the rrd if there has never been a download and don't start
// another download if one is already in progress.
@@ -514,7 +324,7 @@ jarmon.RrdQueryRemote.prototype._callRemote = function(methodName, args) {
}
// Set up a deferred which will call getData on the local RrdQuery object
- // returning a flot compatible data object to the caller.
+ // returning a Flot compatible data object to the caller.
var ret = jQuery.Deferred();
// Add a pair of callbacks to the current download which will callback the
@@ -541,7 +351,7 @@ jarmon.RrdQueryRemote.prototype._callRemote = function(methodName, args) {
var rrd = new RRDFile(res);
self.lastUpdate = rrd.getLastUpdate();
- var rq = new jarmon.RrdQuery(rrd, self.unit, self.transformer);
+ var rq = new jarmon.RrdQuery(rrd, self.unit);
try {
ret.resolve(rq[methodName].apply(rq, args));
} catch(e) {
@@ -555,31 +365,37 @@ jarmon.RrdQueryRemote.prototype._callRemote = function(methodName, args) {
};
+/**
+ * Return a Flot compatible data series asynchronously.
+ *
+ * @method
+ * @param startTime {number} The start timestamp
+ * @param endTime {number} The end timestamp
+ * @param [dsId=0] {(string|number)} identifier of the RRD datasource (string or number)
+ * @param [cfName="AVERAGE"] {string} The name of an RRD consolidation function
+ * (CF) eg AVERAGE, MIN, MAX
+ * @param {function} [transformer=function(v){return v}] A callable which
+ * performs a tranfsformation of the values returned from the RRD file.
+ * @return {module:jQuery.Deferred} A Deferred which calls back with a Flot data
+ * series.
+ **/
jarmon.RrdQueryRemote.prototype.getData = function(startTime, endTime,
- dsId, cfName) {
- /**
- * Return a Flot compatible data series asynchronously.
- *
- * @method getData
- * @param startTime {Number} The start timestamp
- * @param endTime {Number} The end timestamp
- * @param dsId {Variant} identifier of the RRD datasource (string or number)
- * @return {Object} A Deferred which calls back with a flot data series.
- **/
+ dsId, cfName, transformer) {
if(this.lastUpdate < endTime/1000) {
this._download = null;
}
- return this._callRemote('getData', [startTime, endTime, dsId, cfName]);
+ return this._callRemote('getData', [startTime, endTime, dsId, cfName, transformer]);
};
+/**
+ * Return a list of RRD Data Source names
+ *
+ * @method
+ * @return {module:jquery.Deferred} A Deferred which calls back with an array of
+ * DS names.
+ **/
jarmon.RrdQueryRemote.prototype.getDSNames = function() {
- /**
- * Return a list of RRD Data Source names
- *
- * @method getDSNames
- * @return {Object} A Deferred which calls back with an array of DS names.
- **/
return this._callRemote('getDSNames');
};
@@ -588,39 +404,45 @@ jarmon.RrdQueryRemote.prototype.getDSNames = function() {
* Wraps RrdQueryRemote to provide access to a different RRD DSs within a
* single RrdDataSource.
*
- * @class jarmon.RrdQueryDsProxy
* @constructor
- * @param rrdQuery {Object} An RrdQueryRemote instance
- * @param dsId {Variant} identifier of the RRD datasource (string or number)
+ * @param rrdQuery {jarmon.RrdQueryRemote} An RrdQueryRemote instance
+ * @param dsId {(string|number)} identifier of the RRD datasource (string or number)
**/
-jarmon.RrdQueryDsProxy = function(rrdQuery, dsId) {
+jarmon.RrdQueryDsProxy = function(rrdQuery, dsId, transformer) {
this.rrdQuery = rrdQuery;
this.dsId = dsId;
this.unit = rrdQuery.unit;
+ this.transformer = transformer;
};
+/**
+ * Call I{@link RrdQueryRemote.getData} with a particular dsId
+ *
+ * @method
+ * @param startTime {number} A unix timestamp marking the start time
+ * @param endTime {number} A unix timestamp marking the start time
+ * @return {module:jQuery.Deferred} A Deferred which calls back with a Flot data
+ * series.
+ **/
jarmon.RrdQueryDsProxy.prototype.getData = function(startTime, endTime) {
- /**
- * Call I{RrdQueryRemote.getData} with a particular dsId
- *
- * @method getData
- * @param startTime {Number} A unix timestamp marking the start time
- * @param endTime {Number} A unix timestamp marking the start time
- * @return {Object} A Deferred which calls back with a flot data series.
- **/
- return this.rrdQuery.getData(startTime, endTime, this.dsId);
+ return this.rrdQuery.getData(startTime, endTime, this.dsId, undefined, this.transformer);
};
/**
* A class for creating a Flot chart from a series of RRD Queries
*
- * @class jarmon.Chart
* @constructor
- * @param template {Object} A jQuery containing a single element into which the
- * chart will be drawn
- * @param options {Object} Flot options which control how the chart should be
- * drawn.
+ * @requires jQuery
+ * @requires Flot
+ *
+ * @param template {module:jQuery.jQuery} A jQuery containing a single element
+ * into which the chart will be drawn
+ * @param recipe {Object}
+ * @param recipe.title {string}
+ * @param recipe.data {Array}
+ * @param recipe.options {module:Flot.options} Flot options which control how
+ * the chart should be drawn.
**/
jarmon.Chart = function(template, recipe, downloader) {
this.template = template;
@@ -643,6 +465,11 @@ jarmon.Chart = function(template, recipe, downloader) {
self.draw();
});
+ /* @todo The user should be able to override this with `ticks`, `tickSize`,
+ * or `minTickSize`.
+ * @todo Look in to implementing this as a tickFormatter, and letting Flot
+ * take care of scaling.
+ */
this.options.yaxis.ticks = function(axis) {
/*
* Choose a suitable SI multiplier based on the min and max values from
@@ -660,7 +487,7 @@ jarmon.Chart = function(template, recipe, downloader) {
};
var si = 0;
while(true) {
- if( Math.pow(1000, si+1)*0.9 > axis.max ) {
+ if( Math.pow(1000, si+1)*0.9 > (axis.max - axis.min) ) {
break;
}
si++;
@@ -670,7 +497,7 @@ jarmon.Chart = function(template, recipe, downloader) {
var maxVal = axis.max/Math.pow(1000, si);
var stepSizes = [0.01, 0.05, 0.1, 0.25, 0.5,
- 1, 5, 10, 25, 50, 100, 250];
+ 1, 2, 5, 10, 20, 25, 50, 100, 250];
var realStep = (maxVal - minVal)/5.0;
var stepSize, decimalPlaces = 0;
@@ -705,6 +532,9 @@ jarmon.Chart = function(template, recipe, downloader) {
};
};
+/**
+ * @method
+ */
jarmon.Chart.prototype.setup = function() {
this.template.find('.title').text(this.recipe.title);
this.data = [];
@@ -724,38 +554,38 @@ jarmon.Chart.prototype.setup = function() {
if(typeof(dataDict[rrd]) === 'undefined') {
dataDict[rrd] = new jarmon.RrdQueryRemote(
- rrd, unit, this.downloader, transformer);
+ rrd, unit, this.downloader);
}
- this.addData(label, new jarmon.RrdQueryDsProxy(dataDict[rrd], ds));
+ this.addData(label, new jarmon.RrdQueryDsProxy(dataDict[rrd], ds, transformer));
}
};
+/**
+ * Add details of a remote RRD data source whose data will be added to this
+ * chart.
+ *
+ * @method
+ * @param label {string} The label for this data which will be shown in the
+ * chart legend
+ * @param db {string} The url of the remote RRD database
+ * @param [enabled=true] {boolean} true if you want this data plotted on the chart,
+ * false if not.
+ **/
jarmon.Chart.prototype.addData = function(label, db, enabled) {
- /**
- * Add details of a remote RRD data source whose data will be added to this
- * chart.
- *
- * @method addData
- * @param label {String} The label for this data which will be shown in the
- * chart legend
- * @param db {String} The url of the remote RRD database
- * @param enabled {Boolean} true if you want this data plotted on the chart,
- * false if not.
- **/
if(typeof(enabled) === 'undefined') {
enabled = true;
}
this.data.push([label, db, enabled]);
};
+/**
+ * Enable / Disable a single data source
+ *
+ * @method
+ * @param label {string} The label of the data source to be enabled /
+ * disabled.
+ **/
jarmon.Chart.prototype.switchDataEnabled = function(label) {
- /**
- * Enable / Disable a single data source
- *
- * @method switchDataEnabled
- * @param label {String} The label of the data source to be enabled /
- * disabled.
- **/
for(var i=0; i<this.data.length; i++) {
if(this.data[i][0] === label) {
this.data[i][2] = !this.data[i][2];
@@ -763,29 +593,31 @@ jarmon.Chart.prototype.switchDataEnabled = function(label) {
}
};
+/**
+ * Alter the time range of this chart and redraw
+ *
+ * @method
+ * @param startTime {number} The start timestamp
+ * @param endTime {number} The end timestamp
+ * @return {Object} The same thing as .draw() returns
+ **/
jarmon.Chart.prototype.setTimeRange = function(startTime, endTime) {
- /**
- * Alter the time range of this chart and redraw
- *
- * @method setTimeRange
- * @param startTime {Number} The start timestamp
- * @param endTime {Number} The end timestamp
- **/
this.startTime = startTime;
this.endTime = endTime;
return this.draw();
};
+/**
+ * Draw the chart
+ *
+ * - A 'chart_loading' event is triggered before the data is requested
+ * - A 'chart_loaded' event is triggered when the chart has been drawn
+ *
+ * @method
+ * @return {module:jQuery.Deferred} A Deferred which calls back with the chart data
+ * when the chart has been rendered.
+ **/
jarmon.Chart.prototype.draw = function() {
- /**
- * Draw the chart
- * A 'chart_loading' event is triggered before the data is requested
- * A 'chart_loaded' event is triggered when the chart has been drawn
- *
- * @method draw
- * @return {Object} A Deferred which calls back with the chart data when
- * the chart has been rendered.
- **/
var self = this;
this.template.addClass('loading');
@@ -839,6 +671,7 @@ jarmon.Chart.prototype.draw = function() {
self.template.find('.chart').empty().show(),
data, self.options);
+ // @todo Make this styleable
var yaxisUnitLabel = $('<div>')
.text(self.siPrefix + unit)
.css({'width': '100px',
@@ -848,7 +681,7 @@ jarmon.Chart.prototype.draw = function() {
'text-align': 'right'});
self.template.find('.chart').append(yaxisUnitLabel);
- // Manipulate and move the flot generated legend to an
+ // Manipulate and move the Flot generated legend to an
// alternative position.
// The default legend is formatted as an HTML table, so we
// grab the contents of the cells and turn them into
@@ -857,6 +690,10 @@ jarmon.Chart.prototype.draw = function() {
// table is useful as it generates an optimum label element
// width which we can copy to the new divs + a little extra
// to accomodate the color box
+ //
+ // @todo This seems super hacky
+ // @todo Look in to implementing this using Flot
+ // `.legend.container`.
var legend = self.template.find('.graph-legend').show();
legend.empty();
self.template.find('.legendLabel').each(
@@ -908,8 +745,12 @@ jarmon.Chart.prototype.draw = function() {
/**
* Generate a form through which to choose a data source from a remote RRD file
*
- * @class jarmon.RrdChooser
+ * @todo Create an example that uses this.
+ *
* @constructor
+ * @requires jQuery
+ *
+ * @param $tpl {module:jQuery.jQuery} jQuery object for the DOM node to attach to.
**/
jarmon.RrdChooser = function($tpl) {
this.$tpl = $tpl;
@@ -921,6 +762,9 @@ jarmon.RrdChooser = function($tpl) {
};
};
+/**
+ * @method
+ */
jarmon.RrdChooser.prototype.drawRrdUrlForm = function() {
var self = this;
this.$tpl.empty();
@@ -980,6 +824,9 @@ jarmon.RrdChooser.prototype.drawRrdUrlForm = function() {
).appendTo(this.$tpl);
};
+/**
+ * @method
+ */
jarmon.RrdChooser.prototype.drawDsLabelForm = function() {
var self = this;
this.$tpl.empty();
@@ -1024,6 +871,9 @@ jarmon.RrdChooser.prototype.drawDsLabelForm = function() {
};
+/**
+ * @method
+ */
jarmon.RrdChooser.prototype.drawDsSummary = function() {
var self = this;
this.$tpl.empty();
@@ -1046,6 +896,15 @@ jarmon.RrdChooser.prototype.drawDsSummary = function() {
};
+/**
+ * UI element to toggle datasources in a graph.
+ *
+ * @constructor
+ * @requires jQuery
+ *
+ * @param $tpl {module:jQuery.jQuery}
+ * @param chart {jarmon.Chart}
+ */
jarmon.ChartEditor = function($tpl, chart) {
this.$tpl = $tpl;
this.chart = chart;
@@ -1103,6 +962,10 @@ jarmon.ChartEditor = function($tpl, chart) {
);
};
+
+/**
+ * @method
+ */
jarmon.ChartEditor.prototype.draw = function() {
var self = this;
this.$tpl.empty();
@@ -1166,6 +1029,12 @@ jarmon.ChartEditor.prototype.draw = function() {
};
+/**
+ * @method
+ * @private
+ * @param $row {module:jQuery.jQuery}
+ * @return {module:jQuery.jQuery}
+ */
jarmon.ChartEditor.prototype._extractRowValues = function($row) {
return $row.find('input[type=text]').map(
function(i, el) {
@@ -1175,6 +1044,11 @@ jarmon.ChartEditor.prototype._extractRowValues = function($row) {
};
+/**
+ * @method
+ * @private
+ * @param record {Array}
+ */
jarmon.ChartEditor.prototype._addDatasourceRow = function(record) {
$('<tr/>').append(
$('<td/>').append(
@@ -1200,9 +1074,33 @@ jarmon.ChartEditor.prototype._addDatasourceRow = function(record) {
};
+/**
+ *
+ * The `recipe` is an array of `["Tab Name", [placeholder-name-list]]`
+ * pairs. For example:
+ *
+ * recipe = [
+ * ["System", ["cpu", "memory", "load"]],
+ * ["Network", ["interface"]]
+ * ];
+ *
+ * @constructor
+ * @requires jQuery
+ * @requires jQueryTools/tabs
+ * @requires jQueryTools/toolbox/history
+ *
+ * @param $tpl {module:jQuery.jQuery}
+ * @param recipe {Array.<Array.<string, Array.<string>>>} An array of
+ * `["Tab Name", [placeholder-name-list]]` pairs.
+ */
jarmon.TabbedInterface = function($tpl, recipe) {
this.$tpl = $tpl;
this.recipe = recipe;
+ /**
+ * An array of `["placeholder-name", placeholder]` pairs.
+ * @member
+ * @type {Array.<Array.<string, module:jQuery.jQuery>>}
+ */
this.placeholders = [];
this.$tabBar = $('<ul/>', {'class': 'css-tabs'}).appendTo($tpl);
@@ -1223,6 +1121,11 @@ jarmon.TabbedInterface = function($tpl, recipe) {
this.setup();
};
+/**
+ * @method
+ * @param tabName {string}
+ * @return {module:jQuery.jQuery} A <div> that is the contents of the tab panel.
+ */
jarmon.TabbedInterface.prototype.newTab = function(tabName) {
// Add a tab
$('<li/>').append(
@@ -1235,6 +1138,9 @@ jarmon.TabbedInterface.prototype.newTab = function(tabName) {
return $placeholder;
};
+/**
+ * @method
+ */
jarmon.TabbedInterface.prototype.setup = function() {
// Destroy then re-initialise the jquerytools tabs plugin
var api = this.$tabBar.data("tabs");
@@ -1244,15 +1150,30 @@ jarmon.TabbedInterface.prototype.setup = function() {
this.$tabBar.tabs(this.$tabPanels.children('div'), {history: true});
};
+/**
+ * Setup chart date range controls and all charts
+ *
+ * @todo Figure out how to allow `$chartTemplate` to be an HTML5 <template>
+ * element.
+ *
+ * @method
+ * @requires jQuery
+ *
+ * @param $chartTemplate {module:jQuery.jQuery} See {@link jarmon.Chart}
+ * @param chartRecipes {Object.<string, recipe>} A map of
+ * placeholder-names (see {@link jarmon.TabbedInterface})
+ * to chart recipes (see {@link jarmon.Chart})
+ * @param $tabTemplate {module:jQuery.jQuery} See {@link jarmon.TabbedInterface}
+ * @param tabRecipes {Array} See {@link jarmon.TabbedInterface}
+ * @param $controlPanelTemplate {module:jQuery.jQuery}
+ * @return {Array.<Array.<jarmon.Chart>, jarmon.TabbedInterface, jarmon.ChartCoordinator>}
+ **/
jarmon.buildTabbedChartUi = function ($chartTemplate, chartRecipes,
$tabTemplate, tabRecipes,
$controlPanelTemplate) {
- /**
- * Setup chart date range controls and all charts
- **/
var p = new jarmon.Parallimiter(2);
function serialDownloader(url) {
- return p.addCallable(jarmon.downloadBinary, [url]);
+ return p.addCallable(function(){ return jarmon.downloadBinary(url); });
}
var ti = new jarmon.TabbedInterface($tabTemplate, tabRecipes);
@@ -1297,7 +1218,7 @@ jarmon.buildTabbedChartUi = function ($chartTemplate, chartRecipes,
function(e) {
var cc = e.data.cc;
// XXX: Hack to give the tab just enough time to become visible
- // so that flot can calculate chart dimensions.
+ // so that Flot can calculate chart dimensions.
window.clearTimeout(cc.t);
cc.t = window.setTimeout(
function() {
@@ -1307,13 +1228,23 @@ jarmon.buildTabbedChartUi = function ($chartTemplate, chartRecipes,
);
// Initialise all the charts
- cc.init();
+ cc.update();
return [charts, ti, cc];
};
-// Options common to all the chart on this page
+/**
+ * Options common to all the chart on this page
+ *
+ * This is not used by Jarmon internally; it is here for convenience to use as
+ * part of chart recipes passed to {@linkcode jarmon.Chart new jarmon.Chart} (or
+ * {@linkcode jarmon.buildTabbedChartUi}).
+ *
+ * @static
+ * @default
+ * @type module:Flot.options
+ */
jarmon.Chart.BASE_OPTIONS = {
grid: {
clickable: false,
@@ -1346,7 +1277,17 @@ jarmon.Chart.BASE_OPTIONS = {
}
};
-// Extra options to generate a stacked chart
+/**
+ * Extra options to generate a stacked chart
+ *
+ * This is not used by Jarmon internally; it is here for convenience to use as
+ * part of chart recipes passed to {@linkcode jarmon.Chart new jarmon.Chart} (or
+ * {@linkcode jarmon.buildTabbedChartUi}).
+ *
+ * @static
+ * @default
+ * @type module:Flot.options
+ */
jarmon.Chart.STACKED_OPTIONS = {
series: {
stack: true,
@@ -1357,7 +1298,19 @@ jarmon.Chart.STACKED_OPTIONS = {
};
-// A selection of useful time ranges
+/**
+ * A selection of useful time ranges
+ *
+ * For the most part, this is an array of `["human description", function]`
+ * pairs. However, if a third member of a tuple is `===true`, then that tuple
+ * is used as the default option. If no tuple is identified as the default this
+ * way, then the default is the first tuple.
+ *
+ * @todo This should probably be a member of jarmon.ChartCoordinator.
+ *
+ * @member
+ * @default
+ */
jarmon.timeRangeShortcuts = [
['last hour', function(now) { return [now-60*60*1000*1, now]; }],
['last 3 hours', function(now) { return [now-60*60*1000*3, now]; }],
@@ -1374,10 +1327,39 @@ jarmon.timeRangeShortcuts = [
* Presents the user with a form and a timeline with which they can choose a
* time range and co-ordinates the refreshing of a series of charts.
*
- * @class jarmon.ChartCoordinator
+ * The `ui` parameter should be a jQuery for a DOM node containing elements
+ * matching these selectors:
+ *
+ * - `select[name="shortcuts"]` : An empty `<select>` to be populated with
+ * {@linkcode jarmon.timeRangeShortcuts}
+ * - `[name="from"]` ; An input to select the start datetime
+ * - `[name="to"]` : An input to select the end datetime
+ * - `[name="tzoffset"]` : An input to select the timezone
+ * - `[name="action"]` : A button to update the charts
+ * - `.range-preview` : Placeholder for a Flot chart
+ *
+ * The `[name="to"]` and `[name="from"]` inputs should behave somewhat like
+ * WHATWG HTML (revision 2016-12-12) `type=datetime-local` inputs with `step=1`.
+ * Because `type=datetime-local` is not currently in a W3C spec, and not all
+ * common browsers implement it, and polyfills vary in quality; Jarmon avoids
+ * interacting with it too deeply, placing only a few requirements placed on the
+ * implementation:
+ *
+ * - The value MUST be settable via `el.value = string` where `string` is of the
+ * format `%Y-%m-%dT%H:%M:%S`.
+ * - The value MUST be gettable via `Date.parse(el.value+'Z')`.
+ * - The user interface SHOULD prohibit the user from selecting a value that is
+ * before than the `min` attribute, which is in the format
+ * `%Y-%m-%dT%H:%M:%S`.
+ * - The user interface SHOULD prohibit the user from selecting a value that is
+ * after than the `max` attribute, which is in the format `%Y-%m-%dT%H:%M:%S`.
+ *
* @constructor
- * @param ui {Object} A one element jQuery containing an input form and
- * placeholders for the timeline and for the series of charts.
+ * @requires jQuery
+ * @requires Flot
+ *
+ * @param ui {module:jQuery.jQuery} A one element jQuery containing an input
+ * form and placeholders for the timeline and for the series of charts.
**/
jarmon.ChartCoordinator = function(ui, charts) {
var self = this;
@@ -1401,93 +1383,98 @@ jarmon.ChartCoordinator = function(ui, charts) {
}
};
- var options = this.ui.find('select[name="from_standard"]');
- for(var i=0; i<jarmon.timeRangeShortcuts.length; i++) {
- options.append($('<option />').text(jarmon.timeRangeShortcuts[i][0]));
- }
+ this.inputs = {
+ shortcuts: this.ui.find('select[name="shortcuts"]'),
+ from: this.ui.find('[name="from"]'),
+ to: this.ui.find('[name="to"]'),
+ tzoffset: this.ui.find('[name="tzoffset"]'),
+ action: this.ui.find('[name="action"]')
+ };
+
+ // DOM manipulation ////////////////////////////////////////////////////////
+
+ // (This is put in a closure to avoid leaking variables and making it hard
+ // for me to reason about the code.)
+ (function(options, tzoffsetEl) {
+ // Set up shortcuts
+ var option;
+ for(var i=0; i<jarmon.timeRangeShortcuts.length; i++) {
+ option = $('<option />').text(jarmon.timeRangeShortcuts[i][0])
+ if (jarmon.timeRangeShortcuts[i][2] === true) {
+ option[0].setAttribute('selected', 'selected');
+ }
+ options.append(option);
+ }
+ // Append a custom option for when the user selects an area of the graph
+ options.append($('<option />').text('custom'));
+
+ // Populate a list of tzoffset options if the element is present in the
+ // template as a select list
+ if (tzoffsetEl.is('select')) {
+ var label, val;
+ for(i=-12; i<=12; i++) {
+ label = 'UTC';
+ val = i;
+ if(val >= 0) {
+ label += ' + ';
+ } else {
+ label += ' - ';
+ }
+ val = Math.abs(val).toString();
+ if(val.length === 1) {
+ label += '0';
+ }
+ label += val + '00';
+ tzoffsetEl.append(
+ $('<option />').attr('value', i*60*60*1000).text(label));
+ }
+ }
- // Append a custom option for when the user selects an area of the graph
- options.append($('<option />').text('custom'));
- // Select the first shortcut by default
- options.val(jarmon.timeRangeShortcuts[0][0]);
+ // Default timezone offset based on localtime
+ var tzoffset = -1 * (new Date()).getTimezoneOffset() * 60 * 1000;
+ tzoffsetEl.val(tzoffset);
+ })(this.inputs.shortcuts, this.inputs.tzoffset);
- options.bind('change', function(e) {
+ // Event bindings //////////////////////////////////////////////////////////
+
+ this.inputs.shortcuts.bind('change', function(e) {
// No point in updating if the user chose custom.
if($(this).val() !== 'custom') {
self.update();
}
});
- // Update the time ranges and redraw charts when the custom datetime inputs
- // are changed
- this.ui.find('[name="from_custom"]').bind('change',
+ this.inputs.from.bind('change',
function(e) {
- self.ui.find('[name="from_standard"]').val('custom');
- var tzoffset = parseInt(self.ui.find('[name="tzoffset"]').val(), 10);
- self.setTimeRange(
- new Date(this.value + ' UTC').getTime() - tzoffset, null);
+ self.inputs.shortcuts.val('custom');
self.update();
}
);
- this.ui.find('[name="to_custom"]').bind('change',
+ this.inputs.to.bind('change',
function(e) {
- self.ui.find('[name="from_standard"]').val('custom');
- var tzoffset = parseInt(self.ui.find('[name="tzoffset"]').val(), 10);
- self.setTimeRange(
- null, new Date(this.value + ' UTC').getTime() - tzoffset);
+ self.inputs.shortcuts.val('custom');
self.update();
}
);
- // Populate a list of tzoffset options if the element is present in the
- // template as a select list
- var tzoffsetEl = this.ui.find('[name="tzoffset"]');
- if(tzoffsetEl.is('select')) {
- var label, val;
- for(i=-12; i<=12; i++) {
- label = 'UTC';
- val = i;
- if(val >= 0) {
- label += ' + ';
- } else {
- label += ' - ';
- }
- val = Math.abs(val).toString();
- if(val.length === 1) {
- label += '0';
- }
- label += val + '00';
- tzoffsetEl.append(
- $('<option />').attr('value', i*60*60*1000).text(label));
- }
-
- tzoffsetEl.bind('change', function(e) {
- self.update();
- });
- }
-
- // Default timezone offset based on localtime
- var tzoffset = -1 * new Date().getTimezoneOffset() * 60 * 1000;
- tzoffsetEl.val(tzoffset);
+ this.inputs.tzoffset.bind('change', function(e) {
+ self.update();
+ });
- // Update the time ranges and redraw charts when the form is submitted
- this.ui.find('[name="action"]').bind('click', function(e) {
+ this.inputs.action.bind('click', function(e) {
self.update();
return false;
});
// When a selection is made on the range timeline, or any of my charts
// redraw all the charts.
- $(document).bind(
- 'plotselected',
- {self: this},
+ $(document).bind('plotselected', {},
function(e, ranges) {
- var self = e.data.self;
var eventSourceIsMine = false;
// plotselected event may be from my range selector chart or
- if( self.ui.has(e.target) ) {
+ if (self.ui.has(e.target) ) {
eventSourceIsMine = true;
} else {
// ...it may come from one of the charts under my supervision
@@ -1500,126 +1487,40 @@ jarmon.ChartCoordinator = function(ui, charts) {
}
if(eventSourceIsMine) {
- // Update the prepared time range select box to value "custom"
- self.ui.find('[name="from_standard"]').val('custom');
-
- // Update all my charts
self.setTimeRange(ranges.xaxis.from, ranges.xaxis.to);
- self.update();
}
}
);
-
- // Add dhtml calendars to the date input fields
- this.ui.find(".timerange_control img")
- .dateinput({
- 'format': 'dd mmm yyyy 00:00:00',
- 'max': +1,
- 'css': {'input': 'jquerytools_date'}})
- .bind('onBeforeShow', function(e) {
- var classes = $(this).attr('class').split(' ');
- var currentDate, input_selector;
- for(var i=0; i<=classes.length; i++) {
- input_selector = '[name="' + classes[i] + '"]';
- // Look for a neighboring input element whose name matches the
- // class name of this calendar
- // Parse the value as a date if the returned date.getTime
- // returns NaN we know it's an invalid date
- // XXX: is there a better way to check for valid date?
- currentDate = new Date($(this).siblings(input_selector).val());
- if(! isNaN(currentDate.getTime()) ) {
- $(this).data(
- 'dateinput')._initial_val = currentDate.getTime();
- $(this).data('dateinput').setValue(currentDate);
- break;
- }
- }
- })
- .bind(
- 'onHide',
- {self: this},
- function(e) {
- var self = e.data.self;
- // Called after a calendar date has been chosen by the user.
- // Use the sibling selector that we generated above
- // before opening the calendar
- var oldStamp = $(this).data('dateinput')._initial_val;
- var newDate = $(this).data('dateinput').getValue();
- // Only update the form field if the date has changed.
- if(oldStamp !== newDate.getTime()) {
- // Update the prepared time range select box to
- // value "custom"
- self.ui.find('[name="from_standard"]').val('custom');
- var from = null;
- var to = null;
- if($(this).hasClass('from_custom')){
- from = newDate.getTime();
- } else {
- to = newDate.getTime();
- }
- self.setTimeRange(from, to);
- self.update();
- }
- });
-
- // Avoid overlaps between the calendars
- // XXX: This is a bit of hack, what if there's more than one set of calendar
- // controls on a page?
- this.ui.find(".timerange_control img.from_custom").bind(
- 'onBeforeShow',
- {self: this},
- function(e) {
- var self = e.data.self;
- var otherVal = new Date(
- self.ui.find('.timerange_control [name="to_custom"]').val());
-
- $(this).data('dateinput').setMax(otherVal);
- }
- );
- this.ui.find(".timerange_control img.to_custom").bind(
- 'onBeforeShow',
- {self: this},
- function(e) {
- var self = e.data.self;
- var otherVal = new Date(
- self.ui.find('.timerange_control [name="from_custom"]').val());
-
- $(this).data('dateinput').setMin(otherVal);
- }
- );
-
};
-
+/**
+ * Grab the start and end time from the ui form, highlight the range on the
+ * range timeline and set the time range of all the charts and redraw.
+ *
+ * @method
+ * @return {module:jQuery.Deferred}
+ **/
jarmon.ChartCoordinator.prototype.update = function() {
- /**
- * Grab the start and end time from the ui form, highlight the range on the
- * range timeline and set the time range of all the charts and redraw.
- *
- * @method update
- **/
var self = this;
- var selection = this.ui.find('[name="from_standard"]').val();
+ var shortcut = this.inputs.shortcuts.val();
- var now = new Date().getTime();
+ var now = new Date();
for(var i=0; i<jarmon.timeRangeShortcuts.length; i++) {
- if(jarmon.timeRangeShortcuts[i][0] === selection) {
- var range = jarmon.timeRangeShortcuts[i][1](now);
- this.setTimeRange(range[0], range[1]);
+ if(jarmon.timeRangeShortcuts[i][0] === shortcut) {
+ var range = jarmon.timeRangeShortcuts[i][1](now.getTime());
+ this.inputs.from.val(this.unix2datetimelocal(range[0]))
+ this.inputs.to.val(this.unix2datetimelocal(range[1]));
break;
}
}
- var startTime = parseInt(this.ui.find('[name="from"]').val(), 10);
- var endTime = parseInt(this.ui.find('[name="to"]').val(), 10);
- var tzoffset = parseInt(this.ui.find('[name="tzoffset"]').val(), 10);
+ var startTime = this.datetimelocal2unix(this.inputs.from.val());
+ var endTime = this.datetimelocal2unix(this.inputs.to.val());
+ var tzoffset = parseInt(this.inputs.tzoffset.val(), 10);
- this.ui.find('[name="from_custom"]').val(
- new Date(startTime + tzoffset)
- .toUTCString().split(' ').slice(1,5).join(' '));
- this.ui.find('[name="to_custom"]').val(
- new Date(endTime + tzoffset)
- .toUTCString().split(' ').slice(1,5).join(' '));
+ this.inputs.from[0].setAttribute('max', this.inputs.to.val());
+ this.inputs.to[0].setAttribute( 'min', this.inputs.from.val());
+ this.inputs.to[0].setAttribute( 'max', now.toISOString().slice(0, -1));
this.rangePreviewOptions.xaxis.tzoffset = tzoffset;
@@ -1688,37 +1589,73 @@ jarmon.ChartCoordinator.prototype.update = function() {
});
};
+/**
+ * Convert a UNIX millisecond timestamp into a [datetime-local string][]; using
+ * the `[name="tzoffoffset"]` input for the timezone.
+ *
+ * [datetime-local string]: https://html.spec.whatwg.org/multipage/infrastructure.html#concept-datetime-local
+ *
+ * @method
+ * @private
+ * @param unix {number}
+ * @return {string}
+ */
+jarmon.ChartCoordinator.prototype.unix2datetimelocal = function(unix) {
+ var tz = parseInt(this.inputs.tzoffset.val(), 10);
+ return (new Date(unix + tz)).toISOString().slice(0, -1);
+}
+
+/**
+ * Convert a [datetime-local string][] into a UNIX millisecond timestamp; using
+ * the `[name="tzoffoffset"]` input for the timezone.
+ *
+ * [datetime-local string]: https://html.spec.whatwg.org/multipage/infrastructure.html#concept-datetime-local
+ *
+ * @method
+ * @private
+ * @param datetimelocal {string}
+ * @return {number}
+ */
+jarmon.ChartCoordinator.prototype.datetimelocal2unix = function(datetimelocal) {
+ var tz = parseInt(this.inputs.tzoffset.val(), 10);
+ return Date.parse(datetimelocal+'Z') - tz;
+};
+
+/**
+ * Set the start and end time fields in the form and trigger an update
+ *
+ * @method
+ * @param [startTime=] {number} The start timestamp
+ * @param [endTime=] {number} The end timestamp
+ **/
jarmon.ChartCoordinator.prototype.setTimeRange = function(from, to) {
- /**
- * Set the start and end time fields in the form and trigger an update
- *
- * @method setTimeRange
- * @param startTime {Number} The start timestamp
- * @param endTime {Number} The end timestamp
- **/
if(typeof(from) !== 'undefined' && from !== null) {
- this.ui.find('[name="from"]').val(from);
+ this.inputs.from.val(this.unix2datetimelocal(from))
}
if(typeof(to) !== 'undefined' && to !== null) {
- this.ui.find('[name="to"]').val(to);
+ this.inputs.to.val(this.unix2datetimelocal(to));
}
+ this.inputs.shortcuts.val('custom');
+ this.update();
};
+/**
+ * An alias for {@linkcode jarmon.ChartCoordinator#update .update()}.
+ *
+ * @method
+ * @deprecated Use {@linkcode jarmon.ChartCoordinator#update .update()} instead.
+ **/
jarmon.ChartCoordinator.prototype.init = function() {
- /**
- * Reset all charts and the input form to the default time range - last hour
- *
- * @method init
- **/
this.update();
};
/**
* Limit the number of parallel async calls
*
- * @class jarmon.Parallimiter
* @constructor
- * @param limit {Number} The maximum number of in progress calls
+ * @requires jQuery
+ *
+ * @param limit {number} The maximum number of in progress calls
**/
jarmon.Parallimiter = function(limit) {
this.limit = limit || 1;
@@ -1726,23 +1663,29 @@ jarmon.Parallimiter = function(limit) {
this._currentCallCount = 0;
};
+/**
+ * Add a function to be called when the number of in progress calls drops
+ * below the configured limit
+ *
+ * @todo Remove the `args` argument in favor of passing in closures.
+ *
+ * @method
+ * @param callable {function} A function which returns a Deferred.
+ * @param args {Array} A list of arguments to pass to the callable
+ * @return {module:jQuery.jQuery} A Deferred which fires with the result of the callable
+ * when it is called.
+ **/
jarmon.Parallimiter.prototype.addCallable = function(callable, args) {
- /**
- * Add a function to be called when the number of in progress calls drops
- * below the configured limit
- *
- * @method addCallable
- * @param callable {Function} A function which returns a Deferred.
- * @param args {Array} A list of arguments to pass to the callable
- * @return {Object} A Deferred which fires with the result of the callable
- * when it is called.
- **/
var d = new jQuery.Deferred();
this._callQueue.unshift([d, callable, args]);
this._nextCall();
return d;
};
+/**
+ * @method
+ * @private
+ */
jarmon.Parallimiter.prototype._nextCall = function() {
var self = this;
if(this._callQueue.length > 0) {
diff --git a/jarmon/jarmon.test.js b/jarmon/jarmon.test.js
index 5f5989d..0bccf9c 100644
--- a/jarmon/jarmon.test.js
+++ b/jarmon/jarmon.test.js
@@ -8,11 +8,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
Y.Test.Runner.add(new Y.Test.Case({
name: "jarmon.downloadBinary",
+ /**
+ * When url cannot be found, the deferred should errback with status
+ * 404.
+ **/
test_urlNotFound: function () {
- /**
- * When url cannot be found, the deferred should errback with status
- * 404.
- **/
var self = this;
var d = new jarmon.downloadBinary('non-existent-file.html');
d.always(
@@ -26,17 +26,17 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * When url is found, the deferred should callback with an instance
+ * of javascriptrrd.BinaryFile
+ **/
test_urlFound: function () {
- /**
- * When url is found, the deferred should callback with an instance
- * of javascriptrrd.BinaryFile
- **/
var self = this;
var d = new jarmon.downloadBinary('testfile.bin');
d.always(
function(ret) {
self.resume(function() {
- Y.Assert.isInstanceOf(jarmon.BinaryFile, ret);
+ Y.Assert.isInstanceOf(BinaryFile, ret);
Y.Assert.areEqual(
String.fromCharCode(0), ret.getCharAt(0));
});
@@ -69,11 +69,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
});
},
+ /**
+ * The generated rrd file should have a lastupdate date of
+ * 1980-01-01 00:50:01
+ **/
test_getLastUpdate: function () {
- /**
- * The generated rrd file should have a lastupdate date of
- * 1980-01-01 00:50:01
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -85,12 +85,12 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * The generated rrd file should have a single DS whose name is
+ * 'speed'. A RangeError is thrown if the requested index or dsName
+ * doesnt exist.
+ **/
test_getDSIndex: function () {
- /**
- * The generated rrd file should have a single DS whose name is
- * 'speed'. A RangeError is thrown if the requested index or dsName
- * doesnt exist.
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -110,10 +110,10 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * The generated rrd file should have a single RRA
+ **/
test_getNrRRAs: function () {
- /**
- * The generated rrd file should have a single RRA
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -124,13 +124,13 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * The generated rrd file should have a single RRA using AVERAGE
+ * consolidation, step=10, rows=6 and values 0-5
+ * rra.getEl throws a RangeError if asked for row which doesn't
+ * exist.
+ **/
test_getRRA: function () {
- /**
- * The generated rrd file should have a single RRA using AVERAGE
- * consolidation, step=10, rows=6 and values 0-5
- * rra.getEl throws a RangeError if asked for row which doesn't
- * exist.
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -168,10 +168,10 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
});
},
+ /**
+ * The starttime must be less than the endtime
+ **/
test_getDataTimeRangeOverlapError: function () {
- /**
- * The starttime must be less than the endtime
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -191,11 +191,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
},
+ /**
+ * Error is raised if the rrd file doesn't contain an RRA with the
+ * requested consolidation function (CF)
+ **/
test_getDataUnknownCfError: function () {
- /**
- * Error is raised if the rrd file doesn't contain an RRA with the
- * requested consolidation function (CF)
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -214,13 +214,13 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
},
+ /**
+ * The generated rrd file should have values 0-9 at 300s intervals
+ * starting at 1980-01-01 00:00:00
+ * Result should include a data points with times > starttime and
+ * <= endTime
+ **/
test_getData: function () {
- /**
- * The generated rrd file should have values 0-9 at 300s intervals
- * starting at 1980-01-01 00:00:00
- * Result should include a data points with times > starttime and
- * <= endTime
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -266,11 +266,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * If the requested time range is outside the range of the RRD file
+ * we should not get any values back
+ **/
test_getDataUnknownValues: function () {
- /**
- * If the requested time range is outside the range of the RRD file
- * we should not get any values back
- **/
var self = this;
this.d.done(
function(rrd) {
@@ -287,20 +287,17 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
return v * 10;
},
+ /**
+ * RrdQuery can be passed a transformer function which may
+ * manipulate the values from the RRDFile
+ **/
test_transformerFunction: function () {
- /**
- * RrdQuery can be passed a transformer function which may
- * manipulate the values from the RRDFile
- **/
var self = this;
this.d.done(
function(rrd) {
self.resume(function() {
- var rq = new jarmon.RrdQuery(rrd, '', self._x10transformer);
- var data = rq.getData(RRD_STARTTIME, RRD_ENDTIME);
- // Make sure that the transformer is the
- // function we asked for
- Y.Assert.areEqual(self._x10transformer, rq.transformer);
+ var rq = new jarmon.RrdQuery(rrd, '');
+ var data = rq.getData(RRD_STARTTIME, RRD_ENDTIME, undefined, undefined, self._x10transformer);
// Real data goes 0,1,2,3...
// should be transformed to 0,10,20...
Y.Assert.areEqual(0, data.data[0][1]);
@@ -321,10 +318,10 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.rq = new jarmon.RrdQueryRemote('build/test.rrd', '');
},
+ /**
+ * The starttime must be less than the endtime
+ **/
test_getDataTimeRangeOverlapError: function () {
- /**
- * The starttime must be less than the endtime
- **/
var self = this;
this.rq.getData(1, 0).fail(
function(res) {
@@ -336,11 +333,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
},
+ /**
+ * Error is raised if the rrd file doesn't contain an RRA with the
+ * requested consolidation function (CF)
+ **/
test_getDataUnknownCfError: function () {
- /**
- * Error is raised if the rrd file doesn't contain an RRA with the
- * requested consolidation function (CF)
- **/
var self = this;
this.rq.getData(RRD_STARTTIME, RRD_ENDTIME, 0, 'FOO').always(
function(res) {
@@ -352,13 +349,13 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
},
+ /**
+ * The generated rrd file should have values 0-9 at 300s intervals
+ * starting at 1980-01-01 00:00:00
+ * Result should include a data points with times > starttime and
+ * <= endTime
+ **/
test_getData: function () {
- /**
- * The generated rrd file should have values 0-9 at 300s intervals
- * starting at 1980-01-01 00:00:00
- * Result should include a data points with times > starttime and
- * <= endTime
- **/
var self = this;
this.rq.getData(RRD_STARTTIME + (RRD_STEP+1) * 1000,
RRD_ENDTIME - (RRD_STEP-1) * 1000).always(
@@ -399,11 +396,11 @@ YUI({ logInclude: { TestRunner: true } }).use('console', 'test', function(Y) {
this.wait();
},
+ /**
+ * If the requested time range is outside the range of the RRD file
+ * we should not get any values back
+ **/
test_getDataUnknownValues: function () {
- /**
- * If the requested time range is outside the range of the RRD file
- * we should not get any values back
- **/
var self = this;
this.rq.getData(RRD_ENDTIME, RRD_ENDTIME+1000).always(
function(data) {
diff --git a/jarmonbuild/commands.py b/jarmonbuild/commands.py
index d60615a..617976f 100644
--- a/jarmonbuild/commands.py
+++ b/jarmonbuild/commands.py
@@ -4,7 +4,6 @@
Functions and Classes for automating the release of Jarmon
"""
-import hashlib
import logging
import os
import shutil
@@ -15,21 +14,10 @@ import urllib
from datetime import datetime
from optparse import OptionParser
from subprocess import check_call, PIPE
-from tempfile import gettempdir
-from urllib2 import urlopen
from zipfile import ZipFile, ZIP_DEFLATED
import pkg_resources
-
-JARMON_PROJECT_TITLE = 'Jarmon'
-JARMON_PROJECT_URL = 'http://www.launchpad.net/jarmon'
-
-YUIDOC_URL = 'http://yui.zenfs.com/releases/yuidoc/yuidoc_1.0.0b1.zip'
-YUIDOC_MD5 = 'cd5545d2dec8f7afe3d18e793538162c'
-YUIDOC_DEPENDENCIES = ['setuptools', 'pygments', 'cheetah']
-
-
class BuildError(Exception):
"""
A base Exception for errors in the build system
@@ -57,7 +45,7 @@ class BuildCommand(object):
class BuildApidocsCommand(BuildCommand):
"""
- Download YUI Doc and use it to generate apidocs for jarmon
+ Generate apidocs for jarmon
"""
command_name = 'apidocs'
@@ -70,94 +58,32 @@ class BuildApidocsCommand(BuildCommand):
"""
parser = OptionParser(
- usage='build [options] %s VERSION' % (self.command_name,))
+ usage='build [options] %s VERSION [DIRECTORY]' % (self.command_name,))
parser.disable_interspersed_args()
options, args = parser.parse_args(argv)
- if len(args) != 1:
+ if len(args) != 1 and len(args) != 2:
parser.error('Wrong number of arguments. This command expects a '
- 'version number only.')
+ 'version number, and optionally a directory.')
buildversion = args[0]
- tmpdir = gettempdir()
workingbranch_dir = self.workingbranch_dir
build_dir = self.build_dir
-
- # Check for yuidoc dependencies
- for r in pkg_resources.parse_requirements(YUIDOC_DEPENDENCIES):
- if not pkg_resources.working_set.find(r):
- raise BuildError('Unsatisfied yuidoc dependency: %r' % (r,))
-
- # download and cache yuidoc
- yuizip_path = os.path.join(tmpdir, os.path.basename(YUIDOC_URL))
- if os.path.exists(yuizip_path):
- self.log.debug('Using cached YUI doc')
-
- def producer_local():
- yield open(yuizip_path).read()
-
- producer = producer_local
- else:
- self.log.debug('Downloading YUI Doc')
-
- def producer_remote():
- with open(yuizip_path, 'w') as yuizip:
- download = urlopen(YUIDOC_URL)
- while True:
- bytes = download.read(1024 * 10)
- if not bytes:
- break
- else:
- yuizip.write(bytes)
- yield bytes
-
- producer = producer_remote
-
- checksum = hashlib.md5()
- for bytes in producer():
- checksum.update(bytes)
-
- actual_md5 = checksum.hexdigest()
- if actual_md5 != YUIDOC_MD5:
- raise BuildError(
- 'YUI Doc checksum error. File: %s, '
- 'Expected: %s, '
- 'Got: %s' % (yuizip_path, YUIDOC_MD5, actual_md5))
- else:
- self.log.debug('YUI Doc checksum verified')
+ apidocs_dir = os.path.join(args[1] if len(args) == 2 else build_dir, 'docs', 'apidocs')
# Remove any existing apidocs so that we can track removed files
- shutil.rmtree(os.path.join(build_dir, 'docs', 'apidocs'), True)
-
- yuidoc_dir = os.path.join(build_dir, 'yuidoc')
-
- # extract yuidoc folder from the downloaded zip file
- self.log.debug(
- 'Extracting YUI Doc from %s to %s' % (yuizip_path, yuidoc_dir))
- zip = ZipFile(yuizip_path)
- zip.extractall(
- build_dir, (m for m in zip.namelist() if m.startswith('yuidoc')))
+ shutil.rmtree(apidocs_dir, True)
# Use the yuidoc script that we just extracted to generate new docs
- self.log.debug('Running YUI Doc')
+ self.log.debug('Running JSDoc')
check_call((
- sys.executable,
- os.path.join(yuidoc_dir, 'bin', 'yuidoc.py'),
+ 'jsdoc',
+ '-c', os.path.join(workingbranch_dir, 'jarmonbuild', 'jsdoc.json'),
+ '-r', os.path.join(workingbranch_dir, 'README'),
+ '-d', apidocs_dir,
os.path.join(workingbranch_dir, 'jarmon'),
- '--parseroutdir=%s' % (
- os.path.join(build_dir, 'docs', 'apidocs'),),
- '--outputdir=%s' % (
- os.path.join(build_dir, 'docs', 'apidocs'),),
- '--template=%s' % (
- os.path.join(
- workingbranch_dir, 'jarmonbuild', 'yuidoc_template'),),
- '--version=%s' % (buildversion,),
- '--project=%s' % (JARMON_PROJECT_TITLE,),
- '--projecturl=%s' % (JARMON_PROJECT_URL,),
- ), stdout=PIPE, stderr=PIPE,)
-
- shutil.rmtree(yuidoc_dir)
+ ),)
class BuildReleaseCommand(BuildCommand):
@@ -184,26 +110,21 @@ class BuildReleaseCommand(BuildCommand):
workingbranch_dir = self.workingbranch_dir
build_dir = self.build_dir
- self.log.debug('Export versioned files to a build folder')
- from bzrlib.commands import main as bzr_main
- status = bzr_main(['bzr', 'export', build_dir, workingbranch_dir])
- if status != 0:
- raise BuildError('bzr export failure. Status: %r' % (status,))
+ self.log.debug('Clean the build folder')
+ shutil.rmtree(build_dir, True)
+ os.mkdir(build_dir)
- self.log.debug('Record the branch version')
- from bzrlib.branch import Branch
- from bzrlib.version_info_formats import format_python
- v = format_python.PythonVersionInfoBuilder(
- Branch.open(workingbranch_dir))
+ self.log.debug('Export versioned files to a build folder')
+ check_call(('git', '--work-tree=%s' % (build_dir,), 'checkout', '-f'))
- versionfile_path = os.path.join(
- build_dir, 'jarmonbuild', '_version.py')
+ self.log.debug('Generate apidocs')
+ BuildApidocsCommand().main([buildversion, build_dir])
- with open(versionfile_path, 'w') as f:
- v.generate(f)
+ self.log.debug('Generate jsdeps')
+ BuildJavascriptDependenciesCommand().main([build_dir])
- self.log.debug('Generate apidocs')
- BuildApidocsCommand().main([buildversion])
+ self.log.debug('Generate testdata')
+ BuildTestDataCommand().main([build_dir])
self.log.debug('Generate archive')
archive_root = 'jarmon-%s' % (buildversion,)
@@ -236,7 +157,7 @@ class BuildTestDataCommand(BuildCommand):
start = int(datetime(1980, 1, 1, 0, 0).strftime('%s'))
dss = []
rras = []
- filename = os.path.join(self.build_dir, 'test.rrd')
+ filename = os.path.join(argv[0] if len(argv) > 0 else self.build_dir, 'test.rrd')
rows = 12
step = 10
@@ -276,16 +197,25 @@ class BuildJavascriptDependenciesCommand(BuildCommand):
self.log.debug('Compiling javascript dependencies')
depjs_path = os.path.join(
- self.workingbranch_dir,
+ argv[0] if len(argv) > 0 else self.workingbranch_dir,
'docs/examples/assets/js/dependencies.js')
# Get the closure params from the original file
- params = []
- for line in open(depjs_path):
- line = line.strip()
- if line.startswith('// @'):
- key, val = line.lstrip('/ @').strip().split(None, 1)
- params.append((key.strip(), val.strip()))
+ params = [
+ ('code_url', 'http://code.jquery.com/jquery-1.6.3.js'),
+ ('code_url', 'https://raw.githubusercontent.com/flot/flot/v0.7.0/excanvas.js'),
+ ('code_url', 'https://raw.githubusercontent.com/flot/flot/v0.7.0/jquery.flot.js'),
+ ('code_url', 'https://raw.githubusercontent.com/flot/flot/v0.7.0/jquery.flot.stack.js'),
+ ('code_url', 'https://raw.githubusercontent.com/flot/flot/v0.7.0/jquery.flot.selection.js'),
+ ('code_url', 'https://lukeshu.com/git/2git/javascriptrrd/plain/src/lib/rrdFile.js?id=v1.1.1'),
+ ('code_url', 'https://lukeshu.com/git/2git/javascriptrrd/plain/src/lib/binaryXHR.js?id=v1.1.1'),
+ ('code_url', 'https://raw.githubusercontent.com/jquerytools/jquerytools/8ac4636a01d3860f1c4726ba722190a531bf1068/src/tabs/tabs.js'),
+ ('code_url', 'https://raw.githubusercontent.com/jquerytools/jquerytools/8ac4636a01d3860f1c4726ba722190a531bf1068/src/toolbox/toolbox.history.js'),
+ ('compilation_level', 'SIMPLE_OPTIMIZATIONS'),
+ ('formatting', 'print_input_delimiter'),
+ ('output_format', 'text'),
+ ('output_info', 'compiled_code'),
+ ]
# Always use the following value for the Content-type header.
headers = { "Content-type": "application/x-www-form-urlencoded" }
diff --git a/jarmonbuild/jsdoc.json b/jarmonbuild/jsdoc.json
new file mode 100644
index 0000000..b2782a8
--- /dev/null
+++ b/jarmonbuild/jsdoc.json
@@ -0,0 +1,11 @@
+{
+ "plugins": ["plugins/markdown"],
+ "source": {
+ "excludePattern": "\\.test\\.js$"
+ },
+ "templates": {
+ "default": {
+ "useLongnameInNav": true
+ }
+ }
+}
diff --git a/jarmonbuild/yuidoc_template/assets/ac-js b/jarmonbuild/yuidoc_template/assets/ac-js
deleted file mode 100644
index 15a6dff..0000000
--- a/jarmonbuild/yuidoc_template/assets/ac-js
+++ /dev/null
@@ -1,162 +0,0 @@
-(function() {
- var Event=YAHOO.util.Event,
- Dom=YAHOO.util.Dom,
- oACDS, oAutoComp,
- show = {
- 'private': false,
- 'protected': false,
- 'deprecated': false
- };
-
-Event.onAvailable('yui-classopts-form', function() {
- //Checkboxes are available..
- var handleClick = function(e) {
- var id, checked = false;
- if (YAHOO.lang.isString(e)) {
- id = e;
- } else {
- var tar = Event.getTarget(e);
- id = tar.id;
- }
- var el = Dom.get(id);
- checked = el.checked;
-
- var className = id;
- if (checked) {
- show[id.replace('show_', '')] = true;
- Dom.addClass(document.body, className);
- YAHOO.util.Cookie.setSub('yuidoc', id, 'checked');
- } else {
- show[id.replace('show_', '')] = false;
- Dom.removeClass(document.body, className);
- YAHOO.util.Cookie.setSub('yuidoc', id, '');
- }
- };
-
- var checkCookie = function(id) {
- var value = YAHOO.util.Cookie.getSub('yuidoc', id),
- el = Dom.get(id), checked = (value === 'checked');;
-
- /*
- if (value === 'checked') {
- el.checked = true;
- } else {
- el.checked = false;
- }
- */
-
- el.checked = checked;
- return checked;
- };
-
- var els = ['show_deprecated', 'show_protected', 'show_private'],
- reapplyHash = false;
-
- for (var i = 0; i < els.length; i++) {
- Event.on(els[i], 'click', handleClick);
- reapplyHash = checkCookie(els[i]) || reapplyHash;
- handleClick(els[i]);
- }
-
- // If we dynamically show private/protected/etc items during
- // load, we need to reapply anchors so that the search feature
- // works correctly for items that are initially hidden.
- if (reapplyHash) {
- var dl = document.location, hash = dl.hash;
- if (hash) {
- dl.hash = hash;
- }
- }
-
-});
-
-//Starting the AutoComplete code
- var getResults = function(query) {
- var results = [];
- if(query && query.length > 0) {
-
- var q = query.toLowerCase();
-
- for (var i=0, len=ALL_YUI_PROPS.length; i<len; ++i) {
-
- var prop = ALL_YUI_PROPS[i];
-
- if (!show['protected'] && prop.access == "protected") {
- // skip
- } else if (!show['private'] && prop.access == "private") {
- // skip
- } else if (!show['deprecated'] && prop.deprecated) {
- // skip
- } else {
- var s = (prop.host + "." + prop.name).toLowerCase();
- if (s.indexOf(q) > -1 ) {
- results.push([query, prop]);
- }
- }
- }
- }
-
- return results;
- };
-
- // Define Custom Event handlers
- var myOnDataReturn = function(sType, aArgs) {
- var oAutoComp = aArgs[0];
- var query = aArgs[1];
- var aResults = aArgs[2];
-
- if(aResults.length == 0) {
- if (query.length > 0) {
- oAutoComp.setBody("<div id=\"resultsdefault\">Not found</div>");
- }
- }
- };
-
- var myOnItemSelect = function(sType, aArgs) {
- var ac = aArgs[0];
- var item = aArgs[2];
- location.href = item[1].url;
- };
-
-
- Event.onAvailable("searchresults", function() {
-
- // Instantiate JS Function DataSource
- oACDS = new YAHOO.widget.DS_JSFunction(getResults);
- oACDS.maxCacheEntries = 30;
-
- // Instantiate AutoComplete
- oAutoComp = new YAHOO.widget.AutoComplete('searchinput','searchresults', oACDS);
- //oAutoComp.alwaysShowContainer = true;
- oAutoComp.queryDelay = 0.2;
- oAutoComp.maxResultsDisplayed = 200;
- oAutoComp.minQueryLength = 0;
- oAutoComp.formatResult = function(oResultItem, query) {
- var sMarkup = "<em>" + oResultItem[1].host + '</em> <span>' + oResultItem[1].name + '</span>';
- return sMarkup;
- };
-
- // Subscribe to Custom Events
- oAutoComp.dataReturnEvent.subscribe(myOnDataReturn);
- oAutoComp.itemSelectEvent.subscribe(myOnItemSelect);
-
- // Set initial content in the container
- oAutoComp.sendQuery(Dom.get("searchinput").value);
-
- });
-
- var validateForm = function() {
- return false;
- };
-
- YAHOO.util.Event.onAvailable('classTab', function() {
- var tabs = new YAHOO.widget.TabView('classTab');
- });
- /*
- YAHOO.util.Event.onAvailable('codeTree', function() {
- var tree1 = new YAHOO.widget.TreeView('codeTree');
- tree1.render();
- });
- */
-
-})();
diff --git a/jarmonbuild/yuidoc_template/assets/api-js b/jarmonbuild/yuidoc_template/assets/api-js
deleted file mode 100644
index e8132e0..0000000
--- a/jarmonbuild/yuidoc_template/assets/api-js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.6.0
-*/
-if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules;if(!I[A]){I[A]={versions:[],builds:[]};}var B=I[A],H=D.version,G=D.build,F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(var C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0};var B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var A=YAHOO.lang,C=["toString","valueOf"],B={isArray:function(D){if(D){return A.isNumber(D.length)&&A.isFunction(D.splice);}return false;},isBoolean:function(D){return typeof D==="boolean";},isFunction:function(D){return typeof D==="function";},isNull:function(D){return D===null;},isNumber:function(D){return typeof D==="number"&&isFinite(D);},isObject:function(D){return(D&&(typeof D==="object"||A.isFunction(D)))||false;},isString:function(D){return typeof D==="string";},isUndefined:function(D){return typeof D==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(F,E){for(var D=0;D<C.length;D=D+1){var H=C[D],G=E[H];if(A.isFunction(G)&&G!=Object.prototype[H]){F[H]=G;}}}:function(){},extend:function(H,I,G){if(!I||!H){throw new Error("extend failed, please check that "+"all dependencies are included.");}var E=function(){};E.prototype=I.prototype;H.prototype=new E();H.prototype.constructor=H;H.superclass=I.prototype;if(I.prototype.constructor==Object.prototype.constructor){I.prototype.constructor=I;}if(G){for(var D in G){if(A.hasOwnProperty(G,D)){H.prototype[D]=G[D];}}A._IEEnumFix(H.prototype,G);}},augmentObject:function(H,G){if(!G||!H){throw new Error("Absorb failed, verify dependencies.");}var D=arguments,F,I,E=D[2];if(E&&E!==true){for(F=2;F<D.length;F=F+1){H[D[F]]=G[D[F]];}}else{for(I in G){if(E||!(I in H)){H[I]=G[I];}}A._IEEnumFix(H,G);}},augmentProto:function(G,F){if(!F||!G){throw new Error("Augment failed, verify dependencies.");}var D=[G.prototype,F.prototype];for(var E=2;E<arguments.length;E=E+1){D.push(arguments[E]);}A.augmentObject.apply(this,D);},dump:function(D,I){var F,H,K=[],L="{...}",E="f(){...}",J=", ",G=" => ";if(!A.isObject(D)){return D+"";}else{if(D instanceof Date||("nodeType" in D&&"tagName" in D)){return D;}else{if(A.isFunction(D)){return E;}}}I=(A.isNumber(I))?I:3;if(A.isArray(D)){K.push("[");for(F=0,H=D.length;F<H;F=F+1){if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}if(K.length>1){K.pop();}K.push("]");}else{K.push("{");for(F in D){if(A.hasOwnProperty(D,F)){K.push(F+G);if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}}if(K.length>1){K.pop();}K.push("}");}return K.join("");},substitute:function(S,E,L){var I,H,G,O,P,R,N=[],F,J="dump",M=" ",D="{",Q="}";for(;;){I=S.lastIndexOf(D);if(I<0){break;}H=S.indexOf(Q,I);if(I+1>=H){break;}F=S.substring(I+1,H);O=F;R=null;G=O.indexOf(M);if(G>-1){R=O.substring(G+1);O=O.substring(0,G);}P=E[O];if(L){P=L(O,P,R);}if(A.isObject(P)){if(A.isArray(P)){P=A.dump(P,parseInt(R,10));}else{R=R||"";var K=R.indexOf(J);if(K>-1){R=R.substring(4);}if(P.toString===Object.prototype.toString||K>-1){P=A.dump(P,parseInt(R,10));}else{P=P.toString();}}}else{if(!A.isString(P)&&!A.isNumber(P)){P="~-"+N.length+"-~";N[N.length]=F;}}S=S.substring(0,I)+P+S.substring(H+1);}for(I=N.length-1;I>=0;I=I-1){S=S.replace(new RegExp("~-"+I+"-~"),"{"+N[I]+"}","g");}return S;},trim:function(D){try{return D.replace(/^\s+|\s+$/g,"");}catch(E){return D;}},merge:function(){var G={},E=arguments;for(var F=0,D=E.length;F<D;F=F+1){A.augmentObject(G,E[F],true);}return G;},later:function(K,E,L,G,H){K=K||0;E=E||{};var F=L,J=G,I,D;if(A.isString(L)){F=E[L];}if(!F){throw new TypeError("method undefined");}if(!A.isArray(J)){J=[G];}I=function(){F.apply(E,J);};D=(H)?setInterval(I,K):setTimeout(I,K);return{interval:H,cancel:function(){if(this.interval){clearInterval(D);}else{clearTimeout(D);}}};},isValue:function(D){return(A.isObject(D)||A.isString(D)||A.isNumber(D)||A.isBoolean(D));}};A.hasOwnProperty=(Object.prototype.hasOwnProperty)?function(D,E){return D&&D.hasOwnProperty(E);}:function(D,E){return !A.isUndefined(D[E])&&D.constructor.prototype[E]!==D[E];};B.augmentObject(A,B,true);YAHOO.util.Lang=A;A.augment=A.augmentProto;YAHOO.augment=A.augmentProto;YAHOO.extend=A.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.6.0",build:"1321"});(function(){var B=YAHOO.util,F=YAHOO.lang,L,J,K={},G={},N=window.document;YAHOO.env._id_counter=YAHOO.env._id_counter||0;var C=YAHOO.env.ua.opera,M=YAHOO.env.ua.webkit,A=YAHOO.env.ua.gecko,H=YAHOO.env.ua.ie;var E={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i};var O=function(Q){if(!E.HYPHEN.test(Q)){return Q;}if(K[Q]){return K[Q];}var R=Q;while(E.HYPHEN.exec(R)){R=R.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}K[Q]=R;return R;};var P=function(R){var Q=G[R];if(!Q){Q=new RegExp("(?:^|\\s+)"+R+"(?:\\s+|$)");G[R]=Q;}return Q;};if(N.defaultView&&N.defaultView.getComputedStyle){L=function(Q,T){var S=null;if(T=="float"){T="cssFloat";}var R=Q.ownerDocument.defaultView.getComputedStyle(Q,"");if(R){S=R[O(T)];}return Q.style[T]||S;};}else{if(N.documentElement.currentStyle&&H){L=function(Q,S){switch(O(S)){case"opacity":var U=100;try{U=Q.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(T){try{U=Q.filters("alpha").opacity;}catch(T){}}return U/100;case"float":S="styleFloat";default:var R=Q.currentStyle?Q.currentStyle[S]:null;return(Q.style[S]||R);}};}else{L=function(Q,R){return Q.style[R];};}}if(H){J=function(Q,R,S){switch(R){case"opacity":if(F.isString(Q.style.filter)){Q.style.filter="alpha(opacity="+S*100+")";if(!Q.currentStyle||!Q.currentStyle.hasLayout){Q.style.zoom=1;}}break;case"float":R="styleFloat";default:Q.style[R]=S;}};}else{J=function(Q,R,S){if(R=="float"){R="cssFloat";}Q.style[R]=S;};}var D=function(Q,R){return Q&&Q.nodeType==1&&(!R||R(Q));};YAHOO.util.Dom={get:function(S){if(S){if(S.nodeType||S.item){return S;}if(typeof S==="string"){return N.getElementById(S);}if("length" in S){var T=[];for(var R=0,Q=S.length;R<Q;++R){T[T.length]=B.Dom.get(S[R]);}return T;}return S;}return null;},getStyle:function(Q,S){S=O(S);var R=function(T){return L(T,S);};return B.Dom.batch(Q,R,B.Dom,true);},setStyle:function(Q,S,T){S=O(S);var R=function(U){J(U,S,T);};B.Dom.batch(Q,R,B.Dom,true);},getXY:function(Q){var R=function(S){if((S.parentNode===null||S.offsetParent===null||this.getStyle(S,"display")=="none")&&S!=S.ownerDocument.body){return false;}return I(S);};return B.Dom.batch(Q,R,B.Dom,true);},getX:function(Q){var R=function(S){return B.Dom.getXY(S)[0];};return B.Dom.batch(Q,R,B.Dom,true);},getY:function(Q){var R=function(S){return B.Dom.getXY(S)[1];};return B.Dom.batch(Q,R,B.Dom,true);},setXY:function(Q,T,S){var R=function(W){var V=this.getStyle(W,"position");if(V=="static"){this.setStyle(W,"position","relative");V="relative";}var Y=this.getXY(W);if(Y===false){return false;}var X=[parseInt(this.getStyle(W,"left"),10),parseInt(this.getStyle(W,"top"),10)];if(isNaN(X[0])){X[0]=(V=="relative")?0:W.offsetLeft;}if(isNaN(X[1])){X[1]=(V=="relative")?0:W.offsetTop;}if(T[0]!==null){W.style.left=T[0]-Y[0]+X[0]+"px";}if(T[1]!==null){W.style.top=T[1]-Y[1]+X[1]+"px";}if(!S){var U=this.getXY(W);if((T[0]!==null&&U[0]!=T[0])||(T[1]!==null&&U[1]!=T[1])){this.setXY(W,T,true);}}};B.Dom.batch(Q,R,B.Dom,true);},setX:function(R,Q){B.Dom.setXY(R,[Q,null]);},setY:function(Q,R){B.Dom.setXY(Q,[null,R]);},getRegion:function(Q){var R=function(S){if((S.parentNode===null||S.offsetParent===null||this.getStyle(S,"display")=="none")&&S!=S.ownerDocument.body){return false;}var T=B.Region.getRegion(S);return T;};return B.Dom.batch(Q,R,B.Dom,true);},getClientWidth:function(){return B.Dom.getViewportWidth();},getClientHeight:function(){return B.Dom.getViewportHeight();},getElementsByClassName:function(U,Y,V,W){U=F.trim(U);Y=Y||"*";V=(V)?B.Dom.get(V):null||N;if(!V){return[];}var R=[],Q=V.getElementsByTagName(Y),X=P(U);for(var S=0,T=Q.length;S<T;++S){if(X.test(Q[S].className)){R[R.length]=Q[S];if(W){W.call(Q[S],Q[S]);}}}return R;},hasClass:function(S,R){var Q=P(R);var T=function(U){return Q.test(U.className);};return B.Dom.batch(S,T,B.Dom,true);},addClass:function(R,Q){var S=function(T){if(this.hasClass(T,Q)){return false;}T.className=F.trim([T.className,Q].join(" "));return true;};return B.Dom.batch(R,S,B.Dom,true);},removeClass:function(S,R){var Q=P(R);var T=function(W){var V=false,X=W.className;if(R&&X&&this.hasClass(W,R)){W.className=X.replace(Q," ");if(this.hasClass(W,R)){this.removeClass(W,R);}W.className=F.trim(W.className);if(W.className===""){var U=(W.hasAttribute)?"class":"className";W.removeAttribute(U);}V=true;}return V;};return B.Dom.batch(S,T,B.Dom,true);},replaceClass:function(T,R,Q){if(!Q||R===Q){return false;}var S=P(R);var U=function(V){if(!this.hasClass(V,R)){this.addClass(V,Q);return true;}V.className=V.className.replace(S," "+Q+" ");if(this.hasClass(V,R)){this.removeClass(V,R);}V.className=F.trim(V.className);return true;};return B.Dom.batch(T,U,B.Dom,true);},generateId:function(Q,S){S=S||"yui-gen";var R=function(T){if(T&&T.id){return T.id;}var U=S+YAHOO.env._id_counter++;if(T){T.id=U;}return U;};return B.Dom.batch(Q,R,B.Dom,true)||R.apply(B.Dom,arguments);},isAncestor:function(R,S){R=B.Dom.get(R);S=B.Dom.get(S);var Q=false;if((R&&S)&&(R.nodeType&&S.nodeType)){if(R.contains&&R!==S){Q=R.contains(S);}else{if(R.compareDocumentPosition){Q=!!(R.compareDocumentPosition(S)&16);}}}else{}return Q;},inDocument:function(Q){return this.isAncestor(N.documentElement,Q);},getElementsBy:function(X,R,S,U){R=R||"*";S=(S)?B.Dom.get(S):null||N;if(!S){return[];}var T=[],W=S.getElementsByTagName(R);for(var V=0,Q=W.length;V<Q;++V){if(X(W[V])){T[T.length]=W[V];if(U){U(W[V]);}}}return T;},batch:function(U,X,W,S){U=(U&&(U.tagName||U.item))?U:B.Dom.get(U);if(!U||!X){return false;}var T=(S)?W:window;if(U.tagName||U.length===undefined){return X.call(T,U,W);}var V=[];for(var R=0,Q=U.length;R<Q;++R){V[V.length]=X.call(T,U[R],W);}return V;},getDocumentHeight:function(){var R=(N.compatMode!="CSS1Compat")?N.body.scrollHeight:N.documentElement.scrollHeight;var Q=Math.max(R,B.Dom.getViewportHeight());return Q;},getDocumentWidth:function(){var R=(N.compatMode!="CSS1Compat")?N.body.scrollWidth:N.documentElement.scrollWidth;var Q=Math.max(R,B.Dom.getViewportWidth());return Q;},getViewportHeight:function(){var Q=self.innerHeight;
-var R=N.compatMode;if((R||H)&&!C){Q=(R=="CSS1Compat")?N.documentElement.clientHeight:N.body.clientHeight;}return Q;},getViewportWidth:function(){var Q=self.innerWidth;var R=N.compatMode;if(R||H){Q=(R=="CSS1Compat")?N.documentElement.clientWidth:N.body.clientWidth;}return Q;},getAncestorBy:function(Q,R){while((Q=Q.parentNode)){if(D(Q,R)){return Q;}}return null;},getAncestorByClassName:function(R,Q){R=B.Dom.get(R);if(!R){return null;}var S=function(T){return B.Dom.hasClass(T,Q);};return B.Dom.getAncestorBy(R,S);},getAncestorByTagName:function(R,Q){R=B.Dom.get(R);if(!R){return null;}var S=function(T){return T.tagName&&T.tagName.toUpperCase()==Q.toUpperCase();};return B.Dom.getAncestorBy(R,S);},getPreviousSiblingBy:function(Q,R){while(Q){Q=Q.previousSibling;if(D(Q,R)){return Q;}}return null;},getPreviousSibling:function(Q){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getPreviousSiblingBy(Q);},getNextSiblingBy:function(Q,R){while(Q){Q=Q.nextSibling;if(D(Q,R)){return Q;}}return null;},getNextSibling:function(Q){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getNextSiblingBy(Q);},getFirstChildBy:function(Q,S){var R=(D(Q.firstChild,S))?Q.firstChild:null;return R||B.Dom.getNextSiblingBy(Q.firstChild,S);},getFirstChild:function(Q,R){Q=B.Dom.get(Q);if(!Q){return null;}return B.Dom.getFirstChildBy(Q);},getLastChildBy:function(Q,S){if(!Q){return null;}var R=(D(Q.lastChild,S))?Q.lastChild:null;return R||B.Dom.getPreviousSiblingBy(Q.lastChild,S);},getLastChild:function(Q){Q=B.Dom.get(Q);return B.Dom.getLastChildBy(Q);},getChildrenBy:function(R,T){var S=B.Dom.getFirstChildBy(R,T);var Q=S?[S]:[];B.Dom.getNextSiblingBy(S,function(U){if(!T||T(U)){Q[Q.length]=U;}return false;});return Q;},getChildren:function(Q){Q=B.Dom.get(Q);if(!Q){}return B.Dom.getChildrenBy(Q);},getDocumentScrollLeft:function(Q){Q=Q||N;return Math.max(Q.documentElement.scrollLeft,Q.body.scrollLeft);},getDocumentScrollTop:function(Q){Q=Q||N;return Math.max(Q.documentElement.scrollTop,Q.body.scrollTop);},insertBefore:function(R,Q){R=B.Dom.get(R);Q=B.Dom.get(Q);if(!R||!Q||!Q.parentNode){return null;}return Q.parentNode.insertBefore(R,Q);},insertAfter:function(R,Q){R=B.Dom.get(R);Q=B.Dom.get(Q);if(!R||!Q||!Q.parentNode){return null;}if(Q.nextSibling){return Q.parentNode.insertBefore(R,Q.nextSibling);}else{return Q.parentNode.appendChild(R);}},getClientRegion:function(){var S=B.Dom.getDocumentScrollTop(),R=B.Dom.getDocumentScrollLeft(),T=B.Dom.getViewportWidth()+R,Q=B.Dom.getViewportHeight()+S;return new B.Region(S,T,Q,R);}};var I=function(){if(N.documentElement.getBoundingClientRect){return function(S){var T=S.getBoundingClientRect(),R=Math.round;var Q=S.ownerDocument;return[R(T.left+B.Dom.getDocumentScrollLeft(Q)),R(T.top+B.Dom.getDocumentScrollTop(Q))];};}else{return function(S){var T=[S.offsetLeft,S.offsetTop];var R=S.offsetParent;var Q=(M&&B.Dom.getStyle(S,"position")=="absolute"&&S.offsetParent==S.ownerDocument.body);if(R!=S){while(R){T[0]+=R.offsetLeft;T[1]+=R.offsetTop;if(!Q&&M&&B.Dom.getStyle(R,"position")=="absolute"){Q=true;}R=R.offsetParent;}}if(Q){T[0]-=S.ownerDocument.body.offsetLeft;T[1]-=S.ownerDocument.body.offsetTop;}R=S.parentNode;while(R.tagName&&!E.ROOT_TAG.test(R.tagName)){if(R.scrollTop||R.scrollLeft){T[0]-=R.scrollLeft;T[1]-=R.scrollTop;}R=R.parentNode;}return T;};}}();})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this[0]=B;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.6.0",build:"1321"});YAHOO.util.CustomEvent=function(D,B,C,A){this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){}var E="_YUICEOnSubscribe";if(D!==E){this.subscribeEvent=new YAHOO.util.CustomEvent(E,this,true);}this.lastError=null;};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(B,C,A){if(!B){throw new Error("Invalid callback for subscriber to '"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,A);}this.subscribers.push(new YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F){if(!D){return this.unsubscribeAll();}var E=false;for(var B=0,A=this.subscribers.length;B<A;++B){var C=this.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=true;}}return E;},fire:function(){this.lastError=null;var K=[],E=this.subscribers.length;if(!E&&this.silent){return true;}var I=[].slice.call(arguments,0),G=true,D,J=false;if(!this.silent){}var C=this.subscribers.slice(),A=YAHOO.util.Event.throwErrors;for(D=0;D<E;++D){var M=C[D];if(!M){J=true;}else{if(!this.silent){}var L=M.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var B=null;if(I.length>0){B=I[0];}try{G=M.fn.call(L,B,M.obj);}catch(F){this.lastError=F;if(A){throw F;}}}else{try{G=M.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=H;if(A){throw H;}}}if(false===G){if(!this.silent){}break;}}}return(G!==false);},unsubscribeAll:function(){for(var A=this.subscribers.length-1;A>-1;A--){this._delete(A);}this.subscribers=[];return A;},_delete:function(A){var B=this.subscribers[A];if(B){delete B.fn;delete B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(B,C,A){this.fn=B;this.obj=YAHOO.lang.isUndefined(C)?null:C;this.override=A;};YAHOO.util.Subscriber.prototype.getScope=function(A){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}}return A;};YAHOO.util.Subscriber.prototype.contains=function(A,B){if(B){return(this.fn==A&&this.obj==B);}else{return(this.fn==A);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+this.obj+", override: "+(this.override||"no")+" }";};if(!YAHOO.util.Event){YAHOO.util.Event=function(){var H=false;var I=[];var J=[];var G=[];var E=[];var C=0;var F=[];var B=[];var A=0;var D={63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var K=YAHOO.env.ua.ie?"focusin":"focus";var L=YAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,CAPTURE:7,lastError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:false,startInterval:function(){if(!this._interval){var M=this;var N=function(){M._tryPreloadAttach();};this._interval=setInterval(N,this.POLL_INTERVAL);}},onAvailable:function(R,O,S,Q,P){var M=(YAHOO.lang.isString(R))?[R]:R;for(var N=0;N<M.length;N=N+1){F.push({id:M[N],fn:O,obj:S,override:Q,checkReady:P});}C=this.POLL_RETRYS;this.startInterval();},onContentReady:function(O,M,P,N){this.onAvailable(O,M,P,N,true);},onDOMReady:function(M,O,N){if(this.DOMReady){setTimeout(function(){var P=window;if(N){if(N===true){P=O;}else{P=N;}}M.call(P,"DOMReady",[],O);},0);}else{this.DOMReadyEvent.subscribe(M,O,N);}},_addListener:function(O,M,X,S,N,a){if(!X||!X.call){return false;}if(this._isValidCollection(O)){var Y=true;for(var T=0,V=O.length;T<V;++T){Y=this._addListener(O[T],M,X,S,N,a)&&Y;}return Y;}else{if(YAHOO.lang.isString(O)){var R=this.getEl(O);if(R){O=R;}else{this.onAvailable(O,function(){YAHOO.util.Event._addListener(O,M,X,S,N,a);});return true;}}}if(!O){return false;}if("unload"==M&&S!==this){J[J.length]=[O,M,X,S,N,a];return true;}var b=O;if(N){if(N===true){b=S;}else{b=N;}}var P=function(c){return X.call(b,YAHOO.util.Event.getEvent(c,O),S);};var Z=[O,M,X,P,b,S,N,a];var U=I.length;I[U]=Z;if(this.useLegacyEvent(O,M)){var Q=this.getLegacyIndex(O,M);if(Q==-1||O!=G[Q][0]){Q=G.length;B[O.id+M]=Q;G[Q]=[O,M,O["on"+M]];E[Q]=[];O["on"+M]=function(c){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(Z);}else{try{this._simpleAdd(O,M,P,a);}catch(W){this.lastError=W;this._removeListener(O,M,X,a);return false;}}return true;},addListener:function(O,Q,N,P,M){return this._addListener(O,Q,N,P,M,false);},addFocusListener:function(O,N,P,M){return this._addListener(O,K,N,P,M,true);},removeFocusListener:function(N,M){return this._removeListener(N,K,M,true);},addBlurListener:function(O,N,P,M){return this._addListener(O,L,N,P,M,true);},removeBlurListener:function(N,M){return this._removeListener(N,L,M,true);},fireLegacyEvent:function(Q,O){var S=true,M,U,T,V,R;U=E[O].slice();for(var N=0,P=U.length;N<P;++N){T=U[N];if(T&&T[this.WFN]){V=T[this.ADJ_SCOPE];R=T[this.WFN].call(V,Q);S=(S&&R);}}M=G[O];if(M&&M[2]){M[2](Q);}return S;},getLegacyIndex:function(N,O){var M=this.generateId(N)+O;if(typeof B[M]=="undefined"){return -1;}else{return B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&&("click"==N||"dblclick"==N));},_removeListener:function(N,M,V,Y){var Q,T,X;if(typeof N=="string"){N=this.getEl(N);}else{if(this._isValidCollection(N)){var W=true;for(Q=N.length-1;Q>-1;Q--){W=(this._removeListener(N[Q],M,V,Y)&&W);}return W;}}if(!V||!V.call){return this.purgeElement(N,false,M);}if("unload"==M){for(Q=J.length-1;Q>-1;Q--){X=J[Q];if(X&&X[0]==N&&X[1]==M&&X[2]==V){J.splice(Q,1);return true;}}return false;}var R=null;var S=arguments[4];if("undefined"===typeof S){S=this._getCacheIndex(N,M,V);}if(S>=0){R=I[S];}if(!N||!R){return false;}if(this.useLegacyEvent(N,M)){var P=this.getLegacyIndex(N,M);var O=E[P];if(O){for(Q=0,T=O.length;Q<T;++Q){X=O[Q];if(X&&X[this.EL]==N&&X[this.TYPE]==M&&X[this.FN]==V){O.splice(Q,1);break;}}}}else{try{this._simpleRemove(N,M,R[this.WFN],Y);}catch(U){this.lastError=U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];
-I.splice(S,1);return true;},removeListener:function(N,O,M){return this._removeListener(N,O,M,false);},getTarget:function(O,N){var M=O.target||O.srcElement;return this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3==N.nodeType){return N.parentNode;}}catch(M){}return N;},getPageX:function(N){var M=N.pageX;if(!M&&0!==M){M=N.clientX||0;if(this.isIE){M+=this._getScrollLeft();}}return M;},getPageY:function(M){var N=M.pageY;if(!N&&0!==N){N=M.clientY||0;if(this.isIE){N+=this._getScrollTop();}}return N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRelatedTarget:function(N){var M=N.relatedTarget;if(!M){if(N.type=="mouseout"){M=N.toElement;}else{if(N.type=="mouseover"){M=N.fromElement;}}}return this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=new Date().getTime();try{O.time=N;}catch(M){this.lastError=M;return N;}}return O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefault(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagation();}else{M.cancelBubble=true;}},preventDefault:function(M){if(M.preventDefault){M.preventDefault();}else{M.returnValue=false;}},getEvent:function(O,M){var N=O||window.event;if(!N){var P=this.getEvent.caller;while(P){N=P.arguments[0];if(N&&Event==N.constructor){break;}P=P.caller;}}return N;},getCharCode:function(N){var M=N.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in D)){M=D[M];}return M;},_getCacheIndex:function(Q,R,P){for(var O=0,N=I.length;O<N;O=O+1){var M=I[O];if(M&&M[this.FN]==P&&M[this.EL]==Q&&M[this.TYPE]==R){return O;}}return -1;},generateId:function(M){var N=M.id;if(!N){N="yuievtautoid-"+A;++A;M.id=N;}return N;},_isValidCollection:function(N){try{return(N&&typeof N!=="string"&&N.length&&!N.tagName&&!N.alert&&typeof N[0]!=="undefined");}catch(M){return false;}},elCache:{},getEl:function(M){return(typeof M==="string")?document.getElementById(M):M;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=true;var M=YAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(N){var M=YAHOO.util.Event;if(!M.DOMReady){M.DOMReady=true;M.DOMReadyEvent.fire();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;clearInterval(this._interval);this._interval=null;return ;}if(this.locked){return ;}if(this.isIE){if(!this.DOMReady){this.startInterval();return ;}}this.locked=true;var S=!H;if(!S){S=(C>0&&F.length>0);}var R=[];var T=function(V,W){var U=V;if(W.override){if(W.override===true){U=W.obj;}else{U=W.override;}}W.fn.call(U,W.obj);};var N,M,Q,P,O=[];for(N=0,M=F.length;N<M;N=N+1){Q=F[N];if(Q){P=this.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F[N]=null;}}else{T(P,Q);F[N]=null;}}else{R.push(Q);}}}for(N=0,M=O.length;N<M;N=N+1){Q=O[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=F.length-1;N>-1;N--){Q=F[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;},purgeElement:function(Q,R,T){var O=(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var S=this.getListeners(O,T),P,M;if(S){for(P=S.length-1;P>-1;P--){var N=S[P];this._removeListener(O,N.type,N.fn,N.capture);}}if(R&&O&&O.childNodes){for(P=0,M=O.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],R,T);}}},getListeners:function(O,M){var R=[],N;if(!M){N=[I,J];}else{if(M==="unload"){N=[J];}else{N=[I];}}var T=(YAHOO.lang.isString(O))?this.getEl(O):O;for(var Q=0;Q<N.length;Q=Q+1){var V=N[Q];if(V){for(var S=0,U=V.length;S<U;++S){var P=V[S];if(P&&P[this.EL]===T&&(!M||M===P[this.TYPE])){R.push({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE],scope:P[this.ADJ_SCOPE],capture:P[this.CAPTURE],index:S});}}}}return(R.length)?R:null;},_unload:function(S){var M=YAHOO.util.Event,P,O,N,R,Q,T=J.slice();for(P=0,R=J.length;P<R;++P){N=T[P];if(N){var U=window;if(N[M.ADJ_SCOPE]){if(N[M.ADJ_SCOPE]===true){U=N[M.UNLOAD_OBJ];}else{U=N[M.ADJ_SCOPE];}}N[M.FN].call(U,M.getEvent(S,N[M.EL]),N[M.UNLOAD_OBJ]);T[P]=null;N=null;U=null;}}J=null;if(I){for(O=I.length-1;O>-1;O--){N=I[O];if(N){M._removeListener(N[M.EL],N[M.TYPE],N[M.FN],N[M.CAPTURE],O);}}N=null;}G=null;M._simpleRemove(window,"unload",M._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var M=document.documentElement,N=document.body;if(M&&(M.scrollTop||M.scrollLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEvent){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detachEvent){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;EU.onFocus=EU.addFocusListener;EU.onBlur=EU.addBlurListener;
-/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
-if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};
-var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};YAHOO.util.KeyListener=function(A,F,B,C){if(!A){}else{if(!F){}else{if(!B){}}}if(!C){C=YAHOO.util.KeyListener.KEYDOWN;}var D=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof A=="string"){A=document.getElementById(A);}if(typeof B=="function"){D.subscribe(B);}else{D.subscribe(B.fn,B.scope,B.correctScope);}function E(J,I){if(!F.shift){F.shift=false;}if(!F.alt){F.alt=false;}if(!F.ctrl){F.ctrl=false;}if(J.shiftKey==F.shift&&J.altKey==F.alt&&J.ctrlKey==F.ctrl){var G;if(F.keys instanceof Array){for(var H=0;H<F.keys.length;H++){G=F.keys[H];if(G==J.charCode){D.fire(J.charCode,J);break;}else{if(G==J.keyCode){D.fire(J.keyCode,J);break;}}}}else{G=F.keys;if(G==J.charCode){D.fire(J.charCode,J);}else{if(G==J.keyCode){D.fire(J.keyCode,J);}}}}}this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=false;};this.toString=function(){return"KeyListener ["+F.keys+"] "+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,{version:"2.6.0",build:"1321"});YAHOO.register("yahoo-dom-event", YAHOO, {version: "2.6.0", build: "1321"});
-/*
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.6.0
-*/
-(function(){var lang=YAHOO.lang,util=YAHOO.util,Ev=util.Event;util.DataSourceBase=function(oLiveData,oConfigs){if(oLiveData===null||oLiveData===undefined){return ;}this.liveData=oLiveData;this._oQueue={interval:null,conn:null,requests:[]};this.responseSchema={};if(oConfigs&&(oConfigs.constructor==Object)){for(var sConfig in oConfigs){if(sConfig){this[sConfig]=oConfigs[sConfig];}}}var maxCacheEntries=this.maxCacheEntries;if(!lang.isNumber(maxCacheEntries)||(maxCacheEntries<0)){maxCacheEntries=0;}this._aIntervals=[];this.createEvent("cacheRequestEvent");this.createEvent("cacheResponseEvent");this.createEvent("requestEvent");this.createEvent("responseEvent");this.createEvent("responseParseEvent");this.createEvent("responseCacheEvent");this.createEvent("dataErrorEvent");this.createEvent("cacheFlushEvent");var DS=util.DataSourceBase;this._sName="DataSource instance"+DS._nIndex;DS._nIndex++;};var DS=util.DataSourceBase;lang.augmentObject(DS,{TYPE_UNKNOWN:-1,TYPE_JSARRAY:0,TYPE_JSFUNCTION:1,TYPE_XHR:2,TYPE_JSON:3,TYPE_XML:4,TYPE_TEXT:5,TYPE_HTMLTABLE:6,TYPE_SCRIPTNODE:7,TYPE_LOCAL:8,ERROR_DATAINVALID:"Invalid data",ERROR_DATANULL:"Null data",_nIndex:0,_nTransactionId:0,issueCallback:function(callback,params,error,scope){if(lang.isFunction(callback)){callback.apply(scope,params);}else{if(lang.isObject(callback)){scope=callback.scope||scope||window;var callbackFunc=callback.success;if(error){callbackFunc=callback.failure;}if(callbackFunc){callbackFunc.apply(scope,params.concat([callback.argument]));}}}},parseString:function(oData){if(!lang.isValue(oData)){return null;}var string=oData+"";if(lang.isString(string)){return string;}else{return null;}},parseNumber:function(oData){var number=oData*1;if(lang.isNumber(number)){return number;}else{return null;}},convertNumber:function(oData){return DS.parseNumber(oData);},parseDate:function(oData){var date=null;if(!(oData instanceof Date)){date=new Date(oData);}else{return oData;}if(date instanceof Date){return date;}else{return null;}},convertDate:function(oData){return DS.parseDate(oData);}});DS.Parser={string:DS.parseString,number:DS.parseNumber,date:DS.parseDate};DS.prototype={_sName:null,_aCache:null,_oQueue:null,_aIntervals:null,maxCacheEntries:0,liveData:null,dataType:DS.TYPE_UNKNOWN,responseType:DS.TYPE_UNKNOWN,responseSchema:null,toString:function(){return this._sName;},getCachedResponse:function(oRequest,oCallback,oCaller){var aCache=this._aCache;if(this.maxCacheEntries>0){if(!aCache){this._aCache=[];}else{var nCacheLength=aCache.length;if(nCacheLength>0){var oResponse=null;this.fireEvent("cacheRequestEvent",{request:oRequest,callback:oCallback,caller:oCaller});for(var i=nCacheLength-1;i>=0;i--){var oCacheElem=aCache[i];if(this.isCacheHit(oRequest,oCacheElem.request)){oResponse=oCacheElem.response;this.fireEvent("cacheResponseEvent",{request:oRequest,response:oResponse,callback:oCallback,caller:oCaller});if(i<nCacheLength-1){aCache.splice(i,1);this.addToCache(oRequest,oResponse);}oResponse.cached=true;break;}}return oResponse;}}}else{if(aCache){this._aCache=null;}}return null;},isCacheHit:function(oRequest,oCachedRequest){return(oRequest===oCachedRequest);},addToCache:function(oRequest,oResponse){var aCache=this._aCache;if(!aCache){return ;}while(aCache.length>=this.maxCacheEntries){aCache.shift();}var oCacheElem={request:oRequest,response:oResponse};aCache[aCache.length]=oCacheElem;this.fireEvent("responseCacheEvent",{request:oRequest,response:oResponse});},flushCache:function(){if(this._aCache){this._aCache=[];this.fireEvent("cacheFlushEvent");}},setInterval:function(nMsec,oRequest,oCallback,oCaller){if(lang.isNumber(nMsec)&&(nMsec>=0)){var oSelf=this;var nId=setInterval(function(){oSelf.makeConnection(oRequest,oCallback,oCaller);},nMsec);this._aIntervals.push(nId);return nId;}else{}},clearInterval:function(nId){var tracker=this._aIntervals||[];for(var i=tracker.length-1;i>-1;i--){if(tracker[i]===nId){tracker.splice(i,1);clearInterval(nId);}}},clearAllIntervals:function(){var tracker=this._aIntervals||[];for(var i=tracker.length-1;i>-1;i--){clearInterval(tracker[i]);}tracker=[];},sendRequest:function(oRequest,oCallback,oCaller){var oCachedResponse=this.getCachedResponse(oRequest,oCallback,oCaller);if(oCachedResponse){DS.issueCallback(oCallback,[oRequest,oCachedResponse],false,oCaller);return null;}return this.makeConnection(oRequest,oCallback,oCaller);},makeConnection:function(oRequest,oCallback,oCaller){var tId=DS._nTransactionId++;this.fireEvent("requestEvent",{tId:tId,request:oRequest,callback:oCallback,caller:oCaller});var oRawResponse=this.liveData;this.handleResponse(oRequest,oRawResponse,oCallback,oCaller,tId);return tId;},handleResponse:function(oRequest,oRawResponse,oCallback,oCaller,tId){this.fireEvent("responseEvent",{tId:tId,request:oRequest,response:oRawResponse,callback:oCallback,caller:oCaller});var xhr=(this.dataType==DS.TYPE_XHR)?true:false;var oParsedResponse=null;var oFullResponse=oRawResponse;if(this.responseType===DS.TYPE_UNKNOWN){var ctype=(oRawResponse&&oRawResponse.getResponseHeader)?oRawResponse.getResponseHeader["Content-Type"]:null;if(ctype){if(ctype.indexOf("text/xml")>-1){this.responseType=DS.TYPE_XML;}else{if(ctype.indexOf("application/json")>-1){this.responseType=DS.TYPE_JSON;}else{if(ctype.indexOf("text/plain")>-1){this.responseType=DS.TYPE_TEXT;}}}}else{if(YAHOO.lang.isArray(oRawResponse)){this.responseType=DS.TYPE_JSARRAY;}else{if(oRawResponse&&oRawResponse.nodeType&&oRawResponse.nodeType==9){this.responseType=DS.TYPE_XML;}else{if(oRawResponse&&oRawResponse.nodeName&&(oRawResponse.nodeName.toLowerCase()=="table")){this.responseType=DS.TYPE_HTMLTABLE;}else{if(YAHOO.lang.isObject(oRawResponse)){this.responseType=DS.TYPE_JSON;}else{if(YAHOO.lang.isString(oRawResponse)){this.responseType=DS.TYPE_TEXT;}}}}}}}switch(this.responseType){case DS.TYPE_JSARRAY:if(xhr&&oRawResponse&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText;}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseArrayData(oRequest,oFullResponse);
-break;case DS.TYPE_JSON:if(xhr&&oRawResponse&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText;}try{if(lang.isString(oFullResponse)){if(lang.JSON){oFullResponse=lang.JSON.parse(oFullResponse);}else{if(window.JSON&&JSON.parse){oFullResponse=JSON.parse(oFullResponse);}else{if(oFullResponse.parseJSON){oFullResponse=oFullResponse.parseJSON();}else{while(oFullResponse.length>0&&(oFullResponse.charAt(0)!="{")&&(oFullResponse.charAt(0)!="[")){oFullResponse=oFullResponse.substring(1,oFullResponse.length);}if(oFullResponse.length>0){var objEnd=Math.max(oFullResponse.lastIndexOf("]"),oFullResponse.lastIndexOf("}"));oFullResponse=oFullResponse.substring(0,objEnd+1);oFullResponse=eval("("+oFullResponse+")");}}}}}}catch(e){}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseJSONData(oRequest,oFullResponse);break;case DS.TYPE_HTMLTABLE:if(xhr&&oRawResponse.responseText){oFullResponse=oRawResponse.responseText;}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseHTMLTableData(oRequest,oFullResponse);break;case DS.TYPE_XML:if(xhr&&oRawResponse.responseXML){oFullResponse=oRawResponse.responseXML;}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseXMLData(oRequest,oFullResponse);break;case DS.TYPE_TEXT:if(xhr&&lang.isString(oRawResponse.responseText)){oFullResponse=oRawResponse.responseText;}oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseTextData(oRequest,oFullResponse);break;default:oFullResponse=this.doBeforeParseData(oRequest,oFullResponse,oCallback);oParsedResponse=this.parseData(oRequest,oFullResponse);break;}oParsedResponse=oParsedResponse||{};if(!oParsedResponse.results){oParsedResponse.results=[];}if(!oParsedResponse.meta){oParsedResponse.meta={};}if(oParsedResponse&&!oParsedResponse.error){oParsedResponse=this.doBeforeCallback(oRequest,oFullResponse,oParsedResponse,oCallback);this.fireEvent("responseParseEvent",{request:oRequest,response:oParsedResponse,callback:oCallback,caller:oCaller});this.addToCache(oRequest,oParsedResponse);}else{oParsedResponse.error=true;this.fireEvent("dataErrorEvent",{request:oRequest,response:oRawResponse,callback:oCallback,caller:oCaller,message:DS.ERROR_DATANULL});}oParsedResponse.tId=tId;DS.issueCallback(oCallback,[oRequest,oParsedResponse],oParsedResponse.error,oCaller);},doBeforeParseData:function(oRequest,oFullResponse,oCallback){return oFullResponse;},doBeforeCallback:function(oRequest,oFullResponse,oParsedResponse,oCallback){return oParsedResponse;},parseData:function(oRequest,oFullResponse){if(lang.isValue(oFullResponse)){var oParsedResponse={results:oFullResponse,meta:{}};return oParsedResponse;}return null;},parseArrayData:function(oRequest,oFullResponse){if(lang.isArray(oFullResponse)){var results=[],i,j,rec,field,data;if(lang.isArray(this.responseSchema.fields)){var fields=this.responseSchema.fields;for(i=fields.length-1;i>=0;--i){if(typeof fields[i]!=="object"){fields[i]={key:fields[i]};}}var parsers={},p;for(i=fields.length-1;i>=0;--i){p=(typeof fields[i].parser==="function"?fields[i].parser:DS.Parser[fields[i].parser+""])||fields[i].converter;if(p){parsers[fields[i].key]=p;}}var arrType=lang.isArray(oFullResponse[0]);for(i=oFullResponse.length-1;i>-1;i--){var oResult={};rec=oFullResponse[i];if(typeof rec==="object"){for(j=fields.length-1;j>-1;j--){field=fields[j];data=arrType?rec[j]:rec[field.key];if(parsers[field.key]){data=parsers[field.key].call(this,data);}if(data===undefined){data=null;}oResult[field.key]=data;}}else{if(lang.isString(rec)){for(j=fields.length-1;j>-1;j--){field=fields[j];data=rec;if(parsers[field.key]){data=parsers[field.key].call(this,data);}if(data===undefined){data=null;}oResult[field.key]=data;}}}results[i]=oResult;}}else{results=oFullResponse;}var oParsedResponse={results:results};return oParsedResponse;}return null;},parseTextData:function(oRequest,oFullResponse){if(lang.isString(oFullResponse)){if(lang.isString(this.responseSchema.recordDelim)&&lang.isString(this.responseSchema.fieldDelim)){var oParsedResponse={results:[]};var recDelim=this.responseSchema.recordDelim;var fieldDelim=this.responseSchema.fieldDelim;if(oFullResponse.length>0){var newLength=oFullResponse.length-recDelim.length;if(oFullResponse.substr(newLength)==recDelim){oFullResponse=oFullResponse.substr(0,newLength);}if(oFullResponse.length>0){var recordsarray=oFullResponse.split(recDelim);for(var i=0,len=recordsarray.length,recIdx=0;i<len;++i){var bError=false,sRecord=recordsarray[i];if(lang.isString(sRecord)&&(sRecord.length>0)){var fielddataarray=recordsarray[i].split(fieldDelim);var oResult={};if(lang.isArray(this.responseSchema.fields)){var fields=this.responseSchema.fields;for(var j=fields.length-1;j>-1;j--){try{var data=fielddataarray[j];if(lang.isString(data)){if(data.charAt(0)=='"'){data=data.substr(1);}if(data.charAt(data.length-1)=='"'){data=data.substr(0,data.length-1);}var field=fields[j];var key=(lang.isValue(field.key))?field.key:field;if(!field.parser&&field.converter){field.parser=field.converter;}var parser=(typeof field.parser==="function")?field.parser:DS.Parser[field.parser+""];if(parser){data=parser.call(this,data);}if(data===undefined){data=null;}oResult[key]=data;}else{bError=true;}}catch(e){bError=true;}}}else{oResult=fielddataarray;}if(!bError){oParsedResponse.results[recIdx++]=oResult;}}}}}return oParsedResponse;}}return null;},parseXMLResult:function(result){var oResult={},schema=this.responseSchema;try{for(var m=schema.fields.length-1;m>=0;m--){var field=schema.fields[m];var key=(lang.isValue(field.key))?field.key:field;var data=null;var xmlAttr=result.attributes.getNamedItem(key);if(xmlAttr){data=xmlAttr.value;}else{var xmlNode=result.getElementsByTagName(key);if(xmlNode&&xmlNode.item(0)&&xmlNode.item(0)){data=xmlNode.item(0).firstChild.nodeValue;var item=xmlNode.item(0);data=(item.text)?item.text:(item.textContent)?item.textContent:null;
-if(!data){var datapieces=[];for(var j=0,len=item.childNodes.length;j<len;j++){if(item.childNodes[j].nodeValue){datapieces[datapieces.length]=item.childNodes[j].nodeValue;}}if(datapieces.length>0){data=datapieces.join("");}}}}if(data===null){data="";}if(!field.parser&&field.converter){field.parser=field.converter;}var parser=(typeof field.parser==="function")?field.parser:DS.Parser[field.parser+""];if(parser){data=parser.call(this,data);}if(data===undefined){data=null;}oResult[key]=data;}}catch(e){}return oResult;},parseXMLData:function(oRequest,oFullResponse){var bError=false,schema=this.responseSchema,oParsedResponse={meta:{}},xmlList=null,metaNode=schema.metaNode,metaLocators=schema.metaFields||{},i,k,loc,v;try{xmlList=(schema.resultNode)?oFullResponse.getElementsByTagName(schema.resultNode):null;metaNode=metaNode?oFullResponse.getElementsByTagName(metaNode)[0]:oFullResponse;if(metaNode){for(k in metaLocators){if(lang.hasOwnProperty(metaLocators,k)){loc=metaLocators[k];v=metaNode.getElementsByTagName(loc)[0];if(v){v=v.firstChild.nodeValue;}else{v=metaNode.attributes.getNamedItem(loc);if(v){v=v.value;}}if(lang.isValue(v)){oParsedResponse.meta[k]=v;}}}}}catch(e){}if(!xmlList||!lang.isArray(schema.fields)){bError=true;}else{oParsedResponse.results=[];for(i=xmlList.length-1;i>=0;--i){var oResult=this.parseXMLResult(xmlList.item(i));oParsedResponse.results[i]=oResult;}}if(bError){oParsedResponse.error=true;}else{}return oParsedResponse;},parseJSONData:function(oRequest,oFullResponse){var oParsedResponse={results:[],meta:{}};if(lang.isObject(oFullResponse)&&this.responseSchema.resultsList){var schema=this.responseSchema,fields=schema.fields,resultsList=oFullResponse,results=[],metaFields=schema.metaFields||{},fieldParsers=[],fieldPaths=[],simpleFields=[],bError=false,i,len,j,v,key,parser,path;var buildPath=function(needle){var path=null,keys=[],i=0;if(needle){needle=needle.replace(/\[(['"])(.*?)\1\]/g,function(x,$1,$2){keys[i]=$2;return".@"+(i++);}).replace(/\[(\d+)\]/g,function(x,$1){keys[i]=parseInt($1,10)|0;return".@"+(i++);}).replace(/^\./,"");if(!/[^\w\.\$@]/.test(needle)){path=needle.split(".");for(i=path.length-1;i>=0;--i){if(path[i].charAt(0)==="@"){path[i]=keys[parseInt(path[i].substr(1),10)];}}}else{}}return path;};var walkPath=function(path,origin){var v=origin,i=0,len=path.length;for(;i<len&&v;++i){v=v[path[i]];}return v;};path=buildPath(schema.resultsList);if(path){resultsList=walkPath(path,oFullResponse);if(resultsList===undefined){bError=true;}}else{bError=true;}if(!resultsList){resultsList=[];}if(!lang.isArray(resultsList)){resultsList=[resultsList];}if(!bError){if(schema.fields){var field;for(i=0,len=fields.length;i<len;i++){field=fields[i];key=field.key||field;parser=((typeof field.parser==="function")?field.parser:DS.Parser[field.parser+""])||field.converter;path=buildPath(key);if(parser){fieldParsers[fieldParsers.length]={key:key,parser:parser};}if(path){if(path.length>1){fieldPaths[fieldPaths.length]={key:key,path:path};}else{simpleFields[simpleFields.length]={key:key,path:path[0]};}}else{}}for(i=resultsList.length-1;i>=0;--i){var r=resultsList[i],rec={};for(j=simpleFields.length-1;j>=0;--j){rec[simpleFields[j].key]=(r[simpleFields[j].path]!==undefined)?r[simpleFields[j].path]:r[j];}for(j=fieldPaths.length-1;j>=0;--j){rec[fieldPaths[j].key]=walkPath(fieldPaths[j].path,r);}for(j=fieldParsers.length-1;j>=0;--j){var p=fieldParsers[j].key;rec[p]=fieldParsers[j].parser(rec[p]);if(rec[p]===undefined){rec[p]=null;}}results[i]=rec;}}else{results=resultsList;}for(key in metaFields){if(lang.hasOwnProperty(metaFields,key)){path=buildPath(metaFields[key]);if(path){v=walkPath(path,oFullResponse);oParsedResponse.meta[key]=v;}}}}else{oParsedResponse.error=true;}oParsedResponse.results=results;}else{oParsedResponse.error=true;}return oParsedResponse;},parseHTMLTableData:function(oRequest,oFullResponse){var bError=false;var elTable=oFullResponse;var fields=this.responseSchema.fields;var oParsedResponse={results:[]};for(var i=0;i<elTable.tBodies.length;i++){var elTbody=elTable.tBodies[i];for(var j=elTbody.rows.length-1;j>-1;j--){var elRow=elTbody.rows[j];var oResult={};for(var k=fields.length-1;k>-1;k--){var field=fields[k];var key=(lang.isValue(field.key))?field.key:field;var data=elRow.cells[k].innerHTML;if(!field.parser&&field.converter){field.parser=field.converter;}var parser=(typeof field.parser==="function")?field.parser:DS.Parser[field.parser+""];if(parser){data=parser.call(this,data);}if(data===undefined){data=null;}oResult[key]=data;}oParsedResponse.results[j]=oResult;}}if(bError){oParsedResponse.error=true;}else{}return oParsedResponse;}};lang.augmentProto(DS,util.EventProvider);util.LocalDataSource=function(oLiveData,oConfigs){this.dataType=DS.TYPE_LOCAL;if(oLiveData){if(YAHOO.lang.isArray(oLiveData)){this.responseType=DS.TYPE_JSARRAY;}else{if(oLiveData.nodeType&&oLiveData.nodeType==9){this.responseType=DS.TYPE_XML;}else{if(oLiveData.nodeName&&(oLiveData.nodeName.toLowerCase()=="table")){this.responseType=DS.TYPE_HTMLTABLE;oLiveData=oLiveData.cloneNode(true);}else{if(YAHOO.lang.isString(oLiveData)){this.responseType=DS.TYPE_TEXT;}else{if(YAHOO.lang.isObject(oLiveData)){this.responseType=DS.TYPE_JSON;}}}}}}else{oLiveData=[];this.responseType=DS.TYPE_JSARRAY;}this.constructor.superclass.constructor.call(this,oLiveData,oConfigs);};lang.extend(util.LocalDataSource,DS);lang.augmentObject(util.LocalDataSource,DS);util.FunctionDataSource=function(oLiveData,oConfigs){this.dataType=DS.TYPE_JSFUNCTION;oLiveData=oLiveData||function(){};this.constructor.superclass.constructor.call(this,oLiveData,oConfigs);};lang.extend(util.FunctionDataSource,DS,{makeConnection:function(oRequest,oCallback,oCaller){var tId=DS._nTransactionId++;this.fireEvent("requestEvent",{tId:tId,request:oRequest,callback:oCallback,caller:oCaller});var oRawResponse=this.liveData(oRequest);if(this.responseType===DS.TYPE_UNKNOWN){if(YAHOO.lang.isArray(oRawResponse)){this.responseType=DS.TYPE_JSARRAY;}else{if(oRawResponse&&oRawResponse.nodeType&&oRawResponse.nodeType==9){this.responseType=DS.TYPE_XML;
-}else{if(oRawResponse&&oRawResponse.nodeName&&(oRawResponse.nodeName.toLowerCase()=="table")){this.responseType=DS.TYPE_HTMLTABLE;}else{if(YAHOO.lang.isObject(oRawResponse)){this.responseType=DS.TYPE_JSON;}else{if(YAHOO.lang.isString(oRawResponse)){this.responseType=DS.TYPE_TEXT;}}}}}}this.handleResponse(oRequest,oRawResponse,oCallback,oCaller,tId);return tId;}});lang.augmentObject(util.FunctionDataSource,DS);util.ScriptNodeDataSource=function(oLiveData,oConfigs){this.dataType=DS.TYPE_SCRIPTNODE;oLiveData=oLiveData||"";this.constructor.superclass.constructor.call(this,oLiveData,oConfigs);};lang.extend(util.ScriptNodeDataSource,DS,{getUtility:util.Get,asyncMode:"allowAll",scriptCallbackParam:"callback",generateRequestCallback:function(id){return"&"+this.scriptCallbackParam+"=YAHOO.util.ScriptNodeDataSource.callbacks["+id+"]";},makeConnection:function(oRequest,oCallback,oCaller){var tId=DS._nTransactionId++;this.fireEvent("requestEvent",{tId:tId,request:oRequest,callback:oCallback,caller:oCaller});if(util.ScriptNodeDataSource._nPending===0){util.ScriptNodeDataSource.callbacks=[];util.ScriptNodeDataSource._nId=0;}var id=util.ScriptNodeDataSource._nId;util.ScriptNodeDataSource._nId++;var oSelf=this;util.ScriptNodeDataSource.callbacks[id]=function(oRawResponse){if((oSelf.asyncMode!=="ignoreStaleResponses")||(id===util.ScriptNodeDataSource.callbacks.length-1)){if(oSelf.responseType===DS.TYPE_UNKNOWN){if(YAHOO.lang.isArray(oRawResponse)){oSelf.responseType=DS.TYPE_JSARRAY;}else{if(oRawResponse.nodeType&&oRawResponse.nodeType==9){oSelf.responseType=DS.TYPE_XML;}else{if(oRawResponse.nodeName&&(oRawResponse.nodeName.toLowerCase()=="table")){oSelf.responseType=DS.TYPE_HTMLTABLE;}else{if(YAHOO.lang.isObject(oRawResponse)){oSelf.responseType=DS.TYPE_JSON;}else{if(YAHOO.lang.isString(oRawResponse)){oSelf.responseType=DS.TYPE_TEXT;}}}}}}oSelf.handleResponse(oRequest,oRawResponse,oCallback,oCaller,tId);}else{}delete util.ScriptNodeDataSource.callbacks[id];};util.ScriptNodeDataSource._nPending++;var sUri=this.liveData+oRequest+this.generateRequestCallback(id);this.getUtility.script(sUri,{autopurge:true,onsuccess:util.ScriptNodeDataSource._bumpPendingDown,onfail:util.ScriptNodeDataSource._bumpPendingDown});return tId;}});lang.augmentObject(util.ScriptNodeDataSource,DS);lang.augmentObject(util.ScriptNodeDataSource,{_nId:0,_nPending:0,callbacks:[]});util.XHRDataSource=function(oLiveData,oConfigs){this.dataType=DS.TYPE_XHR;this.connMgr=this.connMgr||util.Connect;oLiveData=oLiveData||"";this.constructor.superclass.constructor.call(this,oLiveData,oConfigs);};lang.extend(util.XHRDataSource,DS,{connMgr:null,connXhrMode:"allowAll",connMethodPost:false,connTimeout:0,makeConnection:function(oRequest,oCallback,oCaller){var oRawResponse=null;var tId=DS._nTransactionId++;this.fireEvent("requestEvent",{tId:tId,request:oRequest,callback:oCallback,caller:oCaller});var oSelf=this;var oConnMgr=this.connMgr;var oQueue=this._oQueue;var _xhrSuccess=function(oResponse){if(oResponse&&(this.asyncMode=="ignoreStaleResponses")&&(oResponse.tId!=oQueue.conn.tId)){return null;}else{if(!oResponse){this.fireEvent("dataErrorEvent",{request:oRequest,callback:oCallback,caller:oCaller,message:DS.ERROR_DATANULL});DS.issueCallback(oCallback,[oRequest,{error:true}],true,oCaller);return null;}else{if(this.responseType===DS.TYPE_UNKNOWN){var ctype=(oResponse.getResponseHeader)?oResponse.getResponseHeader["Content-Type"]:null;if(ctype){if(ctype.indexOf("text/xml")>-1){this.responseType=DS.TYPE_XML;}else{if(ctype.indexOf("application/json")>-1){this.responseType=DS.TYPE_JSON;}else{if(ctype.indexOf("text/plain")>-1){this.responseType=DS.TYPE_TEXT;}}}}}this.handleResponse(oRequest,oResponse,oCallback,oCaller,tId);}}};var _xhrFailure=function(oResponse){this.fireEvent("dataErrorEvent",{request:oRequest,callback:oCallback,caller:oCaller,message:DS.ERROR_DATAINVALID});if(lang.isString(this.liveData)&&lang.isString(oRequest)&&(this.liveData.lastIndexOf("?")!==this.liveData.length-1)&&(oRequest.indexOf("?")!==0)){}oResponse=oResponse||{};oResponse.error=true;DS.issueCallback(oCallback,[oRequest,oResponse],true,oCaller);return null;};var _xhrCallback={success:_xhrSuccess,failure:_xhrFailure,scope:this};if(lang.isNumber(this.connTimeout)){_xhrCallback.timeout=this.connTimeout;}if(this.connXhrMode=="cancelStaleRequests"){if(oQueue.conn){if(oConnMgr.abort){oConnMgr.abort(oQueue.conn);oQueue.conn=null;}else{}}}if(oConnMgr&&oConnMgr.asyncRequest){var sLiveData=this.liveData;var isPost=this.connMethodPost;var sMethod=(isPost)?"POST":"GET";var sUri=(isPost||!lang.isValue(oRequest))?sLiveData:sLiveData+oRequest;var sRequest=(isPost)?oRequest:null;if(this.connXhrMode!="queueRequests"){oQueue.conn=oConnMgr.asyncRequest(sMethod,sUri,_xhrCallback,sRequest);}else{if(oQueue.conn){var allRequests=oQueue.requests;allRequests.push({request:oRequest,callback:_xhrCallback});if(!oQueue.interval){oQueue.interval=setInterval(function(){if(oConnMgr.isCallInProgress(oQueue.conn)){return ;}else{if(allRequests.length>0){sUri=(isPost||!lang.isValue(allRequests[0].request))?sLiveData:sLiveData+allRequests[0].request;sRequest=(isPost)?allRequests[0].request:null;oQueue.conn=oConnMgr.asyncRequest(sMethod,sUri,allRequests[0].callback,sRequest);allRequests.shift();}else{clearInterval(oQueue.interval);oQueue.interval=null;}}},50);}}else{oQueue.conn=oConnMgr.asyncRequest(sMethod,sUri,_xhrCallback,sRequest);}}}else{DS.issueCallback(oCallback,[oRequest,{error:true}],true,oCaller);}return tId;}});lang.augmentObject(util.XHRDataSource,DS);util.DataSource=function(oLiveData,oConfigs){oConfigs=oConfigs||{};var dataType=oConfigs.dataType;if(dataType){if(dataType==DS.TYPE_LOCAL){lang.augmentObject(util.DataSource,util.LocalDataSource);return new util.LocalDataSource(oLiveData,oConfigs);}else{if(dataType==DS.TYPE_XHR){lang.augmentObject(util.DataSource,util.XHRDataSource);return new util.XHRDataSource(oLiveData,oConfigs);}else{if(dataType==DS.TYPE_SCRIPTNODE){lang.augmentObject(util.DataSource,util.ScriptNodeDataSource);
-return new util.ScriptNodeDataSource(oLiveData,oConfigs);}else{if(dataType==DS.TYPE_JSFUNCTION){lang.augmentObject(util.DataSource,util.FunctionDataSource);return new util.FunctionDataSource(oLiveData,oConfigs);}}}}}if(YAHOO.lang.isString(oLiveData)){lang.augmentObject(util.DataSource,util.XHRDataSource);return new util.XHRDataSource(oLiveData,oConfigs);}else{if(YAHOO.lang.isFunction(oLiveData)){lang.augmentObject(util.DataSource,util.FunctionDataSource);return new util.FunctionDataSource(oLiveData,oConfigs);}else{lang.augmentObject(util.DataSource,util.LocalDataSource);return new util.LocalDataSource(oLiveData,oConfigs);}}};lang.augmentObject(util.DataSource,DS);})();YAHOO.util.Number={format:function(B,F){F=F||{};if(!YAHOO.lang.isNumber(B)){B*=1;}if(YAHOO.lang.isNumber(B)){var D=(B<0);var J=B+"";var G=(F.decimalSeparator)?F.decimalSeparator:".";var H;if(YAHOO.lang.isNumber(F.decimalPlaces)){var I=F.decimalPlaces;var C=Math.pow(10,I);J=Math.round(B*C)/C+"";H=J.lastIndexOf(".");if(I>0){if(H<0){J+=G;H=J.length-1;}else{if(G!=="."){J=J.replace(".",G);}}while((J.length-1-H)<I){J+="0";}}}if(F.thousandsSeparator){var L=F.thousandsSeparator;H=J.lastIndexOf(G);H=(H>-1)?H:J.length;var K=J.substring(H);var A=-1;for(var E=H;E>0;E--){A++;if((A%3===0)&&(E!==H)&&(!D||(E>1))){K=L+K;}K=J.charAt(E-1)+K;}J=K;}J=(F.prefix)?F.prefix+J:J;J=(F.suffix)?J+F.suffix:J;return J;}else{return B;}}};(function(){var A=function(C,E,D){if(typeof D==="undefined"){D=10;}for(;parseInt(C,10)<D&&D>1;D/=10){C=E.toString()+C;}return C.toString();};var B={formats:{a:function(D,C){return C.a[D.getDay()];},A:function(D,C){return C.A[D.getDay()];},b:function(D,C){return C.b[D.getMonth()];},B:function(D,C){return C.B[D.getMonth()];},C:function(C){return A(parseInt(C.getFullYear()/100,10),0);},d:["getDate","0"],e:["getDate"," "],g:function(C){return A(parseInt(B.formats.G(C)%100,10),0);},G:function(E){var F=E.getFullYear();var D=parseInt(B.formats.V(E),10);var C=parseInt(B.formats.W(E),10);if(C>D){F++;}else{if(C===0&&D>=52){F--;}}return F;},H:["getHours","0"],I:function(D){var C=D.getHours()%12;return A(C===0?12:C,0);},j:function(G){var F=new Date(""+G.getFullYear()+"/1/1 GMT");var D=new Date(""+G.getFullYear()+"/"+(G.getMonth()+1)+"/"+G.getDate()+" GMT");var C=D-F;var E=parseInt(C/60000/60/24,10)+1;return A(E,0,100);},k:["getHours"," "],l:function(D){var C=D.getHours()%12;return A(C===0?12:C," ");},m:function(C){return A(C.getMonth()+1,0);},M:["getMinutes","0"],p:function(D,C){return C.p[D.getHours()>=12?1:0];},P:function(D,C){return C.P[D.getHours()>=12?1:0];},s:function(D,C){return parseInt(D.getTime()/1000,10);},S:["getSeconds","0"],u:function(C){var D=C.getDay();return D===0?7:D;},U:function(F){var C=parseInt(B.formats.j(F),10);var E=6-F.getDay();var D=parseInt((C+E)/7,10);return A(D,0);},V:function(F){var E=parseInt(B.formats.W(F),10);var C=(new Date(""+F.getFullYear()+"/1/1")).getDay();var D=E+(C>4||C<=1?0:1);if(D===53&&(new Date(""+F.getFullYear()+"/12/31")).getDay()<4){D=1;}else{if(D===0){D=B.formats.V(new Date(""+(F.getFullYear()-1)+"/12/31"));}}return A(D,0);},w:"getDay",W:function(F){var C=parseInt(B.formats.j(F),10);var E=7-B.formats.u(F);var D=parseInt((C+E)/7,10);return A(D,0,10);},y:function(C){return A(C.getFullYear()%100,0);},Y:"getFullYear",z:function(E){var D=E.getTimezoneOffset();var C=A(parseInt(Math.abs(D/60),10),0);var F=A(Math.abs(D%60),0);return(D>0?"-":"+")+C+F;},Z:function(C){var D=C.toString().replace(/^.*:\d\d( GMT[+-]\d+)? \(?([A-Za-z ]+)\)?\d*$/,"$2").replace(/[a-z ]/g,"");if(D.length>4){D=B.formats.z(C);}return D;},"%":function(C){return"%";}},aggregates:{c:"locale",D:"%m/%d/%y",F:"%Y-%m-%d",h:"%b",n:"\n",r:"locale",R:"%H:%M",t:"\t",T:"%H:%M:%S",x:"locale",X:"locale"},format:function(G,F,D){F=F||{};if(!(G instanceof Date)){return YAHOO.lang.isValue(G)?G:"";}var H=F.format||"%m/%d/%Y";if(H==="YYYY/MM/DD"){H="%Y/%m/%d";}else{if(H==="DD/MM/YYYY"){H="%d/%m/%Y";}else{if(H==="MM/DD/YYYY"){H="%m/%d/%Y";}}}D=D||"en";if(!(D in YAHOO.util.DateLocale)){if(D.replace(/-[a-zA-Z]+$/,"") in YAHOO.util.DateLocale){D=D.replace(/-[a-zA-Z]+$/,"");}else{D="en";}}var J=YAHOO.util.DateLocale[D];var C=function(L,K){var M=B.aggregates[K];return(M==="locale"?J[K]:M);};var E=function(L,K){var M=B.formats[K];if(typeof M==="string"){return G[M]();}else{if(typeof M==="function"){return M.call(G,G,J);}else{if(typeof M==="object"&&typeof M[0]==="string"){return A(G[M[0]](),M[1]);}else{return K;}}}};while(H.match(/%[cDFhnrRtTxX]/)){H=H.replace(/%([cDFhnrRtTxX])/g,C);}var I=H.replace(/%([aAbBCdegGHIjklmMpPsSuUVwWyYzZ%])/g,E);C=E=undefined;return I;}};YAHOO.namespace("YAHOO.util");YAHOO.util.Date=B;YAHOO.util.DateLocale={a:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],A:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],B:["January","February","March","April","May","June","July","August","September","October","November","December"],c:"%a %d %b %Y %T %Z",p:["AM","PM"],P:["am","pm"],r:"%I:%M:%S %p",x:"%d/%m/%y",X:"%T"};YAHOO.util.DateLocale["en"]=YAHOO.lang.merge(YAHOO.util.DateLocale,{});YAHOO.util.DateLocale["en-US"]=YAHOO.lang.merge(YAHOO.util.DateLocale["en"],{c:"%a %d %b %Y %I:%M:%S %p %Z",x:"%m/%d/%Y",X:"%I:%M:%S %p"});YAHOO.util.DateLocale["en-GB"]=YAHOO.lang.merge(YAHOO.util.DateLocale["en"],{r:"%l:%M:%S %P %Z"});YAHOO.util.DateLocale["en-AU"]=YAHOO.lang.merge(YAHOO.util.DateLocale["en"]);})();YAHOO.register("datasource",YAHOO.util.DataSource,{version:"2.6.0",build:"1321"});/*
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.6.0
-*/
-YAHOO.widget.DS_JSArray=YAHOO.util.LocalDataSource;YAHOO.widget.DS_JSFunction=YAHOO.util.FunctionDataSource;YAHOO.widget.DS_XHR=function(B,A,D){var C=new YAHOO.util.XHRDataSource(B,D);C._aDeprecatedSchema=A;return C;};YAHOO.widget.DS_ScriptNode=function(B,A,D){var C=new YAHOO.util.ScriptNodeDataSource(B,D);C._aDeprecatedSchema=A;return C;};YAHOO.widget.DS_XHR.TYPE_JSON=YAHOO.util.DataSourceBase.TYPE_JSON;YAHOO.widget.DS_XHR.TYPE_XML=YAHOO.util.DataSourceBase.TYPE_XML;YAHOO.widget.DS_XHR.TYPE_FLAT=YAHOO.util.DataSourceBase.TYPE_TEXT;YAHOO.widget.AutoComplete=function(G,B,J,C){if(G&&B&&J){if(J instanceof YAHOO.util.DataSourceBase){this.dataSource=J;}else{return ;}this.key=0;var D=J.responseSchema;if(J._aDeprecatedSchema){var K=J._aDeprecatedSchema;if(YAHOO.lang.isArray(K)){if((J.responseType===YAHOO.util.DataSourceBase.TYPE_JSON)||(J.responseType===YAHOO.util.DataSourceBase.TYPE_UNKNOWN)){D.resultsList=K[0];this.key=K[1];D.fields=(K.length<3)?null:K.slice(1);}else{if(J.responseType===YAHOO.util.DataSourceBase.TYPE_XML){D.resultNode=K[0];this.key=K[1];D.fields=K.slice(1);}else{if(J.responseType===YAHOO.util.DataSourceBase.TYPE_TEXT){D.recordDelim=K[0];D.fieldDelim=K[1];}}}J.responseSchema=D;}}if(YAHOO.util.Dom.inDocument(G)){if(YAHOO.lang.isString(G)){this._sName="instance"+YAHOO.widget.AutoComplete._nIndex+" "+G;this._elTextbox=document.getElementById(G);}else{this._sName=(G.id)?"instance"+YAHOO.widget.AutoComplete._nIndex+" "+G.id:"instance"+YAHOO.widget.AutoComplete._nIndex;this._elTextbox=G;}YAHOO.util.Dom.addClass(this._elTextbox,"yui-ac-input");}else{return ;}if(YAHOO.util.Dom.inDocument(B)){if(YAHOO.lang.isString(B)){this._elContainer=document.getElementById(B);}else{this._elContainer=B;}if(this._elContainer.style.display=="none"){}var E=this._elContainer.parentNode;var A=E.tagName.toLowerCase();if(A=="div"){YAHOO.util.Dom.addClass(E,"yui-ac");}else{}}else{return ;}if(this.dataSource.dataType===YAHOO.util.DataSourceBase.TYPE_LOCAL){this.applyLocalFilter=true;}if(C&&(C.constructor==Object)){for(var I in C){if(I){this[I]=C[I];}}}this._initContainerEl();this._initProps();this._initListEl();this._initContainerHelperEls();var H=this;var F=this._elTextbox;YAHOO.util.Event.addListener(F,"keyup",H._onTextboxKeyUp,H);YAHOO.util.Event.addListener(F,"keydown",H._onTextboxKeyDown,H);YAHOO.util.Event.addListener(F,"focus",H._onTextboxFocus,H);YAHOO.util.Event.addListener(F,"blur",H._onTextboxBlur,H);YAHOO.util.Event.addListener(B,"mouseover",H._onContainerMouseover,H);YAHOO.util.Event.addListener(B,"mouseout",H._onContainerMouseout,H);YAHOO.util.Event.addListener(B,"click",H._onContainerClick,H);YAHOO.util.Event.addListener(B,"scroll",H._onContainerScroll,H);YAHOO.util.Event.addListener(B,"resize",H._onContainerResize,H);YAHOO.util.Event.addListener(F,"keypress",H._onTextboxKeyPress,H);YAHOO.util.Event.addListener(window,"unload",H._onWindowUnload,H);this.textboxFocusEvent=new YAHOO.util.CustomEvent("textboxFocus",this);this.textboxKeyEvent=new YAHOO.util.CustomEvent("textboxKey",this);this.dataRequestEvent=new YAHOO.util.CustomEvent("dataRequest",this);this.dataReturnEvent=new YAHOO.util.CustomEvent("dataReturn",this);this.dataErrorEvent=new YAHOO.util.CustomEvent("dataError",this);this.containerPopulateEvent=new YAHOO.util.CustomEvent("containerPopulate",this);this.containerExpandEvent=new YAHOO.util.CustomEvent("containerExpand",this);this.typeAheadEvent=new YAHOO.util.CustomEvent("typeAhead",this);this.itemMouseOverEvent=new YAHOO.util.CustomEvent("itemMouseOver",this);this.itemMouseOutEvent=new YAHOO.util.CustomEvent("itemMouseOut",this);this.itemArrowToEvent=new YAHOO.util.CustomEvent("itemArrowTo",this);this.itemArrowFromEvent=new YAHOO.util.CustomEvent("itemArrowFrom",this);this.itemSelectEvent=new YAHOO.util.CustomEvent("itemSelect",this);this.unmatchedItemSelectEvent=new YAHOO.util.CustomEvent("unmatchedItemSelect",this);this.selectionEnforceEvent=new YAHOO.util.CustomEvent("selectionEnforce",this);this.containerCollapseEvent=new YAHOO.util.CustomEvent("containerCollapse",this);this.textboxBlurEvent=new YAHOO.util.CustomEvent("textboxBlur",this);this.textboxChangeEvent=new YAHOO.util.CustomEvent("textboxChange",this);F.setAttribute("autocomplete","off");YAHOO.widget.AutoComplete._nIndex++;}else{}};YAHOO.widget.AutoComplete.prototype.dataSource=null;YAHOO.widget.AutoComplete.prototype.applyLocalFilter=null;YAHOO.widget.AutoComplete.prototype.queryMatchCase=false;YAHOO.widget.AutoComplete.prototype.queryMatchContains=false;YAHOO.widget.AutoComplete.prototype.queryMatchSubset=false;YAHOO.widget.AutoComplete.prototype.minQueryLength=1;YAHOO.widget.AutoComplete.prototype.maxResultsDisplayed=10;YAHOO.widget.AutoComplete.prototype.queryDelay=0.2;YAHOO.widget.AutoComplete.prototype.typeAheadDelay=0.5;YAHOO.widget.AutoComplete.prototype.queryInterval=500;YAHOO.widget.AutoComplete.prototype.highlightClassName="yui-ac-highlight";YAHOO.widget.AutoComplete.prototype.prehighlightClassName=null;YAHOO.widget.AutoComplete.prototype.delimChar=null;YAHOO.widget.AutoComplete.prototype.autoHighlight=true;YAHOO.widget.AutoComplete.prototype.typeAhead=false;YAHOO.widget.AutoComplete.prototype.animHoriz=false;YAHOO.widget.AutoComplete.prototype.animVert=true;YAHOO.widget.AutoComplete.prototype.animSpeed=0.3;YAHOO.widget.AutoComplete.prototype.forceSelection=false;YAHOO.widget.AutoComplete.prototype.allowBrowserAutocomplete=true;YAHOO.widget.AutoComplete.prototype.alwaysShowContainer=false;YAHOO.widget.AutoComplete.prototype.useIFrame=false;YAHOO.widget.AutoComplete.prototype.useShadow=false;YAHOO.widget.AutoComplete.prototype.suppressInputUpdate=false;YAHOO.widget.AutoComplete.prototype.resultTypeList=true;YAHOO.widget.AutoComplete.prototype.queryQuestionMark=true;YAHOO.widget.AutoComplete.prototype.toString=function(){return"AutoComplete "+this._sName;};YAHOO.widget.AutoComplete.prototype.getInputEl=function(){return this._elTextbox;};YAHOO.widget.AutoComplete.prototype.getContainerEl=function(){return this._elContainer;
-};YAHOO.widget.AutoComplete.prototype.isFocused=function(){return(this._bFocused===null)?false:this._bFocused;};YAHOO.widget.AutoComplete.prototype.isContainerOpen=function(){return this._bContainerOpen;};YAHOO.widget.AutoComplete.prototype.getListEl=function(){return this._elList;};YAHOO.widget.AutoComplete.prototype.getListItemMatch=function(A){if(A._sResultMatch){return A._sResultMatch;}else{return null;}};YAHOO.widget.AutoComplete.prototype.getListItemData=function(A){if(A._oResultData){return A._oResultData;}else{return null;}};YAHOO.widget.AutoComplete.prototype.getListItemIndex=function(A){if(YAHOO.lang.isNumber(A._nItemIndex)){return A._nItemIndex;}else{return null;}};YAHOO.widget.AutoComplete.prototype.setHeader=function(B){if(this._elHeader){var A=this._elHeader;if(B){A.innerHTML=B;A.style.display="block";}else{A.innerHTML="";A.style.display="none";}}};YAHOO.widget.AutoComplete.prototype.setFooter=function(B){if(this._elFooter){var A=this._elFooter;if(B){A.innerHTML=B;A.style.display="block";}else{A.innerHTML="";A.style.display="none";}}};YAHOO.widget.AutoComplete.prototype.setBody=function(A){if(this._elBody){var B=this._elBody;YAHOO.util.Event.purgeElement(B,true);if(A){B.innerHTML=A;B.style.display="block";}else{B.innerHTML="";B.style.display="none";}this._elList=null;}};YAHOO.widget.AutoComplete.prototype.generateRequest=function(B){var A=this.dataSource.dataType;if(A===YAHOO.util.DataSourceBase.TYPE_XHR){if(!this.dataSource.connMethodPost){B=(this.queryQuestionMark?"?":"")+(this.dataSource.scriptQueryParam||"query")+"="+B+(this.dataSource.scriptQueryAppend?("&"+this.dataSource.scriptQueryAppend):"");}else{B=(this.dataSource.scriptQueryParam||"query")+"="+B+(this.dataSource.scriptQueryAppend?("&"+this.dataSource.scriptQueryAppend):"");}}else{if(A===YAHOO.util.DataSourceBase.TYPE_SCRIPTNODE){B="&"+(this.dataSource.scriptQueryParam||"query")+"="+B+(this.dataSource.scriptQueryAppend?("&"+this.dataSource.scriptQueryAppend):"");}}return B;};YAHOO.widget.AutoComplete.prototype.sendQuery=function(B){var A=(this.delimChar)?this._elTextbox.value+B:B;this._sendQuery(A);};YAHOO.widget.AutoComplete.prototype.collapseContainer=function(){this._toggleContainer(false);};YAHOO.widget.AutoComplete.prototype.getSubsetMatches=function(E){var D,C,A;for(var B=E.length;B>=this.minQueryLength;B--){A=this.generateRequest(E.substr(0,B));this.dataRequestEvent.fire(this,D,A);C=this.dataSource.getCachedResponse(A);if(C){return this.filterResults.apply(this.dataSource,[E,C,C,{scope:this}]);}}return null;};YAHOO.widget.AutoComplete.prototype.preparseRawResponse=function(C,B,A){var D=((this.responseStripAfter!=="")&&(B.indexOf))?B.indexOf(this.responseStripAfter):-1;if(D!=-1){B=B.substring(0,D);}return B;};YAHOO.widget.AutoComplete.prototype.filterResults=function(J,L,P,K){if(J&&J!==""){P=YAHOO.widget.AutoComplete._cloneObject(P);var H=K.scope,O=this,B=P.results,M=[],D=false,I=(O.queryMatchCase||H.queryMatchCase),A=(O.queryMatchContains||H.queryMatchContains);for(var C=B.length-1;C>=0;C--){var F=B[C];var E=null;if(YAHOO.lang.isString(F)){E=F;}else{if(YAHOO.lang.isArray(F)){E=F[0];}else{if(this.responseSchema.fields){var N=this.responseSchema.fields[0].key||this.responseSchema.fields[0];E=F[N];}else{if(this.key){E=F[this.key];}}}}if(YAHOO.lang.isString(E)){var G=(I)?E.indexOf(decodeURIComponent(J)):E.toLowerCase().indexOf(decodeURIComponent(J).toLowerCase());if((!A&&(G===0))||(A&&(G>-1))){M.unshift(F);}}}P.results=M;}else{}return P;};YAHOO.widget.AutoComplete.prototype.handleResponse=function(C,A,B){if((this instanceof YAHOO.widget.AutoComplete)&&this._sName){this._populateList(C,A,B);}};YAHOO.widget.AutoComplete.prototype.doBeforeLoadData=function(C,A,B){return true;};YAHOO.widget.AutoComplete.prototype.formatResult=function(B,D,A){var C=(A)?A:"";return C;};YAHOO.widget.AutoComplete.prototype.doBeforeExpandContainer=function(D,A,C,B){return true;};YAHOO.widget.AutoComplete.prototype.destroy=function(){var B=this.toString();var A=this._elTextbox;var D=this._elContainer;this.textboxFocusEvent.unsubscribeAll();this.textboxKeyEvent.unsubscribeAll();this.dataRequestEvent.unsubscribeAll();this.dataReturnEvent.unsubscribeAll();this.dataErrorEvent.unsubscribeAll();this.containerPopulateEvent.unsubscribeAll();this.containerExpandEvent.unsubscribeAll();this.typeAheadEvent.unsubscribeAll();this.itemMouseOverEvent.unsubscribeAll();this.itemMouseOutEvent.unsubscribeAll();this.itemArrowToEvent.unsubscribeAll();this.itemArrowFromEvent.unsubscribeAll();this.itemSelectEvent.unsubscribeAll();this.unmatchedItemSelectEvent.unsubscribeAll();this.selectionEnforceEvent.unsubscribeAll();this.containerCollapseEvent.unsubscribeAll();this.textboxBlurEvent.unsubscribeAll();this.textboxChangeEvent.unsubscribeAll();YAHOO.util.Event.purgeElement(A,true);YAHOO.util.Event.purgeElement(D,true);D.innerHTML="";for(var C in this){if(YAHOO.lang.hasOwnProperty(this,C)){this[C]=null;}}};YAHOO.widget.AutoComplete.prototype.textboxFocusEvent=null;YAHOO.widget.AutoComplete.prototype.textboxKeyEvent=null;YAHOO.widget.AutoComplete.prototype.dataRequestEvent=null;YAHOO.widget.AutoComplete.prototype.dataReturnEvent=null;YAHOO.widget.AutoComplete.prototype.dataErrorEvent=null;YAHOO.widget.AutoComplete.prototype.containerPopulateEvent=null;YAHOO.widget.AutoComplete.prototype.containerExpandEvent=null;YAHOO.widget.AutoComplete.prototype.typeAheadEvent=null;YAHOO.widget.AutoComplete.prototype.itemMouseOverEvent=null;YAHOO.widget.AutoComplete.prototype.itemMouseOutEvent=null;YAHOO.widget.AutoComplete.prototype.itemArrowToEvent=null;YAHOO.widget.AutoComplete.prototype.itemArrowFromEvent=null;YAHOO.widget.AutoComplete.prototype.itemSelectEvent=null;YAHOO.widget.AutoComplete.prototype.unmatchedItemSelectEvent=null;YAHOO.widget.AutoComplete.prototype.selectionEnforceEvent=null;YAHOO.widget.AutoComplete.prototype.containerCollapseEvent=null;YAHOO.widget.AutoComplete.prototype.textboxBlurEvent=null;YAHOO.widget.AutoComplete.prototype.textboxChangeEvent=null;YAHOO.widget.AutoComplete._nIndex=0;
-YAHOO.widget.AutoComplete.prototype._sName=null;YAHOO.widget.AutoComplete.prototype._elTextbox=null;YAHOO.widget.AutoComplete.prototype._elContainer=null;YAHOO.widget.AutoComplete.prototype._elContent=null;YAHOO.widget.AutoComplete.prototype._elHeader=null;YAHOO.widget.AutoComplete.prototype._elBody=null;YAHOO.widget.AutoComplete.prototype._elFooter=null;YAHOO.widget.AutoComplete.prototype._elShadow=null;YAHOO.widget.AutoComplete.prototype._elIFrame=null;YAHOO.widget.AutoComplete.prototype._bFocused=null;YAHOO.widget.AutoComplete.prototype._oAnim=null;YAHOO.widget.AutoComplete.prototype._bContainerOpen=false;YAHOO.widget.AutoComplete.prototype._bOverContainer=false;YAHOO.widget.AutoComplete.prototype._elList=null;YAHOO.widget.AutoComplete.prototype._nDisplayedItems=0;YAHOO.widget.AutoComplete.prototype._sCurQuery=null;YAHOO.widget.AutoComplete.prototype._sPastSelections="";YAHOO.widget.AutoComplete.prototype._sInitInputValue=null;YAHOO.widget.AutoComplete.prototype._elCurListItem=null;YAHOO.widget.AutoComplete.prototype._bItemSelected=false;YAHOO.widget.AutoComplete.prototype._nKeyCode=null;YAHOO.widget.AutoComplete.prototype._nDelayID=-1;YAHOO.widget.AutoComplete.prototype._nTypeAheadDelayID=-1;YAHOO.widget.AutoComplete.prototype._iFrameSrc="javascript:false;";YAHOO.widget.AutoComplete.prototype._queryInterval=null;YAHOO.widget.AutoComplete.prototype._sLastTextboxValue=null;YAHOO.widget.AutoComplete.prototype._initProps=function(){var B=this.minQueryLength;if(!YAHOO.lang.isNumber(B)){this.minQueryLength=1;}var E=this.maxResultsDisplayed;if(!YAHOO.lang.isNumber(E)||(E<1)){this.maxResultsDisplayed=10;}var F=this.queryDelay;if(!YAHOO.lang.isNumber(F)||(F<0)){this.queryDelay=0.2;}var C=this.typeAheadDelay;if(!YAHOO.lang.isNumber(C)||(C<0)){this.typeAheadDelay=0.2;}var A=this.delimChar;if(YAHOO.lang.isString(A)&&(A.length>0)){this.delimChar=[A];}else{if(!YAHOO.lang.isArray(A)){this.delimChar=null;}}var D=this.animSpeed;if((this.animHoriz||this.animVert)&&YAHOO.util.Anim){if(!YAHOO.lang.isNumber(D)||(D<0)){this.animSpeed=0.3;}if(!this._oAnim){this._oAnim=new YAHOO.util.Anim(this._elContent,{},this.animSpeed);}else{this._oAnim.duration=this.animSpeed;}}if(this.forceSelection&&A){}};YAHOO.widget.AutoComplete.prototype._initContainerHelperEls=function(){if(this.useShadow&&!this._elShadow){var A=document.createElement("div");A.className="yui-ac-shadow";A.style.width=0;A.style.height=0;this._elShadow=this._elContainer.appendChild(A);}if(this.useIFrame&&!this._elIFrame){var B=document.createElement("iframe");B.src=this._iFrameSrc;B.frameBorder=0;B.scrolling="no";B.style.position="absolute";B.style.width=0;B.style.height=0;B.tabIndex=-1;B.style.padding=0;this._elIFrame=this._elContainer.appendChild(B);}};YAHOO.widget.AutoComplete.prototype._initContainerEl=function(){YAHOO.util.Dom.addClass(this._elContainer,"yui-ac-container");if(!this._elContent){var C=document.createElement("div");C.className="yui-ac-content";C.style.display="none";this._elContent=this._elContainer.appendChild(C);var B=document.createElement("div");B.className="yui-ac-hd";B.style.display="none";this._elHeader=this._elContent.appendChild(B);var D=document.createElement("div");D.className="yui-ac-bd";this._elBody=this._elContent.appendChild(D);var A=document.createElement("div");A.className="yui-ac-ft";A.style.display="none";this._elFooter=this._elContent.appendChild(A);}else{}};YAHOO.widget.AutoComplete.prototype._initListEl=function(){var C=this.maxResultsDisplayed;var A=this._elList||document.createElement("ul");var B;while(A.childNodes.length<C){B=document.createElement("li");B.style.display="none";B._nItemIndex=A.childNodes.length;A.appendChild(B);}if(!this._elList){var D=this._elBody;YAHOO.util.Event.purgeElement(D,true);D.innerHTML="";this._elList=D.appendChild(A);}};YAHOO.widget.AutoComplete.prototype._enableIntervalDetection=function(){var A=this;if(!A._queryInterval&&A.queryInterval){A._queryInterval=setInterval(function(){A._onInterval();},A.queryInterval);}};YAHOO.widget.AutoComplete.prototype._onInterval=function(){var A=this._elTextbox.value;var B=this._sLastTextboxValue;if(A!=B){this._sLastTextboxValue=A;this._sendQuery(A);}};YAHOO.widget.AutoComplete.prototype._clearInterval=function(){if(this._queryInterval){clearInterval(this._queryInterval);this._queryInterval=null;}};YAHOO.widget.AutoComplete.prototype._isIgnoreKey=function(A){if((A==9)||(A==13)||(A==16)||(A==17)||(A>=18&&A<=20)||(A==27)||(A>=33&&A<=35)||(A>=36&&A<=40)||(A>=44&&A<=45)||(A==229)){return true;}return false;};YAHOO.widget.AutoComplete.prototype._sendQuery=function(G){if(this.minQueryLength<0){this._toggleContainer(false);return ;}var I=(this.delimChar)?this.delimChar:null;if(I){var B=-1;for(var F=I.length-1;F>=0;F--){var D=G.lastIndexOf(I[F]);if(D>B){B=D;}}if(I[F]==" "){for(var E=I.length-1;E>=0;E--){if(G[B-1]==I[E]){B--;break;}}}if(B>-1){var H=B+1;while(G.charAt(H)==" "){H+=1;}this._sPastSelections=G.substring(0,H);G=G.substr(H);}else{this._sPastSelections="";}}if((G&&(G.length<this.minQueryLength))||(!G&&this.minQueryLength>0)){if(this._nDelayID!=-1){clearTimeout(this._nDelayID);}this._toggleContainer(false);return ;}G=encodeURIComponent(G);this._nDelayID=-1;if(this.dataSource.queryMatchSubset||this.queryMatchSubset){var A=this.getSubsetMatches(G);if(A){this.handleResponse(G,A,{query:G});return ;}}if(this.responseStripAfter){this.dataSource.doBeforeParseData=this.preparseRawResponse;}if(this.applyLocalFilter){this.dataSource.doBeforeCallback=this.filterResults;}var C=this.generateRequest(G);this.dataRequestEvent.fire(this,G,C);this.dataSource.sendRequest(C,{success:this.handleResponse,failure:this.handleResponse,scope:this,argument:{query:G}});};YAHOO.widget.AutoComplete.prototype._populateList=function(K,F,C){if(this._nTypeAheadDelayID!=-1){clearTimeout(this._nTypeAheadDelayID);}K=(C&&C.query)?C.query:K;var H=this.doBeforeLoadData(K,F,C);if(H&&!F.error){this.dataReturnEvent.fire(this,K,F.results);if(this._bFocused||(this._bFocused===null)){var M=decodeURIComponent(K);
-this._sCurQuery=M;this._bItemSelected=false;var R=F.results,A=Math.min(R.length,this.maxResultsDisplayed),J=(this.dataSource.responseSchema.fields)?(this.dataSource.responseSchema.fields[0].key||this.dataSource.responseSchema.fields[0]):0;if(A>0){if(!this._elList||(this._elList.childNodes.length<A)){this._initListEl();}this._initContainerHelperEls();var I=this._elList.childNodes;for(var Q=A-1;Q>=0;Q--){var P=I[Q],E=R[Q];if(this.resultTypeList){var B=[];B[0]=(YAHOO.lang.isString(E))?E:E[J]||E[this.key];var L=this.dataSource.responseSchema.fields;if(YAHOO.lang.isArray(L)&&(L.length>1)){for(var N=1,S=L.length;N<S;N++){B[B.length]=E[L[N].key||L[N]];}}else{if(YAHOO.lang.isArray(E)){B=E;}else{if(YAHOO.lang.isString(E)){B=[E];}else{B[1]=E;}}}E=B;}P._sResultMatch=(YAHOO.lang.isString(E))?E:(YAHOO.lang.isArray(E))?E[0]:(E[J]||"");P._oResultData=E;P.innerHTML=this.formatResult(E,M,P._sResultMatch);P.style.display="";}if(A<I.length){var G;for(var O=I.length-1;O>=A;O--){G=I[O];G.style.display="none";}}this._nDisplayedItems=A;this.containerPopulateEvent.fire(this,K,R);if(this.autoHighlight){var D=this._elList.firstChild;this._toggleHighlight(D,"to");this.itemArrowToEvent.fire(this,D);this._typeAhead(D,K);}else{this._toggleHighlight(this._elCurListItem,"from");}H=this.doBeforeExpandContainer(this._elTextbox,this._elContainer,K,R);this._toggleContainer(H);}else{this._toggleContainer(false);}return ;}}else{this.dataErrorEvent.fire(this,K);}};YAHOO.widget.AutoComplete.prototype._clearSelection=function(){var C=this._elTextbox.value;var B=(this.delimChar)?this.delimChar[0]:null;var A=(B)?C.lastIndexOf(B,C.length-2):-1;if(A>-1){this._elTextbox.value=C.substring(0,A);}else{this._elTextbox.value="";}this._sPastSelections=this._elTextbox.value;this.selectionEnforceEvent.fire(this);};YAHOO.widget.AutoComplete.prototype._textMatchesOption=function(){var A=null;for(var B=this._nDisplayedItems-1;B>=0;B--){var C=this._elList.childNodes[B];var D=(""+C._sResultMatch).toLowerCase();if(D==this._sCurQuery.toLowerCase()){A=C;break;}}return(A);};YAHOO.widget.AutoComplete.prototype._typeAhead=function(B,D){if(!this.typeAhead||(this._nKeyCode==8)){return ;}var A=this,C=this._elTextbox;if(C.setSelectionRange||C.createTextRange){this._nTypeAheadDelayID=setTimeout(function(){var F=C.value.length;A._updateValue(B);var G=C.value.length;A._selectText(C,F,G);var E=C.value.substr(F,G);A.typeAheadEvent.fire(A,D,E);},(this.typeAheadDelay*1000));}};YAHOO.widget.AutoComplete.prototype._selectText=function(D,A,B){if(D.setSelectionRange){D.setSelectionRange(A,B);}else{if(D.createTextRange){var C=D.createTextRange();C.moveStart("character",A);C.moveEnd("character",B-D.value.length);C.select();}else{D.select();}}};YAHOO.widget.AutoComplete.prototype._toggleContainerHelpers=function(D){var E=this._elContent.offsetWidth+"px";var B=this._elContent.offsetHeight+"px";if(this.useIFrame&&this._elIFrame){var C=this._elIFrame;if(D){C.style.width=E;C.style.height=B;C.style.padding="";}else{C.style.width=0;C.style.height=0;C.style.padding=0;}}if(this.useShadow&&this._elShadow){var A=this._elShadow;if(D){A.style.width=E;A.style.height=B;}else{A.style.width=0;A.style.height=0;}}};YAHOO.widget.AutoComplete.prototype._toggleContainer=function(I){var D=this._elContainer;if(this.alwaysShowContainer&&this._bContainerOpen){return ;}if(!I){this._toggleHighlight(this._elCurListItem,"from");this._nDisplayedItems=0;this._sCurQuery=null;if(!this._bContainerOpen){this._elContent.style.display="none";return ;}}var A=this._oAnim;if(A&&A.getEl()&&(this.animHoriz||this.animVert)){if(A.isAnimated()){A.stop(true);}var G=this._elContent.cloneNode(true);D.appendChild(G);G.style.top="-9000px";G.style.width="";G.style.height="";G.style.display="";var F=G.offsetWidth;var C=G.offsetHeight;var B=(this.animHoriz)?0:F;var E=(this.animVert)?0:C;A.attributes=(I)?{width:{to:F},height:{to:C}}:{width:{to:B},height:{to:E}};if(I&&!this._bContainerOpen){this._elContent.style.width=B+"px";this._elContent.style.height=E+"px";}else{this._elContent.style.width=F+"px";this._elContent.style.height=C+"px";}D.removeChild(G);G=null;var H=this;var J=function(){A.onComplete.unsubscribeAll();if(I){H._toggleContainerHelpers(true);H._bContainerOpen=I;H.containerExpandEvent.fire(H);}else{H._elContent.style.display="none";H._bContainerOpen=I;H.containerCollapseEvent.fire(H);}};this._toggleContainerHelpers(false);this._elContent.style.display="";A.onComplete.subscribe(J);A.animate();}else{if(I){this._elContent.style.display="";this._toggleContainerHelpers(true);this._bContainerOpen=I;this.containerExpandEvent.fire(this);}else{this._toggleContainerHelpers(false);this._elContent.style.display="none";this._bContainerOpen=I;this.containerCollapseEvent.fire(this);}}};YAHOO.widget.AutoComplete.prototype._toggleHighlight=function(A,C){if(A){var B=this.highlightClassName;if(this._elCurListItem){YAHOO.util.Dom.removeClass(this._elCurListItem,B);this._elCurListItem=null;}if((C=="to")&&B){YAHOO.util.Dom.addClass(A,B);this._elCurListItem=A;}}};YAHOO.widget.AutoComplete.prototype._togglePrehighlight=function(B,C){if(B==this._elCurListItem){return ;}var A=this.prehighlightClassName;if((C=="mouseover")&&A){YAHOO.util.Dom.addClass(B,A);}else{YAHOO.util.Dom.removeClass(B,A);}};YAHOO.widget.AutoComplete.prototype._updateValue=function(C){if(!this.suppressInputUpdate){var F=this._elTextbox;var E=(this.delimChar)?(this.delimChar[0]||this.delimChar):null;var B=C._sResultMatch;var D="";if(E){D=this._sPastSelections;D+=B+E;if(E!=" "){D+=" ";}}else{D=B;}F.value=D;if(F.type=="textarea"){F.scrollTop=F.scrollHeight;}var A=F.value.length;this._selectText(F,A,A);this._elCurListItem=C;}};YAHOO.widget.AutoComplete.prototype._selectItem=function(A){this._bItemSelected=true;this._updateValue(A);this._sPastSelections=this._elTextbox.value;this._clearInterval();this.itemSelectEvent.fire(this,A,A._oResultData);this._toggleContainer(false);};YAHOO.widget.AutoComplete.prototype._jumpSelection=function(){if(this._elCurListItem){this._selectItem(this._elCurListItem);
-}else{this._toggleContainer(false);}};YAHOO.widget.AutoComplete.prototype._moveSelection=function(G){if(this._bContainerOpen){var F=this._elCurListItem;var E=-1;if(F){E=F._nItemIndex;}var C=(G==40)?(E+1):(E-1);if(C<-2||C>=this._nDisplayedItems){return ;}if(F){this._toggleHighlight(F,"from");this.itemArrowFromEvent.fire(this,F);}if(C==-1){if(this.delimChar){this._elTextbox.value=this._sPastSelections+this._sCurQuery;}else{this._elTextbox.value=this._sCurQuery;}return ;}if(C==-2){this._toggleContainer(false);return ;}var D=this._elList.childNodes[C];var A=this._elContent;var B=((YAHOO.util.Dom.getStyle(A,"overflow")=="auto")||(YAHOO.util.Dom.getStyle(A,"overflowY")=="auto"));if(B&&(C>-1)&&(C<this._nDisplayedItems)){if(G==40){if((D.offsetTop+D.offsetHeight)>(A.scrollTop+A.offsetHeight)){A.scrollTop=(D.offsetTop+D.offsetHeight)-A.offsetHeight;}else{if((D.offsetTop+D.offsetHeight)<A.scrollTop){A.scrollTop=D.offsetTop;}}}else{if(D.offsetTop<A.scrollTop){this._elContent.scrollTop=D.offsetTop;}else{if(D.offsetTop>(A.scrollTop+A.offsetHeight)){this._elContent.scrollTop=(D.offsetTop+D.offsetHeight)-A.offsetHeight;}}}}this._toggleHighlight(D,"to");this.itemArrowToEvent.fire(this,D);if(this.typeAhead){this._updateValue(D);}}};YAHOO.widget.AutoComplete.prototype._onContainerMouseover=function(A,C){var D=YAHOO.util.Event.getTarget(A);var B=D.nodeName.toLowerCase();while(D&&(B!="table")){switch(B){case"body":return ;case"li":if(C.prehighlightClassName){C._togglePrehighlight(D,"mouseover");}else{C._toggleHighlight(D,"to");}C.itemMouseOverEvent.fire(C,D);break;case"div":if(YAHOO.util.Dom.hasClass(D,"yui-ac-container")){C._bOverContainer=true;return ;}break;default:break;}D=D.parentNode;if(D){B=D.nodeName.toLowerCase();}}};YAHOO.widget.AutoComplete.prototype._onContainerMouseout=function(A,C){var D=YAHOO.util.Event.getTarget(A);var B=D.nodeName.toLowerCase();while(D&&(B!="table")){switch(B){case"body":return ;case"li":if(C.prehighlightClassName){C._togglePrehighlight(D,"mouseout");}else{C._toggleHighlight(D,"from");}C.itemMouseOutEvent.fire(C,D);break;case"ul":C._toggleHighlight(C._elCurListItem,"to");break;case"div":if(YAHOO.util.Dom.hasClass(D,"yui-ac-container")){C._bOverContainer=false;return ;}break;default:break;}D=D.parentNode;if(D){B=D.nodeName.toLowerCase();}}};YAHOO.widget.AutoComplete.prototype._onContainerClick=function(A,C){var D=YAHOO.util.Event.getTarget(A);var B=D.nodeName.toLowerCase();while(D&&(B!="table")){switch(B){case"body":return ;case"li":C._toggleHighlight(D,"to");C._selectItem(D);return ;default:break;}D=D.parentNode;if(D){B=D.nodeName.toLowerCase();}}};YAHOO.widget.AutoComplete.prototype._onContainerScroll=function(A,B){B._elTextbox.focus();};YAHOO.widget.AutoComplete.prototype._onContainerResize=function(A,B){B._toggleContainerHelpers(B._bContainerOpen);};YAHOO.widget.AutoComplete.prototype._onTextboxKeyDown=function(A,B){var C=A.keyCode;if(B._nTypeAheadDelayID!=-1){clearTimeout(B._nTypeAheadDelayID);}switch(C){case 9:if(!YAHOO.env.ua.opera&&(navigator.userAgent.toLowerCase().indexOf("mac")==-1)||(YAHOO.env.ua.webkit>420)){if(B._elCurListItem){if(B.delimChar&&(B._nKeyCode!=C)){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._elCurListItem);}else{B._toggleContainer(false);}}break;case 13:if(!YAHOO.env.ua.opera&&(navigator.userAgent.toLowerCase().indexOf("mac")==-1)||(YAHOO.env.ua.webkit>420)){if(B._elCurListItem){if(B._nKeyCode!=C){if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);}}B._selectItem(B._elCurListItem);}else{B._toggleContainer(false);}}break;case 27:B._toggleContainer(false);return ;case 39:B._jumpSelection();break;case 38:if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);B._moveSelection(C);}break;case 40:if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);B._moveSelection(C);}break;default:B._bItemSelected=false;B._toggleHighlight(B._elCurListItem,"from");B.textboxKeyEvent.fire(B,C);break;}if(C===18){B._enableIntervalDetection();}B._nKeyCode=C;};YAHOO.widget.AutoComplete.prototype._onTextboxKeyPress=function(A,B){var C=A.keyCode;if(YAHOO.env.ua.opera||(navigator.userAgent.toLowerCase().indexOf("mac")!=-1)&&(YAHOO.env.ua.webkit<420)){switch(C){case 9:if(B._bContainerOpen){if(B.delimChar){YAHOO.util.Event.stopEvent(A);}if(B._elCurListItem){B._selectItem(B._elCurListItem);}else{B._toggleContainer(false);}}break;case 13:if(B._bContainerOpen){YAHOO.util.Event.stopEvent(A);if(B._elCurListItem){B._selectItem(B._elCurListItem);}else{B._toggleContainer(false);}}break;default:break;}}else{if(C==229){B._enableIntervalDetection();}}};YAHOO.widget.AutoComplete.prototype._onTextboxKeyUp=function(A,C){var B=this.value;C._initProps();var D=A.keyCode;if(C._isIgnoreKey(D)){return ;}if(C._nDelayID!=-1){clearTimeout(C._nDelayID);}C._nDelayID=setTimeout(function(){C._sendQuery(B);},(C.queryDelay*1000));};YAHOO.widget.AutoComplete.prototype._onTextboxFocus=function(A,B){if(!B._bFocused){B._elTextbox.setAttribute("autocomplete","off");B._bFocused=true;B._sInitInputValue=B._elTextbox.value;B.textboxFocusEvent.fire(B);}};YAHOO.widget.AutoComplete.prototype._onTextboxBlur=function(A,C){if(!C._bOverContainer||(C._nKeyCode==9)){if(!C._bItemSelected){var B=C._textMatchesOption();if(!C._bContainerOpen||(C._bContainerOpen&&(B===null))){if(C.forceSelection){C._clearSelection();}else{C.unmatchedItemSelectEvent.fire(C,C._sCurQuery);}}else{if(C.forceSelection){C._selectItem(B);}}}if(C._bContainerOpen){C._toggleContainer(false);}C._clearInterval();C._bFocused=false;if(C._sInitInputValue!==C._elTextbox.value){C.textboxChangeEvent.fire(C);}C.textboxBlurEvent.fire(C);}};YAHOO.widget.AutoComplete.prototype._onWindowUnload=function(A,B){if(B&&B._elTextbox&&B.allowBrowserAutocomplete){B._elTextbox.setAttribute("autocomplete","on");}};YAHOO.widget.AutoComplete.prototype.doBeforeSendQuery=function(A){return this.generateRequest(A);};YAHOO.widget.AutoComplete.prototype.getListItems=function(){var C=[],B=this._elList.childNodes;for(var A=B.length-1;A>=0;A--){C[A]=B[A];}return C;};YAHOO.widget.AutoComplete._cloneObject=function(D){if(!YAHOO.lang.isValue(D)){return D;
-}var F={};if(YAHOO.lang.isFunction(D)){F=D;}else{if(YAHOO.lang.isArray(D)){var E=[];for(var C=0,B=D.length;C<B;C++){E[C]=YAHOO.widget.AutoComplete._cloneObject(D[C]);}F=E;}else{if(YAHOO.lang.isObject(D)){for(var A in D){if(YAHOO.lang.hasOwnProperty(D,A)){if(YAHOO.lang.isValue(D[A])&&YAHOO.lang.isObject(D[A])||YAHOO.lang.isArray(D[A])){F[A]=YAHOO.widget.AutoComplete._cloneObject(D[A]);}else{F[A]=D[A];}}}}else{F=D;}}}return F;};YAHOO.register("autocomplete",YAHOO.widget.AutoComplete,{version:"2.6.0",build:"1321"});/*
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.6.0
-*/
-YAHOO.namespace("util");YAHOO.util.Cookie={_createCookieString:function(B,D,C,A){var F=YAHOO.lang;var E=encodeURIComponent(B)+"="+(C?encodeURIComponent(D):D);if(F.isObject(A)){if(A.expires instanceof Date){E+="; expires="+A.expires.toGMTString();}if(F.isString(A.path)&&A.path!=""){E+="; path="+A.path;}if(F.isString(A.domain)&&A.domain!=""){E+="; domain="+A.domain;}if(A.secure===true){E+="; secure";}}return E;},_createCookieHashString:function(B){var D=YAHOO.lang;if(!D.isObject(B)){throw new TypeError("Cookie._createCookieHashString(): Argument must be an object.");}var C=new Array();for(var A in B){if(D.hasOwnProperty(B,A)&&!D.isFunction(B[A])&&!D.isUndefined(B[A])){C.push(encodeURIComponent(A)+"="+encodeURIComponent(String(B[A])));}}return C.join("&");},_parseCookieHash:function(E){var D=E.split("&"),F=null,C=new Object();if(E.length>0){for(var B=0,A=D.length;B<A;B++){F=D[B].split("=");C[decodeURIComponent(F[0])]=decodeURIComponent(F[1]);}}return C;},_parseCookieString:function(I,A){var J=new Object();if(YAHOO.lang.isString(I)&&I.length>0){var B=(A===false?function(K){return K;}:decodeURIComponent);if(/[^=]+=[^=;]?(?:; [^=]+=[^=]?)?/.test(I)){var G=I.split(/;\s/g);var H=null;var C=null;var E=null;for(var D=0,F=G.length;D<F;D++){E=G[D].match(/([^=]+)=/i);if(E instanceof Array){H=decodeURIComponent(E[1]);C=B(G[D].substring(E[1].length+1));}else{H=decodeURIComponent(G[D]);C=H;}J[H]=C;}}}return J;},get:function(A,B){var D=YAHOO.lang;var C=this._parseCookieString(document.cookie);if(!D.isString(A)||A===""){throw new TypeError("Cookie.get(): Cookie name must be a non-empty string.");}if(D.isUndefined(C[A])){return null;}if(!D.isFunction(B)){return C[A];}else{return B(C[A]);}},getSub:function(A,C,B){var E=YAHOO.lang;var D=this.getSubs(A);if(D!==null){if(!E.isString(C)||C===""){throw new TypeError("Cookie.getSub(): Subcookie name must be a non-empty string.");}if(E.isUndefined(D[C])){return null;}if(!E.isFunction(B)){return D[C];}else{return B(D[C]);}}else{return null;}},getSubs:function(A){if(!YAHOO.lang.isString(A)||A===""){throw new TypeError("Cookie.getSubs(): Cookie name must be a non-empty string.");}var B=this._parseCookieString(document.cookie,false);if(YAHOO.lang.isString(B[A])){return this._parseCookieHash(B[A]);}return null;},remove:function(B,A){if(!YAHOO.lang.isString(B)||B===""){throw new TypeError("Cookie.remove(): Cookie name must be a non-empty string.");}A=A||{};A.expires=new Date(0);return this.set(B,"",A);},removeSub:function(B,D,A){if(!YAHOO.lang.isString(B)||B===""){throw new TypeError("Cookie.removeSub(): Cookie name must be a non-empty string.");}if(!YAHOO.lang.isString(D)||D===""){throw new TypeError("Cookie.removeSub(): Subcookie name must be a non-empty string.");}var C=this.getSubs(B);if(YAHOO.lang.isObject(C)&&YAHOO.lang.hasOwnProperty(C,D)){delete C[D];return this.setSubs(B,C,A);}else{return"";}},set:function(B,C,A){var E=YAHOO.lang;if(!E.isString(B)){throw new TypeError("Cookie.set(): Cookie name must be a string.");}if(E.isUndefined(C)){throw new TypeError("Cookie.set(): Value cannot be undefined.");}var D=this._createCookieString(B,C,true,A);document.cookie=D;return D;},setSub:function(B,D,C,A){var F=YAHOO.lang;if(!F.isString(B)||B===""){throw new TypeError("Cookie.setSub(): Cookie name must be a non-empty string.");}if(!F.isString(D)||D===""){throw new TypeError("Cookie.setSub(): Subcookie name must be a non-empty string.");}if(F.isUndefined(C)){throw new TypeError("Cookie.setSub(): Subcookie value cannot be undefined.");}var E=this.getSubs(B);if(!F.isObject(E)){E=new Object();}E[D]=C;return this.setSubs(B,E,A);},setSubs:function(B,C,A){var E=YAHOO.lang;if(!E.isString(B)){throw new TypeError("Cookie.setSubs(): Cookie name must be a string.");}if(!E.isObject(C)){throw new TypeError("Cookie.setSubs(): Cookie value must be an object.");}var D=this._createCookieString(B,this._createCookieHashString(C),false,A);document.cookie=D;return D;}};YAHOO.register("cookie",YAHOO.util.Cookie,{version:"2.6.0",build:"1321"});
-
-
diff --git a/jarmonbuild/yuidoc_template/assets/api.css b/jarmonbuild/yuidoc_template/assets/api.css
deleted file mode 100644
index 878a0b1..0000000
--- a/jarmonbuild/yuidoc_template/assets/api.css
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
-body { background-color: #ECF0F6; }
-
-/* main page */
-a:link { color: #003399; }
-a:visited { color: #003399;}
-
-#doc3 #hd { margin-bottom:1em; position: relative; zoom: 1; }
-#doc3 #hd h1 { color: #545454; font-size: 170%; padding: 0; height: 60px; font-weight: bold; text-align: center;}
-#doc3 #hd h1 a { position: relative; top: 14px; }
-#doc3 #hd a { text-decoration: none; color: black; }
-#doc3 #hd h3 {
- background: #98AAB1; background-image: url(bg_hd.gif); color: #000; font-size: 100%; padding: 4px 10px; margin: 0 0 7px 0;
- border: 1px solid #98AAB1;
-}
-#ft hr {
- display: none;
-}
-#ft {
- background: #98AAB1; background-image: url(bg_hd.gif); color: #000; font-size: 100%; padding: 4px 10px; margin: 7px 0 0 0; border: 1px solid #98AAB1;
-}
-#doc3 #hd h3 A { color: #FFF; text-decoration: none; }
-#doc3 #hd .breadcrumbs { font-size: 85%; margin-bottom:10px;}
-#doc3 #hd .subtitle {position: absolute; right:1em; padding: 0px;margin:0px}
-
-#doc3 dl { margin: 2px 0; }
-#doc3 dd { margin-left: 20px; }
-#doc3 .requires dt { font-style: italic; }
-#doc3 .default { margin-top:6px; }
-#doc3 .detail .deprecated { margin-top:4px; padding:4px; background-color: #EFECCA }
-#doc3 .detail .deprecated strong { color:#441054; }
-#doc3 code, pre {font-size:85%}
-
-#doc3 #hd h1 {
- border: 1px solid #98AAB1;
- background-color: #fff;
- margin-bottom: .5em;
-
-}
-#bd {
- border: 1px solid #98AAB1;
- background-color: #fff;
-}
-
-.submodules dd {
- font-size: 93%;
- font-weight: italic;
-}
-
-
-#doc3 .classopts { font-size: 85%; float:right; margin:2px; padding: 2px; background-color:#ECF0F6;border: 1px solid #98AAB1;}
-#yui-classopts-form fieldset legend { display: none; }
-
-/* undo reset.css styles for description block formatting */
-#doc3 .description ul { padding: 10px 0 10px 28px; font-size: 90%; list-style: disc}
-#doc3 .description li { list-style: disc}
-#doc3 .description p { padding-bottom: 10px}
-#doc3 .description strong { font-weight: bold;}
-#doc3 .description em {padding: 2px; background-color: #EFECCA}
-#doc3 pre { padding: 10px;}
-
-#doc3 .summary { margin: 0px 10px 10px 0; padding:10px; background-color:#ECF0F6; border:1px solid #98AAB1; }
-#doc3 .extends {font-weight: normal; font-size: 90%}
-
-#doc3 .nav {min-height: 400px;}
-#doc3 .nav .module {
- width:100%;
- border-right: 1px solid #98AAB1;
- border-bottom: 1px solid #98AAB1;
- padding: 0; overflow:hidden;
-}
-#doc3 .nav .module h4 {
- padding: 3px 5px;
- border-bottom: 1px solid #98AAB1;
- background-image: url(bg_hd.gif);
-}
-#doc3 .nav .module h4 A { color: #000; text-decoration: none; }
-#doc3 .nav .module .content { padding: 2px; }
-#doc3 .nav .module UL.content LI { font-size: 90%; }
-#doc3 .nav .module UL.content A { text-decoration: none; color: black; display: block; padding: 2px 4px 2px 4px; }
-#doc3 .nav .module LI,
-#doc3 .nav .module LI A {
- zoom: 1;
-}
-#doc3 .nav .module LI.selected A,
-#doc3 .nav .module LI A:hover {
- background-color: #ECF0F6;
- zoom: 1;
-}
-
-#doc3 .section { margin: 0 7px 7px 0; }
-#doc3 .section strong { font-weight: bold;}
-#doc3 .section hr { border: none 0; border-top: 1px solid #ccc; }
-#doc3 .section h4 { font-size:110%;}
-#doc3 .section h3 { background: #98AAB1; background-image: url(bg_hd.gif); width: 98%; color: #000; padding: 3px; margin: 0 0 7px 0;
- border: 1px solid #98AAB1;
-
-}
-#doc3 .section h3 .top { font-size: 60%; font-weight: normal; width: 100%; font-family: verdana; padding-left: 20px; }
-#doc3 .section h3 .top A { color: #000; text-decoration: none; }
-
-#doc3 .section.details .content { padding: 0 0 0 10px; }
-#doc3 .section.details .description { padding: 10px 0 0 20px; }
-#doc3 .section.details .description dt { font-weight: bold; }
-#doc3 .section.details .description td { border:1px solid #ccc; margin:2px;padding:2px;}
-
-#doc3 .inheritance { padding:10px; background-color:#ECF0F6; border:1px solid #98AAB1; }
-#doc3 .inheritance h4 { font-size: 100%;}
-
-/* index page autocomplete */
-/*
-#propertysearch {;position:absolute;margin:1em;width:35em;}
-#searchinput {position:absolute;width:100%;height:1.4em;}
-#searchresults {position:absolute;top:1.7em;width:100%;}
-#searchresults .yui-ac-content {position:absolute;top:4px; left:0px; width:100%;height:20em;border:1px solid #aaa;background:#fff;overflow:auto;overflow-x:hidden;z-index:9050;}
-#searchresults .yui-ac-shadow {position:absolute;margin:.3em;width:100%;background:#a0a0a0;z-index:9049;}:
-#searchresults ul {padding:5px 0;width:100%;}
-#searchresults li {padding:0 5px;cursor:default;white-space:nowrap;}
-#searchresults li.yui-ac-highlight {background:#D1C6DA;}
-#searchresults li em { position:absolute; width:44%; overflow:hidden; color:#654D6C;}
-#searchresults li span { position:relative; left:46% }
-*/
-
-#propertysearch {
- width: 25em;
- position: absolute;
- right: 5px;
- bottom: -4px;
-}
-#searchinput {
- width: 83%;
- height: 1.4em;
-}
-#searchresults {
- position: absolute;
- right: 25em;
- top: 25px;
- height: 0;
-}
-#searchresults .yui-ac-content {
- position: absolute;
- top: 0;
- left: 0;
- width: 25em;
- height: 20em;
- border: 1px solid #98AAB1;
- background: #fff;
- overflow: auto;
- overflow-x: hidden;
- z-index: 9050;
-}
-#searchresults li.yui-ac-highlight {
- background-color: #ECF0F6;
-}
-#searchresults li em {
- width:44%;
- overflow: hidden;
- color: #98AAB1;
-}
-
-.deprecated, .private, .protected {
- display: none;
-}
-
-body.show_deprecated .deprecated,
-body.show_private .private,
-body.show_protected .protected {
- display: inherit;
-}
-
-#splash_classList ul {
- margin: 1em;
- margin-left:2em;
-}
-#splash_classList ul li {
- list-style: disc outside;
-}
-
-
-/* source code view */
-#srcout {min-width: 580px; }
-*html #srcout { width: 100%; padding-bottom:1em; overflow-x:auto }
-
-.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
-.highlight .err { border: 1px solid #FF0000 } /* Error */
-.highlight .k { color: #007020; font-weight: bold } /* Keyword */
-.highlight .o { color: #666666 } /* Operator */
-.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #007020 } /* Comment.Preproc */
-.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
-.highlight .gd { color: #A00000 } /* Generic.Deleted */
-.highlight .ge { font-style: italic } /* Generic.Emph */
-.highlight .gr { color: #FF0000 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #808080 } /* Generic.Output */
-.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
-.highlight .gs { font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #0040D0 } /* Generic.Traceback */
-.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
-.highlight .kp { color: #007020 } /* Keyword.Pseudo */
-.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #007020; font-weight: bold } /* Keyword.Type */
-.highlight .m { color: #40a070 } /* Literal.Number */
-.highlight .s { color: #4070a0 } /* Literal.String */
-.highlight .na { color: #4070a0 } /* Name.Attribute */
-.highlight .nb { color: #007020 } /* Name.Builtin */
-.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
-.highlight .no { color: #60add5 } /* Name.Constant */
-.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
-.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
-.highlight .ne { color: #007020 } /* Name.Exception */
-.highlight .nf { color: #06287e } /* Name.Function */
-.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
-.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
-.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #bb60d5 } /* Name.Variable */
-.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
-.highlight .mf { color: #40a070 } /* Literal.Number.Float */
-.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
-.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
-.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
-.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
-.highlight .sc { color: #4070a0 } /* Literal.String.Char */
-.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
-.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
-.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
-.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
-.highlight .sx { color: #c65d09 } /* Literal.String.Other */
-.highlight .sr { color: #235388 } /* Literal.String.Regex */
-.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
-.highlight .ss { color: #517918 } /* Literal.String.Symbol */
-.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
-.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
-.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
-.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
-.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
-
diff --git a/jarmonbuild/yuidoc_template/assets/bg_hd.gif b/jarmonbuild/yuidoc_template/assets/bg_hd.gif
deleted file mode 100644
index c10acba..0000000
--- a/jarmonbuild/yuidoc_template/assets/bg_hd.gif
+++ /dev/null
Binary files differ
diff --git a/jarmonbuild/yuidoc_template/assets/reset-fonts-grids-min.css b/jarmonbuild/yuidoc_template/assets/reset-fonts-grids-min.css
deleted file mode 100644
index 3d81c15..0000000
--- a/jarmonbuild/yuidoc_template/assets/reset-fonts-grids-min.css
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
-Copyright (c) 2008, Yahoo! Inc. All rights reserved.
-Code licensed under the BSD License:
-http://developer.yahoo.net/yui/license.txt
-version: 2.6.0
-*/
-html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}input,textarea,select{*font-size:100%;}legend{color:#000;}del,ins{text-decoration:none;}body{font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}select,input,button,textarea{font:99% arial,helvetica,clean,sans-serif;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;*font-size:108%;line-height:100%;}body{text-align:center;}#ft{clear:both;}#doc,#doc2,#doc3,#doc4,.yui-t1,.yui-t2,.yui-t3,.yui-t4,.yui-t5,.yui-t6,.yui-t7{margin:auto;text-align:left;width:57.69em;*width:56.25em;min-width:750px;}#doc2{width:73.076em;*width:71.25em;}#doc3{margin:auto 10px;width:auto;}#doc4{width:74.923em;*width:73.05em;}.yui-b{position:relative;}.yui-b{_position:static;}#yui-main .yui-b{position:static;}#yui-main,.yui-g .yui-u .yui-g{width:100%;}{width:100%;}.yui-t1 #yui-main,.yui-t2 #yui-main,.yui-t3 #yui-main{float:right;margin-left:-25em;}.yui-t4 #yui-main,.yui-t5 #yui-main,.yui-t6 #yui-main{float:left;margin-right:-25em;}.yui-t1 .yui-b{float:left;width:12.30769em;*width:12.00em;}.yui-t1 #yui-main .yui-b{margin-left:13.30769em;*margin-left:13.05em;}.yui-t2 .yui-b{float:left;width:13.8461em;*width:13.50em;}.yui-t2 #yui-main .yui-b{margin-left:14.8461em;*margin-left:14.55em;}.yui-t3 .yui-b{float:left;width:23.0769em;*width:22.50em;}.yui-t3 #yui-main .yui-b{margin-left:24.0769em;*margin-left:23.62em;}.yui-t4 .yui-b{float:right;width:13.8456em;*width:13.50em;}.yui-t4 #yui-main .yui-b{margin-right:14.8456em;*margin-right:14.55em;}.yui-t5 .yui-b{float:right;width:18.4615em;*width:18.00em;}.yui-t5 #yui-main .yui-b{margin-right:19.4615em;*margin-right:19.125em;}.yui-t6 .yui-b{float:right;width:23.0769em;*width:22.50em;}.yui-t6 #yui-main .yui-b{margin-right:24.0769em;*margin-right:23.62em;}.yui-t7 #yui-main .yui-b{display:block;margin:0 0 1em 0;}#yui-main .yui-b{float:none;width:auto;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf,.yui-gc .yui-u,.yui-gd .yui-g,.yui-g .yui-gc .yui-u,.yui-ge .yui-u,.yui-ge .yui-g,.yui-gf .yui-g,.yui-gf .yui-u{float:right;}.yui-g div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first,.yui-ge div.first,.yui-gf div.first,.yui-g .yui-gc div.first,.yui-g .yui-ge div.first,.yui-gc div.first div.first{float:left;}.yui-g .yui-u,.yui-g .yui-g,.yui-g .yui-gb,.yui-g .yui-gc,.yui-g .yui-gd,.yui-g .yui-ge,.yui-g .yui-gf{width:49.1%;}.yui-gb .yui-u,.yui-g .yui-gb .yui-u,.yui-gb .yui-g,.yui-gb .yui-gb,.yui-gb .yui-gc,.yui-gb .yui-gd,.yui-gb .yui-ge,.yui-gb .yui-gf,.yui-gc .yui-u,.yui-gc .yui-g,.yui-gd .yui-u{width:32%;margin-left:1.99%;}.yui-gb .yui-u{*margin-left:1.9%;*width:31.9%;}.yui-gc div.first,.yui-gd .yui-u{width:66%;}.yui-gd div.first{width:32%;}.yui-ge div.first,.yui-gf .yui-u{width:74.2%;}.yui-ge .yui-u,.yui-gf div.first{width:24%;}.yui-g .yui-gb div.first,.yui-gb div.first,.yui-gc div.first,.yui-gd div.first{margin-left:0;}.yui-g .yui-g .yui-u,.yui-gb .yui-g .yui-u,.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u,.yui-ge .yui-g .yui-u,.yui-gf .yui-g .yui-u{width:49%;*width:48.1%;*margin-left:0;}.yui-g .yui-g .yui-u{width:48.1%;}.yui-g .yui-gb div.first,.yui-gb .yui-gb div.first{*margin-right:0;*width:32%;_width:31.7%;}.yui-g .yui-gc div.first,.yui-gd .yui-g{width:66%;}.yui-gb .yui-g div.first{*margin-right:4%;_margin-right:1.3%;}.yui-gb .yui-gc div.first,.yui-gb .yui-gd div.first{*margin-right:0;}.yui-gb .yui-gb .yui-u,.yui-gb .yui-gc .yui-u{*margin-left:1.8%;_margin-left:4%;}.yui-g .yui-gb .yui-u{_margin-left:1.0%;}.yui-gb .yui-gd .yui-u{*width:66%;_width:61.2%;}.yui-gb .yui-gd div.first{*width:31%;_width:29.5%;}.yui-g .yui-gc .yui-u,.yui-gb .yui-gc .yui-u{width:32%;_float:right;margin-right:0;_margin-left:0;}.yui-gb .yui-gc div.first{width:66%;*float:left;*margin-left:0;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf .yui-u{margin:0;}.yui-gb .yui-gb .yui-u{_margin-left:.7%;}.yui-gb .yui-g div.first,.yui-gb .yui-gb div.first{*margin-left:0;}.yui-gc .yui-g .yui-u,.yui-gd .yui-g .yui-u{*width:48.1%;*margin-left:0;} .yui-gb .yui-gd div.first{width:32%;}.yui-g .yui-gd div.first{_width:29.9%;}.yui-ge .yui-g{width:24%;}.yui-gf .yui-g{width:74.2%;}.yui-gb .yui-ge div.yui-u,.yui-gb .yui-gf div.yui-u{float:right;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf div.first{float:left;}.yui-gb .yui-ge .yui-u,.yui-gb .yui-gf div.first{*width:24%;_width:20%;}.yui-gb .yui-ge div.first,.yui-gb .yui-gf .yui-u{*width:73.5%;_width:65.5%;}.yui-ge div.first .yui-gd .yui-u{width:65%;}.yui-ge div.first .yui-gd div.first{width:32%;}#bd:after,.yui-g:after,.yui-gb:after,.yui-gc:after,.yui-gd:after,.yui-ge:after,.yui-gf:after{content:".";display:block;height:0;clear:both;visibility:hidden;}#bd,.yui-g,.yui-gb,.yui-gc,.yui-gd,.yui-ge,.yui-gf{zoom:1;}
diff --git a/jarmonbuild/yuidoc_template/classmap.tmpl b/jarmonbuild/yuidoc_template/classmap.tmpl
deleted file mode 100644
index 34525a4..0000000
--- a/jarmonbuild/yuidoc_template/classmap.tmpl
+++ /dev/null
@@ -1,15 +0,0 @@
-YAHOO.env.classMap = ${pkgmap};
-
-YAHOO.env.resolveClass = function(className) {
- var a=className.split('.'), ns=YAHOO.env.classMap;
-
- for (var i=0; i<a.length; i=i+1) {
- if (ns[a[i]]) {
- ns = ns[a[i]];
- } else {
- return null;
- }
- }
-
- return ns;
-};
diff --git a/jarmonbuild/yuidoc_template/index.tmpl b/jarmonbuild/yuidoc_template/index.tmpl
deleted file mode 100644
index 0d4f505..0000000
--- a/jarmonbuild/yuidoc_template/index.tmpl
+++ /dev/null
@@ -1,9 +0,0 @@
-<html>
-<head>
- <script type="text/javascript">
- document.location.replace("${cleansedmodulename}.html");
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/jarmonbuild/yuidoc_template/main.tmpl b/jarmonbuild/yuidoc_template/main.tmpl
deleted file mode 100644
index d21fd0a..0000000
--- a/jarmonbuild/yuidoc_template/main.tmpl
+++ /dev/null
@@ -1,685 +0,0 @@
-#encoding UTF-8
-#filter EncodeUnicode
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html xmlns:yui="http://yuilibrary.com/rdf/1.0/yui.rdf#">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <title>API: $modulename #if $classname# $classname #end if# #if $filename# $filename #end if#</title>
-
- <link rel="stylesheet" type="text/css" href="assets/reset-fonts-grids-min.css" />
- <link rel="stylesheet" type="text/css" href="assets/api.css" />
-
- <script type="text/javascript" src="assets/api-js"></script>
- <script type="text/javascript" src="assets/ac-js"></script>
-</head>
-
-<body id="yahoo-com">
-
-<div id="doc3" class="yui-t2">
- <div id="hd">
- <h1><a href="$projecturl" title="$projectname">$projectname v$version API Documentation</a></h1>
- <h3>$moduletitle&nbsp; <span class="subtitle">$version</span></h3>
- <a href="./index.html" title="$projectname">$projectname</a>
- #if $modulename
- &gt; <a href="./${cleansedmodulename}.html" title="$modulename">$modulename</a>
- #if $classname# &gt; $classname #end if#
- #if $filename# &gt; $filename (source view) #end if#
- #end if
- <form onsubmit="return false">
- <div id="propertysearch">
- Search: <input autocomplete="off" id="searchinput" />
- <div id="searchresults">
- &nbsp;
- </div>
- </div>
- </form>
- </div>
-
- <div id="bd">
- <div id="yui-main">
- <div class="yui-b">
- <form action="#" name="yui-classopts-form" method="get" id="yui-classopts-form">
- <fieldset>
- <legend>Filters</legend>
- <span class="classopts"><input type="checkbox" name="show_private" id="show_private" /> <label for="show_private">Show Private</label></span>
- <span class="classopts"><input type="checkbox" name="show_protected" id="show_protected" /> <label for="show_protected">Show Protected</label></span>
- <span class="classopts"><input type="checkbox" name="show_deprecated" id="show_deprecated" /> <label for="show_deprecated">Show Deprecated</label></span>
- </fieldset>
- </form>
- #if $index
-
- <div class="summary description">
- This is the API documentation for
- <a href="$projecturl">$projectname</a>.
- <p>Choose a module name from the list for more information.</p>
- </div>
-
- #end if
-
- #if $filename
- <div id="srcout">
- <style>
- #doc3 .classopts { display:none; }
- </style>
- #include raw $filepath_highlighted
- </div>
- #else if $classname
- <h2>
- #if $access#<code>$access</code>#end if#
-
- #if $static#<code>$static</code>#end if#
- #if $final#<code>$final</code>#end if#
- Class <b property="yui:name">$classname</b>
- <span class="extends">
- #if $extends
- - extends <a href="${extends}.html" title="$extends">$extends</a>
- #end if
- </span>
-
- #if $uses
- <span class="extends" rel="yui:extends">
- - uses
- #set $i=0
- #for $provider in $uses##if $i > 0#, #end if#
- <span rel="extend" resource="${provider}.html">
- <a href="${provider}.html" property="yui:name" title="$provider">$provider</a>#set $i=$i+1#
- </span>
- #end for#
-
- </span>
- #end if
- </h2>
- <!-- class tree goes here -->
-
- #if $subclasses
- <dl class="subclasses" rel="yui:subclasses">
- <dt>Known Subclasses:</dt>
- <dd>
- #for $subclass in $subclasses
- <span rel="yui:subclass" resource="${subclass}.html">
- <a href="${subclass}.html" property="yui:name" title="$subclass">$subclass</a>
- </span>
- #end for
- </dd>
- </dl>
- #end if
-
- #if $deprecated
- <div class="deprecated"><strong>Deprecated:</strong> $deprecated</div>
- #end if
-
- #if $see
- <div class="deprecated"><strong>See also:</strong> $see</div>
- #end if
-
- <div class="summary description" property="yui:description">
- $description
- </div>
-
- #if $constructor
- <div class="section constructor details" rel="yui:constructor" resource="#constructor">
- <h3 id="constructor">Constructor</h3>
- <div class="content">
- <div class="detail">
- <strong property="yui:name">$classname</strong>
- <code>
- (
- #if $constructor.params
- #set $i=0
- #set $current=""
-
- #for $param in $constructor.params#
- #if $current != $param.name
- #if $i > 0#, #end if#
- #set $i = $i + 1
- #set $current = $param.name
- $param.name
- #end if
- #end for
- #end if
- )
- </code>
- <div class="description">
- #if $constructor.params
- <dl rel="yui:parameters">
- <dt>Parameters:</dt>
- #for $param in $constructor.params
- <dd rel="yui:parameter">
- <code><span property="yui:name">$param.name</span>
- &lt;<span property="yui:type">$param.type</span>&gt;
- </code>
- <span property="yui:description">$param.description</span>
- </dd>
- #end for
- </dl>
- #end if
-
- #if $constructor.return
- <dl>
- <dt>Returns:</dt>
- <dd property="yui:return">
- $constructor.return
- </dd>
- </dl>
- #end if
-
- </div>
- </div>
- </div>
- </div>
- #end if
-
- <div rel="yui:properties" resource="#properties">
- #if $properties
- <div class="section field details">
- <h3 id="properties">Properties</h3>
- <div class="content">
- #for $property in $properties
- <div class="$property.access#if $property.deprecated# deprecated#end if#" rel="yui:property" resource="#property_$property.name">
- <h4><a name="property_$property.name" property="yui:name">$property.name</a>
- - <code>#if $property.access#$property.access #end if##if $property.static#$property.static #end if##if $property.final#$property.final #end if#<span property="yui:type">$property.type</span></code>
- </h4>
- <div class="detail">
- <div class="description" property="yui:description">
- $property.description
- </div>
- </div>
-
-
- #if $property.default
- <div class="default" property="yui:defaultValue">
- Default Value: $property.default
- </div>
- #end if
-
- #if $property.deprecated
- <div class="deprecated" property="yui:deprecated">
- <strong>Deprecated:</strong> $property.deprecated
- </div>
- #end if
-
- <hr />
- </div>
- #end for
- </div>
- </div>
- #end if
-
- #if $inherited.properties
- <div rel="yui:inheritance">
- #for $superclassname in $inherited.properties
- <div class="section field inheritance" rel="yui:superclass" resource="${superclassname}.html">
- <h4>Properties inherited from <a href="${superclassname}.html" property="yui:name" title="$superclassname">$superclassname</a>:</h4>
- <div class="content" rel="yui:properties">
- <code>
- #set i=0
- #set l=len($inherited.properties[$superclassname])-1
- #for $prop in $inherited.properties[$superclassname]#
- <span rel="yui:property" resource="${superclassname}.html#property_$prop.name">
- <a class="$prop.access#if $prop.deprecated# deprecated#end if#" href="${superclassname}.html#property_$prop.name" property="yui:name" title="$prop.name">$prop.name</a>#if $i<$l#<span class="$prop.access#if $prop.deprecated# deprecated#end if#">,</span>#end if#
- </span>
- #set i=i+1
- #end for#
- </code>
- </div>
- </div>
- #end for
- </div>
- #end if
- </div>
-
- <div rel="yui:methods" resource="#methods">
- #if $methods
- <div class="section method details">
- <h3 id="methods">Methods</h3>
- <div class="content">
- #for $method in $methods
- <div class="$method.access#if $method.deprecated# deprecated#end if#" rel="yui:method" resource="#method_$method.name">
- <h4>
- <a name="method_$method.name">$method.name</a></h4>
- <div class="detail" >
- <code>
- #if $method.access# $method.access #end if#
- #if $method.static# $method.static #end if#
- #if $method.final# $method.final #end if#
- $method.return.type
- <strong property="yui:name">$method.name</strong>
- (
- #if $method.params
- #set $i=0
- #set $current = ""
- #for $param in $method.params#
- #if $current != $param.name
- #if $i > 0#, #end if#
- #set $i = $i + 1
- #set $current = $param.name
- $param.name
- #end if#
- #end for#
- #end if
- )
- </code>
-
- <div class="description" property="yui:description">
- $method.description
- </div>
-
- <div class="description">
-
- #if $method.params
- <dl rel="yui:parameters">
- <dt>Parameters:</dt>
- #for $param in $method.params
- <dd rel="yui:parameter">
- <code><span property="yui:name">$param.name</span>
- &lt;<span property="yui:type">$param.type</span>&gt;
- </code>
- <span property="yui:description">$param.description</span>
- </dd>
- #end for
- </dl>
- #end if
-
- #if $method.return.type
- <dl>
- <dt>Returns:
- <code property="yui:return">
- $method.return.type
- </code></dt>
- <dd property="yui:returnInfo">$method.return.description</dd>
- </dl>
- #end if
-
- #if $method.chainable
- <div class="chainable">
- <strong>Chainable:</strong> This method is chainable.
- </div>
- #end if
-
-
- #if $method.deprecated
- <div class="deprecated">
- <strong>Deprecated</strong> $method.deprecated
- </div>
- #end if
-
- </div>
-
- </div>
- <hr />
- </div>
- #end for
- </div>
- </div>
- #end if
-
- #if $inherited.methods
- <div rel="yui:inheritance">
- #for $superclassname in $inherited.methods
- <div class="section field inheritance" rel="yui:superclass" resource="${superclassname}.html">
- <h4>Methods inherited from <a href="${superclassname}.html" property="yui:name" title="$superclassname">$superclassname</a>:</h4>
- <div class="content" rel="yui:methods">
- <code>
- #set i=0
- #set l=len($inherited.methods[$superclassname])-1
- #for $method in $inherited.methods[$superclassname]
- <span rel="yui:method" resource="${superclassname}.html#method_$method.name">
- <a class="$method.access#if $method.deprecated# deprecated#end if#" href="${superclassname}.html#method_$method.name" property="yui:name" title="$method.name">$method.name</a>#if $i<$l#<span class="$method.access#if $method.deprecated# deprecated#end if#">,</span>#end if#
- </span>
- #set i=i+1
- #end for
- </code>
- </div>
- </div>
- #end for
- </div>
- #end if
- </div>
-
- <div rel="yui:events" resource="#events">
- #if $events
- <div class="section method details">
- <h3 id="events">Events</h3>
- <div class="content">
- #for $event in $events
- <div class="$event.access#if $event.deprecated# deprecated#end if#" rel="yui:event" resource="#event_$event.name">
- <h4>
- <a name="event_$event.name">$event.name</a></h4>
- <div class="detail">
- <code>
- #if $event.access# $event.access #end if#
- #if $event.static# $event.static #end if#
- #if $event.final# $event.final #end if#
- <strong property="yui:name">$event.name</strong>
-
- (
- #if $event.params
- #set $i=0
- #set $current = ""
- #for $param in $event.params#
- #if $current != $param.name
- #if $i > 0#, #end if#
- #set $i = $i + 1
- #set $current = $param.name
- $param.name
- #end if#
- #end for#
- #end if
- )
-
- </code>
-
- <div class="description" property="yui:description">
- $event.description
- </div>
-
- <div class="description">
-
-
- #if $event.params
- <dl rel="yui:parameters">
- <dt>Parameters:</dt>
- #for $param in $event.params
- <dd rel="yui:parameter">
- <code><span property="yui:name">$param.name</span>
- &lt;<span property="yui:type">$param.type</span>&gt;
- </code>
- <span property="yui:description">$param.description</span>
- </dd>
-
- #end for
- </dl>
- #end if
-
- #if $event.bubbles
- <div class="bubbles">
- <strong>Bubbles:</strong> This event bubbles to <a href="${event.bubbles}.html" title="$event.bubbles">$event.bubbles</a>.
- </div>
- #end if
- #if $event.preventable
- <div class="preventable">
- <strong>Preventable:</strong> This event is preventable by method: $event.preventable.
- </div>
- #end if
-
- #if $event.deprecated
- <div class="deprecated">
- <strong>Deprecated</strong> $event.deprecated
- </div>
- #end if
- </div>
-
- </div>
- <hr />
- </div>
- #end for
- </div>
- </div>
- #end if
-
-
- #if $inherited.events
- <div rel="yui:inheritance">
- #for $superclassname in $inherited.events
- <div class="section field inheritance" rel="yui:superclass" resource="${superclassname}.html">
- <h4>Events inherited from <a href="${superclassname}.html" property="yui:name" title="$superclassname">$superclassname</a>:</h4>
- <div class="content" rel="yui:events">
- <code>
- #set i=0
- #set l=len($inherited.methods[$superclassname])-1
- #for $event in $inherited.events[$superclassname]
- #set i=i+1
- <span rel="yui:event" resource="${superclassname}.html#event_$event.name">
- <a class="$event.access#if $event.deprecated# deprecated#end if#" href="${superclassname}.html#event_$event.name" property="yui:name" title="$event.name">$event.name</a>#if $i<$l#<span class="$event.access#if $event.deprecated# deprecated#end if#">,</span>#end if##set i=i+1#
- </span>
- #end for#
- </code>
- </div>
- </div>
- #end for
- </div>
- #end if
- </div>
-
- <div rel="yui:attributes" resource="#configattributes">
- #if $configs
- <div class="section field details">
- <h3 id="configattributes">Configuration Attributes</h3>
- <div class="content">
- #for $config in $configs
- <div class="$config.access#if $config.deprecated# deprecated#end if#" rel="yui:attribute" resource="#config_$config.name">
- <h4><a name="config_$config.name">$config.name</a>
- <code>- #if $config.access#$config.access #end if##if $config.static#$config.static #end if##if $config.writeonce#$config.writeonce #end if##if $config.final#$config.final #end if#<span property="yui:type">$config.type</span></code>
- </h4>
- <div class="detail">
- <div class="description" property="yui:description">
- $config.description
- </div>
- </div>
-
- #if $config.deprecated
- <div class="deprecated">
- <strong>Deprecated</strong> $config.deprecated
- </div>
- #end if
-
- #if $config.default
- <div class="default">
- Default Value: $config.default
- </div>
- #end if
-
- <hr />
- </div>
- #end for
-
- </div>
- </div>
- #end if
-
- #if $inherited.configs
- <div rel="yui:inheritance">
- #for $superclassname in $inherited.configs
- <div class="section field inheritance" rel="yui:superclass" resource="${superclassname}.html">
- <h4>Configuration attributes inherited from <a href="${superclassname}.html" property="yui:name" title="$superclassname">$superclassname</a>:</h4>
- <div class="content" rel="yui:attributes">
- <code>
- #set i=0
- #set l=len($inherited.methods[$superclassname])-1
- #for $config in $inherited.configs[$superclassname]
- #set i=i+1
- <span rel="yui:attribute" resource="${superclassname}.html#config_$config.name">
- <a class="$config.access#if $config.deprecated# deprecated#end if#" href="${superclassname}.html#config_$config.name" property="yui:name" title="$config.name">$config.name</a>#if $i<$l#<span class="$config.access#if $config.deprecated# deprecated#end if#">,</span>#end if#
- </span>
- #set i=i+1
- #end for#
- </code>
- </div>
- </div>
- #end for
- </div>
- #end if
- </div>
-
- #else if $modulename
-
- <h3>Module: $modulename
-
- #if $beta
- <span class="description"><em>Beta</em></span>
- #end if
-
- #if $experimental
- <span class="description"><em>Experimental</em></span>
- #end if
-
- </h3>
- <div class="description summary">
- $moduledesc
- </div>
-
-
- #if $requires
- <div class="content">
- Requires: $requires
- </div>
- #end if
- #if $optional
- <div class="content">
- Optional: $optional
- </div>
- #end if
-
- <div class="yui-gc">
- <div class="yui-u first">
-
- #if $classnames
- <p>This module contains the following classes:</p>
- <script>
- //var YUI_CLASS_LIST = $classList;
- </script>
- <div id="splash_classList">
- <ul>
- #set $counter = 0
- #for $classNames in $classList_raw
- <li><a href="${classNames.name}.html" title="$classNames.name" id="class_${counter}">$classNames.guessedname</a></li>
- #set $counter = $counter + 1
- #end for
- </ul>
- </div>
- #end if
- </div>
- <div class="yui-u">
- #set count = 0;
- #for $info in $submodules
- #set count = count + 1
- #end for
- #if count != 0
- <div class="submodules">
- <h4>Submodules:</h4>
- <dl>
- #for $info in $submodules
- <dt><code><a href="${$subdata[$info].name}.html" title="$info">$info</a></code></dt>
- <dd>$subdata[$info].description</dd>
- #end for
- </dl>
- </div>
- #end if
-
- </div>
- </div>
-
- #end if
- </div>
- </div>
- <div class="yui-b">
- <div class="nav">
-
- #if $modulenames
- <div id="moduleList" class="module">
- <h4>Modules</h4>
- <ul class="content">
- #for $moduledef in $modulenames
- #set $css = ""
- #if $moduledef == $modulename
- #set $css = "selected"
- #end if
- <li class="$css"><a href="module_${moduledef}.html" title="$moduledef">$moduledef</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $classnames
- <div id="classList" class="module">
- <h4>Classes</h4>
- <ul class="content">
- #for $classdef in $classnames
- #set $css = ""
- #if $classdef == $classname
- #set $css = "selected"
- #end if
- <li class="$css"><a href="${classdef}.html" title="$classdef">$classdef</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $filenames
- <div id="fileList" class="module">
- <h4>Files</h4>
- <ul class="content">
- #for $filedef in $filenames
- #set $css = ""
- #if $filedef == $filename
- #set $css = "selected"
- #end if
- <li class="$css"><a href="${filedef}.html" title="$filedef">$filedef</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $properties
- <div id="propertyList" class="module">
- <h4>Properties</h4>
- <ul class="content">
- #for $prop in $properties
- <li class="${prop.access}#if $prop.deprecated# deprecated#end if#"><a href="#property_${prop.name}" title="$prop.name">$prop.name</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $methods
- <div id="methodsList" class="module">
- <h4>Methods</h4>
- <ul class="content">
- #for $method in $methods
- <li class="${method.access}#if $method.deprecated# deprecated#end if#"><a href="#method_${method.name}" title="$method.name">$method.name</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $events
- <div id="eventsList" class="module">
- <h4>Events</h4>
- <ul class="content">
- #for $event in $events
- <li class="${event.access}#if $event.deprecated# deprecated#end if#"><a href="#event_${event.name}" title="$event.name">$event.name</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- #if $configs
- <div id="configList" class="module">
- <h4>Configuration Attributes</h4>
- <ul class="content">
- #for $config in $configs
- <li class="${config.access}#if $config.deprecated# deprecated#end if#"><a href="#config_${config.name}" title="$config.name">$config.name</a></li>
- #end for
- </ul>
- </div>
- #end if
-
- </div>
- </div>
- </div>
- <div id="ft">
- <hr />
- Copyright &copy; $year Richard Wall. All rights reserved.
- </div>
-</div>
-<script type="text/javascript">
- ALL_YUI_PROPS = $allprops;
-</script>
-#if $ydn
-<!--MyBlogLog instrumentation-->
-<script type="text/javascript"
-src="http://track2.mybloglog.com/js/jsserv.php?mblID=2007020704011645"></script>
-#end if
-</body>
-</html>
-#end filter