//
//	kp_scripts.js
//	2005.07.28
//	Y.Yoshizawa (yszw@pop12.odn.ne.jp
//

	var	image_direct_x;
	var	image_direct_y;
	var	dx, xp, yp;
	var	am, stx, sty;
	var	img_cell;		// image data array.
	var	img_cell_nm;		// image cell number data array.


	//
	//	pi_interval ....... move timer interval.
	//	pi_itm_no ......... number of itm.
	//	pi_img_url ........ image data url. (oxox_ => oxox_1.gif ... oxox_n.gif)
	//	pi_img_cell_no .... number of image data. (for picture cell)
	//	pi_img_x_size ..... image width.
	//	pi_img_y_size ..... image height.
	//	pi_itm_href ....... item's href url.
	//
	function kp_star (pi_interval, pi_itm_no, pi_img_url, pi_img_cell_no, pi_img_x_size, pi_img_y_size, pi_itm_href)	{
		var	itm_no		= 30;	// max itm number.
		var	temp;
		var	disp_x_size;
		var	disp_y_size;


		//
		//	set display size.
		//
		disp_x_size	= document.body.clientWidth;
		disp_y_size	= document.body.clientHeight;

		//
		//	decide of number of items.
		//	pi_itm_no = 0 mean auto calcurate from display size.
		//
		temp = parseInt (pi_itm_no);
		if (temp == 0)	{
			temp = parseInt((disp_x_size / pi_img_x_size) * (disp_y_size / pi_img_y_size) / 10);
//			document.write(temp + "<br>");
		}

		if ((temp >= 1) 
		&&  (temp < itm_no))	{
			itm_no = temp;
		}

		kp_img_cell_load (pi_img_cell_no, pi_img_url);
		kp_img_cell_nm_decide (pi_img_cell_no, itm_no, 0);
		kp_itm_setup (itm_no, pi_img_x_size, pi_img_y_size, pi_itm_href);
		kp_itm_init_direct (itm_no);
		kp_itm_move (pi_interval, pi_img_cell_no, itm_no, pi_img_x_size, pi_img_y_size);
	}


	function kp_img_cell_load (pi_img_cell_no,  pi_img_url)	{
		var	i;


		img_cell = new Array();
		for (i = 1 ; i <= pi_img_cell_no; ++i) {
			img_cell[i] = new Image ();
			img_cell[i].src = pi_img_url + i + ".gif";
		}
	}


	function kp_img_cell_nm_decide (pi_img_cell_no, pi_itm_no, pi_index)	{
		var	i;
		var	temp;


		if (pi_index == 0)	{
			img_cell_nm = new Array();
			for (i = 1 ; i <= pi_itm_no; ++i) {
				img_cell_nm[i] = parseInt(Math.random() * pi_img_cell_no) + 1;
//				document.write(img_cell_nm[i] + "<br>");
			}
		}
		else	{
			temp = parseInt(Math.random() * 10);
			if (temp == 2)	{
				img_cell_nm[ pi_index ]++;
				if (img_cell_nm[ pi_index ] > pi_img_cell_no)	{
					img_cell_nm[ pi_index ] = 1;
				}
			}
			if (temp == 7)	{
				img_cell_nm[ pi_index ]--;
				if (img_cell_nm[ pi_index ] < 1)	{
					img_cell_nm[ pi_index ] = pi_img_cell_no;
				}
			}
		}
	}


	function kp_itm_setup (pi_itm_no, pi_img_x_size, pi_img_y_size, pi_itm_href)	{
		var	i;
		var	disp_x_size;
		var	disp_y_size;


		//
		//	set display size.
		//
		disp_x_size	= document.body.clientWidth;
		disp_y_size	= document.body.clientHeight;

		dy	= new Array ();
		xp	= new Array ();
		yp	= new Array ();
		am	= new Array ();
		stx	= new Array ();
		sty	= new Array ();
		sayu	= new Array ();

		for (i = 1 ; i <= pi_itm_no ; ++i) {
			dy  [i] = 0;
			xp  [i] = Math.random() * (disp_x_size-pi_img_x_size);
			yp  [i] = Math.random() * (disp_y_size-pi_img_y_size);
			am  [i] = Math.random() * 20;			// set amplitude variables
			document.getElementById("itm_"+i).style.display="block";
			document.getElementById("lnk_"+i).href = pi_itm_href;
			kp_itm_reset_value (i);
		}
	}


	function kp_itm_init_direct (pi_itm_no)	{
		var	temp;


		image_direct_x	= new Array ();
		image_direct_y	= new Array ();

		for (i = 1; i <= pi_itm_no ; ++i)	{
			temp = parseInt (Math.random () * 2);
			if (temp == 1)	{
				image_direct_x[i] = 1;
			}
			else	{
				image_direct_x[i] = -1;
			}

			temp = parseInt (Math.random () * 2);
			if (temp == 1)	{
				image_direct_y[i] = 1;
			}
			else	{
				image_direct_y[i] = -1;
			}
		}
	}


	function kp_itm_reset_direct (pi_itm_no, pi_index)	{
		var	temp;


		temp = parseInt (Math.random () * 100);
		if (temp == 1)	{
			image_direct_x[pi_index] *= -1;
		}

		temp = parseInt (Math.random () * 100);
		if (temp == 1)	{
			image_direct_y[pi_index] *= -1;
		}
	}


	function kp_itm_reset_value (i)	{
		sty [i] = 0.02 + Math.random() / 10;
		stx [i] = 1.70 + Math.random();
		sayu[i] = 0.50 + Math.random();
	}


	function kp_itm_move (pi_interval, pi_img_cell_no, pi_itm_no, pi_img_x_size, pi_img_y_size) {
		var	i;
		var	disp_x_size;
		var	disp_y_size;


		//
		//	set display size.
		//
		disp_x_size	= document.body.clientWidth;
		disp_y_size	= document.body.clientHeight;

		for (i = 1 ; i <= pi_itm_no ; ++i) {
			kp_itm_reset_direct (pi_itm_no, i);

			xp[i] += (stx [i] * image_direct_x[i]);
			yp[i] += (sayu[i] * image_direct_y[i]);

			if (xp[i] < 0)	{
				xp[i] = 0;
				image_direct_x[i] *= -1;
				kp_itm_reset_value (i);
			}

			if (xp[i] > (disp_x_size-pi_img_x_size))	{
				xp[i] = (disp_x_size-pi_img_x_size);
				image_direct_x[i] *= -1;
				kp_itm_reset_value (i);
			}

			if (yp[i] < 0)	{
				yp[i] = 0;
				image_direct_y[i] *= -1;
				kp_itm_reset_value (i);
			}

			if (yp[i] > (disp_y_size-pi_img_y_size))	{
				yp[i] = (disp_y_size-pi_img_y_size);
				image_direct_y[i] *= -1;
				kp_itm_reset_value (i);
			}

			dy[i] += sty[i];
//			document.all["img_"+i].src = img_cell[ parseInt(img_cell_nm[i]) ].src;
//			document.all["itm_"+i].style.pixelTop  = document.body.scrollTop+ yp[i] + am[i] * Math.sin (dy[i]);
//			document.all["itm_"+i].style.pixelLeft = document.body.scrollLeft+xp[i];

			document.getElementById("img_"+i).src = img_cell[ parseInt(img_cell_nm[i]) ].src;
			document.getElementById("itm_"+i).style.pixelTop  = document.body.scrollTop+ yp[i] + am[i] * Math.sin (dy[i]);
			document.getElementById("itm_"+i).style.pixelLeft = document.body.scrollLeft+xp[i];

			kp_img_cell_nm_decide (pi_img_cell_no, pi_itm_no, i);
		}

		setTimeout (
			"kp_itm_move("
		+	pi_interval	+ ","
		+	pi_img_cell_no	+ ","
		+	pi_itm_no	+ ","
		+	pi_img_x_size	+ ","
		+	pi_img_y_size	+ ")", 
			pi_interval
		);
	}

	function kp_mouse (pi_index, pi_onoff)	{
		var	x_size;
		var	y_size;


//		if (pi_onoff == 1)	{
			x_size	= parseInt (document.body.clientWidth	/ 2);
			y_size	= parseInt (document.body.clientHeight	/ 2);

			if (xp[pi_index] < x_size)	{
				xp[pi_index] += parseInt (x_size /10);
			}
			else if (xp[pi_index] >= x_size)	{
				xp[pi_index] -= parseInt (x_size / 10);
			}

			if (yp[pi_index] < y_size)	{
				yp[pi_index] += parseInt (y_size / 10);
			}
			else if (yp[pi_index] >= y_size)	{
				yp[pi_index] -= parseInt (y_size / 10);
			}
//		}
	}
