document.getElementsByClassName = function (needle)
{
	if(document.all){
		 var my_array = document.all;
	}else{
		var my_array = document.getElementsByTagName("*");
	}
	
  var retvalue = new Array();
  var i;
  var j;

  for (i = 0, j = 0; i < my_array.length; i++)
  {
    var c = " " + my_array[i].className + " ";
    if (c.indexOf(" " + needle + " ") != -1)
      retvalue[j++] = my_array[i];
  }
  return retvalue;
}
function addEvent(obj, evType, fn)
{
    if (obj.addEventListener)
    {
        obj.addEventListener(evType, fn, true);
        return true;
    } 
    else if (obj.attachEvent)
    {
        var r = obj.attachEvent("on"+evType, fn);
        return r;
    } 
    else 
    {
        return false;
    }
}

function HelpHover()
{
    this._mousePosX = 0;
    this._mousePosY = 0;
    this._hoverItem = null;
    this._hoverContents = null;
}

HelpHover.prototype.init = function()
{
    var hh = this;
    var helpItems = document.getElementsByClassName('hasHelp');
    for (var i=0; i<helpItems.length; i++)
    {
        helpItems[i].onmousemove = function(e)
        {
            if (!e) var e = window.event;
            if (e.pageX || e.pageY)
            {
                hh.mousePosX = e.pageX;
                hh.mousePosY = e.pageY;
            }
            else if (e.clientX || e.clientY)
            {
                hh.mousePosX = e.clientX + document.body.scrollLeft;
                hh.mousePosY = e.clientY + document.body.scrollTop;
            }
            hh._hoverItem = this;
            hh._hoverContents = document.getElementById(this.id+'Help');
            hh.move();
        }
        helpItems[i].onmouseout = function (e)
        {
            hh.out();
        }
    }
}

HelpHover.prototype.out = function()
{
    this._hoverContents.style.top = -10000+'px';
    this._hoverContents.style.left = -10000+'px';
    this._hoverItem = null;
    this._hoverContents = null;
}

HelpHover.prototype.move = function()
{
    this._hoverContents.style.top = this.mousePosY+10+'px';
    this._hoverContents.style.left = this.mousePosX+10+'px';
}

addEvent(window, 'load', function()
{
    var hh = new HelpHover();
    hh.init();
});

function showExplaination(){
    var explain;

    // reload page with ?view=explain
    var href_append;
    var new_loc = location.href;

    if(location.search){
        href_append = '&view=explain';
    } else {
        href_append = '?view=explain';
    }
    if(location.hash){
        href_append = href_append + location.hash;
        var regex = /\#[a-zA-Z0-9_=]*$/;
        new_loc = new_loc.toString().replace(regex,"");
    }
    document.location.href = new_loc + href_append;
}

function hideExplaination(){
    // reload page without ?view=explain
    var old_loc = location.pathname;
    document.location.href = old_loc;
}

if (location.search){
    var regex = /view\=explain/;
    if (location.search.match(regex)){
        explain = 'on';
        document.writeln('<style>.hasHelp{text-decoration: underline;}</style>')
    } else {
        explain = '';
        document.writeln('<style>blockquote.helpContents{display:none;}</style>')
    }
} else {
    explain = '';
    document.writeln('<style>blockquote.helpContents{display:none;}</style>')
}
