(function ($) {
    $.fn.PopUpHelp = function() {
        return this.each(function () {
            var element = $(this);
            var help = $(this).find('.popuphelp_help');

            var isEditingOnTinyMCE = function() {
                if (element.find('input.apply').parent('div:visible').length) {
                    return true;
                }
                return false;
            };

            var handleMouseOver = function(ev) {
                if (isEditingOnTinyMCE()) {
                    hideHelp();
                }
            };

            var handleMouseMove = function(ev) {
                if (isEditingOnTinyMCE()) {
                    hideHelp();
                } else {
                    showHelp(ev);
                }
            };

            var handleMouseLeave = function() {
                hideHelp();
            };

            var hideHelp = function() {
                element.removeClass('popuphelp_hover');
                help.hide();
            };

            var showHelp = function(ev) {
                element.addClass('popuphelp_hover');
                help.css('left', (ev.pageX + 15) + 'px');
                help.css('top', (ev.pageY + 15) + 'px');
                help.show();
            };

            var initMouse = function() {
                element.bind('mousemove.popuphelp', handleMouseMove);
                element.bind('mouseover.popuphelp', handleMouseOver);
                element.bind('mouseleave.popuphelp', handleMouseLeave);
            };

            initMouse();
            $('body').prepend(help);
        });
    };

    $(document).ready(function() {
        $('.popuphelp').PopUpHelp();
    });
})(jQuery);

