preloadImage('Images/jsEyesOpenMouth.gif', 150, 150);

var body = null;
var elJsDiv = null;
var elJsImage = null;
elJsEye1 = null;
elJsEye2 = null;
var winMiddle = 0;
var fadeOut = 100;
var restoreTimer = null;
var smileyPosArray = new Array();

function addListeners() {
	body = document.getElementsByTagName('body')[0];
	elJsDiv = getEl('js');
	elJsImage = getEl('jsEyesHead');
	elJsEye1 = getEl('jsEye1');
	elJsEye2 = getEl('jsEye2');
	winMiddle = parseInt(winWidth() / 2);
	dropSmileys();
	getSmileysPosition();
	elJsDiv.style.left = (winMiddle - 75) + 'px';
	elJsDiv.style.top = '240px';
	elJsImage.style.left = (winMiddle - 75) + 'px';
	elJsImage.style.top = '240px';
	dragObject.init();
	addEvent(document, 'mousemove', jsEyesMouseMove, false);
}

function jsEyesMouseMove(e) {
	x = (isIE) ? event.clientX + document.body.scrollLeft : e.clientX;
	y = (isIE) ? event.clientY + document.body.scrollTop : e.clientY;
	var ex, ey, dx, dy;
	if (elJsDiv && elJsEye1 && elJsEye2 && elJsDiv.style) {
		ex = findPosX(elJsDiv) + 46; // offsetLeft: The left position of the element relative to its offsetParent.
		ey = findPosY(elJsDiv) + 58; // offsetTop: The top position of the element relative to its offsetParent.
		dx = x - ex;
		dy = y - ey;
		r = (dx * dx / 49 + dy * dy / 289 < 1) ? 1 : Math.sqrt(49 * 289 / (dx * dx * 289 + dy * dy * 49));
		elJsEye1.style.left = (r * dx + 36.5) + 'px';
		elJsEye1.style.top = (r * dy + 44) + 'px';
		ex += 56;
		dx -= 56;
		r = (dx * dx / 49 + dy * dy / 289 < 1) ? 1 : Math.sqrt(49 * 289 / (dx * dx * 289 + dy * dy * 49));
		elJsEye2.style.left = (r * dx + 92.5) + 'px';
		elJsEye2.style.top = (r * dy + 44) + 'px';
	}
}

function dropSmileys() {
	var ctr = winMiddle - 20;
	var incLeft = 10;
	var incTop = 126;
	var incHappy = -40;
	var allImages = document.getElementsByTagName('img');
	for (var i = 0; i < allImages.length; i++) {
		var theImage = allImages[i];
		if (theImage.className.indexOf('draggable') != -1) {
			if (theImage.title == 'Happy') {
				theImage.style.left = (winMiddle + incHappy - 8) + 'px';
				incHappy += 40;
				theImage.style.top = '440px';
			} else if (theImage.title == 'Big Happy') {
				theImage.style.left = (winMiddle + 10) + 'px';
				theImage.style.top = '47px';
			} else {
				theImage.style.left = ((i % 2) == 0) ? (ctr - incLeft) + 'px' : (ctr + incLeft) + 'px';
				incLeft += 21;
				if ((i % 2) == 0)
					incTop += i*2;
				theImage.style.top = (incTop * 1.3) + 'px';
			}
		theImage.style.visibility = 'visible';
		}
	}
	elJsDiv.style.visibility = 'visible';
	elJsImage.style.visibility = 'visible';
}

function smileyDimension(idIn, xPosIn, yPosIn) {
	this.id = idIn;
	this.xPos = xPosIn;
	this.yPos = yPosIn;
}

function getSmileysPosition() {
	// Get the positions in source code order
	var allImages = document.getElementsByTagName('img');
	for (var i = 0; i < allImages.length; i++) {
		var theImage = allImages[i];
		if (theImage.className.indexOf('draggable')!= -1)
			smileyPosArray[smileyPosArray.length] = new smileyDimension(theImage.id, parseInt(theImage.style.left), parseInt(theImage.style.top));
	}
}

function checkSmileyDrop(obj, dropLeft, dropTop) {
	var theSmiley = obj.selectedObject;
	theSmileyLeft = parseInt(theSmiley.style.left);
	theSmileyTop = parseInt(theSmiley.style.top);
	var jsL = getElementLeft(elJsDiv) + 10;
	var jsT = getElementTop(elJsDiv) + 10;
	var jsR = jsL + getElementWidth(elJsDiv) - 10;
	var jsB = getElementTop(elJsDiv) + 150;
	var smileyImages = 0;
	var smileyImagesEaten = 0;

	if ((dropLeft >= jsL) && (dropLeft <= jsR) && (dropTop >= jsT) && (dropTop <= jsB)) {
		getEl('jsEyesHead').src = 'Images/jsEyesOpenMouth.gif';
		if (theSmiley.id != 'js') {
			theSmiley.style.visibility = 'hidden';
			var allImages = document.getElementsByTagName('img');
			for (var i = 0; i < allImages.length; i++) {
				var theImage = allImages[i];
				if (theImage.className.indexOf('draggable') != -1) {
					smileyImages++;
					if (theImage.style.visibility == 'hidden')
						smileyImagesEaten++;
				}
			}
			if (smileyImages == smileyImagesEaten) {
				elJsImage.src = 'Images/jsEyesOpenMouth.gif';
				restoreTimer = setTimeout("restoreHead()", 800);
				reviveSmileys();
			} else
				restoreTimer = setTimeout("restoreHead()", 220);
		}
	}
}

function restoreHead() {
	elJsImage.src = 'Images/jsEyes.gif';
}

function reviveSmileys() {
	var allImages = document.getElementsByTagName('img');
	for (var i = 0; i < allImages.length; i++) {
		var theImage = allImages[i];
		if ((theImage.className.indexOf('draggable') != -1) && (theImage.style.visibility = 'hidden'))
			if (i < smileyPosArray.length) {
				theImage.style.left = parseInt(elJsDiv.style.left) + 75 + 'px';
				theImage.style.top = parseInt(elJsDiv.style.top) + 120 + 'px';
				theImage.style.visibility = 'visible';
				theImage.style.zIndex = 100;
				moveElement(theImage.id, smileyPosArray[i].xPos, smileyPosArray[i].yPos, 40)
			}
	}
}


addEvent(window, 'load', addListeners, false);

