function getElementsByClass(searchClass,tag) {
  var classElements = new Array();
	
  if (tag == null)
    tag = '*';
	
  var els = document.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  
  for (i = 0, j = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  
  return classElements;
}

function Terminarz() {
	hints = new Array();
	
	function construct()	{
		var els = getElementsByClass("withHint", "a");
		var elsLen = els.length;

		for (var i =0; i < elsLen; i++) {
			hints[els[i].attributes['alt'].value] = document.getElementById(els[i].attributes['alt'].value);
			
			if (els[i].addEventListener) {
				els[i].addEventListener ("mouseover", showHint, false);
			} else if (els[i].attachEvent) {
				els[i].attachEvent ("onmouseover", showHint);
			} else {
				els[i].onmouseover = showHint;
			}
			
			if (els[i].addEventListener) {
				els[i].addEventListener ("mouseout", hideHint, false);
			} else if (els[i].attachEvent) {
				els[i].attachEvent ("onmouseout", hideHint);
			} else {
				els[i].onmouseout = hideHint;
			}

			}
		}
	
	function showHint(e) {
		if (!e) var e = window.event;
		
		var el;
		
		if (!e) el = window.event.target;
			else el = e.target
			
		if (!e.target) el = window.event.srcElement;

		hints[el.attributes['alt'].value].style.display = 'block';
		hints[el.attributes['alt'].value].style.visibility = 'visible';
		hints[el.attributes['alt'].value].style.zIndex += 1;
			
		hints[el.attributes['alt'].value].style.left = MouseX(e) - 160 + 'px';
		hints[el.attributes['alt'].value].style.top = MouseY(e) + 10 + 'px';
	}
	
	function hideHint(e) {
		if (!e) var e = window.event;
		
		var el;
		
		if (!e) el = window.event.target;
			else el = e.target
			
		if (!e.target) el = window.event.srcElement;
	
		hints[el.attributes['alt'].value].style.display = 'none';
		hints[el.attributes['alt'].value].style.visibility = 'hidden';
	}
	
	function MouseX(e) {
		posx = 0;
		
		if (!e) var e = window.event;
		
		if (e.pageX || e.pageY) 	{
			posx = e.pageX;
		}
		else if (e.clientX || e.clientY) 	{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
		}
		
		return posx;
	}
	
	function MouseY(e) {
		posy = 0;
		
		if (!e) var e = window.event;
		
		if (e.pageX || e.pageY) 	{
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	{
			this.posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		
		return posy;
	}
	
	this.init = construct;
}

function terminarz() {
	var myTerm = new Terminarz();
	myTerm.init();
}

//window.onload = terminarz;

