// ====================================================
//   __|     _ |     |           |
//  (_ |  -_)  |  _` |  _ \  _ \  _|
// \___|\___| _|\__,_|\___/\___/\__|
// ---------------------------------------------------
//               === IMGBOX ===
// script: Gerard Ferrandez - Ge-1-doot - August 2oo3
// http://www.dhteumeuleu.com
// DOM version : Mars 2005
// ====================================================

document.onselectstart = function () { return false; }

////////////////////////////
var NX     = 3;
var NY     = 3;
var SP     = 20;
var DELAY  = 96;
////////////////////////////

var object = new Array();
var nI     = 0;
var run    = false;
var xrun   = 0;
var dR     = 1;
var iW     = 0;
var iH     = 0;
var oH     = 0;
var oW     = 0;

function CObj(N,y,x)
{
	this.obj = document.createElement("div");
	//this.obj.onclick = new Function("object[" + N + "].GE1()");
	this.obj.onmousedown = new Function("return false;");
	this.img = document.createElement("img");
	this.img.src   = IMGSRC[N % nI].src;
	this.img.alt   = IMGSRC[N % nI].alt;
	this.img.title = IMGSRC[N % nI].title;
	this.obj.appendChild(this.img);
	IMGBOX.appendChild(this.obj);
	this.object = new Array();
	this.x      = x;
	this.y      = y;
	this.N      = N;
	this.W      = 0;
	this.H      = 0;
	this.L      = 0;
	this.T      = 0;

	function CImg(Parent,y,x)
	{
		this.Parent = Parent;
		this.obj = document.createElement("div");
		this.obj.style.overflow="hidden";
		this.img = document.createElement("img");
		this.img.src   = IMGSRC[N%nI].src;
		this.img.alt   = IMGSRC[N%nI].alt;
		this.img.title = IMGSRC[N%nI].title;
		this.obj.appendChild(this.img);
		this.Parent.obj.appendChild(this.obj);
		this.N   = Parent.N;
		this.x   = x;
		this.y   = y;
		this.W   = 0;
		this.H   = 0;
		this.L   = 0;
		this.T   = 0;
		this.dx  = 0;
		this.dy  = 0;
		this.px  = 0;
		this.py  = 0;
		this.dw  = 0;
		this.dh  = 0;
		this.pw  = 0;
		this.ph  = 0;
		this.ipx = 0;
		this.ipy = 0;
		this.idx = 0;
		this.idy = 0;

		this.GE2 = function ()
		{
			with(this)
			{
				px -= dx * dR;
				py -= dy * dR;
				pw += dw * dR;
				ph += dh * dR;
				ipx -= idx * dR;
				ipy -= idy * dR;

				with(obj.style)
				{
					left   = Math.round(px)+'px';
					top    = Math.round(py)+'px';
					width  = Math.round(pw+1)+'px';
					height = Math.round(ph+1)+'px';
					if(dR==-1)if(pw<=W+1)obj.style.visibility="hidden";
				}

				with(img.style)
				{
					left   = Math.round(ipx-oW)+'px';
					top    = Math.round(ipy-oH)+'px';
				}

				if (++xrun >= NX * NY * SP)
				{
					xrun = 0;
					run = false;
					if (dR == -1)
						Parent.obj.style.zIndex = 0;
					dR = -dR;
				}
			}
		}

		this.GE1 = function (N1,N2)
		{
			with(this)
			{
				if(dR==1)
				{
					px  = L;
					py  = T;
					dx  = ((Parent.L + L) - (x * Parent.W)) / SP;
					dy  = ((Parent.T + T) - (y * Parent.H)) / SP;
					pw  = W;
					ph  = H;
					dw  = (Parent.W - W) / SP;
					dh  = (Parent.H - H) / SP;
					ipx = -L;
					ipy = -T;
					idx = ((x * Parent.W) - L) / SP;
					idy = ((y * Parent.H) - T) / SP;
				}
				obj.style.visibility="visible";
				if (img.height > document.body.offsetHeight)
					oH = (img.height - document.body.offsetHeight) / 2;
				else
					oH = 0;
				if (img.width > document.body.offsetWidth / 2)
					oW = (img.width - (document.body.offsetWidth / 2)) / 2;
				else
					oW = 0;
				for (i = 0; i < SP; i++)
					setTimeout("object[" + N1 + "].object[" + N2 + "].GE2()", 16 * i);
			}
		}
		
		this.DOOT = function ()
		{
			with(this)
			{
				W =  Parent.W  / NX;
				H =  Parent.H / NY;
				L =  x * W;
				T =  y * H;
			}
		}
	}

	this.GE1  = function (){
		with(this){
			if(!run){
				TXTBOX.innerHTML = "<div style='margin:2%'>"+TXTSRC[N%nI].innerHTML+"</"+"div>";
				run = true;
				obj.style.zIndex = 1;
				for(var i=0;i<NX*NY;i++) setTimeout("object["+N+"].object["+i+"].GE1("+N+","+i+")",i*DELAY);
			}
		}
	}

	var  k = 0;

	for (var i = 0; i < NY; i++)
		for (var j = 0; j < NX; j++)
			this.object[k++] = new CImg(this, i, j);

	this.DOOT = function ()
	{
		with(this)
		{
			if(img.width < iW)
				iW = img.width;
			if(img.height < iH)
				iH = img.height;
			W = iW  / NX;
			H = iH / NY;
			L = x * W;
			T = y * H;
			with(obj.style)
			{
				width  = Math.round(W)+'px';
				height = Math.round(H)+'px';
				left   = Math.round(L)+'px';
				top    = Math.round(T)+'px';
			}
			with(img.style)
			{
				width  = Math.round(W) - 5 +'px';
				height = Math.round(H) - 5 +'px';
			}
	//		for(var i in object) object[i].DOOT();
		}
	}
}

function launchRandom(){
	var rand = Math.floor(Math.random()*9);
	object[rand].GE1();
	//object[rand].GE2();
	setTimeout("object[" + rand + "].GE1()", 5000);
}

onload = function()
{
	setInterval("launchRandom()", 10000);

	IMGSRC = document.getElementById("imgsrc").getElementsByTagName("img");
	TXTSRC = document.getElementById("txtsrc").getElementsByTagName("div");
	IMGBOX = document.getElementById("imgbox");
	TXTBOX = document.getElementById("txtbox");
//	CENTER = document.getElementById("center");
	iH = document.body.offsetHeight;
	iW = document.body.offsetWidth/2;
	nI = IMGSRC.length;
	var k = 0;

	for (var i = 0; i < NY; i++)
	{
		for (var j = 0; j < NX; j++)
		{
			object[k] = new CObj(k,i,j);
			object[k++].DOOT();
		}
	}

	IMGBOX.style.width  = Math.round(iW)+'px';
	IMGBOX.style.height = Math.round(iH)+'px';
	TXTBOX.style.width  = Math.round(iW)+'px';
	TXTBOX.style.height = Math.round(iH)+'px';
	TXTBOX.style.left   = Math.round(iW)+'px';
	TXTBOX.style.visibility="visible";
//	CENTER.style.left   = Math.round(-iW)+'px';
//	CENTER.style.top    = Math.round(-iH/2)+'px';
}
