/*	RgDynLib.js - General purpose JavaScript functions for layer control.
	ReGo Development - http://www.rego.dk/
	Last modified: 27-04-2000
*/

// Determine browser.
var isMinNS4 = (navigator.appName.indexOf("Netscape") >= 0 && parseFloat(navigator.appVersion) >= 4) ? 1 : 0;
var isMinIE4 = (document.all) ? 1 : 0;
//var isMinIE5 = (isMinIE4 && navigator.appVersion.indexOf("5.")) >= 0 ? 1 : 0;

var isMinIE5 = document.all && document.getElementById;
var isMinNS6 = document.getElementById && !document.all;

//-----------------------------------------------------------------------------
// Layer visibility.
//-----------------------------------------------------------------------------

function RgHideLayer(layer) {
	if(isMinNS4)		layer.visibility = "hide";
	if(isMinIE4)		layer.style.visibility = "hidden";
}

function RgShowLayer(layer) {
	if(isMinNS4)		layer.visibility = "show";
	if(isMinIE4)		layer.style.visibility = "visible";
}

function RgIsVisible(layer) {
	if(isMinNS4 && layer.visibility == "show")			return(true);
	if(isMinIE4 && layer.style.visibility == "visible")		return(true);
	return(false);
}

//-----------------------------------------------------------------------------
// Layer positioning.
//-----------------------------------------------------------------------------

function RgMoveLayerTo(layer, x, y) {
	if(isMinNS4)
		layer.moveTo(x, y);
	if(isMinIE4) {
		layer.style.left = x;
		layer.style.top  = y;
	}
}

function RgMoveLayerBy(layer, dx, dy) {
	if(isMinNS4)
		layer.moveBy(dx, dy);
	if(isMinIE4) {
		layer.style.pixelLeft += dx;
		layer.style.pixelTop  += dy;
	}
}

function RgGetLeft(layer) {
	if(isMinNS4)		return(layer.left);
	if(isMinIE4)		return(layer.style.pixelLeft);
	return(-1);
}

function RgGetTop(layer) {
	if(isMinNS4)		return(layer.top);
	if(isMinIE4)		return(layer.style.pixelTop);
	return(-1);
}

function RgGetRight(layer) {
	if(isMinNS4)		return(layer.left + RgGetWidth(layer));
	if(isMinIE4)		return(layer.style.pixelLeft + RgGetWidth(layer));
	return(-1);
}

function RgGetBottom(layer) {
	if(isMinNS4)		return(layer.top + RgGetHeight(layer));
	else if(isMinIE4)	return(layer.style.pixelTop + RgGetHeight(layer));
	return(-1);
}

function RgGetPageLeft(layer) {
	if(isMinNS4)		return(layer.pageX);
	if(isMinIE4)		return(layer.offsetLeft);
	return(-1);
}

function RgGetPageTop(layer) {
	if(isMinNS4)		return(layer.pageY);
	if(isMinIE4)		return(layer.offsetTop);
	return(-1);
}

function RgGetWidth(layer) {
	if(isMinNS4) {
		if(layer.document.width)
			return(layer.document.width);
		else
			return(layer.clip.right - layer.clip.left);
	}
	if(isMinIE4) {
		if(layer.style.pixelWidth)
			return(layer.style.pixelWidth);
		else
			return(layer.clientWidth);
	}
	return(-1);
}

function RgGetHeight(layer) {
	if(isMinNS4) {
		if(layer.document.height)
			return(layer.document.height);
		else
			return(layer.clip.bottom - layer.clip.top);
	}
	if(isMinIE4) {
		if(false && layer.style.pixelHeight)
			return(layer.style.pixelHeight);
		else
			return(layer.clientHeight);
	}
	return(-1);
}

function RgGetZIndex(layer) {
	if(isMinNS4)		return(layer.zIndex);
	if(isMinIE4)		return(layer.style.zIndex);
	return(-1);
}

function RgSetZIndex(layer, z) {
	if(isMinNS4)		layer.zIndex = z;
	if(isMinIE4)		layer.style.zIndex = z;
}

//-----------------------------------------------------------------------------
// Layer clipping.
//-----------------------------------------------------------------------------

function RgClipLayer(layer, clipleft, cliptop, clipright, clipbottom) {
	if(isMinNS4) {
		layer.clip.left   = clipleft;
		layer.clip.top    = cliptop;
		layer.clip.right  = clipright;
		layer.clip.bottom = clipbottom;
	}
	if(isMinIE4)
		layer.style.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
}

function RgGetClipLeft(layer) {
	if(isMinNS4)
		return(layer.clip.left);
	if(isMinIE4) {
		var str =  layer.style.clip;
		if(!str)
			return(0);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[3]);
	}
	return(-1);
}

function RgGetClipTop(layer) {
	if(isMinNS4)
		return(layer.clip.top);
	if(isMinIE4) {
		var str =  layer.style.clip;
		if (!str)
			return(0);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[0]);
	}
	return(-1);
}

