
function Tooltip ()
{
    this.shown = new Array();
}

Tooltip.prototype.init = function ()
{
    parentObject = this;
    $('a[rel^="tooltip-"]').each(
        function ()
        {
            var $opener = $(this)
            var tooltipNr = $opener.attr("rel").split("-")[1];
            var $tooltip = $('#tooltipHolder-' + tooltipNr);

            parentObject.registerMouseHandler( $opener, $tooltip );
        }
    );
}


Tooltip.prototype.getMousePosition = function ( mouseEvent )
{
	var position = {
		x: 0,
		y: 0
	}
	
	if (!mouseEvent) var mouseEvent = window.event;
	
	if (mouseEvent.pageX || mouseEvent.pageY) 
	{
		position.x = mouseEvent.pageX;
		position.y = mouseEvent.pageY;
	}
	else if (mouseEvent.clientX || mouseEvent.clientY) 
	{
		position.x = mouseEvent.clientX + document.body.scrollLeft	+ document.documentElement.scrollLeft;
		position.y = mouseEvent.clientY + document.body.scrollTop   + document.documentElement.scrollTop;
	}
	
	return position;
	
}


Tooltip.prototype.registerMouseHandler = function ( $opener, $tooltip )
{
	var parentObject = this;
	
    $opener.mouseout(
        function ()
        {
            $tooltip.hide();
        }
    );

    $opener.mouseover(
        function ()
        {
            $tooltip.show();
        }
    );

    $opener.mousemove(
        function ( mouse )
        {
			var mousePosition = parentObject.getMousePosition( mouse );
            var top = mousePosition.y - $tooltip.innerHeight() - 10;
            var left = mousePosition.x; //- $('#tooltipHolder-' + nr).innerWidth() - 10;
            $tooltip.css("top", top+"px").css("left", left+"px");
        }
    );

    $tooltip.mousemove(
        function ( mouse )
        {
            $tooltip.trigger('mousemove', [mouse]);
        }
    );
}


  // add second preloader
    $(
        function ()
        {
            var tooltipHandler = new Tooltip();
            tooltipHandler.init();
        }
    );
