/*
* Font Resizer
* Auteur Julien Léger - AdFab
* 
* Développé pour la librairie jquery
* http://www.jquery.com
* 
*/

/*
* Examples d'utilisation :
* 	<a href="#" id="reduce-text-size">A-</a> (bouton pour réduire la taille du texte)
*  <a href="#" id="increase-text-size">A+</a> (bouton pour augmenter la taille du texte)
*  
*  <div class="text-resizable">Lorem ipsum...</div> (contenu dont la taille de la police pourra être modifiée)
*/

(function($) {

    $.fn.fontResizer = function(options) {

        // Paramètres par défaut

        var defaults = {
            decreaseId: "#reduce-text-size",
            increaseId: "#increase-text-size",
            textResizableClass: ".text-resizable",
            step: 0.5,
            cpt: 0,
            addRemove: true
        };

        // Mélange des paramètres fournis et des paramètres par défaut
        var opts = $.extend(defaults, options);

        function initialize() {


            /*
            * Fonction réduisant la taille de la police
            * des éléments ayant comme class textResizableClass
            */
            $(opts.decreaseId).click(function() {
                if (opts.cpt <= -1)
                    return;
                $('*', opts.textResizableClass).each(function() {

                    if ($(this).children().length === 0) {
                        $(this).css('font-size', (parseFloat($(this).css('font-size')) - opts.step))
                        $(this).addClass("retraicirPere");
                    }
                });

                $('.retraicirPere').each(function() {
                    $(this).parent().css('font-size', (parseFloat($(this).css('font-size'))));
                    $(this).parent().addClass("retraicirGrandPere");
                });

                $('.retraicirGrandPere').each(function() {
                    $(this).parent().css('font-size', (parseFloat($(this).css('font-size'))));
                });

                opts.addRemove = false;
                opts.cpt--;
            });


            /*
            * Fonction augmentant la taille de la police
            * des éléments ayant comme class textResizableClass
            */
            $(opts.increaseId).click(function() {
                var currentSize = $(this).css('font-size');
                if (opts.cpt >= 1)
                    return;


                $('*', opts.textResizableClass).each(function() {
                    if (($(this).children().length === 0)) {

                        $(this).css('font-size', (parseFloat($(this).css('font-size')) + opts.step))
                        $(this).addClass("AgrandirPere");
                    }
                });

                $('.AgrandirPere').each(function() {
                    $(this).parent().css('font-size', (parseFloat($(this).css('font-size'))));
                    $(this).parent().addClass("AgrandirGrandPere");
                });

                $('.AgrandirGrandPere').each(function() {
                    $(this).parent().css('font-size', (parseFloat($(this).css('font-size'))));
                });



                opts.addRemove = true;
                opts.cpt++;
            });
        }

        function initializeParentsPlus(element) {

            if (($(element).parent().attr('pass') !== 'oui') || opts.addRemove) {
                if (!$(element).parent().hasClass("text-resizable") && $(element).parent().get(0).tagName != "TR") {

                    $(element).parent().css('font-size', (parseFloat($(element).css('font-size'))));
                    $(element).parent().attr('pass', 'oui');
                    //return initializeParentsPlus($(element).parent());

                }
                else
                    return;
            }

        }


        function initializeParentsMoins(element) {
            if (($(element).parent().attr('pass') !== 'non') || !opts.addRemove) {
                if (!$(element).parent().hasClass("text-resizable") && $(element).parent().get(0).tagName != "TR") {

                    $(element).parent().css('font-size', (parseFloat($(element).css('font-size'))));
                    $(element).parent().attr('pass', 'non');
                    return initializeParentsMoins($(element).parent());
                }
                else
                    return;
            }

        }

        return initialize();
    }



})(jQuery);
