/**
 * @author	Lucas Binter
 * @copyright 2008 Lucas Binter
 * @homepage: http://www.zealin.net
 * @license	GNU Lesser General Public License <http://opensource.org/licenses/lgpl-3.0.html>
 */

http = getHTTPObject();

var maxX;
var maxY;
var mouseX;
var mouseY;
var relativeY;

var layoutWidth = 1000;

function getHTTPObject(){
  var xmlhttp;

  /*@cc_on
 
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");
    }catch(e){
      try{
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }catch(E){
      xmlhttp = false;
    }
  }
  @else
    xmlhttp = false;
  @end @*/
 
  if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
    try {
      xmlhttp = new XMLHttpRequest();
    }catch(e){
      xmlhttp = false;
    }
  }
 
  return xmlhttp;
}

function init() {
	
    maxX = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth;
    maxY = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight;
	
    if (window.event) {
        if (document.captureEvents){
          document.captureEvents(Event.MOUSEMOVE);
        } else {
          window.captureEvents(Event.MOUSEMOVE);
        }
    }
    document.onmousemove = getMousePos;
}

function getMousePos(e) {
    if(!e) e = window.event;
    var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?
    window.document.documentElement : window.document.body || null;
    
    mouseX = e.clientX;
    mouseY = e.clientY;
}

function getTooltip(url){
	// initialise tooltip
	// generate  div
	destroy();
	obj = document.createElement('div');
	setAttributes(obj, {'id':'tooltip', 'style':'position: fixed; top:0px; left:0px;'})
	document.body.appendChild(obj);
	
 	setPos(obj);
 	
 	obj.innerHTML = '<span style="display:block; text-align: center; padding: 10px;">Loading please wait ...</span>';
 	
 	setPos(obj);
 	
	http.open("GET", url, true);
	http.onreadystatechange = handleHttpResponse;
	http.send(null);
}

function destroy(){
	var obj = document.getElementById('tooltip')
	if(obj != null){
		document.body.removeChild(obj);
	}
}

function handleHttpResponse(){
  if(http.readyState == 4){
	var obj = document.getElementById('tooltip')
	if(obj != null){
		if ( http.status == 200 ) {
    		obj.innerHTML = http.responseText;
		}
 		setPos(obj);
	}
  }
}

function setAttributes(parent, attributes){
	for (var fieldName in attributes){
		if(navigator.appName == "Microsoft Internet Explorer"){
			if( fieldName == "class" ){ fieldname = "className";}
			if( fieldName == "for" ){ fieldName = "htmlFor";}
			if( fieldName == "style"){
				parent.style.setAttribute('cssText', attributes[fieldName], 0);
			}else{
				parent.setAttribute(fieldName, attributes[fieldName]);
			}
		}else{
			parent.setAttribute(fieldName, attributes[fieldName]);
		}
	}
}

function setPos(obj) {
	if(obj != null){
		var x;
		var y;
		var offsetX = 20;
		var offsetY = 20;
		var padding = 30;
		
		// X Coord for Tooltip
		if(mouseX + obj.offsetWidth + offsetX + padding > maxX/2 + layoutWidth/2){
			x = maxX/2 + layoutWidth/2 - obj.offsetWidth - padding ;
		}else if(mouseX + padding < maxX/2 -layoutWidth/2){
			x = maxX/2 - layoutWidth/2 + padding ;
		}else{
			x = mouseX + offsetX;
		}
	
	  // Y Coord for Tooltip
		if(mouseY + offsetY < maxY - obj.offsetHeight){
			y = mouseY + offsetY;
		}else{
			y = mouseY - obj.offsetHeight + offsetY - padding;
		}
		
		if(y < 0){
			y = 0 + offsetY;
			x = mouseX + offsetX;
		}
		
		
			obj.style.left = x +"px";
			obj.style.top = y +"px";
	}
}

init();
