Removed Adobe Spry and replaced with jQuery. Please report any new bugs on the forums or via IRC. In a related note, auto-completion should work now at least for usernames. Still hacking away at page name completion...
authorDan
Thu, 21 Aug 2008 08:24:04 -0400
changeset 699 c7d737202d59
parent 696 bd5069e1f19a
child 700 491314c44d23
Removed Adobe Spry and replaced with jQuery. Please report any new bugs on the forums or via IRC. In a related note, auto-completion should work now at least for usernames. Still hacking away at page name completion...
includes/clientside/css/enano-shared.css
includes/clientside/jsres.php
includes/clientside/static/SpryAutoSuggest.js
includes/clientside/static/SpryData.js
includes/clientside/static/SpryEffects.js
includes/clientside/static/SpryJSONDataSet.js
includes/clientside/static/ajax.js
includes/clientside/static/autocomplete.js
includes/clientside/static/autofill.js
includes/clientside/static/dynano.js
includes/clientside/static/enano-lib-basic.js
includes/clientside/static/expander.js
includes/clientside/static/functions.js
includes/clientside/static/jquery-ui.js
includes/clientside/static/jquery.js
includes/clientside/static/login.js
includes/clientside/static/messagebox.js
includes/clientside/static/rank-manager.js
includes/clientside/static/theme-manager.js
includes/clientside/static/userpage.js
includes/template.php
install/includes/stages/database_mysql.php
install/includes/stages/database_postgresql.php
install/includes/stages/website.php
licenses/index.html
plugins/SpecialPageFuncs.php
plugins/admin/PluginManager.php
themes/admin/js/menu.js
--- a/includes/clientside/css/enano-shared.css	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/css/enano-shared.css	Thu Aug 21 08:24:04 2008 -0400
@@ -827,23 +827,6 @@
   float: left;
 }
 
-/* Spry auto-suggestion */
-.hideSuggestClass
-{
-	max-height: 200px;
-	overflow:auto;
-	display:none;
-	width: 175px;
-	margin: 0px;
-	cursor: pointer;
-	z-index: 1011;
-}
-
-.showSuggestClass .hideSuggestClass
-{
-	display: block !important;
-}
-
 .adminiconsprite {
   width: 16px;
   height: 16px;
--- a/includes/clientside/jsres.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/jsres.php	Thu Aug 21 08:24:04 2008 -0400
@@ -98,7 +98,6 @@
   'dropdown.js',
   'paginate.js',
   'enano-lib-basic.js',
-  'SpryJSONDataSet.js',
   'pwstrength.js',
   'flyin.js',
   'rank-manager.js',
@@ -108,7 +107,7 @@
 );
 
 // Files that should NOT be compressed due to already being compressed, licensing, or invalid produced code
-$compress_unsafe = array('SpryEffects.js', 'json.js', 'fat.js', 'admin-menu.js', 'autofill.js');
+$compress_unsafe = array('json.js', 'fat.js', 'admin-menu.js', 'autofill.js', 'jquery.js', 'jquery-ui.js');
 
 require_once('includes/js-compressor.php');
 
