// Add Events - Kudos to John Resig (http://ejohn.org/projects/flexible-javascript-events/)
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

function mousePosition(evt)
{
	// Offset from cursor (allow for lytetip style icon)
	var x_offset = 20;
	var y_offset = 20;

	// Get X posiiton
	if (evt.pageX) {
		xpos = evt.pageX;
	} else if (evt.clientX) {
		xpos = evt.clientX + (document.documentElement.scrollLeft ?
				document.documentElement.scrollLeft : document.body.scrollLeft);
	} else {
		xpos = 0; 
	}

	// Get Y position
	if (evt.pageY) {
		ypos = evt.pageY;
	} else if (evt.clientY) {
		ypos = evt.clientY + (document.documentElement.scrollTop ?
			document.documentElement.scrollTop : document.body.scrollTop);
	} else {
		ypos = 0;
	}

	// If we don't get any mouse coordinates, we do nothing
	if (xpos == 0 || ypos == 0) { return false; }

	LB = new Lytebox(); // using inbuilt Lytebox methods
	var windowSize = LB.getPageSize(); // why reinvent the wheel?

	// Remove A anchor inline style
	// (required for mouse position to work properly)
	myLytetip.removeAttribute("style");

	// Get the Lytebox inserted SPAN (global var)
	// Assumes only one span in parent "lytetip" container
	mySpan = myLytetip.getElementsByTagName('span');

	// Set some styles
	mySpan[0].style.display = "block"; // important
	mySpan[0].style.zIndex = 200; // important

	// LEFT/X position (accounts for screen width and object width)
	if (windowSize[2] <= (xpos + mySpan[0].offsetWidth + x_offset)) {
		mySpan[0].style.left = (xpos - (mySpan[0].offsetWidth + x_offset)) + "px";
	} else {
		mySpan[0].style.left = (xpos + x_offset) + "px";
	}

	// TOP/Y position (accounts for screen height and object height)
	if (windowSize[3] <= (ypos + mySpan[0].offsetHeight + y_offset)) {
		mySpan[0].style.top = (ypos - (mySpan[0].offsetHeight + y_offset)) + "px";
	} else {
		mySpan[0].style.top = (ypos + y_offset) + "px";
	}
}

function cancelMousePosition()
{
	// Hides/resets the 'lytetip' span again.
	mySpan = myLytetip.getElementsByTagName('span');
	mySpan[0].style.display = "none";
	mySpan[0].style.top = "0px"; // reset position
	mySpan[0].style.left = "0px"; // rest position
}

// Initialising Script
function initEvents()
{
	// Grab the 'lytetip' anchors
	var allLinks = document.getElementsByTagName('a');
	for (i = 0; i < allLinks.length; i++)
	{
		if (allLinks[i].className.toLowerCase().match('lytetip'))
		{
			myLytetip = allLinks[i];
		}

		if (allLinks[i].className.toLowerCase().match('console'))
		{
			allLinks[i].href = allLinks[i].href + "?console=true";
		}
	}


	// Mouseover/mouseout event listeners
	addEvent(myLytetip, "mousemove", mousePosition);
	addEvent(myLytetip, "mouseout", cancelMousePosition);
}

// Attach Events
addEvent(window, "load", initEvents);
