var visiblePopup = null;

// initialize state
state = new Cookie(document, "state", 240, '/');
state.load();
if (state.xPosition === undefined) {
	state.xPosition = "30";
	state.yPosition = "300";
	state.showRollover = false;
	state.store();
}

function showItem(id, x, y) {
	hideVisible(id);
	if (state.showRollover) {
		visiblePopup = document.getElementById(id);
		visiblePopup.style.display = 'inline';
		setPosition(visiblePopup, state.xPosition, state.yPosition);
	}
}		

function setPosition(popup, x, y) {
	popup.style.left = x + 'px';
	popup.style.top  = y + 'px';
}

function hideItem(id) {
	var i = document.getElementById(id);
	if (i != null) {
		i.style.display = 'none';
	}
}		

function hideVisible(unlessIts) {
	var except = document.getElementById(unlessIts);
	if ((visiblePopup != null) && (except != visiblePopup)) {
		visiblePopup.style.display = 'none';
	}
}

function beginDrag(elementToDrag, event) {
	var deltaX = event.clientX - parseInt(elementToDrag.style.left);
	var deltaY = event.clientY - parseInt(elementToDrag.style.top);
	var lastTime = 0;
	
	if (document.addEventListener) {
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", upHandler, true);
	} else if (document.attachEvent) {
		document.attachEvent("onmousemove", moveHandler);
		document.attachEvent("onmouseup", upHandler);
		document.setCapture();
	} else {
		var oldmovehandler = document.onmousemove;
		var olduphandler = document.onmouseup;
		document.onmousemove = moveHandler;
		document.onmouseup = upHandler;
	}
	
	if (event.stopPropagation) {
		event.stopPropagation();
	} else {
		event.cancelBubble = true;
	}
	
	if (event.preventDefault) {
		event.preventDefault();
	} else {
		event.returnValue = false;
	}

	function moveHandler(e) {
		if (!e) {
			e = window.event;
		}

		var now = new Date();
		if (now.getTime() - lastTime > 50) {
			lastTime = now.getTime();

			newXPosition = (e.clientX - deltaX);
			newYPosition = (e.clientY - deltaY);
			if ((newXPosition != state.xPosition) || 
			    (newYPosition != state.yPosition)) {
				state.xPosition = newXPosition;		
				state.yPosition = newYPosition;	
				
				setPosition(elementToDrag, state.xPosition, state.yPosition);
			}
		}

		if (e.stopPropagation) {
			e.stopPropagation(); 
		} else {
			e.cancelBubble = true;
		}
	}
	
	function upHandler(e) {
		if (!e) {
			e = window.event;
		}	
		
		if (document.removeEventListener) {
			document.removeEventListener("mouseup",   upHandler,   true);
			document.removeEventListener("mousemove", moveHandler, true);
		} else if (document.detachEvent) {
			document.releaseCapture();
			document.detachEvent("onmouseup",   upHandler);
			document.detachEvent("onmousemove", moveHandler);
		} else {
			document.onmouseup   = olduphandler;
			document.onmousemove = oldmovehandler;
		}
		
		state.store();
		
		if (e.stopPropagation) {
			e.stopPropagation();
		} else {
			e.cancelBubble = true;
		}
	}
}
		
function checkBox()	{
	if (state.showRollover === undefined) {
		state.showRollover = false;
		state.store();
	}
  state.showRollover = (state.showRollover == 'true') ? true : false;		
	showOrHideOverview();
	showOrHideInstructions();
}

function toggleRollover() {
	state.showRollover = !state.showRollover;
	state.store();
	showOrHideOverview();
	showOrHideInstructions();
}

function showOrHideOverview() {
	if (state.showRollover) {
		showItem('Overview');
	} else {
		hideVisible();
	}
}

function showElement(name, on) {
		element = document.getElementById(name);
		element.style.display = on ? 'block' : 'none';
}
	
function showOrHideInstructions() {
	if (state.showRollover) {
		showElement('showPopup', false);
		showElement('hidePopup', true);
		showElement('mmm1', true);
		showElement('mmm2', true);
	} else {
		showElement('showPopup', true);

		showElement('hidePopup', false);
		showElement('mmm1', false);
		showElement('mmm2', false);
	}
}
