(function ($) {
  $.fn.tooltip = function (options) {

    var defaults = {
      xOffset: 20,
      yOffset: 10
    },
        settings = $.extend({}, defaults, options);

    this.each(function () {
      var $this = $(this),
          image = this.href,
          caption = this.title;

      if ($this.is('a') && $this.attr('title') !== '') {
        this.title = '';
        $this.hover(function (e) {
          $('body').append('<div id="tooltip"><span id="caption">' + caption + '</span><img src="' + image + '" /></div>');
          $('#tooltip').css({
            left: e.pageX + settings.xOffset,
            top: e.pageY + settings.yOffset
          }).fadeIn(350);
        }, function () {
          $('#tooltip').remove();
        });
      }

      $this.mousemove(function (e) {
        var height = $('#tooltip').height(),
            width = $('#tooltip').width(),
            margin_top = $(window).scrollTop(),
            margin_right = $(window).width(),
            pos_top, pos_left;

        if (margin_right - (settings.xOffset * 2) >= width + e.pageX) {
          pos_left = e.pageX + settings.xOffset;
        } else {
          pos_left = e.pageX - width - settings.xOffset;
        }

        if (margin_top + (settings.yOffset * 2) >= e.pageY - height) {
          pos_top = margin_top + settings.yOffset;
        } else {
          pos_top = e.pageY - height - settings.yOffset;
        }

        $('#tooltip').css({
          left: pos_left,
          top: pos_top
        });
        // $('#tooltip').css({
        //   left:  e.pageX + settings.xOffset,
        //   top:   e.pageY + settings.yOffset
        // });
      });
    });
    return this;
  };
})(jQuery);


