xAddEventListener(window, 'load', btnInit, false);
xAddEventListener(window, 'load', trgInit, false);
xAddEventListener(window, 'resize', animBoxesResize, false);

function btnInit()
{
	var i, a = xGetElementsByClassName('jsButton');
	for (i = 0; i < a.length; ++i) { a[i].onclick = btnOnClick; }
}

function trgInit()
{
	var i, a = xGetElementsByClassName('jsTrigger');
	for (i = 0; i < a.length; ++i) { a[i].onmouseover = trgOnOver; a[i].onmouseout = trgOnOut; }
	a = xGetElementsByClassName('jsContainer');
	for (i = 0; i < a.length; ++i) { a[i].onmouseover = trgOnOver; a[i].onmouseout = trgOnOut; }
}

function btnOnClick()
{
	var i, xa = animBox.instances;
	for (i = 0; i < xa.length; ++i)
	{
		if ('btn_' + xa[i].eid == this.id) {
			if (xa[i].st == 1) { xa[i].expand(); }
			else if (xa[i].st == 2) { xa[i].collapse(); }
			else xa[i].animate();
		}
	}
}

function trgOnOver()
{
	var i, xa = animBox.instances;
	for (i = 0; i < xa.length; ++i)
	{
		if ('btn_' + xa[i].eid == this.id || xa[i].eid == this.id) {
			if (xa[i].out_tmr) { clearTimeout(xa[i].out_tmr); xa[i].out_tmr = null; }
			if (xa[i].st == 1) { xa[i].expand(); xa[i].act = 1; }
			else { xa[i].act = 1; }
		}
	}
}

function trgOnOut()
{
	var i, xa = animBox.instances;
	for (i = 0; i < xa.length; ++i)
	{
		if ('btn_' + xa[i].eid == this.id || xa[i].eid == this.id) {
			xa[i].act = 0;
			if (!xa[i].out_tmr) xa[i].out_tmr = setTimeout('trgOnTimer(' + xa[i].idx + ')', 400);
		}
	}
}

function trgOnTimer(idx)
{
	var xa = animBox.instances;
	xa[idx].out_tmr = null;
	if (xa[idx].act == 0) { xa[idx].collapse(); }
}

function animBoxesResize()
{
	var i, a = animBox.instances;
	for (i = 0; i < a.length; ++i)
	{
		if (a[i].pe) { a[i].reposition(); }
	}
}

function animBox(e, st, at, qc, tt, orf, otf, oed, oea, oef) // Object Prototype
{
	this.init(e, st, at, qc, tt, orf, otf, oed, oea, oef);
	var a = animBox.instances;
	var i;
	for (i = 0; i < a.length; ++i) { if (!a[i]) break; } // find an empty slot
	a[i] = this;
	this.idx = i;
	return this;
}

animBox.instances = []; // static property

animBox.prototype.init = function(e, st, at, qc, tt, orf, otf, oed, oea, oef)
{
	this.e = xGetElementById(e); // e is object ref or id str
	this.pe = 'bababah'; // pe is button or triger object ref or id str
	this.xs = null; // relative x shift: '-', null, '+'
	this.ys = null; // relative y shift: '-', null, '+'
	this.eid = e; // e is object ref or id str
	this.act = 0; // mouse status: 0=out, 1=over
	this.st = st || 2; // status: 1=collapsed, 2=expanded
	this.at = at || 2; // acceleration type: 1=linear, 2=sine, 3=cosine
	this.qc = qc || 1; // acceleration quarter-cycles
	this.tt = tt || 2000; // total time
	this.orf = orf; // onRun function
	this.otf = otf; // onTarget function
	this.oed = oed; // delay before calling onEnd
	this.oea = oea; // onEnd argument
	this.oef = oef; // onEnd function
	this.to = 20; // timer timeout
	this.as = false; // auto-start

	this.x = xPageX(this.e);
	this.y = xPageY(this.e);
	this.w = xWidth(this.e);
	this.h = xHeight(this.e);
	if (st == 1) // collapsed
	{
		xHide(this.e);
		xResizeTo(e, this.w, 2); // setting (…,1) seemed to cause problems? (perhaps because this ele has a border)
	}
	return this;
};

