var word = new Array()

word[0] = "  ÜÜÜ  Ü   Ü   ÜÜÜ  Ü    Ü  ÜÜÜÜÜ   ÜÜÜ    ÜÜÜÜ   ÜÜÜ  ÜÜÜÜÜ  Ü   Ü   ÜÜÜ  ÜÜÜÜ   "
word[1] = " Ü     Ü   Ü  Ü     ÜÜ  ÜÜ    Ü    Ü   Ü  Ü      Ü       Ü    Ü   Ü  Ü     Ü   Ü  "
word[2] = " Ü     ÜÜÜÜÜ   ÜÜÜ  Ü ÜÜ Ü    Ü    Ü   Ü  Ü  ÜÜ   ÜÜÜ    Ü    ÜÜÜÜÜ   ÜÜÜ  ÜÜÜÜÜ  "
word[3] = " Ü     Ü   Ü  Ü     Ü    Ü    Ü    Ü   Ü  Ü   Ü  Ü       Ü    Ü   Ü  Ü     Ü  Ü   "
word[4] = "  ÜÜÜ  Ü   Ü   ÜÜÜ  Ü    Ü    Ü     ÜÜÜ    ÜÜÜÜ   ÜÜÜ    Ü    Ü   Ü   ÜÜÜ  Ü   Ü  "

var sentence = "";
for(var q=0; q<word.length; q++) {
	sentence += word[q];
}

var cCols = word[0].length;
var cRows = word.length;
var blockOffset = 6;
var maxDist = 40;
var sens    = 50;
var tWidth  = cCols * blockOffset;
var tHeight = cRows * blockOffset;

var step = 0.3;
var sPos = 0;
var sDis = 0;
var lsr = 0;

var nrCubes = cCols * cRows;

var startX, startY;
document.attachEvent("onresize", "init()");

// initialise
var cubes = new Array();
var cnt=0;
var csize=(is.IE)? 5 : 3

function init() {
	X=true; 
	if(cnt > 0){X=false;cnt=0}
	var W = (is.IE)? document.body.clientWidth:window.innerWidth;
	var H = (is.IE)? document.body.clientHeight:window.innerHeight;
	var xPos = (W-tWidth)/2; startX = xPos;
	
	var fd= ( typeof FRACTION_DOWN == 'undefined' ) ? .5 : FRACTION_DOWN;
	var yPos = (H-tHeight) * fd ; 
	
	if ( typeof BEE_POS != 'undefined' ){
		yPos=getElementPosition ('BEE_POS_EL'); yPos=yPos.y + BEE_POS }
	
	startY = yPos;
	
	for(var i=0; i<= nrCubes; i++) {
		if(i != 0) {
			xPos += blockOffset;
			if(i%cCols == 0) {
				xPos = startX;
				yPos += blockOffset;
			}
		}

		if(sentence.charAt(i) == "Ü") {
			if (X) {
			cubes[cnt] = new dynObject('cube'+cnt)
			cubes[cnt].setProperties(xPos, yPos, csize, csize, "visible");
			cubes[cnt].clipTo(0,csize,csize,0);
			cubes[cnt].css.border = '1 solid black'
			}
			
			cubes[cnt].xp = xPos;
			cubes[cnt].yp = yPos;

			cnt++
		}
	}

	document.attachEvent("onmousemove", "lessen()");
	setInterval("checkBlocks()", 25);
}

// main function, creates the effect
var d=0, nd, nx, ny;
function checkBlocks() {
	sPos += step;
	sDis = (maxDist-lsr) * sin(sPos);

	x = mouseX;
	y = mouseY;

	for(var i=0; i<cnt; i++) {
		d = distance(x,y,cubes[i].xp,cubes[i].yp); if(d<1) d=1;
		nd = 0 - sDis*(atan(d/sens) - Math.PI/2);
		nx = nd/d * (x - cubes[i].xp);
		ny = nd/d * (y - cubes[i].yp);

		//cubes[i].setBackground('rgb('+floor(d/10)+','+floor(d/3)+',255)') //255 is blue
		cubes[i].setBackground('rgb('+floor(d/10)+','+floor(d/3)+',200)') //255 is blue
		cubes[i].moveTo(cubes[i].xp - nx, cubes[i].yp - ny);
	}

	lsr += .7;
	if(lsr >= maxDist) lsr = maxDist
}

// if mouse doesn't move, wave dies down
function lessen() {
	if(lsr > 1)lsr --;
}

// math
function power(nr, how) {
	var pTo = how || 2;
	return Math.pow(nr, pTo);
}

function distance(x1, y1, x2, y2) {
	var hor = x2 - x1; var ver = y2 - y1;
	return(root(power(hor) + power(ver)));
}

function root(nr) { return Math.sqrt(nr); }
function sin(nr) { return Math.sin(nr); }
function atan(nr) { return Math.atan(nr); }
function floor(nr) { return Math.floor(nr); }

function getElementPosition (elid) {
  if (document.layers)
    return { x: document.layers[elid].pageX,
y: document.layers[elid].pageY };
  else if (document.all || document.getElementById) {
    var el = document.all ? document.all[elid] : document.getElementById(elid);
    var coords = {x: 0, y: 0 };
    while (el) {
      coords.x += el.offsetLeft;
      coords.y += el.offsetTop;
      el = el.offsetParent;
    }
    return coords;
  }
}