--- a/includes/clientside/static/SpryAutoSuggest.js	Sun Aug 17 23:24:41 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,883 +0,0 @@
-// SpryAutoSuggest.js - version 0.91 - Spry Pre-Release 1.6.1
-//
-// Copyright (c) 2006. Adobe Systems Incorporated.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//   * Redistributions of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//   * Redistributions in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//   * Neither the name of Adobe Systems Incorporated nor the names of its
-//     contributors may be used to endorse or promote products derived from this
-//     software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-var Spry;
-if (!Spry) Spry = {};
-if (!Spry.Widget) Spry.Widget = {};
-
-Spry.Widget.BrowserSniff = function()
-{
-	var b = navigator.appName.toString();
-	var up = navigator.platform.toString();
-	var ua = navigator.userAgent.toString();
-
-	this.mozilla = this.ie = this.opera = this.safari = false;
-	var re_opera = /Opera.([0-9\.]*)/i;
-	var re_msie = /MSIE.([0-9\.]*)/i;
-	var re_gecko = /gecko/i;
-	var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
-	var r = false;
-
-	if ( (r = ua.match(re_opera))) {
-		this.opera = true;
-		this.version = parseFloat(r[1]);
-	} else if ( (r = ua.match(re_msie))) {
-		this.ie = true;
-		this.version = parseFloat(r[1]);
-	} else if ( (r = ua.match(re_safari))) {
-		this.safari = true;
-		this.version = parseFloat(r[2]);
-	} else if (ua.match(re_gecko)) {
-		var re_gecko_version = /rv:\s*([0-9\.]+)/i;
-		r = ua.match(re_gecko_version);
-		this.mozilla = true;
-		this.version = parseFloat(r[1]);
-	}
-	this.windows = this.mac = this.linux = false;
-
-	this.Platform = ua.match(/windows/i) ? "windows" :
-					(ua.match(/linux/i) ? "linux" :
-					(ua.match(/mac/i) ? "mac" :
-					ua.match(/unix/i)? "unix" : "unknown"));
-	this[this.Platform] = true;
-	this.v = this.version;
-
-	if (this.safari && this.mac && this.mozilla) {
-		this.mozilla = false;
-	}
-};
-
-Spry.is = new Spry.Widget.BrowserSniff();
-
-Spry.Widget.AutoSuggest = function(region, sRegion, dataset, field, options)
-{
-	if (!this.isBrowserSupported())
-		return;
-
-	options = options || {};
-
-	this.init(region, sRegion, dataset, field);
-	Spry.Widget.Utils.setOptions(this, options);
-
-	if (Spry.Widget.AutoSuggest.onloadDidFire)
-		this.attachBehaviors();
-	else 
-		Spry.Widget.AutoSuggest.loadQueue.push(this);
-
-	// when data is changing we will decide if we will have to show the suggestions
-	this.dataset.addObserver(this);
-	
-	// Set up an observer so we can attach our click behaviors whenever
-	// the region is regenerated.
-	var regionID = Spry.Widget.Utils.getElementID(sRegion);
-
-	var self = this;
-	this._notifyDataset = { onPostUpdate: function() {
-			self.attachClickBehaviors();
-	}, onPreUpdate: function(){
-			self.removeClickBehaviours();
-	}};
-
-	Spry.Data.Region.addObserver(regionID,this._notifyDataset);
-
-	// clean up the widget when on page unload
-	Spry.Widget.Utils.addEventListener(window, 'unload', function(){self.destroy()}, false);
-
-	// make the first computation in case the textfield is not empty
-	this.attachClickBehaviors();
-	this.handleKeyUp(null);
-	this.showSuggestions(false);
-};
-
-Spry.Widget.AutoSuggest.prototype.init = function(region, sRegion, dataset, field)
-{
-	this.region = Spry.Widget.Utils.getElement(region);
-	
-	if (!this.region)
-		return;
-	
-	this.minCharsType = false;
-	this.containsString = false;
-	this.loadFromServer = false;
-	this.urlParam = '';
-	this.suggestionIsVisible = false;
-	this.stopFocus = false;
-	this.hasFocus = false;
-	this.showSuggestClass = 'showSuggestClass';
-	this.hideSuggestClass = 'hideSuggestClass';
-	this.hoverSuggestClass = 'hoverSuggestClass';
-	this.movePrevKeyCode = Spry.Widget.AutoSuggest.KEY_UP;
-	this.moveNextKeyCode = Spry.Widget.AutoSuggest.KEY_DOWN;
-
-	this.textElement = Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.region, "INPUT");
-	this.textElement.setAttribute('AutoComplete', 'off');
-	
-	this.suggestRegion = Spry.Widget.Utils.getElement(sRegion);
-	// prepare the suggest region
-	Spry.Widget.Utils.makePositioned(this.suggestRegion);
-	Spry.Widget.Utils.addClassName(this.suggestRegion, this.hideSuggestClass);
-
-	this.timerID = null;
-	if (typeof dataset == "string"){
-		this.dataset = window[dataset];
-	}else{
-		this.dataset = dataset;
-	}
-	this.field = field;
-	if (typeof field == 'string' && field.indexOf(',') != -1)
-	{
-		field = field.replace(/\s*,\s*/ig, ',');
-		this.field = field.split(',');
-	}
-};
-
-Spry.Widget.AutoSuggest.prototype.isBrowserSupported = function()
-{
-	return Spry.is.ie && Spry.is.v >= 5 && Spry.is.windows
-		||
-	Spry.is.mozilla && Spry.is.v >= 1.4
-		||
-	Spry.is.safari
-		||
-	Spry.is.opera && Spry.is.v >= 9;
-};
-
-Spry.Widget.AutoSuggest.prototype.getValue = function()
-{
-	if (!this.textElement)
-		return '';
-	return this.textElement.value;
-};
-
-Spry.Widget.AutoSuggest.prototype.setValue = function(str)
-{
-	if (!this.textElement)
-		return;
-	this.textElement.value = str;
-	this.showSuggestions(false);
-};
-
-Spry.Widget.AutoSuggest.prototype.focus = function()
-{
-	if (!this.textElement)
-		return;
-	this.textElement.focus();
-};
-
-Spry.Widget.AutoSuggest.prototype.showSuggestions = function(doShow)
-{
-	if (this.region && this.isVisibleSuggestion() != doShow)
-	{
-		if (doShow && this.hasFocus)
-		{
-				Spry.Widget.Utils.addClassName(this.region, this.showSuggestClass);
-				if (Spry.is.ie && Spry.is.version < 7)
-					this.createIframeLayer(this.suggestRegion);
-		}
-		else
-		{
-				if (Spry.is.ie && Spry.is.version < 7)
-					this.removeIframeLayer();
-				Spry.Widget.Utils.removeClassName(this.region, this.showSuggestClass);
-		}
-	}
-	this.suggestionIsVisible = Spry.Widget.Utils.hasClassName(this.region, this.showSuggestClass);
-};
-
-Spry.Widget.AutoSuggest.prototype.isVisibleSuggestion = function()
-{
-	return this.suggestionIsVisible;
-};
-
-Spry.Widget.AutoSuggest.prototype.onDataChanged = function(el)
-{
-		var data = el.getData(true);
-		var val = this.getValue();
-		this.showSuggestions(data && (!this.minCharsType || val.length >= this.minCharsType) && (data.length > 1 || (data.length == 1 && this.childs[0] && this.childs[0].attributes.getNamedItem("spry:suggest").value != this.getValue())));
-};
-Spry.Widget.AutoSuggest.prototype.nodeMouseOver = function(e, node)
-{
-	var l = this.childs.length;
-	for (var i=0; i<l; i++)
-		if (this.childs[i] != node && Spry.Widget.Utils.hasClassName(this.childs[i], this.hoverSuggestClass))
-		{
-			Spry.Widget.Utils.removeClassName(this.childs[i], this.hoverSuggestClass);
-			break;
-		}
-};
-Spry.Widget.AutoSuggest.prototype.nodeClick = function(e, value) 
-{
-	if (value)
-		this.setValue(value);
-};
-Spry.Widget.AutoSuggest.prototype.handleKeyUp = function(e)
-{
-	if (this.timerID)
-	{
-		clearTimeout(this.timerID);
-		this.timerID = null;
-	}
-
-	// If the user hit the escape key, hide the auto suggest menu!
-	if (e && this.isSpecialKey(e))
-	{
-		this.handleSpecialKeys(e);
-		return;
-	}
-
-	var self = this;
-	var func = function() { self.timerID = null; self.loadDataSet();};
-	if (!this.loadFromServer)
-		func = function() { self.timerID = null; self.filterDataSet();};
-
-	this.timerID = setTimeout(func, 200);
-	
-};
-
-Spry.Widget.AutoSuggest.prototype.scrollVisible = function(el)
-{
-	if (typeof this.scrolParent == 'undefined')
-	{
-		var currEl = el;
-		this.scrolParent = false;
-		while	(!this.scrolParent)
-		{
-			var overflow = Spry.Widget.Utils.getStyleProp(currEl, 'overflow');
-			if (!overflow || overflow.toLowerCase() == 'scroll')
-			{
-					this.scrolParent = currEl;
-					break;
-			}
-			if (currEl == this.region) 
-				break;
-			
-			currEl = currEl.parentNode;
-		}
-	}
-
-	if (this.scrolParent != false)
-	{
-		var h = parseInt(Spry.Widget.Utils.getStyleProp(this.scrolParent, 'height'), 10);
-		if (el.offsetTop < this.scrolParent.scrollTop)
-			this.scrolParent.scrollTop = el.offsetTop;
-		else if (el.offsetTop + el.offsetHeight > this.scrolParent.scrollTop + h)
-		{
-			// the 5 pixels make the latest option more visible.
-			this.scrolParent.scrollTop = el.offsetTop + el.offsetHeight - h + 5;
-			if (this.scrolParent.scrollTop < 0)
-				this.scrolParent.scrollTop = 0;	
-		}
-
-	}
-};
-
-Spry.Widget.AutoSuggest.KEY_UP = 38;
-Spry.Widget.AutoSuggest.KEY_DOWN = 40;
-
-Spry.Widget.AutoSuggest.prototype.handleSpecialKeys = function(e){
-
- 	switch (e.keyCode)
-	{
-		case this.moveNextKeyCode: // Down key  
- 		case this.movePrevKeyCode: // Up Key
-			if (!(this.childs.length > 0) || !this.getValue())
-				return;	
-
-			var prev = this.childs.length-1;
-			var next = false;
-			var found = false;
-			var data = this.dataset.getData();
-			if (this.childs.length > 1 || (data && data.length == 1 && this.childs[0] && this.childs[0].attributes.getNamedItem('spry:suggest').value != this.getValue()))
-			{
-				this.showSuggestions(true);
-			}
-			else
-				return;	
-			
-			var utils = Spry.Widget.Utils;
-			for (var k=0; k < this.childs.length; k++)
-			{
-				if (next)
-				{
-					utils.addClassName(this.childs[k], this.hoverSuggestClass);
-					this.scrollVisible(this.childs[k]);
-					break;
-				}
-				if (utils.hasClassName(this.childs[k], this.hoverSuggestClass))
-				{
-					utils.removeClassName(this.childs[k], this.hoverSuggestClass);
-					found = true;
-					if (e.keyCode == this.moveNextKeyCode)
-					{
-						next = true;
-						continue;
-					}
-					else
-					{
-						utils.addClassName(this.childs[prev], this.hoverSuggestClass);
-						this.scrollVisible(this.childs[prev]);
-						break;
-					}
-				}
-				prev = k;
-			}
-			if (!found || (next && k == this.childs.length))
-			{
-				utils.addClassName(this.childs[0], this.hoverSuggestClass);
-				this.scrollVisible(this.childs[0]);
-			}
-			utils.stopEvent(e);
-			break;
-		case 27: // ESC key
-			this.showSuggestions(false);
-			break;
-		case 13: //Enter Key
-			if (!this.isVisibleSuggestion()) 
-				return;
-			for (var k=0; k < this.childs.length; k++)
-				if (Spry.Widget.Utils.hasClassName(this.childs[k], this.hoverSuggestClass))
-				{
-					var attr = this.childs[k].attributes.getNamedItem('spry:suggest');
-					if (attr){
-						this.setValue(attr.value);
-						this.handleKeyUp(null);
-					}
-					// stop form submission
-					Spry.Widget.Utils.stopEvent(e);
-					return false;
-				}
-			break;
-		case 9: //Tab Key
-			this.showSuggestions(false);
-	}
-	return;
-};
-
-Spry.Widget.AutoSuggest.prototype.filterDataSet = function()
-{
-	var contains = this.containsString;
-	var columnName = this.field;
-	var val = this.getValue();
-
-	if (this.previousString && this.previousString == val)
-		return;
-
-	this.previousString = val;
-
-	if (!val || (this.minCharsType && this.minCharsType > val.length))
-	{
-		this.dataset.filter(function(ds, row, rowNumber) {return null;});
-		this.showSuggestions(false);
-		return;
-	}
-
-	var regExpStr = Spry.Widget.Utils.escapeRegExp(val);
-
-	if (!contains)
-	 	regExpStr = "^" + regExpStr;
-
-	var regExp = new RegExp(regExpStr, "ig");
-	
-	if (this.maxListItems > 0)
-		this.dataset.maxItems = this.maxListItems;
-
-	var filterFunc = function(ds, row, rowNumber)
-	{
-		if (ds.maxItems >0  && ds.maxItems <= ds.data.length)
-			return null;
-
-		if (typeof columnName == 'object')
-		{
-			var l = columnName.length;
-			for (var i=0; i < l; i++)
-			{
-				var str = row[columnName[i]];
-				if (str && str.search(regExp) != -1)
-					return row;
-			}
-		}
-		else
-		{
-			var str = row[columnName];
-			if (str && str.search(regExp) != -1)
-				return row;
-		}
-		return null; 
-	};
-
-	this.dataset.filter(filterFunc);
-	var data = this.dataset.getData();
-	this.showSuggestions(data && (!this.minCharsType || val.length >= this.minCharsType) && (data.length > 1 || (data.length == 1 && this.childs[0] && this.childs[0].attributes.getNamedItem('spry:suggest').value != val )));
-};
-
-Spry.Widget.AutoSuggest.prototype.loadDataSet = function()
-{
-	var val = this.getValue();
-	var ds = this.dataset;
-	ds.cancelLoadData();
-	ds.useCache = false;
-	
-	if (!val || (this.minCharsType && this.minCharsType > val.length))
-	{
-		this.showSuggestions(false);
-		return;
-	}
-	
-	if (this.previousString && this.previousString == val)
-	{
-		var data = ds.getData();
-		this.showSuggestions(data && (data.length > 1 || (data.length == 1 && this.childs[0].attributes.getNamedItem("spry:suggest").value != val)));
-		return;
-	}
-
-	this.previousString = val;
-
-	var url = Spry.Widget.Utils.addReplaceParam(ds.url, this.urlParam, val);
-	ds.setURL(url);
-	ds.loadData();
-};
-
-Spry.Widget.AutoSuggest.prototype.addMouseListener =  function(node, value)
-{
-	var self = this;
-	var addListener = Spry.Widget.Utils.addEventListener;
-	addListener(node, "click", function(e){ return self.nodeClick(e, value); self.handleKeyUp(null);}, false); 
-	addListener(node, "mouseover", function(e){ Spry.Widget.Utils.addClassName(node, self.hoverSuggestClass); self.nodeMouseOver(e, node)}, false); 
-	addListener(node, "mouseout", function(e){ Spry.Widget.Utils.removeClassName(node, self.hoverSuggestClass); self.nodeMouseOver(e, node)}, false); 
-};
-Spry.Widget.AutoSuggest.prototype.removeMouseListener =  function(node, value)
-{
-	var self = this;
-	var removeListener = Spry.Widget.Utils.removeEventListener;
-	removeListener(node, "click", function (e){ self.nodeClick(e, value); self.handleKeyUp(null);}, false); 
-	removeListener(node, "mouseover", function(e){ Spry.Widget.Utils.addClassName(node, self.hoverSuggestClass); self.nodeMouseOver(e, node)}, false); 
-	removeListener(node, "mouseout", function(e){ Spry.Widget.Utils.removeClassName(node, self.hoverSuggestClass); self.nodeMouseOver(e, node)}, false); 
-};
-Spry.Widget.AutoSuggest.prototype.attachClickBehaviors =  function()
-{
-	var self = this;
-	var valNodes = Spry.Utils.getNodesByFunc(this.region, function(node)
-	{
-		if (node.nodeType == 1) /* Node.ELEMENT_NODE */
-		{
-			var attr = node.attributes.getNamedItem("spry:suggest");
-			if (attr){
-				self.addMouseListener(node, attr.value);
-				return true;
-			}
-		}
-		return false;
-	});
-	this.childs = valNodes;
-};
-Spry.Widget.AutoSuggest.prototype.removeClickBehaviours = function()
-{
-	var self = this;
-	var valNodes = Spry.Utils.getNodesByFunc(this.region, function(node)
-	{
-		if (node.nodeType == 1) /* Node.ELEMENT_NODE */
-		{
-			var attr = node.attributes.getNamedItem("spry:suggest");
-			if (attr){
-				self.removeMouseListener(node, attr.value);
-				return true;
-			}
-		}
-		return false;
-	});
-};
-Spry.Widget.AutoSuggest.prototype.destroy = function(){
-
-	this.removeClickBehaviours();
-	Spry.Data.Region.removeObserver(Spry.Widget.Utils.getElementID(this.suggestRegion),this._notifyDataset);
-	
-	if (this.event_handlers)
-		for (var i=0; i<this.event_handlers.length; i++) {
-			Spry.Widget.Utils.removeEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
-		}
-
-	for (var k in this)
-	{
-		if (typeof this[k] != 'function'){
-			try { delete this[k]; } catch(err) {}
-		}
-	}
-};
-
-Spry.Widget.AutoSuggest.onloadDidFire = false;
-Spry.Widget.AutoSuggest.loadQueue = [];
-
-Spry.Widget.AutoSuggest.processLoadQueue = function(handler)
-{
-	Spry.Widget.AutoSuggest.onloadDidFire = true;
-	var q = Spry.Widget.AutoSuggest.loadQueue;
-	var qlen = q.length;
-	for (var i = 0; i < qlen; i++)
-		q[i].attachBehaviors();
-};
-
-Spry.Widget.AutoSuggest.addLoadListener = function(handler)
-{
-	if (typeof window.addEventListener != 'undefined')
-		window.addEventListener('load', handler, false);
-	else if (typeof document.addEventListener != 'undefined')
-		document.addEventListener('load', handler, false);
-	else if (typeof window.attachEvent != 'undefined')
-		window.attachEvent('onload', handler);
-};
-
-Spry.Widget.AutoSuggest.addLoadListener(Spry.Widget.AutoSuggest.processLoadQueue);
-
-Spry.Widget.AutoSuggest.prototype.attachBehaviors = function()
-{
-	this.event_handlers = [];
-	var self = this;
-	// adding listeners to the text input to catch the text changes
-	var _notifyKeyUp = function(e){ self.handleKeyUp(e)};
-	this.event_handlers.push([this.textElement, "keydown", _notifyKeyUp]); 
-	this.event_handlers.push([this.textElement, "focus", function(e){ if (self.stopFocus){ self.handleKeyUp(e);} self.hasFocus = true; self.stopFocus = false;}]);
-	this.event_handlers.push([this.textElement, "drop", _notifyKeyUp]);
-	this.event_handlers.push([this.textElement, "dragdrop", _notifyKeyUp]);
-	
-	var _notifyBlur = false;
-	// on opera the blur is triggered before onclick
-	if (Spry.is.opera){
-		_notifyBlur = function(e) { setTimeout(function(){if (!self.clickInList){ self.showSuggestions(false); }else{ self.stopFocus = true; self.textElement.focus();} self.clickInList = false; self.hasFocus = false;}, 100); };
-	}else{
-		_notifyBlur = function(e) { if (!self.clickInList){ self.showSuggestions(false); }else{ self.stopFocus = true; self.textElement.focus();} self.clickInList = false; self.hasFocus = false;};
-	}
-	this.event_handlers.push([this.textElement, "blur", _notifyBlur]);
-
-	// we listen on the suggest region too
-	this.event_handlers.push([this.suggestRegion, "mousedown", function(e){ self.clickInList = true;}]);
-
-	for (var i=0; i<this.event_handlers.length; i++) 
-		Spry.Widget.Utils.addEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
-};
-
-// createIframeLayer for Tooltip
-// creates an IFRAME underneath a tooltip element so that it will show above form controls and ActiveX
-Spry.Widget.AutoSuggest.prototype.createIframeLayer = function(element)
-{
-	if (typeof this.iframeLayer == 'undefined')
-	{
-		var layer = document.createElement('iframe');
-		layer.tabIndex = '-1';
-		layer.src = 'javascript:"";';
-		layer.scrolling = 'no';
-		layer.frameBorder = '0';
-		layer.className = 'iframeSuggest';
-		element.parentNode.appendChild(layer);
-		this.iframeLayer = layer;
-	}
-	this.iframeLayer.style.left = element.offsetLeft + 'px';
-	this.iframeLayer.style.top = element.offsetTop + 'px';
-	this.iframeLayer.style.width = element.offsetWidth + 'px';
-	this.iframeLayer.style.height = element.offsetHeight + 'px';
-	this.iframeLayer.style.display = 'block';	
-};
-
-// removeIframeLayer for Tooltip Element
-// removes an IFRAME underneath a tooltip to reveal any form controls and ActiveX
-Spry.Widget.AutoSuggest.prototype.removeIframeLayer =  function()
-{
-	if (this.iframeLayer)
-		this.iframeLayer.style.display = 'none';
-};
-
-//////////////////////////////////////////////////////////////////////
-//
-// Spry.Widget.Utils
-//
-//////////////////////////////////////////////////////////////////////
-if (!Spry.Widget.Utils)	Spry.Widget.Utils = {};
-
-Spry.Widget.Utils.specialSafariNavKeys = ",63232,63233,63234,63235,63272,63273,63275,63276,63277,63289,"; //left,up,rigtht,down arrows,delete,home,end,page up,page down,num lock
-Spry.Widget.Utils.specialCharacters = ",9,13,27,38,40,";              //suggest keys: tab,enter,escape,up arrow,down arrow
-Spry.Widget.Utils.specialCharacters += ",33,34,35,36,37,39,45,46,";   //edit keys: insert,delete,home,end,left arrow,right arrow,page up,page down
-Spry.Widget.Utils.specialCharacters += ",16,17,18,19,20,144,145,";    //control keys: shift,control,alt,pause,caps lock,num lock,scroll lock
-Spry.Widget.Utils.specialCharacters += ",112,113,114,115,116,117,118,119,120,121,122,123,"; //F1-F12
-Spry.Widget.Utils.specialCharacters += Spry.Widget.Utils.specialSafariNavKeys;
-
-Spry.Widget.AutoSuggest.prototype.isSpecialKey = function (ev)
-{
-	return Spry.Widget.Utils.specialCharacters.indexOf("," + ev.keyCode + ",") != -1 || this.moveNextKeyCode == ev.keyCode || this.movePrevKeyCode == ev.keyCode;
-};
-Spry.Widget.Utils.getElementID = function(el)
-{
-	if (typeof el == 'string' && el)
-		return el;
-	return el.getAttribute('id');
-};
-Spry.Widget.Utils.getElement = function(ele)
-{
-	if (ele && typeof ele == "string")
-		return document.getElementById(ele);
-	return ele;
-};
-Spry.Widget.Utils.addReplaceParam = function(url, param, paramValue)
-{
-	var uri ='';
-	var qstring = '';
-	var i = url.indexOf('?');
-	if ( i != -1)
-	{
-		uri = url.slice(0, i);
-		qstring = url.slice(i+1);
-	}
-	else 
-		uri = url;
-
-	// the list of parameters
-	qstring = qstring.replace('?', '');
-	var arg = qstring.split("&");
-
-	// prevent malicious use
-	if (param.lastIndexOf('/') != -1)
-		param = param.slice(param.lastIndexOf('/')+1);
-
-	// remove param from the list
-	for (i=0; i < arg.length ;i++)
-	{
-		var k = arg[i].split('=');
-		if ( (k[0] && k[0] == decodeURI(param)) || arg[i] == decodeURI(param))
-			arg[i] = null;
-	}
-
-	arg[arg.length] = encodeURIComponent(param) + '=' + encodeURIComponent(paramValue);
-	qstring = '';
-	// reconstruct the qstring
-	for (i=0; i < arg.length; i++)
-		if (arg[i])
-			qstring += '&'+arg[i];
-
-	// remove the first &
-	qstring = qstring.slice(1);
-
-	url = uri + '?' + qstring;
-	return url;
-};
-
-Spry.Widget.Utils.addClassName = function(ele, clssName)
-{
-	if (!ele) return;
-
-	if (!ele.className) ele.className = '';
-
-	if (!ele || ele.className.search(new RegExp("\\b" + clssName + "\\b")) != -1)
-	  return;
-
-	ele.className += ' ' + clssName;
-};
-
-Spry.Widget.Utils.removeClassName = function(ele, className)
-{
-	if (!ele) return;	
-
-	if (!ele.className)
-	{
-		ele.className = '';
-		return;
-	}
-	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), '');
-};
-
-Spry.Widget.Utils.hasClassName = function (ele, className)
-{
-	if (!ele || !className)
-		return false;
-
-	if (!ele.className)
-		ele.className = '';
-
-	return ele.className.search(new RegExp("\\s*\\b" + className + "\\b")) != -1;
-};
-
-Spry.Widget.Utils.addEventListener = function(el, eventType, handler, capture)
-{
-	try
-	{
-		if (el.addEventListener)
-			el.addEventListener(eventType, handler, capture);
-		else if (el.attachEvent)
-			el.attachEvent("on" + eventType, handler, capture);
-	}catch (e) {}
-};
-
-Spry.Widget.Utils.removeEventListener = function(el, eventType, handler, capture)
-{
-	try
-	{
-		if (el.removeEventListener)
-			el.removeEventListener(eventType, handler, capture);
-		else if (el.detachEvent)
-			el.detachEvent("on" + eventType, handler, capture);
-	}catch (e) {}
-};
-
-Spry.Widget.Utils.stopEvent = function(ev)
-{
-	ev.cancelBubble = true;
-	ev.returnValue = false;
-
-	try
-	{
-		this.stopPropagation(ev);
-	}catch (e){}
-	try{
-		this.preventDefault(ev);
-	}catch(e){}
-};
-
-/**
- * Stops event propagation
- * @param {Event} ev the event
- */
-Spry.Widget.Utils.stopPropagation = function(ev)
-{
-	if (ev.stopPropagation)
-		ev.stopPropagation();
-	else
-		ev.cancelBubble = true;
-};
-
-/**
- * Prevents the default behavior of the event
- * @param {Event} ev the event
- */
-Spry.Widget.Utils.preventDefault = function(ev)
-{
-	if (ev.preventDefault)
-		ev.preventDefault();
-	else
-		ev.returnValue = false;
-};
-
-Spry.Widget.Utils.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
-{
-	if (!optionsObj)
-		return;
-	for (var optionName in optionsObj)
-	{
-		if (typeof ignoreUndefinedProps != 'undefined' && ignoreUndefinedProps && typeof optionsObj[optionName] == 'undefined')
-			continue;
-		obj[optionName] = optionsObj[optionName];
-	}
-};
-
-Spry.Widget.Utils.firstValid = function()
-{
-	var ret = null;
-	for (var i=0; i < Spry.Widget.Utils.firstValid.arguments.length; i++)
-		if (typeof Spry.Widget.Utils.firstValid.arguments[i] != 'undefined')
-		{
-			ret = Spry.Widget.Utils.firstValid.arguments[i];
-			break;
-		}
-
-	return ret;
-};
-
-Spry.Widget.Utils.camelize = function(stringToCamelize)
-{
-  var oStringList = stringToCamelize.split('-');
-	var isFirstEntry = true;
-	var camelizedString = '';
-
-	for(var i=0; i < oStringList.length; i++)
-	{
-		if(oStringList[i].length>0)
-		{
-			if(isFirstEntry)
-			{
-				camelizedString = oStringList[i];
-				isFirstEntry = false;
-			}
-			else
-			{
-				var s = oStringList[i];
-				camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
-			}
-		}
-	}
-
-	return camelizedString;
-};
-
-Spry.Widget.Utils.getStyleProp = function(element, prop)
-{
-	var value;
-	var camel = Spry.Widget.Utils.camelize(prop);
-	try
-	{
-		value = element.style[camel];
-		if (!value)
-		{
-			if (document.defaultView && document.defaultView.getComputedStyle)
-			{
-				var css = document.defaultView.getComputedStyle(element, null);
-				value = css ? css.getPropertyValue(prop) : null;
-			}
-			else
-				if (element.currentStyle)
-					value = element.currentStyle[camel];
-		}
-	}
-	catch (e) {}
-
-	return value == 'auto' ? null : value;
-};
-Spry.Widget.Utils.makePositioned = function(element)
-{
-	var pos = Spry.Widget.Utils.getStyleProp(element, 'position');
-	if (!pos || pos == 'static')
-	{
-		element.style.position = 'relative';
-
-		// Opera returns the offset relative to the positioning context, when an
-		// element is position relative but top and left have not been defined
-		if (window.opera)
-		{
-			element.style.top = 0;
-			element.style.left = 0;
-		}
-	}
-};
-Spry.Widget.Utils.escapeRegExp = function(rexp)
-{
-	return rexp.replace(/([\.\/\]\[\{\}\(\)\\\$\^\?\*\|\!\=\+\-])/g, '\\$1');
-};
-Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel = function(node, nodeName)
-{
-	var elements  = node.getElementsByTagName(nodeName);
-	if (elements)
-		return elements[0];
-	
-	return null;
-};
--- a/includes/clientside/static/SpryData.js	Sun Aug 17 23:24:41 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1045 +0,0 @@
-// SpryData.js - version 0.45 - Spry Pre-Release 1.6.1
-//
-// Copyright (c) 2007. Adobe Systems Incorporated.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//   * Redistributions of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//   * Redistributions in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//   * Neither the name of Adobe Systems Incorporated nor the names of its
-//     contributors may be used to endorse or promote products derived from this
-//     software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-var Spry;if(!Spry)Spry={};if(!Spry.Utils)Spry.Utils={};Spry.Utils.msProgIDs=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0"];Spry.Utils.createXMLHttpRequest=function()
-{var req=null;try
-{if(window.ActiveXObject)
-{while(!req&&Spry.Utils.msProgIDs.length)
-{try{req=new ActiveXObject(Spry.Utils.msProgIDs[0]);}catch(e){req=null;}
-if(!req)
-Spry.Utils.msProgIDs.splice(0,1);}}
-if(!req&&window.XMLHttpRequest)
-req=new XMLHttpRequest();}
-catch(e){req=null;}
-if(!req)
-Spry.Debug.reportError("Failed to create an XMLHttpRequest object!");return req;};Spry.Utils.loadURL=function(method,url,async,callback,opts)
-{var req=new Spry.Utils.loadURL.Request();req.method=method;req.url=url;req.async=async;req.successCallback=callback;Spry.Utils.setOptions(req,opts);try
-{req.xhRequest=Spry.Utils.createXMLHttpRequest();if(!req.xhRequest)
-return null;if(req.async)
-req.xhRequest.onreadystatechange=function(){Spry.Utils.loadURL.callback(req);};req.xhRequest.open(req.method,req.url,req.async,req.username,req.password);if(req.headers)
-{for(var name in req.headers)
-req.xhRequest.setRequestHeader(name,req.headers[name]);}
-req.xhRequest.send(req.postData);if(!req.async)
-Spry.Utils.loadURL.callback(req);}
-catch(e)
-{if(req.errorCallback)
-req.errorCallback(req);else
-Spry.Debug.reportError("Exception caught while loading "+url+": "+e);req=null;}
-return req;};Spry.Utils.loadURL.callback=function(req)
-{if(!req||req.xhRequest.readyState!=4)
-return;if(req.successCallback&&(req.xhRequest.status==200||req.xhRequest.status==0))
-req.successCallback(req);else if(req.errorCallback)
-req.errorCallback(req);};Spry.Utils.loadURL.Request=function()
-{var props=Spry.Utils.loadURL.Request.props;var numProps=props.length;for(var i=0;i<numProps;i++)
-this[props[i]]=null;this.method="GET";this.async=true;this.headers={};};Spry.Utils.loadURL.Request.props=["method","url","async","username","password","postData","successCallback","errorCallback","headers","userData","xhRequest"];Spry.Utils.loadURL.Request.prototype.extractRequestOptions=function(opts,undefineRequestProps)
-{if(!opts)
-return;var props=Spry.Utils.loadURL.Request.props;var numProps=props.length;for(var i=0;i<numProps;i++)
-{var prop=props[i];if(opts[prop]!=undefined)
-{this[prop]=opts[prop];if(undefineRequestProps)
-opts[prop]=undefined;}}};Spry.Utils.loadURL.Request.prototype.clone=function()
-{var props=Spry.Utils.loadURL.Request.props;var numProps=props.length;var req=new Spry.Utils.loadURL.Request;for(var i=0;i<numProps;i++)
-req[props[i]]=this[props[i]];if(this.headers)
-{req.headers={};Spry.Utils.setOptions(req.headers,this.headers);}
-return req;};Spry.Utils.setInnerHTML=function(ele,str,preventScripts)
-{if(!ele)
-return;ele=Spry.$(ele);var scriptExpr="<script[^>]*>(.|\s|\n|\r)*?</script>";ele.innerHTML=str.replace(new RegExp(scriptExpr,"img"),"");if(preventScripts)
-return;var matches=str.match(new RegExp(scriptExpr,"img"));if(matches)
-{var numMatches=matches.length;for(var i=0;i<numMatches;i++)
-{var s=matches[i].replace(/<script[^>]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/script>/img,"");Spry.Utils.eval(s);}}};Spry.Utils.updateContent=function(ele,url,finishFunc,opts)
-{Spry.Utils.loadURL("GET",url,true,function(req)
-{Spry.Utils.setInnerHTML(ele,req.xhRequest.responseText);if(finishFunc)
-finishFunc(ele,url);},opts);};if(!Spry.$$)
-{Spry.Utils.addEventListener=function(element,eventType,handler,capture)
-{try
-{element=Spry.$(element);if(element.addEventListener)
-element.addEventListener(eventType,handler,capture);else if(element.attachEvent)
-element.attachEvent("on"+eventType,handler);}
-catch(e){}};Spry.Utils.removeEventListener=function(element,eventType,handler,capture)
-{try
-{element=Spry.$(element);if(element.removeEventListener)
-element.removeEventListener(eventType,handler,capture);else if(element.detachEvent)
-element.detachEvent("on"+eventType,handler);}
-catch(e){}};Spry.Utils.addLoadListener=function(handler)
-{if(typeof window.addEventListener!='undefined')
-window.addEventListener('load',handler,false);else if(typeof document.addEventListener!='undefined')
-document.addEventListener('load',handler,false);else if(typeof window.attachEvent!='undefined')
-window.attachEvent('onload',handler);};Spry.Utils.addClassName=function(ele,className)
-{ele=Spry.$(ele);if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))!=-1))
-return;ele.className+=(ele.className?" ":"")+className;};Spry.Utils.removeClassName=function(ele,className)
-{ele=Spry.$(ele);if(!ele||!className||(ele.className&&ele.className.search(new RegExp("\\b"+className+"\\b"))==-1))
-return;ele.className=ele.className.replace(new RegExp("\\s*\\b"+className+"\\b","g"),"");};Spry.Utils.getObjectByName=function(name)
-{var result=null;if(name)
-{var lu=window;var objPath=name.split(".");for(var i=0;lu&&i<objPath.length;i++)
-{result=lu[objPath[i]];lu=result;}}
-return result;};Spry.$=function(element)
-{if(arguments.length>1)
-{for(var i=0,elements=[],length=arguments.length;i<length;i++)
-elements.push(Spry.$(arguments[i]));return elements;}
-if(typeof element=='string')
-element=document.getElementById(element);return element;};}
-Spry.Utils.eval=function(str)
-{return eval(str);};Spry.Utils.escapeQuotesAndLineBreaks=function(str)
-{if(str)
-{str=str.replace(/\\/g,"\\\\");str=str.replace(/["']/g,"\\$&");str=str.replace(/\n/g,"\\n");str=str.replace(/\r/g,"\\r");}
-return str;};Spry.Utils.encodeEntities=function(str)
-{if(str&&str.search(/[&<>"]/)!=-1)
-{str=str.replace(/&/g,"&amp;");str=str.replace(/</g,"&lt;");str=str.replace(/>/g,"&gt;");str=str.replace(/"/g,"&quot;");}
-return str};Spry.Utils.decodeEntities=function(str)
-{var d=Spry.Utils.decodeEntities.div;if(!d)
-{d=document.createElement('div');Spry.Utils.decodeEntities.div=d;if(!d)return str;}
-d.innerHTML=str;if(d.childNodes.length==1&&d.firstChild.nodeType==3&&d.firstChild.nextSibling==null)
-str=d.firstChild.data;else
-{str=str.replace(/&lt;/gi,"<");str=str.replace(/&gt;/gi,">");str=str.replace(/&quot;/gi,"\"");str=str.replace(/&amp;/gi,"&");}
-return str;};Spry.Utils.fixupIETagAttributes=function(inStr)
-{var outStr="";var tagStart=inStr.match(/^<[^\s>]+\s*/)[0];var tagEnd=inStr.match(/\s*\/?>$/)[0];var tagAttrs=inStr.replace(/^<[^\s>]+\s*|\s*\/?>/g,"");outStr+=tagStart;if(tagAttrs)
-{var startIndex=0;var endIndex=0;while(startIndex<tagAttrs.length)
-{while(tagAttrs.charAt(endIndex)!='='&&endIndex<tagAttrs.length)
-++endIndex;if(endIndex>=tagAttrs.length)
-{outStr+=tagAttrs.substring(startIndex,endIndex);break;}
-++endIndex;outStr+=tagAttrs.substring(startIndex,endIndex);startIndex=endIndex;if(tagAttrs.charAt(endIndex)=='"'||tagAttrs.charAt(endIndex)=="'")
-{var savedIndex=endIndex++;while(endIndex<tagAttrs.length)
-{if(tagAttrs.charAt(endIndex)==tagAttrs.charAt(savedIndex))
-{endIndex++;break;}
-else if(tagAttrs.charAt(endIndex)=="\\")
-endIndex++;endIndex++;}
-outStr+=tagAttrs.substring(startIndex,endIndex);startIndex=endIndex;}
-else
-{outStr+="\"";var sIndex=tagAttrs.slice(endIndex).search(/\s/);endIndex=(sIndex!=-1)?(endIndex+sIndex):tagAttrs.length;outStr+=tagAttrs.slice(startIndex,endIndex);outStr+="\"";startIndex=endIndex;}}}
-outStr+=tagEnd;return outStr;};Spry.Utils.fixUpIEInnerHTML=function(inStr)
-{var outStr="";var regexp=new RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|\&gt;)","g");var searchStartIndex=0;var skipFixUp=0;while(inStr.length)
-{var results=regexp.exec(inStr);if(!results||!results[0])
-{outStr+=inStr.substr(searchStartIndex,inStr.length-searchStartIndex);break;}
-if(results.index!=searchStartIndex)
-{outStr+=inStr.substr(searchStartIndex,results.index-searchStartIndex);}
-if(results[0]=="<!--"||results[0]=="<![CDATA[")
-{++skipFixUp;outStr+=results[0];}
-else if(results[0]=="-->"||results[0]=="]]>"||(skipFixUp&&results[0]=="]]&gt;"))
-{--skipFixUp;outStr+=results[0];}
-else if(!skipFixUp&&results[0].charAt(0)=='<')
-outStr+=Spry.Utils.fixupIETagAttributes(results[0]);else
-outStr+=results[0];searchStartIndex=regexp.lastIndex;}
-return outStr;};Spry.Utils.stringToXMLDoc=function(str)
-{var xmlDoc=null;try
-{var xmlDOMObj=new ActiveXObject("Microsoft.XMLDOM");xmlDOMObj.async=false;xmlDOMObj.loadXML(str);xmlDoc=xmlDOMObj;}
-catch(e)
-{try
-{var domParser=new DOMParser;xmlDoc=domParser.parseFromString(str,'text/xml');}
-catch(e)
-{Spry.Debug.reportError("Caught exception in Spry.Utils.stringToXMLDoc(): "+e+"\n");xmlDoc=null;}}
-return xmlDoc;};Spry.Utils.serializeObject=function(obj)
-{var str="";var firstItem=true;if(obj==null||obj==undefined)
-return str+obj;var objType=typeof obj;if(objType=="number"||objType=="boolean")
-str+=obj;else if(objType=="string")
-str+="\""+Spry.Utils.escapeQuotesAndLineBreaks(obj)+"\"";else if(obj.constructor==Array)
-{str+="[";for(var i=0;i<obj.length;i++)
-{if(!firstItem)
-str+=", ";str+=Spry.Utils.serializeObject(obj[i]);firstItem=false;}
-str+="]";}
-else if(objType=="object")
-{str+="{";for(var p in obj)
-{if(!firstItem)
-str+=", ";str+="\""+p+"\": "+Spry.Utils.serializeObject(obj[p]);firstItem=false;}
-str+="}";}
-return str;};Spry.Utils.getNodesByFunc=function(root,func)
-{var nodeStack=new Array;var resultArr=new Array;var node=root;while(node)
-{if(func(node))
-resultArr.push(node);if(node.hasChildNodes())
-{nodeStack.push(node);node=node.firstChild;}
-else
-{if(node==root)
-node=null;else
-try{node=node.nextSibling;}catch(e){node=null;};}
-while(!node&&nodeStack.length>0)
-{node=nodeStack.pop();if(node==root)
-node=null;else
-try{node=node.nextSibling;}catch(e){node=null;}}}
-if(nodeStack&&nodeStack.length>0)
-Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to traverse all nodes!\n");return resultArr;};Spry.Utils.getFirstChildWithNodeName=function(node,nodeName)
-{var child=node.firstChild;while(child)
-{if(child.nodeName==nodeName)
-return child;child=child.nextSibling;}
-return null;};Spry.Utils.setOptions=function(obj,optionsObj,ignoreUndefinedProps)
-{if(!optionsObj)
-return;for(var optionName in optionsObj)
-{if(ignoreUndefinedProps&&optionsObj[optionName]==undefined)
-continue;obj[optionName]=optionsObj[optionName];}};Spry.Utils.SelectionManager={};Spry.Utils.SelectionManager.selectionGroups=new Object;Spry.Utils.SelectionManager.SelectionGroup=function()
-{this.selectedElements=new Array;};Spry.Utils.SelectionManager.SelectionGroup.prototype.select=function(element,className,multiSelect)
-{var selObj=null;if(!multiSelect)
-{this.clearSelection();}
-else
-{for(var i=0;i<this.selectedElements.length;i++)
-{selObj=this.selectedElements[i].element;if(selObj.element==element)
-{if(selObj.className!=className)
-{Spry.Utils.removeClassName(element,selObj.className);Spry.Utils.addClassName(element,className);}
-return;}}}
-selObj=new Object;selObj.element=element;selObj.className=className;this.selectedElements.push(selObj);Spry.Utils.addClassName(element,className);};Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect=function(element)
-{for(var i=0;i<this.selectedElements.length;i++)
-{var selObj=this.selectedElements[i].element;if(selObj.element==element)
-{Spry.Utils.removeClassName(selObj.element,selObj.className);return;}}};Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection=function()
-{var selObj=null;do
-{selObj=this.selectedElements.shift();if(selObj)
-Spry.Utils.removeClassName(selObj.element,selObj.className);}
-while(selObj);};Spry.Utils.SelectionManager.getSelectionGroup=function(selectionGroupName)
-{if(!selectionGroupName)
-return null;var groupObj=Spry.Utils.SelectionManager.selectionGroups[selectionGroupName];if(!groupObj)
-{groupObj=new Spry.Utils.SelectionManager.SelectionGroup();Spry.Utils.SelectionManager.selectionGroups[selectionGroupName]=groupObj;}
-return groupObj;};Spry.Utils.SelectionManager.select=function(selectionGroupName,element,className,multiSelect)
-{var groupObj=Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);if(!groupObj)
-return;groupObj.select(element,className,multiSelect);};Spry.Utils.SelectionManager.unSelect=function(selectionGroupName,element)
-{var groupObj=Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);if(!groupObj)
-return;groupObj.unSelect(element,className);};Spry.Utils.SelectionManager.clearSelection=function(selectionGroupName)
-{var groupObj=Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);if(!groupObj)
-return;groupObj.clearSelection();};Spry.Utils.Notifier=function()
-{this.observers=[];this.suppressNotifications=0;};Spry.Utils.Notifier.prototype.addObserver=function(observer)
-{if(!observer)
-return;var len=this.observers.length;for(var i=0;i<len;i++)
-{if(this.observers[i]==observer)
-return;}
-this.observers[len]=observer;};Spry.Utils.Notifier.prototype.removeObserver=function(observer)
-{if(!observer)
-return;for(var i=0;i<this.observers.length;i++)
-{if(this.observers[i]==observer)
-{this.observers.splice(i,1);break;}}};Spry.Utils.Notifier.prototype.notifyObservers=function(methodName,data)
-{if(!methodName)
-return;if(!this.suppressNotifications)
-{var len=this.observers.length;for(var i=0;i<len;i++)
-{var obs=this.observers[i];if(obs)
-{if(typeof obs=="function")
-obs(methodName,this,data);else if(obs[methodName])
-obs[methodName](this,data);}}}};Spry.Utils.Notifier.prototype.enableNotifications=function()
-{if(--this.suppressNotifications<0)
-{this.suppressNotifications=0;Spry.Debug.reportError("Unbalanced enableNotifications() call!\n");}};Spry.Utils.Notifier.prototype.disableNotifications=function()
-{++this.suppressNotifications;};Spry.Debug={};Spry.Debug.enableTrace=true;Spry.Debug.debugWindow=null;Spry.Debug.onloadDidFire=false;Spry.Utils.addLoadListener(function(){Spry.Debug.onloadDidFire=true;Spry.Debug.flushQueuedMessages();});Spry.Debug.flushQueuedMessages=function()
-{if(Spry.Debug.flushQueuedMessages.msgs)
-{var msgs=Spry.Debug.flushQueuedMessages.msgs;for(var i=0;i<msgs.length;i++)
-Spry.Debug.debugOut(msgs[i].msg,msgs[i].color);Spry.Debug.flushQueuedMessages.msgs=null;}};Spry.Debug.createDebugWindow=function()
-{if(!Spry.Debug.enableTrace||Spry.Debug.debugWindow||!Spry.Debug.onloadDidFire)
-return;try
-{Spry.Debug.debugWindow=document.createElement("div");var div=Spry.Debug.debugWindow;div.style.fontSize="12px";div.style.fontFamily="console";div.style.position="absolute";div.style.width="400px";div.style.height="300px";div.style.overflow="auto";div.style.border="solid 1px black";div.style.backgroundColor="white";div.style.color="black";div.style.bottom="0px";div.style.right="0px";div.setAttribute("id","SpryDebugWindow");document.body.appendChild(Spry.Debug.debugWindow);}
-catch(e){}};Spry.Debug.debugOut=function(str,bgColor)
-{if(!Spry.Debug.debugWindow)
-{Spry.Debug.createDebugWindow();if(!Spry.Debug.debugWindow)
-{if(!Spry.Debug.flushQueuedMessages.msgs)
-Spry.Debug.flushQueuedMessages.msgs=new Array;Spry.Debug.flushQueuedMessages.msgs.push({msg:str,color:bgColor});return;}}
-var d=document.createElement("div");if(bgColor)
-d.style.backgroundColor=bgColor;d.innerHTML=str;Spry.Debug.debugWindow.appendChild(d);};Spry.Debug.trace=function(str)
-{Spry.Debug.debugOut(str);};Spry.Debug.reportError=function(str)
-{Spry.Debug.debugOut(str,"red");};Spry.Data={};Spry.Data.regionsArray={};Spry.Data.initRegionsOnLoad=true;Spry.Data.initRegions=function(rootNode)
-{rootNode=rootNode?Spry.$(rootNode):document.body;var lastRegionFound=null;var regions=Spry.Utils.getNodesByFunc(rootNode,function(node)
-{try
-{if(node.nodeType!=1)
-return false;var attrName="spry:region";var attr=node.attributes.getNamedItem(attrName);if(!attr)
-{attrName="spry:detailregion";attr=node.attributes.getNamedItem(attrName);}
-if(attr)
-{if(lastRegionFound)
-{var parent=node.parentNode;while(parent)
-{if(parent==lastRegionFound)
-{Spry.Debug.reportError("Found a nested "+attrName+" in the following markup. Nested regions are currently not supported.<br/><pre>"+Spry.Utils.encodeEntities(parent.innerHTML)+"</pre>");return false;}
-parent=parent.parentNode;}}
-if(attr.value)
-{attr=node.attributes.getNamedItem("id");if(!attr||!attr.value)
-{node.setAttribute("id","spryregion"+(++Spry.Data.initRegions.nextUniqueRegionID));}
-lastRegionFound=node;return true;}
-else
-Spry.Debug.reportError(attrName+" attributes require one or more data set names as values!");}}
-catch(e){}
-return false;});var name,dataSets,i;var newRegions=[];for(i=0;i<regions.length;i++)
-{var rgn=regions[i];var isDetailRegion=false;name=rgn.attributes.getNamedItem("id").value;attr=rgn.attributes.getNamedItem("spry:region");if(!attr)
-{attr=rgn.attributes.getNamedItem("spry:detailregion");isDetailRegion=true;}
-if(!attr.value)
-{Spry.Debug.reportError("spry:region and spry:detailregion attributes require one or more data set names as values!");continue;}
-rgn.attributes.removeNamedItem(attr.nodeName);Spry.Utils.removeClassName(rgn,Spry.Data.Region.hiddenRegionClassName);dataSets=Spry.Data.Region.strToDataSetsArray(attr.value);if(!dataSets.length)
-{Spry.Debug.reportError("spry:region or spry:detailregion attribute has no data set!");continue;}
-var hasBehaviorAttributes=false;var hasSpryContent=false;var dataStr="";var parent=null;var regionStates={};var regionStateMap={};attr=rgn.attributes.getNamedItem("spry:readystate");if(attr&&attr.value)
-regionStateMap["ready"]=attr.value;attr=rgn.attributes.getNamedItem("spry:errorstate");if(attr&&attr.value)
-regionStateMap["error"]=attr.value;attr=rgn.attributes.getNamedItem("spry:loadingstate");if(attr&&attr.value)
-regionStateMap["loading"]=attr.value;attr=rgn.attributes.getNamedItem("spry:expiredstate");if(attr&&attr.value)
-regionStateMap["expired"]=attr.value;var piRegions=Spry.Utils.getNodesByFunc(rgn,function(node)
-{try
-{if(node.nodeType==1)
-{var attributes=node.attributes;var numPI=Spry.Data.Region.PI.orderedInstructions.length;var lastStartComment=null;var lastEndComment=null;for(var i=0;i<numPI;i++)
-{var piName=Spry.Data.Region.PI.orderedInstructions[i];var attr=attributes.getNamedItem(piName);if(!attr)
-continue;var piDesc=Spry.Data.Region.PI.instructions[piName];var childrenOnly=(node==rgn)?true:piDesc.childrenOnly;var openTag=piDesc.getOpenTag(node,piName);var closeTag=piDesc.getCloseTag(node,piName);if(childrenOnly)
-{var oComment=document.createComment(openTag);var cComment=document.createComment(closeTag);if(!lastStartComment)
-node.insertBefore(oComment,node.firstChild);else
-node.insertBefore(oComment,lastStartComment.nextSibling);lastStartComment=oComment;if(!lastEndComment)
-node.appendChild(cComment);else
-node.insertBefore(cComment,lastEndComment);lastEndComment=cComment;}
-else
-{var parent=node.parentNode;parent.insertBefore(document.createComment(openTag),node);parent.insertBefore(document.createComment(closeTag),node.nextSibling);}
-if(piName=="spry:state")
-regionStates[attr.value]=true;node.removeAttribute(piName);}
-if(Spry.Data.Region.enableBehaviorAttributes)
-{var bAttrs=Spry.Data.Region.behaviorAttrs;for(var behaviorAttrName in bAttrs)
-{var bAttr=attributes.getNamedItem(behaviorAttrName);if(bAttr)
-{hasBehaviorAttributes=true;if(bAttrs[behaviorAttrName].setup)
-bAttrs[behaviorAttrName].setup(node,bAttr.value);}}}}}
-catch(e){}
-return false;});dataStr=rgn.innerHTML;if(window.ActiveXObject&&!Spry.Data.Region.disableIEInnerHTMLFixUp&&dataStr.search(/=\{/)!=-1)
-{if(Spry.Data.Region.debug)
-Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: "+name+"<br /><br />"+Spry.Utils.encodeEntities(dataStr));dataStr=Spry.Utils.fixUpIEInnerHTML(dataStr);}
-if(Spry.Data.Region.debug)
-Spry.Debug.trace("<hr />Region template markup for '"+name+"':<br /><br />"+Spry.Utils.encodeEntities(dataStr));if(!hasSpryContent)
-{rgn.innerHTML="";}
-var region=new Spry.Data.Region(rgn,name,isDetailRegion,dataStr,dataSets,regionStates,regionStateMap,hasBehaviorAttributes);Spry.Data.regionsArray[region.name]=region;newRegions.push(region);}
-for(var i=0;i<newRegions.length;i++)
-newRegions[i].updateContent();};Spry.Data.initRegions.nextUniqueRegionID=0;Spry.Data.updateRegion=function(regionName)
-{if(!regionName||!Spry.Data.regionsArray||!Spry.Data.regionsArray[regionName])
-return;try{Spry.Data.regionsArray[regionName].updateContent();}
-catch(e){Spry.Debug.reportError("Spry.Data.updateRegion("+regionName+") caught an exception: "+e+"\n");}};Spry.Data.getRegion=function(regionName)
-{return Spry.Data.regionsArray[regionName];};Spry.Data.updateAllRegions=function()
-{if(!Spry.Data.regionsArray)
-return;for(var regionName in Spry.Data.regionsArray)
-Spry.Data.updateRegion(regionName);};Spry.Data.getDataSetByName=function(dataSetName)
-{var ds=window[dataSetName];if(typeof ds!="object"||!ds.getData||!ds.filter)
-return null;return ds;};Spry.Data.DataSet=function(options)
-{Spry.Utils.Notifier.call(this);this.name="";this.internalID=Spry.Data.DataSet.nextDataSetID++;this.curRowID=0;this.data=[];this.unfilteredData=null;this.dataHash={};this.columnTypes={};this.filterFunc=null;this.filterDataFunc=null;this.distinctOnLoad=false;this.distinctFieldsOnLoad=null;this.sortOnLoad=null;this.sortOrderOnLoad="ascending";this.keepSorted=false;this.dataWasLoaded=false;this.pendingRequest=null;this.lastSortColumns=[];this.lastSortOrder="";this.loadIntervalID=0;Spry.Utils.setOptions(this,options);};Spry.Data.DataSet.prototype=new Spry.Utils.Notifier();Spry.Data.DataSet.prototype.constructor=Spry.Data.DataSet;Spry.Data.DataSet.prototype.getData=function(unfiltered)
-{return(unfiltered&&this.unfilteredData)?this.unfilteredData:this.data;};Spry.Data.DataSet.prototype.getUnfilteredData=function()
-{return this.getData(true);};Spry.Data.DataSet.prototype.getLoadDataRequestIsPending=function()
-{return this.pendingRequest!=null;};Spry.Data.DataSet.prototype.getDataWasLoaded=function()
-{return this.dataWasLoaded;};Spry.Data.DataSet.prototype.getValue=function(valueName,rowContext)
-{var result=undefined;if(!rowContext)
-rowContext=this.getCurrentRow();switch(valueName)
-{case"ds_RowNumber":result=this.getRowNumber(rowContext);break;case"ds_RowNumberPlus1":result=this.getRowNumber(rowContext)+1;break;case"ds_RowCount":result=this.getRowCount();break;case"ds_UnfilteredRowCount":result=this.getRowCount(true);break;case"ds_CurrentRowNumber":result=this.getCurrentRowNumber();break;case"ds_CurrentRowID":result=this.getCurrentRowID();break;case"ds_EvenOddRow":result=(this.getRowNumber(rowContext)%2)?Spry.Data.Region.evenRowClassName:Spry.Data.Region.oddRowClassName;break;case"ds_SortOrder":result=this.getSortOrder();break;case"ds_SortColumn":result=this.getSortColumn();break;default:if(rowContext)
-result=rowContext[valueName];break;}
-return result;};Spry.Data.DataSet.prototype.setDataFromArray=function(arr,fireSyncLoad)
-{this.notifyObservers("onPreLoad");this.unfilteredData=null;this.filteredData=null;this.data=[];this.dataHash={};var arrLen=arr.length;for(var i=0;i<arrLen;i++)
-{var row=arr[i];if(row.ds_RowID==undefined)
-row.ds_RowID=i;this.dataHash[row.ds_RowID]=row;this.data.push(row);}
-this.loadData(fireSyncLoad);};Spry.Data.DataSet.prototype.loadData=function(syncLoad)
-{var self=this;this.pendingRequest=new Object;this.dataWasLoaded=false;var loadCallbackFunc=function()
-{self.pendingRequest=null;self.dataWasLoaded=true;self.applyColumnTypes();self.disableNotifications();self.filterAndSortData();self.enableNotifications();self.notifyObservers("onPostLoad");self.notifyObservers("onDataChanged");};if(syncLoad)
-loadCallbackFunc();else
-this.pendingRequest.timer=setTimeout(loadCallbackFunc,0);};Spry.Data.DataSet.prototype.filterAndSortData=function()
-{if(this.filterDataFunc)
-this.filterData(this.filterDataFunc,true);if(this.distinctOnLoad)
-this.distinct(this.distinctFieldsOnLoad);if(this.keepSorted&&this.getSortColumn())
-this.sort(this.lastSortColumns,this.lastSortOrder);else if(this.sortOnLoad)
-this.sort(this.sortOnLoad,this.sortOrderOnLoad);if(this.filterFunc)
-this.filter(this.filterFunc,true);if(this.data&&this.data.length>0)
-this.curRowID=this.data[0]['ds_RowID'];else
-this.curRowID=0;};Spry.Data.DataSet.prototype.cancelLoadData=function()
-{if(this.pendingRequest&&this.pendingRequest.timer)
-clearTimeout(this.pendingRequest.timer);this.pendingRequest=null;};Spry.Data.DataSet.prototype.getRowCount=function(unfiltered)
-{var rows=this.getData(unfiltered);return rows?rows.length:0;};Spry.Data.DataSet.prototype.getRowByID=function(rowID)
-{if(!this.data)
-return null;return this.dataHash[rowID];};Spry.Data.DataSet.prototype.getRowByRowNumber=function(rowNumber,unfiltered)
-{var rows=this.getData(unfiltered);if(rows&&rowNumber>=0&&rowNumber<rows.length)
-return rows[rowNumber];return null;};Spry.Data.DataSet.prototype.getCurrentRow=function()
-{return this.getRowByID(this.curRowID);};Spry.Data.DataSet.prototype.setCurrentRow=function(rowID)
-{if(this.curRowID==rowID)
-return;var nData={oldRowID:this.curRowID,newRowID:rowID};this.curRowID=rowID;this.notifyObservers("onCurrentRowChanged",nData);};Spry.Data.DataSet.prototype.getRowNumber=function(row,unfiltered)
-{if(row)
-{var rows=this.getData(unfiltered);if(rows&&rows.length)
-{var numRows=rows.length;for(var i=0;i<numRows;i++)
-{if(rows[i]==row)
-return i;}}}
-return-1;};Spry.Data.DataSet.prototype.getCurrentRowNumber=function()
-{return this.getRowNumber(this.getCurrentRow());};Spry.Data.DataSet.prototype.getCurrentRowID=function()
-{return this.curRowID;};Spry.Data.DataSet.prototype.setCurrentRowNumber=function(rowNumber)
-{if(!this.data||rowNumber>=this.data.length)
-{Spry.Debug.trace("Invalid row number: "+rowNumber+"\n");return;}
-var rowID=this.data[rowNumber]["ds_RowID"];if(rowID==undefined||this.curRowID==rowID)
-return;this.setCurrentRow(rowID);};Spry.Data.DataSet.prototype.findRowsWithColumnValues=function(valueObj,firstMatchOnly,unfiltered)
-{var results=[];var rows=this.getData(unfiltered);if(rows)
-{var numRows=rows.length;for(var i=0;i<numRows;i++)
-{var row=rows[i];var matched=true;for(var colName in valueObj)
-{if(valueObj[colName]!=row[colName])
-{matched=false;break;}}
-if(matched)
-{if(firstMatchOnly)
-return row;results.push(row);}}}
-return firstMatchOnly?null:results;};Spry.Data.DataSet.prototype.setColumnType=function(columnNames,columnType)
-{if(columnNames)
-{if(typeof columnNames=="string")
-columnNames=[columnNames];for(var i=0;i<columnNames.length;i++)
-this.columnTypes[columnNames[i]]=columnType;}};Spry.Data.DataSet.prototype.getColumnType=function(columnName)
-{if(this.columnTypes[columnName])
-return this.columnTypes[columnName];return"string";};Spry.Data.DataSet.prototype.applyColumnTypes=function()
-{var rows=this.getData(true);var numRows=rows.length;var colNames=[];if(numRows<1)
-return;for(var cname in this.columnTypes)
-{var ctype=this.columnTypes[cname];if(ctype!="string")
-{for(var i=0;i<numRows;i++)
-{var row=rows[i];var val=row[cname];if(val!=undefined)
-{if(ctype=="number")
-row[cname]=new Number(val);else if(ctype=="html")
-row[cname]=Spry.Utils.decodeEntities(val);}}}}};Spry.Data.DataSet.prototype.distinct=function(columnNames)
-{if(this.data)
-{var oldData=this.data;this.data=[];this.dataHash={};var dataChanged=false;var alreadySeenHash={};var i=0;var keys=[];if(typeof columnNames=="string")
-keys=[columnNames];else if(columnNames)
-keys=columnNames;else
-for(var recField in oldData[0])
-keys[i++]=recField;for(var i=0;i<oldData.length;i++)
-{var rec=oldData[i];var hashStr="";for(var j=0;j<keys.length;j++)
-{recField=keys[j];if(recField!="ds_RowID")
-{if(hashStr)
-hashStr+=",";hashStr+=recField+":"+"\""+rec[recField]+"\"";}}
-if(!alreadySeenHash[hashStr])
-{this.data.push(rec);this.dataHash[rec['ds_RowID']]=rec;alreadySeenHash[hashStr]=true;}
-else
-dataChanged=true;}
-if(dataChanged)
-this.notifyObservers('onDataChanged');}};Spry.Data.DataSet.prototype.getSortColumn=function(){return(this.lastSortColumns&&this.lastSortColumns.length>0)?this.lastSortColumns[0]:"";};Spry.Data.DataSet.prototype.getSortOrder=function(){return this.lastSortOrder?this.lastSortOrder:"";};Spry.Data.DataSet.prototype.sort=function(columnNames,sortOrder)
-{if(!columnNames)
-return;if(typeof columnNames=="string")
-columnNames=[columnNames,"ds_RowID"];else if(columnNames.length<2&&columnNames[0]!="ds_RowID")
-columnNames.push("ds_RowID");if(!sortOrder)
-sortOrder="toggle";if(sortOrder=="toggle")
-{if(this.lastSortColumns.length>0&&this.lastSortColumns[0]==columnNames[0]&&this.lastSortOrder=="ascending")
-sortOrder="descending";else
-sortOrder="ascending";}
-if(sortOrder!="ascending"&&sortOrder!="descending")
-{Spry.Debug.reportError("Invalid sort order type specified: "+sortOrder+"\n");return;}
-var nData={oldSortColumns:this.lastSortColumns,oldSortOrder:this.lastSortOrder,newSortColumns:columnNames,newSortOrder:sortOrder};this.notifyObservers("onPreSort",nData);var cname=columnNames[columnNames.length-1];var sortfunc=Spry.Data.DataSet.prototype.sort.getSortFunc(cname,this.getColumnType(cname),sortOrder);for(var i=columnNames.length-2;i>=0;i--)
-{cname=columnNames[i];sortfunc=Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet.prototype.sort.getSortFunc(cname,this.getColumnType(cname),sortOrder),sortfunc);}
-if(this.unfilteredData)
-{this.unfilteredData.sort(sortfunc);if(this.filterFunc)
-this.filter(this.filterFunc,true);}
-else
-this.data.sort(sortfunc);this.lastSortColumns=columnNames.slice(0);this.lastSortOrder=sortOrder;this.notifyObservers("onPostSort",nData);};Spry.Data.DataSet.prototype.sort.getSortFunc=function(prop,type,order)
-{var sortfunc=null;if(type=="number")
-{if(order=="ascending")
-sortfunc=function(a,b)
-{a=a[prop];b=b[prop];if(a==undefined||b==undefined)
-return(a==b)?0:(a?1:-1);return a-b;};else
-sortfunc=function(a,b)
-{a=a[prop];b=b[prop];if(a==undefined||b==undefined)
-return(a==b)?0:(a?-1:1);return b-a;};}
-else if(type=="date")
-{if(order=="ascending")
-sortfunc=function(a,b)
-{var dA=a[prop];var dB=b[prop];dA=dA?(new Date(dA)):0;dB=dB?(new Date(dB)):0;return dA-dB;};else
-sortfunc=function(a,b)
-{var dA=a[prop];var dB=b[prop];dA=dA?(new Date(dA)):0;dB=dB?(new Date(dB)):0;return dB-dA;};}
-else
-{if(order=="ascending")
-sortfunc=function(a,b){a=a[prop];b=b[prop];if(a==undefined||b==undefined)
-return(a==b)?0:(a?1:-1);var tA=a.toString();var tB=b.toString();var tA_l=tA.toLowerCase();var tB_l=tB.toLowerCase();var min_len=tA.length>tB.length?tB.length:tA.length;for(var i=0;i<min_len;i++)
-{var a_l_c=tA_l.charAt(i);var b_l_c=tB_l.charAt(i);var a_c=tA.charAt(i);var b_c=tB.charAt(i);if(a_l_c>b_l_c)
-return 1;else if(a_l_c<b_l_c)
-return-1;else if(a_c>b_c)
-return 1;else if(a_c<b_c)
-return-1;}
-if(tA.length==tB.length)
-return 0;else if(tA.length>tB.length)
-return 1;return-1;};else
-sortfunc=function(a,b){a=a[prop];b=b[prop];if(a==undefined||b==undefined)
-return(a==b)?0:(a?-1:1);var tA=a.toString();var tB=b.toString();var tA_l=tA.toLowerCase();var tB_l=tB.toLowerCase();var min_len=tA.length>tB.length?tB.length:tA.length;for(var i=0;i<min_len;i++)
-{var a_l_c=tA_l.charAt(i);var b_l_c=tB_l.charAt(i);var a_c=tA.charAt(i);var b_c=tB.charAt(i);if(a_l_c>b_l_c)
-return-1;else if(a_l_c<b_l_c)
-return 1;else if(a_c>b_c)
-return-1;else if(a_c<b_c)
-return 1;}
-if(tA.length==tB.length)
-return 0;else if(tA.length>tB.length)
-return-1;return 1;};}
-return sortfunc;};Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc=function(funcA,funcB)
-{return function(a,b)
-{var ret=funcA(a,b);if(ret==0)
-ret=funcB(a,b);return ret;};};Spry.Data.DataSet.prototype.filterData=function(filterFunc,filterOnly)
-{var dataChanged=false;if(!filterFunc)
-{this.filterDataFunc=null;dataChanged=true;}
-else
-{this.filterDataFunc=filterFunc;if(this.dataWasLoaded&&((this.unfilteredData&&this.unfilteredData.length)||(this.data&&this.data.length)))
-{if(this.unfilteredData)
-{this.data=this.unfilteredData;this.unfilteredData=null;}
-var oldData=this.data;this.data=[];this.dataHash={};for(var i=0;i<oldData.length;i++)
-{var newRow=filterFunc(this,oldData[i],i);if(newRow)
-{this.data.push(newRow);this.dataHash[newRow["ds_RowID"]]=newRow;}}
-dataChanged=true;}}
-if(dataChanged)
-{if(!filterOnly)
-{this.disableNotifications();if(this.filterFunc)
-this.filter(this.filterFunc,true);this.enableNotifications();}
-this.notifyObservers("onDataChanged");}};Spry.Data.DataSet.prototype.filter=function(filterFunc,filterOnly)
-{var dataChanged=false;if(!filterFunc)
-{if(this.filterFunc&&this.unfilteredData)
-{this.data=this.unfilteredData;this.unfilteredData=null;this.filterFunc=null;dataChanged=true;}}
-else
-{this.filterFunc=filterFunc;if(this.dataWasLoaded&&(this.unfilteredData||(this.data&&this.data.length)))
-{if(!this.unfilteredData)
-this.unfilteredData=this.data;var udata=this.unfilteredData;this.data=[];for(var i=0;i<udata.length;i++)
-{var newRow=filterFunc(this,udata[i],i);if(newRow)
-this.data.push(newRow);}
-dataChanged=true;}}
-if(dataChanged)
-this.notifyObservers("onDataChanged");};Spry.Data.DataSet.prototype.startLoadInterval=function(interval)
-{this.stopLoadInterval();if(interval>0)
-{var self=this;this.loadInterval=interval;this.loadIntervalID=setInterval(function(){self.loadData();},interval);}};Spry.Data.DataSet.prototype.stopLoadInterval=function()
-{if(this.loadIntervalID)
-clearInterval(this.loadIntervalID);this.loadInterval=0;this.loadIntervalID=null;};Spry.Data.DataSet.nextDataSetID=0;Spry.Data.HTTPSourceDataSet=function(dataSetURL,dataSetOptions)
-{Spry.Data.DataSet.call(this);this.url=dataSetURL;this.dataSetsForDataRefStrings=new Array;this.hasDataRefStrings=false;this.useCache=true;this.setRequestInfo(dataSetOptions,true);Spry.Utils.setOptions(this,dataSetOptions,true);this.recalculateDataSetDependencies();if(this.loadInterval>0)
-this.startLoadInterval(this.loadInterval);};Spry.Data.HTTPSourceDataSet.prototype=new Spry.Data.DataSet();Spry.Data.HTTPSourceDataSet.prototype.constructor=Spry.Data.HTTPSourceDataSet;Spry.Data.HTTPSourceDataSet.prototype.setRequestInfo=function(requestInfo,undefineRequestProps)
-{this.requestInfo=new Spry.Utils.loadURL.Request();this.requestInfo.extractRequestOptions(requestInfo,undefineRequestProps);if(this.requestInfo.method=="POST")
-{if(!this.requestInfo.headers)
-this.requestInfo.headers={};if(!this.requestInfo.headers['Content-Type'])
-this.requestInfo.headers['Content-Type']="application/x-www-form-urlencoded; charset=UTF-8";}};Spry.Data.HTTPSourceDataSet.prototype.recalculateDataSetDependencies=function()
-{this.hasDataRefStrings=false;var i=0;for(i=0;i<this.dataSetsForDataRefStrings.length;i++)
-{var ds=this.dataSetsForDataRefStrings[i];if(ds)
-ds.removeObserver(this);}
-this.dataSetsForDataRefStrings=new Array();var regionStrs=this.getDataRefStrings();var dsCount=0;for(var n=0;n<regionStrs.length;n++)
-{var tokens=Spry.Data.Region.getTokensFromStr(regionStrs[n]);for(i=0;tokens&&i<tokens.length;i++)
-{if(tokens[i].search(/{[^}:]+::[^}]+}/)!=-1)
-{var dsName=tokens[i].replace(/^\{|::.*\}/g,"");var ds=null;if(!this.dataSetsForDataRefStrings[dsName])
-{ds=Spry.Data.getDataSetByName(dsName);if(dsName&&ds)
-{this.dataSetsForDataRefStrings[dsName]=ds;this.dataSetsForDataRefStrings[dsCount++]=ds;this.hasDataRefStrings=true;}}}}}
-for(i=0;i<this.dataSetsForDataRefStrings.length;i++)
-{var ds=this.dataSetsForDataRefStrings[i];ds.addObserver(this);}};Spry.Data.HTTPSourceDataSet.prototype.getDataRefStrings=function()
-{var strArr=[];if(this.url)strArr.push(this.url);if(this.requestInfo&&this.requestInfo.postData)strArr.push(this.requestInfo.postData);return strArr;};Spry.Data.HTTPSourceDataSet.prototype.attemptLoadData=function()
-{for(var i=0;i<this.dataSetsForDataRefStrings.length;i++)
-{var ds=this.dataSetsForDataRefStrings[i];if(ds.getLoadDataRequestIsPending()||!ds.getDataWasLoaded())
-return;}
-this.loadData();};Spry.Data.HTTPSourceDataSet.prototype.onCurrentRowChanged=function(ds,data)
-{this.attemptLoadData();};Spry.Data.HTTPSourceDataSet.prototype.onPostSort=function(ds,data)
-{this.attemptLoadData();};Spry.Data.HTTPSourceDataSet.prototype.onDataChanged=function(ds,data)
-{this.attemptLoadData();};Spry.Data.HTTPSourceDataSet.prototype.loadData=function()
-{if(!this.url)
-return;this.cancelLoadData();var url=this.url;var postData=this.requestInfo.postData;if(this.hasDataRefStrings)
-{var allDataSetsReady=true;for(var i=0;i<this.dataSetsForDataRefStrings.length;i++)
-{var ds=this.dataSetsForDataRefStrings[i];if(ds.getLoadDataRequestIsPending())
-allDataSetsReady=false;else if(!ds.getDataWasLoaded())
-{ds.loadData();allDataSetsReady=false;}}
-if(!allDataSetsReady)
-return;url=Spry.Data.Region.processDataRefString(null,this.url,this.dataSetsForDataRefStrings);if(!url)
-return;if(postData&&(typeof postData)=="string")
-postData=Spry.Data.Region.processDataRefString(null,postData,this.dataSetsForDataRefStrings);}
-this.notifyObservers("onPreLoad");this.data=null;this.dataWasLoaded=false;this.unfilteredData=null;this.dataHash=null;this.curRowID=0;var req=this.requestInfo.clone();req.url=url;req.postData=postData;this.pendingRequest=new Object;this.pendingRequest.data=Spry.Data.HTTPSourceDataSet.LoadManager.loadData(req,this,this.useCache);};Spry.Data.HTTPSourceDataSet.prototype.cancelLoadData=function()
-{if(this.pendingRequest)
-{Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,this);this.pendingRequest=null;}};Spry.Data.HTTPSourceDataSet.prototype.getURL=function(){return this.url;};Spry.Data.HTTPSourceDataSet.prototype.setURL=function(url,requestOptions)
-{if(this.url==url)
-{if(!requestOptions||(this.requestInfo.method==requestOptions.method&&(requestOptions.method!="POST"||this.requestInfo.postData==requestOptions.postData)))
-return;}
-this.url=url;this.setRequestInfo(requestOptions);this.cancelLoadData();this.recalculateDataSetDependencies();this.dataWasLoaded=false;};Spry.Data.HTTPSourceDataSet.prototype.setDataFromDoc=function(rawDataDoc)
-{this.pendingRequest=null;this.loadDataIntoDataSet(rawDataDoc);this.applyColumnTypes();this.disableNotifications();this.filterAndSortData();this.enableNotifications();this.notifyObservers("onPostLoad");this.notifyObservers("onDataChanged");};Spry.Data.HTTPSourceDataSet.prototype.loadDataIntoDataSet=function(rawDataDoc)
-{this.dataHash=new Object;this.data=new Array;this.dataWasLoaded=true;};Spry.Data.HTTPSourceDataSet.prototype.xhRequestProcessor=function(xhRequest)
-{var resp=xhRequest.responseText;if(xhRequest.status==200||xhRequest.status==0)
-return resp;return null;};Spry.Data.HTTPSourceDataSet.prototype.sessionExpiredChecker=function(req)
-{if(req.xhRequest.responseText=='session expired')
-return true;return false;};Spry.Data.HTTPSourceDataSet.prototype.setSessionExpiredChecker=function(checker)
-{this.sessionExpiredChecker=checker;};Spry.Data.HTTPSourceDataSet.prototype.onRequestResponse=function(cachedRequest,req)
-{this.setDataFromDoc(cachedRequest.rawData);};Spry.Data.HTTPSourceDataSet.prototype.onRequestError=function(cachedRequest,req)
-{this.notifyObservers("onLoadError",req);};Spry.Data.HTTPSourceDataSet.prototype.onRequestSessionExpired=function(cachedRequest,req)
-{this.notifyObservers("onSessionExpired",req);};Spry.Data.HTTPSourceDataSet.LoadManager={};Spry.Data.HTTPSourceDataSet.LoadManager.cache=[];Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest=function(reqInfo,xhRequestProcessor,sessionExpiredChecker)
-{Spry.Utils.Notifier.call(this);this.reqInfo=reqInfo;this.rawData=null;this.timer=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED;this.xhRequestProcessor=xhRequestProcessor;this.sessionExpiredChecker=sessionExpiredChecker;};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype=new Spry.Utils.Notifier();Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.constructor=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED=1;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED=2;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED=3;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL=4;Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=function(req)
-{if(req.xhRequest.readyState!=4)
-return;var rawData=null;if(this.xhRequestProcessor)rawData=this.xhRequestProcessor(req.xhRequest);if(this.sessionExpiredChecker)
-{Spry.Utils.setOptions(req,{'rawData':rawData},false);if(this.sessionExpiredChecker(req))
-{this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestSessionExpired",req);this.observers.length=0;return;}}
-if(!rawData)
-{this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_FAILED;this.notifyObservers("onRequestError",req);this.observers.length=0;return;}
-this.rawData=rawData;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;this.notifyObservers("onRequestResponse",req);this.observers.length=0;};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.loadData=function()
-{var self=this;this.cancelLoadData();this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;var reqInfo=this.reqInfo.clone();reqInfo.successCallback=function(req){self.loadDataCallback(req);};reqInfo.errorCallback=reqInfo.successCallback;this.timer=setTimeout(function()
-{self.timer=null;Spry.Utils.loadURL(reqInfo.method,reqInfo.url,reqInfo.async,reqInfo.successCallback,reqInfo);},0);};Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.prototype.cancelLoadData=function()
-{if(this.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)
-{if(this.timer)
-{this.timer.clearTimeout();this.timer=null;}
-this.rawData=null;this.state=Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.NOT_LOADED;}};Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey=function(reqInfo)
-{return reqInfo.method+"::"+reqInfo.url+"::"+reqInfo.postData+"::"+reqInfo.username;};Spry.Data.HTTPSourceDataSet.LoadManager.loadData=function(reqInfo,ds,useCache)
-{if(!reqInfo)
-return null;var cacheObj=null;var cacheKey=null;if(useCache)
-{cacheKey=Spry.Data.HTTPSourceDataSet.LoadManager.getCacheKey(reqInfo);cacheObj=Spry.Data.HTTPSourceDataSet.LoadManager.cache[cacheKey];}
-if(cacheObj)
-{if(cacheObj.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)
-{if(ds)
-cacheObj.addObserver(ds);return cacheObj;}
-else if(cacheObj.state==Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL)
-{if(ds)
-setTimeout(function(){ds.setDataFromDoc(cacheObj.rawData);},0);return cacheObj;}}
-if(!cacheObj)
-{cacheObj=new Spry.Data.HTTPSourceDataSet.LoadManager.CachedRequest(reqInfo,(ds?ds.xhRequestProcessor:null),(ds?ds.sessionExpiredChecker:null));if(useCache)
-{Spry.Data.HTTPSourceDataSet.LoadManager.cache[cacheKey]=cacheObj;cacheObj.addObserver({onRequestError:function(){Spry.Data.HTTPSourceDataSet.LoadManager.cache[cacheKey]=undefined;}});}}
-if(ds)
-cacheObj.addObserver(ds);cacheObj.loadData();return cacheObj;};Spry.Data.HTTPSourceDataSet.LoadManager.cancelLoadData=function(cacheObj,ds)
-{if(cacheObj)
-{if(ds)
-cacheObj.removeObserver(ds);else
-cacheObj.cancelLoadData();}};Spry.Data.XMLDataSet=function(dataSetURL,dataSetPath,dataSetOptions)
-{this.xpath=dataSetPath;this.doc=null;this.subPaths=[];this.entityEncodeStrings=true;Spry.Data.HTTPSourceDataSet.call(this,dataSetURL,dataSetOptions);var jwType=typeof this.subPaths;if(jwType=="string"||(jwType=="object"&&this.subPaths.constructor!=Array))
-this.subPaths=[this.subPaths];};Spry.Data.XMLDataSet.prototype=new Spry.Data.HTTPSourceDataSet();Spry.Data.XMLDataSet.prototype.constructor=Spry.Data.XMLDataSet;Spry.Data.XMLDataSet.prototype.getDataRefStrings=function()
-{var strArr=[];if(this.url)strArr.push(this.url);if(this.xpath)strArr.push(this.xpath);if(this.requestInfo&&this.requestInfo.postData)strArr.push(this.requestInfo.postData);return strArr;};Spry.Data.XMLDataSet.prototype.getDocument=function(){return this.doc;};Spry.Data.XMLDataSet.prototype.getXPath=function(){return this.xpath;};Spry.Data.XMLDataSet.prototype.setXPath=function(path)
-{if(this.xpath!=path)
-{this.xpath=path;if(this.dataWasLoaded&&this.doc)
-{this.notifyObservers("onPreLoad");this.setDataFromDoc(this.doc);}}};Spry.Data.XMLDataSet.nodeContainsElementNode=function(node)
-{if(node)
-{node=node.firstChild;while(node)
-{if(node.nodeType==1)
-return true;node=node.nextSibling;}}
-return false;};Spry.Data.XMLDataSet.getNodeText=function(node,encodeText,encodeCData)
-{var txt="";if(!node)
-return;try
-{var child=node.firstChild;while(child)
-{try
-{if(child.nodeType==3)
-txt+=encodeText?Spry.Utils.encodeEntities(child.data):child.data;else if(child.nodeType==4)
-txt+=encodeCData?Spry.Utils.encodeEntities(child.data):child.data;}catch(e){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+e+"\n");}
-child=child.nextSibling;}}
-catch(e){Spry.Debug.reportError("Spry.Data.XMLDataSet.getNodeText() exception caught: "+e+"\n");}
-return txt;};Spry.Data.XMLDataSet.createObjectForNode=function(node,encodeText,encodeCData)
-{if(!node)
-return null;var obj=new Object();var i=0;var attr=null;try
-{for(i=0;i<node.attributes.length;i++)
-{attr=node.attributes[i];if(attr&&attr.nodeType==2)
-obj["@"+attr.name]=attr.value;}}
-catch(e)
-{Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+e+"\n");}
-var child=node.firstChild;if(child&&!child.nextSibling&&child.nodeType!=1)
-{obj[node.nodeName]=Spry.Data.XMLDataSet.getNodeText(node,encodeText,encodeCData);}
-while(child)
-{if(child.nodeType==1)
-{if(!Spry.Data.XMLDataSet.nodeContainsElementNode(child))
-{obj[child.nodeName]=Spry.Data.XMLDataSet.getNodeText(child,encodeText,encodeCData);try
-{var namePrefix=child.nodeName+"/@";for(i=0;i<child.attributes.length;i++)
-{attr=child.attributes[i];if(attr&&attr.nodeType==2)
-obj[namePrefix+attr.name]=attr.value;}}
-catch(e)
-{Spry.Debug.reportError("Spry.Data.XMLDataSet.createObjectForNode() caught exception while accessing attributes: "+e+"\n");}}}
-child=child.nextSibling;}
-return obj;};Spry.Data.XMLDataSet.getRecordSetFromXMLDoc=function(xmlDoc,path,suppressColumns,entityEncodeStrings)
-{if(!xmlDoc||!path)
-return null;var recordSet=new Object();recordSet.xmlDoc=xmlDoc;recordSet.xmlPath=path;recordSet.dataHash=new Object;recordSet.data=new Array;recordSet.getData=function(){return this.data;};var ctx=new ExprContext(xmlDoc);var pathExpr=xpathParse(path);var e=pathExpr.evaluate(ctx);var nodeArray=e.nodeSetValue();var isDOMNodeArray=true;if(nodeArray&&nodeArray.length>0)
-isDOMNodeArray=nodeArray[0].nodeType!=2;var nextID=0;var encodeText=true;var encodeCData=false;if(typeof entityEncodeStrings=="boolean")
-encodeText=encodeCData=entityEncodeStrings;for(var i=0;i<nodeArray.length;i++)
-{var rowObj=null;if(suppressColumns)
-rowObj=new Object;else
-{if(isDOMNodeArray)
-rowObj=Spry.Data.XMLDataSet.createObjectForNode(nodeArray[i],encodeText,encodeCData);else
-{rowObj=new Object;rowObj["@"+nodeArray[i].name]=nodeArray[i].value;}}
-if(rowObj)
-{rowObj['ds_RowID']=nextID++;rowObj['ds_XMLNode']=nodeArray[i];recordSet.dataHash[rowObj['ds_RowID']]=rowObj;recordSet.data.push(rowObj);}}
-return recordSet;};Spry.Data.XMLDataSet.PathNode=function(path)
-{this.path=path;this.subPaths=[];this.xpath="";};Spry.Data.XMLDataSet.PathNode.prototype.addSubPath=function(path)
-{var node=this.findSubPath(path);if(!node)
-{node=new Spry.Data.XMLDataSet.PathNode(path);this.subPaths.push(node);}
-return node;};Spry.Data.XMLDataSet.PathNode.prototype.findSubPath=function(path)
-{var numSubPaths=this.subPaths.length;for(var i=0;i<numSubPaths;i++)
-{var subPath=this.subPaths[i];if(path==subPath.path)
-return subPath;}
-return null;};Spry.Data.XMLDataSet.PathNode.prototype.consolidate=function()
-{var numSubPaths=this.subPaths.length;if(!this.xpath&&numSubPaths==1)
-{var subPath=this.subPaths[0];this.path+=((subPath[0]!="/")?"/":"")+subPath.path;this.xpath=subPath.xpath;this.subPaths=subPath.subPaths;this.consolidate();return;}
-for(var i=0;i<numSubPaths;i++)
-this.subPaths[i].consolidate();};Spry.Data.XMLDataSet.prototype.convertXPathsToPathTree=function(xpathArray)
-{var xpaLen=xpathArray.length;var root=new Spry.Data.XMLDataSet.PathNode("");for(var i=0;i<xpaLen;i++)
-{var xpath=xpathArray[i];var cleanXPath=xpath.replace(/\/\//g,"/__SPRYDS__");cleanXPath=cleanXPath.replace(/^\//,"");var pathItems=cleanXPath.split(/\//);var pathItemsLen=pathItems.length;var node=root;for(var j=0;j<pathItemsLen;j++)
-{var path=pathItems[j].replace(/__SPRYDS__/,"//");node=node.addSubPath(path);}
-node.xpath=xpath;}
-root.consolidate();return root;};Spry.Data.XMLDataSet.prototype.flattenSubPaths=function(rs,subPaths)
-{if(!rs||!subPaths)
-return;var numSubPaths=subPaths.length;if(numSubPaths<1)
-return;var data=rs.data;var dataHash={};var xpathArray=[];var cleanedXPathArray=[];for(var i=0;i<numSubPaths;i++)
-{var subPath=subPaths[i];if(typeof subPath=="object")
-subPath=subPath.path;if(!subPath)
-subPath="";xpathArray[i]=Spry.Data.Region.processDataRefString(null,subPath,this.dataSetsForDataRefStrings);cleanedXPathArray[i]=xpathArray[i].replace(/\[.*\]/g,"");}
-var row;var numRows=data.length;var newData=[];for(var i=0;i<numRows;i++)
-{row=data[i];var newRows=[row];for(var j=0;j<numSubPaths;j++)
-{var newRS=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(row.ds_XMLNode,xpathArray[j],(subPaths[j].xpath?false:true),this.entityEncodeStrings);if(newRS&&newRS.data&&newRS.data.length)
-{if(typeof subPaths[j]=="object"&&subPaths[j].subPaths)
-{var sp=subPaths[j].subPaths;spType=typeof sp;if(spType=="string")
-sp=[sp];else if(spType=="object"&&spType.constructor==Object)
-sp=[sp];this.flattenSubPaths(newRS,sp);}
-var newRSData=newRS.data;var numRSRows=newRSData.length;var cleanedXPath=cleanedXPathArray[j]+"/";var numNewRows=newRows.length;var joinedRows=[];for(var k=0;k<numNewRows;k++)
-{var newRow=newRows[k];for(var l=0;l<numRSRows;l++)
-{var newRowObj=new Object;var newRSRow=newRSData[l];for(prop in newRow)
-newRowObj[prop]=newRow[prop];for(var prop in newRSRow)
-{var newPropName=cleanedXPath+prop;if(cleanedXPath==(prop+"/")||cleanedXPath.search(new RegExp("\\/"+prop+"\\/$"))!=-1)
-newPropName=cleanedXPathArray[j];newRowObj[newPropName]=newRSRow[prop];}
-joinedRows.push(newRowObj);}}
-newRows=joinedRows;}}
-newData=newData.concat(newRows);}
-data=newData;numRows=data.length;for(i=0;i<numRows;i++)
-{row=data[i];row.ds_RowID=i;dataHash[row.ds_RowID]=row;}
-rs.data=data;rs.dataHash=dataHash;};Spry.Data.XMLDataSet.prototype.loadDataIntoDataSet=function(rawDataDoc)
-{var rs=null;var mainXPath=Spry.Data.Region.processDataRefString(null,this.xpath,this.dataSetsForDataRefStrings);var subPaths=this.subPaths;var suppressColumns=false;if(this.subPaths&&this.subPaths.length>0)
-{var processedSubPaths=[];var numSubPaths=subPaths.length;for(var i=0;i<numSubPaths;i++)
-{var subPathStr=Spry.Data.Region.processDataRefString(null,subPaths[i],this.dataSetsForDataRefStrings);if(subPathStr.charAt(0)!='/')
-subPathStr=mainXPath+"/"+subPathStr;processedSubPaths.push(subPathStr);}
-processedSubPaths.unshift(mainXPath);var commonParent=this.convertXPathsToPathTree(processedSubPaths);mainXPath=commonParent.path;subPaths=commonParent.subPaths;suppressColumns=commonParent.xpath?false:true;}
-rs=Spry.Data.XMLDataSet.getRecordSetFromXMLDoc(rawDataDoc,mainXPath,suppressColumns,this.entityEncodeStrings);if(!rs)
-{Spry.Debug.reportError("Spry.Data.XMLDataSet.loadDataIntoDataSet() failed to create dataSet '"+this.name+"'for '"+this.xpath+"' - "+this.url+"\n");return;}
-this.flattenSubPaths(rs,subPaths);this.doc=rs.xmlDoc;this.data=rs.data;this.dataHash=rs.dataHash;this.dataWasLoaded=(this.doc!=null);};Spry.Data.XMLDataSet.prototype.xhRequestProcessor=function(xhRequest)
-{var resp=xhRequest.responseXML;var manualParseRequired=false;if(xhRequest.status!=200)
-{if(xhRequest.status==0)
-{if(xhRequest.responseText&&(!resp||!resp.firstChild))
-manualParseRequired=true;}}
-else if(!resp)
-{manualParseRequired=true;}
-if(manualParseRequired)
-resp=Spry.Utils.stringToXMLDoc(xhRequest.responseText);if(!resp||!resp.firstChild||resp.firstChild.nodeName=="parsererror")
-return null;return resp;};Spry.Data.XMLDataSet.prototype.sessionExpiredChecker=function(req)
-{if(req.xhRequest.responseText=='session expired')
-return true;else
-{if(req.rawData)
-{var firstChild=req.rawData.documentElement.firstChild;if(firstChild&&firstChild.nodeValue=="session expired")
-return true;}}
-return false;};Spry.Data.Region=function(regionNode,name,isDetailRegion,data,dataSets,regionStates,regionStateMap,hasBehaviorAttributes)
-{this.regionNode=regionNode;this.name=name;this.isDetailRegion=isDetailRegion;this.data=data;this.dataSets=dataSets;this.hasBehaviorAttributes=hasBehaviorAttributes;this.tokens=null;this.currentState=null;this.states={ready:true};this.stateMap={};Spry.Utils.setOptions(this.states,regionStates);Spry.Utils.setOptions(this.stateMap,regionStateMap);for(var i=0;i<this.dataSets.length;i++)
-{var ds=this.dataSets[i];try
-{if(ds)
-ds.addObserver(this);}
-catch(e){Spry.Debug.reportError("Failed to add '"+this.name+"' as a dataSet observer!\n");}}};Spry.Data.Region.hiddenRegionClassName="SpryHiddenRegion";Spry.Data.Region.evenRowClassName="even";Spry.Data.Region.oddRowClassName="odd";Spry.Data.Region.notifiers={};Spry.Data.Region.evalScripts=true;Spry.Data.Region.addObserver=function(regionID,observer)
-{var n=Spry.Data.Region.notifiers[regionID];if(!n)
-{n=new Spry.Utils.Notifier();Spry.Data.Region.notifiers[regionID]=n;}
-n.addObserver(observer);};Spry.Data.Region.removeObserver=function(regionID,observer)
-{var n=Spry.Data.Region.notifiers[regionID];if(n)
-n.removeObserver(observer);};Spry.Data.Region.notifyObservers=function(methodName,region,data)
-{var n=Spry.Data.Region.notifiers[region.name];if(n)
-{var dataObj={};if(data&&typeof data=="object")
-dataObj=data;else
-dataObj.data=data;dataObj.region=region;dataObj.regionID=region.name;dataObj.regionNode=region.regionNode;n.notifyObservers(methodName,dataObj);}};Spry.Data.Region.RS_Error=0x01;Spry.Data.Region.RS_LoadingData=0x02;Spry.Data.Region.RS_PreUpdate=0x04;Spry.Data.Region.RS_PostUpdate=0x08;Spry.Data.Region.prototype.getState=function()
-{return this.currentState;};Spry.Data.Region.prototype.mapState=function(stateName,newStateName)
-{this.stateMap[stateName]=newStateName;};Spry.Data.Region.prototype.getMappedState=function(stateName)
-{var mappedState=this.stateMap[stateName];return mappedState?mappedState:stateName;};Spry.Data.Region.prototype.setState=function(stateName,suppressNotfications)
-{var stateObj={state:stateName,mappedState:this.getMappedState(stateName)};if(!suppressNotfications)
-Spry.Data.Region.notifyObservers("onPreStateChange",this,stateObj);this.currentState=stateObj.mappedState?stateObj.mappedState:stateName;if(this.states[stateName])
-{var notificationData={state:this.currentState};if(!suppressNotfications)
-Spry.Data.Region.notifyObservers("onPreUpdate",this,notificationData);var str=this.transform();if(Spry.Data.Region.debug)
-Spry.Debug.trace("<hr />Generated region markup for '"+this.name+"':<br /><br />"+Spry.Utils.encodeEntities(str));Spry.Utils.setInnerHTML(this.regionNode,str,!Spry.Data.Region.evalScripts);if(this.hasBehaviorAttributes)
-this.attachBehaviors();if(!suppressNotfications)
-Spry.Data.Region.notifyObservers("onPostUpdate",this,notificationData);}
-if(!suppressNotfications)
-Spry.Data.Region.notifyObservers("onPostStateChange",this,stateObj);};Spry.Data.Region.prototype.getDataSets=function()
-{return this.dataSets;};Spry.Data.Region.prototype.addDataSet=function(aDataSet)
-{if(!aDataSet)
-return;if(!this.dataSets)
-this.dataSets=new Array;for(var i=0;i<this.dataSets.length;i++)
-{if(this.dataSets[i]==aDataSet)
-return;}
-this.dataSets.push(aDataSet);aDataSet.addObserver(this);};Spry.Data.Region.prototype.removeDataSet=function(aDataSet)
-{if(!aDataSet||this.dataSets)
-return;for(var i=0;i<this.dataSets.length;i++)
-{if(this.dataSets[i]==aDataSet)
-{this.dataSets.splice(i,1);aDataSet.removeObserver(this);return;}}};Spry.Data.Region.prototype.onPreLoad=function(dataSet)
-{if(this.currentState!="loading")
-this.setState("loading");};Spry.Data.Region.prototype.onLoadError=function(dataSet)
-{if(this.currentState!="error")
-this.setState("error");Spry.Data.Region.notifyObservers("onError",this);};Spry.Data.Region.prototype.onSessionExpired=function(dataSet)
-{if(this.currentState!="expired")
-this.setState("expired");Spry.Data.Region.notifyObservers("onExpired",this);};Spry.Data.Region.prototype.onCurrentRowChanged=function(dataSet,data)
-{if(this.isDetailRegion)
-this.updateContent();};Spry.Data.Region.prototype.onPostSort=function(dataSet,data)
-{this.updateContent();};Spry.Data.Region.prototype.onDataChanged=function(dataSet,data)
-{this.updateContent();};Spry.Data.Region.enableBehaviorAttributes=true;Spry.Data.Region.behaviorAttrs={};Spry.Data.Region.behaviorAttrs["spry:select"]={attach:function(rgn,node,value)
-{var selectGroupName=null;try{selectGroupName=node.attributes.getNamedItem("spry:selectgroup").value;}catch(e){}
-if(!selectGroupName)
-selectGroupName="default";Spry.Utils.addEventListener(node,"click",function(event){Spry.Utils.SelectionManager.select(selectGroupName,node,value);},false);if(node.attributes.getNamedItem("spry:selected"))
-Spry.Utils.SelectionManager.select(selectGroupName,node,value);}};Spry.Data.Region.behaviorAttrs["spry:hover"]={attach:function(rgn,node,value)
-{Spry.Utils.addEventListener(node,"mouseover",function(event){Spry.Utils.addClassName(node,value);},false);Spry.Utils.addEventListener(node,"mouseout",function(event){Spry.Utils.removeClassName(node,value);},false);}};Spry.Data.Region.setUpRowNumberForEvenOddAttr=function(node,attr,value,rowNumAttrName)
-{if(!value)
-{Spry.Debug.showError("The "+attr+" attribute requires a CSS class name as its value!");node.attributes.removeNamedItem(attr);return;}
-var dsName="";var valArr=value.split(/\s/);if(valArr.length>1)
-{dsName=valArr[0];node.setAttribute(attr,valArr[1]);}
-node.setAttribute(rowNumAttrName,"{"+(dsName?(dsName+"::"):"")+"ds_RowNumber}");};Spry.Data.Region.behaviorAttrs["spry:even"]={setup:function(node,value)
-{Spry.Data.Region.setUpRowNumberForEvenOddAttr(node,"spry:even",value,"spryevenrownumber");},attach:function(rgn,node,value)
-{if(value)
-{rowNumAttr=node.attributes.getNamedItem("spryevenrownumber");if(rowNumAttr&&rowNumAttr.value)
-{var rowNum=parseInt(rowNumAttr.value);if(rowNum%2)
-Spry.Utils.addClassName(node,value);}}
-node.removeAttribute("spry:even");node.removeAttribute("spryevenrownumber");}};Spry.Data.Region.behaviorAttrs["spry:odd"]={setup:function(node,value)
-{Spry.Data.Region.setUpRowNumberForEvenOddAttr(node,"spry:odd",value,"spryoddrownumber");},attach:function(rgn,node,value)
-{if(value)
-{rowNumAttr=node.attributes.getNamedItem("spryoddrownumber");if(rowNumAttr&&rowNumAttr.value)
-{var rowNum=parseInt(rowNumAttr.value);if(rowNum%2==0)
-Spry.Utils.addClassName(node,value);}}
-node.removeAttribute("spry:odd");node.removeAttribute("spryoddrownumber");}};Spry.Data.Region.setRowAttrClickHandler=function(node,dsName,rowAttr,funcName)
-{if(dsName)
-{var ds=Spry.Data.getDataSetByName(dsName);if(ds)
-{rowIDAttr=node.attributes.getNamedItem(rowAttr);if(rowIDAttr)
-{var rowAttrVal=rowIDAttr.value;if(rowAttrVal)
-Spry.Utils.addEventListener(node,"click",function(event){ds[funcName](rowAttrVal);},false);}}}};Spry.Data.Region.behaviorAttrs["spry:setrow"]={setup:function(node,value)
-{if(!value)
-{Spry.Debug.reportError("The spry:setrow attribute requires a data set name as its value!");node.removeAttribute("spry:setrow");return;}
-node.setAttribute("spryrowid","{"+value+"::ds_RowID}");},attach:function(rgn,node,value)
-{Spry.Data.Region.setRowAttrClickHandler(node,value,"spryrowid","setCurrentRow");node.removeAttribute("spry:setrow");node.removeAttribute("spryrowid");}};Spry.Data.Region.behaviorAttrs["spry:setrownumber"]={setup:function(node,value)
-{if(!value)
-{Spry.Debug.reportError("The spry:setrownumber attribute requires a data set name as its value!");node.removeAttribute("spry:setrownumber");return;}
-node.setAttribute("spryrownumber","{"+value+"::ds_RowID}");},attach:function(rgn,node,value)
-{Spry.Data.Region.setRowAttrClickHandler(node,value,"spryrownumber","setCurrentRowNumber");node.removeAttribute("spry:setrownumber");node.removeAttribute("spryrownumber");}};Spry.Data.Region.behaviorAttrs["spry:sort"]={attach:function(rgn,node,value)
-{if(!value)
-return;var ds=rgn.getDataSets()[0];var sortOrder="toggle";var colArray=value.split(/\s/);if(colArray.length>1)
-{var specifiedDS=Spry.Data.getDataSetByName(colArray[0]);if(specifiedDS)
-{ds=specifiedDS;colArray.shift();}
-if(colArray.length>1)
-{var str=colArray[colArray.length-1];if(str=="ascending"||str=="descending"||str=="toggle")
-{sortOrder=str;colArray.pop();}}}
-if(ds&&colArray.length>0)
-Spry.Utils.addEventListener(node,"click",function(event){ds.sort(colArray,sortOrder);},false);node.removeAttribute("spry:sort");}};Spry.Data.Region.prototype.attachBehaviors=function()
-{var rgn=this;Spry.Utils.getNodesByFunc(this.regionNode,function(node)
-{if(!node||node.nodeType!=1)
-return false;try
-{var bAttrs=Spry.Data.Region.behaviorAttrs;for(var bAttrName in bAttrs)
-{var attr=node.attributes.getNamedItem(bAttrName);if(attr)
-{var behavior=bAttrs[bAttrName];if(behavior&&behavior.attach)
-behavior.attach(rgn,node,attr.value);}}}catch(e){}
-return false;});};Spry.Data.Region.prototype.updateContent=function()
-{var allDataSetsReady=true;var dsArray=this.getDataSets();if(!dsArray||dsArray.length<1)
-{Spry.Debug.reportError("updateContent(): Region '"+this.name+"' has no data set!\n");return;}
-for(var i=0;i<dsArray.length;i++)
-{var ds=dsArray[i];if(ds)
-{if(ds.getLoadDataRequestIsPending())
-allDataSetsReady=false;else if(!ds.getDataWasLoaded())
-{ds.loadData();allDataSetsReady=false;}}}
-if(!allDataSetsReady)
-{Spry.Data.Region.notifyObservers("onLoadingData",this);return;}
-this.setState("ready");};Spry.Data.Region.prototype.clearContent=function()
-{this.regionNode.innerHTML="";};Spry.Data.Region.processContentPI=function(inStr)
-{var outStr="";var regexp=/<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;var searchStartIndex=0;var processingContentTag=0;while(inStr.length)
-{var results=regexp.exec(inStr);if(!results||!results[0])
-{outStr+=inStr.substr(searchStartIndex,inStr.length-searchStartIndex);break;}
-if(!processingContentTag&&results.index!=searchStartIndex)
-{outStr+=inStr.substr(searchStartIndex,results.index-searchStartIndex);}
-if(results[0].search(/<\//)!=-1)
-{--processingContentTag;if(processingContentTag)
-Spry.Debug.reportError("Nested spry:content regions are not allowed!\n");}
-else
-{++processingContentTag;var dataRefStr=results[0].replace(/.*\bdataref="/,"");outStr+=dataRefStr.replace(/".*$/,"");}
-searchStartIndex=regexp.lastIndex;}
-return outStr;};Spry.Data.Region.prototype.tokenizeData=function(dataStr)
-{if(!dataStr)
-return null;var rootToken=new Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN,null,null,null);var tokenStack=new Array;var parseStr=Spry.Data.Region.processContentPI(dataStr);tokenStack.push(rootToken);var regexp=/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\}|%7[dD]))/mg;var searchStartIndex=0;while(parseStr.length)
-{var results=regexp.exec(parseStr);var token=null;if(!results||!results[0])
-{var str=parseStr.substr(searchStartIndex,parseStr.length-searchStartIndex);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,str,str);tokenStack[tokenStack.length-1].addChild(token);break;}
-if(results.index!=searchStartIndex)
-{var str=parseStr.substr(searchStartIndex,results.index-searchStartIndex);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN,null,str,str);tokenStack[tokenStack.length-1].addChild(token);}
-if(results[0].search(/^({|%7[bB])/)!=-1)
-{var valueName=results[0];var regionStr=results[0];valueName=valueName.replace(/^({|%7[bB])/,"");valueName=valueName.replace(/(}|%7[dD])$/,"");var dataSetName=null;var splitArray=valueName.split(/::/);if(splitArray.length>1)
-{dataSetName=splitArray[0];valueName=splitArray[1];}
-regionStr=regionStr.replace(/^%7[bB]/,"{");regionStr=regionStr.replace(/%7[dD]$/,"}");token=new Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN,dataSetName,valueName,new String(regionStr));tokenStack[tokenStack.length-1].addChild(token);}
-else if(results[0].charAt(0)=='<')
-{var piName=results[0].replace(/^(<!--\s*){0,1}<\/?/,"");piName=piName.replace(/>(\s*-->){0,1}|\s.*$/,"");if(results[0].search(/<\//)!=-1)
-{if(tokenStack[tokenStack.length-1].tokenType!=Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)
-{Spry.Debug.reportError("Invalid processing instruction close tag: "+piName+" -- "+results[0]+"\n");return null;}
-tokenStack.pop();}
-else
-{var piDesc=Spry.Data.Region.PI.instructions[piName];if(piDesc)
-{var dataSet=null;var selectedDataSetName="";if(results[0].search(/^.*\bselect=\"/)!=-1)
-{selectedDataSetName=results[0].replace(/^.*\bselect=\"/,"");selectedDataSetName=selectedDataSetName.replace(/".*$/,"");if(selectedDataSetName)
-{dataSet=Spry.Data.getDataSetByName(selectedDataSetName);if(!dataSet)
-{Spry.Debug.reportError("Failed to retrieve data set ("+selectedDataSetName+") for "+piName+"\n");selectedDataSetName="";}}}
-var jsExpr=null;if(results[0].search(/^.*\btest=\"/)!=-1)
-{jsExpr=results[0].replace(/^.*\btest=\"/,"");jsExpr=jsExpr.replace(/".*$/,"");jsExpr=Spry.Utils.decodeEntities(jsExpr);}
-var regionState=null;if(results[0].search(/^.*\bname=\"/)!=-1)
-{regionState=results[0].replace(/^.*\bname=\"/,"");regionState=regionState.replace(/".*$/,"");regionState=Spry.Utils.decodeEntities(regionState);}
-var piData=new Spry.Data.Region.Token.PIData(piName,selectedDataSetName,jsExpr,regionState);token=new Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN,dataSet,piData,new String(results[0]));tokenStack[tokenStack.length-1].addChild(token);tokenStack.push(token);}
-else
-{Spry.Debug.reportError("Unsupported region processing instruction: "+results[0]+"\n");return null;}}}
-else
-{Spry.Debug.reportError("Invalid region token: "+results[0]+"\n");return null;}
-searchStartIndex=regexp.lastIndex;}
-return rootToken;};Spry.Data.Region.prototype.callScriptFunction=function(funcName,processContext)
-{var result=undefined;funcName=funcName.replace(/^\s*\{?\s*function::\s*|\s*\}?\s*$/g,"");var func=Spry.Utils.getObjectByName(funcName);if(func)
-result=func(this.name,function(){return processContext.getValueFromDataSet.apply(processContext,arguments);});return result;};Spry.Data.Region.prototype.evaluateExpression=function(exprStr,processContext)
-{var result=undefined;try
-{if(exprStr.search(/^\s*function::/)!=-1)
-result=this.callScriptFunction(exprStr,processContext);else
-result=Spry.Utils.eval(Spry.Data.Region.processDataRefString(processContext,exprStr,null,true));}
-catch(e)
-{Spry.Debug.trace("Caught exception in Spry.Data.Region.prototype.evaluateExpression() while evaluating: "+Spry.Utils.encodeEntities(exprStr)+"\n    Exception:"+e+"\n");}
-return result;};Spry.Data.Region.prototype.processTokenChildren=function(outputArr,token,processContext)
-{var children=token.children;var len=children.length;for(var i=0;i<len;i++)
-this.processTokens(outputArr,children[i],processContext);};Spry.Data.Region.prototype.processTokens=function(outputArr,token,processContext)
-{var i=0;switch(token.tokenType)
-{case Spry.Data.Region.Token.LIST_TOKEN:this.processTokenChildren(outputArr,token,processContext);break;case Spry.Data.Region.Token.STRING_TOKEN:outputArr.push(token.data);break;case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:if(token.data.name=="spry:repeat")
-{var dataSet=null;if(token.dataSet)
-dataSet=token.dataSet;else
-dataSet=this.dataSets[0];if(dataSet)
-{var dsContext=processContext.getDataSetContext(dataSet);if(!dsContext)
-{Spry.Debug.reportError("processTokens() failed to get a data set context!\n");break;}
-dsContext.pushState();var dataSetRows=dsContext.getData();var numRows=dataSetRows.length;for(i=0;i<numRows;i++)
-{dsContext.setRowIndex(i);var testVal=true;if(token.data.jsExpr)
-testVal=this.evaluateExpression(token.data.jsExpr,processContext);if(testVal)
-this.processTokenChildren(outputArr,token,processContext);}
-dsContext.popState();}}
-else if(token.data.name=="spry:if")
-{var testVal=true;if(token.data.jsExpr)
-testVal=this.evaluateExpression(token.data.jsExpr,processContext);if(testVal)
-this.processTokenChildren(outputArr,token,processContext);}
-else if(token.data.name=="spry:choose")
-{var defaultChild=null;var childToProcess=null;var testVal=false;var j=0;for(j=0;j<token.children.length;j++)
-{var child=token.children[j];if(child.tokenType==Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)
-{if(child.data.name=="spry:when")
-{if(child.data.jsExpr)
-{testVal=this.evaluateExpression(child.data.jsExpr,processContext);if(testVal)
-{childToProcess=child;break;}}}
-else if(child.data.name=="spry:default")
-defaultChild=child;}}
-if(!childToProcess&&defaultChild)
-childToProcess=defaultChild;if(childToProcess)
-this.processTokenChildren(outputArr,childToProcess,processContext);}
-else if(token.data.name=="spry:state")
-{var testVal=true;if(!token.data.regionState||token.data.regionState==this.currentState)
-this.processTokenChildren(outputArr,token,processContext);}
-else
-{Spry.Debug.reportError("processTokens(): Unknown processing instruction: "+token.data.name+"\n");return"";}
-break;case Spry.Data.Region.Token.VALUE_TOKEN:var dataSet=token.dataSet;var val=undefined;if(dataSet&&dataSet=="function")
-{val=this.callScriptFunction(token.data,processContext);}
-else
-{if(!dataSet&&this.dataSets&&this.dataSets.length>0&&this.dataSets[0])
-{dataSet=this.dataSets[0];}
-if(!dataSet)
-{Spry.Debug.reportError("processTokens(): Value reference has no data set specified: "+token.regionStr+"\n");return"";}
-val=processContext.getValueFromDataSet(dataSet,token.data);}
-if(typeof val!="undefined")
-outputArr.push(val+"");break;default:Spry.Debug.reportError("processTokens(): Invalid token type: "+token.regionStr+"\n");break;}};Spry.Data.Region.prototype.transform=function()
-{if(this.data&&!this.tokens)
-this.tokens=this.tokenizeData(this.data);if(!this.tokens)
-return"";processContext=new Spry.Data.Region.ProcessingContext(this);if(!processContext)
-return"";var outputArr=[""];this.processTokens(outputArr,this.tokens,processContext);return outputArr.join("");};Spry.Data.Region.PI={};Spry.Data.Region.PI.instructions={};Spry.Data.Region.PI.buildOpenTagForValueAttr=function(ele,piName,attrName)
-{if(!ele||!piName)
-return"";var jsExpr="";try
-{var testAttr=ele.attributes.getNamedItem(piName);if(testAttr&&testAttr.value)
-jsExpr=Spry.Utils.encodeEntities(testAttr.value);}
-catch(e){jsExpr="";}
-if(!jsExpr)
-{Spry.Debug.reportError(piName+" attribute requires a JavaScript expression that returns true or false!\n");return"";}
-return"<"+Spry.Data.Region.PI.instructions[piName].tagName+" "+attrName+"=\""+jsExpr+"\">";};Spry.Data.Region.PI.buildOpenTagForTest=function(ele,piName)
-{return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele,piName,"test");};Spry.Data.Region.PI.buildOpenTagForState=function(ele,piName)
-{return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele,piName,"name");};Spry.Data.Region.PI.buildOpenTagForRepeat=function(ele,piName)
-{if(!ele||!piName)
-return"";var selectAttrStr="";try
-{var selectAttr=ele.attributes.getNamedItem(piName);if(selectAttr&&selectAttr.value)
-{selectAttrStr=selectAttr.value;selectAttrStr=selectAttrStr.replace(/\s/g,"");}}
-catch(e){selectAttrStr="";}
-if(!selectAttrStr)
-{Spry.Debug.reportError(piName+" attribute requires a data set name!\n");return"";}
-var testAttrStr="";try
-{var testAttr=ele.attributes.getNamedItem("spry:test");if(testAttr)
-{if(testAttr.value)
-testAttrStr=" test=\""+Spry.Utils.encodeEntities(testAttr.value)+"\"";ele.attributes.removeNamedItem(testAttr.nodeName);}}
-catch(e){testAttrStr="";}
-return"<"+Spry.Data.Region.PI.instructions[piName].tagName+" select=\""+selectAttrStr+"\""+testAttrStr+">";};Spry.Data.Region.PI.buildOpenTagForContent=function(ele,piName)
-{if(!ele||!piName)
-return"";var dataRefStr="";try
-{var contentAttr=ele.attributes.getNamedItem(piName);if(contentAttr&&contentAttr.value)
-dataRefStr=Spry.Utils.encodeEntities(contentAttr.value);}
-catch(e){dataRefStr="";}
-if(!dataRefStr)
-{Spry.Debug.reportError(piName+" attribute requires a data reference!\n");return"";}
-return"<"+Spry.Data.Region.PI.instructions[piName].tagName+" dataref=\""+dataRefStr+"\">";};Spry.Data.Region.PI.buildOpenTag=function(ele,piName)
-{return"<"+Spry.Data.Region.PI.instructions[piName].tagName+">";};Spry.Data.Region.PI.buildCloseTag=function(ele,piName)
-{return"</"+Spry.Data.Region.PI.instructions[piName].tagName+">";};Spry.Data.Region.PI.instructions["spry:state"]={tagName:"spry:state",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForState,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:if"]={tagName:"spry:if",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeat"]={tagName:"spry:repeat",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:repeatchildren"]={tagName:"spry:repeat",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForRepeat,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:choose"]={tagName:"spry:choose",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:when"]={tagName:"spry:when",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTagForTest,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:default"]={tagName:"spry:default",childrenOnly:false,getOpenTag:Spry.Data.Region.PI.buildOpenTag,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.instructions["spry:content"]={tagName:"spry:content",childrenOnly:true,getOpenTag:Spry.Data.Region.PI.buildOpenTagForContent,getCloseTag:Spry.Data.Region.PI.buildCloseTag};Spry.Data.Region.PI.orderedInstructions=["spry:state","spry:if","spry:repeat","spry:repeatchildren","spry:choose","spry:when","spry:default","spry:content"];Spry.Data.Region.getTokensFromStr=function(str)
-{if(!str)
-return null;return str.match(/{[^}]+}/g);};Spry.Data.Region.processDataRefString=function(processingContext,regionStr,dataSetsToUse,isJSExpr)
-{if(!regionStr)
-return"";if(!processingContext&&!dataSetsToUse)
-return regionStr;var resultStr="";var re=new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}","g");var startSearchIndex=0;while(startSearchIndex<regionStr.length)
-{var reArray=re.exec(regionStr);if(!reArray||!reArray[0])
-{resultStr+=regionStr.substr(startSearchIndex,regionStr.length-startSearchIndex);return resultStr;}
-if(reArray.index!=startSearchIndex)
-resultStr+=regionStr.substr(startSearchIndex,reArray.index-startSearchIndex);var dsName="";if(reArray[0].search(/^\{[^}:]+::/)!=-1)
-dsName=reArray[0].replace(/^\{|::.*/g,"");var fieldName=reArray[0].replace(/^\{|.*::|\}/g,"");var row=null;var val="";if(processingContext)
-val=processingContext.getValueFromDataSet(dsName,fieldName);else
-{var ds=dsName?dataSetsToUse[dsName]:dataSetsToUse[0];if(ds)
-val=ds.getValue(fieldName);}
-if(typeof val!="undefined")
-{val+="";resultStr+=isJSExpr?Spry.Utils.escapeQuotesAndLineBreaks(val):val;}
-if(startSearchIndex==re.lastIndex)
-{var leftOverIndex=reArray.index+reArray[0].length;if(leftOverIndex<regionStr.length)
-resultStr+=regionStr.substr(leftOverIndex);break;}
-startSearchIndex=re.lastIndex;}
-return resultStr;};Spry.Data.Region.strToDataSetsArray=function(str,returnRegionNames)
-{var dataSetsArr=new Array;var foundHash={};if(!str)
-return dataSetsArr;str=str.replace(/\s+/g," ");str=str.replace(/^\s|\s$/g,"");var arr=str.split(/ /);for(var i=0;i<arr.length;i++)
-{if(arr[i]&&!Spry.Data.Region.PI.instructions[arr[i]])
-{try{var dataSet=Spry.Data.getDataSetByName(arr[i]);if(!foundHash[arr[i]])
-{if(returnRegionNames)
-dataSetsArr.push(arr[i]);else
-dataSetsArr.push(dataSet);foundHash[arr[i]]=true;}}
-catch(e){}}}
-return dataSetsArr;};Spry.Data.Region.DSContext=function(dataSet,processingContext)
-{var m_dataSet=dataSet;var m_processingContext=processingContext;var m_curRowIndexArray=[{rowIndex:-1}];var m_parent=null;var m_children=[];var getInternalRowIndex=function(){return m_curRowIndexArray[m_curRowIndexArray.length-1].rowIndex;};this.resetAll=function(){m_curRowIndexArray=[{rowIndex:m_dataSet.getCurrentRow()}]};this.getDataSet=function(){return m_dataSet;};this.getNumRows=function(unfiltered)
-{var data=this.getCurrentState().data;return data?data.length:m_dataSet.getRowCount(unfiltered);};this.getData=function()
-{var data=this.getCurrentState().data;return data?data:m_dataSet.getData();};this.setData=function(data)
-{this.getCurrentState().data=data;};this.getValue=function(valueName,rowContext)
-{var result="";var curState=this.getCurrentState();var ds=curState.nestedDS?curState.nestedDS:this.getDataSet();if(ds)
-result=ds.getValue(valueName,rowContext);return result;};this.getCurrentRow=function()
-{if(m_curRowIndexArray.length<2||getInternalRowIndex()<0)
-return m_dataSet.getCurrentRow();var data=this.getData();var curRowIndex=getInternalRowIndex();if(curRowIndex<0||curRowIndex>data.length)
-{Spry.Debug.reportError("Invalid index used in Spry.Data.Region.DSContext.getCurrentRow()!\n");return null;}
-return data[curRowIndex];};this.getRowIndex=function()
-{var curRowIndex=getInternalRowIndex();if(curRowIndex>=0)
-return curRowIndex;return m_dataSet.getRowNumber(m_dataSet.getCurrentRow());};this.setRowIndex=function(rowIndex)
-{this.getCurrentState().rowIndex=rowIndex;var data=this.getData();var numChildren=m_children.length;for(var i=0;i<numChildren;i++)
-m_children[i].syncDataWithParentRow(this,rowIndex,data);};this.syncDataWithParentRow=function(parentDSContext,rowIndex,parentData)
-{var row=parentData[rowIndex];if(row)
-{nestedDS=m_dataSet.getNestedDataSetForParentRow(row);if(nestedDS)
-{var currentState=this.getCurrentState();currentState.nestedDS=nestedDS;currentState.data=nestedDS.getData();currentState.rowIndex=nestedDS.getCurrentRowNumber();currentState.rowIndex=currentState.rowIndex<0?0:currentState.rowIndex;var numChildren=m_children.length;for(var i=0;i<numChildren;i++)
-m_children[i].syncDataWithParentRow(this,currentState.rowIndex,currentState.data);}}};this.pushState=function()
-{var curState=this.getCurrentState();var newState=new Object;newState.rowIndex=curState.rowIndex;newState.data=curState.data;newState.nestedDS=curState.nestedDS;m_curRowIndexArray.push(newState);var numChildren=m_children.length;for(var i=0;i<numChildren;i++)
-m_children[i].pushState();};this.popState=function()
-{if(m_curRowIndexArray.length<2)
-{Spry.Debug.reportError("Stack underflow in Spry.Data.Region.DSContext.popState()!\n");return;}
-var numChildren=m_children.length;for(var i=0;i<numChildren;i++)
-m_children[i].popState();m_curRowIndexArray.pop();};this.getCurrentState=function()
-{return m_curRowIndexArray[m_curRowIndexArray.length-1];};this.addChild=function(childDSContext)
-{var numChildren=m_children.length;for(var i=0;i<numChildren;i++)
-{if(m_children[i]==childDSContext)
-return;}
-m_children.push(childDSContext);};};Spry.Data.Region.ProcessingContext=function(region)
-{this.region=region;this.dataSetContexts=[];if(region&&region.dataSets)
-{var dsArray=region.dataSets.slice(0);var dsArrayLen=dsArray.length;for(var i=0;i<dsArrayLen;i++)
-{var ds=region.dataSets[i];while(ds&&ds.getParentDataSet)
-{var doesExist=false;ds=ds.getParentDataSet();if(ds&&this.indexOf(dsArray,ds)==-1)
-dsArray.push(ds);}}
-for(i=0;i<dsArray.length;i++)
-this.dataSetContexts.push(new Spry.Data.Region.DSContext(dsArray[i],this));var dsContexts=this.dataSetContexts;var numDSContexts=dsContexts.length;for(i=0;i<numDSContexts;i++)
-{var dsc=dsContexts[i];var ds=dsc.getDataSet();if(ds.getParentDataSet)
-{var parentDS=ds.getParentDataSet();if(parentDS)
-{var pdsc=this.getDataSetContext(parentDS);if(pdsc)pdsc.addChild(dsc);}}}}};Spry.Data.Region.ProcessingContext.prototype.indexOf=function(arr,item)
-{if(arr)
-{var arrLen=arr.length;for(var i=0;i<arrLen;i++)
-if(arr[i]==item)
-return i;}
-return-1;};Spry.Data.Region.ProcessingContext.prototype.getDataSetContext=function(dataSet)
-{if(!dataSet)
-{if(this.dataSetContexts.length>0)
-return this.dataSetContexts[0];return null;}
-if(typeof dataSet=='string')
-{dataSet=Spry.Data.getDataSetByName(dataSet);if(!dataSet)
-return null;}
-for(var i=0;i<this.dataSetContexts.length;i++)
-{var dsc=this.dataSetContexts[i];if(dsc.getDataSet()==dataSet)
-return dsc;}
-return null;};Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet=function()
-{var dsName="";var columnName="";if(arguments.length>1)
-{dsName=arguments[0];columnName=arguments[1];}
-else
-{var dataRef=arguments[0].replace(/\s*{\s*|\s*}\s*/g,"");if(dataRef.search("::")!=-1)
-{dsName=dataRef.replace(/::.*/,"");columnName=dataRef.replace(/.*::/,"");}
-else
-columnName=dataRef;}
-var result="";var dsContext=this.getDataSetContext(dsName);if(dsContext)
-result=dsContext.getValue(columnName,dsContext.getCurrentRow());else
-Spry.Debug.reportError("getValueFromDataSet: Failed to get "+dsName+" context for the "+this.region.regionNode.id+" region.\n");return result;};Spry.Data.Region.ProcessingContext.prototype.$v=Spry.Data.Region.ProcessingContext.prototype.getValueFromDataSet;Spry.Data.Region.ProcessingContext.prototype.getCurrentRowForDataSet=function(dataSet)
-{var dsc=this.getDataSetContext(dataSet);if(dsc)
-return dsc.getCurrentRow();return null;};Spry.Data.Region.Token=function(tokenType,dataSet,data,regionStr)
-{var self=this;this.tokenType=tokenType;this.dataSet=dataSet;this.data=data;this.regionStr=regionStr;this.parent=null;this.children=null;};Spry.Data.Region.Token.prototype.addChild=function(child)
-{if(!child)
-return;if(!this.children)
-this.children=new Array;this.children.push(child);child.parent=this;};Spry.Data.Region.Token.LIST_TOKEN=0;Spry.Data.Region.Token.STRING_TOKEN=1;Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN=2;Spry.Data.Region.Token.VALUE_TOKEN=3;Spry.Data.Region.Token.PIData=function(piName,data,jsExpr,regionState)
-{var self=this;this.name=piName;this.data=data;this.jsExpr=jsExpr;this.regionState=regionState;};Spry.Utils.addLoadListener(function(){setTimeout(function(){if(Spry.Data.initRegionsOnLoad)Spry.Data.initRegions();},0);});
\ No newline at end of file
--- a/includes/clientside/static/SpryEffects.js	Sun Aug 17 23:24:41 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,521 +0,0 @@
-// Spry.Effect.js - version 0.38 - Spry Pre-Release 1.6.1
-//
-// Copyright (c) 2007. Adobe Systems Incorporated.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//   * Redistributions of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//   * Redistributions in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//   * Neither the name of Adobe Systems Incorporated nor the names of its
-//     contributors may be used to endorse or promote products derived from this
-//     software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-var Spry;if(!Spry)Spry={};Spry.forwards=1;Spry.backwards=2;if(!Spry.Effect)Spry.Effect={};Spry.Effect.Transitions={linearTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+(time/duration)*change;},sinusoidalTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+((-Math.cos((time/duration)*Math.PI)/2)+0.5)*change;},squareTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+Math.pow(time/duration,2)*change;},squarerootTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+Math.sqrt(time/duration)*change;},fifthTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+Math.sqrt((-Math.cos((time/duration)*Math.PI)/2)+0.5)*change;},circleTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;var pos=time/duration;return begin+Math.sqrt(1-Math.pow((pos-1),2))*change;},pulsateTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;return begin+(0.5+Math.sin(17*time/duration)/2)*change;},growSpecificTransition:function(time,begin,change,duration)
-{if(time>duration)return change+begin;var pos=time/duration;return begin+(5*Math.pow(pos,3)-6.4*Math.pow(pos,2)+2*pos)*change;}};for(var trans in Spry.Effect.Transitions)
-{Spry[trans]=Spry.Effect.Transitions[trans];}
-Spry.Effect.Registry=function()
-{this.effects=[];};Spry.Effect.Registry.prototype.getRegisteredEffect=function(element,options)
-{var a={};a.element=Spry.Effect.getElement(element);a.options=options;for(var i=0;i<this.effects.length;i++)
-if(this.effectsAreTheSame(this.effects[i],a))
-return this.effects[i].effect;return false;};Spry.Effect.Registry.prototype.addEffect=function(effect,element,options)
-{if(!this.getRegisteredEffect(element,options))
-{var len=this.effects.length;this.effects[len]={};var eff=this.effects[len];eff.effect=effect;eff.element=Spry.Effect.getElement(element);eff.options=options;}};Spry.Effect.Registry.prototype.effectsAreTheSame=function(effectA,effectB)
-{if(effectA.element!=effectB.element)
-return false;var compare=Spry.Effect.Utils.optionsAreIdentical(effectA.options,effectB.options);if(compare)
-{if(typeof effectB.options.setup=='function')
-effectA.options.setup=effectB.options.setup;if(typeof effectB.options.finish=='function')
-effectA.options.finish=effectB.options.finish;}
-return compare;};var SpryRegistry=new Spry.Effect.Registry;if(!Spry.Effect.Utils)Spry.Effect.Utils={};Spry.Effect.Utils.showError=function(msg)
-{alert('Spry.Effect ERR: '+msg);};Spry.Effect.Utils.showInitError=function(effect){Spry.Effect.Utils.showError('The '+effect+' class can\'t be accessed as a static function anymore. '+"\n"+'Please read Spry Effects migration documentation.');return false;};Spry.Effect.Utils.Position=function()
-{this.x=0;this.y=0;this.units="px";};Spry.Effect.Utils.Rectangle=function()
-{this.width=0;this.height=0;this.units="px";};Spry.Effect.Utils.intToHex=function(integerNum)
-{var result=integerNum.toString(16);if(result.length==1)
-result="0"+result;return result;};Spry.Effect.Utils.hexToInt=function(hexStr)
-{return parseInt(hexStr,16);};Spry.Effect.Utils.rgb=function(redInt,greenInt,blueInt)
-{var intToHex=Spry.Effect.Utils.intToHex;var redHex=intToHex(redInt);var greenHex=intToHex(greenInt);var blueHex=intToHex(blueInt);compositeColorHex=redHex.concat(greenHex,blueHex).toUpperCase();compositeColorHex='#'+compositeColorHex;return compositeColorHex;};Spry.Effect.Utils.longColorVersion=function(color){if(color.match(/^#[0-9a-f]{3}$/i)){var tmp=color.split('');var color='#';for(var i=1;i<tmp.length;i++){color+=tmp[i]+''+tmp[i];}}
-return color;};Spry.Effect.Utils.camelize=function(stringToCamelize)
-{if(stringToCamelize.indexOf('-')==-1){return stringToCamelize;}
-var oStringList=stringToCamelize.split('-');var isFirstEntry=true;var camelizedString='';for(var i=0;i<oStringList.length;i++)
-{if(oStringList[i].length>0)
-{if(isFirstEntry)
-{camelizedString=oStringList[i];isFirstEntry=false;}
-else
-{var s=oStringList[i];camelizedString+=s.charAt(0).toUpperCase()+s.substring(1);}}}
-return camelizedString;};Spry.Effect.Utils.isPercentValue=function(value)
-{var result=false;if(typeof value=='string'&&value.length>0&&value.lastIndexOf("%")>0)
-result=true;return result;};Spry.Effect.Utils.getPercentValue=function(value)
-{var result=0;try
-{result=Number(value.substring(0,value.lastIndexOf("%")));}
-catch(e){Spry.Effect.Utils.showError('Spry.Effect.Utils.getPercentValue: '+e);}
-return result;};Spry.Effect.Utils.getPixelValue=function(value)
-{var result=0;if(typeof value=='number')return value;var unitIndex=value.lastIndexOf("px");if(unitIndex==-1)
-unitIndex=value.length;try
-{result=parseInt(value.substring(0,unitIndex),10);}
-catch(e){}
-return result;};Spry.Effect.Utils.getFirstChildElement=function(node)
-{if(node)
-{var childCurr=node.firstChild;while(childCurr)
-{if(childCurr.nodeType==1)
-return childCurr;childCurr=childCurr.nextSibling;}}
-return null;};Spry.Effect.Utils.fetchChildImages=function(startEltIn,targetImagesOut)
-{if(!startEltIn||startEltIn.nodeType!=1||!targetImagesOut)
-return;if(startEltIn.hasChildNodes())
-{var childImages=startEltIn.getElementsByTagName('img');var imageCnt=childImages.length;for(var i=0;i<imageCnt;i++)
-{var imgCurr=childImages[i];var dimensionsCurr=Spry.Effect.getDimensions(imgCurr);targetImagesOut.push([imgCurr,dimensionsCurr.width,dimensionsCurr.height]);}}};Spry.Effect.Utils.optionsAreIdentical=function(optionsA,optionsB)
-{if(optionsA==null&&optionsB==null)
-return true;if(optionsA!=null&&optionsB!=null)
-{var objectCountA=0;var objectCountB=0;for(var propA in optionsA)objectCountA++;for(var propB in optionsB)objectCountB++;if(objectCountA!=objectCountB)
-return false;for(var prop in optionsA)
-{var typeA=typeof optionsA[prop];var typeB=typeof optionsB[prop];if(typeA!=typeB||(typeA!='undefined'&&optionsA[prop]!=optionsB[prop]))
-return false;}
-return true;}
-return false;};Spry.Effect.Utils.DoEffect=function(effectName,element,options)
-{if(!options)
-var options={};options.name=effectName;var ef=SpryRegistry.getRegisteredEffect(element,options);if(!ef)
-{ef=new Spry.Effect[effectName](element,options);SpryRegistry.addEffect(ef,element,options);}
-ef.start();return true;};if(!Spry.Utils)Spry.Utils={};Spry.Utils.Notifier=function()
-{this.observers=[];this.suppressNotifications=0;};Spry.Utils.Notifier.prototype.addObserver=function(observer)
-{if(!observer)
-return;var len=this.observers.length;for(var i=0;i<len;i++)
-if(this.observers[i]==observer)return;this.observers[len]=observer;};Spry.Utils.Notifier.prototype.removeObserver=function(observer)
-{if(!observer)
-return;for(var i=0;i<this.observers.length;i++)
-{if(this.observers[i]==observer)
-{this.observers.splice(i,1);break;}}};Spry.Utils.Notifier.prototype.notifyObservers=function(methodName,data)
-{if(!methodName)
-return;if(!this.suppressNotifications)
-{var len=this.observers.length;for(var i=0;i<len;i++)
-{var obs=this.observers[i];if(obs)
-{if(typeof obs=="function")
-obs(methodName,this,data);else if(obs[methodName])
-obs[methodName](this,data);}}}};Spry.Utils.Notifier.prototype.enableNotifications=function()
-{if(--this.suppressNotifications<0)
-{this.suppressNotifications=0;Spry.Effect.Utils.showError("Unbalanced enableNotifications() call!\n");}};Spry.Utils.Notifier.prototype.disableNotifications=function()
-{++this.suppressNotifications;};Spry.Effect.getElement=function(ele)
-{var element=ele;if(typeof ele=="string")
-element=document.getElementById(ele);if(element==null)
-Spry.Effect.Utils.showError('Element "'+ele+'" not found.');return element;};Spry.Effect.getStyleProp=function(element,prop)
-{var value;var camelized=Spry.Effect.Utils.camelize(prop);try
-{if(element.style)
-value=element.style[camelized];if(!value)
-{if(document.defaultView&&document.defaultView.getComputedStyle)
-{var css=document.defaultView.getComputedStyle(element,null);value=css?css.getPropertyValue(prop):null;}
-else if(element.currentStyle)
-{value=element.currentStyle[camelized];}}}
-catch(e){Spry.Effect.Utils.showError('Spry.Effect.getStyleProp: '+e);}
-return value=='auto'?null:value;};Spry.Effect.setStyleProp=function(element,prop,value)
-{try
-{element.style[Spry.Effect.Utils.camelize(prop)]=value;}
-catch(e){Spry.Effect.Utils.showError('Spry.Effect.setStyleProp: '+e);}};Spry.Effect.getStylePropRegardlessOfDisplayState=function(element,prop,displayElement)
-{var refElement=displayElement?displayElement:element;var displayOrig=Spry.Effect.getStyleProp(refElement,'display');var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');if(displayOrig=='none')
-{Spry.Effect.setStyleProp(refElement,'visibility','hidden');Spry.Effect.setStyleProp(refElement,'display','block');if(window.opera)
-refElement.focus();}
-var styleProp=Spry.Effect.getStyleProp(element,prop);if(displayOrig=='none')
-{Spry.Effect.setStyleProp(refElement,'display','none');Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig);}
-return styleProp;};Spry.Effect.makePositioned=function(element)
-{var pos=Spry.Effect.getStyleProp(element,'position');if(!pos||pos=='static')
-{element.style.position='relative';if(window.opera)
-{element.style.top=0;element.style.left=0;}}};Spry.Effect.isInvisible=function(element)
-{var propDisplay=Spry.Effect.getStyleProp(element,'display');if(propDisplay&&propDisplay.toLowerCase()=='none')
-return true;var propVisible=Spry.Effect.getStyleProp(element,'visibility');if(propVisible&&propVisible.toLowerCase()=='hidden')
-return true;return false;};Spry.Effect.enforceVisible=function(element)
-{var propDisplay=Spry.Effect.getStyleProp(element,'display');if(propDisplay&&propDisplay.toLowerCase()=='none')
-Spry.Effect.setStyleProp(element,'display','block');var propVisible=Spry.Effect.getStyleProp(element,'visibility');if(propVisible&&propVisible.toLowerCase()=='hidden')
-Spry.Effect.setStyleProp(element,'visibility','visible');};Spry.Effect.makeClipping=function(element)
-{var overflow=Spry.Effect.getStyleProp(element,'overflow');if(!overflow||(overflow.toLowerCase()!='hidden'&&overflow.toLowerCase()!='scroll'))
-{var heightCache=0;var needsCache=/MSIE 7.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent);if(needsCache)
-heightCache=Spry.Effect.getDimensionsRegardlessOfDisplayState(element).height;Spry.Effect.setStyleProp(element,'overflow','hidden');if(needsCache)
-Spry.Effect.setStyleProp(element,'height',heightCache+'px');}};Spry.Effect.cleanWhitespace=function(element)
-{var childCountInit=element.childNodes.length;for(var i=childCountInit-1;i>=0;i--){var node=element.childNodes[i];if(node.nodeType==3&&!/\S/.test(node.nodeValue))
-try
-{element.removeChild(node);}
-catch(e){Spry.Effect.Utils.showError('Spry.Effect.cleanWhitespace: '+e);}}};Spry.Effect.getComputedStyle=function(element)
-{return/MSIE/.test(navigator.userAgent)?element.currentStyle:document.defaultView.getComputedStyle(element,null);};Spry.Effect.getDimensions=function(element)
-{var dimensions=new Spry.Effect.Utils.Rectangle;var computedStyle=null;if(element.style.width&&/px/i.test(element.style.width))
-dimensions.width=parseInt(element.style.width,10);else
-{computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.width&&/px/i.test(computedStyle.width);if(tryComputedStyle)
-dimensions.width=parseInt(computedStyle.width,10);if(!tryComputedStyle||dimensions.width==0)
-dimensions.width=element.offsetWidth;}
-if(element.style.height&&/px/i.test(element.style.height))
-dimensions.height=parseInt(element.style.height,10);else
-{if(!computedStyle)
-computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.height&&/px/i.test(computedStyle.height);if(tryComputedStyle)
-dimensions.height=parseInt(computedStyle.height,10);if(!tryComputedStyle||dimensions.height==0)
-dimensions.height=element.offsetHeight;}
-return dimensions;};Spry.Effect.getDimensionsRegardlessOfDisplayState=function(element,displayElement)
-{var refElement=displayElement?displayElement:element;var displayOrig=Spry.Effect.getStyleProp(refElement,'display');var visibilityOrig=Spry.Effect.getStyleProp(refElement,'visibility');if(displayOrig=='none')
-{Spry.Effect.setStyleProp(refElement,'visibility','hidden');Spry.Effect.setStyleProp(refElement,'display','block');if(window.opera)
-refElement.focus();}
-var dimensions=Spry.Effect.getDimensions(element);if(displayOrig=='none')
-{Spry.Effect.setStyleProp(refElement,'display','none');Spry.Effect.setStyleProp(refElement,'visibility',visibilityOrig);}
-return dimensions;};Spry.Effect.getOpacity=function(element)
-{var o=Spry.Effect.getStyleProp(element,"opacity");if(typeof o=='undefined'||o==null)
-o=1.0;return o;};Spry.Effect.getBgColor=function(ele)
-{return Spry.Effect.getStyleProp(ele,"background-color");};Spry.Effect.intPropStyle=function(e,prop){var i=parseInt(Spry.Effect.getStyleProp(e,prop),10);if(isNaN(i))
-return 0;return i;};Spry.Effect.getPosition=function(element)
-{var position=new Spry.Effect.Utils.Position;var computedStyle=null;if(element.style.left&&/px/i.test(element.style.left))
-position.x=parseInt(element.style.left,10);else
-{computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.left&&/px/i.test(computedStyle.left);if(tryComputedStyle)
-position.x=parseInt(computedStyle.left,10);if(!tryComputedStyle||position.x==0)
-position.x=element.offsetLeft;}
-if(element.style.top&&/px/i.test(element.style.top))
-position.y=parseInt(element.style.top,10);else
-{if(!computedStyle)
-computedStyle=Spry.Effect.getComputedStyle(element);var tryComputedStyle=computedStyle&&computedStyle.top&&/px/i.test(computedStyle.top);if(tryComputedStyle)
-position.y=parseInt(computedStyle.top,10);if(!tryComputedStyle||position.y==0)
-position.y=element.offsetTop;}
-return position;};Spry.Effect.getOffsetPosition=Spry.Effect.getPosition;Spry.Effect.Animator=function(options)
-{Spry.Utils.Notifier.call(this);this.name='Animator';this.element=null;this.startMilliseconds=0;this.repeat='none';this.isRunning=false;this.timer=null;this.cancelRemaining=0;if(!options)
-var options={};if(options.toggle)
-this.direction=false;else
-this.direction=Spry.forwards;var self=this;if(options.setup!=null)
-this.addObserver({onPreEffect:function(){try{self.options.setup(self.element,self);}catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.start: setup callback: '+e);}}});if(options.finish!=null)
-this.addObserver({onPostEffect:function(){try{self.options.finish(self.element,self);}catch(e){Spry.Effect.Utils.showError('Spry.Effect.Animator.prototype.stop: finish callback: '+e);}}});this.options={duration:1000,toggle:false,transition:Spry.linearTransition,interval:16};this.setOptions(options);if(options.transition)
-this.setTransition(options.transition);if(options.fps)
-this.setFps(options.fps);};Spry.Effect.Animator.prototype=new Spry.Utils.Notifier();Spry.Effect.Animator.prototype.constructor=Spry.Utils.Animator;Spry.Effect.Animator.prototype.notStaticAnimator=true;Spry.Effect.Animator.prototype.setOptions=function(options)
-{if(!options)
-return;for(var prop in options)
-this.options[prop]=options[prop];};Spry.Effect.Animator.prototype.setTransition=function(transition){if(typeof transition=='number'||transition=="1"||transition=="2")
-switch(parseInt(transition,10))
-{case 1:transition=Spry.linearTransition;break;case 2:transition=Spry.sinusoidalTransition;break;default:Spry.Effect.Utils.showError('unknown transition');}
-else if(typeof transition=='string')
-{if(typeof window[transition]=='function')
-transition=window[transition];else if(typeof Spry[transition]=='function')
-transition=Spry[transition];else
-Spry.Effect.Utils.showError('unknown transition');}
-this.options.transition=transition;if(typeof this.effectsArray!='undefined'){var l=this.effectsArray.length;for(var i=0;i<l;i++)
-this.effectsArray[i].effect.setTransition(transition);}};Spry.Effect.Animator.prototype.setDuration=function(duration){this.options.duration=duration;if(typeof this.effectsArray!='undefined')
-{var l=this.effectsArray.length;for(var i=0;i<l;i++)
-{this.effectsArray[i].effect.setDuration(duration);}}};Spry.Effect.Animator.prototype.setFps=function(fps){this.options.interval=parseInt(1000/fps,10);this.options.fps=fps;if(typeof this.effectsArray!='undefined')
-{var l=this.effectsArray.length;for(var i=0;i<l;i++)
-{this.effectsArray[i].effect.setFps(fps);}}};Spry.Effect.Animator.prototype.start=function(withoutTimer)
-{if(!this.element)
-return;if(arguments.length==0)
-withoutTimer=false;if(this.isRunning)
-this.cancel();this.prepareStart();var currDate=new Date();this.startMilliseconds=currDate.getTime();if(this.element.id)
-this.element=document.getElementById(this.element.id);if(this.cancelRemaining!=0&&this.options.toggle)
-{if(this.cancelRemaining<1&&typeof this.options.transition=='function')
-{var startTime=0;var stopTime=this.options.duration;var start=0;var stop=1;var emergency=0;this.cancelRemaining=Math.round(this.cancelRemaining*1000)/1000;var found=false;var middle=0;while(!found)
-{if(emergency++>this.options.duration)break;var half=startTime+((stopTime-startTime)/2);middle=Math.round(this.options.transition(half,1,-1,this.options.duration)*1000)/1000;if(middle==this.cancelRemaining)
-{this.startMilliseconds-=half;found=true;}
-if(middle<this.cancelRemaining)
-{stopTime=half;stop=middle;}
-else
-{startTime=half;start=middle;}}}
-this.cancelRemaining=0;}
-this.notifyObservers('onPreEffect',this);if(withoutTimer==false)
-{var self=this;this.timer=setInterval(function(){self.drawEffect();},this.options.interval);}
-this.isRunning=true;};Spry.Effect.Animator.prototype.stopFlagReset=function()
-{if(this.timer)
-{clearInterval(this.timer);this.timer=null;}
-this.startMilliseconds=0;};Spry.Effect.Animator.prototype.stop=function()
-{this.stopFlagReset();this.notifyObservers('onPostEffect',this);this.isRunning=false;};Spry.Effect.Animator.prototype.cancel=function()
-{var elapsed=this.getElapsedMilliseconds();if(this.startMilliseconds>0&&elapsed<this.options.duration)
-this.cancelRemaining=this.options.transition(elapsed,0,1,this.options.duration);this.stopFlagReset();this.notifyObservers('onCancel',this);this.isRunning=false;};Spry.Effect.Animator.prototype.drawEffect=function()
-{var isRunning=true;this.notifyObservers('onStep',this);var timeElapsed=this.getElapsedMilliseconds();if(typeof this.options.transition!='function'){Spry.Effect.Utils.showError('unknown transition');return;}
-this.animate();if(timeElapsed>this.options.duration)
-{isRunning=false;this.stop();}
-return isRunning;};Spry.Effect.Animator.prototype.getElapsedMilliseconds=function()
-{if(this.startMilliseconds>0)
-{var currDate=new Date();return(currDate.getTime()-this.startMilliseconds);}
-return 0;};Spry.Effect.Animator.prototype.doToggle=function()
-{if(!this.direction)
-{this.direction=Spry.forwards;return;}
-if(this.options.toggle==true)
-{if(this.direction==Spry.forwards)
-{this.direction=Spry.backwards;this.notifyObservers('onToggle',this);}
-else if(this.direction==Spry.backwards)
-{this.direction=Spry.forwards;}}};Spry.Effect.Animator.prototype.prepareStart=function()
-{if(this.options&&this.options.toggle)
-this.doToggle();};Spry.Effect.Animator.prototype.animate=function(){};Spry.Effect.Animator.prototype.onStep=function(el)
-{if(el!=this)
-this.notifyObservers('onStep',this);};Spry.Effect.Move=function(element,fromPos,toPos,options)
-{this.dynamicFromPos=false;if(arguments.length==3)
-{options=toPos;toPos=fromPos;fromPos=Spry.Effect.getPosition(element);this.dynamicFromPos=true;}
-Spry.Effect.Animator.call(this,options);this.name='Move';this.element=Spry.Effect.getElement(element);if(!this.element)
-return;if(fromPos.units!=toPos.units)
-Spry.Effect.Utils.showError('Spry.Effect.Move: Conflicting units ('+fromPos.units+', '+toPos.units+')');this.units=fromPos.units;this.startX=Number(fromPos.x);this.stopX=Number(toPos.x);this.startY=Number(fromPos.y);this.stopY=Number(toPos.y);};Spry.Effect.Move.prototype=new Spry.Effect.Animator();Spry.Effect.Move.prototype.constructor=Spry.Effect.Move;Spry.Effect.Move.prototype.animate=function()
-{var left=0;var top=0;var floor=Math.floor;var elapsed=this.getElapsedMilliseconds();if(this.direction==Spry.forwards)
-{left=floor(this.options.transition(elapsed,this.startX,this.stopX-this.startX,this.options.duration));top=floor(this.options.transition(elapsed,this.startY,this.stopY-this.startY,this.options.duration));}
-else if(this.direction==Spry.backwards)
-{left=floor(this.options.transition(elapsed,this.stopX,this.startX-this.stopX,this.options.duration));top=floor(this.options.transition(elapsed,this.stopY,this.startY-this.stopY,this.options.duration));}
-this.element.style.left=left+this.units;this.element.style.top=top+this.units;};Spry.Effect.Move.prototype.prepareStart=function()
-{if(this.options&&this.options.toggle)
-this.doToggle();if(this.dynamicFromPos==true)
-{var fromPos=Spry.Effect.getPosition(this.element);this.startX=fromPos.x;this.startY=fromPos.y;this.rangeMoveX=this.startX-this.stopX;this.rangeMoveY=this.startY-this.stopY;}};Spry.Effect.Size=function(element,fromRect,toRect,options)
-{this.dynamicFromRect=false;if(arguments.length==3)
-{options=toRect;toRect=fromRect;fromRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.dynamicFromRect=true;}
-Spry.Effect.Animator.call(this,options);this.name='Size';this.element=Spry.Effect.getElement(element);if(!this.element)
-return;element=this.element;if(fromRect.units!=toRect.units)
-{Spry.Effect.Utils.showError('Spry.Effect.Size: Conflicting units ('+fromRect.units+', '+toRect.units+')');return false;}
-this.units=fromRect.units;var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);this.originalWidth=originalRect.width;this.originalHeight=originalRect.height;this.startWidth=fromRect.width;this.startHeight=fromRect.height;this.stopWidth=toRect.width;this.stopHeight=toRect.height;this.childImages=new Array();if(this.options.useCSSBox){Spry.Effect.makePositioned(this.element);var intProp=Spry.Effect.intPropStyle;this.startFromBorder_top=intProp(element,'border-top-width');this.startFromBorder_bottom=intProp(element,'border-bottom-width');this.startFromBorder_left=intProp(element,'border-left-width');this.startFromBorder_right=intProp(element,'border-right-width');this.startFromPadding_top=intProp(element,'padding-top');this.startFromPadding_bottom=intProp(element,'padding-bottom');this.startFromPadding_left=intProp(element,'padding-left');this.startFromPadding_right=intProp(element,'padding-right');this.startFromMargin_top=intProp(element,'margin-top');this.startFromMargin_bottom=intProp(element,'margin-bottom');this.startFromMargin_right=intProp(element,'margin-right');this.startFromMargin_left=intProp(element,'margin-left');this.startLeft=intProp(element,'left');this.startTop=intProp(element,'top');}
-if(this.options.scaleContent)
-Spry.Effect.Utils.fetchChildImages(element,this.childImages);this.fontFactor=1.0;var fontSize=Spry.Effect.getStyleProp(this.element,'font-size');if(fontSize&&/em\s*$/.test(fontSize))
-this.fontFactor=parseFloat(fontSize);var isPercent=Spry.Effect.Utils.isPercentValue;if(isPercent(this.startWidth))
-{var startWidthPercent=Spry.Effect.Utils.getPercentValue(this.startWidth);this.startWidth=originalRect.width*(startWidthPercent/100);}
-if(isPercent(this.startHeight))
-{var startHeightPercent=Spry.Effect.Utils.getPercentValue(this.startHeight);this.startHeight=originalRect.height*(startHeightPercent/100);}
-if(isPercent(this.stopWidth))
-{var stopWidthPercent=Spry.Effect.Utils.getPercentValue(this.stopWidth);this.stopWidth=originalRect.width*(stopWidthPercent/100);}
-if(isPercent(this.stopHeight))
-{var stopHeightPercent=Spry.Effect.Utils.getPercentValue(this.stopHeight);this.stopHeight=originalRect.height*(stopHeightPercent/100);}
-this.enforceVisible=Spry.Effect.isInvisible(this.element);};Spry.Effect.Size.prototype=new Spry.Effect.Animator();Spry.Effect.Size.prototype.constructor=Spry.Effect.Size;Spry.Effect.Size.prototype.animate=function()
-{var width=0;var height=0;var fontSize=0;var direction=0;var floor=Math.floor;var elapsed=this.getElapsedMilliseconds();if(this.direction==Spry.forwards){width=floor(this.options.transition(elapsed,this.startWidth,this.stopWidth-this.startWidth,this.options.duration));height=floor(this.options.transition(elapsed,this.startHeight,this.stopHeight-this.startHeight,this.options.duration));direction=1;}else if(this.direction==Spry.backwards){width=floor(this.options.transition(elapsed,this.stopWidth,this.startWidth-this.stopWidth,this.options.duration));height=floor(this.options.transition(elapsed,this.stopHeight,this.startHeight-this.stopHeight,this.options.duration));direction=-1;}
-var propFactor=width/this.originalWidth;fontSize=this.fontFactor*propFactor;var elStyle=this.element.style;if(width<0)
-width=0;if(height<0)
-height=0;elStyle.width=width+this.units;elStyle.height=height+this.units;if(typeof this.options.useCSSBox!='undefined'&&this.options.useCSSBox==true)
-{var intProp=Spry.Effect.intPropStyle;var origTop=intProp(this.element,'top');var origLeft=intProp(this.element,'left');var origMarginTop=intProp(this.element,'margin-top');var origMarginLeft=intProp(this.element,'margin-left');var widthFactor=propFactor;var heightFactor=height/this.originalHeight;var border_top=floor(this.startFromBorder_top*heightFactor);var border_bottom=floor(this.startFromBorder_bottom*heightFactor);var border_left=floor(this.startFromBorder_left*widthFactor);var border_right=floor(this.startFromBorder_right*widthFactor);var padding_top=floor(this.startFromPadding_top*heightFactor);var padding_bottom=floor(this.startFromPadding_bottom*heightFactor);var padding_left=floor(this.startFromPadding_left*widthFactor);var padding_right=floor(this.startFromPadding_right*widthFactor);var margin_top=floor(this.startFromMargin_top*heightFactor);var margin_bottom=floor(this.startFromMargin_bottom*heightFactor);var margin_right=floor(this.startFromMargin_right*widthFactor);var margin_left=floor(this.startFromMargin_left*widthFactor);elStyle.borderTopWidth=border_top+this.units;elStyle.borderBottomWidth=border_bottom+this.units;elStyle.borderLeftWidth=border_left+this.units;elStyle.borderRightWidth=border_right+this.units;elStyle.paddingTop=padding_top+this.units;elStyle.paddingBottom=padding_bottom+this.units;elStyle.paddingLeft=padding_left+this.units;elStyle.paddingRight=padding_right+this.units;elStyle.marginTop=margin_top+this.units;elStyle.marginBottom=margin_bottom+this.units;elStyle.marginLeft=margin_left+this.units;elStyle.marginRight=margin_right+this.units;elStyle.left=floor(origLeft+origMarginLeft-margin_left)+this.units;elStyle.top=floor(origTop+origMarginTop-margin_top)+this.units;}
-if(this.options.scaleContent)
-{for(var i=0;i<this.childImages.length;i++)
-{this.childImages[i][0].style.width=propFactor*this.childImages[i][1]+this.units;this.childImages[i][0].style.height=propFactor*this.childImages[i][2]+this.units;}
-this.element.style.fontSize=fontSize+'em';}
-if(this.enforceVisible)
-{Spry.Effect.enforceVisible(this.element);this.enforceVisible=false;}};Spry.Effect.Size.prototype.prepareStart=function()
-{if(this.options&&this.options.toggle)
-this.doToggle();if(this.dynamicFromRect==true)
-{var fromRect=Spry.Effect.getDimensions(this.element);this.startWidth=fromRect.width;this.startHeight=fromRect.height;this.widthRange=this.startWidth-this.stopWidth;this.heightRange=this.startHeight-this.stopHeight;}};Spry.Effect.Opacity=function(element,startOpacity,stopOpacity,options)
-{this.dynamicStartOpacity=false;if(arguments.length==3)
-{options=stopOpacity;stopOpacity=startOpacity;startOpacity=Spry.Effect.getOpacity(element);this.dynamicStartOpacity=true;}
-Spry.Effect.Animator.call(this,options);this.name='Opacity';this.element=Spry.Effect.getElement(element);if(!this.element)
-return;if(/MSIE/.test(navigator.userAgent)&&(!this.element.hasLayout))
-Spry.Effect.setStyleProp(this.element,'zoom','1');this.startOpacity=startOpacity;this.stopOpacity=stopOpacity;this.enforceVisible=Spry.Effect.isInvisible(this.element);};Spry.Effect.Opacity.prototype=new Spry.Effect.Animator();Spry.Effect.Opacity.prototype.constructor=Spry.Effect.Opacity;Spry.Effect.Opacity.prototype.animate=function()
-{var opacity=0;var elapsed=this.getElapsedMilliseconds();if(this.direction==Spry.forwards)
-opacity=this.options.transition(elapsed,this.startOpacity,this.stopOpacity-this.startOpacity,this.options.duration);else if(this.direction==Spry.backwards)
-opacity=this.options.transition(elapsed,this.stopOpacity,this.startOpacity-this.stopOpacity,this.options.duration);if(opacity<0)
-opacity=0;if(/MSIE/.test(navigator.userAgent))
-{var tmpval=Spry.Effect.getStyleProp(this.element,'filter');if(tmpval){tmpval=tmpval.replace(/alpha\(opacity=[0-9]{1,3}\)/g,'');}
-this.element.style.filter=tmpval+"alpha(opacity="+Math.floor(opacity*100)+")";}
-else
-this.element.style.opacity=opacity;if(this.enforceVisible)
-{Spry.Effect.enforceVisible(this.element);this.enforceVisible=false;}};Spry.Effect.Opacity.prototype.prepareStart=function()
-{if(this.options&&this.options.toggle)
-this.doToggle();if(this.dynamicStartOpacity==true)
-{this.startOpacity=Spry.Effect.getOpacity(this.element);this.opacityRange=this.startOpacity-this.stopOpacity;}};Spry.Effect.Color=function(element,startColor,stopColor,options)
-{this.dynamicStartColor=false;if(arguments.length==3)
-{options=stopColor;stopColor=startColor;startColor=Spry.Effect.getBgColor(element);this.dynamicStartColor=true;}
-Spry.Effect.Animator.call(this,options);this.name='Color';this.element=Spry.Effect.getElement(element);if(!this.element)
-return;this.startColor=startColor;this.stopColor=stopColor;this.startRedColor=Spry.Effect.Utils.hexToInt(startColor.substr(1,2));this.startGreenColor=Spry.Effect.Utils.hexToInt(startColor.substr(3,2));this.startBlueColor=Spry.Effect.Utils.hexToInt(startColor.substr(5,2));this.stopRedColor=Spry.Effect.Utils.hexToInt(stopColor.substr(1,2));this.stopGreenColor=Spry.Effect.Utils.hexToInt(stopColor.substr(3,2));this.stopBlueColor=Spry.Effect.Utils.hexToInt(stopColor.substr(5,2));};Spry.Effect.Color.prototype=new Spry.Effect.Animator();Spry.Effect.Color.prototype.constructor=Spry.Effect.Color;Spry.Effect.Color.prototype.animate=function()
-{var redColor=0;var greenColor=0;var blueColor=0;var floor=Math.floor;var elapsed=this.getElapsedMilliseconds();if(this.direction==Spry.forwards)
-{redColor=floor(this.options.transition(elapsed,this.startRedColor,this.stopRedColor-this.startRedColor,this.options.duration));greenColor=floor(this.options.transition(elapsed,this.startGreenColor,this.stopGreenColor-this.startGreenColor,this.options.duration));blueColor=floor(this.options.transition(elapsed,this.startBlueColor,this.stopBlueColor-this.startBlueColor,this.options.duration));}
-else if(this.direction==Spry.backwards)
-{redColor=floor(this.options.transition(elapsed,this.stopRedColor,this.startRedColor-this.stopRedColor,this.options.duration));greenColor=floor(this.options.transition(elapsed,this.stopGreenColor,this.startGreenColor-this.stopGreenColor,this.options.duration));blueColor=floor(this.options.transition(elapsed,this.stopBlueColor,this.startBlueColor-this.stopBlueColor,this.options.duration));}
-this.element.style.backgroundColor=Spry.Effect.Utils.rgb(redColor,greenColor,blueColor);};Spry.Effect.Color.prototype.prepareStart=function()
-{if(this.options&&this.options.toggle)
-this.doToggle();if(this.dynamicStartColor==true)
-{this.startColor=Spry.Effect.getBgColor(element);this.startRedColor=Spry.Effect.Utils.hexToInt(startColor.substr(1,2));this.startGreenColor=Spry.Effect.Utils.hexToInt(startColor.substr(3,2));this.startBlueColor=Spry.Effect.Utils.hexToInt(startColor.substr(5,2));this.redColorRange=this.startRedColor-this.stopRedColor;this.greenColorRange=this.startGreenColor-this.stopGreenColor;this.blueColorRange=this.startBlueColor-this.stopBlueColor;}};Spry.Effect.Cluster=function(options)
-{Spry.Effect.Animator.call(this,options);this.name='Cluster';this.effectsArray=new Array();this.currIdx=-1;var _ClusteredEffect=function(effect,kind)
-{this.effect=effect;this.kind=kind;this.isRunning=false;};this.ClusteredEffect=_ClusteredEffect;};Spry.Effect.Cluster.prototype=new Spry.Effect.Animator();Spry.Effect.Cluster.prototype.constructor=Spry.Effect.Cluster;Spry.Effect.Cluster.prototype.setInterval=function(interval){var l=this.effectsArray.length;this.options.interval=interval;for(var i=0;i<l;i++)
-{this.effectsArray[i].effect.setInterval(interval);}};Spry.Effect.Cluster.prototype.drawEffect=function()
-{var isRunning=true;var allEffectsDidRun=false;var baseEffectIsStillRunning=false;var evalNextEffectsRunning=false;if((this.currIdx==-1&&this.direction==Spry.forwards)||(this.currIdx==this.effectsArray.length&&this.direction==Spry.backwards))
-this.initNextEffectsRunning();var start=this.direction==Spry.forwards?0:this.effectsArray.length-1;var stop=this.direction==Spry.forwards?this.effectsArray.length:-1;var step=this.direction==Spry.forwards?1:-1;for(var i=start;i!=stop;i+=step)
-{if(this.effectsArray[i].isRunning==true)
-{baseEffectIsStillRunning=this.effectsArray[i].effect.drawEffect();if(baseEffectIsStillRunning==false&&i==this.currIdx)
-{this.effectsArray[i].isRunning=false;evalNextEffectsRunning=true;}}}
-if(evalNextEffectsRunning==true)
-allEffectsDidRun=this.initNextEffectsRunning();if(allEffectsDidRun==true){this.stop();isRunning=false;for(var i=0;i<this.effectsArray.length;i++)
-this.effectsArray[i].isRunning=false;this.currIdx=this.direction==Spry.forwards?this.effectsArray.length:-1;}
-return isRunning;};Spry.Effect.Cluster.prototype.initNextEffectsRunning=function()
-{var allEffectsDidRun=false;var step=this.direction==Spry.forwards?1:-1;var stop=this.direction==Spry.forwards?this.effectsArray.length:-1;this.currIdx+=step;if((this.currIdx>(this.effectsArray.length-1)&&this.direction==Spry.forwards)||(this.currIdx<0&&this.direction==Spry.backwards))
-allEffectsDidRun=true;else
-for(var i=this.currIdx;i!=stop;i+=step)
-{if((i>this.currIdx&&this.direction==Spry.forwards||i<this.currIdx&&this.direction==Spry.backwards)&&this.effectsArray[i].kind=="queue")
-break;this.effectsArray[i].effect.start(true);this.effectsArray[i].isRunning=true;this.currIdx=i;}
-return allEffectsDidRun;};Spry.Effect.Cluster.prototype.toggleCluster=function()
-{if(!this.direction)
-{this.direction=Spry.forwards;return;}
-if(this.options.toggle==true)
-{if(this.direction==Spry.forwards)
-{this.direction=Spry.backwards;this.notifyObservers('onToggle',this);this.currIdx=this.effectsArray.length;}
-else if(this.direction==Spry.backwards)
-{this.direction=Spry.forwards;this.currIdx=-1;}}
-else
-{if(this.direction==Spry.forwards)
-this.currIdx=-1;else if(this.direction==Spry.backwards)
-this.currIdx=this.effectsArray.length;}};Spry.Effect.Cluster.prototype.doToggle=function()
-{this.toggleCluster();for(var i=0;i<this.effectsArray.length;i++)
-{if(this.effectsArray[i].effect.options&&(this.effectsArray[i].effect.options.toggle!=null))
-if(this.effectsArray[i].effect.options.toggle==true)
-this.effectsArray[i].effect.doToggle();}};Spry.Effect.Cluster.prototype.cancel=function()
-{for(var i=0;i<this.effectsArray.length;i++)
-if(this.effectsArray[i].effect.isRunning)
-this.effectsArray[i].effect.cancel();var elapsed=this.getElapsedMilliseconds();if(this.startMilliseconds>0&&elapsed<this.options.duration)
-this.cancelRemaining=this.options.transition(elapsed,0,1,this.options.duration);this.stopFlagReset();this.notifyObservers('onCancel',this);this.isRunning=false;};Spry.Effect.Cluster.prototype.addNextEffect=function(effect)
-{effect.addObserver(this);this.effectsArray[this.effectsArray.length]=new this.ClusteredEffect(effect,"queue");if(this.effectsArray.length==1)
-{this.element=effect.element;}};Spry.Effect.Cluster.prototype.addParallelEffect=function(effect)
-{if(this.effectsArray.length==0||this.effectsArray[this.effectsArray.length-1].kind!='parallel')
-effect.addObserver(this);this.effectsArray[this.effectsArray.length]=new this.ClusteredEffect(effect,"parallel");if(this.effectsArray.length==1)
-{this.element=effect.element;}};Spry.Effect.Cluster.prototype.prepareStart=function()
-{this.toggleCluster();};Spry.Effect.Fade=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Fade');Spry.Effect.Cluster.call(this,options);this.name='Fade';var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var durationInMilliseconds=1000;var fromOpacity=0.0;var toOpacity=100.0;var doToggle=false;var transition=Spry.fifthTransition;var fps=60;var originalOpacity=0;if(/MSIE/.test(navigator.userAgent))
-originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'filter').replace(/alpha\(opacity=([0-9]{1,3})\)/g,'$1'),10);else
-originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'opacity')*100,10);if(isNaN(originalOpacity))
-originalOpacity=100;if(options)
-{if(options.duration!=null)durationInMilliseconds=options.duration;if(options.from!=null){if(Spry.Effect.Utils.isPercentValue(options.from))
-fromOpacity=Spry.Effect.Utils.getPercentValue(options.from)*originalOpacity/100;else
-fromOpacity=options.from;}
-if(options.to!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-toOpacity=Spry.Effect.Utils.getPercentValue(options.to)*originalOpacity/100;else
-toOpacity=options.to;}
-if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)transition=options.transition;if(options.fps!=null)fps=options.fps;else this.options.transition=transition;}
-fromOpacity=fromOpacity/100.0;toOpacity=toOpacity/100.0;options={duration:durationInMilliseconds,toggle:doToggle,transition:transition,from:fromOpacity,to:toOpacity,fps:fps};var fadeEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);this.addNextEffect(fadeEffect);};Spry.Effect.Fade.prototype=new Spry.Effect.Cluster();Spry.Effect.Fade.prototype.constructor=Spry.Effect.Fade;Spry.Effect.Blind=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Blind');Spry.Effect.Cluster.call(this,options);this.name='Blind';var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var durationInMilliseconds=1000;var doToggle=false;var kindOfTransition=Spry.circleTransition;var fps=60;var doScaleContent=false;Spry.Effect.makeClipping(element);var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);var fromHeightPx=originalRect.height;var toHeightPx=0;var optionFrom=options?options.from:originalRect.height;var optionTo=options?options.to:0;var fullCSSBox=false;if(options)
-{if(options.duration!=null)durationInMilliseconds=options.duration;if(options.from!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.from))
-fromHeightPx=Spry.Effect.Utils.getPercentValue(options.from)*originalRect.height/100;else
-fromHeightPx=Spry.Effect.Utils.getPixelValue(options.from);}
-if(options.to!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-toHeightPx=Spry.Effect.Utils.getPercentValue(options.to)*originalRect.height/100;else
-toHeightPx=Spry.Effect.Utils.getPixelValue(options.to);}
-if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox;}
-var fromRect=new Spry.Effect.Utils.Rectangle;fromRect.width=originalRect.width;fromRect.height=fromHeightPx;var toRect=new Spry.Effect.Utils.Rectangle;toRect.width=originalRect.width;toRect.height=toHeightPx;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,scaleContent:doScaleContent,useCSSBox:fullCSSBox,from:optionFrom,to:optionTo,fps:fps};var blindEffect=new Spry.Effect.Size(element,fromRect,toRect,options);this.addNextEffect(blindEffect);};Spry.Effect.Blind.prototype=new Spry.Effect.Cluster();Spry.Effect.Blind.prototype.constructor=Spry.Effect.Blind;Spry.Effect.Highlight=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Highlight');Spry.Effect.Cluster.call(this,options);this.name='Highlight';var durationInMilliseconds=1000;var toColor="#ffffff";var doToggle=false;var kindOfTransition=Spry.sinusoidalTransition;var fps=60;var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var fromColor=Spry.Effect.getBgColor(element);if(fromColor=="transparent")fromColor="#ffff99";if(options)
-{if(options.duration!=null)durationInMilliseconds=options.duration;if(options.from!=null)fromColor=options.from;if(options.to!=null)toColor=options.to;if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;}
-if(fromColor.indexOf('rgb')!=-1)
-var fromColor=Spry.Effect.Utils.rgb(parseInt(fromColor.substring(fromColor.indexOf('(')+1,fromColor.indexOf(',')),10),parseInt(fromColor.substring(fromColor.indexOf(',')+1,fromColor.lastIndexOf(',')),10),parseInt(fromColor.substring(fromColor.lastIndexOf(',')+1,fromColor.indexOf(')')),10));if(toColor.indexOf('rgb')!=-1)
-var toColor=Spry.Effect.Utils.rgb(parseInt(toColor.substring(toColor.indexOf('(')+1,toColor.indexOf(',')),10),parseInt(toColor.substring(toColor.indexOf(',')+1,toColor.lastIndexOf(',')),10),parseInt(toColor.substring(toColor.lastIndexOf(',')+1,toColor.indexOf(')')),10));var fromColor=Spry.Effect.Utils.longColorVersion(fromColor);var toColor=Spry.Effect.Utils.longColorVersion(toColor);this.restoreBackgroundImage=Spry.Effect.getStyleProp(element,'background-image');options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};var highlightEffect=new Spry.Effect.Color(element,fromColor,toColor,options);this.addNextEffect(highlightEffect);this.addObserver({onPreEffect:function(effect){Spry.Effect.setStyleProp(effect.element,'background-image','none');},onPostEffect:function(effect){Spry.Effect.setStyleProp(effect.element,'background-image',effect.restoreBackgroundImage);if(effect.direction==Spry.forwards&&effect.options.restoreColor)
-Spry.Effect.setStyleProp(element,'background-color',effect.options.restoreColor);}});};Spry.Effect.Highlight.prototype=new Spry.Effect.Cluster();Spry.Effect.Highlight.prototype.constructor=Spry.Effect.Highlight;Spry.Effect.Slide=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Slide');Spry.Effect.Cluster.call(this,options);this.name='Slide';var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var durationInMilliseconds=1000;var doToggle=false;var kindOfTransition=Spry.sinusoidalTransition;var fps=60;var slideHorizontally=false;var firstChildElt=Spry.Effect.Utils.getFirstChildElement(element);var direction=-1;if(/MSIE 7.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent))
-Spry.Effect.makePositioned(element);Spry.Effect.makeClipping(element);if(/MSIE 6.0/.test(navigator.userAgent)&&/Windows NT/.test(navigator.userAgent))
-{var pos=Spry.Effect.getStyleProp(element,'position');if(pos&&(pos=='static'||pos=='fixed'))
-{Spry.Effect.setStyleProp(element,'position','relative');Spry.Effect.setStyleProp(element,'top','');Spry.Effect.setStyleProp(element,'left','');}}
-if(firstChildElt)
-{Spry.Effect.makePositioned(firstChildElt);Spry.Effect.makeClipping(firstChildElt);var childRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(firstChildElt,element);Spry.Effect.setStyleProp(firstChildElt,'width',childRect.width+'px');}
-var fromDim=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);var initDim=new Spry.Effect.Utils.Rectangle();var toDim=new Spry.Effect.Utils.Rectangle();initDim.width=toDim.width=fromDim.width;initDim.height=toDim.height=fromDim.height;if(!this.options.to){if(!options)
-options={};options.to='0%';}
-if(options&&options.horizontal!==null&&options.horizontal===true)
-slideHorizontally=true;if(options.duration!=null)durationInMilliseconds=options.duration;if(options.from!=null)
-{if(slideHorizontally)
-{if(Spry.Effect.Utils.isPercentValue(options.from))
-fromDim.width=initDim.width*Spry.Effect.Utils.getPercentValue(options.from)/100;else
-fromDim.width=Spry.Effect.Utils.getPixelValue(options.from);}
-else
-{if(Spry.Effect.Utils.isPercentValue(options.from))
-fromDim.height=initDim.height*Spry.Effect.Utils.getPercentValue(options.from)/100;else
-fromDim.height=Spry.Effect.Utils.getPixelValue(options.from);}}
-if(options.to!=null)
-{if(slideHorizontally)
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-toDim.width=initDim.width*Spry.Effect.Utils.getPercentValue(options.to)/100;else
-toDim.width=Spry.Effect.Utils.getPixelValue(options.to);}
-else
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-toDim.height=initDim.height*Spry.Effect.Utils.getPercentValue(options.to)/100;else
-toDim.height=Spry.Effect.Utils.getPixelValue(options.to);}}
-if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;options={duration:durationInMilliseconds,transition:kindOfTransition,scaleContent:false,toggle:doToggle,fps:fps};var size=new Spry.Effect.Size(element,fromDim,toDim,options);this.addParallelEffect(size);if((fromDim.width<toDim.width&&slideHorizontally)||(fromDim.height<toDim.height&&!slideHorizontally))
-direction=1;var fromPos=new Spry.Effect.Utils.Position();var toPos=new Spry.Effect.Utils.Position();toPos.x=fromPos.x=Spry.Effect.intPropStyle(firstChildElt,'left');toPos.y=fromPos.y=Spry.Effect.intPropStyle(firstChildElt,'top');toPos.units=fromPos.units;if(slideHorizontally)
-toPos.x=parseInt(fromPos.x+direction*(fromDim.width-toDim.width),10);else
-toPos.y=parseInt(fromPos.y+direction*(fromDim.height-toDim.height),10);if(direction==1){var tmp=fromPos;var fromPos=toPos;var toPos=tmp;}
-options={duration:durationInMilliseconds,transition:kindOfTransition,toggle:doToggle,from:fromPos,to:toPos,fps:fps};var move=new Spry.Effect.Move(firstChildElt,fromPos,toPos,options);this.addParallelEffect(move);};Spry.Effect.Slide.prototype=new Spry.Effect.Cluster();Spry.Effect.Slide.prototype.constructor=Spry.Effect.Slide;Spry.Effect.Grow=function(element,options)
-{if(!element)
-return;if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Grow');Spry.Effect.Cluster.call(this,options);this.name='Grow';var durationInMilliseconds=1000;var doToggle=false;var doScaleContent=true;var calcHeight=false;var growFromCenter=true;var fullCSSBox=false;var kindOfTransition=Spry.squareTransition;var fps=60;var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;Spry.Effect.makeClipping(element);var dimRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);var originalWidth=dimRect.width;var originalHeight=dimRect.height;var propFactor=(originalWidth==0)?1:originalHeight/originalWidth;var fromRect=new Spry.Effect.Utils.Rectangle;fromRect.width=0;fromRect.height=0;var toRect=new Spry.Effect.Utils.Rectangle;toRect.width=originalWidth;toRect.height=originalHeight;var optionFrom=options?options.from:dimRect.width;var optionTo=options?options.to:0;var pixelValue=Spry.Effect.Utils.getPixelValue;if(options)
-{if(options.growCenter!=null)growFromCenter=options.growCenter;if(options.duration!=null)durationInMilliseconds=options.duration;if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox;if(options.scaleContent!=null)doScaleContent=options.scaleContent;if(options.from!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.from))
-{fromRect.width=originalWidth*(Spry.Effect.Utils.getPercentValue(options.from)/100);fromRect.height=originalHeight*(Spry.Effect.Utils.getPercentValue(options.from)/100);}
-else
-{if(calcHeight)
-{fromRect.height=pixelValue(options.from);fromRect.width=pixelValue(options.from)/propFactor;}
-else
-{fromRect.width=pixelValue(options.from);fromRect.height=propFactor*pixelValue(options.from);}}}
-if(options.to!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-{toRect.width=originalWidth*(Spry.Effect.Utils.getPercentValue(options.to)/100);toRect.height=originalHeight*(Spry.Effect.Utils.getPercentValue(options.to)/100);}
-else
-{if(calcHeight)
-{toRect.height=pixelValue(options.to);toRect.width=pixelValue(options.to)/propFactor;}
-else
-{toRect.width=pixelValue(options.to);toRect.height=propFactor*pixelValue(options.to);}}}
-if(options.toggle!=null)doToggle=options.toggle;if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;}
-options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,scaleContent:doScaleContent,useCSSBox:fullCSSBox,fps:fps};var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);this.addParallelEffect(sizeEffect);if(growFromCenter)
-{Spry.Effect.makePositioned(element);var startOffsetPosition=new Spry.Effect.Utils.Position();startOffsetPosition.x=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(element,"left"),10);startOffsetPosition.y=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(element,"top"),10);if(!startOffsetPosition.x)startOffsetPosition.x=0;if(!startOffsetPosition.y)startOffsetPosition.y=0;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,from:optionFrom,to:optionTo,fps:fps};var fromPos=new Spry.Effect.Utils.Position;fromPos.x=startOffsetPosition.x+(originalWidth-fromRect.width)/2.0;fromPos.y=startOffsetPosition.y+(originalHeight-fromRect.height)/2.0;var toPos=new Spry.Effect.Utils.Position;toPos.x=startOffsetPosition.x+(originalWidth-toRect.width)/2.0;toPos.y=startOffsetPosition.y+(originalHeight-toRect.height)/2.0;var moveEffect=new Spry.Effect.Move(element,fromPos,toPos,options);this.addParallelEffect(moveEffect);}};Spry.Effect.Grow.prototype=new Spry.Effect.Cluster();Spry.Effect.Grow.prototype.constructor=Spry.Effect.Grow;Spry.Effect.Shake=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Shake');Spry.Effect.Cluster.call(this,options);this.options.direction=false;if(this.options.toggle)
-this.options.toggle=false;this.name='Shake';var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var durationInMilliseconds=100;var kindOfTransition=Spry.linearTransition;var fps=60;var steps=4;if(options)
-{if(options.duration!=null)steps=Math.ceil(this.options.duration/durationInMilliseconds)-1;if(options.fps!=null)fps=options.fps;if(options.transition!=null)kindOfTransition=options.transition;}
-Spry.Effect.makePositioned(element);var startOffsetPosition=new Spry.Effect.Utils.Position();startOffsetPosition.x=parseInt(Spry.Effect.getStyleProp(element,"left"),10);startOffsetPosition.y=parseInt(Spry.Effect.getStyleProp(element,"top"),10);if(!startOffsetPosition.x)startOffsetPosition.x=0;if(!startOffsetPosition.y)startOffsetPosition.y=0;var centerPos=new Spry.Effect.Utils.Position;centerPos.x=startOffsetPosition.x;centerPos.y=startOffsetPosition.y;var rightPos=new Spry.Effect.Utils.Position;rightPos.x=startOffsetPosition.x+20;rightPos.y=startOffsetPosition.y+0;var leftPos=new Spry.Effect.Utils.Position;leftPos.x=startOffsetPosition.x+-20;leftPos.y=startOffsetPosition.y+0;options={duration:Math.ceil(durationInMilliseconds/2),toggle:false,fps:fps,transition:kindOfTransition};var effect=new Spry.Effect.Move(element,centerPos,rightPos,options);this.addNextEffect(effect);options={duration:durationInMilliseconds,toggle:false,fps:fps,transition:kindOfTransition};var effectToRight=new Spry.Effect.Move(element,rightPos,leftPos,options);var effectToLeft=new Spry.Effect.Move(element,leftPos,rightPos,options);for(var i=0;i<steps;i++)
-{if(i%2==0)
-this.addNextEffect(effectToRight);else
-this.addNextEffect(effectToLeft);}
-var pos=(steps%2==0)?rightPos:leftPos;options={duration:Math.ceil(durationInMilliseconds/2),toggle:false,fps:fps,transition:kindOfTransition};var effect=new Spry.Effect.Move(element,pos,centerPos,options);this.addNextEffect(effect);};Spry.Effect.Shake.prototype=new Spry.Effect.Cluster();Spry.Effect.Shake.prototype.constructor=Spry.Effect.Shake;Spry.Effect.Shake.prototype.doToggle=function(){};Spry.Effect.Squish=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Squish');if(!options)
-options={};if(!options.to)
-options.to='0%';if(!options.from)
-options.from='100%';options.growCenter=false;Spry.Effect.Grow.call(this,element,options);this.name='Squish';};Spry.Effect.Squish.prototype=new Spry.Effect.Grow();Spry.Effect.Squish.prototype.constructor=Spry.Effect.Squish;Spry.Effect.Pulsate=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Pulsate');Spry.Effect.Cluster.call(this,options);this.options.direction=false;if(this.options.toggle)
-this.options.toggle=false;var element=Spry.Effect.getElement(element);var originalOpacity=0;this.element=element;if(!this.element)
-return;this.name='Pulsate';var durationInMilliseconds=100;var fromOpacity=100.0;var toOpacity=0.0;var doToggle=false;var kindOfTransition=Spry.linearTransition;var fps=60;if(/MSIE/.test(navigator.userAgent))
-originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'filter').replace(/alpha\(opacity=([0-9]{1,3})\)/g,'$1'),10);else
-originalOpacity=parseInt(Spry.Effect.getStylePropRegardlessOfDisplayState(this.element,'opacity')*100,10);if(isNaN(originalOpacity)){originalOpacity=100;}
-if(options)
-{if(options.from!=null){if(Spry.Effect.Utils.isPercentValue(options.from))
-fromOpacity=Spry.Effect.Utils.getPercentValue(options.from)*originalOpacity/100;else
-fromOpacity=options.from;}
-if(options.to!=null)
-{if(Spry.Effect.Utils.isPercentValue(options.to))
-toOpacity=Spry.Effect.Utils.getPercentValue(options.to)*originalOpacity/100;else
-toOpacity=options.to;}
-if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;}
-options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};fromOpacity=fromOpacity/100.0;toOpacity=toOpacity/100.0;var fadeEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);var appearEffect=new Spry.Effect.Opacity(element,toOpacity,fromOpacity,options);var steps=parseInt(this.options.duration/200,10);for(var i=0;i<steps;i++){this.addNextEffect(fadeEffect);this.addNextEffect(appearEffect);}};Spry.Effect.Pulsate.prototype=new Spry.Effect.Cluster();Spry.Effect.Pulsate.prototype.constructor=Spry.Effect.Pulsate;Spry.Effect.Pulsate.prototype.doToggle=function(){};Spry.Effect.Puff=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Puff');Spry.Effect.Cluster.call(this,options);var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;this.name='Puff';var doToggle=false;var doScaleContent=false;var durationInMilliseconds=1000;var kindOfTransition=Spry.fifthTransition;var fps=60;Spry.Effect.makePositioned(element);if(options){if(options.toggle!=null)doToggle=options.toggle;if(options.duration!=null)durationInMilliseconds=options.duration;if(options.transition!=null)kindOfTransition=options.transition;if(options.fps!=null)fps=options.fps;}
-var originalRect=Spry.Effect.getDimensions(element);var startWidth=originalRect.width;var startHeight=originalRect.height;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};var fromOpacity=1.0;var toOpacity=0.0;var opacityEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);this.addParallelEffect(opacityEffect);var fromPos=Spry.Effect.getPosition(element);var toPos=new Spry.Effect.Utils.Position;toPos.x=startWidth/2.0*-1.0;toPos.y=startHeight/2.0*-1.0;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,from:fromPos,to:toPos,fps:fps};var moveEffect=new Spry.Effect.Move(element,fromPos,toPos,options);this.addParallelEffect(moveEffect);var self=this;this.addObserver({onPreEffect:function(){if(self.direction==Spry.backwards){self.element.style.display='block';}},onPostEffect:function(){if(self.direction==Spry.forwards){self.element.style.display='none';}}});};Spry.Effect.Puff.prototype=new Spry.Effect.Cluster;Spry.Effect.Puff.prototype.constructor=Spry.Effect.Puff;Spry.Effect.DropOut=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('DropOut');Spry.Effect.Cluster.call(this,options);var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;var durationInMilliseconds=1000;var fps=60;var kindOfTransition=Spry.fifthTransition;var direction=Spry.forwards;var doToggle=false;this.name='DropOut';Spry.Effect.makePositioned(element);if(options)
-{if(options.duration!=null)durationInMilliseconds=options.duration;if(options.toggle!=null)doToggle=options.toggle;if(options.fps!=null)fps=options.fps;if(options.transition!=null)kindOfTransition=options.transition;if(options.dropIn!=null)direction=-1;}
-var startOffsetPosition=new Spry.Effect.Utils.Position();startOffsetPosition.x=parseInt(Spry.Effect.getStyleProp(element,"left"),10);startOffsetPosition.y=parseInt(Spry.Effect.getStyleProp(element,"top"),10);if(!startOffsetPosition.x)startOffsetPosition.x=0;if(!startOffsetPosition.y)startOffsetPosition.y=0;var fromPos=new Spry.Effect.Utils.Position;fromPos.x=startOffsetPosition.x+0;fromPos.y=startOffsetPosition.y+0;var toPos=new Spry.Effect.Utils.Position;toPos.x=startOffsetPosition.x+0;toPos.y=startOffsetPosition.y+(direction*160);options={from:fromPos,to:toPos,duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};var moveEffect=new Spry.Effect.Move(element,options.from,options.to,options);this.addParallelEffect(moveEffect);var fromOpacity=1.0;var toOpacity=0.0;options={duration:durationInMilliseconds,toggle:doToggle,transition:kindOfTransition,fps:fps};var opacityEffect=new Spry.Effect.Opacity(element,fromOpacity,toOpacity,options);this.addParallelEffect(opacityEffect);var self=this;this.addObserver({onPreEffect:function(){self.element.style.display='block';},onPostEffect:function(){if(self.direction==Spry.forwards){self.element.style.display='none';}}});};Spry.Effect.DropOut.prototype=new Spry.Effect.Cluster();Spry.Effect.DropOut.prototype.constructor=Spry.Effect.DropOut;Spry.Effect.Fold=function(element,options)
-{if(!this.notStaticAnimator)
-return Spry.Effect.Utils.showInitError('Fold');Spry.Effect.Cluster.call(this,options);var element=Spry.Effect.getElement(element);this.element=element;if(!this.element)
-return;this.name='Fold';var durationInMilliseconds=1000;var doToggle=false;var doScaleContent=true;var fullCSSBox=false;var kindOfTransition=Spry.fifthTransition;var fps=fps;Spry.Effect.makeClipping(element);var originalRect=Spry.Effect.getDimensionsRegardlessOfDisplayState(element);var startWidth=originalRect.width;var startHeight=originalRect.height;var stopWidth=startWidth;var stopHeight=startHeight/5;var fromRect=new Spry.Effect.Utils.Rectangle;fromRect.width=startWidth;fromRect.height=startHeight;var toRect=new Spry.Effect.Utils.Rectangle;toRect.width=stopWidth;toRect.height=stopHeight;if(options)
-{if(options.duration!=null)durationInMilliseconds=Math.ceil(options.duration/2);if(options.toggle!=null)doToggle=options.toggle;if(options.useCSSBox!=null)fullCSSBox=options.useCSSBox;if(options.fps!=null)fps=options.fps;if(options.transition!=null)kindOfTransition=options.transition;}
-options={duration:durationInMilliseconds,toggle:doToggle,scaleContent:doScaleContent,useCSSBox:fullCSSBox,transition:kindOfTransition,fps:fps};var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);this.addNextEffect(sizeEffect);fromRect.width=toRect.width;fromRect.height=toRect.height;toRect.width='0%';var sizeEffect=new Spry.Effect.Size(element,fromRect,toRect,options);this.addNextEffect(sizeEffect);};Spry.Effect.Fold.prototype=new Spry.Effect.Cluster();Spry.Effect.Fold.prototype.constructor=Spry.Effect.Fold;Spry.Effect.DoFade=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Fade',element,options);};Spry.Effect.DoBlind=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Blind',element,options);};Spry.Effect.DoHighlight=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Highlight',element,options);};Spry.Effect.DoSlide=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Slide',element,options);};Spry.Effect.DoGrow=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Grow',element,options);};Spry.Effect.DoShake=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Shake',element,options);};Spry.Effect.DoSquish=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Squish',element,options);};Spry.Effect.DoPulsate=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Pulsate',element,options);};Spry.Effect.DoPuff=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Puff',element,options);};Spry.Effect.DoDropOut=function(element,options)
-{return Spry.Effect.Utils.DoEffect('DropOut',element,options);};Spry.Effect.DoFold=function(element,options)
-{return Spry.Effect.Utils.DoEffect('Fold',element,options);};
\ No newline at end of file
--- a/includes/clientside/static/SpryJSONDataSet.js	Sun Aug 17 23:24:41 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,142 +0,0 @@
-// SpryJSONDataSet.js - version 0.6 - Spry Pre-Release 1.6.1
-//
-// Copyright (c) 2007. Adobe Systems Incorporated.
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//   * Redistributions of source code must retain the above copyright notice,
-//     this list of conditions and the following disclaimer.
-//   * Redistributions in binary form must reproduce the above copyright notice,
-//     this list of conditions and the following disclaimer in the documentation
-//     and/or other materials provided with the distribution.
-//   * Neither the name of Adobe Systems Incorporated nor the names of its
-//     contributors may be used to endorse or promote products derived from this
-//     software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-
-Spry.Data.JSONDataSet=function(dataSetURL,dataSetOptions)
-{this.path="";this.pathIsObjectOfArrays=false;this.doc=null;this.subPaths=[];this.useParser=false;this.preparseFunc=null;Spry.Data.HTTPSourceDataSet.call(this,dataSetURL,dataSetOptions);var jwType=typeof this.subPaths;if(jwType=="string"||(jwType=="object"&&this.subPaths.constructor!=Array))
-this.subPaths=[this.subPaths];};Spry.Data.JSONDataSet.prototype=new Spry.Data.HTTPSourceDataSet();Spry.Data.JSONDataSet.prototype.constructor=Spry.Data.JSONDataSet;Spry.Data.JSONDataSet.prototype.getDataRefStrings=function()
-{var strArr=[];if(this.url)strArr.push(this.url);if(this.path)strArr.push(this.path);if(this.requestInfo&&this.requestInfo.postData)strArr.push(this.requestInfo.postData);return strArr;};Spry.Data.JSONDataSet.prototype.getDocument=function(){return this.doc;};Spry.Data.JSONDataSet.prototype.getPath=function(){return this.path;};Spry.Data.JSONDataSet.prototype.setPath=function(path)
-{if(this.path!=path)
-{this.path=path;if(this.dataWasLoaded&&this.doc)
-{this.notifyObservers("onPreLoad");this.setDataFromDoc(this.doc);}}};Spry.Data.JSONDataSet.getMatchingObjects=function(path,jsonObj)
-{var results=[];if(path&&jsonObj)
-{var prop="";var leftOverPath="";var offset=path.search(/\./);if(offset!=-1)
-{prop=path.substring(0,offset);leftOverPath=path.substring(offset+1);}
-else
-prop=path;var matches=[];if(prop&&typeof jsonObj=="object")
-{var obj=jsonObj[prop];var objType=typeof obj;if(objType!=undefined&&objType!=null)
-{if(obj&&objType=="object"&&obj.constructor==Array)
-matches=matches.concat(obj);else
-matches.push(obj);}}
-var numMatches=matches.length;if(leftOverPath)
-{for(var i=0;i<numMatches;i++)
-results=results.concat(Spry.Data.JSONDataSet.getMatchingObjects(leftOverPath,matches[i]));}
-else
-results=matches;}
-return results;};Spry.Data.JSONDataSet.flattenObject=function(obj,basicColumnName)
-{var basicName=basicColumnName?basicColumnName:"column0";var row=new Object;var objType=typeof obj;if(objType=="object")
-Spry.Data.JSONDataSet.copyProps(row,obj);else
-row[basicName]=obj;row.ds_JSONObject=obj;return row;};Spry.Data.JSONDataSet.copyProps=function(dstObj,srcObj,suppressObjProps)
-{if(srcObj&&dstObj)
-{for(var prop in srcObj)
-{if(suppressObjProps&&typeof srcObj[prop]=="object")
-continue;dstObj[prop]=srcObj[prop];}}
-return dstObj;};Spry.Data.JSONDataSet.flattenDataIntoRecordSet=function(jsonObj,path,pathIsObjectOfArrays)
-{var rs=new Object;rs.data=[];rs.dataHash={};if(!path)
-path="";var obj=jsonObj;var objType=typeof obj;var basicColName="";if(objType!="object"||!obj)
-{if(obj!=null)
-{var row=new Object;row.column0=obj;row.ds_RowID=0;rs.data.push(row);rs.dataHash[row.ds_RowID]=row;}
-return rs;}
-var matches=[];if(obj.constructor==Array)
-{var arrLen=obj.length;if(arrLen<1)
-return rs;var eleType=typeof obj[0];if(eleType!="object")
-{for(var i=0;i<arrLen;i++)
-{var row=new Object;row.column0=obj[i];row.ds_RowID=i;rs.data.push(row);rs.dataHash[row.ds_RowID]=row;}
-return rs;}
-if(obj[0].constructor==Array)
-return rs;if(path)
-{for(var i=0;i<arrLen;i++)
-matches=matches.concat(Spry.Data.JSONDataSet.getMatchingObjects(path,obj[i]));}
-else
-{for(var i=0;i<arrLen;i++)
-matches.push(obj[i]);}}
-else
-{if(path)
-matches=Spry.Data.JSONDataSet.getMatchingObjects(path,obj);else
-matches.push(obj);}
-var numMatches=matches.length;if(path&&numMatches>=1&&typeof matches[0]!="object")
-basicColName=path.replace(/.*\./,"");if(!pathIsObjectOfArrays)
-{for(var i=0;i<numMatches;i++)
-{var row=Spry.Data.JSONDataSet.flattenObject(matches[i],basicColName,pathIsObjectOfArrays);row.ds_RowID=i;rs.dataHash[i]=row;rs.data.push(row);}}
-else
-{var rowID=0;for(var i=0;i<numMatches;i++)
-{var obj=matches[i];var colNames=[];var maxNumRows=0;for(var propName in obj)
-{var prop=obj[propName];var propyType=typeof prop;if(propyType=='object'&&prop.constructor==Array)
-{colNames.push(propName);maxNumRows=Math.max(maxNumRows,obj[propName].length);}}
-var numColNames=colNames.length;for(var j=0;j<maxNumRows;j++)
-{var row=new Object;for(var k=0;k<numColNames;k++)
-{var colName=colNames[k];row[colName]=obj[colName][j];}
-row.ds_RowID=rowID++;rs.dataHash[row.ds_RowID]=row;rs.data.push(row);}}}
-return rs;};Spry.Data.JSONDataSet.prototype.flattenSubPaths=function(rs,subPaths)
-{if(!rs||!subPaths)
-return;var numSubPaths=subPaths.length;if(numSubPaths<1)
-return;var data=rs.data;var dataHash={};var pathArray=[];var cleanedPathArray=[];var isObjectOfArraysArr=[];for(var i=0;i<numSubPaths;i++)
-{var subPath=subPaths[i];if(typeof subPath=="object")
-{isObjectOfArraysArr[i]=subPath.pathIsObjectOfArrays;subPath=subPath.path;}
-if(!subPath)
-subPath="";pathArray[i]=Spry.Data.Region.processDataRefString(null,subPath,this.dataSetsForDataRefStrings);cleanedPathArray[i]=pathArray[i].replace(/\[.*\]/g,"");}
-var row;var numRows=data.length;var newData=[];for(var i=0;i<numRows;i++)
-{row=data[i];var newRows=[row];for(var j=0;j<numSubPaths;j++)
-{var newRS=Spry.Data.JSONDataSet.flattenDataIntoRecordSet(row.ds_JSONObject,pathArray[j],isObjectOfArraysArr[j]);if(newRS&&newRS.data&&newRS.data.length)
-{if(typeof subPaths[j]=="object"&&subPaths[j].subPaths)
-{var sp=subPaths[j].subPaths;spType=typeof sp;if(spType=="string")
-sp=[sp];else if(spType=="object"&&spType.constructor==Object)
-sp=[sp];this.flattenSubPaths(newRS,sp);}
-var newRSData=newRS.data;var numRSRows=newRSData.length;var cleanedPath=cleanedPathArray[j]+".";var numNewRows=newRows.length;var joinedRows=[];for(var k=0;k<numNewRows;k++)
-{var newRow=newRows[k];for(var l=0;l<numRSRows;l++)
-{var newRowObj=new Object;var newRSRow=newRSData[l];for(var prop in newRSRow)
-{var newPropName=cleanedPath+prop;if(cleanedPath==prop||cleanedPath.search(new RegExp("\\."+prop+"\\.$"))!=-1)
-newPropName=cleanedPathArray[j];newRowObj[newPropName]=newRSRow[prop];}
-Spry.Data.JSONDataSet.copyProps(newRowObj,newRow);joinedRows.push(newRowObj);}}
-newRows=joinedRows;}}
-newData=newData.concat(newRows);}
-data=newData;numRows=data.length;for(i=0;i<numRows;i++)
-{row=data[i];row.ds_RowID=i;dataHash[row.ds_RowID]=row;}
-rs.data=data;rs.dataHash=dataHash;};Spry.Data.JSONDataSet.prototype.parseJSON=function(str,filter)
-{try
-{if(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(str))
-{var j=eval('('+str+')');if(typeof filter==='function')
-{function walk(k,v)
-{if(v&&typeof v==='object')
-{for(var i in v)
-{if(v.hasOwnProperty(i))
-{v[i]=walk(i,v[i]);}}}
-return filter(k,v);}
-j=walk('',j);}
-return j;}}catch(e){}
-throw new Error("Failed to parse JSON string.");};Spry.Data.JSONDataSet.prototype.syncColumnTypesToData=function()
-{var row=this.getData()[0];for(var colName in row)
-{if(!this.columnTypes[colName])
-{var type=typeof row[colName];if(type=="number")
-this.setColumnType(colName,type);}}};Spry.Data.JSONDataSet.prototype.loadDataIntoDataSet=function(rawDataDoc)
-{if(this.preparseFunc)
-rawDataDoc=this.preparseFunc(this,rawDataDoc);var jsonObj;try{jsonObj=this.useParser?this.parseJSON(rawDataDoc):eval("("+rawDataDoc+")");}
-catch(e)
-{Spry.Debug.reportError("Caught exception in JSONDataSet.loadDataIntoDataSet: "+e);jsonObj={};}
-if(jsonObj==null)
-jsonObj="null";var rs=Spry.Data.JSONDataSet.flattenDataIntoRecordSet(jsonObj,Spry.Data.Region.processDataRefString(null,this.path,this.dataSetsForDataRefStrings),this.pathIsObjectOfArrays);this.flattenSubPaths(rs,this.subPaths);this.doc=rawDataDoc;this.docObj=jsonObj;this.data=rs.data;this.dataHash=rs.dataHash;this.dataWasLoaded=(this.doc!=null);this.syncColumnTypesToData();};
\ No newline at end of file
--- a/includes/clientside/static/ajax.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/ajax.js	Thu Aug 21 08:24:04 2008 -0400
@@ -175,8 +175,8 @@
   
   var innerBox = getElementsByClassName(box, 'div', 'mp-body')[0];
   var whiteout = whiteOutElement(innerBox);
