/**
 * U prvku s atributem title odstrani tento atribut a nahradi jej tooltipem.
 * Defaultne se styluje podle CSS tridy img_tooltip, kterou lze predefinovat. 
 *  
 *
 * @example jQuery("img[title]").jpTooltip({opacity: 1});
 *
 * @name jpTooltip
 * @type jQuery
 * @param {Object}	settings	Objekt obsahujici jednotlive parametry. 
 *								overlapVertical   -	Vertikalni presah tooltipu pres obrazek
 *								overlapHorizontal -	Horizontalni presah tooltipu pres obrazek
 *								tooltipClass      -	CSS trida, kterou maji vsechny tooltipy
 *								opacity           -	Pruhlednost tooltipu
 * @return jQuery
 * @author jpreuss
 * @version	0.3
 */

jQuery.fn.jpTooltip = function(options) 
{
    if(window.console)
        console.info("jQuery.jptooltip.js v.%f", 0.3);
	options = jQuery.extend(
		{
			overlapHorizontal : 10, // horizontalni presah tooltipu pres obrazek
			overlapVertical   : 10, // vertikalni presah tooltipu pres obrazek
			tooltipClass : "img_tooltip",
			opacity : 0.8
		}, options
	);
	
    return this.each(function() {
    
        var elm = jQuery(this);
        
        if(elm.is("[title]"))
        {
            // vytvoreni tooltipu a navazani na konec body
            var title = elm.attr("title");
            var tooltip = jQuery("<div></div>").html(title).addClass(options.tooltipClass);
            tooltip.css({left: -100, top: -100, position: "absolute", opacity: 0});
            tooltip.appendTo("body");
            
            // neustale ukladani pozice kurzoru
            var mouse = {pageX: 0, pageY: 0};
            $().mousemove(function(e){
                mouse = {pageX: e.pageX, pageY: e.pageY};
            }); 
            
            // odstraneni atributu title a alt
            elm.removeAttr("title").removeAttr("alt");
            elm.parent("a").removeAttr("title").data("title", title);
            // navazani udalosti na obrazky
            elm.bind("mouseenter", function(e) {
                e = mouse; // premapovani na hodnoty z mousemove, protoze pri triggeru se nepreda spravna pozice kurzoru
                var top  = (elm.offset().top) + options.overlapVertical;
                var left = (elm.offset().left);
                if((left+tooltip.outerWidth()+elm.outerWidth())>jQuery(window).width())
                    left = left - tooltip.outerWidth() + options.overlapHorizontal;
                else
                    left = left + elm.outerWidth() - options.overlapHorizontal;
                if(e.pageY >= top && e.pageY <= (elm.offset().top + elm.outerHeight() - options.overlapVertical))
                    top = e.pageY;
                else if(e.pageY >= top)
                    top = (elm.offset().top + elm.outerHeight() - options.overlapVertical - tooltip.outerHeight())
                tooltip.fadeTo("normal", options.opacity).css({top: top, left: left});
            }).bind("mouseleave", function() {
                tooltip.fadeTo("normal", 0 ).css({top: -10000});;
            });
        }
    });    

};

