/* Compiled from X 4.17 by XC 1.06 on 10Jul07 */

xLibrary = { version:'4.17', license:'GNU LGPL', url:'http://cross-browser.com/' };

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||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||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() // arguments
{
	for(var i=0; i<arguments.length; ++i) { if(typeof(arguments[i])=='undefined') return false; }
	return true;
}

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 xGetElementsByClassName(c, p, t, f)
{
	var r = new Array();
	var re = new RegExp("(^|\\s)"+c+"(\\s|$)");
	var e = xGetElementsByTagName(t, p);
	for(var i=0; i<e.length; ++i)
	{
		if(re.test(e[i].className)) 
		{
			r[r.length] = e[i]; 
			if(f) f(e[i]);
		}
	}
	return r;
}

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 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 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)
{
	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 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 xStr(s)
{
	for(var i=0; i<arguments.length; ++i)
	{
		if(typeof(arguments[i]) != 'string')
		return false;
	}
	return true;
}

function xStyle(sProp, sVal)
{
	var i, e;
	for(i=2; i<arguments.length; ++i)
	{
		e = xGetElementById(arguments[i]);
		if(e.style) 
		{
			try { e.style[sProp] = sVal; } 
			catch(err) { e.style[sProp]=''; }
		}
	}
}

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 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;
}