animBox.prototype.reposition = function(e, xs, ys)
{
	var x, y, a = animBox.instances[this.idx];
	if (!e)
	{
		e = a.pe;
		xs = a.xs;
		ys = a.ys
	}
	if (!xGetElementById(e)) return;
	var px = xPageX(e);
	var py = xPageY(e);
	var pw = xWidth(e);
	var ph = xHeight(e);
	a.pe = e;
	a.xs = xs;
	a.ys = ys;
	if (xs == '+') { x = px + pw; }
	else if (xs == '-') { x = px - a.w + pw; }
	else { x = px; }
	if (ys == '+') { y = py + ph; }
	else if (ys == '-') { y = py - a.h; }
	else { y = py; }
	xMoveTo(a.eid, x, y);
}

animBox.prototype.animate = function()
{
	var a = animBox.instances[this.idx];
	if (a.st == 1) { alert('expanding'); a.expand(); }
	else if (a.st == 2) { alert('collapsing'); a.collapse(); }
	else return;
}

animBox.prototype.expand = function()
{
	var a = animBox.instances[this.idx];
	a.x1 = xWidth(a.e); // start size
	a.y1 = xHeight(a.e);
	a.x2 = a.w; // end size
	a.y2 = a.h;
	a.orf = onRun;
	a.otf = onTarget;
	a.oea = 0;
	a.oef = onEnd;

	xShow(a.e);
	a.start();

	function onRun(o) { xResizeTo(o.e, Math.round(o.x), Math.round(o.y)); }
	function onTarget(o) { }
	function onEnd(o) { xResizeTo(o.e, o.w, o.h); o.st = 2; }
}

animBox.prototype.collapse = function()
{
	var a = animBox.instances[this.idx];
	a.x1 = xWidth(a.e); // start size
	a.y1 = xHeight(a.e);
	a.x2 = a.w; // end size
	a.y2 = 2;
	a.orf = onRun;
	a.otf = onTarget;
	a.oea = 0;
	a.oef = onEnd;

	a.start();
	return a;

	function onRun(o) { xResizeTo(o.e, Math.round(o.x), Math.round(o.y)); }
	function onTarget(o) { }
	function onEnd(o) { xHide(o.e); xResizeTo(o.e, o.w, 2); o.st = 1; }
}

animBox.prototype.start = function()
{
	var a = this;
	if (a.at == 1) { a.ap = 1 / a.tt; } // linear acceleration
	else { a.ap = a.qc * (Math.PI / (2 * a.tt)); } // sine and cosine acceleration
	// magnitudes
	if (xDef(a.x1)) { a.xm = a.x2 - a.x1; }
	if (xDef(a.y1)) { a.ym = a.y2 - a.y1; }
	// end point if even number of cyles
	if (!(a.qc % 2)) {
		if (xDef(a.x1)) a.x2 = a.x1;
		if (xDef(a.y1)) a.y2 = a.y1;
	}
	if (!a.tmr) { // if not already running
		var d = new Date();
		a.t1 = d.getTime(); // start time
		a.tmr = setTimeout('animBox.run(' + a.idx + ')', 1);
	}
};

