// SpryMenuBar.js - version 0.12 - 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.Widget)Spry.Widget={};Spry.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.BrowserSniff();Spry.Widget.MenuBar=function(element,opts)
{this.init(element,opts);};Spry.Widget.MenuBar.prototype.init=function(element,opts)
{this.element=this.getElement(element);this.currMenu=null;this.showDelay=250;this.hideDelay=600;if(typeof document.getElementById=='undefined'||(navigator.vendor=='Apple Computer, Inc.'&&typeof window.XMLHttpRequest=='undefined')||(Spry.is.ie&&typeof document.uniqueID=='undefined'))
{return;}
if(Spry.is.ie&&Spry.is.version<7){try{document.execCommand("BackgroundImageCache",false,true);}catch(err){}}
this.upKeyCode=Spry.Widget.MenuBar.KEY_UP;this.downKeyCode=Spry.Widget.MenuBar.KEY_DOWN;this.leftKeyCode=Spry.Widget.MenuBar.KEY_LEFT;this.rightKeyCode=Spry.Widget.MenuBar.KEY_RIGHT;this.escKeyCode=Spry.Widget.MenuBar.KEY_ESC;this.hoverClass='MenuBarItemHover';this.subHoverClass='MenuBarItemSubmenuHover';this.subVisibleClass='MenuBarSubmenuVisible';this.hasSubClass='MenuBarItemSubmenu';this.activeClass='MenuBarActive';this.isieClass='MenuBarItemIE';this.verticalClass='MenuBarVertical';this.horizontalClass='MenuBarHorizontal';this.enableKeyboardNavigation=true;this.hasFocus=false;if(opts)
{for(var k in opts)
{if(typeof this[k]=='undefined')
{var rollover=new Image;rollover.src=opts[k];}}
Spry.Widget.MenuBar.setOptions(this,opts);}
if(Spry.is.safari)
this.enableKeyboardNavigation=false;if(this.element)
{this.currMenu=this.element;var items=this.element.getElementsByTagName('li');for(var i=0;i<items.length;i++)
{if(i>0&&this.enableKeyboardNavigation)
items[i].getElementsByTagName('a')[0].tabIndex='-1';this.initialize(items[i],element);if(Spry.is.ie)
{this.addClassName(items[i],this.isieClass);items[i].style.position="static";}}
if(this.enableKeyboardNavigation)
{var self=this;this.addEventListener(document,'keydown',function(e){self.keyDown(e);},false);}
if(Spry.is.ie)
{if(this.hasClassName(this.element,this.verticalClass))
{this.element.style.position="relative";}
var linkitems=this.element.getElementsByTagName('a');for(var i=0;i<linkitems.length;i++)
{linkitems[i].style.position="relative";}}}};Spry.Widget.MenuBar.KEY_ESC=27;Spry.Widget.MenuBar.KEY_UP=38;Spry.Widget.MenuBar.KEY_DOWN=40;Spry.Widget.MenuBar.KEY_LEFT=37;Spry.Widget.MenuBar.KEY_RIGHT=39;Spry.Widget.MenuBar.prototype.getElement=function(ele)
{if(ele&&typeof ele=="string")
return document.getElementById(ele);return ele;};Spry.Widget.MenuBar.prototype.hasClassName=function(ele,className)
{if(!ele||!className||!ele.className||ele.className.search(new RegExp("\\b"+className+"\\b"))==-1)
{return false;}
return true;};Spry.Widget.MenuBar.prototype.addClassName=function(ele,className)
{if(!ele||!className||this.hasClassName(ele,className))
return;ele.className+=(ele.className?" ":"")+className;};Spry.Widget.MenuBar.prototype.removeClassName=function(ele,className)
{if(!ele||!className||!this.hasClassName(ele,className))
return;ele.className=ele.className.replace(new RegExp("\\s*\\b"+className+"\\b","g"),"");};Spry.Widget.MenuBar.prototype.addEventListener=function(element,eventType,handler,capture)
{try
{if(element.addEventListener)
{element.addEventListener(eventType,handler,capture);}
else if(element.attachEvent)
{element.attachEvent('on'+eventType,handler);}}
catch(e){}};Spry.Widget.MenuBar.prototype.createIframeLayer=function(menu)
{var layer=document.createElement('iframe');layer.tabIndex='-1';layer.src='javascript:""';layer.frameBorder='0';layer.scrolling='no';menu.parentNode.appendChild(layer);layer.style.left=menu.offsetLeft+'px';layer.style.top=menu.offsetTop+'px';layer.style.width=menu.offsetWidth+'px';layer.style.height=menu.offsetHeight+'px';};Spry.Widget.MenuBar.prototype.removeIframeLayer=function(menu)
{var layers=((menu==this.element)?menu:menu.parentNode).getElementsByTagName('iframe');while(layers.length>0)
{layers[0].parentNode.removeChild(layers[0]);}};Spry.Widget.MenuBar.prototype.clearMenus=function(root)
{var menus=root.getElementsByTagName('ul');for(var i=0;i<menus.length;i++)
this.hideSubmenu(menus[i]);this.removeClassName(this.element,this.activeClass);};Spry.Widget.MenuBar.prototype.bubbledTextEvent=function()
{return Spry.is.safari&&(event.target==event.relatedTarget.parentNode||(event.eventPhase==3&&event.target.parentNode==event.relatedTarget));};Spry.Widget.MenuBar.prototype.showSubmenu=function(menu)
{if(this.currMenu)
{this.clearMenus(this.currMenu);this.currMenu=null;}
if(menu)
{this.addClassName(menu,this.subVisibleClass);if(typeof document.all!='undefined'&&!Spry.is.opera&&navigator.vendor!='KDE')
{if(!this.hasClassName(this.element,this.horizontalClass)||menu.parentNode.parentNode!=this.element)
{menu.style.top=menu.parentNode.offsetTop+'px';}}
if(Spry.is.ie&&Spry.is.version<7)
{this.createIframeLayer(menu);}}
this.addClassName(this.element,this.activeClass);};Spry.Widget.MenuBar.prototype.hideSubmenu=function(menu)
{if(menu)
{this.removeClassName(menu,this.subVisibleClass);if(typeof document.all!='undefined'&&!Spry.is.opera&&navigator.vendor!='KDE')
{menu.style.top='';menu.style.left='';}
if(Spry.is.ie&&Spry.is.version<7)
this.removeIframeLayer(menu);}};Spry.Widget.MenuBar.prototype.initialize=function(listitem,element)
{var opentime,closetime;var link=listitem.getElementsByTagName('a')[0];var submenus=listitem.getElementsByTagName('ul');var menu=(submenus.length>0?submenus[0]:null);if(menu)
this.addClassName(link,this.hasSubClass);if(!Spry.is.ie)
{listitem.contains=function(testNode)
{if(testNode==null)
return false;if(testNode==this)
return true;else
return this.contains(testNode.parentNode);};}
var self=this;this.addEventListener(listitem,'mouseover',function(e){self.mouseOver(listitem,e);},false);this.addEventListener(listitem,'mouseout',function(e){if(self.enableKeyboardNavigation)self.clearSelection();self.mouseOut(listitem,e);},false);if(this.enableKeyboardNavigation)
{this.addEventListener(link,'blur',function(e){self.onBlur(listitem);},false);this.addEventListener(link,'focus',function(e){self.keyFocus(listitem,e);},false);}};Spry.Widget.MenuBar.prototype.keyFocus=function(listitem,e)
{this.lastOpen=listitem.getElementsByTagName('a')[0];this.addClassName(this.lastOpen,listitem.getElementsByTagName('ul').length>0?this.subHoverClass:this.hoverClass);this.hasFocus=true;};Spry.Widget.MenuBar.prototype.onBlur=function(listitem)
{this.clearSelection(listitem);};Spry.Widget.MenuBar.prototype.clearSelection=function(el){if(!this.lastOpen)
return;if(el)
{el=el.getElementsByTagName('a')[0];var item=this.lastOpen;while(item!=this.element)
{var tmp=el;while(tmp!=this.element)
{if(tmp==item)
return;try{tmp=tmp.parentNode;}catch(err){break;}}
item=item.parentNode;}}
var item=this.lastOpen;while(item!=this.element)
{this.hideSubmenu(item.parentNode);var link=item.getElementsByTagName('a')[0];this.removeClassName(link,this.hoverClass);this.removeClassName(link,this.subHoverClass);item=item.parentNode;}
this.lastOpen=false;};Spry.Widget.MenuBar.prototype.keyDown=function(e)
{if(!this.hasFocus)
return;if(!this.lastOpen)
{this.hasFocus=false;return;}
var e=e||event;var listitem=this.lastOpen.parentNode;var link=this.lastOpen;var submenus=listitem.getElementsByTagName('ul');var menu=(submenus.length>0?submenus[0]:null);var hasSubMenu=(menu)?true:false;var opts=[listitem,menu,null,this.getSibling(listitem,'previousSibling'),this.getSibling(listitem,'nextSibling')];if(!opts[3])
opts[2]=(listitem.parentNode.parentNode.nodeName.toLowerCase()=='li')?listitem.parentNode.parentNode:null;var found=0;switch(e.keyCode){case this.upKeyCode:found=this.getElementForKey(opts,'y',1);break;case this.downKeyCode:found=this.getElementForKey(opts,'y',-1);break;case this.leftKeyCode:found=this.getElementForKey(opts,'x',1);break;case this.rightKeyCode:found=this.getElementForKey(opts,'x',-1);break;case this.escKeyCode:case 9:this.clearSelection();this.hasFocus=false;default:return;}
switch(found)
{case 0:return;case 1:this.mouseOver(listitem,e);break;case 2:this.mouseOut(opts[2],e);break;case 3:case 4:this.removeClassName(link,hasSubMenu?this.subHoverClass:this.hoverClass);break;}
var link=opts[found].getElementsByTagName('a')[0];if(opts[found].nodeName.toLowerCase()=='ul')
opts[found]=opts[found].getElementsByTagName('li')[0];this.addClassName(link,opts[found].getElementsByTagName('ul').length>0?this.subHoverClass:this.hoverClass);this.lastOpen=link;opts[found].getElementsByTagName('a')[0].focus();return Spry.Widget.MenuBar.stopPropagation(e);};Spry.Widget.MenuBar.prototype.mouseOver=function(listitem,e)
{var link=listitem.getElementsByTagName('a')[0];var submenus=listitem.getElementsByTagName('ul');var menu=(submenus.length>0?submenus[0]:null);var hasSubMenu=(menu)?true:false;if(this.enableKeyboardNavigation)
this.clearSelection(listitem);if(this.bubbledTextEvent())
{return;}
if(listitem.closetime)
clearTimeout(listitem.closetime);if(this.currMenu==listitem)
{this.currMenu=null;}
if(this.hasFocus)
link.focus();this.addClassName(link,hasSubMenu?this.subHoverClass:this.hoverClass);this.lastOpen=link;if(menu&&!this.hasClassName(menu,this.subHoverClass))
{var self=this;listitem.opentime=window.setTimeout(function(){self.showSubmenu(menu);},this.showDelay);}};Spry.Widget.MenuBar.prototype.mouseOut=function(listitem,e)
{var link=listitem.getElementsByTagName('a')[0];var submenus=listitem.getElementsByTagName('ul');var menu=(submenus.length>0?submenus[0]:null);var hasSubMenu=(menu)?true:false;if(this.bubbledTextEvent())
{return;}
var related=(typeof e.relatedTarget!='undefined'?e.relatedTarget:e.toElement);if(!listitem.contains(related))
{if(listitem.opentime)
clearTimeout(listitem.opentime);this.currMenu=listitem;this.removeClassName(link,hasSubMenu?this.subHoverClass:this.hoverClass);if(menu)
{var self=this;listitem.closetime=window.setTimeout(function(){self.hideSubmenu(menu);},this.hideDelay);}
if(this.hasFocus)
link.blur();}};Spry.Widget.MenuBar.prototype.getSibling=function(element,sibling)
{var child=element[sibling];while(child&&child.nodeName.toLowerCase()!='li')
child=child[sibling];return child;};Spry.Widget.MenuBar.prototype.getElementForKey=function(els,prop,dir)
{var found=0;var rect=Spry.Widget.MenuBar.getPosition;var ref=rect(els[found]);var hideSubmenu=false;if(els[1]&&!this.hasClassName(els[1],this.MenuBarSubmenuVisible))
{els[1].style.visibility='hidden';this.showSubmenu(els[1]);hideSubmenu=true;}
var isVert=this.hasClassName(this.element,this.verticalClass);var hasParent=els[0].parentNode.parentNode.nodeName.toLowerCase()=='li'?true:false;for(var i=1;i<els.length;i++){if(prop=='y'&&isVert&&(i==1||i==2))
{continue;}
if(prop=='x'&&!isVert&&!hasParent&&(i==1||i==2))
{continue;}
if(els[i])
{var tmp=rect(els[i]);if((dir*tmp[prop])<(dir*ref[prop]))
{ref=tmp;found=i;}}}
if(els[1]&&hideSubmenu){this.hideSubmenu(els[1]);els[1].style.visibility='';}
return found;};Spry.Widget.MenuBar.camelize=function(str)
{if(str.indexOf('-')==-1){return str;}
var oStringList=str.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.MenuBar.getStyleProp=function(element,prop)
{var value;try
{if(element.style)
value=element.style[Spry.Widget.MenuBar.camelize(prop)];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[Spry.Widget.MenuBar.camelize(prop)];}}
catch(e){}
return value=='auto'?null:value;};Spry.Widget.MenuBar.getIntProp=function(element,prop)
{var a=parseInt(Spry.Widget.MenuBar.getStyleProp(element,prop),10);if(isNaN(a))
return 0;return a;};Spry.Widget.MenuBar.getPosition=function(el,doc)
{doc=doc||document;if(typeof(el)=='string'){el=doc.getElementById(el);}
if(!el){return false;}
if(el.parentNode===null||Spry.Widget.MenuBar.getStyleProp(el,'display')=='none'){return false;}
var ret={x:0,y:0};var parent=null;var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var scrollTop=doc.documentElement.scrollTop||doc.body.scrollTop;var scrollLeft=doc.documentElement.scrollLeft||doc.body.scrollLeft;ret.x=box.left+scrollLeft;ret.y=box.top+scrollTop;}else if(doc.getBoxObjectFor){box=doc.getBoxObjectFor(el);ret.x=box.x;ret.y=box.y;}else{ret.x=el.offsetLeft;ret.y=el.offsetTop;parent=el.offsetParent;if(parent!=el){while(parent){ret.x+=parent.offsetLeft;ret.y+=parent.offsetTop;parent=parent.offsetParent;}}
if(Spry.is.opera||Spry.is.safari&&Spry.Widget.MenuBar.getStyleProp(el,'position')=='absolute')
ret.y-=doc.body.offsetTop;}
if(el.parentNode)
parent=el.parentNode;else
parent=null;if(parent.nodeName){var cas=parent.nodeName.toUpperCase();while(parent&&cas!='BODY'&&cas!='HTML'){cas=parent.nodeName.toUpperCase();ret.x-=parent.scrollLeft;ret.y-=parent.scrollTop;if(parent.parentNode)
parent=parent.parentNode;else
parent=null;}}
return ret;};Spry.Widget.MenuBar.stopPropagation=function(ev)
{if(ev.stopPropagation)
ev.stopPropagation();else
ev.cancelBubble=true;if(ev.preventDefault)
ev.preventDefault();else
ev.returnValue=false;};Spry.Widget.MenuBar.setOptions=function(obj,optionsObj,ignoreUndefinedProps)
{if(!optionsObj)
return;for(var optionName in optionsObj)
{if(ignoreUndefinedProps&&optionsObj[optionName]==undefined)
continue;obj[optionName]=optionsObj[optionName];}};
///*// SpryMenuBar.js - version 0.7 - Spry Pre-Release 1.6
////
//// 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.
//
///*******************************************************************************
//
// SpryMenuBar.js
// This file handles the JavaScript for Spry Menu Bar.  You should have no need
// to edit this file.  Some highlights of the MenuBar object is that timers are
// used to keep submenus from showing up until the user has hovered over the parent
// menu item for some time, as well as a timer for when they leave a submenu to keep
// showing that submenu until the timer fires.
//
// *******************************************************************************/
//
//var Spry; if (!Spry) Spry = {}; if (!Spry.Widget) Spry.Widget = {};
//
//Spry.BrowserSniff = function()
//{
//	var b = navigator.appName.toString();
//	var up = navigator.platform.toString();
//	var ua = navigator.userAgent.toString();
//
//	this.mozilla = this.ie = this.opera = r = false;
//	var re_opera = /Opera.([0-9\.]*)/i;
//	var re_msie = /MSIE.([0-9\.]*)/i;
//	var re_gecko = /gecko/i;
//	var re_safari = /safari\/([\d\.]*)/i;
//
//	if (ua.match(re_opera)) {
//		r = ua.match(re_opera);
//		this.opera = true;
//		this.version = parseFloat(r[1]);
//	} else if (ua.match(re_msie)) {
//		r = ua.match(re_msie);
//		this.ie = true;
//		this.version = parseFloat(r[1]);
//	} else if (ua.match(re_safari)) {
//		this.safari = true;
//		this.version = 1.4;
//	} 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.BrowserSniff();
//
//// Constructor for Menu Bar
//// element should be an ID of an unordered list (<ul> tag)
//// preloadImage1 and preloadImage2 are images for the rollover state of a menu
//Spry.Widget.MenuBar = function(element, opts)
//{
//	this.init(element, opts);
//};
//
//Spry.Widget.MenuBar.prototype.init = function(element, opts)
//{
//	this.element = this.getElement(element);
//
//	// represents the current (sub)menu we are operating on
//	this.currMenu = null;
//	this.showDelay = 250;
//	this.hideDelay = 600;
//	if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (Spry.is.ie && typeof document.uniqueID == 'undefined'))
//	{
//		// bail on older unsupported browsers
//		return;
//	}
//
//	// Fix IE6 CSS images flicker
//	if (Spry.is.ie && Spry.is.version < 7){
//		try {
//			document.execCommand("BackgroundImageCache", false, true);
//		} catch(err) {}
//	}
//
//	this.upKeyCode = Spry.Widget.MenuBar.KEY_UP;
//	this.downKeyCode = Spry.Widget.MenuBar.KEY_DOWN;
//	this.leftKeyCode = Spry.Widget.MenuBar.KEY_LEFT;
//	this.rightKeyCode = Spry.Widget.MenuBar.KEY_RIGHT;
//	this.escKeyCode = Spry.Widget.MenuBar.KEY_ESC;
//
//	this.hoverClass = 'MenuBarItemHover';
//	this.subHoverClass = 'MenuBarItemSubmenuHover';
//	this.subVisibleClass ='MenuBarSubmenuVisible';
//	this.hasSubClass = 'MenuBarItemSubmenu';
//	this.activeClass = 'MenuBarActive';
//	this.isieClass = 'MenuBarItemIE';
//	this.verticalClass = 'MenuBarVertical';
//	this.horizontalClass = 'MenuBarHorizontal';
//	this.enableKeyboardNavigation = true;
//
//	this.hasFocus = false;
//	// load hover images now
//	if(opts)
//	{
//		for(var k in opts)
//		{
//			if (typeof this[k] == 'undefined')
//			{
//				var rollover = new Image;
//				rollover.src = opts[k];
//			}
//		}
//		Spry.Widget.MenuBar.setOptions(this, opts);
//	}
//
//	// safari doesn't support tabindex
//	if (Spry.is.safari)
//		this.enableKeyboardNavigation = false;
//
//	if(this.element)
//	{
//		this.currMenu = this.element;
//		var items = this.element.getElementsByTagName('li');
//		for(var i=0; i<items.length; i++)
//		{
//			if (i > 0 && this.enableKeyboardNavigation)
//				items[i].getElementsByTagName('a')[0].tabIndex='-1';
//
//			this.initialize(items[i], element);
//			if(Spry.is.ie)
//			{
//				this.addClassName(items[i], this.isieClass);
//				items[i].style.position = "static";
//			}
//		}
//		if (this.enableKeyboardNavigation)
//		{
//			var self = this;
//			this.addEventListener(document, 'keydown', function(e){self.keyDown(e); }, false);
//		}
//
//		if(Spry.is.ie)
//		{
//			if(this.hasClassName(this.element, this.verticalClass))
//			{
//				this.element.style.position = "relative";
//			}
//			var linkitems = this.element.getElementsByTagName('a');
//			for(var i=0; i<linkitems.length; i++)
//			{
//				linkitems[i].style.position = "relative";
//			}
//		}
//	}
//};
//Spry.Widget.MenuBar.KEY_ESC = 27;
//Spry.Widget.MenuBar.KEY_UP = 38;
//Spry.Widget.MenuBar.KEY_DOWN = 40;
//Spry.Widget.MenuBar.KEY_LEFT = 37;
//Spry.Widget.MenuBar.KEY_RIGHT = 39;
//
//Spry.Widget.MenuBar.prototype.getElement = function(ele)
//{
//	if (ele && typeof ele == "string")
//		return document.getElementById(ele);
//	return ele;
//};
//
//Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
//{
//	if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
//	{
//		return false;
//	}
//	return true;
//};
//
//Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
//{
//	if (!ele || !className || this.hasClassName(ele, className))
//		return;
//	ele.className += (ele.className ? " " : "") + className;
//};
//
//Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
//{
//	if (!ele || !className || !this.hasClassName(ele, className))
//		return;
//	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
//};
//
//// addEventListener for Menu Bar
//// attach an event to a tag without creating obtrusive HTML code
//Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
//{
//	try
//	{
//		if (element.addEventListener)
//		{
//			element.addEventListener(eventType, handler, capture);
//		}
//		else if (element.attachEvent)
//		{
//			element.attachEvent('on' + eventType, handler);
//		}
//	}
//	catch (e) {}
//}
//
//// createIframeLayer for Menu Bar
//// creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
//Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
//{
//	var layer = document.createElement('iframe');
//	layer.tabIndex = '-1';
//	layer.src = 'javascript:""';
//	layer.frameBorder = '0';
//	layer.scrolling = 'no';
//	menu.parentNode.appendChild(layer);
//	
//	layer.style.left = menu.offsetLeft + 'px';
//	layer.style.top = menu.offsetTop + 'px';
//	layer.style.width = menu.offsetWidth + 'px';
//	layer.style.height = menu.offsetHeight + 'px';
//};
//
//// removeIframeLayer for Menu Bar
//// removes an IFRAME underneath a menu to reveal any form controls and ActiveX
//Spry.Widget.MenuBar.prototype.removeIframeLayer =  function(menu)
//{
//	var layers = menu.parentNode.getElementsByTagName('iframe');
//	while(layers.length > 0)
//	{
//		layers[0].parentNode.removeChild(layers[0]);
//	}
//};
//
//// clearMenus for Menu Bar
//// root is the top level unordered list (<ul> tag)
//Spry.Widget.MenuBar.prototype.clearMenus = function(root)
//{
//	var menus = root.getElementsByTagName('ul');
//	for(var i=0; i<menus.length; i++)
//		this.hideSubmenu(menus[i]);
//
//	this.removeClassName(this.element, this.activeClass);
//};
//
//// bubbledTextEvent for Menu Bar
//// identify bubbled up text events in Safari so we can ignore them
//Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
//{
//	return Spry.is.safari && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget));
//};
//
//// showSubmenu for Menu Bar
//// set the proper CSS class on this menu to show it
//Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
//{
//	if(this.currMenu)
//	{
//		this.clearMenus(this.currMenu);
//		this.currMenu = null;
//	}
//	
//	if(menu)
//	{
//		this.addClassName(menu, this.subVisibleClass);
//		if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
//		{
//			if(!this.hasClassName(this.element, this.horizontalClass) || menu.parentNode.parentNode != this.element)
//			{
//				menu.style.top = menu.parentNode.offsetTop + 'px';
//			}
//		}
//		if(Spry.is.ie && Spry.is.version < 7)
//		{
//			this.createIframeLayer(menu);
//		}
//	}
//	this.addClassName(this.element, this.activeClass);
//};
//
//// hideSubmenu for Menu Bar
//// remove the proper CSS class on this menu to hide it
//Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
//{
//	if(menu)
//	{
//		this.removeClassName(menu, this.subVisibleClass);
//		if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
//		{
//			menu.style.top = '';
//			menu.style.left = '';
//		}
//		this.removeIframeLayer(menu);
//	}
//};
//
//// initialize for Menu Bar
//// create event listeners for the Menu Bar widget so we can properly
//// show and hide submenus
//Spry.Widget.MenuBar.prototype.initialize = function(listitem, element)
//{
//	var opentime, closetime;
//	var link = listitem.getElementsByTagName('a')[0];
//	var submenus = listitem.getElementsByTagName('ul');
//	var menu = (submenus.length > 0 ? submenus[0] : null);
//
//	if(menu)
//		this.addClassName(link, this.hasSubClass);
//
//	if(!Spry.is.ie)
//	{
//		// define a simple function that comes standard in IE to determine
//		// if a node is within another node
//		listitem.contains = function(testNode)
//		{
//			// this refers to the list item
//			if(testNode == null)
//				return false;
//
//			if(testNode == this)
//				return true;
//			else
//				return this.contains(testNode.parentNode);
//		};
//	}
//
//	// need to save this for scope further down
//	var self = this;
//	this.addEventListener(listitem, 'mouseover', function(e){self.mouseOver(listitem, e);}, false);
//	this.addEventListener(listitem, 'mouseout', function(e){if (self.enableKeyboardNavigation) self.clearSelection(); self.mouseOut(listitem, e);}, false);
//
//	if (this.enableKeyboardNavigation)
//	{
//		this.addEventListener(link, 'blur', function(e){self.onBlur(listitem);}, false);
//		this.addEventListener(link, 'focus', function(e){self.keyFocus(listitem, e);}, false);
//	}
//};
//Spry.Widget.MenuBar.prototype.keyFocus = function (listitem, e)
//{
//	this.lastOpen = listitem.getElementsByTagName('a')[0];
//	this.addClassName(this.lastOpen, listitem.getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
//	this.hasFocus = true;
//};
//Spry.Widget.MenuBar.prototype.onBlur = function (listitem)
//{
//	this.clearSelection(listitem);
//};
//Spry.Widget.MenuBar.prototype.clearSelection = function(el){
//	//search any intersection with the current open element
//	if (!this.lastOpen)
//		return;
//
//	if (el)
//	{
//		el = el.getElementsByTagName('a')[0];
//		
//		// check children
//		var item = this.lastOpen;
//		while (item != this.element)
//		{
//			var tmp = el;
//			while (tmp != this.element)
//			{
//				if (tmp == item)
//					return;
//				try{
//					tmp = tmp.parentNode;
//				}catch(err){break;}
//			}
//			item = item.parentNode;
//		}
//	}
//	var item = this.lastOpen;
//	while (item != this.element)
//	{
//		this.hideSubmenu(item.parentNode);
//		var link = item.getElementsByTagName('a')[0];
//		this.removeClassName(link, this.hoverClass);
//		this.removeClassName(link, this.subHoverClass);
//		item = item.parentNode;
//	}
//	this.lastOpen = false;
//};
//Spry.Widget.MenuBar.prototype.keyDown = function (e)
//{
//	if (!this.hasFocus)
//		return;
//
//	if (!this.lastOpen)
//	{
//		this.hasFocus = false;
//		return;
//	}
//
//	var e = e|| event;
//	var listitem = this.lastOpen.parentNode;
//	var link = this.lastOpen;
//	var submenus = listitem.getElementsByTagName('ul');
//	var menu = (submenus.length > 0 ? submenus[0] : null);
//	var hasSubMenu = (menu) ? true : false;
//
//	Spry.Widget.MenuBar.stopPropagation(e);
//
//	var opts = [listitem, menu, null, this.getSibling(listitem, 'previousSibling'), this.getSibling(listitem, 'nextSibling')];
//
//	if (!opts[3])
//		opts[2] = (listitem.parentNode.parentNode.nodeName.toLowerCase() == 'li')?listitem.parentNode.parentNode:null;
//
//
//	var found = 0;
//	switch (e.keyCode){
//		case this.upKeyCode:
//			found = this.getElementForKey(opts, 'y', 1);
//			break;
//		case this.downKeyCode:
//			found = this.getElementForKey(opts, 'y', -1);
//			break;
//		case this.leftKeyCode:
//			found = this.getElementForKey(opts, 'x', 1);
//			break;
//		case this.rightKeyCode:
//			found = this.getElementForKey(opts, 'x', -1);
//			break;
//		case this.escKeyCode:
//		case 9:
//			this.clearSelection();
//			this.hasFocus = false;
//		default: return;
//	}
//	switch (found)
//	{
//		case 0: return;
//		case 1:
//			//subopts
//			this.mouseOver(listitem, e);
//			break;
//		case 2:
//			//parent
//			this.mouseOut(opts[2], e);
//			break;
//		case 3:
//		case 4:
//			// left - right
//			this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
//			break;
//	}
//	var link = opts[found].getElementsByTagName('a')[0];
//	if (opts[found].nodeName.toLowerCase() == 'ul')
//		opts[found] = opts[found].getElementsByTagName('li')[0];
//
//	this.addClassName(link, opts[found].getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
//	this.lastOpen = link;
//	opts[found].getElementsByTagName('a')[0].focus();
//};
//Spry.Widget.MenuBar.prototype.mouseOver = function (listitem, e)
//{
//	var link = listitem.getElementsByTagName('a')[0];
//	var submenus = listitem.getElementsByTagName('ul');
//	var menu = (submenus.length > 0 ? submenus[0] : null);
//	var hasSubMenu = (menu) ? true : false;
//	if (this.enableKeyboardNavigation)
//		this.clearSelection(listitem);
//
//	if(this.bubbledTextEvent())
//	{
//		// ignore bubbled text events
//		return;
//	}
//
//	if (listitem.closetime)
//		clearTimeout(listitem.closetime);
//
//	if(this.currMenu == listitem)
//	{
//		this.currMenu = null;
//	}
//
//	// move the focus too
//	if (this.hasFocus)
//		link.focus();
//
//	// show menu highlighting
//	this.addClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
//	this.lastOpen = link;
//	if(menu && !this.hasClassName(menu, this.subHoverClass))
//	{
//		var self = this;
//		listitem.opentime = window.setTimeout(function(){self.showSubmenu(menu);}, this.showDelay);
//	}
//};
//Spry.Widget.MenuBar.prototype.mouseOut = function (listitem, e)
//{
//	var link = listitem.getElementsByTagName('a')[0];
//	var submenus = listitem.getElementsByTagName('ul');
//	var menu = (submenus.length > 0 ? submenus[0] : null);
//	var hasSubMenu = (menu) ? true : false;
//	if(this.bubbledTextEvent())
//	{
//		// ignore bubbled text events
//		return;
//	}
//
//	var related = (typeof e.relatedTarget != 'undefined' ? e.relatedTarget : e.toElement);
//	if(!listitem.contains(related))
//	{
//		if (listitem.opentime) 
//			clearTimeout(listitem.opentime);
//		this.currMenu = listitem;
//
//		// remove menu highlighting
//		this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
//		if(menu)
//		{
//			var self = this;
//			listitem.closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, this.hideDelay);
//		}
//		if (this.hasFocus)
//			link.blur();
//	}
//};
//Spry.Widget.MenuBar.prototype.getSibling = function(element, sibling)
//{
//	var child = element[sibling];
//	while (child && child.nodeName.toLowerCase() !='li')
//		child = child[sibling];
//
//	return child;
//};
//Spry.Widget.MenuBar.prototype.getElementForKey = function(els, prop, dir)
//{
//	var found = 0;
//	var rect = Spry.Widget.MenuBar.getPosition;
//	var ref = rect(els[found]);
//
//	var hideSubmenu = false;
//	//make the subelement visible to compute the position
//	if (els[1] && !this.hasClassName(els[1], this.MenuBarSubmenuVisible))
//	{
//		els[1].style.visibility = 'hidden';
//		this.showSubmenu(els[1]);
//		hideSubmenu = true;
//	}
//
//	for (var i = 0; i < els.length; i++)
//		if (els[i])
//		{
//			var tmp = rect(els[i]); 
//			if ( (dir * tmp[prop]) < (dir * ref[prop]))
//			{
//				ref = tmp;
//				found = i;
//			}
//		}
//
//	// hide back the submenu
//	if (els[1] && hideSubmenu){
//		this.hideSubmenu(els[1]);
//		els[1].style.visibility =  '';
//	}
//
//	return found;
//};
//Spry.Widget.MenuBar.camelize = function(str)
//{
//	if (str.indexOf('-') == -1){
//		return str;	
//	}
//	var oStringList = str.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.MenuBar.getStyleProp = function(element, prop)
//{
//	var value;
//	try
//	{
//		if (element.style)
//			value = element.style[Spry.Widget.MenuBar.camelize(prop)];
//
//		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[Spry.Widget.MenuBar.camelize(prop)];
//			}
//	}
//	catch (e) {}
//
//	return value == 'auto' ? null : value;
//};
//Spry.Widget.MenuBar.getIntProp = function(element, prop)
//{
//	var a = parseInt(Spry.Widget.MenuBar.getStyleProp(element, prop),10);
//	if (isNaN(a))
//		return 0;
//	return a;
//};
//
//Spry.Widget.MenuBar.getPosition = function(el, doc)
//{
//	doc = doc || document;
//	if (typeof(el) == 'string') {
//		el = doc.getElementById(el);
//	}
//
//	if (!el) {
//		return false;
//	}
//
//	if (el.parentNode === null || Spry.Widget.MenuBar.getStyleProp(el, 'display') == 'none') {
//		//element must be visible to have a box
//		return false;
//	}
//
//	var ret = {x:0, y:0};
//	var parent = null;
//	var box;
//
//	if (el.getBoundingClientRect) { // IE
//		box = el.getBoundingClientRect();
//		var scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop;
//		var scrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft;
//		ret.x = box.left + scrollLeft;
//		ret.y = box.top + scrollTop;
//	} else if (doc.getBoxObjectFor) { // gecko
//		box = doc.getBoxObjectFor(el);
//		ret.x = box.x;
//		ret.y = box.y;
//	} else { // safari/opera
//		ret.x = el.offsetLeft;
//		ret.y = el.offsetTop;
//		parent = el.offsetParent;
//		if (parent != el) {
//			while (parent) {
//				ret.x += parent.offsetLeft;
//				ret.y += parent.offsetTop;
//				parent = parent.offsetParent;
//			}
//		}
//		// opera & (safari absolute) incorrectly account for body offsetTop
//		if (Spry.is.opera || Spry.is.safari && Spry.Widget.MenuBar.getStyleProp(el, 'position') == 'absolute')
//			ret.y -= doc.body.offsetTop;
//	}
//	if (el.parentNode)
//			parent = el.parentNode;
//	else
//		parent = null;
//	if (parent.nodeName){
//		var cas = parent.nodeName.toUpperCase();
//		while (parent && cas != 'BODY' && cas != 'HTML') {
//			cas = parent.nodeName.toUpperCase();
//			ret.x -= parent.scrollLeft;
//			ret.y -= parent.scrollTop;
//			if (parent.parentNode)
//				parent = parent.parentNode;
//			else
//				parent = null;
//		}
//	}
//	// adjust the margin
//	var gi = Spry.Widget.MenuBar.getIntProp;
//	var btw = gi(el, "margin-top");
//	var blw = gi(el, "margin-left");
//	ret.x -= blw;
//	ret.y -= btw;
//	return ret;
//};
//Spry.Widget.MenuBar.stopPropagation = function(ev)
//{
//	if (ev.stopPropagation)
//		ev.stopPropagation();
//	else
//		ev.cancelBubble = true;
//};
//Spry.Widget.MenuBar.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
//{
//	if (!optionsObj)
//		return;
//	for (var optionName in optionsObj)
//	{
//		if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
//			continue;
//		obj[optionName] = optionsObj[optionName];
//	}
//};
//
