if(top.location!=document.location)top.location=document.location;
function xPage(sRoot,bLeft,bRight,bVTb) {
	this.siteRoot=sRoot;
	this.left=bLeft;
	this.right=bRight;
	this.onLoad=function() {
		if(!this.downgrade) {
			if(bLeft)this.xcl=new xCollapsible('leftColumn',1);
			if(bRight)this.xcr=new xCollapsible('rightColumn',1);
			//if(bVTb)vtbInit();
			eqCol();
			var e=xGetElementById('footerTopLink');
			if(e)e.onclick=topBtnOnClick;
		}
	};
	this.onUnload=function() {
		if(this.xcl) this.xcl.onUnload();
		if(this.xcr) this.xcr.onUnload();
	};
	this.downgrade=true;
	if(document.getElementById||document.all) {
		this.downgrade=false;
	}
}

function eqCol() {
	var lc=xGetElementById('leftColumn');
	var lch=xHeight(lc);
	var rc=xGetElementById('rightColumn');
	rc=xFirstChild(rc);
	if(lch>xHeight(rc)) {
		xHeight(rc,lch);
	}
}
var useFixedVtb=typeof window.XMLHttpRequest!='undefined';
function xNewEle(p,n,cls,h,clk,movr,mout) {
	var e=document.createElement('DIV');
	if(e&&p) {
		e.id=cls+n;
		e.className=cls;
		if(h)e.innerHTML=h;
		p.appendChild(e);
		if(clk) e.onclick=clk;
		if(movr) e.onmouseover=movr;
		if(mout)e.onmouseout=mout;
	}
	return e;
}
function vtbInit(bLeft,bRight) {
	var rc=xGetElementById('rightColumn');
	var tb=xNewEle(document.body,1,'xToolbar');
	tb.floatOffset=xPageY('leftColumn');
	var b=xNewEle(tb,1,'xButton','^',topBtnOnClick,btnOnMouseover,btnOnMouseout);
	b.setAttribute('title','Top of Page');
	b=xNewEle(tb,2,'xButton',null,clpsBtnOnClick,btnOnMouseover,btnOnMouseout);
	b.clpsColor='#ffc';
	b.clpsEle=rc;
	b.collapsed=true;
	b.onclick();
	b=xNewEle(tb,3,'xButton','m',pumBtnOnClick,btnOnMouseover,btnOnMouseout);
	b.setAttribute('title','Menu');
	pumInit();
	vtbWinOnResize(1);
	xAddEventListener(window,'resize',winOnResize,false);
	if(!useFixedVtb) {
		xAddEventListener(window,'scroll',vtbWinOnScroll,false);
	}
}
function clpsBtnOnClick() {
	clpsBtnDoClick(this,this.collapsed);
}
function clpsBtnDoClick(thisEle,bShow) {
	var d,t,w,h;
	var lc=xGetElementById('leftColumn');
	var rc=xGetElementById('rightColumn');
	if(bShow) {
		d='block';
		t='Hide';
		w='70';
		h='&gt;';
	} else {
		d='none';
		t='Show';
		w='94';
		h='&lt;';
	}
	t+=' Side Panel';
	rc.style.display=d;
	lc.style.width=w+'%';
	thisEle.innerHTML=h;
	thisEle.setAttribute('title',t);
	thisEle.collapsed=!bShow;
}
function topBtnOnClick() {
	if(window.scrollTo) window.scrollTo(0,0);
	else if(window.scroll) window.scroll(0,0);
	else location.href='#topofpg';
	return false;
}
function btnOnMouseover(){
	this.className='xButtonHover';
}
function btnOnMouseout(){
	this.className='xButton';
}
function winOnResize(){
	if(!winOnResize.tmr){
		winOnResize.tmr=setTimeout("vtbWinOnResize();winOnResize.tmr=null;",500);
	}
}
winOnResize.tmr=null;
function vtbWinOnResize(init) {
	var tb=xGetElementById('xToolbar1');
	var lc=xGetElementById('leftColumn');
	var pm=xGetElementById('xPopupMenu1');
	var cw=xClientWidth();
	var y=xPageY(lc);
	if(useFixedVtb) {
		if(init==1) {
			tb.style.position='fixed';
			tb.style.zIndex='100';
			xShow(tb);
			pm.style.position='fixed';
			pm.style.zIndex='101';
		}
		xMoveTo(tb,cw-xWidth(tb)-2,y);
		xMoveTo(pm,cw-xWidth(pm)-6,y+36);
	} else {
		xMoveTo(tb,cw-xWidth(tb)-2,y);
		if(init==1)xShow(tb);
		else vtbWinOnScroll();
	}
	eqCol();
}
function winOnScroll() {
	if(!winOnScroll.tmr){
		winOnScroll.tmr=setTimeout("vtbWinOnScroll();winOnScroll.tmr=null;",500);
	}
}
winOnScroll.tmr=null;
function vtbWinOnScroll() {
	var tb=xGetElementById('xToolbar1');
	xSlideTo(tb,xPageX(tb),xScrollTop()+tb.floatOffset,800);
}
function pumInit(){
	var i;
	var aH=xGetElementsByTagName('H3',xGetElementById('leftColumn'));
	var pm=xNewEle(document.body,1,'xPopupMenu');
	xHide(pm);
	xWidth(pm,150);
	xZIndex(pm,100);
	var s="<div class='mnuBox'>";
	s+="<h4>Page Menu</h4>";
	for(i=0;i<aH.length;++i) {
		aH[i].id='lnk'+i;
		s+="<p><a href='#"+'lnk'+i+"'>"+aH[i].innerHTML+"</a></p>";
	}
	s+='</div>';
	s+="<div class='mnuBox'>";
	s+='<h4>Site Menu</h4>';
	var r="<p><a href='"+pg.siteRoot+"/";s+=r+"x/lib/' title='X Library Viewer'>XV</a></p>";
	s+=r+"x/docs/xc_reference.php' title='X Library Compiler'>XC</a></p>";
	s+=r+"toys/' title='Demos and Applications'>Demos</a></p>";
	s+=r+"talk/' title='Articles and Documentation'>Docs</a></p>";
	s+=r+"forums/' title='X Library Community'>Forums</a></p>";
	s+=r+"' title='Cross-Browser.com'>Home</a></p>";
	s+=r+"downloads/' title='Get X!'>Downloads</a></p>";
	s+='</div>';
	s="";
	pm.innerHTML=s;
}
function pumBtnOnClick(){
	var pm=xGetElementById('xPopupMenu1');
	if(!useFixedVtb){ 
		xMoveTo(pm,xClientWidth()-xWidth(pm)-6,xPageY(this));
	}
	xShow(pm);
	xAddEventListener(document,'mousemove',pumDocOnMousemove,false);
}
function pumDocOnMousemove(ev){
	var e=new xEvent(ev);
	var pm=xGetElementById('xPopupMenu1');
	var hp;
	if(useFixedVtb)hp=xHasPoint(pm,ev.clientX,ev.clientY,-10);
	else hp=xHasPoint(pm,e.pageX,e.pageY,-10);
	if(!hp) {
		xHide(pm);
		xRemoveEventListener(document,'mousemove',pumDocOnMousemove,false);
	}
}
/* Compiled from X 4.15 with XC 1.04 on 22May07 */