-  whiteout.style.width = ( $(whiteout).Width() - 78 ) + 'px';
-  whiteout.style.left = ( $(whiteout).Left() + 44 ) + 'px';
+  whiteout.style.width = ( $dynano(whiteout).Width() - 78 ) + 'px';
+  whiteout.style.left = ( $dynano(whiteout).Left() + 44 ) + 'px';
   
   ajaxPost(stdAjaxPrefix + '&_mode=rename', 'newtitle=' + ajaxEscape(newname), function()
     {
@@ -223,7 +223,8 @@
     return true;
   load_component('l10n');
   load_component('messagebox');
-  load_component('SpryEffects');
+  load_component('jquery');
+  load_component('jquery-ui');
   
   // stage 1: prompt for reason and confirmation
   miniPrompt(function(parent)
@@ -355,20 +356,14 @@
   if ( trim(reason.value) == '' )
   {
     // flash the background of the reason entry
-    if ( !reason.sfx )
-      reason.sfx = new Spry.Effect.Highlight(reason.parentNode);
-    
-    reason.sfx.start();
+    $(reason.parentNode).effect("highlight", {}, 1000);
     return false;
   }
   
   if ( !confirm.checked )
   {
     // flash the background of the confirm checkbox
-    if ( !confirm.sfx )
-      confirm.sfx = new Spry.Effect.Highlight(confirm.parentNode);
-    
-    confirm.sfx.start();
+    $(confirm.parentNode).effect("highlight", {}, 1000);
     return false;
   }
   
--- a/includes/clientside/static/autocomplete.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/autocomplete.js	Thu Aug 21 08:24:04 2008 -0400
@@ -4,8 +4,8 @@
  */
 
 //
-// **** 1.1.4: DEPRECATED ****
-// Replaced with Spry-based mechanism.
+// **** 1.1.5: DEPRECATED ****
+// Replaced with jQuery-based mechanism.
 //
 
 
--- a/includes/clientside/static/autofill.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/autofill.js	Thu Aug 21 08:24:04 2008 -0400
@@ -1,55 +1,66 @@
 /**
- * Javascript auto-completion for form fields. This supercedes the code in autocomplete.js for MOZILLA ONLY. It doesn't seem to work real
- * well with other browsers yet.
+ * Javascript auto-completion for form fields. jQuery based in 1.1.5.
+ * Different types of auto-completion fields can be defined (e.g. with different data sets). For each one, a schema
+ * can be created describing how to draw each row.
  */
 
-// fill schemas
 var autofill_schemas = {};
 
-// default, generic schema
+/**
+ * SCHEMA - GENERIC
+ */
+
 autofill_schemas.generic = {
-  template: '<div id="--ID--_region" spry:region="autofill_ds_--CLASS--" class="tblholder">' + "\n" +
-            '  <table border="0" cellspacing="1" cellpadding="3" style="font-size: smaller;">' + "\n" +
-            '    <tr spry:repeat="autofill_region_--ID--">' + "\n" +
-            '      <td class="row1" spry:suggest="{name}">{name}</td>' + "\n" +
-            '    </tr>' + "\n" +
-            '  </table>' + "\n" +
-            '</div>',
-  
-  init: function(element, fillclass)
+  init: function(element, fillclass, params)
+  {
+    $(element).autocomplete(makeUrlNS('Special', 'Autofill', 'type=' + fillclass) + '&userinput=', {
+        minChars: 3
+    });
+  }
+}
+
+autofill_schemas.username = {
+  init: function(element, fillclass, params)
   {
-    // calculate positions before spry f***s everything up
-    var top = $dynano(element).Top() + $dynano(element).Height() - 10; // tblholder has 10px top margin
-    var left = $dynano(element).Left();
-    
-    // dataset name
-    var ds_name = 'autofill_ds_' + fillclass;
-    
-    // setup the dataset
-    window[ds_name] = new Spry.Data.JSONDataSet(makeUrlNS('Special', 'Autofill', 'type=' + fillclass));
-    
-    // inject our HTML wrapper
-    var template = this.template.replace(new RegExp('--ID--', 'g'), element.id).replace(new RegExp('--CLASS--', 'g', fillclass));
-    var wrapper = element.parentNode; // document.createElement('div');
-    if ( !wrapper.id )
-      wrapper.id = 'autofill_wrap_' + element.id;
-    
-    // a bunch of hacks to add a spry wrapper
-    wrapper.innerHTML = template + wrapper.innerHTML;
-    
-    var autosuggest = new Spry.Widget.AutoSuggest(wrapper.id, element.id + '_region', window[ds_name], 'name', {loadFromServer: true, urlParam: 'userinput', hoverSuggestClass: 'row2', minCharsType: 3});
-    var regiondiv = document.getElementById(element.id + '_region');
-    regiondiv.style.position = 'absolute';
-    regiondiv.style.top = top + 'px';
-    regiondiv.style.left = left + 'px';
+    $(element).autocomplete(makeUrlNS('Special', 'Autofill', 'type=' + fillclass) + '&userinput=', {
+        minChars: 3,
+        formatItem: function(row, _, __)
+        {
+          var html = row.name_highlight + '<br />';
+          html += '<span style="' + row.rank_style + '">' + row.rank_title + '</span>';
+          return html;
+        },
+        tableHeader: '<tr><th>' + $lang.get('user_autofill_heading_suggestions') + '</th></tr>',
+    });
   }
-};
+}
+
+window.autofill_onload = function()
+{
+  if ( this.loaded )
+  {
+    return true;
+  }
+  
+  var inputs = document.getElementsByClassName('input', 'autofill');
+  
+  if ( inputs.length > 0 )
+  {
+    // we have at least one input that needs to be made an autofill element.
+    // is spry data loaded?
+    load_component('template-compiler');
+  }
+  
+  this.loaded = true;
+  
+  for ( var i = 0; i < inputs.length; i++ )
+  {
+    autofill_init_element(inputs[i]);
+  }
+}
 
 function autofill_init_element(element, params)
 {
-  if ( !Spry.Data );
-    load_spry_data();
-  
   params = params || {};
   // assign an ID if it doesn't have one yet
   if ( !element.id )
@@ -73,115 +84,617 @@
   element.af_initted = true;
 }
 
-var autofill_onload = function()
+function AutofillUsername(el, allow_anon)
 {
-  if ( this.loaded )
-  {
-    return true;
-  }
-  
-  autofill_schemas.username = {
-    template: '<div id="--ID--_region" spry:region="autofill_ds_username" class="tblholder">' + "\n" +
-              '  <table border="0" cellspacing="1" cellpadding="3" style="font-size: smaller;">' + "\n" +
-              '    <tr>' + "\n" +
-              '      <th>' + $lang.get('user_autofill_heading_suggestions') + '</th>' + "\n" +
-              '    </tr>' + "\n" +
-              '    <tr spry:repeat="autofill_region_--ID--">' + "\n" +
-              '      <td class="row1" spry:suggest="{name}">{name_highlight}<br /><small style="{rank_style}">{rank_title}</small></td>' + "\n" +
-              '    </tr>' + "\n" +
-              '  </table>' + "\n" +
-              '</div>',
-    
-    init: function(element, fillclass, params)
-    {
-      // calculate positions before spry f***s everything up
-      var top = $dynano(element).Top() + $dynano(element).Height() - 10; // tblholder has 10px top margin
-      var left = $dynano(element).Left();
-      
-      var allow_anon = ( params.allow_anon ) ? '1' : '0';
-      // setup the dataset
-      if ( !window.autofill_ds_username )
-      {
-        window.autofill_ds_username = new Spry.Data.JSONDataSet(makeUrlNS('Special', 'Autofill', 'type=' + fillclass + '&allow_anon' + allow_anon));
-      }
-      
-      // inject our HTML wrapper
-      var template = this.template.replace(new RegExp('--ID--', 'g'), element.id);
-      var wrapper = element.parentNode; // document.createElement('div');
-      if ( !wrapper.id )
-        wrapper.id = 'autofill_wrap_' + element.id;
-      
-      // a bunch of hacks to add a spry wrapper
-      wrapper.innerHTML = template + wrapper.innerHTML;
-      
-      var autosuggest = new Spry.Widget.AutoSuggest(wrapper.id, element.id + '_region', window.autofill_ds_username, 'name', {loadFromServer: true, urlParam: 'userinput', hoverSuggestClass: 'row2', minCharsType: 3});
-      var regiondiv = document.getElementById(element.id + '_region');
-      regiondiv.style.position = 'absolute';
-      regiondiv.style.top = top + 'px';
-      regiondiv.style.left = left + 'px';
-    }
-  };
-  
-  autofill_schemas.page = {
-    template: '<div id="--ID--_region" spry:region="autofill_region_--ID--" class="tblholder">' + "\n" +
-              '  <table border="0" cellspacing="1" cellpadding="3" style="font-size: smaller;">' + "\n" +
-              '    <tr>' + "\n" +
-              '      <th colspan="2">' + $lang.get('page_autosuggest_heading') + '</th>' + "\n" +
-              '    </tr>' + "\n" +
-              '    <tr spry:repeat="autofill_region_--ID--">' + "\n" +
-              '      <td class="row1" spry:suggest="{page_id}">{pid_highlight}<br /><small>{name_highlight}</small></td>' + "\n" +
-              '    </tr>' + "\n" +
-              '  </table>' + "\n" +
-              '</div>'
-  }
-  
-  var inputs = document.getElementsByClassName('input', 'autofill');
-  
-  if ( inputs.length > 0 )
-  {
-    // we have at least one input that needs to be made an autofill element.
-    // is spry data loaded?
-    if ( !Spry.Data )
-    {
-      load_spry_data();
-      return true;
-    }
-  }
-  
-  this.loaded = true;
-  
-  for ( var i = 0; i < inputs.length; i++ )
-  {
-    autofill_init_element(inputs[i]);
-  }
+  el.onkeyup = null;
+  el.className = 'autofill username';
+  autofill_init_element(el, { allow_anon: allow_anon });
+}
+
+function AutofillPage(el)
+{
+  el.onkeyup = null;
+  el.className = 'autofill page';
+  autofill_init_element(el, {});
 }
 
-addOnloadHook(autofill_onload);
-
-function autofill_force_region_refresh()
-{
-  Spry.Data.initRegions();
-}
-
-function AutofillUsername(element, event, allowanon)
-{
-  element.onkeyup = element.onkeydown = element.onkeypress = function(e) {};
-  
-  element.className = 'autofill username';
-  
-  allowanon = allowanon ? true : false;
-  autofill_init_element(element, {
-      allow_anon: allowanon
-    });
-}
-
-// load spry data components
-function load_spry_data()
-{
-  var scripts = [ 'SpryData.js', 'SpryJSONDataSet.js', 'SpryAutoSuggest.js' ];
-  for ( var i = 0; i < scripts.length; i++ )
+addOnloadHook(function()
   {
-    load_component(scripts[i]);
-  }
-  autofill_onload();
-}
+    load_component('jquery');
+    load_component('jquery-ui');
+    
+    if ( !window.jQuery )
+    {
+      throw('jQuery didn\'t load properly. Aborting auto-complete init.');
+    }
+    
+    jQuery.autocomplete = function(input, options) {
+      // Create a link to self
+      var me = this;
+    
+      // Create jQuery object for input element
+      var $input = $(input).attr("autocomplete", "off");
+    
+      // Apply inputClass if necessary
+      if (options.inputClass) {
+        $input.addClass(options.inputClass);
+      }
+    
+      // Create results
+      var results = document.createElement("div");
+      $(results).addClass('tblholder').css('z-index', getHighestZ() + 1).css('margin-top', 0);
+    
+      // Create jQuery object for results
+      // var $results = $(results);
+      var $results = $(results).hide().addClass(options.resultsClass).css("position", "absolute");
+      if( options.width > 0 ) {
+        $results.css("width", options.width);
+      }
+      else
+      {
+        $results.css("width", "200px");
+      }
+    
+      // Add to body element
+      $("body").append(results);
+    
+      input.autocompleter = me;
+    
+      var timeout = null;
+      var prev = "";
+      var active = -1;
+      var cache = {};
+      var keyb = false;
+      var hasFocus = false;
+      var lastKeyPressCode = null;
+      var mouseDownOnSelect = false;
+      var hidingResults = false;
+    
+      // flush cache
+      function flushCache(){
+        cache = {};
+        cache.data = {};
+        cache.length = 0;
+      };
+    
+      // flush cache
+      flushCache();
+    
+      // if there is a data array supplied
+      if( options.data != null ){
+        var sFirstChar = "", stMatchSets = {}, row = [];
+    
+        // no url was specified, we need to adjust the cache length to make sure it fits the local data store
+        if( typeof options.url != "string" ) {
+          options.cacheLength = 1;
+        }
+    
+        // loop through the array and create a lookup structure
+        for( var i=0; i < options.data.length; i++ ){
+          // if row is a string, make an array otherwise just reference the array
+          row = ((typeof options.data[i] == "string") ? [options.data[i]] : options.data[i]);
+    
+          // if the length is zero, don't add to list
+          if( row[0].length > 0 ){
+            // get the first character
+            sFirstChar = row[0].substring(0, 1).toLowerCase();
+            // if no lookup array for this character exists, look it up now
+            if( !stMatchSets[sFirstChar] ) stMatchSets[sFirstChar] = [];
+            // if the match is a string
+            stMatchSets[sFirstChar].push(row);
+          }
+        }
+    
+        // add the data items to the cache
+        for( var k in stMatchSets ) {
+          // increase the cache size
+          options.cacheLength++;
+          // add to the cache
+          addToCache(k, stMatchSets[k]);
+        }
+      }
+    
+      $input
+      .keydown(function(e) {
+        // track last key pressed
+        lastKeyPressCode = e.keyCode;
+        switch(e.keyCode) {
+          case 38: // up
+            e.preventDefault();
+            moveSelect(-1);
+            break;
+          case 40: // down
+            e.preventDefault();
+            moveSelect(1);
+            break;
+          case 9:  // tab
+          case 13: // return
+            if( selectCurrent() ){
+              // make sure to blur off the current field
+              $input.get(0).blur();
+              e.preventDefault();
+            }
+            break;
+          default:
+            active = -1;
+            if (timeout) clearTimeout(timeout);
+            timeout = setTimeout(function(){onChange();}, options.delay);
+            break;
+        }
+      })
+      .focus(function(){
+        // track whether the field has focus, we shouldn't process any results if the field no longer has focus
+        hasFocus = true;
+      })
+      .blur(function() {
+        // track whether the field has focus
+        hasFocus = false;
+        if (!mouseDownOnSelect) {
+          hideResults();
+        }
+      });
+    
+      hideResultsNow();
+    
+      function onChange() {
+        // ignore if the following keys are pressed: [del] [shift] [capslock]
+        if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ) return $results.hide();
+        var v = $input.val();
+        if (v == prev) return;
+        prev = v;
+        if (v.length >= options.minChars) {
+          $input.addClass(options.loadingClass);
+          requestData(v);
+        } else {
+          $input.removeClass(options.loadingClass);
+          $results.hide();
+        }
+      };
+    
+      function moveSelect(step) {
+    
+        var lis = $("td", results);
+        if (!lis) return;
+    
+        active += step;
+    
+        if (active < 0) {
+          active = 0;
+        } else if (active >= lis.size()) {
+          active = lis.size() - 1;
+        }
+    
+        lis.removeClass("row2");
+    
+        $(lis[active]).addClass("row2");
+    
+        // Weird behaviour in IE
+        // if (lis[active] && lis[active].scrollIntoView) {
+        // 	lis[active].scrollIntoView(false);
+        // }
+    
+      };
+    
+      function selectCurrent() {
+        var li = $("td.row2", results)[0];
+        if (!li) {
+          var $li = $("td", results);
+          if (options.selectOnly) {
+            if ($li.length == 1) li = $li[0];
+          } else if (options.selectFirst) {
+            li = $li[0];
+          }
+        }
+        if (li) {
+          selectItem(li);
+          return true;
+        } else {
+          return false;
+        }
+      };
+    
+      function selectItem(li) {
+        if (!li) {
+          li = document.createElement("li");
+          li.extra = [];
+          li.selectValue = "";
+        }
+        var v = $.trim(li.selectValue ? li.selectValue : li.innerHTML);
+        input.lastSelected = v;
+        prev = v;
+        $results.html("");
+        $input.val(v);
+        hideResultsNow();
+        if (options.onItemSelect) {
+          setTimeout(function() { options.onItemSelect(li) }, 1);
+        }
+      };
+    
+      // selects a portion of the input string
+      function createSelection(start, end){
+        // get a reference to the input element
+        var field = $input.get(0);
+        if( field.createTextRange ){
+          var selRange = field.createTextRange();
+          selRange.collapse(true);
+          selRange.moveStart("character", start);
+          selRange.moveEnd("character", end);
+          selRange.select();
+        } else if( field.setSelectionRange ){
+          field.setSelectionRange(start, end);
+        } else {
+          if( field.selectionStart ){
+            field.selectionStart = start;
+            field.selectionEnd = end;
+          }
+        }
+        field.focus();
+      };
+    
+      // fills in the input box w/the first match (assumed to be the best match)
+      function autoFill(sValue){
+        // if the last user key pressed was backspace, don't autofill
+        if( lastKeyPressCode != 8 ){
+          // fill in the value (keep the case the user has typed)
+          $input.val($input.val() + sValue.substring(prev.length));
+          // select the portion of the value not typed by the user (so the next character will erase)
+          createSelection(prev.length, sValue.length);
+        }
+      };
+    
+      function showResults() {
+        // get the position of the input field right now (in case the DOM is shifted)
+        var pos = findPos(input);
+        // either use the specified width, or autocalculate based on form element
+        var iWidth = (options.width > 0) ? options.width : $input.width();
+        // reposition
+        $results.css({
+          width: parseInt(iWidth) + "px",
+          top: (pos.y + input.offsetHeight) + "px",
+          left: pos.x + "px"
+        });
+        if ( !$results.is(":visible") )
+        {
+          $results.show("blind", {}, 350);
+        }
+      };
+    
+      function hideResults() {
+        if (timeout) clearTimeout(timeout);
+        timeout = setTimeout(hideResultsNow, 200);
+      };
+    
+      function hideResultsNow() {
+        if (hidingResults) {
+          return;
+        }
+        hidingResults = true;
+      
+        if (timeout) {
+          clearTimeout(timeout);
+        }
+        
+        var v = $input.removeClass(options.loadingClass).val();
+        
+        if ($results.is(":visible")) {
+          $results.hide();
+        }
+        
+        if (options.mustMatch) {
+          if (!input.lastSelected || input.lastSelected != v) {
+            selectItem(null);
+          }
+        }
+    
+        hidingResults = false;
+      };
+    
+      function receiveData(q, data) {
+        if (data) {
+          $input.removeClass(options.loadingClass);
+          results.innerHTML = "";
+    
+          // if the field no longer has focus or if there are no matches, do not display the drop down
+          if( !hasFocus || data.length == 0 ) return hideResultsNow();
+    
+          if ($.browser.msie) {
+            // we put a styled iframe behind the calendar so HTML SELECT elements don't show through
+            $results.append(document.createElement('iframe'));
+          }
+          results.appendChild(dataToDom(data));
+          // autofill in the complete box w/the first match as long as the user hasn't entered in more data
+          if( options.autoFill && ($input.val().toLowerCase() == q.toLowerCase()) ) autoFill(data[0][0]);
+          showResults();
+        } else {
+          hideResultsNow();
+        }
+      };
+    
+      function parseData(data) {
+        if (!data) return null;
+        var parsed = parseJSON(data);
+        return parsed;
+      };
+    
+      function dataToDom(data) {
+        var ul = document.createElement("table");
+        $(ul).attr("border", "0").attr("cellspacing", "1").attr("cellpadding", "3");
+        var num = data.length;
+        
+        if ( options.tableHeader )
+        {
+          ul.innerHTML = options.tableHeader;
+        }
+    
+        // limited results to a max number
+        if( (options.maxItemsToShow > 0) && (options.maxItemsToShow < num) ) num = options.maxItemsToShow;
+    
+        for (var i=0; i < num; i++) {
+          var row = data[i];
+          if (!row) continue;
+          
+          var li = document.createElement("tr");
+          var td = document.createElement("td");
+          td.selectValue = row[0];
+          $(td).addClass('row1');
+          $(td).css("font-size", "smaller");
+          console.debug(ul, li, td);
+          
+          if ( options.formatItem )
+          {
+            td.innerHTML = options.formatItem(row, i, num);
+          }
+          else
+          {
+            td.innerHTML = row[0];
+          }
+          li.appendChild(td);
+          var extra = null;
+          if (row.length > 1) {
+            extra = [];
+            for (var j=1; j < row.length; j++) {
+              extra[extra.length] = row[j];
+            }
+          }
+          td.extra = extra;
+          ul.appendChild(li);
+          
+          $(td).hover(
+            function() { $("tr", ul).removeClass("row2"); $(this).addClass("row2"); active = $("tr", ul).indexOf($(this).get(0)); },
+            function() { $(this).removeClass("row2"); }
+          ).click(function(e) { 
+            e.preventDefault();
+            e.stopPropagation();
+            selectItem(this)
+          });
+          
+          /*
+          var li = document.createElement("li");
+          if (options.formatItem) {
+            li.innerHTML = options.formatItem(row, i, num);
+            li.selectValue = row[0];
+          } else {
+            li.innerHTML = row[0];
+            li.selectValue = row[0];
+          }
+          var extra = null;
+          if (row.length > 1) {
+            extra = [];
+            for (var j=1; j < row.length; j++) {
+              extra[extra.length] = row[j];
+            }
+          }
+          li.extra = extra;
+          ul.appendChild(li);
+          
+          $(li).hover(
+            function() { $("li", ul).removeClass("ac_over"); $(this).addClass("ac_over"); active = $("li", ul).indexOf($(this).get(0)); },
+            function() { $(this).removeClass("ac_over"); }
+          ).click(function(e) { 
+            e.preventDefault();
+            e.stopPropagation();
+            selectItem(this)
+          });
+          */
+          
+        }
+        $(ul).mousedown(function() {
+          mouseDownOnSelect = true;
+        }).mouseup(function() {
+          mouseDownOnSelect = false;
+        });
+        return ul;
+      };
+    
+      function requestData(q) {
+        if (!options.matchCase) q = q.toLowerCase();
+        var data = options.cacheLength ? loadFromCache(q) : null;
+        // recieve the cached data
+        if (data) {
+          receiveData(q, data);
+        // if an AJAX url has been supplied, try loading the data now
+        } else if( (typeof options.url == "string") && (options.url.length > 0) ){
+          $.get(makeUrl(q), function(data) {
+            data = parseData(data);
+            addToCache(q, data);
+            receiveData(q, data);
+          });
+        // if there's been no data found, remove the loading class
+        } else {
+          $input.removeClass(options.loadingClass);
+        }
+      };
+    
+      function makeUrl(q) {
+        var sep = options.url.indexOf('?') == -1 ? '?' : '&'; 
+        var url = options.url + encodeURI(q);
+        for (var i in options.extraParams) {
+          url += "&" + i + "=" + encodeURI(options.extraParams[i]);
+        }
+        return url;
+      };
+    
+      function loadFromCache(q) {
+        if (!q) return null;
+        if (cache.data[q]) return cache.data[q];
+        if (options.matchSubset) {
+          for (var i = q.length - 1; i >= options.minChars; i--) {
+            var qs = q.substr(0, i);
+            var c = cache.data[qs];
+            if (c) {
+              var csub = [];
+              for (var j = 0; j < c.length; j++) {
+                var x = c[j];
+                var x0 = x[0];
+                if (matchSubset(x0, q)) {
+                  csub[csub.length] = x;
+                }
+              }
+              return csub;
+            }
+          }
+        }
+        return null;
+      };
+    
+      function matchSubset(s, sub) {
+        if (!options.matchCase) s = s.toLowerCase();
+        var i = s.indexOf(sub);
+        if (i == -1) return false;
+        return i == 0 || options.matchContains;
+      };
+    
+      this.flushCache = function() {
+        flushCache();
+      };
+    
+      this.setExtraParams = function(p) {
+        options.extraParams = p;
+      };
+    
+      this.findValue = function(){
+        var q = $input.val();
+    
+        if (!options.matchCase) q = q.toLowerCase();
+        var data = options.cacheLength ? loadFromCache(q) : null;
+        if (data) {
+          findValueCallback(q, data);
+        } else if( (typeof options.url == "string") && (options.url.length > 0) ){
+          $.get(makeUrl(q), function(data) {
+            data = parseData(data)
+            addToCache(q, data);
+            findValueCallback(q, data);
+          });
+        } else {
+          // no matches
+          findValueCallback(q, null);
+        }
+      }
+    
+      function findValueCallback(q, data){
+        if (data) $input.removeClass(options.loadingClass);
+    
+        var num = (data) ? data.length : 0;
+        var li = null;
+    
+        for (var i=0; i < num; i++) {
+          var row = data[i];
+    
+          if( row[0].toLowerCase() == q.toLowerCase() ){
+            li = document.createElement("li");
+            if (options.formatItem) {
+              li.innerHTML = options.formatItem(row, i, num);
+              li.selectValue = row[0];
+            } else {
+              li.innerHTML = row[0];
+              li.selectValue = row[0];
+            }
+            var extra = null;
+            if( row.length > 1 ){
+              extra = [];
+              for (var j=1; j < row.length; j++) {
+                extra[extra.length] = row[j];
+              }
+            }
+            li.extra = extra;
+          }
+        }
+    
+        if( options.onFindValue ) setTimeout(function() { options.onFindValue(li) }, 1);
+      }
+    
+      function addToCache(q, data) {
+        if (!data || !q || !options.cacheLength) return;
+        if (!cache.length || cache.length > options.cacheLength) {
+          flushCache();
+          cache.length++;
+        } else if (!cache[q]) {
+          cache.length++;
+        }
+        cache.data[q] = data;
+      };
+    
+      function findPos(obj) {
+        var curleft = obj.offsetLeft || 0;
+        var curtop = obj.offsetTop || 0;
+        while (obj = obj.offsetParent) {
+          curleft += obj.offsetLeft
+          curtop += obj.offsetTop
+        }
+        return {x:curleft,y:curtop};
+      }
+    }
+    
+    jQuery.fn.autocomplete = function(url, options, data) {
+      // Make sure options exists
+      options = options || {};
+      // Set url as option
+      options.url = url;
+      // set some bulk local data
+      options.data = ((typeof data == "object") && (data.constructor == Array)) ? data : null;
+    
+      // Set default values for required options
+      options = $.extend({
+        inputClass: "ac_input",
+        resultsClass: "ac_results",
+        lineSeparator: "\n",
+        cellSeparator: "|",
+        minChars: 1,
+        delay: 400,
+        matchCase: 0,
+        matchSubset: 1,
+        matchContains: 0,
+        cacheLength: 1,
+        mustMatch: 0,
+        extraParams: {},
+        loadingClass: "ac_loading",
+        selectFirst: false,
+        selectOnly: false,
+        maxItemsToShow: -1,
+        autoFill: false,
+        width: 0
+      }, options);
+      options.width = parseInt(options.width, 10);
+    
+      this.each(function() {
+        var input = this;
+        new jQuery.autocomplete(input, options);
+      });
+    
+      // Don't break the chain
+      return this;
+    }
+    
+    jQuery.fn.autocompleteArray = function(data, options) {
+      return this.autocomplete(null, options, data);
+    }
+    
+    jQuery.fn.indexOf = function(e){
+      for( var i=0; i<this.length; i++ ){
+        if( this[i] == e ) return i;
+      }
+      return -1;
+    };
+    
+    autofill_onload();
+  });
--- a/includes/clientside/static/dynano.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/dynano.js	Thu Aug 21 08:24:04 2008 -0400
@@ -107,7 +107,7 @@
   // If tinyMCE init hasn't been called yet, do it now.
   if ( !tinymce_initted )
   {
-    console.info('$().switchToMCE(): doing "exact"-type MCE init');
+    console.info('$dynano().switchToMCE(): doing "exact"-type MCE init');
     enano_tinymce_options.mode = 'exact';
     enano_tinymce_options.elements = this.object.id;
     initTinyMCE();
@@ -116,7 +116,7 @@
   }
   else
   {
-    console.info('$().switchToMCE(): tinyMCE already loaded, calling mceAddControl');
+    console.info('$dynano().switchToMCE(): tinyMCE already loaded, calling mceAddControl');
     tinymce.EditorManager.execCommand("mceAddControl", true, this.object.id);
     this.object.dnIsMCE = 'yes';
   }