function RgGetClipRight(layer) {
	if(isMinNS4)
		return(layer.clip.right);
	if(isMinIE4) {
		var str =  layer.style.clip;
		if(!str)
			return(layer.style.pixelWidth);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[1]);
	}
	return(-1);
}

function RgGetClipBottom(layer) {
	if(isMinNS4)
		return(layer.clip.bottom);
	if(isMinIE4) {
		var str =  layer.style.clip;
		if(!str)
			return(layer.style.pixelHeight);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[2]);
	}
	return(-1);
}

function RgGetClipWidth(layer) {
	if(isMinNS4)
		return(layer.clip.width);
	if(isMinIE4) {
		var str = layer.style.clip;
		if (!str)
			return(layer.style.pixelWidth);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[1] - clip[3]);
	}
	return(-1);
}

function RgGetClipHeight(layer) {
	if(isMinNS4)
		return(layer.clip.height);
	if(isMinIE4) {
		var str =  layer.style.clip;
		if(!str)
			return(layer.style.pixelHeight);
		var clip = RgGetIEClipValues(layer.style.clip);
		return(clip[2] - clip[0]);
	}
	return(-1);
}

function RgGetIEClipValues(str) {
	// Parse out the clipping values for IE layers.

	var clip = new Array();
	var i;

	i = str.indexOf("(");			clip[0] = parseInt(str.substring(i + 1, str.length), 10);
	i = str.indexOf(" ", i + 1);	clip[1] = parseInt(str.substring(i + 1, str.length), 10);
	i = str.indexOf(" ", i + 1);	clip[2] = parseInt(str.substring(i + 1, str.length), 10);
	i = str.indexOf(" ", i + 1);	clip[3] = parseInt(str.substring(i + 1, str.length), 10);
	return(clip);
}

//-----------------------------------------------------------------------------
// Layer scrolling.
//-----------------------------------------------------------------------------

function RgScrollLayerTo(layer, x, y, bound) {
	var dx = RgGetClipLeft(layer) - x;
	var dy = RgGetClipTop(layer) - y;
	RgScrollLayerBy(layer, -dx, -dy, bound);
}

function RgScrollLayerBy(layer, dx, dy, bound) {
	var cl = RgGetClipLeft(layer);
	var ct = RgGetClipTop(layer);
	var cr = RgGetClipRight(layer);
	var cb = RgGetClipBottom(layer);

	if(bound) {
		if(cl + dx < 0)
			dx = -cl;
		else if(cr + dx > RgGetWidth(layer))
			dx = RgGetWidth(layer) - cr;
		if(ct + dy < 0)
			dy = -ct;
		else if(cb + dy > RgGetHeight(layer))
			dy = RgGetHeight(layer) - cb;
	}

	RgClipLayer(layer, cl + dx, ct + dy, cr + dx, cb + dy);
	RgMoveLayerBy(layer, -dx, -dy);
}

//-----------------------------------------------------------------------------
// Layer background.
//-----------------------------------------------------------------------------

function RgSetBgColor(layer, color) {
	if(isMinNS4)		layer.bgColor = color;
	if(isMinIE4)		layer.style.backgroundColor = color;
}

function RgSetBgImage(layer, src) {
	if(isMinNS4)		layer.background.src = src;
	if(isMinIE4)		layer.style.backgroundImage = "url(" + src + ")";
}

//-----------------------------------------------------------------------------
// Layer utilities.
//-----------------------------------------------------------------------------

function RgGetLayer(name) {
	if(isMinNS4)		return RgFindLayer(name, document);
	if(isMinIE4)		return eval('document.all.' + name);
	return null;
}

function RgFindLayer(name, doc) {
	var i, layer;

	for(i = 0; i < doc.layers.length; i++) {
		layer = doc.layers[i];
		if(layer.name == name)
			return layer;
		if(layer.document.layers.length > 0) {
			layer = RgFindLayer(name, layer.document);
			if(layer != null)
				return layer;
		}
	}

	return null;
}

//-----------------------------------------------------------------------------
// Window and page properties.
//-----------------------------------------------------------------------------

function RgGetWindowWidth() {
	if(isMinNS4)		return(window.innerWidth);
	if(isMinIE4)		return(document.body.clientWidth);
	return(-1);
}

function RgGetWindowHeight() {
	if(isMinNS4)		return(window.innerHeight);
	if(isMinIE4)		return(document.body.clientHeight);
	return(-1);
}

function RgGetPageWidth() {
	if(isMinNS4)		return(document.width);
	if(isMinIE4)		return(document.body.scrollWidth);
	return(-1);
}

function RgGetPageHeight() {
	if(isMinNS4)		return(document.height);
	if(isMinIE4)		return(document.body.scrollHeight);
	return(-1);
}

function RgGetPageScrollX() {
	if(isMinNS4)		return(window.pageXOffset);
	if(isMinIE4)		return(document.body.scrollLeft);
	return(-1);
}

function RgGetPageScrollY() {
	if(isMinNS4)		return(window.pageYOffset);
	if(isMinIE4)		return(document.body.scrollTop);
	return(-1);
}
