/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	(from) ADxMenu script
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	(c) 2004 - Aleksandar Vacic, www.aplus.co.yu
	Some rights reserved, http://creativecommons.org/licenses/by-sa/2.0/
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	Using:
	X v3.15.2, Cross-Browser.com DHTML Library
	Copyright (c) 2004 Michael Foster, Licensed LGPL (gnu.org)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	these functions are taken from Mike Foster's X library, and simplified where possible.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

function xClientWidth() {
	var w = 0;
	if (!window.opera && document.documentElement && document.documentElement.clientWidth)
		w = document.documentElement.clientWidth;
	else if ( xDef(window.innerWidth, window.innerHeight, document.height) ) {
		w = window.innerWidth;
		if (document.height > window.innerHeight) w -= 16;
	}
	return w;
}

function xClientHeight() {
	var h = 0;
	if (!window.opera && document.documentElement && document.documentElement.clientHeight)
		h = document.documentElement.clientHeight;
	else if ( xDef(window.innerHeight, window.innerWidth, document.width) ) {
		h = window.innerHeight;
		if (document.width > window.innerWidth) h -= 16;
	}
	return h;
}

function xScrollLeft() {
	var offset = 0;
	if ( xDef(window.pageXOffset) )
		offset = window.pageXOffset;
	else if ( document.documentElement && document.documentElement.scrollLeft )
		offset = document.documentElement.scrollLeft;
	return offset;
}

function xScrollTop() {
	var offset = 0;
	if ( xDef(window.pageYOffset) )
		offset = window.pageYOffset;
	else if (document.documentElement && document.documentElement.scrollTop )
		offset = document.documentElement.scrollTop;
	else if (document.body && xDef(document.body.scrollTop))
		offset = document.body.scrollTop;
	return offset;
}

function xLeft(e, iX) {
	if (e) {
		if ( xDef(iX) )
			e.style.left = iX + "px";
		else {
		if ( xDef(e.offsetLeft) )
				iX = e.offsetLeft;
			else
				iX = parseInt(e.style.left);
		if (isNaN(iX))
				iX = 0;
		}
		return iX;
	}
}

function xTop(e, iY) {
	if (e) {
		if ( xDef(iY) )
			e.style.top = iY + "px";
		else {
			if ( xDef(e.offsetTop) )
				iY = e.offsetTop;
			else
				iY = parseInt(e.style.top);
			if (isNaN(iY))
				iY = 0;
		}
		return iY;
	}
}

function xWidth(e, iX) {
	if (e) {
		if ( xDef(iX) )
			e.style.width = iX + "px";
		else {
		if ( xDef(e.offsetWidth) )
				iX = e.offsetWidth;
			else
				iX = parseInt(e.style.width);
		if (isNaN(iX))
				iX = 0;
		}
		return iX;
	}
}

function xHeight(e, iY) {
	if (e) {
		if ( xDef(iY) )
			e.style.height = iY + "px";
		else {
			if ( xDef(e.offsetHeight) )
				iY = e.offsetHeight;
			else
				iY = parseInt(e.style.height);
			if (isNaN(iY))
				iY = 0;
		}
		return iY;
	}
}

function xPageX(e) {
	var x = 0;
	while (e) {
		if ( xDef(e.offsetLeft) ) {
			//alert('e.id = ' + e.id + ' = ' + e.offsetLeft);
			x += e.offsetLeft;
			//alert('x = ' + x);
		}
		else break;
		e = e.offsetParent;
	}
	return x;
}

function xPageY(e) {
	var y = 0;
	while (e) {
		if ( xDef(e.offsetTop) ) y += e.offsetTop;
		else break;
		e = e.offsetParent;
	}
	return y;
}

function xScrollX(e) {
	var x = 0;
	if (e.offsetParent) {
		while (e) {
			if ( xDef(e.scrollLeft) ) x += e.scrollLeft;
			else break;
			e = e.offsetParent;
		}
	}
	return x;
} 

function xScrollY(e) {
	var y = 0;
	if (e.offsetParent) {
		while (e) {
			if ( xDef(e.scrollTop) ) y += e.scrollTop;
			else break;
			e = e.offsetParent;
		}
	}
	return y;
}

function xDef() {
	for (var i=0; i<arguments.length; ++i) {
		if ( typeof(arguments[i]) == "undefined" )
			return false;
	}
	return true;
}

function xNum() {
	for (var i=0; i<arguments.length; ++i) {
		if (isNaN(arguments[i]) || typeof(arguments[i])!='number') 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 xGetElementsByClassName(clsName, parentEle, tagName, fn) {
	var found = new Array();
	var re = new RegExp('\\b'+clsName+'\\b', 'i');
	var list = parentEle.getElementsByTagName(tagName);
	for (var i = 0; i < list.length; ++i) {
		if (list[i].className.search(re) != -1) {
			found[found.length] = list[i];
			if (fn) fn(list[i]);
		}
	}
	return found;
}

function xGetComputedStyle(oEle, sProp) {
	var p = null;
	if(document.defaultView && document.defaultView.getComputedStyle){
		p = document.defaultView.getComputedStyle(oEle,'').getPropertyValue(sProp);
		p = parseInt(p);
	} else if(oEle.currentStyle) {
		p = oEle.currentStyle[sProp];
		p = parseInt(p);
	}
	return p;
}

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;
}
