function initMouseMoveListener(){
  if (browser.isIE) {
    document.attachEvent("onmousemove", mouseMove);return;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", mouseMove,   true);return;
  }
}

function keyDown(e){
	ctrlKey=e.ctrlKey;
	if (ctrlKey){
		followStart(e, 'ctrlMsg');
	}
	return;
}

function keyUp(e){
	if (ctrlKey && !e.ctrlKey) {
		ctrlKey=e.ctrlKey;
		followStop();
		$('ctrlMsg').style.display="none";
	}
	return;
}

var mouseX, mouseY;
function mouseMove(event) {
	if (browser.isIE) {
    mouseX = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
    mouseY = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
  }
  if (browser.isNS) {
		if (event.pageX){
			mouseX = event.pageX;
			mouseY = event.pageY;
		}else{
		if (event.x){
			mouseX = event.x;
			mouseY = event.y;
		}else{
			mouseX = event.clientX + window.scrollX;
			mouseY = event.clientY + window.scrollY;
		}
		}
  }
	if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function followStart(event, id) {
	$(id).style.left=mouseX+"px";
	$(id).style.top=mouseY+"px";
	$(id).style.display="block";
}

function followGo(event) {
	$(id).style.left = mouseX+"px";
	$(id).style.top  = mouseY+"px";
  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function followStop() {
  // Stop capturing mousemove and mouseup events.
  if (browser.isIE) {
    document.detachEvent("onkeyup",   followStop);
  }
  if (browser.isNS) {
    document.removeEventListener("keyup",   followStop, true);
  }
}
