/* x_core.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
/* File Name: AnimationGuidanceSystem.js */
var xOp6Dn=false;
if(window.opera)
{
	var xUA=navigator.userAgent.toLowerCase();
    var i=xUA.indexOf('opera');
    if((i!=-1) && (parseInt(xUA.charAt(i+6)<7)))
    	{ xOp6Dn=true; }
}

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(xOp6Dn)
    {
        this.pageX = e.clientX;
        this.pageY = e.clientY;
    }
    else 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);
    }
    if (e.keyCode)
    {
        this.keyCode = e.keyCode;
    }
    else if (xDef(e.which) && e.type.indexOf('key')!=-1)
    {
        this.keyCode = e.which;
    }
    this.shiftKey = e.shiftKey;
    this.ctrlKey = e.ctrlKey;
    this.altKey = e.altKey;
}

function xBackground(e,c,i)
{
    if(!(e=xGetElementById(e)))
		{ return ''; }
    var bg='';
    if(e.style)
    {
        if(xStr(c))
        {
            if(!xOp6Dn)
            	{ e.style.backgroundColor=c; }
            else
				{ e.style.background=c; }
        }
        if(xStr(i))
			{ e.style.backgroundImage=(i!='')? 'url('+i+')' : null; }
        if(!xOp6Dn)
			{ bg=e.style.backgroundColor; }
        else
			{ bg=e.style.background; }
    }
    return bg;
}
function xClientHeight()
{
    var h=0;
    if(xOp6Dn)
		{ h=window.innerHeight; }
    else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientHeight)
		{ h=document.documentElement.clientHeight; }
    else if(document.body && document.body.clientHeight)
		{ h=document.body.clientHeight; }
    else if(xDef(window.innerWidth,window.innerHeight,document.width))
	{
        h=window.innerHeight;
        if(document.width>window.innerWidth)
        	{ h-=16; }
    }
    return h;
}
function xClientWidth()
{
    var w=0;
    if(xOp6Dn)
		{ w=window.innerWidth; }
    else if(document.compatMode == 'CSS1Compat' && !window.opera && document.documentElement && document.documentElement.clientWidth)
		{ w=document.documentElement.clientWidth; }
    else if(document.body && document.body.clientWidth)
		{ w=document.body.clientWidth; }
    else if(xDef(window.innerWidth,window.innerHeight,document.height))
    {
        w=window.innerWidth;
        if(document.height>window.innerHeight)
        	{ w-=16; }
    }
    return w;
}
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)))
		{ return null; }
    if(e.style && xDef(e.style.display))
    {
        if (xStr(s))
			{ e.style.display = s; }
        return e.style.display;
    }
    return null;
}
function xChangeCSSRule(sRuleName, sProp, sValue, sSheetTitle)
{
	var mySheetList, myRules;
	if(document.styleSheets && (mySheetList = document.styleSheets)) {
		for (i=mySheetList.length-1; i >= 0; i--) {		/* look through stylesheets in reverse order that they appear in the document */
			if(sSheetTitle && (sSheetTitle.length > 0) && (mySheetList[i].title.toLowerCase() != sSheetTitle.toLowerCase())) 
				{ continue; }	// Try the next stylesheet
			if(mySheetList[i] && (myRules = (mySheetList[i].cssRules || mySheetList[i].rules))){
				for (j=0; j<myRules.length; j++){
					if(myRules[j].selectorText.toLowerCase() == sRuleName.toLowerCase()){	
						myRules[j].style[sProp] = sValue;
						break;
					}
				}
			}
		}
	}
}
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 a = sProp.split('-');
        sProp = a[0];
        for (var 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')
		{ return e; }
    if(document.getElementById) 
		{ e=document.getElementById(e); }
    else if(document.all) 
		{ e=document.all[e]; }
    else 
		{ e=null; }
    return e;
}
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 == window || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body')
    {
    	if(e == window && window.innerHeight)
			{ h = window.innerHeight; }
		else
			{ 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=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 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 xPageBottom()	
{
	return (xScrollTop()+xHeight(window));
}
function xPageRight()		
{
	return (xScrollLeft()+xWidth(window));
}
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(typeof w.pageXOffset != 'undefined' )
			{ offset=w.pageXOffset; }
		else 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(typeof w.pageYOffset != 'undefined' )
			{ offset=w.pageYOffset; }
		else 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=0; }
        }
    }
    else if(css && xDef(e.style.pixelTop))
    {
        if(xNum(iY)) 
			{ e.style.pixelTop=iY; }
        else 
			{ iY=e.style.pixelTop; }
    }
    return iY;
}
function xUpdateWorkSpace()
{
    var cw = xClientWidth(), ch = xClientHeight(), sl = xScrollLeft(), st = xScrollTop();
	window.xPCW = cw;
    window.xPCH = ch;
	window.xPSL = sl;
   	window.xPST = st;
}
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 == window || e == document || e.tagName.toLowerCase() == 'html' || e.tagName.toLowerCase() == 'body')
    {
		if(e == window && window.innerWidth)
			{ w = window.innerWidth; }
		else
			{ 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;
}
/* x_slide.js compiled from X 4.0 with XC 0.27b. Distributed by GNU LGPL. For copyrights, license, documentation and more visit Cross-Browser.com */
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);
        if (e.slideLinear) 
			{ s = e.B * t; }
        else
			{ s = Math.sin(e.B * t); }
        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;
    }
}