// overly simplistic test for IE
isIE = (document.all ? true : false);
// both IE5 and NS6 are DOM-compliant
isDOM = (document.getElementById ? true : false);

// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table!
function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
	iPos = 0;
	while (elt != null) {
		iPos += elt["offset" + which];
		elt = elt.offsetParent;
	}
	return iPos;
}

function getDivStyle(divname) {
	var style;
	if (isDOM) { style = document.getElementById(divname).style; }
	else { style = isIE ? document.all[divname].style
	: document.layers[divname]; } // NS4
	return style;
}

function hideElement(divname) {
	getDivStyle(divname).visibility = 'hidden';
}

// annoying detail: IE and NS6 store elt.top and elt.left as strings.
function moveBy(elt,deltaX,deltaY) {
	elt.left = parseInt(elt.left) + deltaX;
	elt.top = parseInt(elt.top) + deltaY;
}

function toggleVisible(divname,formElt,show) {
	divstyle = getDivStyle(divname);
	if (!show) {
		divstyle.visibility = 'hidden';
	} else {
		fixPosition(divname,formElt);
		divstyle.visibility = 'visible';
	}
}

function setPosition(elt,positioner,isPlacedUnder) {
	elt = document.getElementById(elt);
	elt.style.left = getAbsX(positioner) + 'px';
	elt.style.top = (getAbsY(positioner) + positioner.offsetHeight) + 'px';
}

function fixPosition(divname, poselm) {
	setPosition(divname,poselm,true);
}

function toggleDatePicker(eltName,formElt,show) {
	newCalendar(eltName,formElt);
	toggleVisible(eltName,formElt,show);
}
