var boxWidth = 279;
var timeOut = "";
var interval = 2000;
var IE = document.all?true:false
var onDiv = false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)

document.onmousemove = getMouseXY;

var tempX = 0
var tempY = 0

var mouseXY = Array();
function getMouseXY(e) {  	
  if (IE) {
    tempY = event.clientY + parseInt(document.documentElement.scrollTop);
    tempX = event.clientX + parseInt(document.documentElement.scrollLeft);
  } else {
    tempX = e.pageX
    tempY = e.pageY
  }  
  
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  
  mouseXY[0] = tempX;
  mouseXY[1] = tempY;
  var floatObj = document.getElementById('popupDiv');
  if(floatObj!=null){	  
	  var pos = getElementPosition(floatObj);	
	  if(mouseXY[0]>=pos.x && mouseXY[0]<=pos.x+279 && mouseXY[1]>=pos.y && mouseXY[1]<=pos.y+floatObj.offsetHeight && onDiv){
			floatObj.style.visibility = 'visible';
			floatObj.style.display = 'block';
	  }else{
		  onDiv = false;
			hideHint();			
	  }
  }
  
  return true;
}

function loadHintContent(id, d) {
	var request = createAjaxRequest();
	request.open('get', "ajax.php?page=popup_link_info&link_id="+id);
	request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
	request.onreadystatechange = requestResult;
	request.send('');
	
	function requestResult() {
		if (request.readyState == 4) {
	    if (request.status == 200) {
	    	res = request.responseText;
	      document.getElementById('popupDiv').innerHTML = res;
				
	      var d = document.getElementById('popupDiv');
				d.style.width = '279px';
			  //d.style.position = 'absolute';	  
			  var winW = 0;
			  var winH = 0;
			  if (IE){
					winW = document.body.offsetWidth;
					winH = document.body.offsetHeight;
			  }else{
					winW = window.innerWidth + parseInt(window.pageXOffset);
					winH = window.innerHeight + parseInt(window.pageYOffset);
			  }
			  if(mouseXY[0]>=winW-boxWidth) mouseXY[0] = mouseXY[0] - boxWidth;
			  d.style.left = mouseXY[0]+"px";	  
			  d.style.top = mouseXY[1]+"px";            
				d.style.visibility = 'visible';
				d.style.display = 'block';
				if(mouseXY[1]>=winH-d.offsetHeight){
					mouseXY[1] = mouseXY[1] - d.offsetHeight;
					d.style.top = mouseXY[1]+"px";
				}	      
	    } else {
	  		alert( ajaxError + ": " + request.statusText);
	    }
	  }
	}
}

function showHint(id){  	
	if(!onDiv){
		onDiv = true;
		var obj = document.getElementById(id);
		var width = 279;
		if (document.body){
		  loadHintContent(id);
		}
	}
}

function hideHint(){
  if(!onDiv){
	  var obj = document.getElementById('popupDiv');
	  if (!obj) 
		return;
	  obj.style.visibility='hidden';
	  obj.style.display='none';  
  }  
}

function getElementPosition(e)
{
  var pos=new Object();
  pos.x = pos.y = 0;
  if (e.style.position=='absolute' && e.style.posWidth>=0) {
    pos.width = parseInt(e.style.posWidth);
    pos.height = parseInt(e.style.posHeight);
  }
  else {
    pos.width = parseInt(e.offsetWidth);
    pos.height = parseInt(e.offsetHeight);
  }

  while (e) {
    if (e.style.position=='absolute' && e.style.posLeft>=0) {
      pos.x += parseInt(e.style.posLeft);
      pos.y += parseInt(e.style.posTop);
    }
    else {
      pos.x += parseInt(e.offsetLeft);
      pos.y += parseInt(e.offsetTop);
    }
    e = e.offsetParent;
  } 
  return pos;
}


function showHintIE(evt){			
	document.onmousemove = getMouseXY;
	timeOut = setTimeout('showHint(\''+evt.srcElement.id+'\')', interval);
	//showHint(evt.srcElement, evt.srcElement.getAttribute("hintMsg"), evt.srcElement.getAttribute("width")); 
}

function hideHintIE(evt) {
	window.clearTimeout(timeOut);
	setTimeout('hideHint();', interval/2); 
}

function showHintNS(evt) { 	
	document.onmousemove = getMouseXY;
	timeOut = window.setTimeout('showHint(\''+ this.id +'\');', interval);	  	
	//showHint(this, this.getAttribute("hintMsg"), this.getAttribute("width")); 
}

function hideHintNS(evt) {
	window.clearTimeout(timeOut);
	setTimeout('hideHint();', interval/2); 
}

function infoBoxInit() {  
  var objs=document.getElementsByTagName('a');  
  if (document.all) { // ie
    for (var i=0; i<objs.length; i++) {
			if (objs[i].getAttribute('id').charAt(0) == "_") {
        objs[i].attachEvent("onmouseover", showHintIE);
        objs[i].attachEvent("onmouseout", hideHintIE);
      }
    }
  } else {
    for (var i=0; i<objs.length; i++)
		if (objs[i].id.charAt(0) == "_") {
        objs[i].addEventListener('mouseover', showHintNS, false);
        objs[i].addEventListener('mouseout', hideHintNS, false);
      }
  }  
}
