var _styleLibDebugMode = false;

function getlocation(obj) {
	var xloc,yloc;
	xloc = 0; yloc = 0;
	
	if (document.getElementById || document.all) {
		if(_styleLibDebugMode) { alert("Using DOM loop to get XY coordinates for object " + obj); }
		while (obj.offsetParent) {
			yloc += obj.offsetTop;
			xloc += obj.offsetLeft;
			obj = obj.offsetParent;
			if(_styleLibDebugMode) { alert("Loop: " + obj + " is next.  We're currently at (" + xloc + ", " + yloc + ")" ); }
		}
	} else if (document.layers) {
		if(_styleLibDebugMode) { alert("Using Netscape method to get XY coordinates for object"); }
		xloc += obj.x;
		yloc += obj.y;
	} else {
		alert("Unknown mechanism found");
	}
	
	if(_styleLibDebugMode) { alert("Final location: (" + xloc + ", " + yloc + ")" ); }
	return new Array(parseInt(xloc), parseInt(yloc));
}

function getlayerlocation(obj) {
	var xloc,yloc;
	if(document.getElementById) {
		// DOM-compliant
		if(_styleLibDebugMode) { alert("Using DOM method to get XY coordinates for layer"); }
		xloc = obj.style.left;
		yloc = obj.style.top;
	} else if (document.layers) {
		// netscape
		if(_styleLibDebugMode) { alert("Using Crummy Netscape method to get XY coordinates for layer"); }
		xloc = obj.x;
		yloc = obj.y;
	} else {
		// ie 4
		if(_styleLibDebugMode) { alert("Using IE4 method to get XY coordinates for layer"); }
		xloc = obj.style.left;
		yloc = obj.style.top;
	}
	
	return new Array(parseInt(xloc), parseInt(yloc));
}

function getsize(obj) {
	
	if(_styleLibDebugMode) { alert("Getting a size for a(n) " + obj); }
	
	var xsize, ysize;
	if(document.getElementById) {
		// DOM-compliant
		if(_styleLibDebugMode) { alert("Using DOM method to get screensize of object"); }
		if(obj.scrollHeight){
			ysize = obj.scrollHeight;
			xsize = obj.scrollWidth;
		} else {
			// compensate for buggy IE5.2 MAC
			if(_styleLibDebugMode) { alert("Compensating for borked IE5.2 MAC"); }
			ysize = obj.offsetHeight;
			xsize = obj.offsetWidth;
		}
	} else if (document.layers) {
		// netscape
		if(_styleLibDebugMode) { alert("Using Crummy Netscape method to get screensize of object"); }
		ysize = obj.clip.height;
		xsize = obj.clip.width;
	} else {  
		// ie 4
		if(_styleLibDebugMode) { alert("Using IE4 method to get screensize of object"); }
		ysize = obj.scrollHeight;
		xsize = obj.scrollWidth;
	}
	
	if(_styleLibDebugMode) { alert("Evaluated size: (" + xsize + ", " + ysize + ")" ); }
	return new Array(parseInt(xsize),parseInt(ysize));
}

function getdepth(obj) {
	if(document.getElementById) {
		// DOM-compliant
		return parseInt(obj.style.zIndex);
	} else if (document.layers) {
		// netscape
		return 0; // netscape 4 didn't support layer indexes, only moveAbove and moveBelow stuff.  Bleh.
	} else {
		return parseInt(obj.style.zIndex);
	}
}

function getvisibility(obj) {
	if(document.getElementById) {
		// DOM-compliant
		return !(obj.style.visibility == "hidden");
	} else if(document.layers) {
		// netscape
		return !(obj.visibility == "hide");
	} else {
		// ie 4
		return !(obj.style.visibility == "hidden");
	}
}


function windowsize() {
	var width = 0, height = 0;
	if(typeof(window.innerWidth) == 'number') {
		//Non-IE
		width = window.innerWidth;
		height = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		width = document.documentElement.clientWidth;
		height = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}
	return [width,height];
}

function scrollposition() {
  var scrX = 0, scrY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrY = window.pageYOffset;
		scrX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrY = document.body.scrollTop;
		scrX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrY = document.documentElement.scrollTop;
		scrX = document.documentElement.scrollLeft;
	}
	return [ scrX, scrY ];
}
