/**
* @license 
* jQuery Tools @VERSION / Tooltip Slide Effect
* 
* NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
* 
* http://flowplayer.org/tools/tooltip/slide.html
*
* Since: September 2009
* Date: @DATE 
*/
(function ($) {

    // version number
    var t = $.tools.tooltip;

    // extend global configuragion with effect specific defaults
    $.extend(t.conf, {
        direction: 'up', // down, left, right 
        bounce: false,
        slideOffset: 10,
        slideInSpeed: 200,
        slideOutSpeed: 200,
        slideFade: !$.browser.msie
    });

    // directions for slide effect
    var dirs = {
        up: ['-', 'top'],
        down: ['+', 'top'],
        left: ['-', 'left'],
        right: ['+', 'left']
    };

    /* default effect: "slide"  */
    t.addEffect("slide",

    // show effect
		function (done) {

		    // variables
		    var conf = this.getConf(),
				 tip = this.getTip(),
				 params = conf.slideFade ? { opacity: conf.opacity} : {},
				 dir = dirs[conf.direction] || dirs.up;

		    // direction			
		    params[dir[1]] = dir[0] + '=' + conf.slideOffset;

		    // perform animation
		    if (conf.slideFade) { tip.css({ opacity: 0 }); }
		    tip.show().animate(params, conf.slideInSpeed, done);
		},

    // hide effect
		function (done) {

		    // variables
		    var conf = this.getConf(),
				 offset = conf.slideOffset,
				 params = conf.slideFade ? { opacity: 0} : {},
				 dir = dirs[conf.direction] || dirs.up;

		    // direction
		    var sign = "" + dir[0];
		    if (conf.bounce) { sign = sign == '+' ? '-' : '+'; }
		    params[dir[1]] = sign + '=' + offset;

		    // perform animation
		    this.getTip().animate(params, conf.slideOutSpeed, function () {
		        $(this).hide();
		        done.call();
		    });
		}
	);

})(jQuery);	
		