animBox.run = function(i) // static method
{
	var a = animBox.instances[i];
	if (!a) return;
	var d = new Date();
	a.et = d.getTime() - a.t1; // elapsed time
	if (a.et < a.tt)
	{
		a.tmr = setTimeout('animBox.run(' + i + ')', a.to);
		a.af = a.ap * a.et;  // linear acceleration
		if (a.at == 2) { a.af = Math.abs(Math.sin(a.af)); } // sine acceleration
		else if (a.at == 3) { a.af = 1 - Math.abs(Math.cos(a.af)); } // cosine acceleration
		// instantaneous point
		if (xDef(a.x1)) a.x = a.xm * a.af + a.x1;
		if (xDef(a.y1)) a.y = a.ym * a.af + a.y1;
		a.orf(a); // onRun
	}
	else
	{
		var rep = false; // repeat
		if (xDef(a.x2)) a.x = a.x2;
		if (xDef(a.y2)) a.y = a.y2;
		a.tmr = null;
		a.otf(a); // onTarget
		if (xDef(a.oef)) { // onEnd
			if (a.oed) setTimeout(a.oef, a.oed); // no args passed to oef if oed or oef is str
			else if (xStr(a.oef)) { rep = eval(a.oef); }
			else { rep = a.oef(a, a.oea); }
		}
		if (rep) { a.resume(true); } // there may be a problem here if the anim is paused and oef returns true
  }
};

animBox.prototype.kill = function()
{
	animBox.instances[this.idx] = null;
};

