// Where Am I Going?
// Made By Michael Huch
//
// ==UserScript==
// @namespace         http://squarehappy.com/
// @description       Displays the title of the destination page on link hover.
// @include           http://*
// ==/UserScript==

var xmlHttp;

if (window.addEventListener) { window.addEventListener("load", init, false); }
else if (window.attachEvent) { window.attachEvent("onload", init); }

function init()
{
var alllinks = document.getElementsByTagName('A');
for (var j = 0; j < alllinks.length; j++) {
	if (alllinks[j].href) { addTitleEvent(alllinks[j]); }
}
}

function addTitleEvent(hrefLink) {
	if (hrefLink.addEventListener && !hrefLink.title) { hrefLink.addEventListener("mouseover", showTitle, false); }
	else if (hrefLink.attachEvent && !hrefLink.title) { hrefLink.attachEvent("onmouseover", showTitle); }
}

function showTitle() {
	
linkArray = getElementsByAttribute(document.body, "a", "href", this.href);
		
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
  {
  alert ("Your browser does not support the AJAX!");
  return;
  } 
var url = "http://squarehappy.com/testing/waig/grabtitle3.php";
url = url + "?q=" + this.href;
url = url + "&sid=" + Math.random();
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
} 

function stateChanged() 
{ 
if (xmlHttp.readyState == 4)
{	
	for (k=0;k<linkArray.length;k++)
	{			
		linkArray[k].title = xmlHttp.responseText;
	}
}
}

function GetXmlHttpObject() {
var xmlHttp=null;
try
  {
  // Firefox, Opera 8.0+, Safari
  xmlHttp = new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
  try
    {
    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
  catch (e)
    {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
return xmlHttp;
}

/*
    Copyright Robert Nyman, http://www.robertnyman.com
    Free to use if this text is included
*/
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements.push(oCurrent);
            }
        }
    }
    return arrReturnElements;
}
