addLoadEvent(globalInit);

function globalInit()
{
	document.body.oncontextmenu=function() {
		return false;
	}
}

var eDefn=null; // current popup defn
var fader = new Object(); // fader object for callback when done blending
document.onmousemove = updateDefn; // needed for netscape/firefox

function updateDefn(e) {
	x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
	y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
	if (eDefn != null) {
		x -= 150;
		if (x<0) {
			x=0;
		}
		eDefn.style.left = x + "px";
		eDefn.style.top  = (y + 20) + "px";
	}
}

function showDefn(id)
{
	if (document.getElementById) {
		eDefn = document.getElementById(id);
		if (eDefn) {
			updateDefn(eDefn);
			eDefn.style.display = "block"
		}
	}
}

function hideDefn()
{
	if (eDefn) {
		eDefn.style.display = "none";
	}
}

function transInit(id)
{
	if (document.getElementById) {
		var e = document.getElementById(id);
		if (e) {
			e.onclick=function() {
				setMyCookie('home',1);
				setMyCookie('dig',1);
				setMyCookie('dream',1);
				setMyCookie('col',1);
				setMyCookie('last',1);
				setMyCookie('spin',1);
				return true;
			}
		}
	}
}

var wiper;
function transCurtain(id, time, iter)
{
	if (document.getElementById) {
		var e = document.getElementById(id);
		if (e) {
			e.style.visibility='visible';
			wiper = { i:0, id:id, timer:time/iter, h:e.offsetHeight, w:e.offsetWidth, iter:iter };
			wiper.h = e.offsetHeight;
			wiper.w = e.offsetWidth;
			wiper.elt = document.getElementById(id);
			doCurtain();
		}
	}
}

function clipIt(e,t,r,b,l)
{
	e.style.clip="rect(" + t + "px " + r + "px " + b + "px " + l + "px)";
}

function doCurtain()
{
	i = wiper.i;
	if (i<=wiper.iter) {
		i++;
		w = wiper.w;
		l = w/2 - i*w/100;
		r = w/2 + i*w/100;
		clipIt(wiper.elt,0,r,wiper.h,l);
		setTimeout("doCurtain()", wiper.timer);
	} else {
		i=0;
	}
	wiper.i=i;
}

function setOpacity(id, op)
{
	if (document.getElementById) {
		var e = document.getElementById(id);
		if (e) {
			e.style.filter = 'Alpha(Opacity=' + op + ');';
			e.style.MozOpacity = op/100;
		}
	}
}

function fade(id, op, step, delay)
{
	fader.blending=true;
	if (fader.stop) {
		fader.stop=false;
		op=100;
	}
	if (op>0) {
		if (op>100)
			op=100;
		setOpacity(id, op);
	}
	if (!fader.pause)
		op += step;
	if (op<100) {
		setTimeout("fade('" + id + "'," + op + "," + step +"," + delay + ")", delay);
		if (fader.OnProgress)
			fader.OnProgress(op);
		fader.stop=false;

	} else if (fader.OnDone) {
		fader.blending=false;
		fader.OnDone();
	}
}

function slideRight(id)
{
	if (document.getElementById) {
		var e = document.getElementById(id);
		if (e) {
			var r = parseInt(e.style.right);
			if (r>0) {
				r -= 30;
				if (r<0) r=0;
				e.style.right = r;
				setTimeout("slideRight('" + id + "')", 5);
			}
		}
	}
}

function doTrans(id)
{
	return getCookie(id)==1;
}

function setMyCookie(which,val)
{
	if (val) {
		setCookie(which,val);
	} else {
		deleteCookie(which);
	}
}

function moveElement(id,fx,fy,interval,portion)
{
	if (!document.getElementById) return false;
	var e = document.getElementById(id);
	if (!e) return false;
	if (e.movement) {
		clearTimeout(e.movement);
	}
	var x=parseInt(e.style.left);
	if (!x) x=0;
	var y=parseInt(e.style.top);
	if (!y) y=0;
	var delta=0;
	if (x!=fx) {
		delta=Math.ceil((fx-x)/portion);
		if (delta==0)
			delta=fx>x ? 1 : -1;
		x+=delta;
	}
	if (y!=fy) {
		delta = Math.ceil((fy-y)/portion);
		if (delta==0)
			delta=fy>y ? 1 : -1;
		y+=delta;
	}
	e.style.left=x+"px";
	e.style.top=y+"px";
	if (x!=fx||y!=fy) {
		e.movement = setTimeout("moveElement('"+id+"',"+fx+","+fy+","+interval+","+portion+")",interval);
	}
}

var spin = new Object();

function spinTrans(id,n,iter)
{
	var elts=new Array(n);
	var pts=new Array(n);
	for (var i=0; i<n; i++) {
		var elt = document.getElementById(id+(i+1));
		elts[i]=elt;
		pts[i]=new point(elt.style.left,elt.style.top);
	}
	spin.elts=elts;
	spin.pts=pts;
	spin.iter=iter;
	spin.offset=0;
	setTimeout("spinElt()",50);
}

function spinElt()
{
	if (spin.iter<=0)
		return;
	spin.iter--;
	spin.offset++;
	var elts=spin.elts;
	var n=elts.length;
	var j=spin.offset % n;
	for (var i=0;i<n; i++) {
		elts[i].style.left=spin.pts[j].x;
		elts[i].style.top =spin.pts[j].y;
		j++;
		if (j>=n)
			j=0;
	}
	setTimeout("spinElt()",50);
}
