<SCRIPT TYPE="text/javascript">

<!-- July 4th Fireworks Display
<!-- This script and many more from -->
<!-- http://nriinternet.com -->

if(!window.July) July=new Object();

if(!July.createLayer)
{
var ns4 = document.layers;
var ie4 = document.all;
July.objNo=0;
July.getObjId = function(){return "July_obj" + July.objNo++;};
July.createLayer = function(theHtml)
{
var layerId = July.getObjId();
document.write(ns4 ? "<LAYER NAME='"+layerId+"'>"+theHtml+"</LAYER>" :
"<DIV id='"+layerId+"' style='position:absolute'>"+theHtml+"</DIV>" );
var el = document.getElementById ? document.getElementById(layerId) :
document.all ? document.all[layerId] :
document.layers[layerId];
if(ns4)
el.style=el;
return el;
}
July.fxLayer = function(theHtml)
{
if(theHtml == null) return;
this.el = July.createLayer(theHtml);
}
var proto = July.fxLayer.prototype
proto.moveTo = function(x,y){this.el.style.left = x;this.el.style.top=y;}
proto.setBgColor = function(color) { this.el.style.backgroundColor = color; }
proto.clip = function(x1,y1, x2,y2){ this.el.style.clip="rect("+y1+" "+x2+" "+y2+" "+x1+")"; }
if(ns4){
proto.clip = function(x1,y1, x2,y2){
this.el.style.clip.top =y1;this.el.style.clip.left =x1;
this.el.style.clip.bottom=y2;this.el.style.clip.right =x2;
}
proto.setBgColor=function(color) { this.el.bgColor = color; }
}
if(window.opera)
proto.setBgColor = function(color) { this.el.style.color = color==null?'transparent':color; }

if(window.innerWidth)
{
gX=function(){return innerWidth;};
gY=function(){return innerHeight;};
}
else
{
gX=function(){return document.body.clientWidth;};
gY=function(){return document.body.clientHeight;};
}

July.fxLayer2 = function(theHtml)
{
this.superC = July.fxLayer;
this.superC(theHtml + "C");
}
July.fxLayer2.prototype = new July.fxLayer;
}
July.Firework = function(fwImages)
{
window[ this.id = July.getObjId() ] = this;
this.imgId = "i" + this.id;
this.fwImages = fwImages;
this.numImages = fwImages.length;
this.superC = July.fxLayer;
this.superC("<img src='"+fwImages[0].src+"' name='"+this.imgId+"'>");

this.img = document.layers ? this.el.document.images[0] : document.images[this.imgId];
this.step = 0;
this.timerId = -1;
this.x = 0;
this.y = 0;
this.dx = 0;
this.dy = 0;
this.ay = 0.2;
this.state = "OFF";
}
July.Firework.prototype = new July.fxLayer;
July.Firework.prototype.getMaxDy = function()
{
var ydiff = gY() - 130;
var dy = 1;
var dist = 0;
var ay = this.ay;
while(dist<ydiff)
{
dist += dy;
dy+=ay;
}
return -dy;
}
July.Firework.prototype.setFrame = function()
{

this.img.src=this.fwImages[ this.step ].src;
}
July.Firework.prototype.animate = function()
{

if(this.state=="OFF")
{

this.step = 0;
this.x = gX()/2-20;
this.y = gY()-100;
this.moveTo(this.x, this.y);
this.setFrame();
if(Math.random() > .95)
{
this.dy = this.getMaxDy();
this.dx = Math.random()*-8 + 4;
this.dy += Math.random()*3;
this.state = "Shoot";
}
}
else if(this.state=="Shoot")
{
this.x += this.dx;
this.y += this.dy;
this.dy += this.ay;
this.moveTo(this.x,this.y);
if(this.dy > 1)
this.state="Bang"
}
else if(this.state == "Bang")
{
this.step++;
if(this.step < this.numImages)
this.setFrame();
else
this.state="OFF";
}
}

July.FireworkDisplay = function(n, fwImages, numImages)
{
window[ this.id = July.getObjId() ] = this;
this.timerId = -1;
this.fireworks = new Array();
this.imgArray = new Array();
this.loadCount=0;
this.loadImages(fwImages, numImages);

for(var i=0 ; i<n ; i++)
this.fireworks[this.fireworks.length] = new July.Firework(this.imgArray);
}
July.FireworkDisplay.prototype.loadImages = function(fwName, numImages)
{
for(var i=0 ; i<numImages ; i++)
{
this.imgArray[i] = new Image();
this.imgArray[i].obj = this;
this.imgArray[i].onload = window[this.id].imageLoaded;
this.imgArray[i].src = fwName+"/"+i+".gif";
}
}
July.FireworkDisplay.prototype.imageLoaded = function()
{
this.obj.loadCount++;
}

July.FireworkDisplay.prototype.animate = function()
{

if(this.loadCount < this.imgArray.length)
return;

for(var i=0 ; i<this.fireworks.length ; i++)
this.fireworks[i].animate();
}
July.FireworkDisplay.prototype.start = function()
{
if(this.timerId == -1)
{
this.state = "OFF";
this.timerId = setInterval("window."+this.id+".animate()", 40);
}

}
July.FireworkDisplay.prototype.stop = function()
{
if(this.timerId != -1)
{
clearInterval(this.timerId);
this.timerId = -1;
for(var i=0 ; i<this.fireworks.length ; i++)
{
this.fireworks[i].moveTo(-100, -100);
this.fireworks[i].step = 0;;
this.fireworks[i].state = "OFF";
}
}
}

July.SparkleStart = function()
{
if(July.SparkleLoad)July.SparkleLoad();
mySparkle.start();
}
mySparkle = new July.FireworkDisplay(num_fireworks=15, firework_images="fw", num_frames=21);
July.SparkleLoad=window.onload;
window.onload=July.SparkleStart;

</SCRIPT>