/**
 * Name: tooltip-js.js
 * Author: ddw
 * Description: Tooltip
 *
 * Date: 24.06.2010
 * Packed: no
 * jQuery: yes
 */

/** auszufuehrende Events bei Laden der Seite **/
jQuery(document).ready(function() {
  Tooltip.init();
});

/****** Konstantendefinitionen ******/
var TooltipConstants = {
  xOffset: 15,
  yOffset: 15
};

/****** Bibliotheksdefinition ******/
var Tooltip = {

  /**
   * Initialisierungsmethode
   */
  init: function() {
  
    /** Elemente mit '.hasTooltip'-Klassen **/
    jQuery(".tipM").each(function (i, item) {
		
		var ttSpan = jQuery(item).contents("span:last-child");
		jQuery(ttSpan).addClass( 'ttS' );
		jQuery(item).contents("span:last-child").remove();
		jQuery('body').append(ttSpan);
	
		jQuery(item).mousemove(
			function(e) { Tooltip.doMouseMoveAction(item, ttSpan, e); }
		);
	
		jQuery(item).hover(
			function() { Tooltip.doHoverInAction(ttSpan); }, 
			function() { Tooltip.doHoverOutAction(ttSpan); }
		);
	});
		
	jQuery(".tipM").removeAttr("title");

  },
	
	/**
	 * Liefert die Hover-In-Action fuer das uebergebene Element 'elem'. 
	 * @param {Object} elem betreffendes Element
	 */
	doHoverInAction: function(elem) {
		jQuery(elem).css({ display: "block" });
	},
	
	/**
   * Liefert die Hover-Out-Action fuer das uebergebene Element 'elem'. 
   * @param {Object} elem betreffendes Element
   */
	doHoverOutAction: function(elem) {
    jQuery(elem).css({ display: "none" });
  },
  
	/**
   * Liefert die MouseMove-Action fuer das uebergebene Element 'elem'. 
   * @param {Object} elem betreffendes Element
   */
  doMouseMoveAction: function(elem, ttSpanOrig, event) {
		
	var ttSpan = jQuery(ttSpanOrig)[0];
    var left = elem.offsetLeft;
    var top = elem.offsetTop;

    if (event) {
      left = event.pageX + TooltipConstants.xOffset;
      top = event.pageY + TooltipConstants.yOffset;
    }

    var v = Tooltip.getViewPort();  
	var offset = jQuery(elem).offset();

    if (v.x + v.cx < offset.left + jQuery(elem).width() + ttSpan.offsetWidth + TooltipConstants.xOffset) {
      left -= ttSpan.offsetWidth + (TooltipConstants.xOffset * 2);
    }

    if (v.y + v.cy < offset.top + jQuery(elem).height() + ttSpan.offsetHeight + TooltipConstants.yOffset) {
      top -= ttSpan.offsetHeight + (TooltipConstants.yOffset * 2);
    }

    jQuery(ttSpanOrig).offset({ top: top, left: left });
    
  },
	
	getViewPort: function() {
		vp = {
						x: jQuery(window).scrollLeft(),
						y: jQuery(window).scrollTop(),
						cx: jQuery(window).width(),  
						cy: jQuery(window).height()
				 }; 
		return vp;
	}
};
