/*-------------------------------------------------------------------------------
	A Better jQuery Tooltip
	Version 1.0
	By Jon Cazier
	jon@3nhanced.com
	01.22.08
-------------------------------------------------------------------------------*/

$.fn.betterTooltip = function (options) {

    /* Setup the options for the tooltip that can be 
    accessed from outside the plugin              */
    var defaults = {
        speed: 200,
        delay: 300
    };

    var options = $.extend(defaults, options);

    /* Create a function that builds the tooltip 
    markup. Then, prepend the tooltip to the body */
    getTip = function () {
        var tTip =
			"<div class='tip'>" +
				"<div class='tipMid'>" +
				"</div>" +
				"<div class='tipBtm'></div>" +
			"</div>";
        return tTip;
    }
    

    /* Give each item with the class associated with 
    the plugin the ability to call the tooltip    */
    $(this).each(function () {

        var $this = $(this);
        var tip = $('.tip');
        var tipInner = $('.tip .tipMid');

        var tTitle = (this.title);
        this.title = "";

        var offset = $(this).offset();
        //alert(offset.left + " " + offset.top);
        var tLeft = offset.left;
        var tTop = offset.top;
        var tWidth = $this.width();
        var tHeight = $this.height();

        /* Mouse over and out functions*/
        $this.hover(
			function () {
			    var $this2 = $(this);
			    var offset2 = $(this).offset();
			    tTop = offset2.top;
			    tLeft = offset2.left;
			    tipInner.html(tTitle);
			    //alert(offset2.left + " " + offset2.top);
			    setTip(tTop, tLeft);
			    setTimer();
			},
			function () {
			    stopTimer();
			    tip.hide();
			}
		);

        /* Delay the fade-in animation of the tooltip */
        setTimer = function () {
            $this.showTipTimer = setInterval("showTip()", defaults.delay);
        }

        stopTimer = function () {
            clearInterval($this.showTipTimer);
        }

        /* Position the tooltip relative to the class 
        associated with the tooltip                */
        setTip = function (top, left) {
            var topOffset = tip.height();
            var xTip = (left - 24) + "px";
            //var yTip = (top-topOffset-60)+"px";
            var yTip = (top - 140) + "px";
            //alert(yTip);
            tip.css({ 'top': yTip, 'left': xTip });
        }

        /* This function stops the timer and creates the
        fade-in animation                          */
        showTip = function () {
            stopTimer();
            tip.animate({ "opacity": "toggle" }, defaults.speed);
        }
    });
};

$.fn.betterTooltip2 = function (options) {

    /* Setup the options for the tooltip that can be 
    accessed from outside the plugin              */
    var defaults = {
        speed: 200,
        delay: 300
    };

    var options = $.extend(defaults, options);

    /* Create a function that builds the tooltip 
    markup. Then, prepend the tooltip to the body */
    getTip = function () {
        var tTip =
			"<div class='tip'>" +
				"<div class='tipMid'>" +
				"</div>" +
				"<div class='tipBtm'></div>" +
			"</div>";
        return tTip;
    }


    /* Give each item with the class associated with 
    the plugin the ability to call the tooltip    */
    $(this).each(function () {

        var $this = $(this);
        var tip = $('.tip');
        var tipInner = $('.tip .tipMid');

        var tTitle = (this.children[0].innerHTML);
        this.title = "";

        var offset = $(this).offset();
        //alert(offset.left + " " + offset.top);
        var tLeft = offset.left;
        var tTop = offset.top;
        var tWidth = $this.width();
        var tHeight = $this.height();

        /* Mouse over and out functions*/
        $this.hover(
			function () {
			    var $this2 = $(this);
			    var offset2 = $(this).offset();
			    tTop = offset2.top;
			    tLeft = offset2.left;
			    tipInner.html(tTitle);
			    //alert(offset2.left + " " + offset2.top);
			    setTip(tTop, tLeft);
			    setTimer();
			},
			function () {
			    stopTimer();
			    tip.hide();
			}
		);

        /* Delay the fade-in animation of the tooltip */
        setTimer = function () {
            $this.showTipTimer = setInterval("showTip()", defaults.delay);
        }

        stopTimer = function () {
            clearInterval($this.showTipTimer);
        }

        /* Position the tooltip relative to the class 
        associated with the tooltip                */
        setTip = function (top, left) {
            var topOffset = tip.height();
            var xTip = (left - 24) + "px";
            //var yTip = (top-topOffset-60)+"px";
            var yTip = (top - 140) + "px";
            //alert(yTip);
            tip.css({ 'top': yTip, 'left': xTip });
        }

        /* This function stops the timer and creates the
        fade-in animation                          */
        showTip = function () {
            stopTimer();
            tip.animate({ "opacity": "toggle" }, defaults.speed);
        }
    });
};
