Kód:
<script>
var xLayerNo=0;
function xLayer(newLayer, x, y, w)
{
if(x==null)x=0;
if(y==null)y=0;
if(w==null)w=100;
if(document.layers)
{
if(typeof newLayer == "string")
{
this.layer=new Layer(w);
this.layer.document.open();
this.layer.document.write(newLayer);
this.layer.document.close();
}
else
this.layer=newLayer;
this.layer.moveTo(x,y);
this.images=this.layer.document.images;
}
else
if(document.all)
{
var Xname;
if(typeof newLayer == "string")
{
xName="xLayer" + xLayerNo++;
var txt = "<DIV ID='" + xName
+ "' STYLE=\"position:absolute;"
+ "left:" + x + ";"
+ "top:" + y + ";"
+ "width:" + w + ";"
+ "visibility:hidden\">"
+ newLayer
+ "</DIV>";
document.body.insertAdjacentHTML("BeforeEnd",txt);
}
else
xName=newLayer.id;
this.content = document.all[xName];
this.layer = document.all[xName].style;
this.images = document.images;
}
else
if (document.getElementById)
{
/*** Add Netscape 6.0 support (NOTE: This may work in I.E. 5+. Will have to test***/
var newDiv;
if(typeof newLayer == "string")
{
var xName="xLayer" + xLayerNo++;
var txt = ""
+ "position:absolute;"
+ "left:" + x + "px;"
+ "top:" + y + "px;"
+ "width:" + w + "px;"
+ "visibility:hidden";
var newRange = document.createRange();
newDiv = document.createElement("DIV");
newDiv.setAttribute("style",txt);
newDiv.setAttribute("id", xName);
document.body.appendChild(newDiv);
newRange.setStartBefore(newDiv);
strFrag = newRange.createContextualFragment(newLayer);
newDiv.appendChild(strFrag);
}
else
newDiv = newLayer;
this.content = newDiv;
this.layer = newDiv.style;
this.images = document.images;
}
return(this);
}
function xLayerFromObj(theObj)
{
if(document.layers)
return(new xLayer(document.layers[theObj]));
else
if(document.all)
return(new xLayer(document.all[theObj]));
else
if(document.getElementById)
return(new xLayer(document.getElementById(theObj)));
}
if(navigator.appName.indexOf("Netscape") != -1 && !document.getElementById)
{
var eventmasks = {
onabort:Event.ABORT, onblur:Event.BLUR, onchange:Event.CHANGE,
onclick:Event.CLICK, ondblclick:Event.DBLCLICK,
ondragdrop:Event.DRAGDROP, onerror:Event.ERROR,
onfocus:Event.FOCUS, onkeydown:Event.KEYDOWN,
onkeypress:Event.KEYPRESS, onkeyup:Event.KEYUP, onload:Event.LOAD,
onmousedown:Event.MOUSEDOWN, onmousemove:Event.MOUSEMOVE,
onmouseout:Event.MOUSEOUT, onmouseover:Event.MOUSEOVER,
onmouseup:Event.MOUSEUP, onmove:Event.MOVE, onreset:Event.RESET,
onresize:Event.RESIZE, onselect:Event.SELECT, onsubmit:Event.SUBMIT,
onunload:Event.UNLOAD
};
/**** START prototypes for NS ***/
xLayer.prototype.moveTo = function(x,y) { this.layer.moveTo(x,y); }
xLayer.prototype.moveBy = function(x,y) { this.layer.moveBy(x,y); }
xLayer.prototype.show = function() { this.layer.visibility = "show"; }
xLayer.prototype.hide = function() { this.layer.visibility = "hide"; }
xLayer.prototype.setzIndex = function(z) { this.layer.zIndex = z; }
xLayer.prototype.setBgColor = function(color) { this.layer.bgColor = color; }
xLayer.prototype.setBgImage = function(image) { this.layer.background.src = image; }
xLayer.prototype.getX = function() { return this.layer.left; }
xLayer.prototype.getY = function() { return this.layer.top; }
xLayer.prototype.getWidth = function() { return this.layer.width; }
xLayer.prototype.getHeight = function() { return this.layer.height; }
xLayer.prototype.getzIndex = function() { return this.layer.zIndex; }
xLayer.prototype.isVisible = function() { return this.layer.visibility == "show"; }
xLayer.prototype.setContent = function(xHtml)
{
this.layer.document.open();
this.layer.document.write(xHtml);
this.layer.document.close();
}
xLayer.prototype.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;
}
xLayer.prototype.addEventHandler = function(eventname, handler)
{
this.layer.captureEvents(eventmasks[eventname]);
var xl = this;
this.layer[eventname] = function(event) {
return handler(xl, event.type, event.x, event.y,
event.which, event.which,
((event.modifiers & Event.SHIFT_MASK) != 0),
((event.modifiers & Event.CTRL_MASK) != 0),
((event.modifiers & Event.ALT_MASK) != 0));
}
}
/*** 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.pixelTop; }
xLayer.prototype.getWidth = function() { return this.layer.pixelWidth; }
xLayer.prototype.getHeight = function() { return this.layer.pixelHeight; }
xLayer.prototype.getzIndex = 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";
}
xLayer.prototype.addEventHandler = function(eventName, handler)
{
var xl = this;
this.content[eventName] = function()
{
var e = window.event;
e.cancelBubble = true;
return handler(xl, e.type, e.x, e.y,
e.button, e.keyCode,
e.shiftKey, e.ctrlKey, e.altKey);
}
}
/*** END IE ***/
}
else if (document.getElementById)
{
/*** W3C (NS 6) ***/
xLayer.prototype.moveTo = function(x,y)
{
this.layer.left = x+"px";
this.layer.top = y+"px";
}
xLayer.prototype.moveBy = function(x,y) { this.moveTo(this.getX()+x, this.getY()+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.getX = function() { return parseInt(this.layer.left); }
xLayer.prototype.getY = function() { return parseInt(this.layer.top); }
xLayer.prototype.getWidth = function() { return parseInt(this.layer.width); }
xLayer.prototype.getHeight = function() { return parseInt(this.layer.height); }
xLayer.prototype.getzIndex = 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.width=x2 + "px";
this.layer.height=y2+ "px";
this.layer.overflow="hidden";
}
xLayer.prototype.addEventHandler = function(eventName, handler)
{
var xl = this;
this.content[eventName] = function(e)
{
e.cancelBubble = true;
return handler(xl, e.type, e.pageX, e.pageY,
e.button, e.keyCode,
e.shiftKey, e.ctrlKey, e.altKey);
}
}
xLayer.prototype.setContent = function(xHtml)
{
var newRange = document.createRange();
newRange.setStartBefore(this.content);
while (this.content.hasChildNodes())
this.content.removeChild(this.content.lastChild);
var strFrag = newRange.createContextualFragment(xHtml);
this.content.appendChild(strFrag);
}
} else
{
xLayer.prototype.moveTo = function(x,y) { }
xLayer.prototype.moveBy = function(x,y) { }
xLayer.prototype.show = function() { }
xLayer.prototype.hide = function() { }
xLayer.prototype.setzIndex = 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.getzIndex = function() { return 0; }
xLayer.prototype.isVisible = function() { return false; }
xlayer.prototype.setContent = function(xHtml) { }
}
</script>
<script>
function xMouse()
{ this.X = 0;
this.Y = 0;
if(navigator.appName.indexOf("Netscape") != -1)
{
this.getMouseXY = function (evnt)
{
document.ml.X=evnt.pageX;
document.ml.Y=evnt.pageY;
}
window.captureEvents(Event.MOUSEMOVE);
window.onmousemove = this.getMouseXY;
document.ml = this;
}
else if(document.all)
{
if(navigator.appVersion.indexOf("MSIE 5.") != -1)
this.getMouseXY = function ()
{
document.ml.X = event.x + document.body.scrollLeft;
document.ml.Y = event.y + document.body.scrollTop;
}
else
this.getMouseXY = function ()
{
document.ml.X = event.x;
document.ml.Y = event.y;
}
document.ml = this;
document.onmousemove = this.getMouseXY;
}
return(this);
}
</script>
<script>
var m = new xMouse();
var oneDeg=(2*Math.PI)/360;
/*** verander hieronder de variabelen voor een ander effect ***/
var Radius = 1;
var NumStars=64;
var NumSteps=5;
var StepAngle=(11.25)*oneDeg;
var StarObject=new Array();
var hexDigit=new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
function dec2hex(dec)
{
return(hexDigit[dec>>4]+hexDigit[dec&15]);
}
function hex2dec(hex)
{
return(parseInt(hex,16))
}
function CreateStar()
{
this.layer = new xLayer("X", 100, 100, 10);
this.currAngle = 0;
this.step = 0;
this.x = 100;
this.y = 100;
return (this);
}
/*** Choose a random pinwheel configuration ***/
function restart()
{
var num=Math.floor(Math.random()*4);
for(i=0;i<NumStars;i++)
StarObject[i].layer.hide();
if(num==0){
Radius = 1;
NumStars=32;
NumSteps=16;
StepAngle=(25)*oneDeg;
}
for(i=0 ; i<NumStars; i++)
{
var s=StarObject[i];
s.currAngle = (StepAngle*i);
s.step = (i%NumSteps);
s.x=m.X;
s.y=m.Y;
}
for(i=0;i<NumStars;i++)
StarObject[i].layer.show();
}
function start()
{
for(i=0 ; i<NumStars; i++)
{
StarObject[i]=new CreateStar();
StarObject[i].currAngle = (StepAngle*i);
StarObject[i].step = (i%NumSteps);
StarObject[i].layer.clip(0,0,2,2);
StarObject[i].layer.setBgColor("red");
}
for(i=0 ; i<NumStars ; i++)
StarObject[i].layer.show();
/*** Remove this if you only 1 type of pinwheel ***/
Rotate();
}
function changeColour(s)
{
var colour="";
r2= Math.floor(Math.random()*2)*255;
g2= Math.floor(Math.random()*2)*255;
b2= Math.floor(Math.random()*2)*255;
if(r2==0 && g2==0 && b2==0)
r2=255;
colour = "#" + dec2hex(r2) + dec2hex(g2) + dec2hex(b2);
s.layer.setBgColor(colour);
s.x=m.X;
s.y=m.Y;
}
function Rotate()
{
var x;
var y;
for (i = 0 ; i < NumStars ; i++ ) {
var s=StarObject[i];
if(s.step==0)
changeColour(s);
var angle = s.currAngle;
var rad = s.step*Radius + 10;
x = s.x + rad*Math.cos(angle);
y = s.y + rad*Math.sin(angle);
s.layer.moveTo(x,y);
s.step = (s.step+1)%NumSteps;
}
setTimeout("Rotate()", 30);
}
function handle_resize()
{
if(document.layers)
start();
}
window.onresize=handle_resize;
window.onload=start;
</script>