// jFall2 Widget by Javier Peletier Ribera <jm@peletier.com>
// Copyright 2001 peletier.com. All Rights Reserved
//
// 
//
//This library requires:
//<dynlayer.js>

var	WHscrollWidth
var	WHscrollHeight


function jFall(image,width,height,speed,num,stepX,stepY,amplitude,frequency) {
	this.name = "jFall"+(jFall.count++)
	this.w = width
	this.h = height
	this.speed=speed
	this.image=image
	this.num=num
	this.frequency=(frequency==null) ?  0 : frequency;
	this.amplitude=(amplitude==null) ?  0 : amplitude;
	this.phase=Math.random()*2*3.141529;

	this.stepX=(stepX==null) ?  0 : stepX;
	this.stepY=(stepY==null) ?  1 : stepY;

	this.obj = this.name+"Object"
	eval(this.obj+"=this")
	
		
}


jFall.prototype.css = jFallCSS
jFall.prototype.div = jFallDIV
jFall.prototype.start=jFallStart
jFall.prototype.onmousemove=new Function()
jFall.prototype.items= new Array();
jFall.prototype.initEvents=jFallInitEvents


var jFallOnMouseMove=new Function()


var jfCursorX;
var jfCursorY;
var jfwinW;
var jfwinH;


function findWH() 
{
	jfwinW = (is.ns)? document.width : WHscrollWidth-20 //document.body.offsetWidth-20
	jfwinH = (is.ns)? document.height : WHscrollHeight-4 //document.body.offsetHeight-4
}

function jFallmmove(e)
{
        jfCursorX = (is.ns) ? e.pageX : event.x+document.body.scrollLeft;
        jfCursorY = (is.ns) ? e.pageY : event.y+document.body.scrollTop;

	jFallOnMouseMove(e)

}



function jFallCSS()
{
	findWH();
	var st="";
	var n;
	var z;
	for (n=0;n<this.num;n++)
	{
		z=Math.random()>0.5 ? -1: 1 ;
		
		st=st + css(this.name + 'N' + n,Math.random()*jfwinW,Math.random()*jfwinH,this.width,this.height,null,null,z,null,false);
	}
	
	return st;	
}

function jFallDIV()
{
	var st="";
	var n;
	for (n=0;n<this.num;n++)
	{
		st=st + '<DIV ID="'+this.name + 'N' + n+'"><IMG SRC="'+this.image+'"></DIV>';
	}
	
	return st;	
}




function jFallInitEvents()

{
	if (is.ns)
	{
		document.captureEvents(Event.MOUSEMOVE);
	}
	document.onmousemove = jFallmmove;




}

function jFallChangePos(fObject)
{
	findWH();
	
	var n;
	var c;

	for (n in fObject.items)
	{
		c=fObject.items[n];
		if ((c.x > jfwinW) && (fObject.stepX>0))
			c.moveTo(-fObject.w-1,c.y);
		else
			if((c.x < 0) && (fObject.stepX<0))
				c.moveTo(jfwinW+fObject.w+1,c.y);

				

		if (c.y > jfwinH)
		{
			c.moveTo(jfwinW*Math.random(),-50);
		}
		else
			{
				var dx;
				var dy;
				dx=fObject.stepX;
				dy=fObject.stepY;
				
				if (fObject.amplitude != 0)
					{
						dx=dx+fObject.amplitude*fObject.frequency*Math.sin(fObject.frequency*c.y+fObject.phase);
					}
					
			c.moveBy(dx,dy);
			
			}
	
		if (Math.abs(jfCursorX-(c.x+17))<30 && Math.abs(jfCursorY-(c.y+20))<30)
		{
			if (jfCursorX>c.x)
				c.moveBy(-20,0);
			else
				c.moveBy(20,0);
		}
	}

	
	setTimeout('jFallChangePos('+fObject.obj+')',fObject.speed);

}

function jFallStart()
{
	var c
	var n

	if(!is.ns)
	{
		WHscrollWidth=document.body.scrollWidth-20
		WHscrollHeight=document.body.scrollHeight-4
	}

	findWH();
	
	for(n=0;n<this.num;n++)
	{
		c= new DynLayer(this.name + 'N' + n);
		this.items[this.items.length]=c;
		c.moveTo(Math.random()*jfwinW,Math.random()*jfwinH)
		
	}

	setTimeout('jFallChangePos('+this.obj+')',this.speed);
	

	
	
	
}




jFall.count = 0

