var _hasDOM = document.getElementById;
var _hasAll = document.all;
var _hasLayers = document.layers;
var _opera = navigator.userAgent.indexOf('Opera')!=-1;
var _px='px';

function getElement(id, f){ //returns reference to HTML element (usually a DIV)
	if (_hasLayers) {
		f = (f) ? f : self;
		var V = f.document.layers;
		if (V[id]) return V[id];
		for (var W=0; W<V.length;) t=getElement(id, V[W++]); return t;
	}
	if (_hasAll) { return document.all[id]; }
	if (_hasDOM) { return document.getElementById(id); }
}

function showElement(el) { _hasLayers ? el.visibility = 'show' : el.style.visibility = 'visible'; }
function hideElement(el) { _hasLayers ? el.visibility = 'hide' : el.style.visibility = 'hidden'; }
function setZ(el, z) { z = parseInt(z); _hasLayers ? el.zIndex = z : el.style.zIndex = z; }
function setX(el, x) { x = parseInt(x); _hasLayers ? el.left = x : _opera ? el.style.pixelLeft = x : el.style.left = x + _px; }
function setY(el, y) { y = parseInt(y); _hasLayers ? el.top  = y : _opera ? el.style.pixelTop = y  : el.style.top = y + _px; }

function writeHTML(el, str) { //destroys contents of div 'el', replaces with 'str'
	if (_hasLayers) { Y = el.document; Y.open(); Y.write(str); Y.close(); }
	else if (el.innerHTML) { el.innerHTML = str; }
}

function getAbsX(el) { return (el.x) ? el.x : getAbsPos(el,"Left"); }
function getAbsY(el) { return (el.y) ? el.y : getAbsPos(el,"Top"); }
function getAbsPos(el, which) {
	iPos = 0;
	while (el != null) {
		iPos += el["offset" + which];
		el = el.offsetParent;
	}
	return iPos;
}

function moveDiv() {
	if (moveDiv.arguments.length > 0) {
		for (var i=0; i<moveDiv.arguments.length; i++) {
			var divId = moveDiv.arguments[i];
			var imgId = moveDiv.arguments[i] + 'Pos';
			if (getElement(divId)) {
				var div = getElement(divId);
				var img = (_hasLayers) ? document.images[imgId] : getElement(imgId) ;
				setX(div, getAbsX(img));
				setY(div, getAbsY(img));
				showElement(div);
			}
		}
	}
	else {
		return false;
	}
}

function fixPosition() {
	if (_hasLayers && (fixPosition.arguments.length > 0)) {
		for (var i=0; i<fixPositions.arguments.length; i++) {
			var id = fixPositions.arguments[i];
			moveDiv(id);
		}
	}
	else {
		return false;
	}
}
