// rci2.js
// Layer manipulation primitives
// Copyright 1999-2002 Rode Consulting, Inc.
// All rights reserved.

// Rev 0.9.8
// 6/23/2002

bad_browser = false;

function getDivStyle(div) {

    var div_style;
    if ( document.getElementById && document.getElementById(div) != null )
	div_style = document.getElementById(div).style;
    else if (document.layers)
        div_style = document.layers[div];
    else if (document.all)
        div_style = document.all[div].style;

    return div_style;
}

function setVisibilityDiv(div,visibility) {
    var div_style = getDivStyle(div);
    if (div_style) div_style.visibility = visibility;
}
function setVisibilityDivOrFrame(div,visibility) {
    if (document.layers)
	setVisibilityDiv(div,visibility);
}
function setVisibilityDivInFrame(div,visibility,frame) {
    if (document.layers || frame == null || frame == "")
	setVisibilityDiv(div,visibility);
    else
        document.frames[frame].setVisibilityDiv(div,visibility);
}

function globalOffsetLeft(obj) {

    if (!obj) return 0;
    if (document.layers)	return obj.x;
    if (document.all || document.getElementById)
	return obj.offsetLeft+globalOffsetLeft(obj.offsetParent);
}
function globalOffsetTop(obj) {

    if (!obj) return 0;
    if (document.layers)	return obj.y;
    if (document.all || document.getElementById)
	return obj.offsetTop+globalOffsetTop(obj.offsetParent);
}
function elementWidth(obj) {

    if (!obj) return 0;
    if (document.layers)	return obj.width;
    if (document.all || document.getElementById)
	return obj.offsetWidth;
}
function elementHeight(obj) {

    if (!obj) return 0;
    if (document.layers)	return obj.height;
    if (document.all || document.getElementById)
	return obj.offsetHeight;
}

function moveDiv(div,x,y) {

    var div_style = getDivStyle(div);
    if (document.layers)
	document.layers[div].moveTo(x,y);
    else if (div_style) {
        div_style.left=x+"px";
        div_style.top=y+"px";
    }
}

function getImage(name) {
    var element;
    if (document.layers)
	element = document.images[name];
    else if (document.all)
	element = document.all[name];
    else if (document.getElementById)  // This order for backwards compat.
	element = document.getElementById(name+"_id");

//alert(element+" "+globalOffsetLeft(element)+" "+globalOffsetTop(element));
    return element;
}
function alignDivToImage(div, name, dx, dy) {

    var element = getImage(name);
    if (element)
	moveDiv(div, globalOffsetLeft( element )+dx,
		     globalOffsetTop(  element )+dy );
}
function alignDivToElement(div, element, dx, dy) {

    if (element)
	moveDiv(div, globalOffsetLeft( element )+dx,
		     globalOffsetTop(  element )+dy );
}

var alignables = new Array()

function alignDivSpec(div,element,dx,dy) {
    this.div	= div;
    this.element = element;
    this.dx	= dx;
    this.dy	= dy;
}
function alignDivLater(div,element,dx,dy) {
    alignables[alignables.length] = new alignDivSpec(div,element,dx,dy);
}

function alignInit() {
    for (var i=0; i<alignables.length; i++) {
	alignDivToImage( alignables[i].div, alignables[i].element,
			 alignables[i].dx,  alignables[i].dy );
	setVisibilityDiv( alignables[i].div, "visible" );
    }
}

function writeDiv(div,text) {

    if (document.getElementById)
	document.getElementById(div).innerHTML = text;
    else if (document.all)
        document.all[div].innerHTML = text;
    else if (document.layers) {
        document.layers[div].document.open();
        document.layers[div].document.write(text);
        document.layers[div].document.close();
    }
}

