/*
* DreamyTip v0.02 - jQuery tooltip widget
* Copyright (c) 2010 Andres Pi
*
* andres(at)dreamsiteweb.com
* http://labs.dreamsiteweb.com
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* TODO:
*       opcion de poder elegir el evento
*       opcion un solo tootip a la vez
*       perfeccionar posicionamiento
*/
(function($) {
    $.fn.dreamyTip = function(options) {
        var opts = $.extend({}, $.fn.dreamyTip.defaults, options);    
        if(opts.insertCSS){
          //$('head').append('<link rel="stylesheet" href="css/dreamytip.css" type="text/css" />');
        }
        return this.each(function(i){
            var $this = $(this).css('cursor','pointer');
            var privateFlag, dreamyTip;           

            $this.bind('click', function(){
              if(!dreamyTip){
                createTip();
              }
              if(privateFlag){
                disappear();
                privateFlag = false;
              }else{
                appear();
                privateFlag = true;
              }
            })
            
            var createTip = function(){
                if(opts.closeButton){
                    $('body').append('<div class="dreamyTip dreamyTipNumber' + i + '"><div class="dreamyTipBtn">x</div><div class="dreamyTipInner"></div></div>');
                    $('.dreamyTipNumber' + i).bind('click', function(){
                        disappear();
                        privateFlag = false;
                    });
                }else{
                    $('body').append('<div class="dreamyTip dreamyTipNumber' + i + '"><div class="dreamyTipInner"></div></div>');
                }
                dreamyTip = $('.dreamyTipNumber' + i);
            }

            var appear = function(){
                var offset = $this.offset();
                dreamyTip.children('.dreamyTipInner').text($this.attr('title'));
                dreamyTip.css({
                      top: offset.top - dreamyTip.outerHeight(),
                      left: offset.left - (Math.abs($this.outerWidth() - dreamyTip.outerWidth())/2),
                      zIndex: 10000,
                      display:'block'
                  }).animate({
                      opacity: opts.fade
                  }, opts.duration, opts.easing, function(){
                      opts.callbackOn();
                  });
            }
            var disappear = function(){
                dreamyTip.animate({
                    opacity:0
                }, opts.duration, opts.easing, function(){
                    $(this).css({
                        zIndex:0,
                        display:'none'
                    })
                    opts.callbackOff();
                });
            }

        });
    }
    $.fn.dreamyTip.defaults = {
        fade:  0.9,
        duration: 'medium',
        easing: 'swing',
        closeButton: true,
        insertCSS: true,
        callbackOn: function(){},
        callbackOff: function(){}
    }
})(jQuery);
