jQuery.fn.ritsToolTip = function(options){
    
    var target = this;
    var tooltip;
    
    var title = null;
    
    var top;
    var left;
    
    var settings = jQuery.extend({
       'color':'#000000',
       'display':'none',
       'font-size':'12px',
       'position':'absolute',
       'width':'auto',
       'z-index':'500',
       'active': true    
    }, options);
    
    
    jQuery(target).addClass('ritstooltip');
    
    this.enter = function(){
        
        if(tooltip != null) 
            return;
            
        
        if(!title){
            title = jQuery(target).attr('title');
            jQuery(target).removeAttr('title');
        }
            
        tooltip = jQuery('<div class="tooltip"></div>');
        
        tooltip.append(jQuery('<div class="tooltip-border-left">&nbsp;</div>'));
        tooltip.append(jQuery('<div class="tooltip-text">'+title+'</div>'));
        tooltip.append(jQuery('<div class="tooltip-border-right">&nbsp;</div>'));
        
        
        
        jQuery('body').append(tooltip);
         
        var offset = jQuery(target).offset();
        var width = 0;
        
        if(jQuery(target).css('width') != 'auto')
            width = parseInt(jQuery(target).css('width').replace('px', ''));
        
        var absoluteCenterX = offset.left + width / 2;
        
        top = offset.top - 38;
        left =  absoluteCenterX - 18;
        
        tooltip.css('top', top - 15); 
        tooltip.css('left', left);
        tooltip.fadeTo(0, 0);
        tooltip.css('width', '300px');  
    }
    var enter = this.enter;
    
    this.exit = function(){
        jQuery(tooltip).remove();
        tooltip = null;
    }
    var exit = this.exit;
    
    this.open = function(){
        enter();
        jQuery(tooltip).animate({'opacity': 1, 'top':'+=15px'},{complete: close});
    }
    var open = this.open;
    
    this.close = function(){
        jQuery(tooltip).animate({'opacity': 0,'top':'-=15px'},{duration: 100,complete: exit}); 
    }
    var close = this.close;
    
    var hover = false;
    var timeout;   
    
    this.active = function(jNode){
        jNode.hover(function(){
           hover = true;
           clearTimeout(timeout);
           timeout = setTimeout(function(){
               if(hover){
                    enter();
                    jQuery(tooltip).animate({'opacity': 1, 'top':'+=15px'});
               } 
           }, 500);
            
        }, function(){
           clearTimeout(timeout);
           hover = false;
           jQuery(tooltip).animate({'opacity': 0,'top':'-=15px'},{duration: 100,complete: exit}); 
        });
    }
    var active = this.active;
    

    
    this.each(function(){ 
        var jNode = jQuery(this); 
        
       if(settings.active){
            active(jNode);
       }
    });
    
    return (this); 
    
}
