Вход Регистрация
Файл: sys/js/jquery.tiptip.js
Строк: 149
<?php
/*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left 
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function($){
    $.fn.
tipTip = function(options) {
        var 
defaults = { 
            
activation"hover",
            
keepAlivefalse,
            
maxWidth"200px",
            
edgeOffset3,
            
defaultPosition"bottom",
            
delay: -100,
            
fadeIn: -200,
            
fadeOut: -200,
            
attribute"title",
            
contentfalse// HTML or String to fill TipTIp with
              
enter: function(){},
              exit: function(){}
          };
         var 
opts = $.extend(defaultsoptions);
         
         
// Setup tip tip elements and render them to the DOM
         
if($("#tiptip_holder").length <= 0){
             var 
tiptip_holder = $('<div id="tiptip_holder" style="max-width:'opts.maxWidth +';"></div>');
            var 
tiptip_content = $('<div id="tiptip_content"></div>');
            var 
tiptip_arrow = $('<div id="tiptip_arrow"></div>');
            $(
"body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
        } else {
            var 
tiptip_holder = $("#tiptip_holder");
            var 
tiptip_content = $("#tiptip_content");
            var 
tiptip_arrow = $("#tiptip_arrow");
        }
        
        return 
this.each(function(){
            var 
org_elem = $(this);
            if(
opts.content){
                var 
org_title opts.content;
            } else {
                var 
org_title org_elem.attr(opts.attribute);
            }
            if(
org_title != ""){
                if(!
opts.content){
                    
org_elem.removeAttr(opts.attribute); //remove original Attribute
                
}
                var 
timeout false;
                
                if(
opts.activation == "hover"){
                    
org_elem.hover(function(){
                        
active_tiptip();
                    }, function(){
                        if(!
opts.keepAlive){
                            
deactive_tiptip();
                        }
                    });
                    if(
opts.keepAlive){
                        
tiptip_holder.hover(function(){}, function(){
                            
deactive_tiptip();
                        });
                    }
                } else if(
opts.activation == "focus"){
                    
org_elem.focus(function(){
                        
active_tiptip();
                    }).
blur(function(){
                        
deactive_tiptip();
                    });
                } else if(
opts.activation == "click"){
                    
org_elem.click(function(){
                        
active_tiptip();
                        return 
false;
                    }).
hover(function(){},function(){
                        if(!
opts.keepAlive){
                            
deactive_tiptip();
                        }
                    });
                    if(
opts.keepAlive){
                        
tiptip_holder.hover(function(){}, function(){
                            
deactive_tiptip();
                        });
                    }
                }
            
                function 
active_tiptip(){
                    
opts.enter.call(this);
                    
tiptip_content.html(org_title);
                    
tiptip_holder.hide().removeAttr("class").css("margin","0");
                    
tiptip_arrow.removeAttr("style");
                    
                    var 
top parseInt(org_elem.offset()['top']);
                    var 
left parseInt(org_elem.offset()['left']);
                    var 
org_width parseInt(org_elem.outerWidth());
                    var 
org_height parseInt(org_elem.outerHeight());
                    var 
tip_w tiptip_holder.outerWidth();
                    var 
tip_h tiptip_holder.outerHeight();
                    var 
w_compare Math.round((org_width tip_w) / 2);
                    var 
h_compare Math.round((org_height tip_h) / 2);
                    var 
marg_left Math.round(left w_compare);
                    var 
marg_top Math.round(top org_height opts.edgeOffset);
                    var 
t_class "";
                    var 
arrow_top "";
                    var 
arrow_left Math.round(tip_w 12) / 2;

                    if(
opts.defaultPosition == "bottom"){
                        
t_class "_bottom";
                       } else if(
opts.defaultPosition == "top"){ 
                           
t_class "_top";
                       } else if(
opts.defaultPosition == "left"){
                           
t_class "_left";
                       } else if(
opts.defaultPosition == "right"){
                           
t_class "_right";
                       }
                    
                    var 
right_compare = (w_compare left) < parseInt($(window).scrollLeft());
                    var 
left_compare = (tip_w left) > parseInt($(window).width());
                    
                    if((
right_compare && w_compare 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w opts.edgeOffset 5))){
                        
t_class "_right";
                        
arrow_top Math.round(tip_h 13) / 2;
                        
arrow_left = -12;
                        
marg_left Math.round(left org_width opts.edgeOffset);
                        
marg_top Math.round(top h_compare);
                    } else if((
left_compare && w_compare 0) || (t_class == "_left" && !right_compare)){
                        
t_class "_left";
                        
arrow_top Math.round(tip_h 13) / 2;
                        
arrow_left =  Math.round(tip_w);
                        
marg_left Math.round(left - (tip_w opts.edgeOffset 5));
                        
marg_top Math.round(top h_compare);
                    }

                    var 
top_compare = (top org_height opts.edgeOffset tip_h 8) > parseInt($(window).height() + $(window).scrollTop());
                    var 
bottom_compare = ((top org_height) - (opts.edgeOffset tip_h 8)) < 0;
                    
                    if(
top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
                        if(
t_class == "_top" || t_class == "_bottom"){
                            
t_class "_top";
                        } else {
                            
t_class t_class+"_top";
                        }
                        
arrow_top tip_h;
                        
marg_top Math.round(top - (tip_h opts.edgeOffset));
                    } else if(
bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
                        if(
t_class == "_top" || t_class == "_bottom"){
                            
t_class "_bottom";
                        } else {
                            
t_class t_class+"_bottom";
                        }
                        
arrow_top = -12;                        
                        
marg_top Math.round(top org_height opts.edgeOffset);
                    }
                
                    if(
t_class == "_right_top" || t_class == "_left_top"){
                        
marg_top marg_top 5;
                    } else if(
t_class == "_right_bottom" || t_class == "_left_bottom"){        
                        
marg_top marg_top 5;
                    }
                    if(
t_class == "_left_top" || t_class == "_left_bottom"){    
                        
marg_left marg_left 5;
                    }
                    
tiptip_arrow.css({"margin-left"arrow_left+"px""margin-top"arrow_top+"px"});
                    
tiptip_holder.css({"margin-left"marg_left+"px""margin-top"marg_top+"px"}).attr("class","tip"+t_class);
                    
                    if (
timeout){ clearTimeout(timeout); }
                    
timeout setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);    
                }
                
                function 
deactive_tiptip(){
                    
opts.exit.call(this);
                    if (
timeout){ clearTimeout(timeout); }
                    
tiptip_holder.fadeOut(opts.fadeOut);
                }
            }                
        });
    }
})(
jQuery);
?>
Онлайн: 1
Реклама