--- a/includes/clientside/static/enano-lib-basic.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/enano-lib-basic.js	Thu Aug 21 08:24:04 2008 -0400
@@ -139,7 +139,6 @@
 var do_width    = false;
 var ajax_load_icon = cdnPath + '/images/loading.gif';
 var editor_use_modal_window = false;
-var Spry = {};
 
 // You have an NSIS coder in your midst...
 var MB_OK = 1;
@@ -378,7 +377,6 @@
         return;
       }
     }
-    /*
     else if ( typeof(inputs[i].onkeyup) == 'function' )
     {
       var f = new String(inputs[i].onkeyup);
@@ -390,7 +388,6 @@
         return;
       }
     }
-    */
   }
 }
 
--- a/includes/clientside/static/expander.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/expander.js	Thu Aug 21 08:24:04 2008 -0400
@@ -82,8 +82,8 @@
     if ( child.tagName == 'LEGEND' )
     {
       var a = child.getElementsByTagName('a')[0];
-      $(a).rmClass('expander-open');
-      $(a).addClass('expander-closed');
+      $dynano(a).rmClass('expander-open');
+      $dynano(a).addClass('expander-closed');
       continue;
     }
     if ( child.style )
@@ -105,8 +105,8 @@
     if ( child.tagName == 'LEGEND' )
     {
       var a = child.getElementsByTagName('a')[0];
-      $(a).rmClass('expander-closed');
-      $(a).addClass('expander-open');
+      $dynano(a).rmClass('expander-closed');
+      $dynano(a).addClass('expander-open');
       continue;
     }
     if ( child.expander_meta_old_state && child.style )
