// DHTML layer handling


// create a DIV tag
function createLayer(name, left, top, width, height, visible, content, styleClass) {
	document.writeln('<div class="'+styleClass+'" id="' + name + '" style="position:absolute; OVERFLOW: hidden; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + ' visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
	document.writeln(content);
	document.writeln('</div>');
}

// get the DIV object called <name>
function getLayer(name) {
	var theObj = document.getElementById(name);
	if (theObj)
		return theObj.style;
	else
		return null;
}

// move DIV <name> to x,y; use <imageName> as reference postion 
function positionLayer(name, x, y, imageName) {	
  	var layer = getLayer(name);		
	if (layer != null) {
		var layerPositioner = document.getElementById(imageName);
   		layer.left = (x+getAbsX(layerPositioner)) + "px";
		layer.top  = (y+getAbsY(layerPositioner)) + "px";
	}
}

// make DIV invisible
function hideLayer(name) {		
  	var layer = getLayer(name);		
	if (layer != null) {
		 layer.visibility = "hidden";
	}
}

// make DIV visible
function showLayer(name) {		
  	var layer = getLayer(name);		
	if (layer != null) {
	 	layer.visibility = "visible";
	}
}

// clip DIV display to clipleft, cliptop, clipright, clipbottom
// used for panning
function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {		
	var layer = getLayer(name);		
	if (layer != null)
		layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
}

// clip DIV display to clipleft, cliptip, clipright, clipbottom
// used for zoom box
function clipBox(name, startX, startY, endX, endY, imageName) {		
	var layer = getLayer(name);		
	if (layer != null) {

		var width = endX - startX;
		var height = endY - startY;
		
		var layerPositioner = document.getElementById(imageName);
	
		if (width > 0)
			layer.left = (startX+getAbsX(layerPositioner)) + "px";
		else
			layer.left = (endX+getAbsX(layerPositioner)) + "px";
		if (height > 0)
			layer.top = (startY+getAbsY(layerPositioner)) + "px";
		else
			layer.top = (endY+getAbsY(layerPositioner)) + "px";

		// Set the width and height of the zoom box.
		layer.width = Math.abs(width) + "px";
		layer.height = Math.abs(height) + "px";
	}
}

// methods to find out where the positioner image starts in reference to the browser page
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;
}

