(function($) {

    // Objet contenant les options par défaut
    $.AltBoxPlugin = {

        defaults: {
            attr: 'alt'
        }

    };

    // On ajoute notre plugin à jQuery
    $.fn.extend({

        // Fonction principale de notre plugin
        AltBoxPlugin: function(config) {

            // On fusionne les options par defaut avec les options de l'utilisateur
            var config = $.extend({}, $.AltBoxPlugin.defaults, config);
            // $(this) fait référence à l'objet sur lequel on applique notre plugin
            var $this = $(this);

            $this.each(function() {

                $(this).hover(
					function(e) {

					    // On recupère le texte contenu dans l'attribut defini dans les options
					    var data = $(this).attr(config.attr);
					    if (data != '') {
					        $(this).css("cursor", "help");
					        $(this).attr('title', "");
					        var box = '<div id="AltBox">' + data + '</div>';
					        $('body').append(box);
					        $('#AltBox').css('left', e.pageX + 20).css('top', e.pageY - 5);
					    }


					},
					function() {

					    $('#AltBox').remove();

					}
				);

                $(this).mousemove(function(e) {

                    $('#AltBox').css('left', e.pageX + 20).css('top', e.pageY - 5);

                });

            });


            // On retourne this afin de pouvoir appler d'autres fonctions en chaine après notre plugin
            // Exemple : $('#some_id').show().AltBoxPlugin().hide();
            return this;

        }

    });

})(jQuery);
