/* Built from X 4.21 by XAG 1.0. 12Feb10 01:14 UT */
xLibrary = {
	version : "4.21",
	license : "GNU LGPL",
	url : "http://cross-browser.com/"
};
function xEvent(evt) {
	var e = evt || window.event;
	if (!e) {
		return
	}
	this.type = e.type;
	this.target = e.target || e.srcElement;
	this.relatedTarget = e.relatedTarget;
	/*
	 * @cc_on if (e.type == 'mouseover') this.relatedTarget = e.fromElement;
	 * else if (e.type == 'mouseout') this.relatedTarget = e.toElement; @
	 */
	if (xDef(e.pageX)) {
		this.pageX = e.pageX;
		this.pageY = e.pageY
	} else {
		if (xDef(e.clientX)) {
			this.pageX = e.clientX + xScrollLeft();
			this.pageY = e.clientY + xScrollTop()
		}
	}
	if (xDef(e.offsetX)) {
		this.offsetX = e.offsetX;
		this.offsetY = e.offsetY
	} else {
		if (xDef(e.layerX)) {
			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;
	if (typeof e.type == "string") {
		if (e.type.indexOf("click") != -1) {
			this.button = 0
		} else {
			if (e.type.indexOf("mouse") != -1) {
				this.button = e.button;
				/*
				 * @cc_on if (e.button & 1) this.button = 0; else if (e.button &
				 * 4) this.button = 1; else if (e.button & 2) this.button = 2; @
				 */
			}
		}
	}
}
function xAddEventListener(d, c, b, a) {
	if (!(d = xGetElementById(d))) {
		return
	}
	c = c.toLowerCase();
	if (d.addEventListener) {
		d.addEventListener(c, b, a || false)
	} else {
		if (d.attachEvent) {
			d.attachEvent("on" + c, b)
		} else {
			var f = d["on" + c];
			d["on" + c] = typeof f == "function" ? function(e) {
				f(e);
				b(e)
			} : b
		}
	}
}
function xCamelize(d) {
	var e, g, b, f;
	b = d.split("-");
	f = b[0];
	for (e = 1; e < b.length; ++e) {
		g = b[e].charAt(0);
		f += b[e].replace(g, g.toUpperCase())
	}
	return f
}
function xClientHeight() {
	var b = 0, c = document, a = window;
	if ((!c.compatMode || c.compatMode == "CSS1Compat") && c.documentElement && c.documentElement.clientHeight) {
		b = c.documentElement.clientHeight
	} else {
		if (c.body && c.body.clientHeight) {
			b = c.body.clientHeight
		} else {
			if (xDef(a.innerWidth, a.innerHeight, c.width)) {
				b = a.innerHeight;
				if (c.width > a.innerWidth) {
					b -= 16
				}
			}
		}
	}
	return b
}
function xClientWidth() {
	var b = 0, c = document, a = window;
	if ((!c.compatMode || c.compatMode == "CSS1Compat") && !a.opera && c.documentElement && c.documentElement.clientWidth) {
		b = c.documentElement.clientWidth
	} else {
		if (c.body && c.body.clientWidth) {
			b = c.body.clientWidth
		} else {
			if (xDef(a.innerWidth, a.innerHeight, c.height)) {
				b = a.innerWidth;
				if (c.height > a.innerHeight) {
					b -= 16
				}
			}
		}
	}
	return b
}
function xDef() {
	for ( var a = 0; a < arguments.length; ++a) {
		if (typeof (arguments[a]) == "undefined") {
			return false
		}
	}
	return true
}
function xEachE() {
	var c, b = arguments, d = b.length - 1;
	for (c = 0; c < d; ++c) {
		b[d](xGetElementById(b[c]), c)
	}
}
function xEachN(g, a, h, b) {
	var c = xGetElementById(g + a);
	while (c) {
		b(c, a, h);
		c = xGetElementById(g + (++a))
	}
}
function xGetComputedStyle(g, f, c) {
	if (!(g = xGetElementById(g))) {
		return null
	}
	var d, a = "undefined", b = document.defaultView;
	if (b && b.getComputedStyle) {
		d = b.getComputedStyle(g, "");
		if (d) {
			a = d.getPropertyValue(f)
		}
	} else {
		if (g.currentStyle) {
			a = g.currentStyle[xCamelize(f)]
		} else {
			return null
		}
	}
	return c ? (parseInt(a) || 0) : a
}
function xGetElementById(a) {
	if (typeof (a) == "string") {
		if (document.getElementById) {
			a = document.getElementById(a)
		} else {
			if (document.all) {
				a = document.all[a]
			} else {
				a = null
			}
		}
	}
	return a
}
function xGetElementsByClassName(l, k, b, h) {
	var g = [], d, j, a;
	d = new RegExp("(^|\\s)" + l + "(\\s|$)");
	j = xGetElementsByTagName(b, k);
	for (a = 0; a < j.length; ++a) {
		if (d.test(j[a].className)) {
			g[g.length] = j[a];
			if (h) {
				h(j[a])
			}
		}
	}
	return g
}
function xGetElementsByTagName(a, c) {
	var b = null;
	a = a || "*";
	c = xGetElementById(c) || document;
	if (typeof c.getElementsByTagName != "undefined") {
		b = c.getElementsByTagName(a);
		if (a == "*" && (!b || !b.length)) {
			b = c.all
		}
	} else {
		if (a == "*") {
			b = c.all
		} else {
			if (c.all && c.all.tags) {
				b = c.all.tags(a)
			}
		}
	}
	return b || []
}
function xHasPoint(f, i, g, j, a, h, d) {
	if (!xNum(j)) {
		j = a = h = d = 0
	} else {
		if (!xNum(a)) {
			a = h = d = j
		} else {
			if (!xNum(h)) {
				d = a;
				h = j
			}
		}
	}
	var c = xPageX(f), k = xPageY(f);
	return (i >= c + d && i <= c + xWidth(f) - a && g >= k + j && g <= k + xHeight(f) - h)
}
function xHeight(i, f) {
	var d, g = 0, c = 0, b = 0, j = 0, a;
	if (!(i = xGetElementById(i))) {
		return 0
	}
	if (xNum(f)) {
		if (f < 0) {
			f = 0
		} else {
			f = Math.round(f)
		}
	} else {
		f = -1
	}
	d = xDef(i.style);
	if (i == document || i.tagName.toLowerCase() == "html" || i.tagName.toLowerCase() == "body") {
		f = xClientHeight()
	} else {
		if (d && xDef(i.offsetHeight) && xStr(i.style.height)) {
			if (f >= 0) {
				if (document.compatMode == "CSS1Compat") {
					a = xGetComputedStyle;
					g = a(i, "padding-top", 1);
					if (g !== null) {
						c = a(i, "padding-bottom", 1);
						b = a(i, "border-top-width", 1);
						j = a(i, "border-bottom-width", 1)
					} else {
						if (xDef(i.offsetHeight, i.style.height)) {
							i.style.height = f + "px";
							g = i.offsetHeight - f
						}
					}
				}
				f -= (g + c + b + j);
				if (isNaN(f) || f < 0) {
					return
				} else {
					i.style.height = f + "px"
				}
			}
			f = i.offsetHeight
		} else {
			if (d && xDef(i.style.pixelHeight)) {
				if (f >= 0) {
					i.style.pixelHeight = f
				}
				f = i.style.pixelHeight
			}
		}
	}
	return f
}
function xLeft(c, a) {
	if (!(c = xGetElementById(c))) {
		return 0
	}
	var b = xDef(c.style);
	if (b && xStr(c.style.left)) {
		if (xNum(a)) {
			c.style.left = a + "px"
		} else {
			a = parseInt(c.style.left);
			if (isNaN(a)) {
				a = xGetComputedStyle(c, "left", 1)
			}
			if (isNaN(a)) {
				a = 0
			}
		}
	} else {
		if (b && xDef(c.style.pixelLeft)) {
			if (xNum(a)) {
				c.style.pixelLeft = a
			} else {
				a = c.style.pixelLeft
			}
		}
	}
	return a
}
function xMoveTo(b, a, c) {
	xLeft(b, a);
	xTop(b, c)
}
function xNum() {
	for ( var a = 0; a < arguments.length; ++a) {
		if (isNaN(arguments[a]) || typeof (arguments[a]) != "number") {
			return false
		}
	}
	return true
}
function xOffset(d, a) {
	var b = {
		x : 0,
		y : 0
	};
	d = xGetElementById(d);
	a = xGetElementById(a);
	while (d && d != a) {
		b.x += d.offsetLeft;
		b.y += d.offsetTop;
		d = d.offsetParent
	}
	return b
}
function xOpacity(a, b) {
	var c = xDef(b);
	if (!(a = xGetElementById(a))) {
		return 2
	}
	if (xStr(a.style.opacity)) {
		if (c) {
			a.style.opacity = b + ""
		} else {
			b = parseFloat(a.style.opacity)
		}
	} else {
		if (xStr(a.style.filter)) {
			if (c) {
				a.style.filter = "alpha(opacity=" + (100 * b) + ")"
			} else {
				if (a.filters && a.filters.alpha) {
					b = a.filters.alpha.opacity / 100
				}
			}
		} else {
			if (xStr(a.style.MozOpacity)) {
				if (c) {
					a.style.MozOpacity = b + ""
				} else {
					b = parseFloat(a.style.MozOpacity)
				}
			} else {
				if (xStr(a.style.KhtmlOpacity)) {
					if (c) {
						a.style.KhtmlOpacity = b + ""
					} else {
						b = parseFloat(a.style.KhtmlOpacity)
					}
				}
			}
		}
	}
	return isNaN(b) ? 1 : b
}
function xPageX(b) {
	var a = 0;
	b = xGetElementById(b);
	while (b) {
		if (xDef(b.offsetLeft)) {
			a += b.offsetLeft
		}
		b = xDef(b.offsetParent) ? b.offsetParent : null
	}
	return a
}
function xPageY(a) {
	var b = 0;
	a = xGetElementById(a);
	while (a) {
		if (xDef(a.offsetTop)) {
			b += a.offsetTop
		}
		a = xDef(a.offsetParent) ? a.offsetParent : null
	}
	return b
}
function xPreventDefault(a) {
	if (a && a.preventDefault) {
		a.preventDefault()
	} else {
		if (window.event) {
			window.event.returnValue = false
		}
	}
}
function xRemoveEventListener(d, c, b, a) {
	if (!(d = xGetElementById(d))) {
		return
	}
	c = c.toLowerCase();
	if (d.removeEventListener) {
		d.removeEventListener(c, b, a || false)
	} else {
		if (d.detachEvent) {
			d.detachEvent("on" + c, b)
		} else {
			d["on" + c] = null
		}
	}
}
function xResizeTo(c, a, b) {
	return {
		w : xWidth(c, a),
		h : xHeight(c, b)
	}
}
function xScrollLeft(c, b) {
	var a, d = 0;
	if (!xDef(c) || b || c == document || c.tagName.toLowerCase() == "html" || c.tagName.toLowerCase() == "body") {
		a = window;
		if (b && c) {
			a = c
		}
		if (a.document.documentElement && a.document.documentElement.scrollLeft) {
			d = a.document.documentElement.scrollLeft
		} else {
			if (a.document.body && xDef(a.document.body.scrollLeft)) {
				d = a.document.body.scrollLeft
			}
		}
	} else {
		c = xGetElementById(c);
		if (c && xNum(c.scrollLeft)) {
			d = c.scrollLeft
		}
	}
	return d
}
function xScrollTop(c, b) {
	var a, d = 0;
	if (!xDef(c) || b || c == document || c.tagName.toLowerCase() == "html" || c.tagName.toLowerCase() == "body") {
		a = window;
		if (b && c) {
			a = c
		}
		if (a.document.documentElement && a.document.documentElement.scrollTop) {
			d = a.document.documentElement.scrollTop
		} else {
			if (a.document.body && xDef(a.document.body.scrollTop)) {
				d = a.document.body.scrollTop
			}
		}
	} else {
		c = xGetElementById(c);
		if (c && xNum(c.scrollTop)) {
			d = c.scrollTop
		}
	}
	return d
}
function xStopPropagation(a) {
	if (a && a.stopPropagation) {
		a.stopPropagation()
	} else {
		if (window.event) {
			window.event.cancelBubble = true
		}
	}
}
function xStr(b) {
	for ( var a = 0; a < arguments.length; ++a) {
		if (typeof (arguments[a]) != "string") {
			return false
		}
	}
	return true
}
function xStyle(c, a) {
	var b, f;
	for (b = 2; b < arguments.length; ++b) {
		f = xGetElementById(arguments[b]);
		if (f.style) {
			try {
				f.style[c] = a
			} catch (d) {
				f.style[c] = ""
			}
		}
	}
}
function xTop(b, c) {
	if (!(b = xGetElementById(b))) {
		return 0
	}
	var a = xDef(b.style);
	if (a && xStr(b.style.top)) {
		if (xNum(c)) {
			b.style.top = c + "px"
		} else {
			c = parseInt(b.style.top);
			if (isNaN(c)) {
				c = xGetComputedStyle(b, "top", 1)
			}
			if (isNaN(c)) {
				c = 0
			}
		}
	} else {
		if (a && xDef(b.style.pixelTop)) {
			if (xNum(c)) {
				b.style.pixelTop = c
			} else {
				c = b.style.pixelTop
			}
		}
	}
	return c
}
function xWidth(g, b) {
	var d, f = 0, i = 0, h = 0, c = 0, a;
	if (!(g = xGetElementById(g))) {
		return 0
	}
	if (xNum(b)) {
		if (b < 0) {
			b = 0
		} else {
			b = Math.round(b)
		}
	} else {
		b = -1
	}
	d = xDef(g.style);
	if (g == document || g.tagName.toLowerCase() == "html" || g.tagName.toLowerCase() == "body") {
		b = xClientWidth()
	} else {
		if (d && xDef(g.offsetWidth) && xStr(g.style.width)) {
			if (b >= 0) {
				if (document.compatMode == "CSS1Compat") {
					a = xGetComputedStyle;
					f = a(g, "padding-left", 1);
					if (f !== null) {
						i = a(g, "padding-right", 1);
						h = a(g, "border-left-width", 1);
						c = a(g, "border-right-width", 1)
					} else {
						if (xDef(g.offsetWidth, g.style.width)) {
							g.style.width = b + "px";
							f = g.offsetWidth - b
						}
					}
				}
				b -= (f + i + h + c);
				if (isNaN(b) || b < 0) {
					return
				} else {
					g.style.width = b + "px"
				}
			}
			b = g.offsetWidth
		} else {
			if (d && xDef(g.style.pixelWidth)) {
				if (b >= 0) {
					g.style.pixelWidth = b
				}
				b = g.style.pixelWidth
			}
		}
	}
	return b
};
