summaryrefslogtreecommitdiff
path: root/sitestatic
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@parabola.nu>2019-02-24 16:29:47 -0500
committerLuke Shumaker <lukeshu@parabola.nu>2019-03-03 23:06:18 -0500
commit67addab7d2fde74312869f3ce4e856f4e1c5371f (patch)
treeb007ca17807e59f1784f596168cd02150857d9a0 /sitestatic
parent0cb1ddc321fc9e21f79d8b9b6e47609704d41ebb (diff)
make clean && make
Diffstat (limited to 'sitestatic')
-rw-r--r--sitestatic/archnavbar/archlogo.pngbin0 -> 5376 bytes
-rw-r--r--sitestatic/bootstrap-typeahead.js301
-rw-r--r--sitestatic/bootstrap-typeahead.min.js20
-rw-r--r--sitestatic/favicon.icobin0 -> 416 bytes
-rw-r--r--sitestatic/homepage.js73
-rw-r--r--sitestatic/jquery-1.8.3.min.js14
-rw-r--r--sitestatic/jquery.tablesorter-2.7.js1374
-rw-r--r--sitestatic/jquery.tablesorter-2.7.min.js17
-rw-r--r--sitestatic/konami.min.js13
-rw-r--r--sitestatic/logos/apple-touch-icon-114x114.pngbin0 -> 2288 bytes
-rw-r--r--sitestatic/logos/apple-touch-icon-144x144.pngbin0 -> 2952 bytes
-rw-r--r--sitestatic/logos/apple-touch-icon-57x57.pngbin0 -> 1165 bytes
-rw-r--r--sitestatic/logos/apple-touch-icon-72x72.pngbin0 -> 1492 bytes
-rw-r--r--sitestatic/logos/icon-transparent-64x64.pngbin0 -> 1363 bytes
-rw-r--r--sitestatic/rss.pngbin0 -> 707 bytes
-rw-r--r--sitestatic/rss@2x.pngbin0 -> 1466 bytes
-rw-r--r--sitestatic/silhouette.pngbin0 -> 2324 bytes
17 files changed, 1811 insertions, 1 deletions
diff --git a/sitestatic/archnavbar/archlogo.png b/sitestatic/archnavbar/archlogo.png
new file mode 100644
index 00000000..136b69c7
--- /dev/null
+++ b/sitestatic/archnavbar/archlogo.png
Binary files differ
diff --git a/sitestatic/bootstrap-typeahead.js b/sitestatic/bootstrap-typeahead.js
new file mode 100644
index 00000000..3d355ae4
--- /dev/null
+++ b/sitestatic/bootstrap-typeahead.js
@@ -0,0 +1,301 @@
+/* =============================================================
+ * bootstrap-typeahead.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function($){
+
+ "use strict"; // jshint ;_;
+
+
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
+ * ================================= */
+
+ var Typeahead = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.updater = this.options.updater || this.updater
+ this.$menu = $(this.options.menu).appendTo('body')
+ this.source = this.options.source
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ if (val) {
+ this.$element
+ .val(this.updater(val))
+ .change()
+ }
+ return this.hide()
+ }
+
+ , updater: function (item) {
+ return item
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.offset(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu.css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+
+ this.$menu.show()
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var items
+
+ this.query = this.$element.val()
+
+ if (!this.query || this.query.length < this.options.minLength) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
+
+ return items ? this.process(items) : this
+ }
+
+ , process: function (items) {
+ var that = this
+
+ items = $.grep(items, function (item) {
+ return that.matcher(item)
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>'
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
+ this.$element.on('keydown', $.proxy(this.keydown, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ }
+
+ , move: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , keydown: function (e) {
+ this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
+ this.move(e)
+ }
+
+ , keypress: function (e) {
+ if (this.suppressKeyPressRepeat) return
+ this.move(e)
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , blur: function (e) {
+ var that = this
+ setTimeout(function () { that.hide() }, 150)
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ }
+
+ , mouseenter: function (e) {
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ $.fn.typeahead = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ , minLength: 1
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(function () {
+ $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ e.preventDefault()
+ $this.typeahead($this.data())
+ })
+ })
+
+}(window.jQuery);
diff --git a/sitestatic/bootstrap-typeahead.min.js b/sitestatic/bootstrap-typeahead.min.js
index c6823c00..5521019c 100644
--- a/sitestatic/bootstrap-typeahead.min.js
+++ b/sitestatic/bootstrap-typeahead.min.js
@@ -1 +1,19 @@
-!function(e){"use strict";var t=function(t,n){this.$element=e(t),this.options=e.extend({},e.fn.typeahead.defaults,n),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=e(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};t.prototype={constructor:t,select:function(){var e=this.$menu.find(".active").attr("data-value");return e&&this.$element.val(this.updater(e)).change(),this.hide()},updater:function(e){return e},show:function(){var t=e.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var n;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(n=e.isFunction(this.source)?this.source(this.query,e.proxy(this.process,this)):this.source,n?this.process(n):this)},process:function(t){var n=this;return t=e.grep(t,function(e){return n.matcher(e)}),t=this.sorter(t),t.length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(e){return~e.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(e){var t=[],n=[],r=[],i;while(i=e.shift())i.toLowerCase().indexOf(this.query.toLowerCase())?~i.indexOf(this.query)?n.push(i):r.push(i):t.push(i);return t.concat(n,r)},highlighter:function(e){var t=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return e.replace(new RegExp("("+t+")","ig"),function(e,t){return"<strong>"+t+"</strong>"})},render:function(t){var n=this;return t=e(t).map(function(t,r){return t=e(n.options.item).attr("data-value",r),t.find("a").html(n.highlighter(r)),t[0]}),this.$menu.html(t),this},next:function(t){var n=this.$menu.find(".active").removeClass("active"),r=n.next();r.length||(r=e(this.$menu.find("li")[0])),r.addClass("active")},prev:function(e){var t=this.$menu.find(".active").removeClass("active"),n=t.prev();n.length||(n=this.$menu.find("li").last()),n.addClass("active")},listen:function(){this.$element.on("blur",e.proxy(this.blur,this)).on("keypress",e.proxy(this.keypress,this)).on("keyup",e.proxy(this.keyup,this)),(e.browser.chrome||e.browser.webkit||e.browser.msie)&&this.$element.on("keydown",e.proxy(this.keydown,this)),this.$menu.on("click",e.proxy(this.click,this)).on("mouseenter","li",e.proxy(this.mouseenter,this))},move:function(e){if(!this.shown)return;switch(e.keyCode){case 9:case 13:case 27:e.preventDefault();break;case 38:e.preventDefault(),this.prev();break;case 40:e.preventDefault(),this.next()}e.stopPropagation()},keydown:function(t){this.suppressKeyPressRepeat=!~e.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(e){if(this.suppressKeyPressRepeat)return;this.move(e)},keyup:function(e){switch(e.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}e.stopPropagation(),e.preventDefault()},blur:function(e){var t=this;setTimeout(function(){t.hide()},150)},click:function(e){e.stopPropagation(),e.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),e(t.currentTarget).addClass("active")}},e.fn.typeahead=function(n){return this.each(function(){var r=e(this),i=r.data("typeahead"),s=typeof n=="object"&&n;i||r.data("typeahead",i=new t(this,s)),typeof n=="string"&&i[n]()})},e.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},e.fn.typeahead.Constructor=t,e(function(){e("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var n=e(this);if(n.data("typeahead"))return;t.preventDefault(),n.typeahead(n.data())})})}(window.jQuery); \ No newline at end of file
+/* =============================================================
+ * bootstrap-typeahead.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+!function(n){"use strict";var h=function(t,e){this.$element=n(t),this.options=n.extend({},n.fn.typeahead.defaults,e),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=n(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};h.prototype={constructor:h,select:function(){var t=this.$menu.find(".active").attr("data-value");return t&&this.$element.val(this.updater(t)).change(),this.hide()},updater:function(t){return t},show:function(){var t=n.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var e;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(e=n.isFunction(this.source)?this.source(this.query,n.proxy(this.process,this)):this.source)?this.process(e):this},process:function(t){var e=this;return t=n.grep(t,function(t){return e.matcher(t)}),(t=this.sorter(t)).length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(t){return~t.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(t){for(var e,s=[],i=[],n=[];e=t.shift();)e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?i.push(e):n.push(e):s.push(e);return s.concat(i,n)},highlighter:function(t){var e=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return t.replace(new RegExp("("+e+")","ig"),function(t,e){return"<strong>"+e+"</strong>"})},render:function(t){var s=this;return t=n(t).map(function(t,e){return(t=n(s.options.item).attr("data-value",e)).find("a").html(s.highlighter(e)),t[0]}),this.$menu.html(t),this},next:function(t){var e=this.$menu.find(".active").removeClass("active").next();e.length||(e=n(this.$menu.find("li")[0])),e.addClass("active")},prev:function(t){var e=this.$menu.find(".active").removeClass("active").prev();e.length||(e=this.$menu.find("li").last()),e.addClass("active")},listen:function(){this.$element.on("blur",n.proxy(this.blur,this)).on("keypress",n.proxy(this.keypress,this)).on("keyup",n.proxy(this.keyup,this)),(n.browser.chrome||n.browser.webkit||n.browser.msie)&&this.$element.on("keydown",n.proxy(this.keydown,this)),this.$menu.on("click",n.proxy(this.click,this)).on("mouseenter","li",n.proxy(this.mouseenter,this))},move:function(t){if(this.shown){switch(t.keyCode){case 9:case 13:case 27:t.preventDefault();break;case 38:t.preventDefault(),this.prev();break;case 40:t.preventDefault(),this.next()}t.stopPropagation()}},keydown:function(t){this.suppressKeyPressRepeat=!~n.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(t){this.suppressKeyPressRepeat||this.move(t)},keyup:function(t){switch(t.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}t.stopPropagation(),t.preventDefault()},blur:function(t){var e=this;setTimeout(function(){e.hide()},150)},click:function(t){t.stopPropagation(),t.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),n(t.currentTarget).addClass("active")}},n.fn.typeahead=function(i){return this.each(function(){var t=n(this),e=t.data("typeahead"),s="object"==typeof i&&i;e||t.data("typeahead",e=new h(this,s)),"string"==typeof i&&e[i]()})},n.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},n.fn.typeahead.Constructor=h,n(function(){n("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var e=n(this);e.data("typeahead")||(t.preventDefault(),e.typeahead(e.data()))})})}(window.jQuery);
diff --git a/sitestatic/favicon.ico b/sitestatic/favicon.ico
new file mode 100644
index 00000000..422bc35b
--- /dev/null
+++ b/sitestatic/favicon.ico
Binary files differ
diff --git a/sitestatic/homepage.js b/sitestatic/homepage.js
new file mode 100644
index 00000000..4e138e9d
--- /dev/null
+++ b/sitestatic/homepage.js
@@ -0,0 +1,73 @@
+/* bootstrap-typeahead.min.js: */
+/* =============================================================
+ * bootstrap-typeahead.js v2.1.1
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+!function(n){"use strict";var h=function(t,e){this.$element=n(t),this.options=n.extend({},n.fn.typeahead.defaults,e),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.updater=this.options.updater||this.updater,this.$menu=n(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};h.prototype={constructor:h,select:function(){var t=this.$menu.find(".active").attr("data-value");return t&&this.$element.val(this.updater(t)).change(),this.hide()},updater:function(t){return t},show:function(){var t=n.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:t.top+t.height,left:t.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(t){var e;return this.query=this.$element.val(),!this.query||this.query.length<this.options.minLength?this.shown?this.hide():this:(e=n.isFunction(this.source)?this.source(this.query,n.proxy(this.process,this)):this.source)?this.process(e):this},process:function(t){var e=this;return t=n.grep(t,function(t){return e.matcher(t)}),(t=this.sorter(t)).length?this.render(t.slice(0,this.options.items)).show():this.shown?this.hide():this},matcher:function(t){return~t.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(t){for(var e,s=[],i=[],n=[];e=t.shift();)e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?i.push(e):n.push(e):s.push(e);return s.concat(i,n)},highlighter:function(t){var e=this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");return t.replace(new RegExp("("+e+")","ig"),function(t,e){return"<strong>"+e+"</strong>"})},render:function(t){var s=this;return t=n(t).map(function(t,e){return(t=n(s.options.item).attr("data-value",e)).find("a").html(s.highlighter(e)),t[0]}),this.$menu.html(t),this},next:function(t){var e=this.$menu.find(".active").removeClass("active").next();e.length||(e=n(this.$menu.find("li")[0])),e.addClass("active")},prev:function(t){var e=this.$menu.find(".active").removeClass("active").prev();e.length||(e=this.$menu.find("li").last()),e.addClass("active")},listen:function(){this.$element.on("blur",n.proxy(this.blur,this)).on("keypress",n.proxy(this.keypress,this)).on("keyup",n.proxy(this.keyup,this)),(n.browser.chrome||n.browser.webkit||n.browser.msie)&&this.$element.on("keydown",n.proxy(this.keydown,this)),this.$menu.on("click",n.proxy(this.click,this)).on("mouseenter","li",n.proxy(this.mouseenter,this))},move:function(t){if(this.shown){switch(t.keyCode){case 9:case 13:case 27:t.preventDefault();break;case 38:t.preventDefault(),this.prev();break;case 40:t.preventDefault(),this.next()}t.stopPropagation()}},keydown:function(t){this.suppressKeyPressRepeat=!~n.inArray(t.keyCode,[40,38,9,13,27]),this.move(t)},keypress:function(t){this.suppressKeyPressRepeat||this.move(t)},keyup:function(t){switch(t.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:if(!this.shown)return;this.hide();break;default:this.lookup()}t.stopPropagation(),t.preventDefault()},blur:function(t){var e=this;setTimeout(function(){e.hide()},150)},click:function(t){t.stopPropagation(),t.preventDefault(),this.select()},mouseenter:function(t){this.$menu.find(".active").removeClass("active"),n(t.currentTarget).addClass("active")}},n.fn.typeahead=function(i){return this.each(function(){var t=n(this),e=t.data("typeahead"),s="object"==typeof i&&i;e||t.data("typeahead",e=new h(this,s)),"string"==typeof i&&e[i]()})},n.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>',minLength:1},n.fn.typeahead.Constructor=h,n(function(){n("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(t){var e=n(this);e.data("typeahead")||(t.preventDefault(),e.typeahead(e.data()))})})}(window.jQuery);
+
+/* konami.min.js: */
+/*
+* Konami-JS ~
+* :: Now with support for touch events and multiple instances for
+* :: those situations that call for multiple easter eggs!
+* Code: http://konami-js.googlecode.com/
+* Examples: http://www.snaptortoise.com/konami-js
+* Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
+* Version: 1.4.0 (1/21/2013)
+* Licensed under the GNU General Public License v3
+* http://www.gnu.org/copyleft/gpl.html
+* Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
+*/
+var Konami=function(t){var i={addEvent:function(t,e,n,i){t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent&&(t["e"+e+n]=n,t[e+n]=function(){t["e"+e+n](window.event,i)},t.attachEvent("on"+e,t[e+n]))},input:"",pattern:"3838404037393739666513",load:function(n){this.addEvent(document,"keydown",function(t,e){if(e&&(i=e),i.input+=t?t.keyCode:event.keyCode,i.input.length>i.pattern.length&&(i.input=i.input.substr(i.input.length-i.pattern.length)),i.input==i.pattern)return i.code(n),void(i.input="")},this),this.iphone.load(n)},code:function(t){window.location=t},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:!1,capture:!1,orig_keys:"",keys:["UP","UP","DOWN","DOWN","LEFT","RIGHT","LEFT","RIGHT","TAP","TAP","TAP"],code:function(t){i.code(t)},load:function(e){this.orig_keys=this.keys,i.addEvent(document,"touchmove",function(t){if(1==t.touches.length&&!0===i.iphone.capture){var e=t.touches[0];i.iphone.stop_x=e.pageX,i.iphone.stop_y=e.pageY,i.iphone.tap=!1,i.iphone.capture=!1,i.iphone.check_direction()}}),i.addEvent(document,"touchend",function(t){!0===i.iphone.tap&&i.iphone.check_direction(e)},!1),i.addEvent(document,"touchstart",function(t){i.iphone.start_x=t.changedTouches[0].pageX,i.iphone.start_y=t.changedTouches[0].pageY,i.iphone.tap=!0,i.iphone.capture=!0})},check_direction:function(t){var e=Math.abs(this.start_x-this.stop_x),n=Math.abs(this.start_y-this.stop_y),i=this.start_x-this.stop_x<0?"RIGHT":"LEFT",o=this.start_y-this.stop_y<0?"DOWN":"UP",s=n<e?i:o;(s=!0===this.tap?"TAP":s)==this.keys[0]&&(this.keys=this.keys.slice(1,this.keys.length)),0==this.keys.length&&(this.keys=this.orig_keys,this.code(t))}}};return"string"==typeof t&&i.load(t),"function"==typeof t&&(i.code=t,i.load()),i};
+
+/* Main homepage.js content: */
+function setupTypeahead() {
+ $('#pkgsearch-field').typeahead({
+ source: function(query, callback) {
+ $.getJSON('/opensearch/packages/suggest', {q: query}, function(data) {
+ callback(data[1]);
+ });
+ },
+ matcher: function(item) { return true; },
+ sorter: function(items) { return items; },
+ menu: '<ul class="pkgsearch-typeahead"></ul>',
+ items: 10,
+ updater: function(item) {
+ $('#pkgsearch-field').val(item);
+ $('#pkgsearch-form').submit();
+ return item;
+ }
+ }).attr('autocomplete', 'off');
+ $('#pkgsearch-field').keyup(function(e) {
+ if (e.keyCode === 13 &&
+ $('ul.pkgsearch-typeahead li.active').size() === 0) {
+ $('#pkgsearch-form').submit();
+ }
+ });
+}
+
+function setupKonami(image_src) {
+ var konami = new Konami(function() {
+ $('#konami').html('<img src="' + image_src + '" alt=""/>');
+ setTimeout(function() {
+ $('#konami').fadeIn(500);
+ }, 500);
+ $('#konami').click(function() {
+ $('#konami').fadeOut(500);
+ });
+ });
+}
diff --git a/sitestatic/jquery-1.8.3.min.js b/sitestatic/jquery-1.8.3.min.js
new file mode 100644
index 00000000..51d6f025
--- /dev/null
+++ b/sitestatic/jquery-1.8.3.min.js
@@ -0,0 +1,14 @@
+/*!
+ * jQuery JavaScript Library v1.8.3
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright 2012 jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)
+ */
+!function(m,C){var n,t,y=m.document,e=m.location,r=m.navigator,i=m.jQuery,o=m.$,a=Array.prototype.push,v=Array.prototype.slice,s=Array.prototype.indexOf,l=Object.prototype.toString,u=Object.prototype.hasOwnProperty,c=String.prototype.trim,ye=function(e,t){return new ye.fn.init(e,t,n)},f=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,p=/\S/,k=/\s+/,d=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,h=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,g=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,b=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,w=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,T=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,N=/^-ms-/,E=/-([\da-z])/gi,S=function(e,t){return(t+"").toUpperCase()},A=function(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",A,!1),ye.ready()):"complete"===y.readyState&&(y.detachEvent("onreadystatechange",A),ye.ready())},j={};ye.fn=ye.prototype={constructor:ye,init:function(e,t,n){var r,i,o;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if("string"!=typeof e)return ye.isFunction(e)?n.ready(e):(e.selector!==C&&(this.selector=e.selector,this.context=e.context),ye.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:h.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1])return o=(t=t instanceof ye?t[0]:t)&&t.nodeType?t.ownerDocument||t:y,e=ye.parseHTML(r[1],o,!0),g.test(r[1])&&ye.isPlainObject(t)&&this.attr.call(e,t,!0),ye.merge(this,e);if((i=y.getElementById(r[2]))&&i.parentNode){if(i.id!==r[2])return n.find(e);this.length=1,this[0]=i}return this.context=y,this.selector=e,this},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return v.call(this)},get:function(e){return null==e?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=ye.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,"find"===t?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return ye.each(this,e,t)},ready:function(e){return ye.ready.promise().done(e),this},eq:function(e){return-1===(e=+e)?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(v.apply(this,arguments),"slice",v.call(arguments).join(","))},map:function(n){return this.pushStack(ye.map(this,function(e,t){return n.call(e,t,e)}))},end:function(){return this.prevObject||this.constructor(null)},push:a,sort:[].sort,splice:[].splice},ye.fn.init.prototype=ye.fn,ye.extend=ye.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof a&&(u=a,a=arguments[1]||{},s=2),"object"==typeof a||ye.isFunction(a)||(a={}),l===s&&(a=this,--s);s<l;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(u&&r&&(ye.isPlainObject(r)||(i=ye.isArray(r)))?(o=i?(i=!1,n&&ye.isArray(n)?n:[]):n&&ye.isPlainObject(n)?n:{},a[t]=ye.extend(u,o,r)):r!==C&&(a[t]=r));return a},ye.extend({noConflict:function(e){return m.$===ye&&(m.$=o),e&&m.jQuery===ye&&(m.jQuery=i),ye},isReady:!1,readyWait:1,holdReady:function(e){e?ye.readyWait++:ye.ready(!0)},ready:function(e){if(!0===e?!--ye.readyWait:!ye.isReady){if(!y.body)return setTimeout(ye.ready,1);(ye.isReady=!0)!==e&&0<--ye.readyWait||(t.resolveWith(y,[ye]),ye.fn.trigger&&ye(y).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===ye.type(e)},isArray:Array.isArray||function(e){return"array"===ye.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?String(e):j[l.call(e)]||"object"},isPlainObject:function(e){if(!e||"object"!==ye.type(e)||e.nodeType||ye.isWindow(e))return!1;try{if(e.constructor&&!u.call(e,"constructor")&&!u.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}var t;for(t in e);return t===C||u.call(e,t)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return e&&"string"==typeof e?("boolean"==typeof t&&(n=t,t=0),t=t||y,(r=g.exec(e))?[t.createElement(r[1])]:(r=ye.buildFragment([e],t,n?null:[]),ye.merge([],(r.cacheable?ye.clone(r.fragment):r.fragment).childNodes))):null},parseJSON:function(e){return e&&"string"==typeof e?(e=ye.trim(e),m.JSON&&m.JSON.parse?m.JSON.parse(e):b.test(e.replace(w,"@").replace(T,"]").replace(x,""))?new Function("return "+e)():void ye.error("Invalid JSON: "+e)):null},parseXML:function(e){var t;if(!e||"string"!=typeof e)return null;try{m.DOMParser?t=(new DOMParser).parseFromString(e,"text/xml"):((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e))}catch(e){t=C}return t&&t.documentElement&&!t.getElementsByTagName("parsererror").length||ye.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){e&&p.test(e)&&(m.execScript||function(e){m.eval.call(m,e)})(e)},camelCase:function(e){return e.replace(N,"ms-").replace(E,S)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=o===C||ye.isFunction(e);if(n)if(a){for(r in e)if(!1===t.apply(e[r],n))break}else for(;i<o&&!1!==t.apply(e[i++],n););else if(a){for(r in e)if(!1===t.call(e[r],r,e[r]))break}else for(;i<o&&!1!==t.call(e[i],i,e[i++]););return e},trim:c&&!c.call("\ufeff ")?function(e){return null==e?"":c.call(e)}:function(e){return null==e?"":(e+"").replace(d,"")},makeArray:function(e,t){var n,r=t||[];return null!=e&&(n=ye.type(e),null==e.length||"string"===n||"function"===n||"regexp"===n||ye.isWindow(e)?a.call(r,e):ye.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(s)return s.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;i<n;i++)e[r++]=t[i];else for(;t[i]!==C;)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r=[],i=0,o=e.length;for(n=!!n;i<o;i++)n!==!!t(e[i],i)&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=[],a=0,s=e.length;if(e instanceof ye||s!==C&&"number"==typeof s&&(0<s&&e[0]&&e[s-1]||0===s||ye.isArray(e)))for(;a<s;a++)null!=(r=t(e[a],a,n))&&(o[o.length]=r);else for(i in e)null!=(r=t(e[i],i,n))&&(o[o.length]=r);return o.concat.apply([],o)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),ye.isFunction(e)?(r=v.call(arguments,2),(i=function(){return e.apply(t,r.concat(v.call(arguments)))}).guid=e.guid=e.guid||ye.guid++,i):C},access:function(e,t,n,r,i,o,a){var s,l=null==n,u=0,c=e.length;if(n&&"object"==typeof n){for(u in n)ye.access(e,t,u,n[u],1,o,r);i=1}else if(r!==C){if(s=a===C&&ye.isFunction(r),l&&(t=s?(s=t,function(e,t,n){return s.call(ye(e),n)}):(t.call(e,r),null)),t)for(;u<c;u++)t(e[u],n,s?r.call(e[u],u,t(e[u],n)):r,a);i=1}return i?e:l?t.call(e):c?t(e[0],n):o},now:function(){return(new Date).getTime()}}),ye.ready.promise=function(e){if(!t)if(t=ye.Deferred(),"complete"===y.readyState)setTimeout(ye.ready,1);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",A,!1),m.addEventListener("load",ye.ready,!1);else{y.attachEvent("onreadystatechange",A),m.attachEvent("onload",ye.ready);var n=!1;try{n=null==m.frameElement&&y.documentElement}catch(e){}n&&n.doScroll&&function t(){if(!ye.isReady){try{n.doScroll("left")}catch(e){return setTimeout(t,50)}ye.ready()}}()}return t.promise(e)},ye.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){j["[object "+t+"]"]=t.toLowerCase()}),n=ye(y);var D={};ye.Callbacks=function(i){var e,n;i="string"==typeof i?D[i]||(n=D[e=i]={},ye.each(e.split(k),function(e,t){n[t]=!0}),n):ye.extend({},i);var t,r,o,a,s,l,u=[],c=!i.once&&[],f=function(e){for(t=i.memory&&e,r=!0,l=a||0,a=0,s=u.length,o=!0;u&&l<s;l++)if(!1===u[l].apply(e[0],e[1])&&i.stopOnFalse){t=!1;break}o=!1,u&&(c?c.length&&f(c.shift()):t?u=[]:p.disable())},p={add:function(){if(u){var e=u.length;!function r(e){ye.each(e,function(e,t){var n=ye.type(t);"function"===n?i.unique&&p.has(t)||u.push(t):t&&t.length&&"string"!==n&&r(t)})}(arguments),o?s=u.length:t&&(a=e,f(t))}return this},remove:function(){return u&&ye.each(arguments,function(e,t){for(var n;-1<(n=ye.inArray(t,u,n));)u.splice(n,1),o&&(n<=s&&s--,n<=l&&l--)}),this},has:function(e){return-1<ye.inArray(e,u)},empty:function(){return u=[],this},disable:function(){return u=c=t=C,this},disabled:function(){return!u},lock:function(){return c=C,t||p.disable(),this},locked:function(){return!c},fireWith:function(e,t){return t=[e,(t=t||[]).slice?t.slice():t],!u||r&&!c||(o?c.push(t):f(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!r}};return p},ye.extend({Deferred:function(e){var a=[["resolve","done",ye.Callbacks("once memory"),"resolved"],["reject","fail",ye.Callbacks("once memory"),"rejected"],["notify","progress",ye.Callbacks("memory")]],i="pending",o={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},then:function(){var o=arguments;return ye.Deferred(function(i){ye.each(a,function(e,t){var n=t[0],r=o[e];s[t[1]](ye.isFunction(r)?function(){var e=r.apply(this,arguments);e&&ye.isFunction(e.promise)?e.promise().done(i.resolve).fail(i.reject).progress(i.notify):i[n+"With"](this===s?i:this,[e])}:i[n])}),o=null}).promise()},promise:function(e){return null!=e?ye.extend(e,o):o}},s={};return o.pipe=o.then,ye.each(a,function(e,t){var n=t[2],r=t[3];o[t[1]]=n.add,r&&n.add(function(){i=r},a[1^e][2].disable,a[2][2].lock),s[t[0]]=n.fire,s[t[0]+"With"]=n.fireWith}),o.promise(s),e&&e.call(s,s),s},when:function(e){var i,t,n,r=0,o=v.call(arguments),a=o.length,s=1!==a||e&&ye.isFunction(e.promise)?a:0,l=1===s?e:ye.Deferred(),u=function(t,n,r){return function(e){n[t]=this,r[t]=1<arguments.length?v.call(arguments):e,r===i?l.notifyWith(n,r):--s||l.resolveWith(n,r)}};if(1<a)for(i=new Array(a),t=new Array(a),n=new Array(a);r<a;r++)o[r]&&ye.isFunction(o[r].promise)?o[r].promise().done(u(r,n,o)).fail(l.reject).progress(u(r,t,i)):--s;return s||l.resolveWith(n,o),l.promise()}}),ye.support=function(){var a,e,t,n,r,i,o,s,l,u,c,f=y.createElement("div");if(f.setAttribute("className","t"),f.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=f.getElementsByTagName("*"),t=f.getElementsByTagName("a")[0],!e||!t||!e.length)return{};r=(n=y.createElement("select")).appendChild(y.createElement("option")),i=f.getElementsByTagName("input")[0],t.style.cssText="top:1px;float:left;opacity:.5",a={leadingWhitespace:3===f.firstChild.nodeType,tbody:!f.getElementsByTagName("tbody").length,htmlSerialize:!!f.getElementsByTagName("link").length,style:/top/.test(t.getAttribute("style")),hrefNormalized:"/a"===t.getAttribute("href"),opacity:/^0.5/.test(t.style.opacity),cssFloat:!!t.style.cssFloat,checkOn:"on"===i.value,optSelected:r.selected,getSetAttribute:"t"!==f.className,enctype:!!y.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===y.compatMode,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},i.checked=!0,a.noCloneChecked=i.cloneNode(!0).checked,n.disabled=!0,a.optDisabled=!r.disabled;try{delete f.test}catch(e){a.deleteExpando=!1}if(!f.addEventListener&&f.attachEvent&&f.fireEvent&&(f.attachEvent("onclick",c=function(){a.noCloneEvent=!1}),f.cloneNode(!0).fireEvent("onclick"),f.detachEvent("onclick",c)),(i=y.createElement("input")).value="t",i.setAttribute("type","radio"),a.radioValue="t"===i.value,i.setAttribute("checked","checked"),i.setAttribute("name","t"),f.appendChild(i),(o=y.createDocumentFragment()).appendChild(f.lastChild),a.checkClone=o.cloneNode(!0).cloneNode(!0).lastChild.checked,a.appendChecked=i.checked,o.removeChild(i),o.appendChild(f),f.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})(u=(s="on"+l)in f)||(f.setAttribute(s,"return;"),u="function"==typeof f[s]),a[l+"Bubbles"]=u;return ye(function(){var e,t,n,r,i="padding:0;margin:0;border:0;display:block;overflow:hidden;",o=y.getElementsByTagName("body")[0];o&&((e=y.createElement("div")).style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",o.insertBefore(e,o.firstChild),t=y.createElement("div"),e.appendChild(t),t.innerHTML="<table><tr><td></td><td>t</td></tr></table>",(n=t.getElementsByTagName("td"))[0].style.cssText="padding:0;margin:0;border:0;display:none",u=0===n[0].offsetHeight,n[0].style.display="",n[1].style.display="none",a.reliableHiddenOffsets=u&&0===n[0].offsetHeight,t.innerHTML="",t.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",a.boxSizing=4===t.offsetWidth,a.doesNotIncludeMarginInBodyOffset=1!==o.offsetTop,m.getComputedStyle&&(a.pixelPosition="1%"!==(m.getComputedStyle(t,null)||{}).top,a.boxSizingReliable="4px"===(m.getComputedStyle(t,null)||{width:"4px"}).width,(r=y.createElement("div")).style.cssText=t.style.cssText=i,r.style.marginRight=r.style.width="0",t.style.width="1px",t.appendChild(r),a.reliableMarginRight=!parseFloat((m.getComputedStyle(r,null)||{}).marginRight)),void 0!==t.style.zoom&&(t.innerHTML="",t.style.cssText=i+"width:1px;padding:1px;display:inline;zoom:1",a.inlineBlockNeedsLayout=3===t.offsetWidth,t.style.display="block",t.style.overflow="visible",t.innerHTML="<div></div>",t.firstChild.style.width="5px",a.shrinkWrapBlocks=3!==t.offsetWidth,e.style.zoom=1),o.removeChild(e),e=t=n=r=null)}),o.removeChild(f),e=t=n=r=i=o=f=null,a}();var L=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,H=/([A-Z])/g;function F(e,t,n){if(n===C&&1===e.nodeType){var r="data-"+t.replace(H,"-$1").toLowerCase();if("string"==typeof(n=e.getAttribute(r))){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:L.test(n)?ye.parseJSON(n):n)}catch(e){}ye.data(e,t,n)}else n=C}return n}function M(e){var t;for(t in e)if(("data"!==t||!ye.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}ye.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(ye.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return!!(e=e.nodeType?ye.cache[e[ye.expando]]:e[ye.expando])&&!M(e)},data:function(e,t,n,r){if(ye.acceptData(e)){var i,o,a=ye.expando,s="string"==typeof t,l=e.nodeType,u=l?ye.cache:e,c=l?e[a]:e[a]&&a;if(c&&u[c]&&(r||u[c].data)||!s||n!==C)return c||(l?e[a]=c=ye.deletedIds.pop()||ye.guid++:c=a),u[c]||(u[c]={},l||(u[c].toJSON=ye.noop)),"object"!=typeof t&&"function"!=typeof t||(r?u[c]=ye.extend(u[c],t):u[c].data=ye.extend(u[c].data,t)),i=u[c],r||(i.data||(i.data={}),i=i.data),n!==C&&(i[ye.camelCase(t)]=n),s?null==(o=i[t])&&(o=i[ye.camelCase(t)]):o=i,o}},removeData:function(e,t,n){if(ye.acceptData(e)){var r,i,o,a=e.nodeType,s=a?ye.cache:e,l=a?e[ye.expando]:ye.expando;if(s[l]){if(t&&(r=n?s[l]:s[l].data)){ye.isArray(t)||(t=t in r?[t]:(t=ye.camelCase(t))in r?[t]:t.split(" "));for(i=0,o=t.length;i<o;i++)delete r[t[i]];if(!(n?M:ye.isEmptyObject)(r))return}(n||(delete s[l].data,M(s[l])))&&(a?ye.cleanData([e],!0):ye.support.deleteExpando||s!=s.window?delete s[l]:s[l]=null)}}},_data:function(e,t,n){return ye.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&ye.noData[e.nodeName.toLowerCase()];return!t||!0!==t&&e.getAttribute("classid")===t}}),ye.fn.extend({data:function(n,e){var r,i,t,o,a,s=this[0],l=0,u=null;if(n!==C)return"object"==typeof n?this.each(function(){ye.data(this,n)}):((r=n.split(".",2))[1]=r[1]?"."+r[1]:"",i=r[1]+"!",ye.access(this,function(t){if(t===C)return(u=this.triggerHandler("getData"+i,[r[0]]))===C&&s&&(u=ye.data(s,n),u=F(s,n,u)),u===C&&r[1]?this.data(r[0]):u;r[1]=t,this.each(function(){var e=ye(this);e.triggerHandler("setData"+i,r),ye.data(this,n,t),e.triggerHandler("changeData"+i,r)})},null,e,1<arguments.length,null,!1));if(this.length&&(u=ye.data(s),1===s.nodeType&&!ye._data(s,"parsedAttrs"))){for(a=(t=s.attributes).length;l<a;l++)(o=t[l].name).indexOf("data-")||(o=ye.camelCase(o.substring(5)),F(s,o,u[o]));ye._data(s,"parsedAttrs",!0)}return u},removeData:function(e){return this.each(function(){ye.removeData(this,e)})}}),ye.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=ye._data(e,t),n&&(!r||ye.isArray(n)?r=ye._data(e,t,ye.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ye.queue(e,t),r=n.length,i=n.shift(),o=ye._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ye.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ye._data(e,n)||ye._data(e,n,{empty:ye.Callbacks("once memory").add(function(){ye.removeData(e,t+"queue",!0),ye.removeData(e,n,!0)})})}}),ye.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ye.queue(this[0],t):n===C?this:this.each(function(){var e=ye.queue(this,t,n);ye._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ye.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ye.dequeue(this,e)})},delay:function(r,e){return r=ye.fx&&ye.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=setTimeout(e,r);t.stop=function(){clearTimeout(n)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ye.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=C),e=e||"fx";a--;)(n=ye._data(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var O,_,q,B=/[\t\r\n]/g,W=/\r/g,P=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,$=/^a(?:rea|)$/i,I=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,z=ye.support.getSetAttribute;ye.fn.extend({attr:function(e,t){return ye.access(this,ye.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ye.removeAttr(this,e)})},prop:function(e,t){return ye.access(this,ye.prop,e,t,1<arguments.length)},removeProp:function(e){return e=ye.propFix[e]||e,this.each(function(){try{this[e]=C,delete this[e]}catch(e){}})},addClass:function(t){var e,n,r,i,o,a,s;if(ye.isFunction(t))return this.each(function(e){ye(this).addClass(t.call(this,e,this.className))});if(t&&"string"==typeof t)for(e=t.split(k),n=0,r=this.length;n<r;n++)if(1===(i=this[n]).nodeType)if(i.className||1!==e.length){for(o=" "+i.className+" ",a=0,s=e.length;a<s;a++)o.indexOf(" "+e[a]+" ")<0&&(o+=e[a]+" ");i.className=ye.trim(o)}else i.className=t;return this},removeClass:function(t){var e,n,r,i,o,a,s;if(ye.isFunction(t))return this.each(function(e){ye(this).removeClass(t.call(this,e,this.className))});if(t&&"string"==typeof t||t===C)for(e=(t||"").split(k),a=0,s=this.length;a<s;a++)if(1===(r=this[a]).nodeType&&r.className){for(n=(" "+r.className+" ").replace(B," "),i=0,o=e.length;i<o;i++)for(;0<=n.indexOf(" "+e[i]+" ");)n=n.replace(" "+e[i]+" "," ");r.className=t?ye.trim(n):""}return this},toggleClass:function(o,a){var s=typeof o,l="boolean"==typeof a;return ye.isFunction(o)?this.each(function(e){ye(this).toggleClass(o.call(this,e,this.className,a),a)}):this.each(function(){if("string"===s)for(var e,t=0,n=ye(this),r=a,i=o.split(k);e=i[t++];)r=l?r:!n.hasClass(e),n[r?"addClass":"removeClass"](e);else"undefined"!==s&&"boolean"!==s||(this.className&&ye._data(this,"__className__",this.className),this.className=this.className||!1===o?"":ye._data(this,"__className__")||"")})},hasClass:function(e){for(var t=" "+e+" ",n=0,r=this.length;n<r;n++)if(1===this[n].nodeType&&0<=(" "+this[n].className+" ").replace(B," ").indexOf(t))return!0;return!1},val:function(r){var i,e,o,t=this[0];return arguments.length?(o=ye.isFunction(r),this.each(function(e){var t,n=ye(this);1===this.nodeType&&(null==(t=o?r.call(this,e,n.val()):r)?t="":"number"==typeof t?t+="":ye.isArray(t)&&(t=ye.map(t,function(e){return null==e?"":e+""})),(i=ye.valHooks[this.type]||ye.valHooks[this.nodeName.toLowerCase()])&&"set"in i&&i.set(this,t,"value")!==C||(this.value=t))})):t?(i=ye.valHooks[t.type]||ye.valHooks[t.nodeName.toLowerCase()])&&"get"in i&&(e=i.get(t,"value"))!==C?e:"string"==typeof(e=t.value)?e.replace(W,""):null==e?"":e:void 0}}),ye.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,l=i<0?s:o?i:0;l<s;l++)if(((n=r[l]).selected||l===i)&&(ye.support.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!ye.nodeName(n.parentNode,"optgroup"))){if(t=ye(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=ye.makeArray(t);return ye(e).find("option").each(function(){this.selected=0<=ye.inArray(ye(this).val(),n)}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,t,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return r&&ye.isFunction(ye.fn[t])?ye(e)[t](n):void 0===e.getAttribute?ye.prop(e,t,n):((a=1!==s||!ye.isXMLDoc(e))&&(t=t.toLowerCase(),o=ye.attrHooks[t]||(I.test(t)?_:O)),n!==C?null===n?void ye.removeAttr(e,t):o&&"set"in o&&a&&(i=o.set(e,n,t))!==C?i:(e.setAttribute(t,n+""),n):o&&"get"in o&&a&&null!==(i=o.get(e,t))?i:null===(i=e.getAttribute(t))?C:i)},removeAttr:function(e,t){var n,r,i,o,a=0;if(t&&1===e.nodeType)for(r=t.split(k);a<r.length;a++)(i=r[a])&&(n=ye.propFix[i]||i,(o=I.test(i))||ye.attr(e,i,""),e.removeAttribute(z?i:n),o&&n in e&&(e[n]=!1))},attrHooks:{type:{set:function(e,t){if(P.test(e.nodeName)&&e.parentNode)ye.error("type property can't be changed");else if(!ye.support.radioValue&&"radio"===t&&ye.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return O&&ye.nodeName(e,"button")?O.get(e,t):t in e?e.value:null},set:function(e,t,n){if(O&&ye.nodeName(e,"button"))return O.set(e,t,n);e.value=t}}},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(e,t,n){var r,i,o=e.nodeType;if(e&&3!==o&&8!==o&&2!==o)return(1!==o||!ye.isXMLDoc(e))&&(t=ye.propFix[t]||t,i=ye.propHooks[t]),n!==C?i&&"set"in i&&(r=i.set(e,n,t))!==C?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=e.getAttributeNode("tabindex");return t&&t.specified?parseInt(t.value,10):R.test(e.nodeName)||$.test(e.nodeName)&&e.href?0:C}}}}),_={get:function(e,t){var n,r=ye.prop(e,t);return!0===r||"boolean"!=typeof r&&(n=e.getAttributeNode(t))&&!1!==n.nodeValue?t.toLowerCase():C},set:function(e,t,n){var r;return!1===t?ye.removeAttr(e,n):((r=ye.propFix[n]||n)in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},z||(q={name:!0,id:!0,coords:!0},O=ye.valHooks.button={get:function(e,t){var n;return(n=e.getAttributeNode(t))&&(q[t]?""!==n.value:n.specified)?n.value:C},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=y.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},ye.each(["width","height"],function(e,n){ye.attrHooks[n]=ye.extend(ye.attrHooks[n],{set:function(e,t){if(""===t)return e.setAttribute(n,"auto"),t}})}),ye.attrHooks.contenteditable={get:O.get,set:function(e,t,n){""===t&&(t="false"),O.set(e,t,n)}}),ye.support.hrefNormalized||ye.each(["href","src","width","height"],function(e,n){ye.attrHooks[n]=ye.extend(ye.attrHooks[n],{get:function(e){var t=e.getAttribute(n,2);return null===t?C:t}})}),ye.support.style||(ye.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||C},set:function(e,t){return e.style.cssText=t+""}}),ye.support.optSelected||(ye.propHooks.selected=ye.extend(ye.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),ye.support.enctype||(ye.propFix.enctype="encoding"),ye.support.checkOn||ye.each(["radio","checkbox"],function(){ye.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),ye.each(["radio","checkbox"],function(){ye.valHooks[this]=ye.extend(ye.valHooks[this],{set:function(e,t){if(ye.isArray(t))return e.checked=0<=ye.inArray(ye(e).val(),t)}})});var X=/^(?:textarea|input|select)$/i,U=/^([^\.]*|)(?:\.(.+)|)$/,Y=/(?:^|\s)hover(\.\S+|)\b/,V=/^key/,J=/^(?:mouse|contextmenu)|click/,G=/^(?:focusinfocus|focusoutblur)$/,Q=function(e){return ye.event.special.hover?e:e.replace(Y,"mouseenter$1 mouseleave$1")};function K(){return!1}function Z(){return!0}ye.event={add:function(e,t,n,r,i){var o,a,s,l,u,c,f,p,d,h,g;if(3!==e.nodeType&&8!==e.nodeType&&t&&n&&(o=ye._data(e))){for(n.handler&&(n=(d=n).handler,i=d.selector),n.guid||(n.guid=ye.guid++),(s=o.events)||(o.events=s={}),(a=o.handle)||(o.handle=a=function(e){return void 0===ye||e&&ye.event.triggered===e.type?C:ye.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=ye.trim(Q(t)).split(" "),l=0;l<t.length;l++)c=(u=U.exec(t[l])||[])[1],f=(u[2]||"").split(".").sort(),g=ye.event.special[c]||{},c=(i?g.delegateType:g.bindType)||c,g=ye.event.special[c]||{},p=ye.extend({type:c,origType:u[1],data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ye.expr.match.needsContext.test(i),namespace:f.join(".")},d),(h=s[c])||((h=s[c]=[]).delegateCount=0,g.setup&&!1!==g.setup.call(e,r,f,a)||(e.addEventListener?e.addEventListener(c,a,!1):e.attachEvent&&e.attachEvent("on"+c,a))),g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),i?h.splice(h.delegateCount++,0,p):h.push(p),ye.event.global[c]=!0;e=null}},global:{},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,p,d,h,g,m=ye.hasData(e)&&ye._data(e);if(m&&(p=m.events)){for(t=ye.trim(Q(t||"")).split(" "),o=0;o<t.length;o++)if(s=l=(a=U.exec(t[o])||[])[1],u=a[2],s){for(d=ye.event.special[s]||{},c=(h=p[s=(r?d.delegateType:d.bindType)||s]||[]).length,u=u?new RegExp("(^|\\.)"+u.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null,f=0;f<h.length;f++)g=h[f],!i&&l!==g.origType||n&&n.guid!==g.guid||u&&!u.test(g.namespace)||r&&r!==g.selector&&("**"!==r||!g.selector)||(h.splice(f--,1),g.selector&&h.delegateCount--,d.remove&&d.remove.call(e,g));0===h.length&&c!==h.length&&(d.teardown&&!1!==d.teardown.call(e,u,m.handle)||ye.removeEvent(e,s,m.handle),delete p[s])}else for(s in p)ye.event.remove(e,s+t[o],n,r,!0);ye.isEmptyObject(p)&&(delete m.handle,ye.removeData(e,"events",!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(e,t,n,r){if(!n||3!==n.nodeType&&8!==n.nodeType){var i,o,a,s,l,u,c,f,p,d,h=e.type||e,g=[];if(!G.test(h+ye.event.triggered)&&(0<=h.indexOf("!")&&(h=h.slice(0,-1),o=!0),0<=h.indexOf(".")&&(h=(g=h.split(".")).shift(),g.sort()),n&&!ye.event.customEvent[h]||ye.event.global[h]))if((e="object"==typeof e?e[ye.expando]?e:new ye.Event(h,e):new ye.Event(h)).type=h,e.isTrigger=!0,e.exclusive=o,e.namespace=g.join("."),e.namespace_re=e.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,u=h.indexOf(":")<0?"on"+h:"",n){if(e.result=C,e.target||(e.target=n),(t=null!=t?ye.makeArray(t):[]).unshift(e),!(c=ye.event.special[h]||{}).trigger||!1!==c.trigger.apply(n,t)){if(p=[[n,c.bindType||h]],!r&&!c.noBubble&&!ye.isWindow(n)){for(d=c.delegateType||h,s=G.test(d+h)?n:n.parentNode,l=n;s;s=s.parentNode)p.push([s,d]),l=s;l===(n.ownerDocument||y)&&p.push([l.defaultView||l.parentWindow||m,d])}for(a=0;a<p.length&&!e.isPropagationStopped();a++)s=p[a][0],e.type=p[a][1],(f=(ye._data(s,"events")||{})[e.type]&&ye._data(s,"handle"))&&f.apply(s,t),(f=u&&s[u])&&ye.acceptData(s)&&f.apply&&!1===f.apply(s,t)&&e.preventDefault();return e.type=h,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(n.ownerDocument,t)||"click"===h&&ye.nodeName(n,"a")||!ye.acceptData(n)||u&&n[h]&&("focus"!==h&&"blur"!==h||0!==e.target.offsetWidth)&&!ye.isWindow(n)&&((l=n[u])&&(n[u]=null),n[ye.event.triggered=h](),ye.event.triggered=C,l&&(n[u]=l)),e.result}}else for(a in i=ye.cache)i[a].events&&i[a].events[h]&&ye.event.trigger(e,t,i[a].handle.elem,!0)}},dispatch:function(e){e=ye.event.fix(e||m.event);var t,n,r,i,o,a,s,l,u,c=(ye._data(this,"events")||{})[e.type]||[],f=c.delegateCount,p=v.call(arguments),d=!e.exclusive&&!e.namespace,h=ye.event.special[e.type]||{},g=[];if((p[0]=e).delegateTarget=this,!h.preDispatch||!1!==h.preDispatch.call(this,e)){if(f&&(!e.button||"click"!==e.type))for(r=e.target;r!=this;r=r.parentNode||this)if(!0!==r.disabled||"click"!==e.type){for(o={},s=[],t=0;t<f;t++)o[u=(l=c[t]).selector]===C&&(o[u]=l.needsContext?0<=ye(u,this).index(r):ye.find(u,this,null,[r]).length),o[u]&&s.push(l);s.length&&g.push({elem:r,matches:s})}for(c.length>f&&g.push({elem:this,matches:c.slice(f)}),t=0;t<g.length&&!e.isPropagationStopped();t++)for(a=g[t],e.currentTarget=a.elem,n=0;n<a.matches.length&&!e.isImmediatePropagationStopped();n++)l=a.matches[n],(d||!e.namespace&&!l.namespace||e.namespace_re&&e.namespace_re.test(l.namespace))&&(e.data=l.data,e.handleObj=l,(i=((ye.event.special[l.origType]||{}).handle||l.handler).apply(a.elem,p))!==C&&!1===(e.result=i)&&(e.preventDefault(),e.stopPropagation()));return h.postDispatch&&h.postDispatch.call(this,e),e.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=(n=e.target.ownerDocument||y).documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||o===C||(e.which=1&o?1:2&o?3:4&o?2:0),e}},fix:function(e){if(e[ye.expando])return e;var t,n,r=e,i=ye.event.fixHooks[e.type]||{},o=i.props?this.props.concat(i.props):this.props;for(e=ye.Event(r),t=o.length;t;)e[n=o[--t]]=r[n];return e.target||(e.target=r.srcElement||y),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,i.filter?i.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){ye.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=ye.extend(new ye.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?ye.event.trigger(i,null,t):ye.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},ye.event.handle=ye.event.dispatch,ye.removeEvent=y.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(void 0===e[r]&&(e[r]=null),e.detachEvent(r,n))},ye.Event=function(e,t){if(!(this instanceof ye.Event))return new ye.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||!1===e.returnValue||e.getPreventDefault&&e.getPreventDefault()?Z:K):this.type=e,t&&ye.extend(this,t),this.timeStamp=e&&e.timeStamp||ye.now(),this[ye.expando]=!0},ye.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var e=this.originalEvent;e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=Z;var e=this.originalEvent;e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z,this.stopPropagation()},isDefaultPrevented:K,isPropagationStopped:K,isImmediatePropagationStopped:K},ye.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,i){ye.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;r.selector;return n&&(n===this||ye.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ye.support.submitBubbles||(ye.event.special.submit={setup:function(){if(ye.nodeName(this,"form"))return!1;ye.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=ye.nodeName(t,"input")||ye.nodeName(t,"button")?t.form:C;n&&!ye._data(n,"_submit_attached")&&(ye.event.add(n,"submit._submit",function(e){e._submit_bubble=!0}),ye._data(n,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&ye.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(ye.nodeName(this,"form"))return!1;ye.event.remove(this,"._submit")}}),ye.support.changeBubbles||(ye.event.special.change={setup:function(){if(X.test(this.nodeName))return"checkbox"!==this.type&&"radio"!==this.type||(ye.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),ye.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),ye.event.simulate("change",this,e,!0)})),!1;ye.event.add(this,"beforeactivate._change",function(e){var t=e.target;X.test(t.nodeName)&&!ye._data(t,"_change_attached")&&(ye.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||ye.event.simulate("change",this.parentNode,e,!0)}),ye._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return ye.event.remove(this,"._change"),!X.test(this.nodeName)}}),ye.support.focusinBubbles||ye.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){ye.event.simulate(t,e.target,ye.event.fix(e),!0)};ye.event.special[t]={setup:function(){0==n++&&y.addEventListener(e,r,!0)},teardown:function(){0==--n&&y.removeEventListener(e,r,!0)}}}),ye.fn.extend({on:function(e,t,n,r,i){var o,a;if("object"==typeof e){for(a in"string"!=typeof t&&(n=n||t,t=C),e)this.on(a,t,n,e[a],i);return this}if(null==n&&null==r?(r=t,n=t=C):null==r&&("string"==typeof t?(r=n,n=C):(r=n,n=t,t=C)),!1===r)r=K;else if(!r)return this;return 1===i&&(o=r,(r=function(e){return ye().off(e),o.apply(this,arguments)}).guid=o.guid||(o.guid=ye.guid++)),this.each(function(){ye.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ye(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"!=typeof e)return!1!==t&&"function"!=typeof t||(n=t,t=C),!1===n&&(n=K),this.each(function(){ye.event.remove(this,e,n,t)});for(i in e)this.off(i,t,e[i]);return this},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return ye(this.context).on(e,this.selector,t,n),this},die:function(e,t){return ye(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){ye.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return ye.event.trigger(e,t,this[0],!0)},toggle:function(n){var r=arguments,e=n.guid||ye.guid++,i=0,t=function(e){var t=(ye._data(this,"lastToggle"+n.guid)||0)%i;return ye._data(this,"lastToggle"+n.guid,t+1),e.preventDefault(),r[t].apply(this,arguments)||!1};for(t.guid=e;i<r.length;)r[i++].guid=e;return this.click(t)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ye.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 contextmenu".split(" "),function(e,n){ye.fn[n]=function(e,t){return null==t&&(t=e,e=null),0<arguments.length?this.on(n,null,e,t):this.trigger(n)},V.test(n)&&(ye.event.fixHooks[n]=ye.event.keyHooks),J.test(n)&&(ye.event.fixHooks[n]=ye.event.mouseHooks)}),function(e,t){var w,n,T,o,u,c,f,a,p,N,s,r,d,h,i,g,l,m,y="undefined",C=("sizcache"+Math.random()).replace(".",""),v=String,k=e.document,b=k.documentElement,E=0,x=0,S=[].pop,A=[].push,j=[].slice,D=[].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(this[t]===e)return t;return-1},L=function(e,t){return e[C]=null==t||t,e},H=function(){var n={},r=[];return L(function(e,t){return r.push(e)>T.cacheLength&&delete n[r.shift()],n[e+" "]=t},n)},F=H(),M=H(),O=H(),_="[\\x20\\t\\r\\n\\f]",q="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",B=q.replace("w","w#"),W="\\["+_+"*("+q+")"+_+"*(?:([*^$|!~]?=)"+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+B+")|)|)"+_+"*\\]",P=":("+q+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+W+")|[^:]|\\\\.)*|.*))\\)|)",R=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)",$=new RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),I=new RegExp("^"+_+"*,"+_+"*"),z=new RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),X=new RegExp(P),U=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Y=/[\x20\t\r\n\f]*[+~]/,V=/h\d/i,J=/input|select|textarea|button/i,G=/\\(?!\\)/g,Q={ID:new RegExp("^#("+q+")"),CLASS:new RegExp("^\\.("+q+")"),NAME:new RegExp("^\\[name=['\"]?("+q+")['\"]?\\]"),TAG:new RegExp("^("+q.replace("w","w*")+")"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+P),POS:new RegExp(R,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:new RegExp("^"+_+"*[>+~]|"+R,"i")},K=function(e){var t=k.createElement("div");try{return e(t)}catch(e){return!1}finally{t=null}},Z=K(function(e){return e.appendChild(k.createComment("")),!e.getElementsByTagName("*").length}),ee=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==y&&"#"===e.firstChild.getAttribute("href")}),te=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),ne=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!(!e.getElementsByClassName||!e.getElementsByClassName("e").length)&&(e.lastChild.className="e",2===e.getElementsByClassName("e").length)}),re=K(function(e){e.id=C+0,e.innerHTML="<a name='"+C+"'></a><div name='"+C+"'></div>",b.insertBefore(e,b.firstChild);var t=k.getElementsByName&&k.getElementsByName(C).length===2+k.getElementsByName(C+0).length;return n=!k.getElementById(C),b.removeChild(e),t});try{j.call(b.childNodes,0)[0].nodeType}catch(e){j=function(e){for(var t,n=[];t=this[e];e++)n.push(t);return n}}function ie(e,t,n,r){n=n||[];var i,o,a,s,l=(t=t||k).nodeType;if(!e||"string"!=typeof e)return n;if(1!==l&&9!==l)return[];if(!(a=u(t))&&!r&&(i=U.exec(e)))if(s=i[1]){if(9===l){if(!(o=t.getElementById(s))||!o.parentNode)return n;if(o.id===s)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(s))&&c(t,o)&&o.id===s)return n.push(o),n}else{if(i[2])return A.apply(n,j.call(t.getElementsByTagName(e),0)),n;if((s=i[3])&&ne&&t.getElementsByClassName)return A.apply(n,j.call(t.getElementsByClassName(s),0)),n}return ge(e.replace($,"$1"),t,n,r,a)}function oe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ae(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function se(a){return L(function(o){return o=+o,L(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function le(e,t,n){if(e===t)return n;for(var r=e.nextSibling;r;){if(r===t)return-1;r=r.nextSibling}return 1}function ue(e,t){var n,r,i,o,a,s,l,u=M[C][e+" "];if(u)return t?0:u.slice(0);for(a=e,s=[],l=T.preFilter;a;){for(o in n&&!(r=I.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(i.push(n=new v(r.shift())),a=a.slice(n.length),n.type=r[0].replace($," ")),T.filter)!(r=Q[o].exec(a))||l[o]&&!(r=l[o](r))||(i.push(n=new v(r.shift())),a=a.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?a.length:a?ie.error(e):M(e,s).slice(0)}function ce(a,e,t){var s=e.dir,l=t&&"parentNode"===e.dir,u=x++;return e.first?function(e,t,n){for(;e=e[s];)if(l||1===e.nodeType)return a(e,t,n)}:function(e,t,n){if(n){for(;e=e[s];)if((l||1===e.nodeType)&&a(e,t,n))return e}else for(var r,i=E+" "+u+" ",o=i+w;e=e[s];)if(l||1===e.nodeType){if((r=e[C])===o)return e.sizset;if("string"==typeof r&&0===r.indexOf(i)){if(e.sizset)return e}else{if(e[C]=o,a(e,t,n))return e.sizset=!0,e;e.sizset=!1}}}}function fe(i){return 1<i.length?function(e,t,n){for(var r=i.length;r--;)if(!i[r](e,t,n))return!1;return!0}:i[0]}function pe(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,u=null!=t;s<l;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),u&&t.push(s)));return a}function de(d,h,g,m,y,e){return m&&!m[C]&&(m=de(m)),y&&!y[C]&&(y=de(y,e)),L(function(e,t,n,r){var i,o,a,s=[],l=[],u=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)ie(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:pe(c,s,d,n,r),p=g?y||(e?d:u||m)?[]:t:f;if(g&&g(f,p,n,r),m)for(i=pe(p,l),m(i,[],n,r),o=i.length;o--;)(a=i[o])&&(p[l[o]]=!(f[l[o]]=a));if(e){if(y||d){if(y){for(i=[],o=p.length;o--;)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}for(o=p.length;o--;)(a=p[o])&&-1<(i=y?D.call(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=pe(p===t?p.splice(u,p.length):p),y?y(null,t,p,r):A.apply(t,p)})}function he(e){for(var r,t,n,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,l=ce(function(e){return e===r},a,!0),u=ce(function(e){return-1<D.call(r,e)},a,!0),c=[function(e,t,n){return!o&&(n||t!==N)||((r=t).nodeType?l(e,t,n):u(e,t,n))}];s<i;s++)if(t=T.relative[e[s].type])c=[ce(fe(c),t)];else{if((t=T.filter[e[s].type].apply(null,e[s].matches))[C]){for(n=++s;n<i&&!T.relative[e[n].type];n++);return de(1<s&&fe(c),1<s&&e.slice(0,s-1).join("").replace($,"$1"),t,s<n&&he(e.slice(s,n)),n<i&&he(e=e.slice(n)),n<i&&e.join(""))}c.push(t)}return fe(c)}function ge(e,t,n,r,i){var o,a,s,l,u,c=ue(e);c.length;if(!r&&1===c.length){if(2<(a=c[0]=c[0].slice(0)).length&&"ID"===(s=a[0]).type&&9===t.nodeType&&!i&&T.relative[a[1].type]){if(!(t=T.find.ID(s.matches[0].replace(G,""),t,i)[0]))return n;e=e.slice(a.shift().length)}for(o=Q.POS.test(e)?-1:a.length-1;0<=o&&(s=a[o],!T.relative[l=s.type]);o--)if((u=T.find[l])&&(r=u(s.matches[0].replace(G,""),Y.test(a[0].type)&&t.parentNode||t,i))){if(a.splice(o,1),!(e=r.length&&a.join("")))return A.apply(n,j.call(r,0)),n;break}}return f(e,c)(r,t,i,n,Y.test(e)),n}function me(){}ie.matches=function(e,t){return ie(e,null,null,t)},ie.matchesSelector=function(e,t){return 0<ie(t,null,null,[e]).length},o=ie.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},u=ie.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},c=ie.contains=b.contains?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&1===r.nodeType&&n.contains&&n.contains(r))}:b.compareDocumentPosition?function(e,t){return t&&!!(16&e.compareDocumentPosition(t))}:function(e,t){for(;t=t.parentNode;)if(t===e)return!0;return!1},ie.attr=function(e,t){var n,r=u(e);return r||(t=t.toLowerCase()),(n=T.attrHandle[t])?n(e):r||te?e.getAttribute(t):(n=e.getAttributeNode(t))?"boolean"==typeof e[t]?e[t]?t:null:n.specified?n.value:null:null},T=ie.selectors={cacheLength:50,createPseudo:L,match:Q,attrHandle:ee?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:n?function(e,t,n){if(typeof t.getElementById!==y&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,t,n){if(typeof t.getElementById!==y&&!n){var r=t.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==y&&r.getAttributeNode("id").value===e?[r]:void 0:[]}},TAG:Z?function(e,t){if(typeof t.getElementsByTagName!==y)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if("*"!==e)return n;for(var r,i=[],o=0;r=n[o];o++)1===r.nodeType&&i.push(r);return i},NAME:re&&function(e,t){if(typeof t.getElementsByName!==y)return t.getElementsByName(name)},CLASS:ne&&function(e,t,n){if(typeof t.getElementsByClassName!==y&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(G,""),e[3]=(e[4]||e[5]||"").replace(G,""),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1]?(e[2]||ie.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*("even"===e[2]||"odd"===e[2])),e[4]=+(e[6]+e[7]||"odd"===e[2])):e[2]&&ie.error(e[0]),e},PSEUDO:function(e){var t,n;return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[3]:(t=e[4])&&(X.test(t)&&(n=ue(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t),e.slice(0,3))}},filter:{ID:n?function(t){return t=t.replace(G,""),function(e){return e.getAttribute("id")===t}}:function(n){return n=n.replace(G,""),function(e){var t=typeof e.getAttributeNode!==y&&e.getAttributeNode("id");return t&&t.value===n}},TAG:function(t){return"*"===t?function(){return!0}:(t=t.replace(G,"").toLowerCase(),function(e){return e.nodeName&&e.nodeName.toLowerCase()===t})},CLASS:function(e){var t=F[C][e+" "];return t||(t=new RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&F(e,function(e){return t.test(e.className||typeof e.getAttribute!==y&&e.getAttribute("class")||"")})},ATTR:function(r,i,o){return function(e,t){var n=ie.attr(e,r);return null==n?"!="===i:!i||(n+="","="===i?n===o:"!="===i?n!==o:"^="===i?o&&0===n.indexOf(o):"*="===i?o&&-1<n.indexOf(o):"$="===i?o&&n.substr(n.length-o.length)===o:"~="===i?-1<(" "+n+" ").indexOf(o):"|="===i&&(n===o||n.substr(0,o.length+1)===o+"-"))}},CHILD:function(n,e,i,o){return"nth"===n?function(e){var t,n,r=e.parentNode;if(1===i&&0===o)return!0;if(r)for(n=0,t=r.firstChild;t&&(1!==t.nodeType||(n++,e!==t));t=t.nextSibling);return(n-=o)===i||n%i==0&&0<=n/i}:function(e){var t=e;switch(n){case"only":case"first":for(;t=t.previousSibling;)if(1===t.nodeType)return!1;if("first"===n)return!0;t=e;case"last":for(;t=t.nextSibling;)if(1===t.nodeType)return!1;return!0}}},PSEUDO:function(e,o){var t,a=T.pseudos[e]||T.setFilters[e.toLowerCase()]||ie.error("unsupported pseudo: "+e);return a[C]?a(o):1<a.length?(t=[e,e,"",o],T.setFilters.hasOwnProperty(e.toLowerCase())?L(function(e,t){for(var n,r=a(e,o),i=r.length;i--;)e[n=D.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:L(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[C]?L(function(e,t,n,r){for(var i,o=s(e,null,r,[]),a=e.length;a--;)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),!i.pop()}}),has:L(function(t){return function(e){return 0<ie(t,e).length}}),contains:L(function(t){return function(e){return-1<(e.textContent||e.innerText||o(e)).indexOf(t)}}),enabled:function(e){return!1===e.disabled},disabled:function(e){return!0===e.disabled},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},parent:function(e){return!T.pseudos.empty(e)},empty:function(e){var t;for(e=e.firstChild;e;){if("@"<e.nodeName||3===(t=e.nodeType)||4===t)return!1;e=e.nextSibling}return!0},header:function(e){return V.test(e.nodeName)},text:function(e){var t,n;return"input"===e.nodeName.toLowerCase()&&"text"===(t=e.type)&&(null==(n=e.getAttribute("type"))||n.toLowerCase()===t)},radio:oe("radio"),checkbox:oe("checkbox"),file:oe("file"),password:oe("password"),image:oe("image"),submit:ae("submit"),reset:ae("reset"),button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},input:function(e){return J.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:se(function(){return[0]}),last:se(function(e,t){return[t-1]}),eq:se(function(e,t,n){return[n<0?n+t:n]}),even:se(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:se(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:se(function(e,t,n){for(var r=n<0?n+t:n;0<=--r;)e.push(r);return e}),gt:se(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},a=b.compareDocumentPosition?function(e,t){return e===t?(p=!0,0):(e.compareDocumentPosition&&t.compareDocumentPosition?4&e.compareDocumentPosition(t):e.compareDocumentPosition)?-1:1}:function(e,t){if(e===t)return p=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],o=[],a=e.parentNode,s=t.parentNode,l=a;if(a===s)return le(e,t);if(!a)return-1;if(!s)return 1;for(;l;)i.unshift(l),l=l.parentNode;for(l=s;l;)o.unshift(l),l=l.parentNode;n=i.length,r=o.length;for(var u=0;u<n&&u<r;u++)if(i[u]!==o[u])return le(i[u],o[u]);return u===n?le(e,o[u],-1):le(i[u],t,1)},[0,0].sort(a),s=!p,ie.uniqueSort=function(e){var t,n=[],r=1,i=0;if(p=s,e.sort(a),p){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));for(;i--;)e.splice(n[i],1)}return e},ie.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},f=ie.compile=function(e,t){var n,m,y,v,b,x,r=[],i=[],o=O[C][e+" "];if(!o){for(t||(t=ue(e)),n=t.length;n--;)(o=he(t[n]))[C]?r.push(o):i.push(o);o=O(e,(m=i,v=0<(y=r).length,b=0<m.length,(x=function(e,t,n,r,i){var o,a,s,l=[],u=0,c="0",f=e&&[],p=null!=i,d=N,h=e||b&&T.find.TAG("*",i&&t.parentNode||t),g=E+=null==d?1:Math.E;for(p&&(N=t!==k&&t,w=x.el);null!=(o=h[c]);c++){if(b&&o){for(a=0;s=m[a];a++)if(s(o,t,n)){r.push(o);break}p&&(E=g,w=++x.el)}v&&((o=!s&&o)&&u--,e&&f.push(o))}if(u+=c,v&&c!==u){for(a=0;s=y[a];a++)s(f,l,t,n);if(e){if(0<u)for(;c--;)f[c]||l[c]||(l[c]=S.call(r));l=pe(l)}A.apply(r,l),p&&!e&&0<l.length&&1<u+y.length&&ie.uniqueSort(r)}return p&&(E=g,N=d),f}).el=0,v?L(x):x))}return o},k.querySelectorAll&&(d=ge,h=/'|\\/g,i=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,g=[":focus"],l=[":active"],m=b.matchesSelector||b.mozMatchesSelector||b.webkitMatchesSelector||b.oMatchesSelector||b.msMatchesSelector,K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||g.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&g.push("[*^$]="+_+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled")}),g=new RegExp(g.join("|")),ge=function(e,t,n,r,i){if(!r&&!i&&!g.test(e)){var o,a,s=!0,l=C,u=t,c=9===t.nodeType&&e;if(1===t.nodeType&&"object"!==t.nodeName.toLowerCase()){for(o=ue(e),(s=t.getAttribute("id"))?l=s.replace(h,"\\$&"):t.setAttribute("id",l),l="[id='"+l+"'] ",a=o.length;a--;)o[a]=l+o[a].join("");u=Y.test(e)&&t.parentNode||t,c=o.join(",")}if(c)try{return A.apply(n,j.call(u.querySelectorAll(c),0)),n}catch(e){}finally{s||t.removeAttribute("id")}}return d(e,t,n,r,i)},m&&(K(function(e){r=m.call(e,"div");try{m.call(e,"[test!='']:sizzle"),l.push("!=",P)}catch(e){}}),l=new RegExp(l.join("|")),ie.matchesSelector=function(e,t){if(t=t.replace(i,"='$1']"),!u(e)&&!l.test(t)&&!g.test(t))try{var n=m.call(e,t);if(n||r||e.document&&11!==e.document.nodeType)return n}catch(e){}return 0<ie(t,null,null,[e]).length})),T.pseudos.nth=T.pseudos.eq,T.filters=me.prototype=T.pseudos,T.setFilters=new me,ie.attr=ye.attr,ye.find=ie,ye.expr=ie.selectors,ye.expr[":"]=ye.expr.pseudos,ye.unique=ie.uniqueSort,ye.text=ie.getText,ye.isXMLDoc=ie.isXML,ye.contains=ie.contains}(m);var ee=/Until$/,te=/^(?:parents|prev(?:Until|All))/,ne=/^.[^:#\[\.,]*$/,re=ye.expr.match.needsContext,ie={children:!0,contents:!0,next:!0,prev:!0};function oe(e){return!e||!e.parentNode||11===e.parentNode.nodeType}function ae(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function se(e,n,r){if(n=n||0,ye.isFunction(n))return ye.grep(e,function(e,t){return!!n.call(e,t,e)===r});if(n.nodeType)return ye.grep(e,function(e,t){return e===n===r});if("string"==typeof n){var t=ye.grep(e,function(e){return 1===e.nodeType});if(ne.test(n))return ye.filter(n,t,!r);n=ye.filter(n,t)}return ye.grep(e,function(e,t){return 0<=ye.inArray(e,n)===r})}function le(e){var t=fe.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}ye.fn.extend({find:function(e){var t,n,r,i,o,a,s=this;if("string"!=typeof e)return ye(e).filter(function(){for(t=0,n=s.length;t<n;t++)if(ye.contains(s[t],this))return!0});for(a=this.pushStack("","find",e),t=0,n=this.length;t<n;t++)if(r=a.length,ye.find(e,this[t],a),0<t)for(i=r;i<a.length;i++)for(o=0;o<r;o++)if(a[o]===a[i]){a.splice(i--,1);break}return a},has:function(e){var t,n=ye(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(ye.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(se(this,e,!1),"not",e)},filter:function(e){return this.pushStack(se(this,e,!0),"filter",e)},is:function(e){return!!e&&("string"==typeof e?re.test(e)?0<=ye(e,this.context).index(this[0]):0<ye.filter(e,this).length:0<this.filter(e).length)},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=re.test(e)||"string"!=typeof e?ye(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n.ownerDocument&&n!==t&&11!==n.nodeType;){if(a?-1<a.index(n):ye.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}return o=1<o.length?ye.unique(o):o,this.pushStack(o,"closest",e)},index:function(e){return e?"string"==typeof e?ye.inArray(this[0],ye(e)):ye.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n="string"==typeof e?ye(e,t):ye.makeArray(e&&e.nodeType?[e]:e),r=ye.merge(this.get(),n);return this.pushStack(oe(n[0])||oe(r[0])?r:ye.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ye.fn.andSelf=ye.fn.addBack,ye.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return ye.dir(e,"parentNode")},parentsUntil:function(e,t,n){return ye.dir(e,"parentNode",n)},next:function(e){return ae(e,"nextSibling")},prev:function(e){return ae(e,"previousSibling")},nextAll:function(e){return ye.dir(e,"nextSibling")},prevAll:function(e){return ye.dir(e,"previousSibling")},nextUntil:function(e,t,n){return ye.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return ye.dir(e,"previousSibling",n)},siblings:function(e){return ye.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return ye.sibling(e.firstChild)},contents:function(e){return ye.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:ye.merge([],e.childNodes)}},function(r,i){ye.fn[r]=function(e,t){var n=ye.map(this,i,e);return ee.test(r)||(t=e),t&&"string"==typeof t&&(n=ye.filter(t,n)),n=1<this.length&&!ie[r]?ye.unique(n):n,1<this.length&&te.test(r)&&(n=n.reverse()),this.pushStack(n,r,v.call(arguments).join(","))}}),ye.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?ye.find.matchesSelector(t[0],e)?[t[0]]:[]:ye.find.matches(e,t)},dir:function(e,t,n){for(var r=[],i=e[t];i&&9!==i.nodeType&&(n===C||1!==i.nodeType||!ye(i).is(n));)1===i.nodeType&&r.push(i),i=i[t];return r},sibling:function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});var ue,ce,fe="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",pe=/ jQuery\d+="(?:null|\d+)"/g,de=/^\s+/,he=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ge=/<([\w:]+)/,me=/<tbody/i,ve=/<|&#?\w+;/,be=/<(?:script|style|link)/i,xe=/<(?:script|object|embed|option|style)/i,we=new RegExp("<(?:"+fe+")[\\s/>]","i"),Te=/^(?:checkbox|radio)$/,Ne=/checked\s*(?:[^=]|=\s*.checked.)/i,Ce=/\/(java|ecma)script/i,ke=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Ee={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,"",""]},Se=le(y),Ae=Se.appendChild(y.createElement("div"));function je(e,t){if(1===t.nodeType&&ye.hasData(e)){var n,r,i,o=ye._data(e),a=ye._data(t,o),s=o.events;if(s)for(n in delete a.handle,a.events={},s)for(r=0,i=s[n].length;r<i;r++)ye.event.add(t,n,s[n][r]);a.data&&(a.data=ye.extend({},a.data))}}function De(e,t){var n;1===t.nodeType&&(t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),"object"===(n=t.nodeName.toLowerCase())?(t.parentNode&&(t.outerHTML=e.outerHTML),ye.support.html5Clone&&e.innerHTML&&!ye.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Te.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.selected=e.defaultSelected:"input"===n||"textarea"===n?t.defaultValue=e.defaultValue:"script"===n&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(ye.expando))}function Le(e){return void 0!==e.getElementsByTagName?e.getElementsByTagName("*"):void 0!==e.querySelectorAll?e.querySelectorAll("*"):[]}function He(e){Te.test(e.type)&&(e.defaultChecked=e.checked)}Ee.optgroup=Ee.option,Ee.tbody=Ee.tfoot=Ee.colgroup=Ee.caption=Ee.thead,Ee.th=Ee.td,ye.support.htmlSerialize||(Ee._default=[1,"X<div>","</div>"]),ye.fn.extend({text:function(e){return ye.access(this,function(e){return e===C?ye.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(e))},null,e,arguments.length)},wrapAll:function(t){if(ye.isFunction(t))return this.each(function(e){ye(this).wrapAll(t.call(this,e))});if(this[0]){var e=ye(t,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(n){return ye.isFunction(n)?this.each(function(e){ye(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ye(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=ye.isFunction(t);return this.each(function(e){ye(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(){return this.parent().each(function(){ye.nodeName(this,"body")||ye(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){1!==this.nodeType&&11!==this.nodeType||this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){1!==this.nodeType&&11!==this.nodeType||this.insertBefore(e,this.firstChild)})},before:function(){if(!oe(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=ye.clean(arguments);return this.pushStack(ye.merge(e,this),"before",this.selector)}},after:function(){if(!oe(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=ye.clean(arguments);return this.pushStack(ye.merge(this,e),"after",this.selector)}},remove:function(e,t){for(var n,r=0;null!=(n=this[r]);r++)e&&!ye.filter(e,[n]).length||(t||1!==n.nodeType||(ye.cleanData(n.getElementsByTagName("*")),ye.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n));return this},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)for(1===e.nodeType&&ye.cleanData(e.getElementsByTagName("*"));e.firstChild;)e.removeChild(e.firstChild);return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ye.clone(this,e,t)})},html:function(e){return ye.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===C)return 1===t.nodeType?t.innerHTML.replace(pe,""):C;if("string"==typeof e&&!be.test(e)&&(ye.support.htmlSerialize||!we.test(e))&&(ye.support.leadingWhitespace||!de.test(e))&&!Ee[(ge.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(he,"<$1></$2>");try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ye.cleanData(t.getElementsByTagName("*")),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(r){return oe(this[0])?this.length?this.pushStack(ye(ye.isFunction(r)?r():r),"replaceWith",r):this:ye.isFunction(r)?this.each(function(e){var t=ye(this),n=t.html();t.replaceWith(r.call(this,e,n))}):("string"!=typeof r&&(r=ye(r).detach()),this.each(function(){var e=this.nextSibling,t=this.parentNode;ye(this).remove(),e?ye(e).before(r):ye(t).append(r)}))},detach:function(e){return this.remove(e,!0)},domManip:function(n,r,i){var e,t,o,a,s,l,u=0,c=(n=[].concat.apply([],n))[0],f=[],p=this.length;if(!ye.support.checkClone&&1<p&&"string"==typeof c&&Ne.test(c))return this.each(function(){ye(this).domManip(n,r,i)});if(ye.isFunction(c))return this.each(function(e){var t=ye(this);n[0]=c.call(this,e,r?t.html():C),t.domManip(n,r,i)});if(this[0]){if(t=(o=(e=ye.buildFragment(n,this,f)).fragment).firstChild,1===o.childNodes.length&&(o=t),t)for(r=r&&ye.nodeName(t,"tr"),a=e.cacheable||p-1;u<p;u++)i.call(r&&ye.nodeName(this[u],"table")?(s=this[u],l="tbody",s.getElementsByTagName(l)[0]||s.appendChild(s.ownerDocument.createElement(l))):this[u],u===a?o:ye.clone(o,!0,!0));o=t=null,f.length&&ye.each(f,function(e,t){t.src?ye.ajax?ye.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,throws:!0}):ye.error("no ajax"):ye.globalEval((t.text||t.textContent||t.innerHTML||"").replace(ke,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),ye.buildFragment=function(e,t,n){var r,i,o,a=e[0];return t=(t=!(t=t||y).nodeType&&t[0]||t).ownerDocument||t,!(1===e.length&&"string"==typeof a&&a.length<512&&t===y&&"<"===a.charAt(0))||xe.test(a)||!ye.support.checkClone&&Ne.test(a)||!ye.support.html5Clone&&we.test(a)||(i=!0,o=(r=ye.fragments[a])!==C),r||(r=t.createDocumentFragment(),ye.clean(e,t,r,n),i&&(ye.fragments[a]=o&&r)),{fragment:r,cacheable:i}},ye.fragments={},ye.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(s,l){ye.fn[s]=function(e){var t,n=0,r=[],i=ye(e),o=i.length,a=1===this.length&&this[0].parentNode;if((null==a||a&&11===a.nodeType&&1===a.childNodes.length)&&1===o)return i[l](this[0]),this;for(;n<o;n++)t=(0<n?this.clone(!0):this).get(),ye(i[n])[l](t),r=r.concat(t);return this.pushStack(r,s,i.selector)}}),ye.extend({clone:function(e,t,n){var r,i,o,a;if(ye.support.html5Clone||ye.isXMLDoc(e)||!we.test("<"+e.nodeName+">")?a=e.cloneNode(!0):(Ae.innerHTML=e.outerHTML,Ae.removeChild(a=Ae.firstChild)),!(ye.support.noCloneEvent&&ye.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ye.isXMLDoc(e)))for(De(e,a),r=Le(e),i=Le(a),o=0;r[o];++o)i[o]&&De(r[o],i[o]);if(t&&(je(e,a),n))for(r=Le(e),i=Le(a),o=0;r[o];++o)je(r[o],i[o]);return r=i=null,a},clean:function(e,t,n,r){var i,o,a,s,l,u,c,f,p,d,h,g=t===y&&Se,m=[];for(t&&void 0!==t.createDocumentFragment||(t=y),i=0;null!=(a=e[i]);i++)if("number"==typeof a&&(a+=""),a){if("string"==typeof a)if(ve.test(a)){for(g=g||le(t),c=t.createElement("div"),g.appendChild(c),a=a.replace(he,"<$1></$2>"),s=(ge.exec(a)||["",""])[1].toLowerCase(),u=(l=Ee[s]||Ee._default)[0],c.innerHTML=l[1]+a+l[2];u--;)c=c.lastChild;if(!ye.support.tbody)for(f=me.test(a),o=(p="table"!==s||f?"<table>"!==l[1]||f?[]:c.childNodes:c.firstChild&&c.firstChild.childNodes).length-1;0<=o;--o)ye.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o]);!ye.support.leadingWhitespace&&de.test(a)&&c.insertBefore(t.createTextNode(de.exec(a)[0]),c.firstChild),a=c.childNodes,c.parentNode.removeChild(c)}else a=t.createTextNode(a);a.nodeType?m.push(a):ye.merge(m,a)}if(c&&(a=c=g=null),!ye.support.appendChecked)for(i=0;null!=(a=m[i]);i++)ye.nodeName(a,"input")?He(a):void 0!==a.getElementsByTagName&&ye.grep(a.getElementsByTagName("input"),He);if(n)for(d=function(e){if(!e.type||Ce.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)},i=0;null!=(a=m[i]);i++)ye.nodeName(a,"script")&&d(a)||(n.appendChild(a),void 0!==a.getElementsByTagName&&(h=ye.grep(ye.merge([],a.getElementsByTagName("script")),d),m.splice.apply(m,[i+1,0].concat(h)),i+=h.length));return m},cleanData:function(e,t){for(var n,r,i,o,a=0,s=ye.expando,l=ye.cache,u=ye.support.deleteExpando,c=ye.event.special;null!=(i=e[a]);a++)if((t||ye.acceptData(i))&&(n=(r=i[s])&&l[r])){if(n.events)for(o in n.events)c[o]?ye.event.remove(i,o):ye.removeEvent(i,o,n.handle);l[r]&&(delete l[r],u?delete i[s]:i.removeAttribute?i.removeAttribute(s):i[s]=null,ye.deletedIds.push(r))}}}),ye.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},ce={},(ue=ye.uaMatch(r.userAgent)).browser&&(ce[ue.browser]=!0,ce.version=ue.version),ce.chrome?ce.webkit=!0:ce.webkit&&(ce.safari=!0),ye.browser=ce,ye.sub=function(){function n(e,t){return new n.fn.init(e,t)}ye.extend(!0,n,this),n.superclass=this,((n.fn=n.prototype=this()).constructor=n).sub=this.sub,n.fn.init=function(e,t){return t&&t instanceof ye&&!(t instanceof n)&&(t=n(t)),ye.fn.init.call(this,e,t,r)},n.fn.init.prototype=n.fn;var r=n(y);return n};var Fe,Me,Oe,_e=/alpha\([^)]*\)/i,qe=/opacity=([^)]*)/,Be=/^(top|right|bottom|left)$/,We=/^(none|table(?!-c[ea]).+)/,Pe=/^margin/,Re=new RegExp("^("+f+")(.*)$","i"),$e=new RegExp("^("+f+")(?!px)[a-z%]+$","i"),Ie=new RegExp("^([-+])=("+f+")","i"),ze={BODY:"block"},Xe={position:"absolute",visibility:"hidden",display:"block"},Ue={letterSpacing:0,fontWeight:400},Ye=["Top","Right","Bottom","Left"],Ve=["Webkit","O","Moz","ms"],Je=ye.fn.toggle;function Ge(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Ve.length;i--;)if((t=Ve[i]+n)in e)return t;return r}function Qe(e,t){return e=t||e,"none"===ye.css(e,"display")||!ye.contains(e.ownerDocument,e)}function Ke(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(n=e[o]).style&&(i[o]=ye._data(n,"olddisplay"),t?(i[o]||"none"!==n.style.display||(n.style.display=""),""===n.style.display&&Qe(n)&&(i[o]=ye._data(n,"olddisplay",nt(n.nodeName)))):(r=Fe(n,"display"),i[o]||"none"===r||ye._data(n,"olddisplay",r)));for(o=0;o<a;o++)(n=e[o]).style&&(t&&"none"!==n.style.display&&""!==n.style.display||(n.style.display=t?i[o]||"":"none"));return e}function Ze(e,t,n){var r=Re.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function et(e,t,n,r){for(var i=n===(r?"border":"content")?4:"width"===t?1:0,o=0;i<4;i+=2)"margin"===n&&(o+=ye.css(e,n+Ye[i],!0)),r?("content"===n&&(o-=parseFloat(Fe(e,"padding"+Ye[i]))||0),"margin"!==n&&(o-=parseFloat(Fe(e,"border"+Ye[i]+"Width"))||0)):(o+=parseFloat(Fe(e,"padding"+Ye[i]))||0,"padding"!==n&&(o+=parseFloat(Fe(e,"border"+Ye[i]+"Width"))||0));return o}function tt(e,t,n){var r="width"===t?e.offsetWidth:e.offsetHeight,i=!0,o=ye.support.boxSizing&&"border-box"===ye.css(e,"boxSizing");if(r<=0||null==r){if(((r=Fe(e,t))<0||null==r)&&(r=e.style[t]),$e.test(r))return r;i=o&&(ye.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+et(e,t,n||(o?"border":"content"),i)+"px"}function nt(e){if(ze[e])return ze[e];var t=ye("<"+e+">").appendTo(y.body),n=t.css("display");return t.remove(),"none"!==n&&""!==n||(Me=y.body.appendChild(Me||ye.extend(y.createElement("iframe"),{frameBorder:0,width:0,height:0})),Oe&&Me.createElement||((Oe=(Me.contentWindow||Me.contentDocument).document).write("<!doctype html><html><body>"),Oe.close()),t=Oe.body.appendChild(Oe.createElement(e)),n=Fe(t,"display"),y.body.removeChild(Me)),ze[e]=n}ye.fn.extend({css:function(e,t){return ye.access(this,function(e,t,n){return n!==C?ye.style(e,t,n):ye.css(e,t)},e,t,1<arguments.length)},show:function(){return Ke(this,!0)},hide:function(){return Ke(this)},toggle:function(e,t){var n="boolean"==typeof e;return ye.isFunction(e)&&ye.isFunction(t)?Je.apply(this,arguments):this.each(function(){(n?e:Qe(this))?ye(this).show():ye(this).hide()})}}),ye.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{float:ye.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=ye.camelCase(t),l=e.style;if(t=ye.cssProps[s]||(ye.cssProps[s]=Ge(l,s)),a=ye.cssHooks[t]||ye.cssHooks[s],n===C)return a&&"get"in a&&(i=a.get(e,!1,r))!==C?i:l[t];if(!("string"===(o=typeof n)&&(i=Ie.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(ye.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||ye.cssNumber[s]||(n+="px"),a&&"set"in a&&(n=a.set(e,n,r))===C)))try{l[t]=n}catch(e){}}},css:function(e,t,n,r){var i,o,a,s=ye.camelCase(t);return t=ye.cssProps[s]||(ye.cssProps[s]=Ge(e.style,s)),(a=ye.cssHooks[t]||ye.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,r)),i===C&&(i=Fe(e,t)),"normal"===i&&t in Ue&&(i=Ue[t]),n||r!==C?(o=parseFloat(i),n||ye.isNumeric(o)?o||0:i):i},swap:function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r}}),m.getComputedStyle?Fe=function(e,t){var n,r,i,o,a=m.getComputedStyle(e,null),s=e.style;return a&&(""!==(n=a.getPropertyValue(t)||a[t])||ye.contains(e.ownerDocument,e)||(n=ye.style(e,t)),$e.test(n)&&Pe.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=n,n=a.width,s.width=r,s.minWidth=i,s.maxWidth=o)),n}:y.documentElement.currentStyle&&(Fe=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],o=e.style;return null==i&&o&&o[t]&&(i=o[t]),$e.test(i)&&!Be.test(t)&&(n=o.left,(r=e.runtimeStyle&&e.runtimeStyle.left)&&(e.runtimeStyle.left=e.currentStyle.left),o.left="fontSize"===t?"1em":i,i=o.pixelLeft+"px",o.left=n,r&&(e.runtimeStyle.left=r)),""===i?"auto":i}),ye.each(["height","width"],function(e,r){ye.cssHooks[r]={get:function(e,t,n){if(t)return 0===e.offsetWidth&&We.test(Fe(e,"display"))?ye.swap(e,Xe,function(){return tt(e,r,n)}):tt(e,r,n)},set:function(e,t,n){return Ze(0,t,n?et(e,r,n,ye.support.boxSizing&&"border-box"===ye.css(e,"boxSizing")):0)}}}),ye.support.opacity||(ye.cssHooks.opacity={get:function(e,t){return qe.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=ye.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";(n.zoom=1)<=t&&""===ye.trim(o.replace(_e,""))&&n.removeAttribute&&(n.removeAttribute("filter"),r&&!r.filter)||(n.filter=_e.test(o)?o.replace(_e,i):o+" "+i)}}),ye(function(){ye.support.reliableMarginRight||(ye.cssHooks.marginRight={get:function(e,t){return ye.swap(e,{display:"inline-block"},function(){if(t)return Fe(e,"marginRight")})}}),!ye.support.pixelPosition&&ye.fn.position&&ye.each(["top","left"],function(e,r){ye.cssHooks[r]={get:function(e,t){if(t){var n=Fe(e,r);return $e.test(n)?ye(e).position()[r]+"px":n}}}})}),ye.expr&&ye.expr.filters&&(ye.expr.filters.hidden=function(e){return 0===e.offsetWidth&&0===e.offsetHeight||!ye.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||Fe(e,"display"))},ye.expr.filters.visible=function(e){return!ye.expr.filters.hidden(e)}),ye.each({margin:"",padding:"",border:"Width"},function(i,o){ye.cssHooks[i+o]={expand:function(e){var t,n="string"==typeof e?e.split(" "):[e],r={};for(t=0;t<4;t++)r[i+Ye[t]+o]=n[t]||n[t-2]||n[0];return r}},Pe.test(i)||(ye.cssHooks[i+o].set=Ze)});var rt=/%20/g,it=/\[\]$/,ot=/\r?\n/g,at=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,st=/^(?:select|textarea)/i;function lt(n,e,r,i){var t;if(ye.isArray(e))ye.each(e,function(e,t){r||it.test(n)?i(n,t):lt(n+"["+("object"==typeof t?e:"")+"]",t,r,i)});else if(r||"object"!==ye.type(e))i(n,e);else for(t in e)lt(n+"["+t+"]",e[t],r,i)}ye.fn.extend({serialize:function(){return ye.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?ye.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||st.test(this.nodeName)||at.test(this.type))}).map(function(e,n){var t=ye(this).val();return null==t?null:ye.isArray(t)?ye.map(t,function(e,t){return{name:n.name,value:e.replace(ot,"\r\n")}}):{name:n.name,value:t.replace(ot,"\r\n")}}).get()}}),ye.param=function(e,t){var n,r=[],i=function(e,t){t=ye.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===C&&(t=ye.ajaxSettings&&ye.ajaxSettings.traditional),ye.isArray(e)||e.jquery&&!ye.isPlainObject(e))ye.each(e,function(){i(this.name,this.value)});else for(n in e)lt(n,e[n],t,i);return r.join("&").replace(rt,"+")};var ut,ct,ft=/#.*$/,pt=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,dt=/^(?:GET|HEAD)$/,ht=/^\/\//,gt=/\?/,mt=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,yt=/([?&])_=[^&]*/,vt=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,bt=ye.fn.load,xt={},wt={},Tt=["*/"]+["*"];try{ct=e.href}catch(e){(ct=y.createElement("a")).href="",ct=ct.href}function Nt(s){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r,i=e.toLowerCase().split(k),o=0,a=i.length;if(ye.isFunction(t))for(;o<a;o++)n=i[o],(r=/^\+/.test(n))&&(n=n.substr(1)||"*"),(s[n]=s[n]||[])[r?"unshift":"push"](t)}}function Ct(e,t,n,r,i,o){(o=o||{})[i=i||t.dataTypes[0]]=!0;for(var a,s=e[i],l=0,u=s?s.length:0,c=e===xt;l<u&&(c||!a);l++)"string"==typeof(a=s[l](t,n,r))&&(a=!c||o[a]?C:(t.dataTypes.unshift(a),Ct(e,t,n,r,a,o)));return!c&&a||o["*"]||(a=Ct(e,t,n,r,"*",o)),a}function kt(e,t){var n,r,i=ye.ajaxSettings.flatOptions||{};for(n in t)t[n]!==C&&((i[n]?e:r||(r={}))[n]=t[n]);r&&ye.extend(!0,e,r)}ut=vt.exec(ct.toLowerCase())||[],ye.fn.load=function(e,t,n){if("string"!=typeof e&&bt)return bt.apply(this,arguments);if(!this.length)return this;var r,i,o,a=this,s=e.indexOf(" ");return 0<=s&&(r=e.slice(s,e.length),e=e.slice(0,s)),ye.isFunction(t)?(n=t,t=C):t&&"object"==typeof t&&(i="POST"),ye.ajax({url:e,type:i,dataType:"html",data:t,complete:function(e,t){n&&a.each(n,o||[e.responseText,t,e])}}).done(function(e){o=arguments,a.html(r?ye("<div>").append(e.replace(mt,"")).find(r):e)}),this},ye.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){ye.fn[t]=function(e){return this.on(t,e)}}),ye.each(["get","post"],function(e,i){ye[i]=function(e,t,n,r){return ye.isFunction(t)&&(r=r||n,n=t,t=C),ye.ajax({type:i,url:e,data:t,success:n,dataType:r})}}),ye.extend({getScript:function(e,t){return ye.get(e,C,t,"script")},getJSON:function(e,t,n){return ye.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?kt(e,ye.ajaxSettings):(t=e,e=ye.ajaxSettings),kt(e,t),e},ajaxSettings:{url:ct,isLocal:/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(ut[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tt},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":m.String,"text html":!0,"text json":ye.parseJSON,"text xml":ye.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Nt(xt),ajaxTransport:Nt(wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=C),t=t||{};var c,f,n,p,d,r,h,i,g=ye.ajaxSetup({},t),m=g.context||g,y=m!==g&&(m.nodeType||m instanceof ye)?ye(m):ye.event,v=ye.Deferred(),b=ye.Callbacks("once memory"),x=g.statusCode||{},o={},a={},w=0,s="canceled",T={readyState:0,setRequestHeader:function(e,t){if(!w){var n=e.toLowerCase();e=a[n]=a[n]||e,o[e]=t}return this},getAllResponseHeaders:function(){return 2===w?f:null},getResponseHeader:function(e){var t;if(2===w){if(!n)for(n={};t=pt.exec(f);)n[t[1].toLowerCase()]=t[2];t=n[e.toLowerCase()]}return t===C?null:t},overrideMimeType:function(e){return w||(g.mimeType=e),this},abort:function(e){return e=e||s,p&&p.abort(e),l(0,e),this}};function l(e,t,n,r){var i,o,a,s,l,u=t;2!==w&&(w=2,d&&clearTimeout(d),p=C,f=r||"",T.readyState=0<e?4:0,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,l=e.dataTypes,u=e.responseFields;for(i in u)i in n&&(t[u[i]]=n[i]);for(;"*"===l[0];)l.shift(),r===C&&(r=e.mimeType||t.getResponseHeader("content-type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(g,T,n)),200<=e&&e<300||304===e?(g.ifModified&&((l=T.getResponseHeader("Last-Modified"))&&(ye.lastModified[c]=l),(l=T.getResponseHeader("Etag"))&&(ye.etag[c]=l)),i=304===e?(u="notmodified",!0):(u=(i=function(e,t){var n,r,i,o,a=e.dataTypes.slice(),s=a[0],l={},u=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(a[1])for(n in e.converters)l[n.toLowerCase()]=e.converters[n];for(;i=a[++u];)if("*"!==i){if("*"!==s&&s!==i){if(!(n=l[s+" "+i]||l["* "+i]))for(r in l)if((o=r.split(" "))[1]===i&&(n=l[s+" "+o[0]]||l["* "+o[0]])){!0===n?n=l[r]:!0!==l[r]&&(i=o[0],a.splice(u--,0,i));break}if(!0!==n)if(n&&e.throws)t=n(t);else try{t=n(t)}catch(e){return{state:"parsererror",error:n?e:"No conversion from "+s+" to "+i}}}s=i}return{state:"success",data:t}}(g,s)).state,o=i.data,!(a=i.error))):(a=u)&&!e||(u="error",e<0&&(e=0)),T.status=e,T.statusText=(t||u)+"",i?v.resolveWith(m,[o,u,T]):v.rejectWith(m,[T,u,a]),T.statusCode(x),x=C,h&&y.trigger("ajax"+(i?"Success":"Error"),[T,g,i?o:a]),b.fireWith(m,[T,u]),h&&(y.trigger("ajaxComplete",[T,g]),--ye.active||ye.event.trigger("ajaxStop")))}if(v.promise(T),T.success=T.done,T.error=T.fail,T.complete=b.add,T.statusCode=function(e){var t;if(e)if(w<2)for(t in e)x[t]=[x[t],e[t]];else t=e[T.status],T.always(t);return this},g.url=((e||g.url)+"").replace(ft,"").replace(ht,ut[1]+"//"),g.dataTypes=ye.trim(g.dataType||"*").toLowerCase().split(k),null==g.crossDomain&&(r=vt.exec(g.url.toLowerCase()),g.crossDomain=!(!r||r[1]===ut[1]&&r[2]===ut[2]&&(r[3]||("http:"===r[1]?80:443))==(ut[3]||("http:"===ut[1]?80:443)))),g.data&&g.processData&&"string"!=typeof g.data&&(g.data=ye.param(g.data,g.traditional)),Ct(xt,g,t,T),2===w)return T;if(h=g.global,g.type=g.type.toUpperCase(),g.hasContent=!dt.test(g.type),h&&0==ye.active++&&ye.event.trigger("ajaxStart"),!g.hasContent&&(g.data&&(g.url+=(gt.test(g.url)?"&":"?")+g.data,delete g.data),c=g.url,!1===g.cache)){var u=ye.now(),N=g.url.replace(yt,"$1_="+u);g.url=N+(N===g.url?(gt.test(g.url)?"&":"?")+"_="+u:"")}for(i in(g.data&&g.hasContent&&!1!==g.contentType||t.contentType)&&T.setRequestHeader("Content-Type",g.contentType),g.ifModified&&(c=c||g.url,ye.lastModified[c]&&T.setRequestHeader("If-Modified-Since",ye.lastModified[c]),ye.etag[c]&&T.setRequestHeader("If-None-Match",ye.etag[c])),T.setRequestHeader("Accept",g.dataTypes[0]&&g.accepts[g.dataTypes[0]]?g.accepts[g.dataTypes[0]]+("*"!==g.dataTypes[0]?", "+Tt+"; q=0.01":""):g.accepts["*"]),g.headers)T.setRequestHeader(i,g.headers[i]);if(g.beforeSend&&(!1===g.beforeSend.call(m,T,g)||2===w))return T.abort();for(i in s="abort",{success:1,error:1,complete:1})T[i](g[i]);if(p=Ct(wt,g,t,T)){T.readyState=1,h&&y.trigger("ajaxSend",[T,g]),g.async&&0<g.timeout&&(d=setTimeout(function(){T.abort("timeout")},g.timeout));try{w=1,p.send(o,l)}catch(e){if(!(w<2))throw e;l(-1,e)}}else l(-1,"No Transport");return T},active:0,lastModified:{},etag:{}});var Et=[],St=/\?/,At=/(=)\?(?=&|$)|\?\?/,jt=ye.now();ye.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Et.pop()||ye.expando+"_"+jt++;return this[e]=!0,e}}),ye.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=e.data,s=e.url,l=!1!==e.jsonp,u=l&&At.test(s),c=l&&!u&&"string"==typeof a&&!(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&At.test(a);if("jsonp"===e.dataTypes[0]||u||c)return r=e.jsonpCallback=ye.isFunction(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,i=m[r],u?e.url=s.replace(At,"$1"+r):c?e.data=a.replace(At,"$1"+r):l&&(e.url+=(St.test(s)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ye.error(r+" was not called"),o[0]},e.dataTypes[0]="json",m[r]=function(){o=arguments},n.always(function(){m[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Et.push(r)),o&&ye.isFunction(i)&&i(o[0]),o=i=C}),"script"}),ye.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return ye.globalEval(e),e}}}),ye.ajaxPrefilter("script",function(e){e.cache===C&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),ye.ajaxTransport("script",function(t){if(t.crossDomain){var r,i=y.head||y.getElementsByTagName("head")[0]||y.documentElement;return{send:function(e,n){(r=y.createElement("script")).async="async",t.scriptCharset&&(r.charset=t.scriptCharset),r.src=t.url,r.onload=r.onreadystatechange=function(e,t){(t||!r.readyState||/loaded|complete/.test(r.readyState))&&(r.onload=r.onreadystatechange=null,i&&r.parentNode&&i.removeChild(r),r=C,t||n(200,"success"))},i.insertBefore(r,i.firstChild)},abort:function(){r&&r.onload(0,1)}}}});var Dt,Lt,Ht=!!m.ActiveXObject&&function(){for(var e in Dt)Dt[e](0,1)},Ft=0;function Mt(){try{return new m.XMLHttpRequest}catch(e){}}ye.ajaxSettings.xhr=m.ActiveXObject?function(){return!this.isLocal&&Mt()||function(){try{return new m.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}()}:Mt,Lt=ye.ajaxSettings.xhr(),ye.extend(ye.support,{ajax:!!Lt,cors:!!Lt&&"withCredentials"in Lt}),ye.support.ajax&&ye.ajaxTransport(function(c){var f;if(!c.crossDomain||ye.support.cors)return{send:function(e,s){var l,t,u=c.xhr();if(c.username?u.open(c.type,c.url,c.async,c.username,c.password):u.open(c.type,c.url,c.async),c.xhrFields)for(t in c.xhrFields)u[t]=c.xhrFields[t];c.mimeType&&u.overrideMimeType&&u.overrideMimeType(c.mimeType),c.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");try{for(t in e)u.setRequestHeader(t,e[t])}catch(e){}u.send(c.hasContent&&c.data||null),f=function(e,t){var n,r,i,o,a;try{if(f&&(t||4===u.readyState))if(f=C,l&&(u.onreadystatechange=ye.noop,Ht&&delete Dt[l]),t)4!==u.readyState&&u.abort();else{n=u.status,i=u.getAllResponseHeaders(),o={},(a=u.responseXML)&&a.documentElement&&(o.xml=a);try{o.text=u.responseText}catch(e){}try{r=u.statusText}catch(e){r=""}n||!c.isLocal||c.crossDomain?1223===n&&(n=204):n=o.text?200:404}}catch(e){t||s(-1,e)}o&&s(n,r,o,i)},c.async?4===u.readyState?setTimeout(f,0):(l=++Ft,Ht&&(Dt||(Dt={},ye(m).unload(Ht)),Dt[l]=f),u.onreadystatechange=f):f()},abort:function(){f&&f(0,1)}}});var Ot,_t,qt=/^(?:toggle|show|hide)$/,Bt=new RegExp("^(?:([-+])=|)("+f+")([a-z%]*)$","i"),Wt=/queueHooks$/,Pt=[function(t,e,n){var r,i,o,a,s,l,u,c,f,p=this,d=t.style,h={},g=[],m=t.nodeType&&Qe(t);n.queue||(null==(c=ye._queueHooks(t,"fx")).unqueued&&(c.unqueued=0,f=c.empty.fire,c.empty.fire=function(){c.unqueued||f()}),c.unqueued++,p.always(function(){p.always(function(){c.unqueued--,ye.queue(t,"fx").length||c.empty.fire()})}));1===t.nodeType&&("height"in e||"width"in e)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===ye.css(t,"display")&&"none"===ye.css(t,"float")&&(ye.support.inlineBlockNeedsLayout&&"inline"!==nt(t.nodeName)?d.zoom=1:d.display="inline-block"));n.overflow&&(d.overflow="hidden",ye.support.shrinkWrapBlocks||p.done(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(r in e)if(o=e[r],qt.exec(o)){if(delete e[r],l=l||"toggle"===o,o===(m?"hide":"show"))continue;g.push(r)}if(a=g.length){"hidden"in(s=ye._data(t,"fxshow")||ye._data(t,"fxshow",{}))&&(m=s.hidden),l&&(s.hidden=!m),m?ye(t).show():p.done(function(){ye(t).hide()}),p.done(function(){var e;for(e in ye.removeData(t,"fxshow",!0),h)ye.style(t,e,h[e])});for(r=0;r<a;r++)i=g[r],u=p.createTween(i,m?s[i]:0),h[i]=s[i]||ye.style(t,i),i in s||(s[i]=u.start,m&&(u.end=u.start,u.start="width"===i||"height"===i?1:0))}}],Rt={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Bt.exec(t),a=i.cur(),s=+a||0,l=1,u=20;if(o){if(n=+o[2],"px"!==(r=o[3]||(ye.cssNumber[e]?"":"px"))&&s)for(s=ye.css(i.elem,e,!0)||n||1;s/=l=l||".5",ye.style(i.elem,e,s+r),l!==(l=i.cur()/a)&&1!==l&&--u;);i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function $t(){return setTimeout(function(){Ot=C},0),Ot=ye.now()}function It(o,e,t){var n,a,r,i=0,s=Pt.length,l=ye.Deferred().always(function(){delete u.elem}),u=function(){for(var e=Ot||$t(),t=Math.max(0,c.startTime+c.duration-e),n=1-(t/c.duration||0),r=0,i=c.tweens.length;r<i;r++)c.tweens[r].run(n);return l.notifyWith(o,[c,n,t]),n<1&&i?t:(l.resolveWith(o,[c]),!1)},c=l.promise({elem:o,props:ye.extend({},e),opts:ye.extend(!0,{specialEasing:{}},t),originalProperties:e,originalOptions:t,startTime:Ot||$t(),duration:t.duration,tweens:[],createTween:function(e,t,n){var r=ye.Tween(o,c.opts,e,t,c.opts.specialEasing[e]||c.opts.easing);return c.tweens.push(r),r},stop:function(e){for(var t=0,n=e?c.tweens.length:0;t<n;t++)c.tweens[t].run(1);return e?l.resolveWith(o,[c,e]):l.rejectWith(o,[c,e]),this}}),f=c.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(r=ye.camelCase(n),i=t[r],o=e[n],ye.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ye.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(f,c.opts.specialEasing);i<s;i++)if(n=Pt[i].call(c,o,f,c.opts))return n;return a=c,r=f,ye.each(r,function(e,t){for(var n=(Rt[e]||[]).concat(Rt["*"]),r=0,i=n.length;r<i;r++)if(n[r].call(a,e,t))return}),ye.isFunction(c.opts.start)&&c.opts.start.call(o,c),ye.fx.timer(ye.extend(u,{anim:c,queue:c.opts.queue,elem:o})),c.progress(c.opts.progress).done(c.opts.done,c.opts.complete).fail(c.opts.fail).always(c.opts.always)}function zt(e,t,n,r,i){return new zt.prototype.init(e,t,n,r,i)}function Xt(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)r["margin"+(n=Ye[i])]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}ye.Animation=ye.extend(It,{tweener:function(e,t){for(var n,r=0,i=(e=ye.isFunction(e)?(t=e,["*"]):e.split(" ")).length;r<i;r++)n=e[r],Rt[n]=Rt[n]||[],Rt[n].unshift(t)},prefilter:function(e,t){t?Pt.unshift(e):Pt.push(e)}}),((ye.Tween=zt).prototype={constructor:zt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ye.cssNumber[n]?"":"px")},cur:function(){var e=zt.propHooks[this.prop];return e&&e.get?e.get(this):zt.propHooks._default.get(this)},run:function(e){var t,n=zt.propHooks[this.prop];return this.options.duration?this.pos=t=ye.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):zt.propHooks._default.set(this),this}}).init.prototype=zt.prototype,(zt.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=ye.css(e.elem,e.prop,!1,""))&&"auto"!==t?t:0:e.elem[e.prop]},set:function(e){ye.fx.step[e.prop]?ye.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[ye.cssProps[e.prop]]||ye.cssHooks[e.prop])?ye.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}}).scrollTop=zt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ye.each(["toggle","show","hide"],function(r,i){var o=ye.fn[i];ye.fn[i]=function(e,t,n){return null==e||"boolean"==typeof e||!r&&ye.isFunction(e)&&ye.isFunction(t)?o.apply(this,arguments):this.animate(Xt(i,!0),e,t,n)}}),ye.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Qe).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ye.isEmptyObject(t),o=ye.speed(e,n,r),a=function(){var e=It(this,ye.extend({},t),o);i&&e.stop(!0)};return i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=C),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ye.timers,r=ye._data(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&Wt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ye.dequeue(this,i)})}}),ye.each({slideDown:Xt("show"),slideUp:Xt("hide"),slideToggle:Xt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ye.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ye.speed=function(e,t,n){var r=e&&"object"==typeof e?ye.extend({},e):{complete:n||!n&&t||ye.isFunction(e)&&e,duration:e,easing:n&&t||t&&!ye.isFunction(t)&&t};return r.duration=ye.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in ye.fx.speeds?ye.fx.speeds[r.duration]:ye.fx.speeds._default,null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){ye.isFunction(r.old)&&r.old.call(this),r.queue&&ye.dequeue(this,r.queue)},r},ye.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},ye.timers=[],ye.fx=zt.prototype.init,ye.fx.tick=function(){var e,t=ye.timers,n=0;for(Ot=ye.now();n<t.length;n++)(e=t[n])()||t[n]!==e||t.splice(n--,1);t.length||ye.fx.stop(),Ot=C},ye.fx.timer=function(e){e()&&ye.timers.push(e)&&!_t&&(_t=setInterval(ye.fx.tick,ye.fx.interval))},ye.fx.interval=13,ye.fx.stop=function(){clearInterval(_t),_t=null},ye.fx.speeds={slow:600,fast:200,_default:400},ye.fx.step={},ye.expr&&ye.expr.filters&&(ye.expr.filters.animated=function(t){return ye.grep(ye.timers,function(e){return t===e.elem}).length});var Ut=/^(?:body|html)$/i;function Yt(e){return ye.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}ye.fn.offset=function(t){if(arguments.length)return t===C?this:this.each(function(e){ye.offset.setOffset(this,t,e)});var e,n,r,i,o,a,s,l={top:0,left:0},u=this[0],c=u&&u.ownerDocument;return c?(n=c.body)===u?ye.offset.bodyOffset(u):(e=c.documentElement,ye.contains(e,u)?(void 0!==u.getBoundingClientRect&&(l=u.getBoundingClientRect()),r=Yt(c),i=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,a=r.pageYOffset||e.scrollTop,s=r.pageXOffset||e.scrollLeft,{top:l.top+a-i,left:l.left+s-o}):l):void 0},ye.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return ye.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(ye.css(e,"marginTop"))||0,n+=parseFloat(ye.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=ye.css(e,"position");"static"===r&&(e.style.position="relative");var i,o,a=ye(e),s=a.offset(),l=ye.css(e,"top"),u=ye.css(e,"left"),c={},f={};o=("absolute"===r||"fixed"===r)&&-1<ye.inArray("auto",[l,u])?(i=(f=a.position()).top,f.left):(i=parseFloat(l)||0,parseFloat(u)||0),ye.isFunction(t)&&(t=t.call(e,n,s)),null!=t.top&&(c.top=t.top-s.top+i),null!=t.left&&(c.left=t.left-s.left+o),"using"in t?t.using.call(e,c):a.css(c)}},ye.fn.extend({position:function(){if(this[0]){var e=this[0],t=this.offsetParent(),n=this.offset(),r=Ut.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(ye.css(e,"marginTop"))||0,n.left-=parseFloat(ye.css(e,"marginLeft"))||0,r.top+=parseFloat(ye.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(ye.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent||y.body;e&&!Ut.test(e.nodeName)&&"static"===ye.css(e,"position");)e=e.offsetParent;return e||y.body})}}),ye.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o=/Y/.test(i);ye.fn[t]=function(e){return ye.access(this,function(e,t,n){var r=Yt(e);if(n===C)return r?i in r?r[i]:r.document.documentElement[t]:e[t];r?r.scrollTo(o?ye(r).scrollLeft():n,o?n:ye(r).scrollTop()):e[t]=n},t,e,arguments.length,null)}}),ye.each({Height:"height",Width:"width"},function(o,a){ye.each({padding:"inner"+o,content:a,"":"outer"+o},function(r,e){ye.fn[e]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return ye.access(this,function(e,t,n){var r;return ye.isWindow(e)?e.document.documentElement["client"+o]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+o],r["scroll"+o],e.body["offset"+o],r["offset"+o],r["client"+o])):n===C?ye.css(e,t,n,i):ye.style(e,t,n,i)},a,n?e:C,n,null)}})}),m.jQuery=m.$=ye,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return ye})}(window);
diff --git a/sitestatic/jquery.tablesorter-2.7.js b/sitestatic/jquery.tablesorter-2.7.js
new file mode 100644
index 00000000..f8c443ab
--- /dev/null
+++ b/sitestatic/jquery.tablesorter-2.7.js
@@ -0,0 +1,1374 @@
+/*!
+* TableSorter 2.7 - Client-side table sorting with ease!
+* @requires jQuery v1.2.6+
+*
+* Copyright (c) 2007 Christian Bach
+* Examples and docs at: http://tablesorter.com
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+* @type jQuery
+* @name tablesorter
+* @cat Plugins/Tablesorter
+* @author Christian Bach/christian.bach@polyester.se
+* @contributor Rob Garrison/https://github.com/Mottie/tablesorter
+*/
+/*jshint browser:true, jquery:true, unused:false, expr: true */
+/*global console:false, alert:false */
+!(function($) {
+ "use strict";
+ $.extend({
+ /*jshint supernew:true */
+ tablesorter: new function() {
+
+ var ts = this;
+
+ ts.version = "2.7";
+
+ ts.parsers = [];
+ ts.widgets = [];
+ ts.defaults = {
+
+ // *** appearance
+ theme : 'default', // adds tablesorter-{theme} to the table for styling
+ widthFixed : false, // adds colgroup to fix widths of columns
+ showProcessing : false, // show an indeterminate timer icon in the header when the table is sorted or filtered.
+
+ headerTemplate : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> (class from cssIcon)
+ onRenderTemplate : null, // function(index, template){ return template; }, (template is a string)
+ onRenderHeader : null, // function(index){}, (nothing to return)
+
+ // *** functionality
+ cancelSelection : true, // prevent text selection in the header
+ dateFormat : 'mmddyyyy', // other options: "ddmmyyy" or "yyyymmdd"
+ sortMultiSortKey : 'shiftKey', // key used to select additional columns
+ sortResetKey : 'ctrlKey', // key used to remove sorting on a column
+ usNumberFormat : true, // false for German "1.234.567,89" or French "1 234 567,89"
+ delayInit : false, // if false, the parsed table contents will not update until the first sort
+ serverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used.
+
+ // *** sort options
+ headers : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.
+ ignoreCase : true, // ignore case while sorting
+ sortForce : null, // column(s) first sorted; always applied
+ sortList : [], // Initial sort order; applied initially; updated when manually sorted
+ sortAppend : null, // column(s) sorted last; always applied
+
+ sortInitialOrder : 'asc', // sort direction on first click
+ sortLocaleCompare: false, // replace equivalent character (accented characters)
+ sortReset : false, // third click on the header will reset column to default - unsorted
+ sortRestart : false, // restart sort to "sortInitialOrder" when clicking on previously unsorted columns
+
+ emptyTo : 'bottom', // sort empty cell to bottom, top, none, zero
+ stringTo : 'max', // sort strings in numerical column as max, min, top, bottom, zero
+ textExtraction : 'simple', // text extraction method/function - function(node, table, cellIndex){}
+ textSorter : null, // use custom text sorter - function(a,b){ return a.sort(b); } // basic sort
+
+ // *** widget options
+ widgets: [], // method to add widgets, e.g. widgets: ['zebra']
+ widgetOptions : {
+ zebra : [ 'even', 'odd' ] // zebra widget alternating row class names
+ },
+ initWidgets : true, // apply widgets on tablesorter initialization
+
+ // *** callbacks
+ initialized : null, // function(table){},
+
+ // *** css class names
+ tableClass : 'tablesorter',
+ cssAsc : 'tablesorter-headerAsc',
+ cssChildRow : 'tablesorter-childRow', // previously "expand-child"
+ cssDesc : 'tablesorter-headerDesc',
+ cssHeader : 'tablesorter-header',
+ cssHeaderRow : 'tablesorter-headerRow',
+ cssIcon : 'tablesorter-icon', // if this class exists, a <i> will be added to the header automatically
+ cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name
+ cssProcessing : 'tablesorter-processing', // processing icon applied to header during sort/filter
+
+ // *** selectors
+ selectorHeaders : '> thead th, > thead td',
+ selectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort
+ selectorRemove : '.remove-me',
+
+ // *** advanced
+ debug : false,
+
+ // *** Internal variables
+ headerList: [],
+ empties: {},
+ strings: {},
+ parsers: []
+
+ // deprecated; but retained for backwards compatibility
+ // widgetZebra: { css: ["even", "odd"] }
+
+ };
+
+ /* debuging utils */
+ function log(s) {
+ if (typeof console !== "undefined" && typeof console.log !== "undefined") {
+ console.log(s);
+ } else {
+ alert(s);
+ }
+ }
+
+ function benchmark(s, d) {
+ log(s + " (" + (new Date().getTime() - d.getTime()) + "ms)");
+ }
+
+ ts.benchmark = benchmark;
+
+ function getElementText(table, node, cellIndex) {
+ if (!node) { return ""; }
+ var c = table.config,
+ t = c.textExtraction, text = "";
+ if (t === "simple") {
+ if (c.supportsTextContent) {
+ text = node.textContent; // newer browsers support this
+ } else {
+ text = $(node).text();
+ }
+ } else {
+ if (typeof(t) === "function") {
+ text = t(node, table, cellIndex);
+ } else if (typeof(t) === "object" && t.hasOwnProperty(cellIndex)) {
+ text = t[cellIndex](node, table, cellIndex);
+ } else {
+ text = c.supportsTextContent ? node.textContent : $(node).text();
+ }
+ }
+ return $.trim(text);
+ }
+
+ function detectParserForColumn(table, rows, rowIndex, cellIndex) {
+ var i, l = ts.parsers.length,
+ node = false,
+ nodeValue = '',
+ keepLooking = true;
+ while (nodeValue === '' && keepLooking) {
+ rowIndex++;
+ if (rows[rowIndex]) {
+ node = rows[rowIndex].cells[cellIndex];
+ nodeValue = getElementText(table, node, cellIndex);
+ if (table.config.debug) {
+ log('Checking if value was empty on row ' + rowIndex + ', column: ' + cellIndex + ': ' + nodeValue);
+ }
+ } else {
+ keepLooking = false;
+ }
+ }
+ for (i = 1; i < l; i++) {
+ if (ts.parsers[i].is(nodeValue, table, node)) {
+ return ts.parsers[i];
+ }
+ }
+ // 0 is always the generic parser (text)
+ return ts.parsers[0];
+ }
+
+ function buildParserCache(table) {
+ var c = table.config,
+ tb = $(table.tBodies).filter(':not(.' + c.cssInfoBlock + ')'),
+ rows, list, l, i, h, ch, p, parsersDebug = "";
+ if ( tb.length === 0) {
+ return c.debug ? log('*Empty table!* Not building a parser cache') : '';
+ }
+ rows = tb[0].rows;
+ if (rows[0]) {
+ list = [];
+ l = rows[0].cells.length;
+ for (i = 0; i < l; i++) {
+ // tons of thanks to AnthonyM1229 for working out the following selector (issue #74) to make this work in IE8!
+ // More fixes to this selector to work properly in iOS and jQuery 1.8+ (issue #132 & #174)
+ h = c.$headers.filter(':not([colspan])');
+ h = h.add( c.$headers.filter('[colspan="1"]') ) // ie8 fix
+ .filter('[data-column="' + i + '"]:last');
+ ch = c.headers[i];
+ // get column parser
+ p = ts.getParserById( ts.getData(h, ch, 'sorter') );
+ // empty cells behaviour - keeping emptyToBottom for backwards compatibility
+ c.empties[i] = ts.getData(h, ch, 'empty') || c.emptyTo || (c.emptyToBottom ? 'bottom' : 'top' );
+ // text strings behaviour in numerical sorts
+ c.strings[i] = ts.getData(h, ch, 'string') || c.stringTo || 'max';
+ if (!p) {
+ p = detectParserForColumn(table, rows, -1, i);
+ }
+ if (c.debug) {
+ parsersDebug += "column:" + i + "; parser:" + p.id + "; string:" + c.strings[i] + '; empty: ' + c.empties[i] + "\n";
+ }
+ list.push(p);
+ }
+ }
+ if (c.debug) {
+ log(parsersDebug);
+ }
+ return list;
+ }
+
+ /* utils */
+ function buildCache(table) {
+ var b = table.tBodies,
+ tc = table.config,
+ totalRows,
+ totalCells,
+ parsers = tc.parsers,
+ t, v, i, j, k, c, cols, cacheTime, colMax = [];
+ tc.cache = {};
+ // if no parsers found, return - it's an empty table.
+ if (!parsers) {
+ return tc.debug ? log('*Empty table!* Not building a cache') : '';
+ }
+ if (tc.debug) {
+ cacheTime = new Date();
+ }
+ // processing icon
+ if (tc.showProcessing) {
+ ts.isProcessing(table, true);
+ }
+ for (k = 0; k < b.length; k++) {
+ tc.cache[k] = { row: [], normalized: [] };
+ // ignore tbodies with class name from css.cssInfoBlock
+ if (!$(b[k]).hasClass(tc.cssInfoBlock)) {
+ totalRows = (b[k] && b[k].rows.length) || 0;
+ totalCells = (b[k].rows[0] && b[k].rows[0].cells.length) || 0;
+ for (i = 0; i < totalRows; ++i) {
+ /** Add the table data to main data array */
+ c = $(b[k].rows[i]);
+ cols = [];
+ // if this is a child row, add it to the last row's children and continue to the next row
+ if (c.hasClass(tc.cssChildRow)) {
+ tc.cache[k].row[tc.cache[k].row.length - 1] = tc.cache[k].row[tc.cache[k].row.length - 1].add(c);
+ // go to the next for loop
+ continue;
+ }
+ tc.cache[k].row.push(c);
+ for (j = 0; j < totalCells; ++j) {
+ t = getElementText(table, c[0].cells[j], j);
+ // allow parsing if the string is empty, previously parsing would change it to zero,
+ // in case the parser needs to extract data from the table cell attributes
+ v = parsers[j].format(t, table, c[0].cells[j], j);
+ cols.push(v);
+ if ((parsers[j].type || '').toLowerCase() === "numeric") {
+ colMax[j] = Math.max(Math.abs(v), colMax[j] || 0); // determine column max value (ignore sign)
+ }
+ }
+ cols.push(tc.cache[k].normalized.length); // add position for rowCache
+ tc.cache[k].normalized.push(cols);
+ }
+ tc.cache[k].colMax = colMax;
+ }
+ }
+ if (tc.showProcessing) {
+ ts.isProcessing(table); // remove processing icon
+ }
+ if (tc.debug) {
+ benchmark("Building cache for " + totalRows + " rows", cacheTime);
+ }
+ }
+
+ // init flag (true) used by pager plugin to prevent widget application
+ function appendToTable(table, init) {
+ var c = table.config,
+ b = table.tBodies,
+ rows = [],
+ c2 = c.cache,
+ r, n, totalRows, checkCell, $bk, $tb,
+ i, j, k, l, pos, appendTime;
+ if (!c2[0]) { return; } // empty table - fixes #206
+ if (c.debug) {
+ appendTime = new Date();
+ }
+ for (k = 0; k < b.length; k++) {
+ $bk = $(b[k]);
+ if (!$bk.hasClass(c.cssInfoBlock)) {
+ // get tbody
+ $tb = ts.processTbody(table, $bk, true);
+ r = c2[k].row;
+ n = c2[k].normalized;
+ totalRows = n.length;
+ checkCell = totalRows ? (n[0].length - 1) : 0;
+ for (i = 0; i < totalRows; i++) {
+ pos = n[i][checkCell];
+ rows.push(r[pos]);
+ // removeRows used by the pager plugin
+ if (!c.appender || !c.removeRows) {
+ l = r[pos].length;
+ for (j = 0; j < l; j++) {
+ $tb.append(r[pos][j]);
+ }
+ }
+ }
+ // restore tbody
+ ts.processTbody(table, $tb, false);
+ }
+ }
+ if (c.appender) {
+ c.appender(table, rows);
+ }
+ if (c.debug) {
+ benchmark("Rebuilt table", appendTime);
+ }
+ // apply table widgets
+ if (!init) { ts.applyWidget(table); }
+ // trigger sortend
+ $(table).trigger("sortEnd", table);
+ }
+
+ // computeTableHeaderCellIndexes from:
+ // http://www.javascripttoolbox.com/lib/table/examples.php
+ // http://www.javascripttoolbox.com/temp/table_cellindex.html
+ function computeThIndexes(t) {
+ var matrix = [],
+ lookup = {},
+ trs = $(t).find('thead:eq(0), tfoot').children('tr'), // children tr in tfoot - see issue #196
+ i, j, k, l, c, cells, rowIndex, cellId, rowSpan, colSpan, firstAvailCol, matrixrow;
+ for (i = 0; i < trs.length; i++) {
+ cells = trs[i].cells;
+ for (j = 0; j < cells.length; j++) {
+ c = cells[j];
+ rowIndex = c.parentNode.rowIndex;
+ cellId = rowIndex + "-" + c.cellIndex;
+ rowSpan = c.rowSpan || 1;
+ colSpan = c.colSpan || 1;
+ if (typeof(matrix[rowIndex]) === "undefined") {
+ matrix[rowIndex] = [];
+ }
+ // Find first available column in the first row
+ for (k = 0; k < matrix[rowIndex].length + 1; k++) {
+ if (typeof(matrix[rowIndex][k]) === "undefined") {
+ firstAvailCol = k;
+ break;
+ }
+ }
+ lookup[cellId] = firstAvailCol;
+ // add data-column
+ $(c).attr({ 'data-column' : firstAvailCol }); // 'data-row' : rowIndex
+ for (k = rowIndex; k < rowIndex + rowSpan; k++) {
+ if (typeof(matrix[k]) === "undefined") {
+ matrix[k] = [];
+ }
+ matrixrow = matrix[k];
+ for (l = firstAvailCol; l < firstAvailCol + colSpan; l++) {
+ matrixrow[l] = "x";
+ }
+ }
+ }
+ }
+ return lookup;
+ }
+
+ function formatSortingOrder(v) {
+ // look for "d" in "desc" order; return true
+ return (/^d/i.test(v) || v === 1);
+ }
+
+ function buildHeaders(table) {
+ var header_index = computeThIndexes(table), ch, $t,
+ h, i, t, lock, time, $tableHeaders, c = table.config;
+ c.headerList = [], c.headerContent = [];
+ if (c.debug) {
+ time = new Date();
+ }
+ i = c.cssIcon ? '<i class="' + c.cssIcon + '"></i>' : ''; // add icon if cssIcon option exists
+ $tableHeaders = $(table).find(c.selectorHeaders).each(function(index) {
+ $t = $(this);
+ ch = c.headers[index];
+ c.headerContent[index] = this.innerHTML; // save original header content
+ // set up header template
+ t = c.headerTemplate.replace(/\{content\}/g, this.innerHTML).replace(/\{icon\}/g, i);
+ if (c.onRenderTemplate) {
+ h = c.onRenderTemplate.apply($t, [index, t]);
+ if (h && typeof h === 'string') { t = h; } // only change t if something is returned
+ }
+ this.innerHTML = '<div class="tablesorter-header-inner">' + t + '</div>'; // faster than wrapInner
+
+ if (c.onRenderHeader) { c.onRenderHeader.apply($t, [index]); }
+
+ this.column = header_index[this.parentNode.rowIndex + "-" + this.cellIndex];
+ this.order = formatSortingOrder( ts.getData($t, ch, 'sortInitialOrder') || c.sortInitialOrder ) ? [1,0,2] : [0,1,2];
+ this.count = -1; // set to -1 because clicking on the header automatically adds one
+ if (ts.getData($t, ch, 'sorter') === 'false') {
+ this.sortDisabled = true;
+ $t.addClass('sorter-false');
+ } else {
+ $t.removeClass('sorter-false');
+ }
+ this.lockedOrder = false;
+ lock = ts.getData($t, ch, 'lockedOrder') || false;
+ if (typeof(lock) !== 'undefined' && lock !== false) {
+ this.order = this.lockedOrder = formatSortingOrder(lock) ? [1,1,1] : [0,0,0];
+ }
+ $t.addClass( (this.sortDisabled ? 'sorter-false ' : ' ') + c.cssHeader );
+ // add cell to headerList
+ c.headerList[index] = this;
+ // add to parent in case there are multiple rows
+ $t.parent().addClass(c.cssHeaderRow);
+ });
+ if (table.config.debug) {
+ benchmark("Built headers:", time);
+ log($tableHeaders);
+ }
+ return $tableHeaders;
+ }
+
+ function setHeadersCss(table) {
+ var f, i, j, l,
+ c = table.config,
+ list = c.sortList,
+ css = [c.cssAsc, c.cssDesc],
+ // find the footer
+ $t = $(table).find('tfoot tr').children().removeClass(css.join(' '));
+ // remove all header information
+ c.$headers.removeClass(css.join(' '));
+ l = list.length;
+ for (i = 0; i < l; i++) {
+ // direction = 2 means reset!
+ if (list[i][1] !== 2) {
+ // multicolumn sorting updating - choose the :last in case there are nested columns
+ f = c.$headers.not('.sorter-false').filter('[data-column="' + list[i][0] + '"]' + (l === 1 ? ':last' : '') );
+ if (f.length) {
+ for (j = 0; j < f.length; j++) {
+ if (!f[j].sortDisabled) {
+ f.eq(j).addClass(css[list[i][1]]);
+ // add sorted class to footer, if it exists
+ if ($t.length) {
+ $t.filter('[data-column="' + list[i][0] + '"]').eq(j).addClass(css[list[i][1]]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ function fixColumnWidth(table) {
+ if (table.config.widthFixed && $(table).find('colgroup').length === 0) {
+ var colgroup = $('<colgroup>'),
+ overallWidth = $(table).width();
+ $("tr:first td", table.tBodies[0]).each(function() {
+ colgroup.append($('<col>').css('width', parseInt(($(this).width()/overallWidth)*1000, 10)/10 + '%'));
+ });
+ $(table).prepend(colgroup);
+ }
+ }
+
+ function updateHeaderSortCount(table, list) {
+ var s, t, o, c = table.config,
+ sl = list || c.sortList;
+ c.sortList = [];
+ $.each(sl, function(i,v){
+ // ensure all sortList values are numeric - fixes #127
+ s = [ parseInt(v[0], 10), parseInt(v[1], 10) ];
+ // make sure header exists
+ o = c.headerList[s[0]];
+ if (o) { // prevents error if sorton array is wrong
+ c.sortList.push(s);
+ t = $.inArray(s[1], o.order); // fixes issue #167
+ o.count = t >= 0 ? t : s[1] % (c.sortReset ? 3 : 2);
+ }
+ });
+ }
+
+ function getCachedSortType(parsers, i) {
+ return (parsers && parsers[i]) ? parsers[i].type || '' : '';
+ }
+
+ // sort multiple columns
+ function multisort(table) { /*jshint loopfunc:true */
+ var dynamicExp, sortWrapper, col, mx = 0, dir = 0, tc = table.config,
+ sortList = tc.sortList, l = sortList.length, bl = table.tBodies.length,
+ sortTime, i, j, k, c, colMax, cache, lc, s, e, order, orgOrderCol;
+ if (tc.serverSideSorting || !tc.cache[0]) { // empty table - fixes #206
+ return;
+ }
+ if (tc.debug) { sortTime = new Date(); }
+ for (k = 0; k < bl; k++) {
+ colMax = tc.cache[k].colMax;
+ cache = tc.cache[k].normalized;
+ lc = cache.length;
+ orgOrderCol = (cache && cache[0]) ? cache[0].length - 1 : 0;
+ cache.sort(function(a, b) {
+ // cache is undefined here in IE, so don't use it!
+ for (i = 0; i < l; i++) {
+ c = sortList[i][0];
+ order = sortList[i][1];
+ // fallback to natural sort since it is more robust
+ s = /n/i.test(getCachedSortType(tc.parsers, c)) ? "Numeric" : "Text";
+ s += order === 0 ? "" : "Desc";
+ if (/Numeric/.test(s) && tc.strings[c]) {
+ // sort strings in numerical columns
+ if (typeof (tc.string[tc.strings[c]]) === 'boolean') {
+ dir = (order === 0 ? 1 : -1) * (tc.string[tc.strings[c]] ? -1 : 1);
+ } else {
+ dir = (tc.strings[c]) ? tc.string[tc.strings[c]] || 0 : 0;
+ }
+ }
+ var sort = $.tablesorter["sort" + s](table, a[c], b[c], c, colMax[c], dir);
+ if (sort) { return sort; }
+ }
+ return a[orgOrderCol] - b[orgOrderCol];
+ });
+ }
+ if (tc.debug) { benchmark("Sorting on " + sortList.toString() + " and dir " + order + " time", sortTime); }
+ }
+
+ function resortComplete($table, callback){
+ $table.trigger('updateComplete');
+ if (typeof callback === "function") {
+ callback($table[0]);
+ }
+ }
+
+ function checkResort($table, flag, callback) {
+ if (flag !== false) {
+ $table.trigger("sorton", [$table[0].config.sortList, function(){
+ resortComplete($table, callback);
+ }]);
+ } else {
+ resortComplete($table, callback);
+ }
+ }
+
+ /* public methods */
+ ts.construct = function(settings) {
+ return this.each(function() {
+ // if no thead or tbody, or tablesorter is already present, quit
+ if (!this.tHead || this.tBodies.length === 0 || this.hasInitialized === true) {
+ return (this.config.debug) ? log('stopping initialization! No thead, tbody or tablesorter has already been initialized') : '';
+ }
+ // declare
+ var $cell, $this = $(this),
+ c, i, j, k = '', a, s, o, downTime,
+ m = $.metadata;
+ // initialization flag
+ this.hasInitialized = false;
+ // new blank config object
+ this.config = {};
+ // merge and extend
+ c = $.extend(true, this.config, ts.defaults, settings);
+ // save the settings where they read
+ $.data(this, "tablesorter", c);
+ if (c.debug) { $.data( this, 'startoveralltimer', new Date()); }
+ // constants
+ c.supportsTextContent = $('<span>x</span>')[0].textContent === 'x';
+ c.supportsDataObject = parseFloat($.fn.jquery) >= 1.4;
+ // digit sort text location; keeping max+/- for backwards compatibility
+ c.string = { 'max': 1, 'min': -1, 'max+': 1, 'max-': -1, 'zero': 0, 'none': 0, 'null': 0, 'top': true, 'bottom': false };
+ // add table theme class only if there isn't already one there
+ if (!/tablesorter\-/.test($this.attr('class'))) {
+ k = (c.theme !== '' ? ' tablesorter-' + c.theme : '');
+ }
+ $this.addClass(c.tableClass + k);
+ // build headers
+ c.$headers = buildHeaders(this);
+ // try to auto detect column type, and store in tables config
+ c.parsers = buildParserCache(this);
+ // build the cache for the tbody cells
+ // delayInit will delay building the cache until the user starts a sort
+ if (!c.delayInit) { buildCache(this); }
+ // apply event handling to headers
+ // this is to big, perhaps break it out?
+ c.$headers
+ // http://stackoverflow.com/questions/5312849/jquery-find-self
+ .find('*').andSelf().filter(c.selectorSort)
+ .unbind('mousedown.tablesorter mouseup.tablesorter')
+ .bind('mousedown.tablesorter mouseup.tablesorter', function(e, external) {
+ // jQuery v1.2.6 doesn't have closest()
+ var $cell = this.tagName.match('TH|TD') ? $(this) : $(this).parents('th, td').filter(':last'), cell = $cell[0];
+ // only recognize left clicks
+ if ((e.which || e.button) !== 1) { return false; }
+ // set timer on mousedown
+ if (e.type === 'mousedown') {
+ downTime = new Date().getTime();
+ return e.target.tagName === "INPUT" ? '' : !c.cancelSelection;
+ }
+ // ignore long clicks (prevents resizable widget from initializing a sort)
+ if (external !== true && (new Date().getTime() - downTime > 250)) { return false; }
+ if (c.delayInit && !c.cache) { buildCache($this[0]); }
+ if (!cell.sortDisabled) {
+ // Only call sortStart if sorting is enabled
+ $this.trigger("sortStart", $this[0]);
+ // store exp, for speed
+ // $cell = $(this);
+ k = !e[c.sortMultiSortKey];
+ // get current column sort order
+ cell.count = e[c.sortResetKey] ? 2 : (cell.count + 1) % (c.sortReset ? 3 : 2);
+ // reset all sorts on non-current column - issue #30
+ if (c.sortRestart) {
+ i = cell;
+ c.$headers.each(function() {
+ // only reset counts on columns that weren't just clicked on and if not included in a multisort
+ if (this !== i && (k || !$(this).is('.' + c.cssDesc + ',.' + c.cssAsc))) {
+ this.count = -1;
+ }
+ });
+ }
+ // get current column index
+ i = cell.column;
+ // user only wants to sort on one column
+ if (k) {
+ // flush the sort list
+ c.sortList = [];
+ if (c.sortForce !== null) {
+ a = c.sortForce;
+ for (j = 0; j < a.length; j++) {
+ if (a[j][0] !== i) {
+ c.sortList.push(a[j]);
+ }
+ }
+ }
+ // add column to sort list
+ o = cell.order[cell.count];
+ if (o < 2) {
+ c.sortList.push([i, o]);
+ // add other columns if header spans across multiple
+ if (cell.colSpan > 1) {
+ for (j = 1; j < cell.colSpan; j++) {
+ c.sortList.push([i + j, o]);
+ }
+ }
+ }
+ // multi column sorting
+ } else {
+ // get rid of the sortAppend before adding more - fixes issue #115
+ if (c.sortAppend && c.sortList.length > 1) {
+ if (ts.isValueInArray(c.sortAppend[0][0], c.sortList)) {
+ c.sortList.pop();
+ }
+ }
+ // the user has clicked on an already sorted column
+ if (ts.isValueInArray(i, c.sortList)) {
+ // reverse the sorting direction for all tables
+ for (j = 0; j < c.sortList.length; j++) {
+ s = c.sortList[j];
+ o = c.headerList[s[0]];
+ if (s[0] === i) {
+ s[1] = o.order[o.count];
+ if (s[1] === 2) {
+ c.sortList.splice(j,1);
+ o.count = -1;
+ }
+ }
+ }
+ } else {
+ // add column to sort list array
+ o = cell.order[cell.count];
+ if (o < 2) {
+ c.sortList.push([i, o]);
+ // add other columns if header spans across multiple
+ if (cell.colSpan > 1) {
+ for (j = 1; j < cell.colSpan; j++) {
+ c.sortList.push([i + j, o]);
+ }
+ }
+ }
+ }
+ }
+ if (c.sortAppend !== null) {
+ a = c.sortAppend;
+ for (j = 0; j < a.length; j++) {
+ if (a[j][0] !== i) {
+ c.sortList.push(a[j]);
+ }
+ }
+ }
+ // sortBegin event triggered immediately before the sort
+ $this.trigger("sortBegin", $this[0]);
+ // setTimeout needed so the processing icon shows up
+ setTimeout(function(){
+ // set css for headers
+ setHeadersCss($this[0]);
+ multisort($this[0]);
+ appendToTable($this[0]);
+ }, 1);
+ }
+ });
+ if (c.cancelSelection) {
+ // cancel selection
+ c.$headers.each(function() {
+ this.onselectstart = function() {
+ return false;
+ };
+ });
+ }
+ // apply easy methods that trigger binded events
+ $this
+ .unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave')
+ .bind("sortReset", function(){
+ c.sortList = [];
+ setHeadersCss(this);
+ multisort(this);
+ appendToTable(this);
+ })
+ .bind("update", function(e, resort, callback) {
+ // remove rows/elements before update
+ $(c.selectorRemove, this).remove();
+ // rebuild parsers
+ c.parsers = buildParserCache(this);
+ // rebuild the cache map
+ buildCache(this);
+ checkResort($this, resort, callback);
+ })
+ .bind("updateCell", function(e, cell, resort, callback) {
+ // get position from the dom
+ var l, row, icell,
+ t = this, $tb = $(this).find('tbody'),
+ // update cache - format: function(s, table, cell, cellIndex)
+ // no closest in jQuery v1.2.6 - tbdy = $tb.index( $(cell).closest('tbody') ),$row = $(cell).closest('tr');
+ tbdy = $tb.index( $(cell).parents('tbody').filter(':last') ),
+ $row = $(cell).parents('tr').filter(':last');
+ cell = $(cell)[0]; // in case cell is a jQuery object
+ // tbody may not exist if update is initialized while tbody is removed for processing
+ if ($tb.length && tbdy >= 0) {
+ row = $tb.eq(tbdy).find('tr').index( $row );
+ icell = cell.cellIndex;
+ l = t.config.cache[tbdy].normalized[row].length - 1;
+ t.config.cache[tbdy].row[t.config.cache[tbdy].normalized[row][l]] = $row;
+ t.config.cache[tbdy].normalized[row][icell] = c.parsers[icell].format( getElementText(t, cell, icell), t, cell, icell );
+ checkResort($this, resort, callback);
+ }
+ })
+ .bind("addRows", function(e, $row, resort, callback) {
+ var i, rows = $row.filter('tr').length,
+ dat = [], l = $row[0].cells.length, t = this,
+ tbdy = $(this).find('tbody').index( $row.closest('tbody') );
+ // fixes adding rows to an empty table - see issue #179
+ if (!c.parsers) {
+ c.parsers = buildParserCache(t);
+ }
+ // add each row
+ for (i = 0; i < rows; i++) {
+ // add each cell
+ for (j = 0; j < l; j++) {
+ dat[j] = c.parsers[j].format( getElementText(t, $row[i].cells[j], j), t, $row[i].cells[j], j );
+ }
+ // add the row index to the end
+ dat.push(c.cache[tbdy].row.length);
+ // update cache
+ c.cache[tbdy].row.push([$row[i]]);
+ c.cache[tbdy].normalized.push(dat);
+ dat = [];
+ }
+ // resort using current settings
+ checkResort($this, resort, callback);
+ })
+ .bind("sorton", function(e, list, callback, init) {
+ $(this).trigger("sortStart", this);
+ // update header count index
+ updateHeaderSortCount(this, list);
+ // set css for headers
+ setHeadersCss(this);
+ // sort the table and append it to the dom
+ multisort(this);
+ appendToTable(this, init);
+ if (typeof callback === "function") {
+ callback(this);
+ }
+ })
+ .bind("appendCache", function(e, callback, init) {
+ appendToTable(this, init);
+ if (typeof callback === "function") {
+ callback(this);
+ }
+ })
+ .bind("applyWidgetId", function(e, id) {
+ ts.getWidgetById(id).format(this, c, c.widgetOptions);
+ })
+ .bind("applyWidgets", function(e, init) {
+ // apply widgets
+ ts.applyWidget(this, init);
+ })
+ .bind("refreshWidgets", function(e, all, dontapply){
+ ts.refreshWidgets(this, all, dontapply);
+ })
+ .bind("destroy", function(e, c, cb){
+ ts.destroy(this, c, cb);
+ });
+
+ // get sort list from jQuery data or metadata
+ // in jQuery < 1.4, an error occurs when calling $this.data()
+ if (c.supportsDataObject && typeof $this.data().sortlist !== 'undefined') {
+ c.sortList = $this.data().sortlist;
+ } else if (m && ($this.metadata() && $this.metadata().sortlist)) {
+ c.sortList = $this.metadata().sortlist;
+ }
+ // apply widget init code
+ ts.applyWidget(this, true);
+ // if user has supplied a sort list to constructor
+ if (c.sortList.length > 0) {
+ $this.trigger("sorton", [c.sortList, {}, !c.initWidgets]);
+ } else if (c.initWidgets) {
+ // apply widget format
+ ts.applyWidget(this);
+ }
+
+ // fixate columns if the users supplies the fixedWidth option
+ // do this after theme has been applied
+ fixColumnWidth(this);
+
+ // show processesing icon
+ if (c.showProcessing) {
+ $this
+ .unbind('sortBegin sortEnd')
+ .bind('sortBegin sortEnd', function(e) {
+ ts.isProcessing($this[0], e.type === 'sortBegin');
+ });
+ }
+
+ // initialized
+ this.hasInitialized = true;
+ if (c.debug) {
+ ts.benchmark("Overall initialization time", $.data( this, 'startoveralltimer'));
+ }
+ $this.trigger('tablesorter-initialized', this);
+ if (typeof c.initialized === 'function') { c.initialized(this); }
+ });
+ };
+
+ // *** Process table ***
+ // add processing indicator
+ ts.isProcessing = function(table, toggle, $ths) {
+ var c = table.config,
+ // default to all headers
+ $h = $ths || $(table).find('.' + c.cssHeader);
+ if (toggle) {
+ if (c.sortList.length > 0) {
+ // get headers from the sortList
+ $h = $h.filter(function(){
+ // get data-column from attr to keep compatibility with jQuery 1.2.6
+ return this.sortDisabled ? false : ts.isValueInArray( parseFloat($(this).attr('data-column')), c.sortList);
+ });
+ }
+ $h.addClass(c.cssProcessing);
+ } else {
+ $h.removeClass(c.cssProcessing);
+ }
+ };
+
+ // detach tbody but save the position
+ // don't use tbody because there are portions that look for a tbody index (updateCell)
+ ts.processTbody = function(table, $tb, getIt){
+ var t, holdr;
+ if (getIt) {
+ $tb.before('<span class="tablesorter-savemyplace"/>');
+ holdr = ($.fn.detach) ? $tb.detach() : $tb.remove();
+ return holdr;
+ }
+ holdr = $(table).find('span.tablesorter-savemyplace');
+ $tb.insertAfter( holdr );
+ holdr.remove();
+ };
+
+ ts.clearTableBody = function(table) {
+ $(table.tBodies).filter(':not(.' + table.config.cssInfoBlock + ')').empty();
+ };
+
+ ts.destroy = function(table, removeClasses, callback){
+ var $t = $(table), c = table.config,
+ $h = $t.find('thead:first');
+ // clear flag in case the plugin is initialized again
+ table.hasInitialized = false;
+ // remove widget added rows
+ $h.find('tr:not(.' + c.cssHeaderRow + ')').remove();
+ // remove resizer widget stuff
+ $h.find('.tablesorter-resizer').remove();
+ // remove all widgets
+ ts.refreshWidgets(table, true, true);
+ // disable tablesorter
+ $t
+ .removeData('tablesorter')
+ .unbind('sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave')
+ .find('.' + c.cssHeader)
+ .unbind('click mousedown mousemove mouseup')
+ .removeClass(c.cssHeader + ' ' + c.cssAsc + ' ' + c.cssDesc)
+ .find('.tablesorter-header-inner').each(function(){
+ if (c.cssIcon !== '') { $(this).find('.' + c.cssIcon).remove(); }
+ $(this).replaceWith( $(this).contents() );
+ });
+ if (removeClasses !== false) {
+ $t.removeClass(c.tableClass);
+ }
+ if (typeof callback === 'function') {
+ callback(table);
+ }
+ };
+
+ // *** sort functions ***
+ // regex used in natural sort
+ ts.regex = [
+ /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, // chunk/tokenize numbers & letters
+ /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, //date
+ /^0x[0-9a-f]+$/i // hex
+ ];
+
+ // Natural sort - https://github.com/overset/javascript-natural-sort
+ ts.sortText = function(table, a, b, col) {
+ if (a === b) { return 0; }
+ var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ],
+ r = ts.regex, xN, xD, yN, yD, xF, yF, i, mx;
+ if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
+ if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
+ if (typeof c.textSorter === 'function') { return c.textSorter(a, b, table, col); }
+ // chunk/tokenize
+ xN = a.replace(r[0], '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');
+ yN = b.replace(r[0], '\\0$1\\0').replace(/\\0$/, '').replace(/^\\0/, '').split('\\0');
+ // numeric, hex or date detection
+ xD = parseInt(a.match(r[2]),16) || (xN.length !== 1 && a.match(r[1]) && Date.parse(a));
+ yD = parseInt(b.match(r[2]),16) || (xD && b.match(r[1]) && Date.parse(b)) || null;
+ // first try and sort Hex codes or Dates
+ if (yD) {
+ if ( xD < yD ) { return -1; }
+ if ( xD > yD ) { return 1; }
+ }
+ mx = Math.max(xN.length, yN.length);
+ // natural sorting through split numeric strings and default strings
+ for (i = 0; i < mx; i++) {
+ // find floats not starting with '0', string or 0 if not defined
+ xF = isNaN(xN[i]) ? xN[i] || 0 : parseFloat(xN[i]) || 0;
+ yF = isNaN(yN[i]) ? yN[i] || 0 : parseFloat(yN[i]) || 0;
+ // handle numeric vs string comparison - number < string - (Kyle Adams)
+ if (isNaN(xF) !== isNaN(yF)) { return (isNaN(xF)) ? 1 : -1; }
+ // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'
+ if (typeof xF !== typeof yF) {
+ xF += '';
+ yF += '';
+ }
+ if (xF < yF) { return -1; }
+ if (xF > yF) { return 1; }
+ }
+ return 0;
+ };
+
+ ts.sortTextDesc = function(table, a, b, col) {
+ if (a === b) { return 0; }
+ var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
+ if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
+ if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
+ if (typeof c.textSorter === 'function') { return c.textSorter(b, a, table, col); }
+ return ts.sortText(table, b, a);
+ };
+
+ // return text string value by adding up ascii value
+ // so the text is somewhat sorted when using a digital sort
+ // this is NOT an alphanumeric sort
+ ts.getTextValue = function(a, mx, d) {
+ if (mx) {
+ // make sure the text value is greater than the max numerical value (mx)
+ var i, l = a.length, n = mx + d;
+ for (i = 0; i < l; i++) {
+ n += a.charCodeAt(i);
+ }
+ return d * n;
+ }
+ return 0;
+ };
+
+ ts.sortNumeric = function(table, a, b, col, mx, d) {
+ if (a === b) { return 0; }
+ var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
+ if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : -e || -1; }
+ if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : e || 1; }
+ if (isNaN(a)) { a = ts.getTextValue(a, mx, d); }
+ if (isNaN(b)) { b = ts.getTextValue(b, mx, d); }
+ return a - b;
+ };
+
+ ts.sortNumericDesc = function(table, a, b, col, mx, d) {
+ if (a === b) { return 0; }
+ var c = table.config, e = c.string[ (c.empties[col] || c.emptyTo ) ];
+ if (a === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? -1 : 1) : e || 1; }
+ if (b === '' && e !== 0) { return (typeof(e) === 'boolean') ? (e ? 1 : -1) : -e || -1; }
+ if (isNaN(a)) { a = ts.getTextValue(a, mx, d); }
+ if (isNaN(b)) { b = ts.getTextValue(b, mx, d); }
+ return b - a;
+ };
+
+ // used when replacing accented characters during sorting
+ ts.characterEquivalents = {
+ "a" : "\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5", // áàâãäąå
+ "A" : "\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5", // ÁÀÂÃÄĄÅ
+ "c" : "\u00e7\u0107\u010d", // çćč
+ "C" : "\u00c7\u0106\u010c", // ÇĆČ
+ "e" : "\u00e9\u00e8\u00ea\u00eb\u011b\u0119", // éèêëěę
+ "E" : "\u00c9\u00c8\u00ca\u00cb\u011a\u0118", // ÉÈÊËĚĘ
+ "i" : "\u00ed\u00ec\u0130\u00ee\u00ef\u0131", // íìİîïı
+ "I" : "\u00cd\u00cc\u0130\u00ce\u00cf", // ÍÌİÎÏ
+ "o" : "\u00f3\u00f2\u00f4\u00f5\u00f6", // óòôõö
+ "O" : "\u00d3\u00d2\u00d4\u00d5\u00d6", // ÓÒÔÕÖ
+ "ss": "\u00df", // ß (s sharp)
+ "SS": "\u1e9e", // ẞ (Capital sharp s)
+ "u" : "\u00fa\u00f9\u00fb\u00fc\u016f", // úùûüů
+ "U" : "\u00da\u00d9\u00db\u00dc\u016e" // ÚÙÛÜŮ
+ };
+ ts.replaceAccents = function(s) {
+ var a, acc = '[', eq = ts.characterEquivalents;
+ if (!ts.characterRegex) {
+ ts.characterRegexArray = {};
+ for (a in eq) {
+ if (typeof a === 'string') {
+ acc += eq[a];
+ ts.characterRegexArray[a] = new RegExp('[' + eq[a] + ']', 'g');
+ }
+ }
+ ts.characterRegex = new RegExp(acc + ']');
+ }
+ if (ts.characterRegex.test(s)) {
+ for (a in eq) {
+ if (typeof a === 'string') {
+ s = s.replace( ts.characterRegexArray[a], a );
+ }
+ }
+ }
+ return s;
+ };
+
+ // *** utilities ***
+ ts.isValueInArray = function(v, a) {
+ var i, l = a.length;
+ for (i = 0; i < l; i++) {
+ if (a[i][0] === v) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ ts.addParser = function(parser) {
+ var i, l = ts.parsers.length, a = true;
+ for (i = 0; i < l; i++) {
+ if (ts.parsers[i].id.toLowerCase() === parser.id.toLowerCase()) {
+ a = false;
+ }
+ }
+ if (a) {
+ ts.parsers.push(parser);
+ }
+ };
+
+ ts.getParserById = function(name) {
+ var i, l = ts.parsers.length;
+ for (i = 0; i < l; i++) {
+ if (ts.parsers[i].id.toLowerCase() === (name.toString()).toLowerCase()) {
+ return ts.parsers[i];
+ }
+ }
+ return false;
+ };
+
+ ts.addWidget = function(widget) {
+ ts.widgets.push(widget);
+ };
+
+ ts.getWidgetById = function(name) {
+ var i, w, l = ts.widgets.length;
+ for (i = 0; i < l; i++) {
+ w = ts.widgets[i];
+ if (w && w.hasOwnProperty('id') && w.id.toLowerCase() === name.toLowerCase()) {
+ return w;
+ }
+ }
+ };
+
+ ts.applyWidget = function(table, init) {
+ var c = table.config,
+ wo = c.widgetOptions,
+ ws = c.widgets.sort().reverse(), // ensure that widgets are always applied in a certain order
+ time, i, w, l = ws.length;
+ // make zebra last
+ i = $.inArray('zebra', c.widgets);
+ if (i >= 0) {
+ c.widgets.splice(i,1);
+ c.widgets.push('zebra');
+ }
+ if (c.debug) {
+ time = new Date();
+ }
+ // add selected widgets
+ for (i = 0; i < l; i++) {
+ w = ts.getWidgetById(ws[i]);
+ if ( w ) {
+ if (init === true && w.hasOwnProperty('init')) {
+ w.init(table, w, c, wo);
+ } else if (!init && w.hasOwnProperty('format')) {
+ w.format(table, c, wo);
+ }
+ }
+ }
+ if (c.debug) {
+ benchmark("Completed " + (init === true ? "initializing" : "applying") + " widgets", time);
+ }
+ };
+
+ ts.refreshWidgets = function(table, doAll, dontapply) {
+ var i, c = table.config,
+ cw = c.widgets,
+ w = ts.widgets, l = w.length;
+ // remove previous widgets
+ for (i = 0; i < l; i++){
+ if ( w[i] && w[i].id && (doAll || $.inArray( w[i].id, cw ) < 0) ) {
+ if (c.debug) { log( 'Refeshing widgets: Removing ' + w[i].id ); }
+ if (w[i].hasOwnProperty('remove')) { w[i].remove(table, c, c.widgetOptions); }
+ }
+ }
+ if (dontapply !== true) {
+ ts.applyWidget(table, doAll);
+ }
+ };
+
+ // get sorter, string, empty, etc options for each column from
+ // jQuery data, metadata, header option or header class name ("sorter-false")
+ // priority = jQuery data > meta > headers option > header class name
+ ts.getData = function(h, ch, key) {
+ var val = '', $h = $(h), m, cl;
+ if (!$h.length) { return ''; }
+ m = $.metadata ? $h.metadata() : false;
+ cl = ' ' + ($h.attr('class') || '');
+ if (typeof $h.data(key) !== 'undefined' || typeof $h.data(key.toLowerCase()) !== 'undefined'){
+ // "data-lockedOrder" is assigned to "lockedorder"; but "data-locked-order" is assigned to "lockedOrder"
+ // "data-sort-initial-order" is assigned to "sortInitialOrder"
+ val += $h.data(key) || $h.data(key.toLowerCase());
+ } else if (m && typeof m[key] !== 'undefined') {
+ val += m[key];
+ } else if (ch && typeof ch[key] !== 'undefined') {
+ val += ch[key];
+ } else if (cl !== ' ' && cl.match(' ' + key + '-')) {
+ // include sorter class name "sorter-text", etc
+ val = cl.match( new RegExp(' ' + key + '-(\\w+)') )[1] || '';
+ }
+ return $.trim(val);
+ };
+
+ ts.formatFloat = function(s, table) {
+ if (typeof(s) !== 'string' || s === '') { return s; }
+ // allow using formatFloat without a table; defaults to US number format
+ var i,
+ t = table && table.config ? table.config.usNumberFormat !== false :
+ typeof table !== "undefined" ? table : true;
+ if (t) {
+ // US Format - 1,234,567.89 -> 1234567.89
+ s = s.replace(/,/g,'');
+ } else {
+ // German Format = 1.234.567,89 -> 1234567.89
+ // French Format = 1 234 567,89 -> 1234567.89
+ s = s.replace(/[\s|\.]/g,'').replace(/,/g,'.');
+ }
+ if(/^\s*\([.\d]+\)/.test(s)) {
+ // make (#) into a negative number -> (10) = -10
+ s = s.replace(/^\s*\(/,'-').replace(/\)/,'');
+ }
+ i = parseFloat(s);
+ // return the text instead of zero
+ return isNaN(i) ? $.trim(s) : i;
+ };
+
+ ts.isDigit = function(s) {
+ // replace all unwanted chars and match
+ return isNaN(s) ? (/^[\-+(]?\d+[)]?$/).test(s.toString().replace(/[,.'"\s]/g, '')) : true;
+ };
+
+ }()
+ });
+
+ // make shortcut
+ var ts = $.tablesorter;
+
+ // extend plugin scope
+ $.fn.extend({
+ tablesorter: ts.construct
+ });
+
+ // add default parsers
+ ts.addParser({
+ id: "text",
+ is: function(s, table, node) {
+ return true;
+ },
+ format: function(s, table, cell, cellIndex) {
+ var c = table.config;
+ s = $.trim( c.ignoreCase ? s.toLocaleLowerCase() : s );
+ return c.sortLocaleCompare ? ts.replaceAccents(s) : s;
+ },
+ type: "text"
+ });
+
+ ts.addParser({
+ id: "currency",
+ is: function(s) {
+ return (/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/).test(s); // £$€¤¥¢
+ },
+ format: function(s, table) {
+ return ts.formatFloat(s.replace(/[^\w,. \-()]/g, ""), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "ipAddress",
+ is: function(s) {
+ return (/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/).test(s);
+ },
+ format: function(s, table) {
+ var i, a = s.split("."),
+ r = "",
+ l = a.length;
+ for (i = 0; i < l; i++) {
+ r += ("00" + a[i]).slice(-3);
+ }
+ return ts.formatFloat(r, table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "url",
+ is: function(s) {
+ return (/^(https?|ftp|file):\/\//).test(s);
+ },
+ format: function(s) {
+ return $.trim(s.replace(/(https?|ftp|file):\/\//, ''));
+ },
+ type: "text"
+ });
+
+ ts.addParser({
+ id: "isoDate",
+ is: function(s) {
+ return (/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/).test(s);
+ },
+ format: function(s, table) {
+ return ts.formatFloat((s !== "") ? (new Date(s.replace(/-/g, "/")).getTime() || "") : "", table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "percent",
+ is: function(s) {
+ return (/(\d\s?%|%\s?\d)/).test(s);
+ },
+ format: function(s, table) {
+ return ts.formatFloat(s.replace(/%/g, ""), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "usLongDate",
+ is: function(s) {
+ // two digit years are not allowed cross-browser
+ return (/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i).test(s);
+ },
+ format: function(s, table) {
+ return ts.formatFloat( (new Date(s.replace(/(\S)([AP]M)$/i, "$1 $2")).getTime() || ''), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "shortDate", // "mmddyyyy", "ddmmyyyy" or "yyyymmdd"
+ is: function(s) {
+ // testing for ####-##-####, so it's not perfect
+ return (/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/).test(s);
+ },
+ format: function(s, table, cell, cellIndex) {
+ var c = table.config, ci = c.headerList[cellIndex],
+ format = ci.shortDateFormat;
+ if (typeof format === 'undefined') {
+ // cache header formatting so it doesn't getData for every cell in the column
+ format = ci.shortDateFormat = ts.getData( ci, c.headers[cellIndex], 'dateFormat') || c.dateFormat;
+ }
+ s = s.replace(/\s+/g," ").replace(/[\-|\.|\,]/g, "/");
+ if (format === "mmddyyyy") {
+ s = s.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/, "$3/$1/$2");
+ } else if (format === "ddmmyyyy") {
+ s = s.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/, "$3/$2/$1");
+ } else if (format === "yyyymmdd") {
+ s = s.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/, "$1/$2/$3");
+ }
+ return ts.formatFloat( (new Date(s).getTime() || ''), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "time",
+ is: function(s) {
+ return (/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i).test(s);
+ },
+ format: function(s, table) {
+ return ts.formatFloat( (new Date("2000/01/01 " + s.replace(/(\S)([AP]M)$/i, "$1 $2")).getTime() || ""), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "digit",
+ is: function(s) {
+ return ts.isDigit(s);
+ },
+ format: function(s, table) {
+ return ts.formatFloat(s.replace(/[^\w,. \-()]/g, ""), table);
+ },
+ type: "numeric"
+ });
+
+ ts.addParser({
+ id: "metadata",
+ is: function(s) {
+ return false;
+ },
+ format: function(s, table, cell) {
+ var c = table.config,
+ p = (!c.parserMetadataName) ? 'sortValue' : c.parserMetadataName;
+ return $(cell).metadata()[p];
+ },
+ type: "numeric"
+ });
+
+ // add default widgets
+ ts.addWidget({
+ id: "zebra",
+ format: function(table, c, wo) {
+ var $tb, $tv, $tr, row, even, time, k, l,
+ child = new RegExp(c.cssChildRow, 'i'),
+ b = $(table).children('tbody:not(.' + c.cssInfoBlock + ')');
+ if (c.debug) {
+ time = new Date();
+ }
+ for (k = 0; k < b.length; k++ ) {
+ // loop through the visible rows
+ $tb = $(b[k]);
+ l = $tb.children('tr').length;
+ if (l > 1) {
+ row = 0;
+ $tv = $tb.children('tr:visible');
+ // revered back to using jQuery each - strangely it's the fastest method
+ /*jshint loopfunc:true */
+ $tv.each(function(){
+ $tr = $(this);
+ // style children rows the same way the parent row was styled
+ if (!child.test(this.className)) { row++; }
+ even = (row % 2 === 0);
+ $tr.removeClass(wo.zebra[even ? 1 : 0]).addClass(wo.zebra[even ? 0 : 1]);
+ });
+ }
+ }
+ if (c.debug) {
+ ts.benchmark("Applying Zebra widget", time);
+ }
+ },
+ remove: function(table, c, wo){
+ var k, $tb,
+ b = $(table).children('tbody:not(.' + c.cssInfoBlock + ')'),
+ rmv = (c.widgetOptions.zebra || [ "even", "odd" ]).join(' ');
+ for (k = 0; k < b.length; k++ ){
+ $tb = $.tablesorter.processTbody(table, $(b[k]), true); // remove tbody
+ $tb.children().removeClass(rmv);
+ $.tablesorter.processTbody(table, $tb, false); // restore tbody
+ }
+ }
+ });
+
+})(jQuery); \ No newline at end of file
diff --git a/sitestatic/jquery.tablesorter-2.7.min.js b/sitestatic/jquery.tablesorter-2.7.min.js
new file mode 100644
index 00000000..1a4474e7
--- /dev/null
+++ b/sitestatic/jquery.tablesorter-2.7.min.js
@@ -0,0 +1,17 @@
+/*!
+* TableSorter 2.7 - Client-side table sorting with ease!
+* @requires jQuery v1.2.6+
+*
+* Copyright (c) 2007 Christian Bach
+* Examples and docs at: http://tablesorter.com
+* Dual licensed under the MIT and GPL licenses:
+* http://www.opensource.org/licenses/mit-license.php
+* http://www.gnu.org/licenses/gpl.html
+*
+* @type jQuery
+* @name tablesorter
+* @cat Plugins/Tablesorter
+* @author Christian Bach/christian.bach@polyester.se
+* @contributor Rob Garrison/https://github.com/Mottie/tablesorter
+*/
+!function(C){"use strict";C.extend({tablesorter:new function(){var b=this;function g(e){"undefined"!=typeof console&&void 0!==console.log?console.log(e):alert(e)}function w(e,t){g(e+" ("+((new Date).getTime()-t.getTime())+"ms)")}function m(e,t,r){if(!t)return"";var s=e.config,o=s.textExtraction,i="";return i="simple"===o?s.supportsTextContent?t.textContent:C(t).text():"function"==typeof o?o(t,e,r):"object"==typeof o&&o.hasOwnProperty(r)?o[r](t,e,r):s.supportsTextContent?t.textContent:C(t).text(),C.trim(i)}function f(e,t,r,s){for(var o,i=b.parsers.length,n=!1,a="",d=!0;""===a&&d;)t[++r]?(a=m(e,n=t[r].cells[s],s),e.config.debug&&g("Checking if value was empty on row "+r+", column: "+s+": "+a)):d=!1;for(o=1;o<i;o++)if(b.parsers[o].is(a,e,n))return b.parsers[o];return b.parsers[0]}function l(e){var t,r,s,o,i,n,a,d=e.config,c=C(e.tBodies).filter(":not(."+d.cssInfoBlock+")"),l="";if(0===c.length)return d.debug?g("*Empty table!* Not building a parser cache"):"";if((t=c[0].rows)[0])for(r=[],s=t[0].cells.length,o=0;o<s;o++)i=(i=d.$headers.filter(":not([colspan])")).add(d.$headers.filter('[colspan="1"]')).filter('[data-column="'+o+'"]:last'),n=d.headers[o],a=b.getParserById(b.getData(i,n,"sorter")),d.empties[o]=b.getData(i,n,"empty")||d.emptyTo||(d.emptyToBottom?"bottom":"top"),d.strings[o]=b.getData(i,n,"string")||d.stringTo||"max",a||(a=f(e,t,-1,o)),d.debug&&(l+="column:"+o+"; parser:"+a.id+"; string:"+d.strings[o]+"; empty: "+d.empties[o]+"\n"),r.push(a);return d.debug&&g(l),r}function h(e){var t,r,s,o,i,n,a,d,c,l,f=e.tBodies,u=e.config,h=u.parsers,p=[];if(u.cache={},!h)return u.debug?g("*Empty table!* Not building a cache"):"";for(u.debug&&(l=new Date),u.showProcessing&&b.isProcessing(e,!0),a=0;a<f.length;a++)if(u.cache[a]={row:[],normalized:[]},!C(f[a]).hasClass(u.cssInfoBlock)){for(t=f[a]&&f[a].rows.length||0,r=f[a].rows[0]&&f[a].rows[0].cells.length||0,i=0;i<t;++i)if(c=[],(d=C(f[a].rows[i])).hasClass(u.cssChildRow))u.cache[a].row[u.cache[a].row.length-1]=u.cache[a].row[u.cache[a].row.length-1].add(d);else{for(u.cache[a].row.push(d),n=0;n<r;++n)s=m(e,d[0].cells[n],n),o=h[n].format(s,e,d[0].cells[n],n),c.push(o),"numeric"===(h[n].type||"").toLowerCase()&&(p[n]=Math.max(Math.abs(o),p[n]||0));c.push(u.cache[a].normalized.length),u.cache[a].normalized.push(c)}u.cache[a].colMax=p}u.showProcessing&&b.isProcessing(e),u.debug&&w("Building cache for "+t+" rows",l)}function p(e,t){var r,s,o,i,n,a,d,c,l,f,u,h,p=e.config,g=e.tBodies,m=[],y=p.cache;if(y[0]){for(p.debug&&(h=new Date),l=0;l<g.length;l++)if(!(n=C(g[l])).hasClass(p.cssInfoBlock)){for(a=b.processTbody(e,n,!0),r=y[l].row,i=(o=(s=y[l].normalized).length)?s[0].length-1:0,d=0;d<o;d++)if(u=s[d][i],m.push(r[u]),!p.appender||!p.removeRows)for(f=r[u].length,c=0;c<f;c++)a.append(r[u][c]);b.processTbody(e,a,!1)}p.appender&&p.appender(e,m),p.debug&&w("Rebuilt table",h),t||b.applyWidget(e),C(e).trigger("sortEnd",e)}}function u(e){return/^d/i.test(e)||1===e}function r(e){var t,r,s,o,i,n,a,d,c=function(e){var t,r,s,o,i,n,a,d,c,l,f,u,h=[],p={},g=C(e).find("thead:eq(0), tfoot").children("tr");for(t=0;t<g.length;t++)for(n=g[t].cells,r=0;r<n.length;r++){for(d=(a=(i=n[r]).parentNode.rowIndex)+"-"+i.cellIndex,c=i.rowSpan||1,l=i.colSpan||1,void 0===h[a]&&(h[a]=[]),s=0;s<h[a].length+1;s++)if(void 0===h[a][s]){f=s;break}for(p[d]=f,C(i).attr({"data-column":f}),s=a;s<a+c;s++)for(void 0===h[s]&&(h[s]=[]),u=h[s],o=f;o<f+l;o++)u[o]="x"}return p}(e),l=e.config;return l.headerList=[],l.headerContent=[],l.debug&&(a=new Date),o=l.cssIcon?'<i class="'+l.cssIcon+'"></i>':"",d=C(e).find(l.selectorHeaders).each(function(e){r=C(this),t=l.headers[e],l.headerContent[e]=this.innerHTML,i=l.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,o),l.onRenderTemplate&&(s=l.onRenderTemplate.apply(r,[e,i]))&&"string"==typeof s&&(i=s),this.innerHTML='<div class="tablesorter-header-inner">'+i+"</div>",l.onRenderHeader&&l.onRenderHeader.apply(r,[e]),this.column=c[this.parentNode.rowIndex+"-"+this.cellIndex],this.order=u(b.getData(r,t,"sortInitialOrder")||l.sortInitialOrder)?[1,0,2]:[0,1,2],this.count=-1,"false"===b.getData(r,t,"sorter")?(this.sortDisabled=!0,r.addClass("sorter-false")):r.removeClass("sorter-false"),this.lockedOrder=!1,void 0!==(n=b.getData(r,t,"lockedOrder")||!1)&&!1!==n&&(this.order=this.lockedOrder=u(n)?[1,1,1]:[0,0,0]),r.addClass((this.sortDisabled?"sorter-false ":" ")+l.cssHeader),l.headerList[e]=this,r.parent().addClass(l.cssHeaderRow)}),e.config.debug&&(w("Built headers:",a),g(d)),d}function y(e){var t,r,s,o,i=e.config,n=i.sortList,a=[i.cssAsc,i.cssDesc],d=C(e).find("tfoot tr").children().removeClass(a.join(" "));for(i.$headers.removeClass(a.join(" ")),o=n.length,r=0;r<o;r++)if(2!==n[r][1]&&(t=i.$headers.not(".sorter-false").filter('[data-column="'+n[r][0]+'"]'+(1===o?":last":""))).length)for(s=0;s<t.length;s++)t[s].sortDisabled||(t.eq(s).addClass(a[n[r][1]]),d.length&&d.filter('[data-column="'+n[r][0]+'"]').eq(s).addClass(a[n[r][1]]))}function v(i){var e,n,t,a,d,r,c,l,f,u=0,h=i.config,p=h.sortList,g=p.length,s=i.tBodies.length;if(!h.serverSideSorting&&h.cache[0]){for(h.debug&&(e=new Date),t=0;t<s;t++)d=h.cache[t].colMax,(r=h.cache[t].normalized).length,f=r&&r[0]?r[0].length-1:0,r.sort(function(e,t){for(n=0;n<g;n++){a=p[n][0],l=p[n][1],c=/n/i.test((s=h.parsers,o=a,s&&s[o]&&s[o].type||""))?"Numeric":"Text",/Numeric/.test(c+=0===l?"":"Desc")&&h.strings[a]&&(u="boolean"==typeof h.string[h.strings[a]]?(0===l?1:-1)*(h.string[h.strings[a]]?-1:1):h.strings[a]&&h.string[h.strings[a]]||0);var r=C.tablesorter["sort"+c](i,e[a],t[a],a,d[a],u);if(r)return r}var s,o;return e[f]-t[f]});h.debug&&w("Sorting on "+p.toString()+" and dir "+l+" time",e)}}function s(e,t){e.trigger("updateComplete"),"function"==typeof t&&t(e[0])}function x(e,t,r){!1!==t?e.trigger("sorton",[e[0].config.sortList,function(){s(e,r)}]):s(e,r)}b.version="2.7",b.parsers=[],b.widgets=[],b.defaults={theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,headers:{},ignoreCase:!0,sortForce:null,sortList:[],sortAppend:null,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",textExtraction:"simple",textSorter:null,widgets:[],widgetOptions:{zebra:["even","odd"]},initWidgets:!0,initialized:null,tableClass:"tablesorter",cssAsc:"tablesorter-headerAsc",cssChildRow:"tablesorter-childRow",cssDesc:"tablesorter-headerDesc",cssHeader:"tablesorter-header",cssHeaderRow:"tablesorter-headerRow",cssIcon:"tablesorter-icon",cssInfoBlock:"tablesorter-infoOnly",cssProcessing:"tablesorter-processing",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]},b.benchmark=w,b.construct=function(t){return this.each(function(){if(!this.tHead||0===this.tBodies.length||!0===this.hasInitialized)return this.config.debug?g("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var f,s,c,o,i,n,a,u=C(this),d="",e=C.metadata;this.hasInitialized=!1,this.config={},f=C.extend(!0,this.config,b.defaults,t),C.data(this,"tablesorter",f),f.debug&&C.data(this,"startoveralltimer",new Date),f.supportsTextContent="x"===C("<span>x</span>")[0].textContent,f.supportsDataObject=1.4<=parseFloat(C.fn.jquery),f.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,null:0,top:!0,bottom:!1},/tablesorter\-/.test(u.attr("class"))||(d=""!==f.theme?" tablesorter-"+f.theme:""),u.addClass(f.tableClass+d),f.$headers=r(this),f.parsers=l(this),f.delayInit||h(this),f.$headers.find("*").andSelf().filter(f.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter").bind("mousedown.tablesorter mouseup.tablesorter",function(e,t){var r=(this.tagName.match("TH|TD")?C(this):C(this).parents("th, td").filter(":last"))[0];if(1!==(e.which||e.button))return!1;if("mousedown"===e.type)return a=(new Date).getTime(),"INPUT"===e.target.tagName?"":!f.cancelSelection;if(!0!==t&&250<(new Date).getTime()-a)return!1;if(f.delayInit&&!f.cache&&h(u[0]),!r.sortDisabled){if(u.trigger("sortStart",u[0]),d=!e[f.sortMultiSortKey],r.count=e[f.sortResetKey]?2:(r.count+1)%(f.sortReset?3:2),f.sortRestart&&(s=r,f.$headers.each(function(){this===s||!d&&C(this).is("."+f.cssDesc+",."+f.cssAsc)||(this.count=-1)})),s=r.column,d){if(f.sortList=[],null!==f.sortForce)for(o=f.sortForce,c=0;c<o.length;c++)o[c][0]!==s&&f.sortList.push(o[c]);if((n=r.order[r.count])<2&&(f.sortList.push([s,n]),1<r.colSpan))for(c=1;c<r.colSpan;c++)f.sortList.push([s+c,n])}else if(f.sortAppend&&1<f.sortList.length&&b.isValueInArray(f.sortAppend[0][0],f.sortList)&&f.sortList.pop(),b.isValueInArray(s,f.sortList))for(c=0;c<f.sortList.length;c++)i=f.sortList[c],n=f.headerList[i[0]],i[0]===s&&(i[1]=n.order[n.count],2===i[1]&&(f.sortList.splice(c,1),n.count=-1));else if((n=r.order[r.count])<2&&(f.sortList.push([s,n]),1<r.colSpan))for(c=1;c<r.colSpan;c++)f.sortList.push([s+c,n]);if(null!==f.sortAppend)for(o=f.sortAppend,c=0;c<o.length;c++)o[c][0]!==s&&f.sortList.push(o[c]);u.trigger("sortBegin",u[0]),setTimeout(function(){y(u[0]),v(u[0]),p(u[0])},1)}}),f.cancelSelection&&f.$headers.each(function(){this.onselectstart=function(){return!1}}),u.unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave").bind("sortReset",function(){f.sortList=[],y(this),v(this),p(this)}).bind("update",function(e,t,r){C(f.selectorRemove,this).remove(),f.parsers=l(this),h(this),x(u,t,r)}).bind("updateCell",function(e,t,r,s){var o,i,n,a=this,d=C(this).find("tbody"),c=d.index(C(t).parents("tbody").filter(":last")),l=C(t).parents("tr").filter(":last");t=C(t)[0],d.length&&0<=c&&(i=d.eq(c).find("tr").index(l),n=t.cellIndex,o=a.config.cache[c].normalized[i].length-1,a.config.cache[c].row[a.config.cache[c].normalized[i][o]]=l,a.config.cache[c].normalized[i][n]=f.parsers[n].format(m(a,t,n),a,t,n),x(u,r,s))}).bind("addRows",function(e,t,r,s){var o,i=t.filter("tr").length,n=[],a=t[0].cells.length,d=C(this).find("tbody").index(t.closest("tbody"));for(f.parsers||(f.parsers=l(this)),o=0;o<i;o++){for(c=0;c<a;c++)n[c]=f.parsers[c].format(m(this,t[o].cells[c],c),this,t[o].cells[c],c);n.push(f.cache[d].row.length),f.cache[d].row.push([t[o]]),f.cache[d].normalized.push(n),n=[]}x(u,r,s)}).bind("sorton",function(e,t,r,s){var o,i,n,a,d,c;C(this).trigger("sortStart",this),o=t,d=this.config,c=o||d.sortList,d.sortList=[],C.each(c,function(e,t){i=[parseInt(t[0],10),parseInt(t[1],10)],(a=d.headerList[i[0]])&&(d.sortList.push(i),n=C.inArray(i[1],a.order),a.count=0<=n?n:i[1]%(d.sortReset?3:2))}),y(this),v(this),p(this,s),"function"==typeof r&&r(this)}).bind("appendCache",function(e,t,r){p(this,r),"function"==typeof t&&t(this)}).bind("applyWidgetId",function(e,t){b.getWidgetById(t).format(this,f,f.widgetOptions)}).bind("applyWidgets",function(e,t){b.applyWidget(this,t)}).bind("refreshWidgets",function(e,t,r){b.refreshWidgets(this,t,r)}).bind("destroy",function(e,t,r){b.destroy(this,t,r)}),f.supportsDataObject&&void 0!==u.data().sortlist?f.sortList=u.data().sortlist:e&&u.metadata()&&u.metadata().sortlist&&(f.sortList=u.metadata().sortlist),b.applyWidget(this,!0),0<f.sortList.length?u.trigger("sorton",[f.sortList,{},!f.initWidgets]):f.initWidgets&&b.applyWidget(this),function(e){if(e.config.widthFixed&&0===C(e).find("colgroup").length){var t=C("<colgroup>"),r=C(e).width();C("tr:first td",e.tBodies[0]).each(function(){t.append(C("<col>").css("width",parseInt(C(this).width()/r*1e3,10)/10+"%"))}),C(e).prepend(t)}}(this),f.showProcessing&&u.unbind("sortBegin sortEnd").bind("sortBegin sortEnd",function(e){b.isProcessing(u[0],"sortBegin"===e.type)}),this.hasInitialized=!0,f.debug&&b.benchmark("Overall initialization time",C.data(this,"startoveralltimer")),u.trigger("tablesorter-initialized",this),"function"==typeof f.initialized&&f.initialized(this)})},b.isProcessing=function(e,t,r){var s=e.config,o=r||C(e).find("."+s.cssHeader);t?(0<s.sortList.length&&(o=o.filter(function(){return!this.sortDisabled&&b.isValueInArray(parseFloat(C(this).attr("data-column")),s.sortList)})),o.addClass(s.cssProcessing)):o.removeClass(s.cssProcessing)},b.processTbody=function(e,t,r){var s;if(r)return t.before('<span class="tablesorter-savemyplace"/>'),s=C.fn.detach?t.detach():t.remove();s=C(e).find("span.tablesorter-savemyplace"),t.insertAfter(s),s.remove()},b.clearTableBody=function(e){C(e.tBodies).filter(":not(."+e.config.cssInfoBlock+")").empty()},b.destroy=function(e,t,r){var s=C(e),o=e.config,i=s.find("thead:first");e.hasInitialized=!1,i.find("tr:not(."+o.cssHeaderRow+")").remove(),i.find(".tablesorter-resizer").remove(),b.refreshWidgets(e,!0,!0),s.removeData("tablesorter").unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave").find("."+o.cssHeader).unbind("click mousedown mousemove mouseup").removeClass(o.cssHeader+" "+o.cssAsc+" "+o.cssDesc).find(".tablesorter-header-inner").each(function(){""!==o.cssIcon&&C(this).find("."+o.cssIcon).remove(),C(this).replaceWith(C(this).contents())}),!1!==t&&s.removeClass(o.tableClass),"function"==typeof r&&r(e)},b.regex=[/(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i],b.sortText=function(e,t,r,s){if(t===r)return 0;var o,i,n,a,d,c,l,f,u=e.config,h=u.string[u.empties[s]||u.emptyTo],p=b.regex;if(""===t&&0!==h)return"boolean"==typeof h?h?-1:1:-h||-1;if(""===r&&0!==h)return"boolean"==typeof h?h?1:-1:h||1;if("function"==typeof u.textSorter)return u.textSorter(t,r,e,s);if(o=t.replace(p[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0"),n=r.replace(p[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0"),i=parseInt(t.match(p[2]),16)||1!==o.length&&t.match(p[1])&&Date.parse(t),a=parseInt(r.match(p[2]),16)||i&&r.match(p[1])&&Date.parse(r)||null){if(i<a)return-1;if(a<i)return 1}for(f=Math.max(o.length,n.length),l=0;l<f;l++){if(d=isNaN(o[l])?o[l]||0:parseFloat(o[l])||0,c=isNaN(n[l])?n[l]||0:parseFloat(n[l])||0,isNaN(d)!==isNaN(c))return isNaN(d)?1:-1;if(typeof d!=typeof c&&(d+="",c+=""),d<c)return-1;if(c<d)return 1}return 0},b.sortTextDesc=function(e,t,r,s){if(t===r)return 0;var o=e.config,i=o.string[o.empties[s]||o.emptyTo];return""===t&&0!==i?"boolean"==typeof i?i?-1:1:i||1:""===r&&0!==i?"boolean"==typeof i?i?1:-1:-i||-1:"function"==typeof o.textSorter?o.textSorter(r,t,e,s):b.sortText(e,r,t)},b.getTextValue=function(e,t,r){if(t){var s,o=e.length,i=t+r;for(s=0;s<o;s++)i+=e.charCodeAt(s);return r*i}return 0},b.sortNumeric=function(e,t,r,s,o,i){if(t===r)return 0;var n=e.config,a=n.string[n.empties[s]||n.emptyTo];return""===t&&0!==a?"boolean"==typeof a?a?-1:1:-a||-1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:a||1:(isNaN(t)&&(t=b.getTextValue(t,o,i)),isNaN(r)&&(r=b.getTextValue(r,o,i)),t-r)},b.sortNumericDesc=function(e,t,r,s,o,i){if(t===r)return 0;var n=e.config,a=n.string[n.empties[s]||n.emptyTo];return""===t&&0!==a?"boolean"==typeof a?a?-1:1:a||1:""===r&&0!==a?"boolean"==typeof a?a?1:-1:-a||-1:(isNaN(t)&&(t=b.getTextValue(t,o,i)),isNaN(r)&&(r=b.getTextValue(r,o,i)),r-t)},b.characterEquivalents={a:"áàâãäąå",A:"ÁÀÂÃÄĄÅ",c:"çćč",C:"ÇĆČ",e:"éèêëěę",E:"ÉÈÊËĚĘ",i:"íìİîïı",I:"ÍÌİÎÏ",o:"óòôõö",O:"ÓÒÔÕÖ",ss:"ß",SS:"ẞ",u:"úùûüů",U:"ÚÙÛÜŮ"},b.replaceAccents=function(e){var t,r="[",s=b.characterEquivalents;if(!b.characterRegex){for(t in b.characterRegexArray={},s)"string"==typeof t&&(r+=s[t],b.characterRegexArray[t]=new RegExp("["+s[t]+"]","g"));b.characterRegex=new RegExp(r+"]")}if(b.characterRegex.test(e))for(t in s)"string"==typeof t&&(e=e.replace(b.characterRegexArray[t],t));return e},b.isValueInArray=function(e,t){var r,s=t.length;for(r=0;r<s;r++)if(t[r][0]===e)return!0;return!1},b.addParser=function(e){var t,r=b.parsers.length,s=!0;for(t=0;t<r;t++)b.parsers[t].id.toLowerCase()===e.id.toLowerCase()&&(s=!1);s&&b.parsers.push(e)},b.getParserById=function(e){var t,r=b.parsers.length;for(t=0;t<r;t++)if(b.parsers[t].id.toLowerCase()===e.toString().toLowerCase())return b.parsers[t];return!1},b.addWidget=function(e){b.widgets.push(e)},b.getWidgetById=function(e){var t,r,s=b.widgets.length;for(t=0;t<s;t++)if((r=b.widgets[t])&&r.hasOwnProperty("id")&&r.id.toLowerCase()===e.toLowerCase())return r},b.applyWidget=function(e,t){var r,s,o,i=e.config,n=i.widgetOptions,a=i.widgets.sort().reverse(),d=a.length;for(0<=(s=C.inArray("zebra",i.widgets))&&(i.widgets.splice(s,1),i.widgets.push("zebra")),i.debug&&(r=new Date),s=0;s<d;s++)(o=b.getWidgetById(a[s]))&&(!0===t&&o.hasOwnProperty("init")?o.init(e,o,i,n):!t&&o.hasOwnProperty("format")&&o.format(e,i,n));i.debug&&w("Completed "+(!0===t?"initializing":"applying")+" widgets",r)},b.refreshWidgets=function(e,t,r){var s,o=e.config,i=o.widgets,n=b.widgets,a=n.length;for(s=0;s<a;s++)n[s]&&n[s].id&&(t||C.inArray(n[s].id,i)<0)&&(o.debug&&g("Refeshing widgets: Removing "+n[s].id),n[s].hasOwnProperty("remove")&&n[s].remove(e,o,o.widgetOptions));!0!==r&&b.applyWidget(e,t)},b.getData=function(e,t,r){var s,o,i="",n=C(e);return n.length?(s=!!C.metadata&&n.metadata(),o=" "+(n.attr("class")||""),void 0!==n.data(r)||void 0!==n.data(r.toLowerCase())?i+=n.data(r)||n.data(r.toLowerCase()):s&&void 0!==s[r]?i+=s[r]:t&&void 0!==t[r]?i+=t[r]:" "!==o&&o.match(" "+r+"-")&&(i=o.match(new RegExp(" "+r+"-(\\w+)"))[1]||""),C.trim(i)):""},b.formatFloat=function(e,t){return"string"!=typeof e||""===e?e:(e=(t&&t.config?!1!==t.config.usNumberFormat:void 0===t||t)?e.replace(/,/g,""):e.replace(/[\s|\.]/g,"").replace(/,/g,"."),/^\s*\([.\d]+\)/.test(e)&&(e=e.replace(/^\s*\(/,"-").replace(/\)/,"")),r=parseFloat(e),isNaN(r)?C.trim(e):r);var r},b.isDigit=function(e){return!isNaN(e)||/^[\-+(]?\d+[)]?$/.test(e.toString().replace(/[,.'"\s]/g,""))}}});var f=C.tablesorter;C.fn.extend({tablesorter:f.construct}),f.addParser({id:"text",is:function(e,t,r){return!0},format:function(e,t,r,s){var o=t.config;return e=C.trim(o.ignoreCase?e.toLocaleLowerCase():e),o.sortLocaleCompare?f.replaceAccents(e):e},type:"text"}),f.addParser({id:"currency",is:function(e){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test(e)},format:function(e,t){return f.formatFloat(e.replace(/[^\w,. \-()]/g,""),t)},type:"numeric"}),f.addParser({id:"ipAddress",is:function(e){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(e)},format:function(e,t){var r,s=e.split("."),o="",i=s.length;for(r=0;r<i;r++)o+=("00"+s[r]).slice(-3);return f.formatFloat(o,t)},type:"numeric"}),f.addParser({id:"url",is:function(e){return/^(https?|ftp|file):\/\//.test(e)},format:function(e){return C.trim(e.replace(/(https?|ftp|file):\/\//,""))},type:"text"}),f.addParser({id:"isoDate",is:function(e){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(e)},format:function(e,t){return f.formatFloat(""!==e&&new Date(e.replace(/-/g,"/")).getTime()||"",t)},type:"numeric"}),f.addParser({id:"percent",is:function(e){return/(\d\s?%|%\s?\d)/.test(e)},format:function(e,t){return f.formatFloat(e.replace(/%/g,""),t)},type:"numeric"}),f.addParser({id:"usLongDate",is:function(e){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(e)},format:function(e,t){return f.formatFloat(new Date(e.replace(/(\S)([AP]M)$/i,"$1 $2")).getTime()||"",t)},type:"numeric"}),f.addParser({id:"shortDate",is:function(e){return/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/.test(e)},format:function(e,t,r,s){var o=t.config,i=o.headerList[s],n=i.shortDateFormat;return void 0===n&&(n=i.shortDateFormat=f.getData(i,o.headers[s],"dateFormat")||o.dateFormat),e=e.replace(/\s+/g," ").replace(/[\-|\.|\,]/g,"/"),"mmddyyyy"===n?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2"):"ddmmyyyy"===n?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1"):"yyyymmdd"===n&&(e=e.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3")),f.formatFloat(new Date(e).getTime()||"",t)},type:"numeric"}),f.addParser({id:"time",is:function(e){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(e)},format:function(e,t){return f.formatFloat(new Date("2000/01/01 "+e.replace(/(\S)([AP]M)$/i,"$1 $2")).getTime()||"",t)},type:"numeric"}),f.addParser({id:"digit",is:function(e){return f.isDigit(e)},format:function(e,t){return f.formatFloat(e.replace(/[^\w,. \-()]/g,""),t)},type:"numeric"}),f.addParser({id:"metadata",is:function(e){return!1},format:function(e,t,r){var s=t.config,o=s.parserMetadataName?s.parserMetadataName:"sortValue";return C(r).metadata()[o]},type:"numeric"}),f.addWidget({id:"zebra",format:function(e,t,r){var s,o,i,n,a,d,c=new RegExp(t.cssChildRow,"i"),l=C(e).children("tbody:not(."+t.cssInfoBlock+")");for(t.debug&&(a=new Date),d=0;d<l.length;d++)1<(s=C(l[d])).children("tr").length&&(i=0,s.children("tr:visible").each(function(){o=C(this),c.test(this.className)||i++,n=i%2==0,o.removeClass(r.zebra[n?1:0]).addClass(r.zebra[n?0:1])}));t.debug&&f.benchmark("Applying Zebra widget",a)},remove:function(e,t,r){var s,o,i=C(e).children("tbody:not(."+t.cssInfoBlock+")"),n=(t.widgetOptions.zebra||["even","odd"]).join(" ");for(s=0;s<i.length;s++)(o=C.tablesorter.processTbody(e,C(i[s]),!0)).children().removeClass(n),C.tablesorter.processTbody(e,o,!1)}})}(jQuery);
diff --git a/sitestatic/konami.min.js b/sitestatic/konami.min.js
new file mode 100644
index 00000000..d3eef8ef
--- /dev/null
+++ b/sitestatic/konami.min.js
@@ -0,0 +1,13 @@
+/*
+ * Konami-JS ~
+ * :: Now with support for touch events and multiple instances for
+ * :: those situations that call for multiple easter eggs!
+ * Code: http://konami-js.googlecode.com/
+ * Examples: http://www.snaptortoise.com/konami-js
+ * Copyright (c) 2009 George Mandis (georgemandis.com, snaptortoise.com)
+ * Version: 1.4.0 (1/21/2013)
+ * Licensed under the GNU General Public License v3
+ * http://www.gnu.org/copyleft/gpl.html
+ * Tested in: Safari 4+, Google Chrome 4+, Firefox 3+, IE7+, Mobile Safari 2.2.1 and Dolphin Browser
+*/
+var Konami=function(t){var i={addEvent:function(t,e,n,i){t.addEventListener?t.addEventListener(e,n,!1):t.attachEvent&&(t["e"+e+n]=n,t[e+n]=function(){t["e"+e+n](window.event,i)},t.attachEvent("on"+e,t[e+n]))},input:"",pattern:"3838404037393739666513",load:function(n){this.addEvent(document,"keydown",function(t,e){if(e&&(i=e),i.input+=t?t.keyCode:event.keyCode,i.input.length>i.pattern.length&&(i.input=i.input.substr(i.input.length-i.pattern.length)),i.input==i.pattern)return i.code(n),void(i.input="")},this),this.iphone.load(n)},code:function(t){window.location=t},iphone:{start_x:0,start_y:0,stop_x:0,stop_y:0,tap:!1,capture:!1,orig_keys:"",keys:["UP","UP","DOWN","DOWN","LEFT","RIGHT","LEFT","RIGHT","TAP","TAP","TAP"],code:function(t){i.code(t)},load:function(e){this.orig_keys=this.keys,i.addEvent(document,"touchmove",function(t){if(1==t.touches.length&&!0===i.iphone.capture){var e=t.touches[0];i.iphone.stop_x=e.pageX,i.iphone.stop_y=e.pageY,i.iphone.tap=!1,i.iphone.capture=!1,i.iphone.check_direction()}}),i.addEvent(document,"touchend",function(t){!0===i.iphone.tap&&i.iphone.check_direction(e)},!1),i.addEvent(document,"touchstart",function(t){i.iphone.start_x=t.changedTouches[0].pageX,i.iphone.start_y=t.changedTouches[0].pageY,i.iphone.tap=!0,i.iphone.capture=!0})},check_direction:function(t){var e=Math.abs(this.start_x-this.stop_x),n=Math.abs(this.start_y-this.stop_y),i=this.start_x-this.stop_x<0?"RIGHT":"LEFT",o=this.start_y-this.stop_y<0?"DOWN":"UP",s=n<e?i:o;(s=!0===this.tap?"TAP":s)==this.keys[0]&&(this.keys=this.keys.slice(1,this.keys.length)),0==this.keys.length&&(this.keys=this.orig_keys,this.code(t))}}};return"string"==typeof t&&i.load(t),"function"==typeof t&&(i.code=t,i.load()),i};
diff --git a/sitestatic/logos/apple-touch-icon-114x114.png b/sitestatic/logos/apple-touch-icon-114x114.png
new file mode 100644
index 00000000..4ed4590c
--- /dev/null
+++ b/sitestatic/logos/apple-touch-icon-114x114.png
Binary files differ
diff --git a/sitestatic/logos/apple-touch-icon-144x144.png b/sitestatic/logos/apple-touch-icon-144x144.png
new file mode 100644
index 00000000..03cc4c71
--- /dev/null
+++ b/sitestatic/logos/apple-touch-icon-144x144.png
Binary files differ
diff --git a/sitestatic/logos/apple-touch-icon-57x57.png b/sitestatic/logos/apple-touch-icon-57x57.png
new file mode 100644
index 00000000..79ce43c5
--- /dev/null
+++ b/sitestatic/logos/apple-touch-icon-57x57.png
Binary files differ
diff --git a/sitestatic/logos/apple-touch-icon-72x72.png b/sitestatic/logos/apple-touch-icon-72x72.png
new file mode 100644
index 00000000..c33c78ea
--- /dev/null
+++ b/sitestatic/logos/apple-touch-icon-72x72.png
Binary files differ
diff --git a/sitestatic/logos/icon-transparent-64x64.png b/sitestatic/logos/icon-transparent-64x64.png
new file mode 100644
index 00000000..1ade27fd
--- /dev/null
+++ b/sitestatic/logos/icon-transparent-64x64.png
Binary files differ
diff --git a/sitestatic/rss.png b/sitestatic/rss.png
new file mode 100644
index 00000000..a6f114cd
--- /dev/null
+++ b/sitestatic/rss.png
Binary files differ
diff --git a/sitestatic/rss@2x.png b/sitestatic/rss@2x.png
new file mode 100644
index 00000000..ffd6feba
--- /dev/null
+++ b/sitestatic/rss@2x.png
Binary files differ
diff --git a/sitestatic/silhouette.png b/sitestatic/silhouette.png
new file mode 100644
index 00000000..12b2a753
--- /dev/null
+++ b/sitestatic/silhouette.png
Binary files differ