function xCollapsible(outerEle,bShow) {
	var container=xGetElementById(outerEle);
	if(!container){
		return null;
	}
	var isUL=container.nodeName.toUpperCase()=='UL';
	var i,trg,aTgt=xGetElementsByTagName(isUL?'UL':'DIV',container);
	for(i=0;i<aTgt.length;++i){
		trg=xPrevSib(aTgt[i]);
		if(trg&&(isUL||trg.nodeName.charAt(0).toUpperCase()=='H')){aTgt[i].xTrgPtr=trg;aTgt[i].style.display=bShow?'block':'none';
		trg.style.cursor='pointer';
		trg.xTgtPtr=aTgt[i];
		trg.onclick=trg_onClick;
	}
}

function trg_onClick(){
	var tgt=this.xTgtPtr.style;
	tgt.display=(tgt.display=='none')?"block":"none";
}
this.displayAll=function(bShow){
	for(var i=0;i<aTgt.length;++i) {
		if(aTgt[i].xTrgPtr){
			aTgt[i].style.display=bShow?"block":"none";
		}
	}
};
this.onUnload=function(){
	if(!container||!aTgt){
		return;
	}
	for(i=0;i<aTgt.length;++i){
		trg=aTgt[i].xTrgPtr;
		if(trg){
			if(trg.xTgtPtr){
				trg.xTgtPtr.TrgPtr=null;
				trg.xTgtPtr=null;
			}
			trg.onclick=null;
		}
	}
};}
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;
	this.button=null;
	if(e.type.indexOf('click')!=-1)this.button=0;
	else if(e.type.indexOf('mouse')!=-1){
		var ie=0,v=navigator.vendor;
		/*@cc_on ie=1;@*/
		if(ie||(v&&v.indexOf('Apple')!=-1)) {
			if(e.button&1) this.button=0;
			else if(e.button&2)this.button=2;
			else if(e.button&4)this.button=1;
		} else this.button=e.button;
	}
}
xLibrary={version:'4.15',license:'GNU LGPL',url:'http://cross-browser.com/'};

