/**
 * 
 *  jQuery Tooltip plugin
 *
 *  Copyright (c) 2009 Anderson Koester
 *
 *  Plugin desenvolvido para utilizar nos links do site Portal do Professor
 *
 *
 *  Options:
 *  indexInicial    -   z-index que o elemento antes de acionar a tooltip
 *  indexFinal      -   z-index que o elemento terá durante a execução da tooltip
 *  fadeIn          -   tempo de transição que levará para a tooltip ficar visivel
 *  fadeOut         -   tempo de transição que levará para a tooltip ficar invisível
 *  width           -   define a largura que a tooltip terá
 *  atributo        -   define de onde a mensagem será tirada do elemento, pode ser 'title', 'rel', etc.
 *  maxWidth        -   define a largura máxima que a tooltip poderá ter
 *
 *
 *  Execução:
 *  Para executar o plugin basta seguir o exemplo:
 *  $('.seletor_do_link').tooltip();
 *
 *  Para alterar alguma opção siga o exemplo:
 *  $('.seletor_do_link').tooltip({
 *      fadeIn      :   700,
 *      atributo    :   'rel'
 *  })
 *
 *
 *  @author     -   Anderson Koester
 *  @version    -   0.2 || 19/08/2009
 */


(function($){
    $.fn.tooltip = function(options){


        // Setando opções padrões do plugin
        var settings = {
            indexInicial    :   0, //aplica z-index em que o elemento se encontra antes da ativação da tooltip
            indexFinal      :   100, //aplica z-index no elemento quando a tooltip for ativada
            fadeIn          :   600,
            fadeOut         :   200,
            cursor          :   'pointer',
            width           :   'auto',
            atributo        :   'title',
            maxWidth        :   '50%' //somente funciona para FF2+ e IE7+
        }

        var options = jQuery.extend(settings, options);


        return this.each(function(){

            var obj = jQuery(this);

            // pega o atributo setado do elemento e armazena na variável "msg"
            var msg = obj.attr(options.atributo);

            // Define o cursor
            obj.css('cursor', options.cursor);

            // quando houver a ação de passar o mouse acima do elemento
            obj.hover(
                /**
                 * acrescenta a div com id "tooltip" logo após o link
                 * e limpa o atributo title do mesmo
                 */
                function(){
                    $('#tooltip').remove();
                    obj.after('<div id=\"tooltip\" style=\"display:none\"><div>'+msg+'</div></div>');
                    $('#tooltip').css('width', options.width);
                    $('#tooltip').css('max-width', options.maxWidth);
                    obj.next('#tooltip').fadeIn(options.fadeIn);
                    obj.attr('title', '');
                    // POG para a correção do bug do IE
                    obj.parent().css('z-index', options.indexFinal);
                },
                // esconde e remove a tooltip do html
                // re-acrescenta o title no link
                function(){
                    obj.next('#tooltip').fadeOut(options.fadeOut, function(){
                        $(this).remove();
                        // POG para a correção do bug do IE
                        obj.parent().css('z-index',options.indexInicial);
                    });
                    obj.attr('title', msg);
                }
            )
            /**
             * Função para mover a tooltip conforme a posição do mouse enquanto o mesmo estiver sobre o elemento
             */
            obj.mousemove(function(e){
                var topo    = obj.offset().top;
                var esq     = obj.offset().left;
                var orienta = screen.width - (screen.width*25)/100;
                // aplica a posição da div "tooltip" com a subtração do ponto Y do mouse com a coordenada Y do elemento menos 5
                $("#tooltip").css("top",((e.pageY - topo - 5)+ "px"));
                if(esq <= orienta){
                    // aplica a posição da div "tooltip" com a subtração do ponto X do mouse com a coordenada X do elemento menos 20
                    $("#tooltip").addClass('esquerda');
                    $("#tooltip").css("left",((e.pageX - esq + 20)+ "px"));
                }else{
                    $("#tooltip").addClass('direita');
                    $("#tooltip").css("left",((e.pageX - esq - (obj.width() * 3.2))+ "px"));
                }
            });
        });
    }
})(jQuery)

