// The server-side script 
var siteLink = "";
function handleHttpResponse() 
{ 
  document.getElementById(divName).innerHTML = "Loading...";
  if (http.readyState == 4)
  {
    results = http.responseText;
    //alert(http.status);
    document.getElementById(divName).innerHTML = results;
    isWorking = false;
  }
}

function getURL(myUrl)
{
  siteLink = myUrl;
  var url = siteLink.toString() + "";

  if (!isWorking && http) {
    http.open("GET", "http://www.urlatex.com/urlatex.php?url=" + siteLink, true);
    http.onreadystatechange = handleHttpResponse;
    isWorking = true;
    http.send(null);
  }
}

function getHTTPObject() 
{ 
  var xmlhttp; 
  if (window.XMLHttpRequest) //most browsers  
  {
    xmlhttp=new XMLHttpRequest();
  }
  else if (window.ActiveXObject) //IE
  {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return xmlhttp; 
}

//initialize Ajax
var isWorking = false;
var http = getHTTPObject(); // We create the HTTP Object 
var divName = "urlatexDiv";
var linkIdx = 0;

function linkOver(e) {
  createDiv(e);    
  var target;
  if(navigator.appName == 'Netscape') {
     if(e.target.toString().indexOf("http")>=0) {
       target = e.target;
     }
  } else {
     if(e.srcElement.toString().indexOf("http")>=0) {
       target = e.srcElement;
     }
  }

  getURL(target);
}

function linkOut(e) {
  var target = e.target;
  document.getElementById(divName).innerHTML = "";
}

function createDiv(e) {
  if(document.getElementById(divName)){
     document.getElementById(divName).parentNode.removeChild(document.getElementById(divName));
  }
  if(!document.getElementById(divName)){
    var tooltip = document.createElement('div');
    tooltip.id = divName;
    tooltip.style.position = 'absolute';

   
    var xpos = mouseX(e);
    var ypos = mouseY(e);
	
    if( navigator.appName != "Netscape" ) {
       e.srcElement.parentNode.insertBefore(tooltip,e.srcElement);
    } else {
       e.target.parentNode.insertBefore(tooltip,e.target);
    }
	
    tooltip.style.left=20+xpos+"px";
    tooltip.style.top=-110+ypos+"px";

  }

}

function mouseX(evt) {
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
   		return evt.clientX + (document.documentElement.scrollLeft ?
   		document.documentElement.scrollLeft :
   		document.body.scrollLeft);
	else return null;
}

function mouseY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
   		return evt.clientY + (document.documentElement.scrollTop ?
   		document.documentElement.scrollTop :
   		document.body.scrollTop);
	else return null;
}

function addListeners() {
  var link = document.getElementsByTagName("a");
  for (i = 0; i < link.length; i++) {
    if(link[i].rel == "nolatex") {
       //no preview
    } else {
       if(link[i].addEventListener) {
         link[i].addEventListener('mouseover', linkOver, false);
         linkIdx = i;
       } else if(link[i].attachEvent) {
         link[i].attachEvent('onmouseover', linkOver);
         linkIdx = i;
       }
    }
  }


}

function URLatex() {
  if(window.addEventListener) {
    window.addEventListener('load', addListeners, false);
  } else if (window.attachEvent) {
    window.attachEvent('onload',addListeners);
  }
}