function xAddEventListener(e,eT,eL,cap){
	if(!(e=xGetElementById(e)))return;
	eT=eT.toLowerCase();
	if(e.addEventListener)e.addEventListener(eT,eL,cap||false);
	else if(e.attachEvent)e.attachEvent('on'+eT,eL);
	else{var o=e['on'+eT];
	e['on'+eT]=typeof o=='function'?function(v){o(v);
	eL(v);}:eL;}}
	
function xCamelize(cssPropStr){
	var i,c,a=cssPropStr.split('-');
	var s=a[0];
	for(i=1;i<a.length;++i){
		c=a[i].charAt(0);
		s+=a[i].replace(c,c.toUpperCase());
	}
	return s;
}
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 xDef(){
	for(var i=0;i<arguments.length;++i){
		if(typeof(arguments[i])=='undefined') return false;
	}
	return true;
}
function xFirstChild(e,t){
	e=xGetElementById(e);
	var c=e?e.firstChild:null;
	while(c){
		if(c.nodeType==1&&(!t||c.nodeName.toLowerCase()==t.toLowerCase())){
			break;
		}
		c=c.nextSibling;
	}
	return c;
}
function xGetComputedStyle(e,p,i){
	if(!(e=xGetElementById(e)))return null;
	var s,v='undefined',dv=document.defaultView;
	if(dv&&dv.getComputedStyle){
		s=dv.getComputedStyle(e,'');
		if(s)v=s.getPropertyValue(p);
	} else if(e.currentStyle){
		v=e.currentStyle[xCamelize(p)];
	} else return null;
	return i?(parseInt(v)||0):v;
}
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(typeof p.getElementsByTagName!='undefined'){
		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;}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 xPageX(e){var x=0;e=xGetElementById(e);while(e){if(xDef(e.offsetLeft))x+=e.offsetLeft;e=xDef(e.offsetParent)?e.offsetParent:null;}return x;}function xPageY(e){var y=0;e=xGetElementById(e);while(e){if(xDef(e.offsetTop))y+=e.offsetTop;e=xDef(e.offsetParent)?e.offsetParent:null;}return y;}function xPrevSib(e,t){e=xGetElementById(e);var s=e?e.previousSibling:null;while(s){if(s.nodeType==1&&(!t||s.nodeName.toLowerCase()==t.toLowerCase())){break;}s=s.previousSibling;}return s;}function xRemoveEventListener(e,eT,eL,cap){if(!(e=xGetElementById(e)))return;eT=eT.toLowerCase();if(e.removeEventListener)e.removeEventListener(eT,eL,cap||false);else if(e.detachEvent)e.detachEvent('on'+eT,eL);else e['on'+eT]=null;}

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 xSlideTo(e,x,y,uTime){if(!(e=xGetElementById(e)))return;if(!e.timeout)e.timeout=25;e.xTarget=x;e.yTarget=y;e.slideTime=uTime;e.stop=false;e.yA=e.yTarget-xTop(e);e.xA=e.xTarget-xLeft(e);if(e.slideLinear)e.B=1/e.slideTime;else e.B=Math.PI/(2*e.slideTime);e.yD=xTop(e);e.xD=xLeft(e);var d=new Date();e.C=d.getTime();if(!e.moving)_xSlideTo(e);}
function _xSlideTo(e){if(!(e=xGetElementById(e)))return;var now,s,t,newY,newX;now=new Date();t=now.getTime()-e.C;if(e.stop){e.moving=false;}else if(t<e.slideTime){setTimeout("_xSlideTo('"+e.id+"')",e.timeout);s=e.B*t;if(!e.slideLinear)s=Math.sin(s);newX=Math.round(e.xA*s+e.xD);newY=Math.round(e.yA*s+e.yD);xMoveTo(e,newX,newY);e.moving=true;}else{xMoveTo(e,e.xTarget,e.yTarget);e.moving=false;if(e.onslideend)e.onslideend();}}
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;}
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;}