/**
 * @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 name;

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

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

function handleHttpResponse(){
  if(http.readyState == 4){
  var obj = document.getElementById(name)
  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){
    if(name == 'tooltip'){
      var x;
      var y;
      var offsetX = 5;
      var offsetY = 5;
      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";
    }
    
    if(name == 'export'){
      var x;
      var y;
      var offsetX = 20;
      var offsetY = 20;
      var padding = 30;
      
      // X Coord for Tooltip
      x = maxX/2 - obj.offsetWidth / 2;
    
      // Y Coord for Tooltip
      y = maxY/2 - obj.offsetHeight / 2;
      
      if(y < 0){
        y = 0 + offsetY;
        x = mouseX + offsetX;
      }
      
      obj.style.left = x +"px";
      obj.style.top = y +"px";
    }
  }
}

init();