/*******************************************************************
*
* File : xLayer.js
*
* Created : 2000/06/08
*
* Author : Roy Whittle (Roy@Whittle.com) www.Roy.Whittle.com
*
* Purpose : To create a cross browser dynamic layers. This
* library is based on the library defined in the
* excellent book. "JavasScript - The Definitive guide"
* by David Flanagan. Published by O'Reilly.
* ISBN 1-56592-392-8
*
* History
* Date Version Description
*
* 2000-06-08 1.0 Initial version
* 2000-06-17 1.1 Changed function name to setzIndex()
***********************************************************************/
var xLayerNo=0;
function xLayer(xHtml, x, y, w)
{
if(x==null)x=0;
if(y==null)y=0;
if(w==null)w=100;
if(document.layers)
{
this.layer=new Layer(w);
this.layer.document.open();
this.layer.document.write(xHtml);
this.layer.document.close();
this.layer.moveTo(x,y);
this.images=this.layer.document.images;
/*** These used to be prototypes (like IE ) but when NS (communicator) 4.7 ***/
/*** first loads up, for some reason the prototypes do not get assigned ***/
this.moveTo = function(x,y) { this.layer.moveTo(x,y); }
this.moveBy = function(x,y) { this.layer.moveBy(x,y); }
this.show = function() { this.layer.visibility = "show"; }
this.hide = function() { this.layer.visibility = "hide"; }
this.setzIndex = function(z) { this.layer.zIndex = z; }
this.setBgColor = function(color) { this.layer.bgColor = color; }
this.setBgImage = function(image) { this.layer.background.src = image; }
this.getX = function() { return this.layer.left; }
this.getY = function() { return this.layer.right; }
this.getWidth = function() { return this.layer.width; }
this.getHeight = function() { return this.layer.height; }
this.getStackingOrder = function() { return this.layer.zIndex; }
this.isVisible = function() { return this.layer.visibility == "show"; }
this.setContent = function(xHtml)
{
this.layer.document.open();
this.layer.document.write(xHtml);
this.layer.document.close();
}
this.clip = function(x1,y1, x2,y2)
{
this.layer.clip.top =y1;
this.layer.clip.left =x1;
this.layer.clip.bottom =y2;
this.layer.clip.right =x2;
}
}
else
if(document.all)
{
var xName="xLayer" + xLayerNo++;
txt = "
"
+ xHtml
+ "
";
document.body.insertAdjacentHTML("BeforeEnd",txt);
this.content = document.all[xName];
this.layer = document.all[xName].style;
this.images = document.images;
}
return(this);
}
if(document.layers)
{
/**** START prototypes for NS ***/
/*** END NS ***/
}
else
if(document.all)
{
/*** START prototypes for IE ***/
xLayer.prototype.moveTo = function(x,y)
{
this.layer.pixelLeft = x;
this.layer.pixelTop = y;
}
xLayer.prototype.moveBy = function(x,y)
{
this.layer.pixelLeft += x;
this.layer.pixelTop += y;
}
xLayer.prototype.show = function() { this.layer.visibility = "visible"; }
xLayer.prototype.hide = function() { this.layer.visibility = "hidden"; }
xLayer.prototype.setzIndex = function(z) { this.layer.zIndex = z; }
xLayer.prototype.setBgColor = function(color) { this.layer.backgroundColor = color; }
xLayer.prototype.setBgImage = function(image) { this.layer.backgroundImage = image; }
xLayer.prototype.setContent = function(xHtml) { this.content.innerHTML=xHtml; }
xLayer.prototype.getX = function() { return this.layer.pixelLeft; }
xLayer.prototype.getY = function() { return this.layer.pixelRight; }
xLayer.prototype.getWidth = function() { return this.layer.pixelWidth; }
xLayer.prototype.getHeight = function() { return this.layer.pixelHeight; }
xLayer.prototype.getStackingOrder = function() { return this.layer.zIndex; }
xLayer.prototype.isVisible = function() { return this.layer.visibility == "visible"; }
xLayer.prototype.clip = function(x1,y1, x2,y2)
{
this.layer.clip="rect("+y1+" "+x2+" "+y2+" "+x1+")";
this.layer.pixelWidth=x2;
this.layer.pixelHeight=y2;
this.layer.overflow="hidden";
}
/*** END IE ***/
}
else
{
xLayer.prototype.moveTo = function(x,y) { }
xLayer.prototype.moveBy = function(x,y) { }
xLayer.prototype.show = function() { }
xLayer.prototype.hide = function() { }
xLayer.prototype.setStackingOrder = function(z) { }
xLayer.prototype.setBgColor = function(color) { }
xLayer.prototype.setBgImage = function(image) { }
xLayer.prototype.getX = function() { return 0; }
xLayer.prototype.getY = function() { return 0; }
xLayer.prototype.getWidth = function() { return 0; }
xLayer.prototype.getHeight = function() { return 0; }
xLayer.prototype.getStackingOrder = function() { return 0; }
xLayer.prototype.isVisible = function() { return false; }
xlayer.prototype.setContent = function(xHtml) { }
}
/*** End - xLayer - a cross browser layer object by www.Roy.Whittle.com ***/