--- a/includes/clientside/static/functions.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/functions.js	Thu Aug 21 08:24:04 2008 -0400
@@ -154,7 +154,8 @@
 function handle_invalid_json(response, customerror)
 {
   load_component('messagebox');
-  load_component('SpryEffects');
+  load_component('jquery');
+  load_component('jquery-ui');
   load_component('fadefilter');
   load_component('flyin');
   load_component('l10n');
@@ -295,20 +296,11 @@
       }
       else
       {
-        var effect = new Spry.Effect.Blind(parentdiv, {
-            from: '100%',
-            to: '0%',
-            duration: '1000'
+        $(parentdiv).hide("blind", {}, 1000, function()
+          {
+            parentdiv.parentNode.removeChild(parentdiv);
+              enlighten();
           });
-        var observer = {
-          onPostEffect: function()
-            {
-              parentdiv.parentNode.removeChild(parentdiv);
-              enlighten();
-            }
-          };
-        effect.addObserver(observer);
-        effect.start();
       }
     }
     panel.appendChild(closer);
@@ -333,8 +325,8 @@
     
     // calculate position of the box
     // box should be exactly 640px high, 480px wide
-    var top = ( getHeight() / 2 ) - ( $(box).Height() / 2 ) + getScrollOffset();
-    var left = ( getWidth() / 2 ) - ( $(box).Width() / 2 );
+    var top = ( getHeight() / 2 ) - ( $dynano(box).Height() / 2 ) + getScrollOffset();
+    var left = ( getWidth() / 2 ) - ( $dynano(box).Width() / 2 );
     console.debug('top = %d, left = %d', top, left);
     box.style.top = top + 'px';
     box.style.left = left + 'px';
@@ -352,11 +344,7 @@
       
       setTimeout(function()
         {
-          (new Spry.Effect.Blind(box, {
-              from: '0%',
-              to: '100%',
-              duration: 1000
-            })).start();
+          $(box).show("blind", {}, 1000);
         }, 1000);
     }
   return false;
