(function ($) {
    $(document).ready(function(){
        $('body').append('<div id="myToolTipCaja">' +
            '<div class="myToolTipCabecera"></div>' +
            '<div class="myToolTipContenido" id="myToolTipContenido" ></div>' +
            '<div class="myToolTipPie"></div>' +
        '</div>');

        $.rgt.set('ToolTipModo', $.rgt.get('ToolTipModo', true));

        $.rgt.set('ToolTipCaja', $('#myToolTipCaja')
            .css('position', 'absolute')
            .css('display', 'none')
            .css('cursor', 'pointer')
        );
        $.rgt.set('ToolTipContenido', $('#myToolTipContenido'));


    
        $('.tip').each(function (e, elemento){
            $(elemento).createToolTip();
        });
    });

    $.extend($.fn, {
        createToolTip : function (config) {
            config = config || $.decode(this.attr('rel'));

            var textTip = this.html();
            var desplazamiento = config.desplazamiento;
            var className = config.className;
            var cajaTip = $.rgt.get('ToolTipCaja');
            var contTip = $.rgt.get('ToolTipContenido');
            var rgto = ('ToolTipModo'+className);
            
            $.rgt.set(rgto, $.rgt.get(rgto, true));

            this.parent()
                .bind('mousemove', function () {
                    //if ($.rgt.get('ToolTipModo')) {
                    if ($.rgt.get(rgto)) {
                        var x, y;
                        if (jQuery.browser.msie) {
                            x = event.x; y = event.y;
                            if (window.pageYOffset) {
                                y = (y + window.pageYOffset);
                                x = (x + window.pageXOffset);
                            } else {
                                y = (y + Math.max(document.body.scrollTop, document.documentElement.scrollTop));
                                x = (x + Math.max(document.body.scrollLeft, document.documentElement.scrollLeft));
                            }
                        } else {
                            x = arguments[0].pageX;
                            y = arguments[0].pageY;
                        }

                        cajaTip
                            .css('top', (y + 20 ) +'px')
                            .css('left', (x - desplazamiento ) +'px');
                    }
                })
                .bind('mouseover', function () {
                    //if ($.rgt.get('ToolTipModo')) {
                    if ($.rgt.get(rgto)) {
                        contTip.html( textTip )
                        cajaTip
                            //.fadeIn('slow')
                            .css('display', 'block')
                            .addClass(className);
                    }
                })
                .bind('mouseout', function() {
                    cajaTip
                        .css('display', 'none')
                        .removeClass(className);
                });
        }
    });
})(jQuery);