var ns4 = (navigator.appName.indexOf("Netscape") != -1 && !document.getElementById); if(!window.JSFX)
JSFX=new Object(); JSFX.layerNo=0; JSFX.createLayer = function(htmlStr, parent)
{ var elem = null; if(document.layers)
{ var xName="xLayer" + JSFX.layerNo++; if(parent == null)
elem=new Layer(2000); else
elem=new Layer(2000, parent.elem); elem.document.open(); elem.document.write(htmlStr); elem.document.close(); elem.moveTo(0,0); elem.innerHTML = htmlStr;}
else
if(document.all)
{ if(parent == null)
parent=document.body; else
parent=parent.elem; var xName = "xLayer" + JSFX.layerNo++; var txt = '<DIV ID="' + xName + '"' + ' STYLE="position:absolute;left:0;top:0;visibility:hidden">' + htmlStr + '</DIV>'; parent.insertAdjacentHTML("BeforeEnd",txt); elem = document.all[xName];}
else
if (document.getElementById)
{ if(parent == null)
parent=document.body; else
parent=parent.elem; var xName="xLayer" + JSFX.layerNo++; var txt = "" + "position:absolute;left:0px;top:0px;visibility:hidden"; var newRange = document.createRange(); elem = document.createElement("DIV"); elem.setAttribute("style",txt); elem.setAttribute("id", xName); parent.appendChild(elem); newRange.setStartBefore(elem); strFrag = newRange.createContextualFragment(htmlStr); elem.appendChild(strFrag);}
return elem;}
JSFX.Layer = function(newLayer, parent)
{ if(!newLayer)
return; if(typeof newLayer == "string")
this.elem = JSFX.createLayer(newLayer, parent); else
this.elem=newLayer; if(document.layers)
{ this.images = this.elem.document.images; this.parent = parent; this.style = this.elem; if(parent != null)
this.style.visibility = "inherit";}
else
{ this.images = document.images; this.parent = parent; this.style = this.elem.style;}
window[this.elem.id]=this;}
JSFX.findLayer = function(theDiv, d)
{ if(document.layers)
{ var i; if(d==null) d = document; var theLayer = d.layers[theDiv]; if(theLayer != null)
return(theLayer); else
for(i=0 ; i<d.layers.length ; i++)
{ theLayer = JSFX.findLayer(theDiv, d.layers[i].document); if(theLayer != null)
return(theLayer);}
return("Undefined....");}
else
if(document.all)
return(document.all[theDiv]); else
if(document.getElementById)
return(document.getElementById(theDiv)); else
return("Undefined.....");}
JSFX.Layer.prototype.moveTo = function(x,y)
{ this.style.left = x+"px"; this.style.top = y+"px";}
if(ns4)
JSFX.Layer.prototype.moveTo = function(x,y) { this.elem.moveTo(x,y);}
JSFX.Layer.prototype.show = function() { this.style.visibility = "visible";}
JSFX.Layer.prototype.hide = function() { this.style.visibility = "hidden";}
JSFX.Layer.prototype.isVisible = function() { return this.style.visibility == "visible";}
if(ns4)
{ JSFX.Layer.prototype.show = function() { this.style.visibility = "show";}
JSFX.Layer.prototype.hide = function() { this.style.visibility = "hide";}
JSFX.Layer.prototype.isVisible = function() { return this.style.visibility == "show";}
}
JSFX.Layer.prototype.setzIndex = function(z) { this.style.zIndex = z;}
JSFX.Layer.prototype.getzIndex = function() { return this.style.zIndex;}
JSFX.Layer.prototype.setColor = function(c){this.style.color=c;}
if(ns4)
JSFX.Layer.prototype.setColor = function(c)
{ this.elem.document.write("<FONT COLOR='"+c+"'>"+this.elem.innerHTML+"</FONT>"); this.elem.document.close();}
JSFX.Layer.prototype.setBgColor = function(color) { this.style.backgroundColor = color==null?'transparent':color;}
if(ns4)
JSFX.Layer.prototype.setBgColor = function(color) { this.elem.bgColor = color;}
JSFX.Layer.prototype.setBgImage = function(image) { this.style.backgroundImage = "url("+image+")";}
if(ns4)
JSFX.Layer.prototype.setBgImage = function(image) { this.style.background.src = image;}
JSFX.Layer.prototype.setContent = function(xHtml) { this.elem.innerHTML=xHtml;}
if(ns4)
JSFX.Layer.prototype.setContent = function(xHtml)
{ this.elem.document.write(xHtml); this.elem.document.close(); this.elem.innerHTML = xHtml;}
JSFX.Layer.prototype.clip = function(x1,y1, x2,y2){ this.style.clip="rect("+y1+" "+x2+" "+y2+" "+x1+")";}
if(ns4)
JSFX.Layer.prototype.clip = function(x1,y1, x2,y2)
{ this.style.clip.top =y1; this.style.clip.left =x1; this.style.clip.bottom =y2; this.style.clip.right =x2;}
JSFX.Layer.prototype.resizeTo = function(w,h)
{ this.style.width =w + "px"; this.style.height =h + "px";}
if(ns4)
JSFX.Layer.prototype.resizeTo = function(w,h)
{ this.style.clip.width =w; this.style.clip.height =h;}
JSFX.Layer.prototype.getX = function() { return parseInt(this.style.left);}
JSFX.Layer.prototype.getY = function() { return parseInt(this.style.top);}
if(ns4)
{ JSFX.Layer.prototype.getX = function() { return this.style.left;}
JSFX.Layer.prototype.getY = function() { return this.style.top;}
}
JSFX.Layer.prototype.getWidth = function() { return this.elem.offsetWidth;}
JSFX.Layer.prototype.getHeight = function() { return this.elem.offsetHeight;}
if(!document.getElementById)
JSFX.Layer.prototype.getWidth = function()
{ return this.elem.scrollWidth;}
if(ns4)
{ JSFX.Layer.prototype.getWidth = function() { return this.style.clip.right;}
JSFX.Layer.prototype.getHeight = function() { return this.style.clip.bottom;}
}
if(ns4)
{ JSFX.Layer.prototype.setOpacity = function(pc) {return 0;}
}
else if(document.all)
{ JSFX.Layer.prototype.setOpacity = function(pc)
{ if(this.style.filter=="")
this.style.filter="alpha(opacity=100);"; this.elem.filters.alpha.opacity=pc;}
}
else
{ JSFX.Layer.prototype.setOpacity = function(pc){ this.style.MozOpacity=pc+'%' }
}
if(ns4)
{ JSFX.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
}; JSFX.Layer.prototype.addEventHandler = function(eventname, handler)
{ this.elem.captureEvents(JSFX.eventmasks[eventname]); var xl = this; this.elem[eventname] = function(event) { event.clientX = event.pageX; event.clientY = event.pageY; event.button = event.which; event.keyCode = event.which; event.altKey =((event.modifiers & Event.ALT_MASK) != 0); event.ctrlKey =((event.modifiers & Event.CONTROL_MASK) != 0); event.shiftKey =((event.modifiers & Event.SHIFT_MASK) != 0); return handler(xl, event);}
}
JSFX.Layer.prototype.removeEventHandler = function(eventName)
{ this.elem.releaseEvents(JSFX.eventmasks[eventName]); delete this.elem[eventName];}
}
else
if(document.all)
{ JSFX.Layer.prototype.addEventHandler = function(eventName, handler)
{ var xl = this; this.elem[eventName] = function()
{ var e = window.event; e.cancelBubble = true; if(document.getElementById)
{ e.layerX = e.offsetX; e.layerY = e.offsetY;}
else
{ ev = new Object(); for(i in e)
ev[i] = e[i]; ev.layerX = e.offsetX; ev.layerY = e.offsetY; e = ev;}
return handler(xl, e);}
}
JSFX.Layer.prototype.removeEventHandler = function(eventName)
{ this.elem[eventName] = null;}
}
else
{ JSFX.Layer.prototype.addEventHandler = function(eventName, handler)
{ var xl = this; this.elem[eventName] = function(e)
{ e.cancelBubble = true; return handler(xl, e);}
}
JSFX.Layer.prototype.removeEventHandler = function(eventName)
{ this.elem[eventName] = null;}
}
JSFX.Layer.prototype.setTimeout = function(f, t)
{ setTimeout("window."+this.elem.id+"."+f, t);}
if(!window.JSFX)
JSFX=new Object(); if(!JSFX.Browser)
JSFX.Browser = new Object(); if(navigator.appName.indexOf("Netscape") != -1)
{ JSFX.Browser.getCanvasWidth = function() {return innerWidth;}
JSFX.Browser.getCanvasHeight = function() {return innerHeight;}
JSFX.Browser.getWindowWidth = function() {return outerWidth;}
JSFX.Browser.getWindowHeight = function() {return outerHeight;}
JSFX.Browser.getScreenWidth = function() {return screen.width;}
JSFX.Browser.getScreenHeight = function() {return screen.height;}
JSFX.Browser.getMinX = function() {return(pageXOffset);}
JSFX.Browser.getMinY = function() {return(pageYOffset);}
JSFX.Browser.getMaxX = function() {return(pageXOffset+innerWidth);}
JSFX.Browser.getMaxY = function() {return(pageYOffset+innerHeight);}
}
else if(document.all) { JSFX.Browser.getCanvasWidth = function() {return document.body.clientWidth;}
JSFX.Browser.getCanvasHeight = function() {return document.body.clientHeight;}
JSFX.Browser.getWindowWidth = function() {return document.body.clientWidth;}
JSFX.Browser.getWindowHeight = function() {return document.body.clientHeight;}
JSFX.Browser.getScreenWidth = function() {return screen.width;}
JSFX.Browser.getScreenHeight = function() {return screen.height;}
JSFX.Browser.getMinX = function() {return(document.body.scrollLeft);}
JSFX.Browser.getMinY = function() {return(document.body.scrollTop);}
JSFX.Browser.getMaxX = function() { return(document.body.scrollLeft +document.body.clientWidth);}
JSFX.Browser.getMaxY = function() { return(document.body.scrollTop +document.body.clientHeight);}
}
JSFX.FallingSprite = function(theHtml)
{ this.superC = JSFX.Layer; this.superC(theHtml); this.x = Math.random() * (JSFX.Browser.getMaxX()-40); this.y = -40; this.dx = Math.random() * 4 - 2; this.dy = Math.random() * 6 + 2; this.ang = 0; this.angStep = .2; this.amp = 10; this.state = "FALL"; this.moveTo(this.x,this.y); this.show();}
JSFX.FallingSprite.prototype = new JSFX.Layer; JSFX.FallingSprite.prototype.animate = function()
{ if(this.state == "OFF")
return; this.x += this.dx; this.y += this.dy; this.ang += this.angStep; this.moveTo(this.x + this.amp*Math.sin(this.ang), this.y); if( (this.x > JSFX.Browser.getMaxX()-20) || (this.x < JSFX.Browser.getMinX()-0) || (this.y > JSFX.Browser.getMaxY()-40) )
{ if(this.state == "STOPPING")
{ this.moveTo(-100,-100); this.hide(); this.state = "OFF";}
else
{ this.x = Math.random() * (JSFX.Browser.getMaxX()-40); this.y = JSFX.Browser.getMinY()-40; this.dx = Math.random() * 4 - 2; this.dy = Math.random() * 6 + 2; this.ang = 0;}
}
}
JSFX.FallingObj = function(numSprites, theImage, stopTime)
{ this.id = "JSFX_FallingObj_"+JSFX.FallingObj.count++; this.sprites = new Array(); for(i=0 ; i<numSprites; i++)
{ this.sprites[i]=new JSFX.FallingSprite(theImage);}
window[this.id]=this; this.animate(); if(stopTime)
setTimeout("window."+this.id+".stop()", stopTime*1000);}
JSFX.FallingObj.count = 0; JSFX.FallingObj.prototype.stop = function()
{ for(i=0 ; i<this.sprites.length ; i++)
this.sprites[i].state = "STOPPING";}
JSFX.FallingObj.prototype.animate = function()
{ setTimeout("window."+this.id+".animate()", 40); for(i=0 ; i<this.sprites.length ; i++)
this.sprites[i].animate();}
Falling = function(n, theImage, stopTime)
{ myFalling = new JSFX.FallingObj(n, theImage, stopTime); return myFalling;}
