/* X Library, Copyright 2001-2005 Michael Foster (Cross-Browser.com). Distributed under the terms of the GNU LGPL */
var xVersion='4.0',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;
}
var xMac=xUA.indexOf('mac')!=-1;

function xAddEventListener(e,eT,eL,cap) {
    if(!(e=xGetElementById(e))) return;
    eT=eT.toLowerCase();
    if((!xIE4Up && !xOp7Up) && e==window) {
        if(eT=='scroll') {
            window.xPSL=xScrollLeft();
            window.xPST=xScrollTop();
            window.xSEL=eL;
            xScrollEvent();
            return;
        }
    }
    var eh='e.on'+eT+'=eL';
    if(e.addEventListener) e.addEventListener(eT,eL,cap);
    else if(e.attachEvent) e.attachEvent('on'+eT,eL);
    else eval(eh);
}
function xScrollEvent() {
    if (window.xSEL) setTimeout('xScrollEvent()', 250);
    var sl = xScrollLeft(), st = xScrollTop();
    if (window.xPSL != sl || window.xPST != st) {
        window.xPSL = sl;
        window.xPST = st;
        if (window.xSEL) window.xSEL();
    }
}
function xDef() {
    for(var i=0; i<arguments.length; ++i) {if(typeof(arguments[i])=='undefined') return false;}
    return true;
}
function xGetElementById(e) {
    if(typeof(e)!='string') return e;
    if(document.getElementById) e=document.getElementById(e);
    else {
		if(document.all) e=document.all[e];
		else e=null;
	}
    return e;
}
function xNum() {
    for(var i=0; i<arguments.length; ++i) {
        if(isNaN(arguments[i]) || typeof(arguments[i])!='number') return false;
    }
    return true;
}
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 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 xSlideTo(e, y, uTime, init) {
    if (!(e=xGetElementById(e))) return;
    e.initPos = init;
    if (!e.timeout) e.timeout = 25;
    e.yTarget = y;
    e.slideTime = uTime;
    e.stop = false;
    e.yD = xTop(e);
    e.yA = e.yTarget - e.yD;
	e.B = 1/e.slideTime;
    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 (xScrollTop() < e.initPos) newY = 0;
			else {
				if((e.yA - e.initPos) < 0 && (e.yA - e.initPos) > -e.initPos) newY = Math.round((e.yA - e.initPos)* s + e.yD);
				else newY = Math.round(e.yA * s + e.yD - e.initPos);
			}
			xTop(e,newY);
			e.moving = true;
		}
		else {
			if (xScrollTop() > e.initPos) xTop(e,e.yTarget - e.initPos);
			e.moving = false;
		}
	}
}
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=0;
        }
    }
    else {
		if(css && xDef(e.style.pixelTop)) {
			if(xNum(iY)) e.style.pixelTop=iY;
			else iY=e.style.pixelTop;
		}
	}
    return iY;
}