/* Sticky Tooltip script (v1.0)
* Created: Nov 25th, 2009. This notice must stay intact for usage 
* Author: Dynamic Drive at http://www.dynamicdrive.com/
* Visit http://www.dynamicdrive.com/ for full source code
*/

(function($) {                                          // Compliant with jquery.noConflict()
    $.fn.YTC_Tooltip_K2_Comment = function(o) {    
        
       o = $.extend({
           targetElementSelector: null,
           tooltipcontainer: null,
           tooltipHeight: null,
           tooltipWidth: null,
		   tooltipTop: null
       }, o || {});

    var stickytooltip={
        tooltipoffsets: [o.tooltipWidth, o.tooltipHeight], //additional x and y offset from mouse cursor for tooltips
        fadeinspeed: 200, //duration of fade effect in milliseconds
        rightclickstick: true, //sticky tooltip when user right clicks over the triggering element (apart from pressing "s" key) ?
        stickybordercolors: ["black", "darkred"], //border color of tooltip depending on sticky state
        stickynotice1: ["Press \"s\"", "or right click", "to sticky box"], //customize tooltip status message
        stickynotice2: "Click outside this box to hide it", //customize tooltip status message
        
        //***** NO NEED TO EDIT BEYOND HERE

        isdocked: false,

        positiontooltip:function($, $tooltip, e, etop, eleft){
            var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1];
            var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(); 
            //x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(stickytooltip.tooltipoffsets[0]*2) : x
            //y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
			 etop -= tiph;
            $tooltip.css({left:eleft, top:etop})
        },
        
        showbox:function($, $tooltip, e, etop, eleft){
            $tooltip.fadeIn(this.fadeinspeed)
            this.positiontooltip($, $tooltip, e, etop, eleft)
        },

        hidebox:function($, $tooltip){
            if (!this.isdocked){
                $tooltip.stop(false, true).hide()
                $tooltip.css({borderColor:'black'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[0]}).html(this.stickynotice1)
            }
        },

        docktooltip:function($, $tooltip, e){
            this.isdocked=true
            $tooltip.css({borderColor:'darkred'}).find('.stickystatus:eq(0)').css({background:this.stickybordercolors[1]}).html(this.stickynotice2)
        },


        init:function(targetselector, tipid){        
            $(document).ready(function($){
                var $targets=$(targetselector)
               // var $tooltip=$('#'+tipid).insertBefore($targets)
                var $tooltip=$('#'+tipid).appendTo(document.body)
                if ($targets.length==0)
                    return
                var $alltips=$tooltip.find('div.tooltip_theme3')
               // alert($alltips);
                if (!stickytooltip.rightclickstick)
                    stickytooltip.stickynotice1[1]=''
                stickytooltip.stickynotice1=stickytooltip.stickynotice1.join(' ')
                stickytooltip.hidebox($, $tooltip)
                $targets.bind('mouseenter', function(e){
                    //$alltips.hide().filter('#'+$(this).attr('data-tooltip')).show()
                    $('.tooltip_theme3').hide();
                    stickytooltip.showbox($, $tooltip, e, Math.round($(this).offset().top), Math.round($(this).offset().left))
                   
                    
                })
                $targets.bind('mouseleave', function(e){
                 //   stickytooltip.hidebox($, $tooltip)
                    setTimeout(function(){
                          if(!$tooltip.enter) {
                             stickytooltip.hidebox($, $tooltip)
                          }
                    }, 500
                    )
                })
                $targets.bind('mousemove', function(e){
                  //  if (!stickytooltip.isdocked){
                   //     stickytooltip.positiontooltip($, $tooltip, e)
                   // }
                })
                $tooltip.bind("mouseenter", function(){
                    //stickytooltip.hidebox($, $tooltip)
                     $tooltip.enter = true;
                })
                $tooltip.bind("mouseleave", function(){
                     stickytooltip.hidebox($, $tooltip)
                     $tooltip.enter = false;
                })
                $tooltip.bind("click", function(e){
                    e.stopPropagation()
                })
                $(this).bind("click", function(e){
                    if (e.button==0){
                        stickytooltip.isdocked=false
                        stickytooltip.hidebox($, $tooltip)
                    }
                })
                $(this).bind("contextmenu", function(e){
                    if (stickytooltip.rightclickstick && $(e.target).parents().andSelf().filter(targetselector).length==1){ //if oncontextmenu over a target element
                        stickytooltip.docktooltip($, $tooltip, e)
                        return false
                    }
                })
                $(this).bind('keypress', function(e){
                    var keyunicode=e.charCode || e.keyCode
                    if (keyunicode==115){ //if "s" key was pressed
                        stickytooltip.docktooltip($, $tooltip, e)
                    }
                })
            }) //end dom ready
        }
    }
    stickytooltip.init(o.targetElementSelector, o.tooltipcontainer);
};
})($jYtc);