/* Compiled from X 4.06 with XC 1.01 on 03Nov06 */
function xBackground(e,c,i){if(!(e=xGetElementById(e)))return'';var bg='';if(e.style){if(xStr(c)){e.style.backgroundColor=c;}if(xStr(i)){e.style.backgroundImage=(i!='')?'url('+i+')':null;}bg=e.style.backgroundColor;}return bg;}function xClientHeight(){var v=0,d=document,w=window;if(d.compatMode=='CSS1Compat'&&!w.opera&&d.documentElement&&d.documentElement.clientHeight){v=d.documentElement.clientHeight;}else if(d.body&&d.body.clientHeight){v=d.body.clientHeight;}else if(xDef(w.innerWidth,w.innerHeight,d.width)){v=w.innerHeight;if(d.width>w.innerWidth)v-=16;}return v;}function xClientWidth(){var v=0,d=document,w=window;if(d.compatMode=='CSS1Compat'&&!w.opera&&d.documentElement&&d.documentElement.clientWidth){v=d.documentElement.clientWidth;}else if(d.body&&d.body.clientWidth){v=d.body.clientWidth;}else if(xDef(w.innerWidth,w.innerHeight,d.height)){v=w.innerWidth;if(d.height>w.innerHeight)v-=16;}return v;}function xClip(e,t,r,b,l){if(!(e=xGetElementById(e)))return;if(e.style){if(xNum(l))e.style.clip='rect('+t+'px '+r+'px '+b+'px '+l+'px)';else e.style.clip='rect(0 '+parseInt(e.style.width)+'px '+parseInt(e.style.height)+'px 0)';}}function xColor(e,s){if(!(e=xGetElementById(e)))return'';var c='';if(e.style&&xDef(e.style.color)){if(xStr(s))e.style.color=s;c=e.style.color;}return c;}function xDef(){for(var i=0;i<arguments.length;++i){if(typeof(arguments[i])=='undefined')return false;}return true;}function xDisplay(e,s){if((e=xGetElementById(e))&&e.style&&xDef(e.style.display)){if(xStr(s)){try{e.style.display=s;}catch(ex){e.style.display='';}}return e.style.display;}return null;}function xGetComputedStyle(oEle,sProp,bInt){var s,p='undefined';var dv=document.defaultView;if(dv&&dv.getComputedStyle){s=dv.getComputedStyle(oEle,'');if(s)p=s.getPropertyValue(sProp);}else if(oEle.currentStyle){var i,c,a=sProp.split('-');sProp=a[0];for(i=1;i<a.length;++i){c=a[i].charAt(0);sProp+=a[i].replace(c,c.toUpperCase());}p=oEle.currentStyle[sProp];}else return null;return bInt?(parseInt(p)||0):p;}function xGetElementById(e){if(typeof(e)=='string'){if(document.getElementById)e=document.getElementById(e);else if(document.all)e=document.all[e];else e=null;}return e;}function xGetElementsByTagName(t,p){var list=null;t=t||'*';p=p||document;if(p.getElementsByTagName){list=p.getElementsByTagName(t);if(t=='*'&&(!list||!list.length))list=p.all;}else{if(t=='*')list=p.all;else if(p.all&&p.all.tags)list=p.all.tags(t);}return list||new Array();}function xHasPoint(e,x,y,t,r,b,l){if(!xNum(t)){t=r=b=l=0;}else if(!xNum(r)){r=b=l=t;}else if(!xNum(b)){l=r;b=t;}var eX=xPageX(e),eY=xPageY(e);return(x>=eX+l&&x<=eX+xWidth(e)-r&&y>=eY+t&&y<=eY+xHeight(e)-b);}function xHeight(e,h){if(!(e=xGetElementById(e)))return 0;if(xNum(h)){if(h<0)h=0;else h=Math.round(h);}else h=-1;var css=xDef(e.style);if(e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){h=xClientHeight();}else if(css&&xDef(e.offsetHeight)&&xStr(e.style.height)){if(h>=0){var pt=0,pb=0,bt=0,bb=0;if(document.compatMode=='CSS1Compat'){var gcs=xGetComputedStyle;pt=gcs(e,'padding-top',1);if(pt!==null){pb=gcs(e,'padding-bottom',1);bt=gcs(e,'border-top-width',1);bb=gcs(e,'border-bottom-width',1);}else if(xDef(e.offsetHeight,e.style.height)){e.style.height=h+'px';pt=e.offsetHeight-h;}}h-=(pt+pb+bt+bb);if(isNaN(h)||h<0)return;else e.style.height=h+'px';}h=e.offsetHeight;}else if(css&&xDef(e.style.pixelHeight)){if(h>=0)e.style.pixelHeight=h;h=e.style.pixelHeight;}return h;}function xHide(e){return xVisibility(e,0);}function xLeft(e,iX){if(!(e=xGetElementById(e)))return 0;var css=xDef(e.style);if(css&&xStr(e.style.left)){if(xNum(iX))e.style.left=iX+'px';else{iX=parseInt(e.style.left);if(isNaN(iX))iX=xGetComputedStyle(e,'left',1);if(isNaN(iX))iX=0;}}else if(css&&xDef(e.style.pixelLeft)){if(xNum(iX))e.style.pixelLeft=iX;else iX=e.style.pixelLeft;}return iX;}xLibrary={version:'4.06',license:'GNU LGPL',url:'http://cross-browser.com/'};function xMoveTo(e,x,y){xLeft(e,x);xTop(e,y);}function xNum(){for(var i=0;i<arguments.length;++i){if(isNaN(arguments[i])||typeof(arguments[i])!='number')return false;}return true;}function xOffsetLeft(e){if(!(e=xGetElementById(e)))return 0;if(xDef(e.offsetLeft))return e.offsetLeft;else return 0;}function xOffsetTop(e){if(!(e=xGetElementById(e)))return 0;if(xDef(e.offsetTop))return e.offsetTop;else return 0;}function xOpacity(e,o){var set=xDef(o);if(!(e=xGetElementById(e)))return 2;if(xStr(e.style.opacity)){if(set)e.style.opacity=o+'';else o=parseFloat(e.style.opacity);}else if(xStr(e.style.filter)){if(set)e.style.filter='alpha(opacity='+(100*o)+')';else if(e.filters&&e.filters.alpha){o=e.filters.alpha.opacity/100;}}else if(xStr(e.style.MozOpacity)){if(set)e.style.MozOpacity=o+'';else o=parseFloat(e.style.MozOpacity);}else if(xStr(e.style.KhtmlOpacity)){if(set)e.style.KhtmlOpacity=o+'';else o=parseFloat(e.style.KhtmlOpacity);}return isNaN(o)?1:o;}function xPageX(e){if(!(e=xGetElementById(e)))return 0;var x=0;while(e){if(xDef(e.offsetLeft))x+=e.offsetLeft;e=xDef(e.offsetParent)?e.offsetParent:null;}return x;}function xPageY(e){if(!(e=xGetElementById(e)))return 0;var y=0;while(e){if(xDef(e.offsetTop))y+=e.offsetTop;e=xDef(e.offsetParent)?e.offsetParent:null;}return y;}function xParent(e,bNode){if(!(e=xGetElementById(e)))return null;var p=null;if(!bNode&&xDef(e.offsetParent))p=e.offsetParent;else if(xDef(e.parentNode))p=e.parentNode;else if(xDef(e.parentElement))p=e.parentElement;return p;}function xResizeTo(e,w,h){xWidth(e,w);xHeight(e,h);}function xScrollLeft(e,bWin){var offset=0;if(!xDef(e)||bWin||e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){var w=window;if(bWin&&e)w=e;if(w.document.documentElement&&w.document.documentElement.scrollLeft)offset=w.document.documentElement.scrollLeft;else if(w.document.body&&xDef(w.document.body.scrollLeft))offset=w.document.body.scrollLeft;}else{e=xGetElementById(e);if(e&&xNum(e.scrollLeft))offset=e.scrollLeft;}return offset;}function xScrollTop(e,bWin){var offset=0;if(!xDef(e)||bWin||e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){var w=window;if(bWin&&e)w=e;if(w.document.documentElement&&w.document.documentElement.scrollTop)offset=w.document.documentElement.scrollTop;else if(w.document.body&&xDef(w.document.body.scrollTop))offset=w.document.body.scrollTop;}else{e=xGetElementById(e);if(e&&xNum(e.scrollTop))offset=e.scrollTop;}return offset;}function xShow(e){return xVisibility(e,1);}function xStr(s){for(var i=0;i<arguments.length;++i){if(typeof(arguments[i])!='string')return false;}return true;}function xTop(e,iY){if(!(e=xGetElementById(e)))return 0;var css=xDef(e.style);if(css&&xStr(e.style.top)){if(xNum(iY))e.style.top=iY+'px';else{iY=parseInt(e.style.top);if(isNaN(iY))iY=xGetComputedStyle(e,'top',1);if(isNaN(iY))iY=0;}}else if(css&&xDef(e.style.pixelTop)){if(xNum(iY))e.style.pixelTop=iY;else iY=e.style.pixelTop;}return iY;}var xOp7Up,xOp6Dn,xIE4Up,xIE4,xIE5,xNN4,xUA=navigator.userAgent.toLowerCase();if(window.opera){var i=xUA.indexOf('opera');if(i!=-1){var v=parseInt(xUA.charAt(i+6));xOp7Up=v>=7;xOp6Dn=v<7;}}else if(navigator.vendor!='KDE'&&document.all&&xUA.indexOf('msie')!=-1){xIE4Up=parseFloat(navigator.appVersion)>=4;xIE4=xUA.indexOf('msie 4')!=-1;xIE5=xUA.indexOf('msie 5')!=-1;}else if(document.layers){xNN4=true;}xMac=xUA.indexOf('mac')!=-1;function xVisibility(e,bShow){if(!(e=xGetElementById(e)))return null;if(e.style&&xDef(e.style.visibility)){if(xDef(bShow))e.style.visibility=bShow?'visible':'hidden';return e.style.visibility;}return null;}function xWidth(e,w){if(!(e=xGetElementById(e)))return 0;if(xNum(w)){if(w<0)w=0;else w=Math.round(w);}else w=-1;var css=xDef(e.style);if(e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){w=xClientWidth();}else if(css&&xDef(e.offsetWidth)&&xStr(e.style.width)){if(w>=0){var pl=0,pr=0,bl=0,br=0;if(document.compatMode=='CSS1Compat'){var gcs=xGetComputedStyle;pl=gcs(e,'padding-left',1);if(pl!==null){pr=gcs(e,'padding-right',1);bl=gcs(e,'border-left-width',1);br=gcs(e,'border-right-width',1);}else if(xDef(e.offsetWidth,e.style.width)){e.style.width=w+'px';pl=e.offsetWidth-w;}}w-=(pl+pr+bl+br);if(isNaN(w)||w<0)return;else e.style.width=w+'px';}w=e.offsetWidth;}else if(css&&xDef(e.style.pixelWidth)){if(w>=0)e.style.pixelWidth=w;w=e.style.pixelWidth;}return w;}function xZIndex(e,uZ){if(!(e=xGetElementById(e)))return 0;if(e.style&&xDef(e.style.zIndex)){if(xNum(uZ))e.style.zIndex=uZ;uZ=parseInt(e.style.zIndex);}return uZ;}
/* Compiled from X 4.06 with XC 1.01 on 03Nov06 */
function xAppendChild(oParent,oChild){if(oParent.appendChild)return oParent.appendChild(oChild);else return null;}function xCreateElement(sTag){if(document.createElement)return document.createElement(sTag);else return null;}function xFirstChild(e,t){if(!(e=xGetElementById(e)))return;var c=e?e.firstChild:null;if(t)while(c&&c.nodeName.toLowerCase()!=t.toLowerCase()){c=c.nextSibling;}else while(c&&c.nodeType!=1){c=c.nextSibling;}return c;}function xGetComputedStyle(oEle,sProp,bInt){var s,p='undefined';var dv=document.defaultView;if(dv&&dv.getComputedStyle){s=dv.getComputedStyle(oEle,'');if(s)p=s.getPropertyValue(sProp);}else if(oEle.currentStyle){var i,c,a=sProp.split('-');sProp=a[0];for(i=1;i<a.length;++i){c=a[i].charAt(0);sProp+=a[i].replace(c,c.toUpperCase());}p=oEle.currentStyle[sProp];}else return null;return bInt?(parseInt(p)||0):p;}function xGetElementsByAttribute(sTag,sAtt,sRE,fn){var a,list,found=new Array(),re=new RegExp(sRE,'i');list=xGetElementsByTagName(sTag);for(var i=0;i<list.length;++i){a=list[i].getAttribute(sAtt);if(!a){a=list[i][sAtt];}if(typeof(a)=='string'&&a.search(re)!=-1){found[found.length]=list[i];if(fn)fn(list[i]);}}return found;}function xGetElementsByClassName(c,p,t,f){var found=new Array();var re=new RegExp('\\b'+c+'\\b','i');var list=xGetElementsByTagName(t,p);for(var i=0;i<list.length;++i){if(list[i].className&&list[i].className.search(re)!=-1){found[found.length]=list[i];if(f)f(list[i]);}}return found;}function xGetElementsByTagName(t,p){var list=null;t=t||'*';p=p||document;if(p.getElementsByTagName){list=p.getElementsByTagName(t);if(t=='*'&&(!list||!list.length))list=p.all;}else{if(t=='*')list=p.all;else if(p.all&&p.all.tags)list=p.all.tags(t);}return list||new Array();}function xInnerHtml(e,h){if(!(e=xGetElementById(e))||!xStr(e.innerHTML))return null;var s=e.innerHTML;if(xStr(h)){e.innerHTML=h;}return s;}xLibrary={version:'4.06',license:'GNU LGPL',url:'http://cross-browser.com/'};function xNextSib(e,t){if(!(e=xGetElementById(e)))return;var s=e?e.nextSibling:null;if(t)while(s&&s.nodeName.toLowerCase()!=t.toLowerCase()){s=s.nextSibling;}else while(s&&s.nodeType!=1){s=s.nextSibling;}return s;}function xParentNode(ele,n){while(ele&&n--){ele=ele.parentNode;}return ele;}function xPrevSib(e,t){if(!(e=xGetElementById(e)))return;var s=e?e.previousSibling:null;if(t)while(s&&s.nodeName.toLowerCase()!=t.toLowerCase()){s=s.previousSibling;}else while(s&&s.nodeType!=1){s=s.previousSibling;}return s;}function xWalkEleTree(n,f,d,l,b){if(typeof l=='undefined')l=0;if(typeof b=='undefined')b=0;var v=f(n,l,b,d);if(!v)return 0;if(v==1){for(var c=n.firstChild;c;c=c.nextSibling){if(c.nodeType==1){if(!l)++b;if(!xWalkEleTree(c,f,d,l+1,b))return 0;}}}return 1;}function xWalkTree(n,f){f(n);for(var c=n.firstChild;c;c=c.nextSibling){if(c.nodeType==1)xWalkTree(c,f);}}
/* Compiled from X 4.06 with XC 1.01 on 03Nov06 */
function xAddEventListener(e,eT,eL,cap){if(!(e=xGetElementById(e)))return;eT=eT.toLowerCase();if(e==window&&!e.opera&&!document.all){if(eT=='resize'){e.xPCW=xClientWidth();e.xPCH=xClientHeight();e.xREL=eL;xResizeEvent();return;}if(eT=='scroll'){e.xPSL=xScrollLeft();e.xPST=xScrollTop();e.xSEL=eL;xScrollEvent();return;}}if(e.addEventListener)e.addEventListener(eT,eL,cap);else if(e.attachEvent)e.attachEvent('on'+eT,eL);else e['on'+eT]=eL;}function xResizeEvent(){if(window.xREL)setTimeout('xResizeEvent()',250);var w=window,cw=xClientWidth(),ch=xClientHeight();if(w.xPCW!=cw||w.xPCH!=ch){w.xPCW=cw;w.xPCH=ch;if(w.xREL)w.xREL();}}function xScrollEvent(){if(window.xSEL)setTimeout('xScrollEvent()',250);var w=window,sl=xScrollLeft(),st=xScrollTop();if(w.xPSL!=sl||w.xPST!=st){w.xPSL=sl;w.xPST=st;if(w.xSEL)w.xSEL();}}function xEvent(evt){var e=evt||window.event;if(!e)return;if(e.type)this.type=e.type;if(e.target)this.target=e.target;else if(e.srcElement)this.target=e.srcElement;if(e.relatedTarget)this.relatedTarget=e.relatedTarget;else if(e.type=='mouseover'&&e.fromElement)this.relatedTarget=e.fromElement;else if(e.type=='mouseout')this.relatedTarget=e.toElement;if(xDef(e.pageX,e.pageY)){this.pageX=e.pageX;this.pageY=e.pageY;}else if(xDef(e.clientX,e.clientY)){this.pageX=e.clientX+xScrollLeft();this.pageY=e.clientY+xScrollTop();}if(xDef(e.offsetX,e.offsetY)){this.offsetX=e.offsetX;this.offsetY=e.offsetY;}else if(xDef(e.layerX,e.layerY)){this.offsetX=e.layerX;this.offsetY=e.layerY;}else{this.offsetX=this.pageX-xPageX(this.target);this.offsetY=this.pageY-xPageY(this.target);}this.keyCode=e.keyCode||e.which||0;this.shiftKey=e.shiftKey;this.ctrlKey=e.ctrlKey;this.altKey=e.altKey;}xLibrary={version:'4.06',license:'GNU LGPL',url:'http://cross-browser.com/'};function xPreventDefault(e){if(e&&e.preventDefault)e.preventDefault();else if(window.event)window.event.returnValue=false;}function xRemoveEventListener(e,eT,eL,cap){if(!(e=xGetElementById(e)))return;eT=eT.toLowerCase();if(e==window){if(eT=='resize'&&e.xREL){e.xREL=null;return;}if(eT=='scroll'&&e.xSEL){e.xSEL=null;return;}}if(e.removeEventListener)e.removeEventListener(eT,eL,cap);else if(e.detachEvent)e.detachEvent('on'+eT,eL);else e['on'+eT]=null;}function xStopPropagation(evt){if(evt&&evt.stopPropagation)evt.stopPropagation();else if(window.event)window.event.cancelBubble=true;}