@@ -577,10 +565,10 @@
 // draw a white ajax-ey "loading" box over an object
 function whiteOutElement(el)
 {
-  var top = $(el).Top();
-  var left = $(el).Left();
-  var width = $(el).Width();
-  var height = $(el).Height();
+  var top = $dynano(el).Top();
+  var left = $dynano(el).Left();
+  var width = $dynano(el).Width();
+  var height = $dynano(el).Height();
   
   var blackout = document.createElement('div');
   // using fixed here allows modal windows to be blacked out
@@ -592,7 +580,7 @@
   
   blackout.style.backgroundColor = '#FFFFFF';
   domObjChangeOpac(60, blackout);
-  var background = ( $(el).Height() < 48 ) ? 'url(' + scriptPath + '/images/loading.gif)' : 'url(' + scriptPath + '/includes/clientside/tinymce/themes/advanced/skins/default/img/progress.gif)';
+  var background = ( $dynano(el).Height() < 48 ) ? 'url(' + scriptPath + '/images/loading.gif)' : 'url(' + scriptPath + '/includes/clientside/tinymce/themes/advanced/skins/default/img/progress.gif)';
   blackout.style.backgroundImage = background;
   blackout.style.backgroundPosition = 'center center';
   blackout.style.backgroundRepeat = 'no-repeat';
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/static/jquery-ui.js	Thu Aug 21 08:24:04 2008 -0400
@@ -0,0 +1,1 @@
+(function(C){jQuery.extend(jQuery.expr[":"],{data:"jQuery.data(a, m[3])"});C.ui={plugin:{add:function(E,F,H){var G=C.ui[E].prototype;for(var D in H){G.plugins[D]=G.plugins[D]||[];G.plugins[D].push([F,H[D]])}},call:function(D,F,E){var H=D.plugins[F];if(!H){return }for(var G=0;G<H.length;G++){if(D.options[H[G][0]]){H[G][1].apply(D.element,E)}}}},cssCache:{},css:function(D){if(C.ui.cssCache[D]){return C.ui.cssCache[D]}var E=C('<div class="ui-gen">').addClass(D).css({position:"absolute",top:"-5000px",left:"-5000px",display:"block"}).appendTo("body");C.ui.cssCache[D]=!!((!(/auto|default/).test(E.css("cursor"))||(/^[1-9]/).test(E.css("height"))||(/^[1-9]/).test(E.css("width"))||!(/none/).test(E.css("backgroundImage"))||!(/transparent|rgba\(0, 0, 0, 0\)/).test(E.css("backgroundColor"))));try{C("body").get(0).removeChild(E.get(0))}catch(F){}return C.ui.cssCache[D]},disableSelection:function(D){C(D).attr("unselectable","on").css("MozUserSelect","none").bind("selectstart",function(){return false})},enableSelection:function(D){C(D).attr("unselectable","off").css("MozUserSelect","").unbind("selectstart")},hasScroll:function(G,E){var D=(E&&E=="left")?"scrollLeft":"scrollTop",F=false;if(G[D]>0){return true}G[D]=1;F=(G[D]>0);G[D]=0;return F}};var B=C.fn.remove;C.fn.remove=function(){C("*",this).add(this).triggerHandler("remove");return B.apply(this,arguments)};function A(E,F,G){var D=C[E][F].getter||[];D=(typeof D=="string"?D.split(/,?\s+/):D);return(C.inArray(G,D)!=-1)}C.widget=function(E,D){var F=E.split(".")[0];E=E.split(".")[1];C.fn[E]=function(J){var H=(typeof J=="string"),I=Array.prototype.slice.call(arguments,1);if(H&&A(F,E,J)){var G=C.data(this[0],E);return(G?G[J].apply(G,I):undefined)}return this.each(function(){var K=C.data(this,E);if(H&&K&&C.isFunction(K[J])){K[J].apply(K,I)}else{if(!H){C.data(this,E,new C[F][E](this,J))}}})};C[F][E]=function(I,H){var G=this;this.widgetName=E;this.widgetEventPrefix=C[F][E].eventPrefix||E;this.widgetBaseClass=F+"-"+E;this.options=C.extend({},C.widget.defaults,C[F][E].defaults,H);this.element=C(I).bind("setData."+E,function(L,J,K){return G.setData(J,K)}).bind("getData."+E,function(K,J){return G.getData(J)}).bind("remove",function(){return G.destroy()});this.init()};C[F][E].prototype=C.extend({},C.widget.prototype,D)};C.widget.prototype={init:function(){},destroy:function(){this.element.removeData(this.widgetName)},getData:function(D){return this.options[D]},setData:function(D,E){this.options[D]=E;if(D=="disabled"){this.element[E?"addClass":"removeClass"](this.widgetBaseClass+"-disabled")}},enable:function(){this.setData("disabled",false)},disable:function(){this.setData("disabled",true)},trigger:function(E,G,F){var D=(E==this.widgetEventPrefix?E:this.widgetEventPrefix+E);G=G||C.event.fix({type:D,target:this.element[0]});return this.element.triggerHandler(D,[G,F],this.options[E])}};C.widget.defaults={disabled:false};C.ui.mouse={mouseInit:function(){var D=this;this.element.bind("mousedown."+this.widgetName,function(E){return D.mouseDown(E)});if(C.browser.msie){this._mouseUnselectable=this.element.attr("unselectable");this.element.attr("unselectable","on")}this.started=false},mouseDestroy:function(){this.element.unbind("."+this.widgetName);(C.browser.msie&&this.element.attr("unselectable",this._mouseUnselectable))},mouseDown:function(F){(this._mouseStarted&&this.mouseUp(F));this._mouseDownEvent=F;var E=this,G=(F.which==1),D=(typeof this.options.cancel=="string"?C(F.target).parents().add(F.target).filter(this.options.cancel).length:false);if(!G||D||!this.mouseCapture(F)){return true}this._mouseDelayMet=!this.options.delay;if(!this._mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){E._mouseDelayMet=true},this.options.delay)}if(this.mouseDistanceMet(F)&&this.mouseDelayMet(F)){this._mouseStarted=(this.mouseStart(F)!==false);if(!this._mouseStarted){F.preventDefault();return true}}this._mouseMoveDelegate=function(H){return E.mouseMove(H)};this._mouseUpDelegate=function(H){return E.mouseUp(H)};C(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);return false},mouseMove:function(D){if(C.browser.msie&&!D.button){return this.mouseUp(D)}if(this._mouseStarted){this.mouseDrag(D);return false}if(this.mouseDistanceMet(D)&&this.mouseDelayMet(D)){this._mouseStarted=(this.mouseStart(this._mouseDownEvent,D)!==false);(this._mouseStarted?this.mouseDrag(D):this.mouseUp(D))}return !this._mouseStarted},mouseUp:function(D){C(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this.mouseStop(D)}return false},mouseDistanceMet:function(D){return(Math.max(Math.abs(this._mouseDownEvent.pageX-D.pageX),Math.abs(this._mouseDownEvent.pageY-D.pageY))>=this.options.distance)},mouseDelayMet:function(D){return this._mouseDelayMet},mouseStart:function(D){},mouseDrag:function(D){},mouseStop:function(D){},mouseCapture:function(D){return true}};C.ui.mouse.defaults={cancel:null,distance:1,delay:0}})(jQuery);(function(A){A.widget("ui.draggable",A.extend({},A.ui.mouse,{init:function(){if(this.options.helper=="original"&&!(/^(?:r|a|f)/).test(this.element.css("position"))){this.element[0].style.position="relative"}(this.options.cssNamespace&&this.element.addClass(this.options.cssNamespace+"-draggable"));(this.options.disabled&&this.element.addClass("ui-draggable-disabled"));this.mouseInit()},mouseStart:function(F){var H=this.options;if(this.helper||H.disabled||A(F.target).is(".ui-resizable-handle")){return false}var C=!this.options.handle||!A(this.options.handle,this.element).length?true:false;A(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==F.target){C=true}});if(!C){return false}if(A.ui.ddmanager){A.ui.ddmanager.current=this}this.helper=A.isFunction(H.helper)?A(H.helper.apply(this.element[0],[F])):(H.helper=="clone"?this.element.clone():this.element);if(!this.helper.parents("body").length){this.helper.appendTo((H.appendTo=="parent"?this.element[0].parentNode:H.appendTo))}if(this.helper[0]!=this.element[0]&&!(/(fixed|absolute)/).test(this.helper.css("position"))){this.helper.css("position","absolute")}this.margins={left:(parseInt(this.element.css("marginLeft"),10)||0),top:(parseInt(this.element.css("marginTop"),10)||0)};this.cssPosition=this.helper.css("position");this.offset=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.offset.click={left:F.pageX-this.offset.left,top:F.pageY-this.offset.top};this.scrollTopParent=function(I){do{if(/auto|scroll/.test(I.css("overflow"))||(/auto|scroll/).test(I.css("overflow-y"))){return I}I=I.parent()}while(I[0].parentNode);return A(document)}(this.helper);this.scrollLeftParent=function(I){do{if(/auto|scroll/.test(I.css("overflow"))||(/auto|scroll/).test(I.css("overflow-x"))){return I}I=I.parent()}while(I[0].parentNode);return A(document)}(this.helper);this.offsetParent=this.helper.offsetParent();var B=this.offsetParent.offset();if(this.offsetParent[0]==document.body&&A.browser.mozilla){B={top:0,left:0}}this.offset.parent={top:B.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:B.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)};var E=this.element.position();this.offset.relative=this.cssPosition=="relative"?{top:E.top-(parseInt(this.helper.css("top"),10)||0)+(this.scrollTopParent[0].scrollTop||0),left:E.left-(parseInt(this.helper.css("left"),10)||0)+(this.scrollLeftParent[0].scrollLeft||0)}:{top:0,left:0};this.originalPosition=this.generatePosition(F);this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()};if(H.cursorAt){if(H.cursorAt.left!=undefined){this.offset.click.left=H.cursorAt.left+this.margins.left}if(H.cursorAt.right!=undefined){this.offset.click.left=this.helperProportions.width-H.cursorAt.right+this.margins.left}if(H.cursorAt.top!=undefined){this.offset.click.top=H.cursorAt.top+this.margins.top}if(H.cursorAt.bottom!=undefined){this.offset.click.top=this.helperProportions.height-H.cursorAt.bottom+this.margins.top}}if(H.containment){if(H.containment=="parent"){H.containment=this.helper[0].parentNode}if(H.containment=="document"||H.containment=="window"){this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,A(H.containment=="document"?document:window).width()-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),(A(H.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)]}if(!(/^(document|window|parent)$/).test(H.containment)){var D=A(H.containment)[0];var G=A(H.containment).offset();this.containment=[G.left+(parseInt(A(D).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left,G.top+(parseInt(A(D).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top,G.left+Math.max(D.scrollWidth,D.offsetWidth)-(parseInt(A(D).css("borderLeftWidth"),10)||0)-this.offset.relative.left-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),G.top+Math.max(D.scrollHeight,D.offsetHeight)-(parseInt(A(D).css("borderTopWidth"),10)||0)-this.offset.relative.top-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)]}}this.propagate("start",F);this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()};if(A.ui.ddmanager&&!H.dropBehaviour){A.ui.ddmanager.prepareOffsets(this,F)}this.helper.addClass("ui-draggable-dragging");this.mouseDrag(F);return true},convertPositionTo:function(C,D){if(!D){D=this.position}var B=C=="absolute"?1:-1;return{top:(D.top+this.offset.relative.top*B+this.offset.parent.top*B-(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:(this.scrollTopParent[0].scrollTop||0))*B+(this.cssPosition=="fixed"?A(document).scrollTop():0)*B+this.margins.top*B),left:(D.left+this.offset.relative.left*B+this.offset.parent.left*B-(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:(this.scrollLeftParent[0].scrollLeft||0))*B+(this.cssPosition=="fixed"?A(document).scrollLeft():0)*B+this.margins.left*B)}},generatePosition:function(E){var F=this.options;var B={top:(E.pageY-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:(this.scrollTopParent[0].scrollTop||0))-(this.cssPosition=="fixed"?A(document).scrollTop():0)),left:(E.pageX-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition=="fixed"||(this.cssPosition=="absolute"&&this.offsetParent[0]==document.body)?0:(this.scrollLeftParent[0].scrollLeft||0))-(this.cssPosition=="fixed"?A(document).scrollLeft():0))};if(!this.originalPosition){return B}if(this.containment){if(B.left<this.containment[0]){B.left=this.containment[0]}if(B.top<this.containment[1]){B.top=this.containment[1]}if(B.left>this.containment[2]){B.left=this.containment[2]}if(B.top>this.containment[3]){B.top=this.containment[3]}}if(F.grid){var D=this.originalPosition.top+Math.round((B.top-this.originalPosition.top)/F.grid[1])*F.grid[1];B.top=this.containment?(!(D<this.containment[1]||D>this.containment[3])?D:(!(D<this.containment[1])?D-F.grid[1]:D+F.grid[1])):D;var C=this.originalPosition.left+Math.round((B.left-this.originalPosition.left)/F.grid[0])*F.grid[0];B.left=this.containment?(!(C<this.containment[0]||C>this.containment[2])?C:(!(C<this.containment[0])?C-F.grid[0]:C+F.grid[0])):C}return B},mouseDrag:function(B){this.position=this.generatePosition(B);this.positionAbs=this.convertPositionTo("absolute");this.position=this.propagate("drag",B)||this.position;if(!this.options.axis||this.options.axis!="y"){this.helper[0].style.left=this.position.left+"px"}if(!this.options.axis||this.options.axis!="x"){this.helper[0].style.top=this.position.top+"px"}if(A.ui.ddmanager){A.ui.ddmanager.drag(this,B)}return false},mouseStop:function(C){var D=false;if(A.ui.ddmanager&&!this.options.dropBehaviour){var D=A.ui.ddmanager.drop(this,C)}if((this.options.revert=="invalid"&&!D)||(this.options.revert=="valid"&&D)||this.options.revert===true){var B=this;A(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10)||500,function(){B.propagate("stop",C);B.clear()})}else{this.propagate("stop",C);this.clear()}return false},clear:function(){this.helper.removeClass("ui-draggable-dragging");if(this.options.helper!="original"&&!this.cancelHelperRemoval){this.helper.remove()}this.helper=null;this.cancelHelperRemoval=false},plugins:{},uiHash:function(B){return{helper:this.helper,position:this.position,absolutePosition:this.positionAbs,options:this.options}},propagate:function(C,B){A.ui.plugin.call(this,C,[B,this.uiHash()]);if(C=="drag"){this.positionAbs=this.convertPositionTo("absolute")}return this.element.triggerHandler(C=="drag"?C:"drag"+C,[B,this.uiHash()],this.options[C])},destroy:function(){if(!this.element.data("draggable")){return }this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable-dragging ui-draggable-disabled");this.mouseDestroy()}}));A.extend(A.ui.draggable,{defaults:{appendTo:"parent",axis:false,cancel:":input",delay:0,distance:1,helper:"original",scope:"default",cssNamespace:"ui"}});A.ui.plugin.add("draggable","cursor",{start:function(D,C){var B=A("body");if(B.css("cursor")){C.options._cursor=B.css("cursor")}B.css("cursor",C.options.cursor)},stop:function(C,B){if(B.options._cursor){A("body").css("cursor",B.options._cursor)}}});A.ui.plugin.add("draggable","zIndex",{start:function(D,C){var B=A(C.helper);if(B.css("zIndex")){C.options._zIndex=B.css("zIndex")}B.css("zIndex",C.options.zIndex)},stop:function(C,B){if(B.options._zIndex){A(B.helper).css("zIndex",B.options._zIndex)}}});A.ui.plugin.add("draggable","opacity",{start:function(D,C){var B=A(C.helper);if(B.css("opacity")){C.options._opacity=B.css("opacity")}B.css("opacity",C.options.opacity)},stop:function(C,B){if(B.options._opacity){A(B.helper).css("opacity",B.options._opacity)}}});A.ui.plugin.add("draggable","iframeFix",{start:function(C,B){A(B.options.iframeFix===true?"iframe":B.options.iframeFix).each(function(){A('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1000}).css(A(this).offset()).appendTo("body")})},stop:function(C,B){A("div.DragDropIframeFix").each(function(){this.parentNode.removeChild(this)})}});A.ui.plugin.add("draggable","scroll",{start:function(D,C){var E=C.options;var B=A(this).data("draggable");E.scrollSensitivity=E.scrollSensitivity||20;E.scrollSpeed=E.scrollSpeed||20;B.overflowY=function(F){do{if(/auto|scroll/.test(F.css("overflow"))||(/auto|scroll/).test(F.css("overflow-y"))){return F}F=F.parent()}while(F[0].parentNode);return A(document)}(this);B.overflowX=function(F){do{if(/auto|scroll/.test(F.css("overflow"))||(/auto|scroll/).test(F.css("overflow-x"))){return F}F=F.parent()}while(F[0].parentNode);return A(document)}(this);if(B.overflowY[0]!=document&&B.overflowY[0].tagName!="HTML"){B.overflowYOffset=B.overflowY.offset()}if(B.overflowX[0]!=document&&B.overflowX[0].tagName!="HTML"){B.overflowXOffset=B.overflowX.offset()}},drag:function(E,D){var F=D.options,B=false;var C=A(this).data("draggable");if(C.overflowY[0]!=document&&C.overflowY[0].tagName!="HTML"){if((C.overflowYOffset.top+C.overflowY[0].offsetHeight)-E.pageY<F.scrollSensitivity){C.overflowY[0].scrollTop=B=C.overflowY[0].scrollTop+F.scrollSpeed}if(E.pageY-C.overflowYOffset.top<F.scrollSensitivity){C.overflowY[0].scrollTop=B=C.overflowY[0].scrollTop-F.scrollSpeed}}else{if(E.pageY-A(document).scrollTop()<F.scrollSensitivity){B=A(document).scrollTop(A(document).scrollTop()-F.scrollSpeed)}if(A(window).height()-(E.pageY-A(document).scrollTop())<F.scrollSensitivity){B=A(document).scrollTop(A(document).scrollTop()+F.scrollSpeed)}}if(C.overflowX[0]!=document&&C.overflowX[0].tagName!="HTML"){if((C.overflowXOffset.left+C.overflowX[0].offsetWidth)-E.pageX<F.scrollSensitivity){C.overflowX[0].scrollLeft=B=C.overflowX[0].scrollLeft+F.scrollSpeed}if(E.pageX-C.overflowXOffset.left<F.scrollSensitivity){C.overflowX[0].scrollLeft=B=C.overflowX[0].scrollLeft-F.scrollSpeed}}else{if(E.pageX-A(document).scrollLeft()<F.scrollSensitivity){B=A(document).scrollLeft(A(document).scrollLeft()-F.scrollSpeed)}if(A(window).width()-(E.pageX-A(document).scrollLeft())<F.scrollSensitivity){B=A(document).scrollLeft(A(document).scrollLeft()+F.scrollSpeed)}}if(B!==false){A.ui.ddmanager.prepareOffsets(C,E)}}});A.ui.plugin.add("draggable","snap",{start:function(D,C){var B=A(this).data("draggable");B.snapElements=[];A(C.options.snap.constructor!=String?(C.options.snap.items||":data(draggable)"):C.options.snap).each(function(){var F=A(this);var E=F.offset();if(this!=B.element[0]){B.snapElements.push({item:this,width:F.outerWidth(),height:F.outerHeight(),top:E.top,left:E.left})}})},drag:function(P,K){var E=A(this).data("draggable");var Q=K.options.snapTolerance||20;var O=K.absolutePosition.left,N=O+E.helperProportions.width,D=K.absolutePosition.top,C=D+E.helperProportions.height;for(var M=E.snapElements.length-1;M>=0;M--){var L=E.snapElements[M].left,J=L+E.snapElements[M].width,I=E.snapElements[M].top,S=I+E.snapElements[M].height;if(!((L-Q<O&&O<J+Q&&I-Q<D&&D<S+Q)||(L-Q<O&&O<J+Q&&I-Q<C&&C<S+Q)||(L-Q<N&&N<J+Q&&I-Q<D&&D<S+Q)||(L-Q<N&&N<J+Q&&I-Q<C&&C<S+Q))){if(E.snapElements[M].snapping){(E.options.snap.release&&E.options.snap.release.call(E.element,null,A.extend(E.uiHash(),{snapItem:E.snapElements[M].item})))}E.snapElements[M].snapping=false;continue}if(K.options.snapMode!="inner"){var B=Math.abs(I-C)<=Q;var R=Math.abs(S-D)<=Q;var G=Math.abs(L-N)<=Q;var H=Math.abs(J-O)<=Q;if(B){K.position.top=E.convertPositionTo("relative",{top:I-E.helperProportions.height,left:0}).top}if(R){K.position.top=E.convertPositionTo("relative",{top:S,left:0}).top}if(G){K.position.left=E.convertPositionTo("relative",{top:0,left:L-E.helperProportions.width}).left}if(H){K.position.left=E.convertPositionTo("relative",{top:0,left:J}).left}}var F=(B||R||G||H);if(K.options.snapMode!="outer"){var B=Math.abs(I-D)<=Q;var R=Math.abs(S-C)<=Q;var G=Math.abs(L-O)<=Q;var H=Math.abs(J-N)<=Q;if(B){K.position.top=E.convertPositionTo("relative",{top:I,left:0}).top}if(R){K.position.top=E.convertPositionTo("relative",{top:S-E.helperProportions.height,left:0}).top}if(G){K.position.left=E.convertPositionTo("relative",{top:0,left:L}).left}if(H){K.position.left=E.convertPositionTo("relative",{top:0,left:J-E.helperProportions.width}).left}}if(!E.snapElements[M].snapping&&(B||R||G||H||F)){(E.options.snap.snap&&E.options.snap.snap.call(E.element,null,A.extend(E.uiHash(),{snapItem:E.snapElements[M].item})))}E.snapElements[M].snapping=(B||R||G||H||F)}}});A.ui.plugin.add("draggable","connectToSortable",{start:function(D,C){var B=A(this).data("draggable");B.sortables=[];A(C.options.connectToSortable).each(function(){if(A.data(this,"sortable")){var E=A.data(this,"sortable");B.sortables.push({instance:E,shouldRevert:E.options.revert});E.refreshItems();E.propagate("activate",D,B)}})},stop:function(D,C){var B=A(this).data("draggable");A.each(B.sortables,function(){if(this.instance.isOver){this.instance.isOver=0;B.cancelHelperRemoval=true;this.instance.cancelHelperRemoval=false;if(this.shouldRevert){this.instance.options.revert=true}this.instance.mouseStop(D);this.instance.element.triggerHandler("sortreceive",[D,A.extend(this.instance.ui(),{sender:B.element})],this.instance.options.receive);this.instance.options.helper=this.instance.options._helper}else{this.instance.propagate("deactivate",D,B)}})},drag:function(F,E){var D=A(this).data("draggable"),B=this;var C=function(K){var H=K.left,J=H+K.width,I=K.top,G=I+K.height;return(H<(this.positionAbs.left+this.offset.click.left)&&(this.positionAbs.left+this.offset.click.left)<J&&I<(this.positionAbs.top+this.offset.click.top)&&(this.positionAbs.top+this.offset.click.top)<G)};A.each(D.sortables,function(G){if(C.call(D,this.instance.containerCache)){if(!this.instance.isOver){this.instance.isOver=1;this.instance.currentItem=A(B).clone().appendTo(this.instance.element).data("sortable-item",true);this.instance.options._helper=this.instance.options.helper;this.instance.options.helper=function(){return E.helper[0]};F.target=this.instance.currentItem[0];this.instance.mouseCapture(F,true);this.instance.mouseStart(F,true,true);this.instance.offset.click.top=D.offset.click.top;this.instance.offset.click.left=D.offset.click.left;this.instance.offset.parent.left-=D.offset.parent.left-this.instance.offset.parent.left;this.instance.offset.parent.top-=D.offset.parent.top-this.instance.offset.parent.top;D.propagate("toSortable",F)}if(this.instance.currentItem){this.instance.mouseDrag(F)}}else{if(this.instance.isOver){this.instance.isOver=0;this.instance.cancelHelperRemoval=true;this.instance.options.revert=false;this.instance.mouseStop(F,true);this.instance.options.helper=this.instance.options._helper;this.instance.currentItem.remove();if(this.instance.placeholder){this.instance.placeholder.remove()}D.propagate("fromSortable",F)}}})}});A.ui.plugin.add("draggable","stack",{start:function(D,B){var C=A.makeArray(A(B.options.stack.group)).sort(function(F,E){return(parseInt(A(F).css("zIndex"),10)||B.options.stack.min)-(parseInt(A(E).css("zIndex"),10)||B.options.stack.min)});A(C).each(function(E){this.style.zIndex=B.options.stack.min+E});this[0].style.zIndex=B.options.stack.min+C.length}})})(jQuery);(function(B){function A(E,D){var C=B.browser.safari&&B.browser.version<522;if(E.contains&&!C){return E.contains(D)}if(E.compareDocumentPosition){return !!(E.compareDocumentPosition(D)&16)}while(D=D.parentNode){if(D==E){return true}}return false}B.widget("ui.sortable",B.extend({},B.ui.mouse,{init:function(){var C=this.options;this.containerCache={};this.element.addClass("ui-sortable");this.refresh();this.floating=this.items.length?(/left|right/).test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this.mouseInit()},plugins:{},ui:function(C){return{helper:(C||this)["helper"],placeholder:(C||this)["placeholder"]||B([]),position:(C||this)["position"],absolutePosition:(C||this)["positionAbs"],options:this.options,element:this.element,item:(C||this)["currentItem"],sender:C?C.element:null}},propagate:function(F,E,C,D){B.ui.plugin.call(this,F,[E,this.ui(C)]);if(!D){this.element.triggerHandler(F=="sort"?F:"sort"+F,[E,this.ui(C)],this.options[F])}},serialize:function(E){var C=this.getItemsAsjQuery(E&&E.connected);var D=[];E=E||{};B(C).each(function(){var F=(B(this.item||this).attr(E.attribute||"id")||"").match(E.expression||(/(.+)[-=_](.+)/));if(F){D.push((E.key||F[1])+"[]="+(E.key&&E.expression?F[1]:F[2]))}});return D.join("&")},toArray:function(C){var D=this.getItemsAsjQuery(o&&o.connected);var E=[];D.each(function(){E.push(B(this).attr(C||"id"))});return E},intersectsWith:function(L){var E=this.positionAbs.left,D=E+this.helperProportions.width,K=this.positionAbs.top,J=K+this.helperProportions.height;var F=L.left,C=F+L.width,M=L.top,I=M+L.height;var N=this.offset.click.top,H=this.offset.click.left;var G=(K+N)>M&&(K+N)<I&&(E+H)>F&&(E+H)<C;if(this.options.tolerance=="pointer"||this.options.forcePointerForContainers||(this.options.tolerance=="guess"&&this.helperProportions[this.floating?"width":"height"]>L[this.floating?"width":"height"])){return G}else{return(F<E+(this.helperProportions.width/2)&&D-(this.helperProportions.width/2)<C&&M<K+(this.helperProportions.height/2)&&J-(this.helperProportions.height/2)<I)}},intersectsWithEdge:function(N){var E=this.positionAbs.left,D=E+this.helperProportions.width,L=this.positionAbs.top,J=L+this.helperProportions.height;var F=N.left,C=F+N.width,O=N.top,I=O+N.height;var P=this.offset.click.top,H=this.offset.click.left;var G=(L+P)>O&&(L+P)<I&&(E+H)>F&&(E+H)<C;if(this.options.tolerance=="pointer"||(this.options.tolerance=="guess"&&this.helperProportions[this.floating?"width":"height"]>N[this.floating?"width":"height"])){if(!G){return false}if(this.floating){if((E+H)>F&&(E+H)<F+N.width/2){return 2}if((E+H)>F+N.width/2&&(E+H)<C){return 1}}else{var M=N.height;var K=L-this.updateOriginalPosition.top<0?2:1;if(K==1&&(L+P)<O+M/2){return 2}else{if(K==2&&(L+P)>O+M/2){return 1}}}}else{if(!(F<E+(this.helperProportions.width/2)&&D-(this.helperProportions.width/2)<C&&O<L+(this.helperProportions.height/2)&&J-(this.helperProportions.height/2)<I)){return false}if(this.floating){if(D>F&&E<F){return 2}if(E<C&&D>C){return 1}}else{if(J>O&&L<O){return 1}if(L<I&&J>I){return 2}}}return false},refresh:function(){this.refreshItems();this.refreshPositions()},getItemsAsjQuery:function(H){var D=this;var C=[];var F=[];if(this.options.connectWith&&H){for(var G=this.options.connectWith.length-1;G>=0;G--){var J=B(this.options.connectWith[G]);for(var E=J.length-1;E>=0;E--){var I=B.data(J[E],"sortable");if(I&&I!=this&&!I.options.disabled){F.push([B.isFunction(I.options.items)?I.options.items.call(I.element):B(I.options.items,I.element).not(".ui-sortable-helper"),I])}}}}F.push([B.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):B(this.options.items,this.element).not(".ui-sortable-helper"),this]);for(var G=F.length-1;G>=0;G--){F[G][0].each(function(){C.push(this)})}return B(C)},removeCurrentsFromItems:function(){var E=this.currentItem.find(":data(sortable-item)");for(var D=0;D<this.items.length;D++){for(var C=0;C<E.length;C++){if(E[C]==this.items[D].item[0]){this.items.splice(D,1)}}}},refreshItems:function(){this.items=[];this.containers=[this];var D=this.items;var C=this;var F=[[B.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):B(this.options.items,this.element),this]];if(this.options.connectWith){for(var G=this.options.connectWith.length-1;G>=0;G--){var I=B(this.options.connectWith[G]);for(var E=I.length-1;E>=0;E--){var H=B.data(I[E],"sortable");if(H&&H!=this&&!H.options.disabled){F.push([B.isFunction(H.options.items)?H.options.items.call(H.element):B(H.options.items,H.element),H]);this.containers.push(H)}}}}for(var G=F.length-1;G>=0;G--){F[G][0].each(function(){B.data(this,"sortable-item",F[G][1]);D.push({item:B(this),instance:F[G][1],width:0,height:0,left:0,top:0})})}},refreshPositions:function(D){if(this.offsetParent){var C=this.offsetParent.offset();this.offset.parent={top:C.top+this.offsetParentBorders.top,left:C.left+this.offsetParentBorders.left}}for(var F=this.items.length-1;F>=0;F--){if(this.items[F].instance!=this.currentContainer&&this.currentContainer&&this.items[F].item[0]!=this.currentItem[0]){continue}var E=this.options.toleranceElement?B(this.options.toleranceElement,this.items[F].item):this.items[F].item;if(!D){this.items[F].width=E[0].offsetWidth;this.items[F].height=E[0].offsetHeight}var G=E.offset();this.items[F].left=G.left;this.items[F].top=G.top}if(this.options.custom&&this.options.custom.refreshContainers){this.options.custom.refreshContainers.call(this)}else{for(var F=this.containers.length-1;F>=0;F--){var G=this.containers[F].element.offset();this.containers[F].containerCache.left=G.left;this.containers[F].containerCache.top=G.top;this.containers[F].containerCache.width=this.containers[F].element.outerWidth();this.containers[F].containerCache.height=this.containers[F].element.outerHeight()}}},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this.mouseDestroy();for(var C=this.items.length-1;C>=0;C--){this.items[C].item.removeData("sortable-item")}},createPlaceholder:function(E){var C=E||this,F=C.options;if(!F.placeholder||F.placeholder.constructor==String){var D=F.placeholder;F.placeholder={element:function(){var G=B(document.createElement(C.currentItem[0].nodeName)).addClass(D||"ui-sortable-placeholder")[0];if(!D){G.style.visibility="hidden";G.innerHTML=C.currentItem[0].innerHTML}return G},update:function(G,H){if(D){return }if(!H.height()){H.height(C.currentItem.innerHeight())}if(!H.width()){H.width(C.currentItem.innerWidth())}}}}C.placeholder=B(F.placeholder.element.call(C.element,C.currentItem)).appendTo(C.currentItem.parent());C.currentItem.before(C.placeholder);F.placeholder.update(C,C.placeholder)},contactContainers:function(F){for(var D=this.containers.length-1;D>=0;D--){if(this.intersectsWith(this.containers[D].containerCache)){if(!this.containers[D].containerCache.over){if(this.currentContainer!=this.containers[D]){var I=10000;var H=null;var E=this.positionAbs[this.containers[D].floating?"left":"top"];for(var C=this.items.length-1;C>=0;C--){if(!A(this.containers[D].element[0],this.items[C].item[0])){continue}var G=this.items[C][this.containers[D].floating?"left":"top"];if(Math.abs(G-E)<I){I=Math.abs(G-E);H=this.items[C]}}if(!H&&!this.options.dropOnEmpty){continue}this.currentContainer=this.containers[D];H?this.options.sortIndicator.call(this,F,H,null,true):this.options.sortIndicator.call(this,F,null,this.containers[D].element,true);this.propagate("change",F);this.containers[D].propagate("change",F,this);this.options.placeholder.update(this.currentContainer,this.placeholder)}this.containers[D].propagate("over",F,this);this.containers[D].containerCache.over=1}}else{if(this.containers[D].containerCache.over){this.containers[D].propagate("out",F,this);this.containers[D].containerCache.over=0}}}},mouseCapture:function(G,F){if(this.options.disabled||this.options.type=="static"){return false}this.refreshItems();var E=null,D=this,C=B(G.target).parents().each(function(){if(B.data(this,"sortable-item")==D){E=B(this);return false}});if(B.data(G.target,"sortable-item")==D){E=B(G.target)}if(!E){return false}if(this.options.handle&&!F){var H=false;B(this.options.handle,E).find("*").andSelf().each(function(){if(this==G.target){H=true}});if(!H){return false}}this.currentItem=E;this.removeCurrentsFromItems();return true},mouseStart:function(H,F,C){var J=this.options;this.currentContainer=this;this.refreshPositions();this.helper=typeof J.helper=="function"?B(J.helper.apply(this.element[0],[H,this.currentItem])):(J.helper=="original"?this.currentItem:this.currentItem.clone());if(!this.helper.parents("body").length){B(J.appendTo!="parent"?J.appendTo:this.currentItem[0].parentNode)[0].appendChild(this.helper[0])}this.margins={left:(parseInt(this.currentItem.css("marginLeft"),10)||0),top:(parseInt(this.currentItem.css("marginTop"),10)||0)};this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.offset.click={left:H.pageX-this.offset.left,top:H.pageY-this.offset.top};this.offsetParent=this.helper.offsetParent();var D=this.offsetParent.offset();this.offsetParentBorders={top:(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)};this.offset.parent={top:D.top+this.offsetParentBorders.top,left:D.left+this.offsetParentBorders.left};this.updateOriginalPosition=this.originalPosition=this.generatePosition(H);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()};if(J.helper=="original"){this._storedCSS={position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left"),clear:this.currentItem.css("clear")}}if(J.helper!="original"){this.currentItem.hide()}this.helper.css({position:"absolute",clear:"both"}).addClass("ui-sortable-helper");this.createPlaceholder();this.propagate("start",H);if(!this._preserveHelperProportions){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}}if(J.cursorAt){if(J.cursorAt.left!=undefined){this.offset.click.left=J.cursorAt.left}if(J.cursorAt.right!=undefined){this.offset.click.left=this.helperProportions.width-J.cursorAt.right}if(J.cursorAt.top!=undefined){this.offset.click.top=J.cursorAt.top}if(J.cursorAt.bottom!=undefined){this.offset.click.top=this.helperProportions.height-J.cursorAt.bottom}}if(J.containment){if(J.containment=="parent"){J.containment=this.helper[0].parentNode}if(J.containment=="document"||J.containment=="window"){this.containment=[0-this.offset.parent.left,0-this.offset.parent.top,B(J.containment=="document"?document:window).width()-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.element.css("marginRight"),10)||0),(B(J.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.element.css("marginBottom"),10)||0)]}if(!(/^(document|window|parent)$/).test(J.containment)){var G=B(J.containment)[0];var I=B(J.containment).offset();this.containment=[I.left+(parseInt(B(G).css("borderLeftWidth"),10)||0)-this.offset.parent.left,I.top+(parseInt(B(G).css("borderTopWidth"),10)||0)-this.offset.parent.top,I.left+Math.max(G.scrollWidth,G.offsetWidth)-(parseInt(B(G).css("borderLeftWidth"),10)||0)-this.offset.parent.left-this.helperProportions.width-this.margins.left-(parseInt(this.currentItem.css("marginRight"),10)||0),I.top+Math.max(G.scrollHeight,G.offsetHeight)-(parseInt(B(G).css("borderTopWidth"),10)||0)-this.offset.parent.top-this.helperProportions.height-this.margins.top-(parseInt(this.currentItem.css("marginBottom"),10)||0)]}}if(!C){for(var E=this.containers.length-1;E>=0;E--){this.containers[E].propagate("activate",H,this)}}if(B.ui.ddmanager){B.ui.ddmanager.current=this}if(B.ui.ddmanager&&!J.dropBehaviour){B.ui.ddmanager.prepareOffsets(this,H)}this.dragging=true;this.mouseDrag(H);return true},convertPositionTo:function(D,E){if(!E){E=this.position}var C=D=="absolute"?1:-1;return{top:(E.top+this.offset.parent.top*C-(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)*C+this.margins.top*C),left:(E.left+this.offset.parent.left*C-(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft)*C+this.margins.left*C)}},generatePosition:function(F){var G=this.options;var C={top:(F.pageY-this.offset.click.top-this.offset.parent.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)),left:(F.pageX-this.offset.click.left-this.offset.parent.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft))};if(!this.originalPosition){return C}if(this.containment){if(C.left<this.containment[0]){C.left=this.containment[0]}if(C.top<this.containment[1]){C.top=this.containment[1]}if(C.left>this.containment[2]){C.left=this.containment[2]}if(C.top>this.containment[3]){C.top=this.containment[3]}}if(G.grid){var E=this.originalPosition.top+Math.round((C.top-this.originalPosition.top)/G.grid[1])*G.grid[1];C.top=this.containment?(!(E<this.containment[1]||E>this.containment[3])?E:(!(E<this.containment[1])?E-G.grid[1]:E+G.grid[1])):E;var D=this.originalPosition.left+Math.round((C.left-this.originalPosition.left)/G.grid[0])*G.grid[0];C.left=this.containment?(!(D<this.containment[0]||D>this.containment[2])?D:(!(D<this.containment[0])?D-G.grid[0]:D+G.grid[0])):D}return C},mouseDrag:function(D){this.position=this.generatePosition(D);this.positionAbs=this.convertPositionTo("absolute");B.ui.plugin.call(this,"sort",[D,this.ui()]);this.positionAbs=this.convertPositionTo("absolute");this.helper[0].style.left=this.position.left+"px";this.helper[0].style.top=this.position.top+"px";for(var C=this.items.length-1;C>=0;C--){var E=this.intersectsWithEdge(this.items[C]);if(!E){continue}if(this.items[C].item[0]!=this.currentItem[0]&&this.placeholder[E==1?"next":"prev"]()[0]!=this.items[C].item[0]&&!A(this.placeholder[0],this.items[C].item[0])&&(this.options.type=="semi-dynamic"?!A(this.element[0],this.items[C].item[0]):true)){this.updateOriginalPosition=this.generatePosition(D);this.direction=E==1?"down":"up";this.options.sortIndicator.call(this,D,this.items[C]);this.propagate("change",D);break}}this.contactContainers(D);if(B.ui.ddmanager){B.ui.ddmanager.drag(this,D)}this.element.triggerHandler("sort",[D,this.ui()],this.options.sort);return false},rearrange:function(H,G,D,F){D?D[0].appendChild(this.placeholder[0]):G.item[0].parentNode.insertBefore(this.placeholder[0],(this.direction=="down"?G.item[0]:G.item[0].nextSibling));this.counter=this.counter?++this.counter:1;var E=this,C=this.counter;window.setTimeout(function(){if(C==E.counter){E.refreshPositions(!F)}},0)},mouseStop:function(E,D){if(B.ui.ddmanager&&!this.options.dropBehaviour){B.ui.ddmanager.drop(this,E)}if(this.options.revert){var C=this;var F=C.placeholder.offset();B(this.helper).animate({left:F.left-this.offset.parent.left-C.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:F.top-this.offset.parent.top-C.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){C.clear(E)})}else{this.clear(E,D)}return false},clear:function(E,D){if(!this._noFinalSort){this.placeholder.before(this.currentItem)}this._noFinalSort=null;if(this.options.helper=="original"){this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else{this.currentItem.show()}if(this.domPosition.prev!=this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!=this.currentItem.parent()[0]){this.propagate("update",E,null,D)}if(!A(this.element[0],this.currentItem[0])){this.propagate("remove",E,null,D);for(var C=this.containers.length-1;C>=0;C--){if(A(this.containers[C].element[0],this.currentItem[0])){this.containers[C].propagate("update",E,this,D);this.containers[C].propagate("receive",E,this,D)}}}for(var C=this.containers.length-1;C>=0;C--){this.containers[C].propagate("deactivate",E,this,D);if(this.containers[C].containerCache.over){this.containers[C].propagate("out",E,this);this.containers[C].containerCache.over=0}}this.dragging=false;if(this.cancelHelperRemoval){this.propagate("stop",E,null,D);return false}this.propagate("beforeStop",E,null,D);this.placeholder.remove();if(this.options.helper!="original"){this.helper.remove()}this.helper=null;this.propagate("stop",E,null,D);return true}}));B.extend(B.ui.sortable,{getter:"serialize toArray",defaults:{helper:"original",tolerance:"guess",distance:1,delay:0,scroll:true,scrollSensitivity:20,scrollSpeed:20,cancel:":input",items:"> *",zIndex:1000,dropOnEmpty:true,appendTo:"parent",sortIndicator:B.ui.sortable.prototype.rearrange,scope:"default"}});B.ui.plugin.add("sortable","cursor",{start:function(E,D){var C=B("body");if(C.css("cursor")){D.options._cursor=C.css("cursor")}C.css("cursor",D.options.cursor)},beforeStop:function(D,C){if(C.options._cursor){B("body").css("cursor",C.options._cursor)}}});B.ui.plugin.add("sortable","zIndex",{start:function(E,D){var C=D.helper;if(C.css("zIndex")){D.options._zIndex=C.css("zIndex")}C.css("zIndex",D.options.zIndex)},beforeStop:function(D,C){if(C.options._zIndex){B(C.helper).css("zIndex",C.options._zIndex)}}});B.ui.plugin.add("sortable","opacity",{start:function(E,D){var C=D.helper;if(C.css("opacity")){D.options._opacity=C.css("opacity")}C.css("opacity",D.options.opacity)},beforeStop:function(D,C){if(C.options._opacity){B(C.helper).css("opacity",C.options._opacity)}}});B.ui.plugin.add("sortable","scroll",{start:function(E,D){var F=D.options;var C=B(this).data("sortable");C.overflowY=function(G){do{if(/auto|scroll/.test(G.css("overflow"))||(/auto|scroll/).test(G.css("overflow-y"))){return G}G=G.parent()}while(G[0].parentNode);return B(document)}(C.currentItem);C.overflowX=function(G){do{if(/auto|scroll/.test(G.css("overflow"))||(/auto|scroll/).test(G.css("overflow-x"))){return G}G=G.parent()}while(G[0].parentNode);return B(document)}(C.currentItem);if(C.overflowY[0]!=document&&C.overflowY[0].tagName!="HTML"){C.overflowYOffset=C.overflowY.offset()}if(C.overflowX[0]!=document&&C.overflowX[0].tagName!="HTML"){C.overflowXOffset=C.overflowX.offset()}},sort:function(E,D){var F=D.options;var C=B(this).data("sortable");if(C.overflowY[0]!=document&&C.overflowY[0].tagName!="HTML"){if((C.overflowYOffset.top+C.overflowY[0].offsetHeight)-E.pageY<F.scrollSensitivity){C.overflowY[0].scrollTop=C.overflowY[0].scrollTop+F.scrollSpeed}if(E.pageY-C.overflowYOffset.top<F.scrollSensitivity){C.overflowY[0].scrollTop=C.overflowY[0].scrollTop-F.scrollSpeed}}else{if(E.pageY-B(document).scrollTop()<F.scrollSensitivity){B(document).scrollTop(B(document).scrollTop()-F.scrollSpeed)}if(B(window).height()-(E.pageY-B(document).scrollTop())<F.scrollSensitivity){B(document).scrollTop(B(document).scrollTop()+F.scrollSpeed)}}if(C.overflowX[0]!=document&&C.overflowX[0].tagName!="HTML"){if((C.overflowXOffset.left+C.overflowX[0].offsetWidth)-E.pageX<F.scrollSensitivity){C.overflowX[0].scrollLeft=C.overflowX[0].scrollLeft+F.scrollSpeed}if(E.pageX-C.overflowXOffset.left<F.scrollSensitivity){C.overflowX[0].scrollLeft=C.overflowX[0].scrollLeft-F.scrollSpeed}}else{if(E.pageX-B(document).scrollLeft()<F.scrollSensitivity){B(document).scrollLeft(B(document).scrollLeft()-F.scrollSpeed)}if(B(window).width()-(E.pageX-B(document).scrollLeft())<F.scrollSensitivity){B(document).scrollLeft(B(document).scrollLeft()+F.scrollSpeed)}}}});B.ui.plugin.add("sortable","axis",{sort:function(E,D){var C=B(this).data("sortable");if(D.options.axis=="y"){C.position.left=C.originalPosition.left}if(D.options.axis=="x"){C.position.top=C.originalPosition.top}}})})(jQuery);(function(C){C.effects=C.effects||{};C.extend(C.effects,{save:function(F,G){for(var E=0;E<G.length;E++){if(G[E]!==null){C.data(F[0],"ec.storage."+G[E],F[0].style[G[E]])}}},restore:function(F,G){for(var E=0;E<G.length;E++){if(G[E]!==null){F.css(G[E],C.data(F[0],"ec.storage."+G[E]))}}},setMode:function(E,F){if(F=="toggle"){F=E.is(":hidden")?"show":"hide"}return F},getBaseline:function(F,G){var H,E;switch(F[0]){case"top":H=0;break;case"middle":H=0.5;break;case"bottom":H=1;break;default:H=F[0]/G.height}switch(F[1]){case"left":E=0;break;case"center":E=0.5;break;case"right":E=1;break;default:E=F[1]/G.width}return{x:E,y:H}},createWrapper:function(F){if(F.parent().attr("id")=="fxWrapper"){return F}var E={width:F.outerWidth({margin:true}),height:F.outerHeight({margin:true}),"float":F.css("float")};F.wrap('<div id="fxWrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>');var I=F.parent();if(F.css("position")=="static"){I.css({position:"relative"});F.css({position:"relative"})}else{var H=F.css("top");if(isNaN(parseInt(H))){H="auto"}var G=F.css("left");if(isNaN(parseInt(G))){G="auto"}I.css({position:F.css("position"),top:H,left:G,zIndex:F.css("z-index")}).show();F.css({position:"relative",top:0,left:0})}I.css(E);return I},removeWrapper:function(E){if(E.parent().attr("id")=="fxWrapper"){return E.parent().replaceWith(E)}return E},setTransition:function(F,G,E,H){H=H||{};C.each(G,function(J,I){unit=F.cssUnit(I);if(unit[0]>0){H[I]=unit[0]*E+unit[1]}});return H},animateClass:function(G,H,J,I){var E=(typeof J=="function"?J:(I?I:null));var F=(typeof J=="object"?J:null);return this.each(function(){var O={};var M=C(this);var N=M.attr("style")||"";if(typeof N=="object"){N=N.cssText}if(G.toggle){M.hasClass(G.toggle)?G.remove=G.toggle:G.add=G.toggle}var K=C.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(G.add){M.addClass(G.add)}if(G.remove){M.removeClass(G.remove)}var L=C.extend({},(document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle));if(G.add){M.removeClass(G.add)}if(G.remove){M.addClass(G.remove)}for(var P in L){if(typeof L[P]!="function"&&L[P]&&P.indexOf("Moz")==-1&&P.indexOf("length")==-1&&L[P]!=K[P]&&(P.match(/color/i)||(!P.match(/color/i)&&!isNaN(parseInt(L[P],10))))&&(K.position!="static"||(K.position=="static"&&!P.match(/left|top|bottom|right/)))){O[P]=L[P]}}M.animate(O,H,F,function(){if(typeof C(this).attr("style")=="object"){C(this).attr("style")["cssText"]="";C(this).attr("style")["cssText"]=N}else{C(this).attr("style",N)}if(G.add){C(this).addClass(G.add)}if(G.remove){C(this).removeClass(G.remove)}if(E){E.apply(this,arguments)}})})}});C.fn.extend({_show:C.fn.show,_hide:C.fn.hide,__toggle:C.fn.toggle,_addClass:C.fn.addClass,_removeClass:C.fn.removeClass,_toggleClass:C.fn.toggleClass,effect:function(E,G,F,H){return C.effects[E]?C.effects[E].call(this,{method:E,options:G||{},duration:F,callback:H}):null},show:function(){if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0]))){return this._show.apply(this,arguments)}else{var E=arguments[1]||{};E.mode="show";return this.effect.apply(this,[arguments[0],E,arguments[2]||E.duration,arguments[3]||E.callback])}},hide:function(){if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0]))){return this._hide.apply(this,arguments)}else{var E=arguments[1]||{};E.mode="hide";return this.effect.apply(this,[arguments[0],E,arguments[2]||E.duration,arguments[3]||E.callback])}},toggle:function(){if(!arguments[0]||(arguments[0].constructor==Number||/(slow|normal|fast)/.test(arguments[0]))||(arguments[0].constructor==Function)){return this.__toggle.apply(this,arguments)}else{var E=arguments[1]||{};E.mode="toggle";return this.effect.apply(this,[arguments[0],E,arguments[2]||E.duration,arguments[3]||E.callback])}},addClass:function(F,E,H,G){return E?C.effects.animateClass.apply(this,[{add:F},E,H,G]):this._addClass(F)},removeClass:function(F,E,H,G){return E?C.effects.animateClass.apply(this,[{remove:F},E,H,G]):this._removeClass(F)},toggleClass:function(F,E,H,G){return E?C.effects.animateClass.apply(this,[{toggle:F},E,H,G]):this._toggleClass(F)},morph:function(E,G,F,I,H){return C.effects.animateClass.apply(this,[{add:G,remove:E},F,I,H])},switchClass:function(){return this.morph.apply(this,arguments)},cssUnit:function(E){var F=this.css(E),G=[];C.each(["em","px","%","pt"],function(H,I){if(F.indexOf(I)>0){G=[parseFloat(F),I]}});return G}});jQuery.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(F,E){jQuery.fx.step[E]=function(G){if(G.state==0){G.start=D(G.elem,E);G.end=B(G.end)}G.elem.style[E]="rgb("+[Math.max(Math.min(parseInt((G.pos*(G.end[0]-G.start[0]))+G.start[0]),255),0),Math.max(Math.min(parseInt((G.pos*(G.end[1]-G.start[1]))+G.start[1]),255),0),Math.max(Math.min(parseInt((G.pos*(G.end[2]-G.start[2]))+G.start[2]),255),0)].join(",")+")"}});function B(F){var E;if(F&&F.constructor==Array&&F.length==3){return F}if(E=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(F)){return[parseInt(E[1]),parseInt(E[2]),parseInt(E[3])]}if(E=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(F)){return[parseFloat(E[1])*2.55,parseFloat(E[2])*2.55,parseFloat(E[3])*2.55]}if(E=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(F)){return[parseInt(E[1],16),parseInt(E[2],16),parseInt(E[3],16)]}if(E=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(F)){return[parseInt(E[1]+E[1],16),parseInt(E[2]+E[2],16),parseInt(E[3]+E[3],16)]}if(E=/rgba\(0, 0, 0, 0\)/.exec(F)){return A.transparent}return A[jQuery.trim(F).toLowerCase()]}function D(G,E){var F;do{F=jQuery.curCSS(G,E);if(F!=""&&F!="transparent"||jQuery.nodeName(G,"body")){break}E="backgroundColor"}while(G=G.parentNode);return B(F)}var A={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(F,G,E,I,H){return jQuery.easing[jQuery.easing.def](F,G,E,I,H)},easeInQuad:function(F,G,E,I,H){return I*(G/=H)*G+E},easeOutQuad:function(F,G,E,I,H){return -I*(G/=H)*(G-2)+E},easeInOutQuad:function(F,G,E,I,H){if((G/=H/2)<1){return I/2*G*G+E}return -I/2*((--G)*(G-2)-1)+E},easeInCubic:function(F,G,E,I,H){return I*(G/=H)*G*G+E},easeOutCubic:function(F,G,E,I,H){return I*((G=G/H-1)*G*G+1)+E},easeInOutCubic:function(F,G,E,I,H){if((G/=H/2)<1){return I/2*G*G*G+E}return I/2*((G-=2)*G*G+2)+E},easeInQuart:function(F,G,E,I,H){return I*(G/=H)*G*G*G+E},easeOutQuart:function(F,G,E,I,H){return -I*((G=G/H-1)*G*G*G-1)+E},easeInOutQuart:function(F,G,E,I,H){if((G/=H/2)<1){return I/2*G*G*G*G+E}return -I/2*((G-=2)*G*G*G-2)+E},easeInQuint:function(F,G,E,I,H){return I*(G/=H)*G*G*G*G+E},easeOutQuint:function(F,G,E,I,H){return I*((G=G/H-1)*G*G*G*G+1)+E},easeInOutQuint:function(F,G,E,I,H){if((G/=H/2)<1){return I/2*G*G*G*G*G+E}return I/2*((G-=2)*G*G*G*G+2)+E},easeInSine:function(F,G,E,I,H){return -I*Math.cos(G/H*(Math.PI/2))+I+E},easeOutSine:function(F,G,E,I,H){return I*Math.sin(G/H*(Math.PI/2))+E},easeInOutSine:function(F,G,E,I,H){return -I/2*(Math.cos(Math.PI*G/H)-1)+E},easeInExpo:function(F,G,E,I,H){return(G==0)?E:I*Math.pow(2,10*(G/H-1))+E},easeOutExpo:function(F,G,E,I,H){return(G==H)?E+I:I*(-Math.pow(2,-10*G/H)+1)+E},easeInOutExpo:function(F,G,E,I,H){if(G==0){return E}if(G==H){return E+I}if((G/=H/2)<1){return I/2*Math.pow(2,10*(G-1))+E}return I/2*(-Math.pow(2,-10*--G)+2)+E},easeInCirc:function(F,G,E,I,H){return -I*(Math.sqrt(1-(G/=H)*G)-1)+E},easeOutCirc:function(F,G,E,I,H){return I*Math.sqrt(1-(G=G/H-1)*G)+E},easeInOutCirc:function(F,G,E,I,H){if((G/=H/2)<1){return -I/2*(Math.sqrt(1-G*G)-1)+E}return I/2*(Math.sqrt(1-(G-=2)*G)+1)+E},easeInElastic:function(F,H,E,L,K){var I=1.70158;var J=0;var G=L;if(H==0){return E}if((H/=K)==1){return E+L}if(!J){J=K*0.3}if(G<Math.abs(L)){G=L;var I=J/4}else{var I=J/(2*Math.PI)*Math.asin(L/G)}return -(G*Math.pow(2,10*(H-=1))*Math.sin((H*K-I)*(2*Math.PI)/J))+E},easeOutElastic:function(F,H,E,L,K){var I=1.70158;var J=0;var G=L;if(H==0){return E}if((H/=K)==1){return E+L}if(!J){J=K*0.3}if(G<Math.abs(L)){G=L;var I=J/4}else{var I=J/(2*Math.PI)*Math.asin(L/G)}return G*Math.pow(2,-10*H)*Math.sin((H*K-I)*(2*Math.PI)/J)+L+E},easeInOutElastic:function(F,H,E,L,K){var I=1.70158;var J=0;var G=L;if(H==0){return E}if((H/=K/2)==2){return E+L}if(!J){J=K*(0.3*1.5)}if(G<Math.abs(L)){G=L;var I=J/4}else{var I=J/(2*Math.PI)*Math.asin(L/G)}if(H<1){return -0.5*(G*Math.pow(2,10*(H-=1))*Math.sin((H*K-I)*(2*Math.PI)/J))+E}return G*Math.pow(2,-10*(H-=1))*Math.sin((H*K-I)*(2*Math.PI)/J)*0.5+L+E},easeInBack:function(F,G,E,J,I,H){if(H==undefined){H=1.70158}return J*(G/=I)*G*((H+1)*G-H)+E},easeOutBack:function(F,G,E,J,I,H){if(H==undefined){H=1.70158}return J*((G=G/I-1)*G*((H+1)*G+H)+1)+E},easeInOutBack:function(F,G,E,J,I,H){if(H==undefined){H=1.70158}if((G/=I/2)<1){return J/2*(G*G*(((H*=(1.525))+1)*G-H))+E}return J/2*((G-=2)*G*(((H*=(1.525))+1)*G+H)+2)+E},easeInBounce:function(F,G,E,I,H){return I-jQuery.easing.easeOutBounce(F,H-G,0,I,H)+E},easeOutBounce:function(F,G,E,I,H){if((G/=H)<(1/2.75)){return I*(7.5625*G*G)+E}else{if(G<(2/2.75)){return I*(7.5625*(G-=(1.5/2.75))*G+0.75)+E}else{if(G<(2.5/2.75)){return I*(7.5625*(G-=(2.25/2.75))*G+0.9375)+E}else{return I*(7.5625*(G-=(2.625/2.75))*G+0.984375)+E}}}},easeInOutBounce:function(F,G,E,I,H){if(G<H/2){return jQuery.easing.easeInBounce(F,G*2,0,I,H)*0.5+E}return jQuery.easing.easeOutBounce(F,G*2-H,0,I,H)*0.5+I*0.5+E}})})(jQuery);(function(A){A.effects.blind=function(B){return this.queue(function(){var D=A(this),C=["position","top","left"];var H=A.effects.setMode(D,B.options.mode||"hide");var G=B.options.direction||"vertical";A.effects.save(D,C);D.show();var J=A.effects.createWrapper(D).css({overflow:"hidden"});var E=(G=="vertical")?"height":"width";var I=(G=="vertical")?J.height():J.width();if(H=="show"){J.css(E,0)}var F={};F[E]=H=="show"?I:0;J.animate(F,B.duration,B.options.easing,function(){if(H=="hide"){D.hide()}A.effects.restore(D,C);A.effects.removeWrapper(D);if(B.callback){B.callback.apply(D[0],arguments)}D.dequeue()})})}})(jQuery);(function(A){A.effects.highlight=function(B){return this.queue(function(){var E=A(this),D=["backgroundImage","backgroundColor","opacity"];var H=A.effects.setMode(E,B.options.mode||"show");var C=B.options.color||"#ffff99";var G=E.css("backgroundColor");A.effects.save(E,D);E.show();E.css({backgroundImage:"none",backgroundColor:C});var F={backgroundColor:G};if(H=="hide"){F.opacity=0}E.animate(F,{queue:false,duration:B.duration,easing:B.options.easing,complete:function(){if(H=="hide"){E.hide()}A.effects.restore(E,D);if(H=="show"&&jQuery.browser.msie){this.style.removeAttribute("filter")}if(B.callback){B.callback.apply(this,arguments)}E.dequeue()}})})}})(jQuery);(function(A){A.effects.pulsate=function(B){return this.queue(function(){var D=A(this);var F=A.effects.setMode(D,B.options.mode||"show");var E=B.options.times||5;if(F=="hide"){E--}if(D.is(":hidden")){D.css("opacity",0);D.show();D.animate({opacity:1},B.duration/2,B.options.easing);E=E-2}for(var C=0;C<E;C++){D.animate({opacity:0},B.duration/2,B.options.easing).animate({opacity:1},B.duration/2,B.options.easing)}if(F=="hide"){D.animate({opacity:0},B.duration/2,B.options.easing,function(){D.hide();if(B.callback){B.callback.apply(this,arguments)}})}else{D.animate({opacity:0},B.duration/2,B.options.easing).animate({opacity:1},B.duration/2,B.options.easing,function(){if(B.callback){B.callback.apply(this,arguments)}})}D.queue("fx",function(){D.dequeue()});D.dequeue()})}})(jQuery);(function(A){A.effects.shake=function(B){return this.queue(function(){var E=A(this),K=["position","top","left"];var J=A.effects.setMode(E,B.options.mode||"effect");var M=B.options.direction||"left";var C=B.options.distance||20;var D=B.options.times||3;var G=B.duration||B.options.duration||140;A.effects.save(E,K);E.show();A.effects.createWrapper(E);var F=(M=="up"||M=="down")?"top":"left";var O=(M=="up"||M=="left")?"pos":"neg";var H={},N={},L={};H[F]=(O=="pos"?"-=":"+=")+C;N[F]=(O=="pos"?"+=":"-=")+C*2;L[F]=(O=="pos"?"-=":"+=")+C*2;E.animate(H,G,B.options.easing);for(var I=1;I<D;I++){E.animate(N,G,B.options.easing).animate(L,G,B.options.easing)}E.animate(N,G,B.options.easing).animate(H,G/2,B.options.easing,function(){A.effects.restore(E,K);A.effects.removeWrapper(E);if(B.callback){B.callback.apply(this,arguments)}});E.queue("fx",function(){E.dequeue()});E.dequeue()})}})(jQuery);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/clientside/static/jquery.js	Thu Aug 21 08:24:04 2008 -0400
@@ -0,0 +1,32 @@
+/*
+ * jQuery 1.2.6 - New Wave Javascript
+ *
+ * Copyright (c) 2008 John Resig (jquery.com)
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
+ * $Rev: 5685 $
+ */
+(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
+return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
+return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
+selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
+return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
+this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
+return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
+jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
+script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
+for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
+for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
+jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
+ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
+while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
+while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
+for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
+jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
+xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
+jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
+for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
+s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
+e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
\ No newline at end of file
--- a/includes/clientside/static/login.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/login.js	Thu Aug 21 08:24:04 2008 -0400
@@ -92,7 +92,8 @@
 {
   load_component('messagebox');
   load_component('flyin');
-  load_component('SpryEffects');
+  load_component('jquery');
+  load_component('jquery-ui');
   load_component('l10n');
   load_component('crypto');
   
@@ -365,7 +366,7 @@
       ajaxLoginSetStatus(AJAX_STATUS_DESTROY);
       document.getElementById('messageBox').style.backgroundColor = '#C0C0C0';
       var mb_parent = document.getElementById('messageBox').parentNode;
-      new Spry.Effect.Shake(mb_parent, {duration: 1500}).start();
+      $(mb_parent).effect("shake", {}, 1500);
       setTimeout(function()
         {
           document.getElementById('messageBox').style.backgroundColor = '#FFF';
@@ -386,7 +387,7 @@
         ajaxLoginSetStatus(AJAX_STATUS_DESTROY);
         document.getElementById('messageBox').style.backgroundColor = '#C0C0C0';
         var mb_parent = document.getElementById('messageBox').parentNode;
-        new Spry.Effect.Shake(mb_parent, {duration: 1500}).start();
+        $(mb_parent).effect("shake", {}, 1500);
         setTimeout(function()
           {
             document.getElementById('messageBox').style.backgroundColor = '#FFF';
@@ -855,7 +856,7 @@
   // console.info('Drawing new error-box');
   
   // calculate position for the top of the box
-  var mb_bottom = $('messageBoxButtons').Top() + $('messageBoxButtons').Height();
+  var mb_bottom = $dynano('messageBoxButtons').Top() + $dynano('messageBoxButtons').Height();
   // if the box isn't done flying in yet, just estimate
   if ( mb_bottom < ( getHeight() / 2 ) )
   {
--- a/includes/clientside/static/messagebox.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/messagebox.js	Thu Aug 21 08:24:04 2008 -0400
@@ -325,7 +325,8 @@
   if ( !aclDisableTransitionFX )
   {
     load_component('flyin');
-    load_component('SpryEffects');
+    load_component('jquery');
+    load_component('jquery-ui');
   }
   var darkener = darken(aclDisableTransitionFX, 40, 'miniprompt_darkener');
   
@@ -372,8 +373,7 @@
   {
     if ( !aclDisableTransitionFX )
     {
-      // for some reason, spry's pulsate effects takes duration in ms instead of seconds.
-      (new Spry.Effect.Pulsate(this.miniprompt, { duration: 500, from: '100%', to: '70%' })).start();
+      $(this.miniprompt).effect("pulsate", { times: 2 }, 200);
     }
   }
   
--- a/includes/clientside/static/rank-manager.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/rank-manager.js	Thu Aug 21 08:24:04 2008 -0400
@@ -681,7 +681,8 @@
 {
   var whitey = whiteOutElement(editor.wrapperdiv);
   
-  load_component('SpryEffects');
+  load_component('jquery');
+  load_component('jquery-ui');
   
   var json_packet = {
     mode: 'delete_rank',
@@ -721,13 +722,13 @@
                 edit_link.parentNode.removeChild(edit_link);
               }
               // collapse and destroy the editor
-              new Spry.Effect.Blind(editor.wrapperdiv, { duration: 500, finish: function()
+              $(editor.wrapperdiv).hide("blind", {}, 500, function()
                   {
                     // when the animation finishes, nuke the whole thing
                     var container = document.getElementById('admin_ranks_container_right');
                     container.innerHTML = $lang.get('acpur_msg_select_rank');
                   }
-                }).start();
+                );
             }, 1500);
         }
         else
--- a/includes/clientside/static/theme-manager.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/theme-manager.js	Thu Aug 21 08:24:04 2008 -0400
@@ -7,11 +7,11 @@
     var child = theme_list.childNodes[i];
     if ( child.tagName == 'DIV' )
     {
-      if ( $(child).hasClass('themebutton_theme_system') )
+      if ( $dynano(child).hasClass('themebutton_theme_system') )
       {
-        if ( $(child).hasClass('themebutton_theme_disabled') )
+        if ( $dynano(child).hasClass('themebutton_theme_disabled') )
         {
-          $(child).rmClass('themebutton_theme_disabled')
+          $dynano(child).rmClass('themebutton_theme_disabled')
         }
         if ( mode == 'show' )
         {
--- a/includes/clientside/static/userpage.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/clientside/static/userpage.js	Thu Aug 21 08:24:04 2008 -0400
@@ -17,7 +17,7 @@
     var block = blocks[i];
     if ( /^tab:/.test(block.id) )
     {
-      $(block).addClass('userpage_block');
+      $dynano(block).addClass('userpage_block');
       var block_id = block.id.substr(4);
       userpage_blocks.push(block_id);
       if ( !first_block )
@@ -88,9 +88,9 @@
     var a = document.getElementById('userpage_blocklink_' + userpage_blocks[i]);
     if ( a )
     {
-      if ( $(a.parentNode).hasClass('userpage_tab_active') )
+      if ( $dynano(a.parentNode).hasClass('userpage_tab_active') )
       {
-        $(a.parentNode).rmClass('userpage_tab_active');
+        $dynano(a.parentNode).rmClass('userpage_tab_active');
       }
     }
   }
@@ -99,20 +99,19 @@
     var div = document.getElementById('tab:' + block);
     div.style.display = 'block';
   }
-  /*
   else
   {
+    // DISABLED: see "nofade = true;" above.
     // do this in a slightly fancier fashion
-    load_component('SpryEffects');
-    (new Spry.Effect.Blind('tab:' + current_block, { from: '100%', to: '0%', finish: function()
-        {
-          (new Spry.Effect.Blind('tab:' + block, { from: '0%', to: '100%' })).start();
-        }
-      })).start();
+    load_component('jquery');
+    load_component('jquery-ui');
+    $('#tab:' + current_block).hide("blind", {}, 500, function()
+    {
+      $('#tab:' + block).show("blind", {}, 500);
+    });
   }
-  */
   var a = document.getElementById('userpage_blocklink_' + block);
-  $(a.parentNode).addClass('userpage_tab_active');
+  $dynano(a.parentNode).addClass('userpage_tab_active');
   
   window.location.hash = 'tab:' + block;
   setScrollOffset(currentScroll);
--- a/includes/template.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/includes/template.php	Thu Aug 21 08:24:04 2008 -0400
@@ -1201,6 +1201,7 @@
       'TEMPLATE_DIR'=>scriptPath.'/themes/'.$this->theme,
       'THEME_ID'=>$this->theme,
       'STYLE_ID'=>$this->style,
+      'MAIN_PAGE' => getConfig('main_page'),
       'JS_HEADER' => $js_head,
       'JS_FOOTER' => $js_foot,
       'JS_DYNAMIC_VARS'=>$js_dynamic,
@@ -1247,6 +1248,7 @@
   
   /**
    * Performs var init that is common to all pages (IOW, called only once)
+   * Not used yet because most stuff is either theme-dependent or page-dependent.
    * @access private
    */
   
@@ -1945,7 +1947,7 @@
   function username_field($name, $value = false)
   {
     $randomid = md5( time() . microtime() . mt_rand() );
-    $text = '<input name="'.$name.'" class="autofill username" type="text" size="30" id="userfield_'.$randomid.'"';
+    $text = '<input name="'.$name.'" onkeyup="new AutofillUsername(this);" type="text" size="30" id="userfield_'.$randomid.'" autocomplete="off"';
     if($value) $text .= ' value="'.$value.'"';
     $text .= ' />';
     return $text;
@@ -1960,7 +1962,7 @@
   function pagename_field($name, $value = false)
   {
     $randomid = md5( time() . microtime() . mt_rand() );
-    $text = '<input name="'.$name.'" class="autofill page" type="text" size="30" id="pagefield_'.$randomid.'"';
+    $text = '<input name="'.$name.'" onkeyup="new AutofillPage(this);" type="text" size="30" id="pagefield_'.$randomid.'" autocomplete="off"';
     if($value) $text .= ' value="'.$value.'"';
     $text .= ' />';
     return $text;
@@ -2052,7 +2054,7 @@
    * @return array - key 0 is left, key 1 is right
    * @example list($left, $right) = $template->fetch_sidebar();
    */
-   
+  
   function fetch_sidebar()
   {
     global $db, $session, $paths, $template, $plugins; // Common objects
@@ -2071,6 +2073,7 @@
         {
           $md = str_replace('$USERNAME$', $session->username, $md);
           $md = str_replace('$PAGEID$', $paths->page, $md);
+          $md = str_replace('$MAIN_PAGE$', getConfig('main_page'), $md);
         }
         return $data;
       }
@@ -2118,7 +2121,10 @@
           break;
         case BLOCK_PLUGIN:
           $parser = $this->makeParserText('{CONTENT}');
-          $c = '<!-- PLUGIN -->' . (gettype($this->fetch_block($row['block_content'])) == 'string') ? $this->fetch_block($row['block_content']) : /* This used to say "can't find plugin block" but I think it's more friendly to just silently hide it. */ '';
+          $c = '<!-- PLUGIN -->' . (gettype($this->fetch_block($row['block_content'])) == 'string') ?
+                  $this->fetch_block($row['block_content']) :
+                  // This used to say "can't find plugin block" but I think it's more friendly to just silently hide it.
+                  '';
           break;
       }
       // is there a {restrict} or {hideif} block?
@@ -2169,9 +2175,16 @@
       $cachestore = enano_json_encode($return);
       $cachestore = str_replace($session->username, '$USERNAME$', $cachestore);
       $cachestore = str_replace($paths->page, '$PAGEID$', $cachestore);
+      $cachestore = str_replace('__STATICLINK__', $paths->page, $cachestore);
+      $cachestore = str_replace('__MAINPAGELINK__', '$MAIN_PAGE$', $cachestore);
       $cachestore = enano_json_decode($cachestore);
       $cachestore['_theme_'] = $this->theme;
       $cache->store('anon_sidebar', $cachestore, 10);
+      
+      foreach ( $return as &$el )
+      {
+        $el = str_replace('__STATICLINK__', $paths->page, $el);
+      }
     }
     return $return;
   }
--- a/install/includes/stages/database_mysql.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/install/includes/stages/database_mysql.php	Thu Aug 21 08:24:04 2008 -0400
@@ -292,7 +292,7 @@
     if ( !verify() )
     {
       document.body.scrollTop = 0;
-      new Spry.Effect.Shake('enano-body', {duration: 750}).start();
+      $('enano-body').effect('shake', {}, 750);
       document.getElementById('verify_error').className = 'error-box-mini';
       document.getElementById('verify_error').innerHTML = $lang.get('meta_msg_err_verification');
       return false;
--- a/install/includes/stages/database_postgresql.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/install/includes/stages/database_postgresql.php	Thu Aug 21 08:24:04 2008 -0400
@@ -233,7 +233,7 @@
     if ( !verify() )
     {
       document.body.scrollTop = 0;
-      new Spry.Effect.Shake('enano-body', {duration: 750}).start();
+      $('enano-body').effect('shake', {}, 750);
       document.getElementById('verify_error').className = 'error-box-mini';
       document.getElementById('verify_error').innerHTML = $lang.get('meta_msg_err_verification');
       return false;
--- a/install/includes/stages/website.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/install/includes/stages/website.php	Thu Aug 21 08:24:04 2008 -0400
@@ -110,19 +110,19 @@
     if ( frm.site_name.value == '' )
     {
       fail = true;
-      new Spry.Effect.Shake($(frm.site_name).object, {duration: 750}).start();
+      $(frm.site_name).effect("shake", {}, 750);
       frm.site_name.focus();
     }
     if ( frm.site_desc.value == '' )
     {
-      new Spry.Effect.Shake($(frm.site_desc).object, {duration: 750}).start();
+      $(frm.site_desc).effect("shake", {}, 750);
       if ( !fail )
         frm.site_desc.focus();
       fail = true;
     }
     if ( frm.copyright.value == '' )
     {
-      new Spry.Effect.Shake($(frm.copyright).object, {duration: 750}).start();
+      $(frm.copyright).effect("shake", {}, 750);
       if ( !fail )
         frm.copyright.focus();
       fail = true;
--- a/licenses/index.html	Sun Aug 17 23:24:41 2008 -0400
+++ b/licenses/index.html	Thu Aug 21 08:24:04 2008 -0400
@@ -87,6 +87,7 @@
   <li><a href="http://www.softcomplex.com/products/tigra_tree_menu/">Tigra Tree Menu</a> - a modified version that remembers the state of the tree. The license terms are stated <a href="http://www.softcomplex.com/products/tigra_tree_menu/docs/#terms_cond">here</a>. After <a href="tigra-menu.html">contacting the author</a>, I was given permission to use the Tigra Tree Menu code as if it were under the GNU GPL. Therefore, you may use this code unde the terms of the GPL, however if you're making commercial use of it, the Softcomplex guys would appreciate if (but not require that) you would contact them first.</li>
   <li><a href="http://youngpup.net/projects/dom-drag/">youngpup</a>'s DOM-Drag class - the unmodified version is <a href="http://youngpup.net/projects/dom-drag/license.txt">in the public domain</a>; we chose to relicense it as of Enano 1.0.4 to clear up any potential legal complications</li>
   <li>The <a href="http://www.puremango.co.uk/">freeCap</a> engine, used for generating CAPTCHA images.</li>
+  <li>The <a href="http://jquery.com/">jQuery</a> Javascript library. It's dual-licensed under the GPL and the MIT license.</li>
 </ul>
 
 <h2>GNU Lesser General Public License</h2>
@@ -107,7 +108,6 @@
 <p><a href="bsdlic.html">View the text of this license</a></p>
 <ul>
   <li><a href="http://pajhome.org.uk/">Paul Johnston</a>'s implementations of the MD5 and SHA1 algorithms in Javascript</li>
-  <li><a href="http://labs.adobe.com/technologies/spry/">Adobe Spry</a>, used for some Javascript effects</li>
   <li><a href="http://framework.zend.com/">Zend Framework</a>, for the majority of JSON operations</li>
 </ul>
 
--- a/plugins/SpecialPageFuncs.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/plugins/SpecialPageFuncs.php	Thu Aug 21 08:24:04 2008 -0400
@@ -875,19 +875,23 @@
             );
             $key = array_merge($key, $session->get_user_rank($row['username']));
             $key['rank_title'] = $lang->get($key['rank_title']);
+            $key[0] = $row['username'];
             $dataset[] = $key;
+            // $dataset[] = array($row['username'], $row['username']);
+            // echo "{$row['username']}|{$row['username']}\n";
           }
         }
+        // return;
         break;
       case 'page':
         if ( isset($_GET['userinput']) && strlen($_GET['userinput']) >= 3 )
         {
           $search = '%' . escape_string_like($_GET['userinput']) . '%';
-          $q = $db->sql_query('SELECT urlname, namespace, name FROM ' . table_prefix . "users\n"
+          $q = $db->sql_query('SELECT urlname, namespace, name FROM ' . table_prefix . "pages\n"
                             . "  WHERE (\n"
                             . "       " . ENANO_SQLFUNC_LOWERCASE . "(urlname) LIKE '$search'\n"
                             . "    OR " . ENANO_SQLFUNC_LOWERCASE . "(name)    LIKE '$search'\n"
-                            . "  ) AND user_id > 1");
+                            . "  );");
           if ( !$q )
             $db->die_json();
           
@@ -895,7 +899,7 @@
           {
             $pathskey = ( isset($paths->nslist[$row['namespace']]) ? $paths->nslist[$row['namespace']] : $row['namespace'] . substr($paths->nslist['Special'], -1) ) . $row['urlname'];
             $key = array(
-              'page_id' => $pathskey,
+              0 => $pathskey,
               'pid_highlight'  => highlight_term($_GET['userinput'], dirtify_page_id($pathskey), '<b>', '</b>'),
               'name_highlight' => highlight_term($_GET['userinput'], $row['name'], '<b>', '</b>')
             );
--- a/plugins/admin/PluginManager.php	Sun Aug 17 23:24:41 2008 -0400
+++ b/plugins/admin/PluginManager.php	Thu Aug 21 08:24:04 2008 -0400
@@ -434,7 +434,7 @@
                   <div style=\"float: right;\">
                     <b>$status</b>
                   </div>
-                  <div style=\"cursor: pointer;\" onclick=\"if ( !this.fx ) { load_component('SpryEffects'); load_component('messagebox'); load_component('ajax'); this.fx = new Spry.Effect.Blind('plugininfo_$uuid', { duration: 500, from: '0%', to: '100%', toggle: true }); } this.fx.start();\">
+                  <div style=\"cursor: pointer;\" onclick=\"if ( !this.fx ) { load_component('jquery'); load_component('jquery-ui'); load_component('messagebox'); load_component('ajax'); this.fx = true; } $('#plugininfo_$uuid').toggle('blind', {}, 500);\">
                     $plugin_basics
                   </div>
                   <span class=\"menuclear\"></span>
--- a/themes/admin/js/menu.js	Sun Aug 17 23:24:41 2008 -0400
+++ b/themes/admin/js/menu.js	Thu Aug 21 08:24:04 2008 -0400
@@ -42,7 +42,7 @@
 function expander_set_height()
 {
   var expander = document.getElementById('sidebar-hide');
-  var magic = $('header').Height() + $('pagebar_main').Height();
+  var magic = $dynano('header').Height() + $dynano('pagebar_main').Height();
   var height = getHeight();
   var exheight = height - magic;
   expander.style.height = exheight + 'px';
@@ -68,7 +68,7 @@
 function expander_set_pos()
 {
   var winheight = getHeight();
-  var magic = $('header').Height() + $('pagebar_main').Height();
+  var magic = $dynano('header').Height() + $dynano('pagebar_main').Height();
   var top = getScrollOffset();
   if ( typeof(top) != 'number' )
   {