/*
 * Plugin jQuery que centraliza imagens na vertical e/ou horizontal dentro de seu primeiro ancestral com display:block.
 * options: {
 *      vertical: true,     //Centralizar na vertical (default: true)
 *      horizontal: false,  //Centralizar na horizontal (default: false)
 *      classComplete: null, //Classe a ser adicionada a imagem após essa ser centralizada (default: null)
 *      callbackComplete: null //Função de callback chamada após a imagem ser centralizada (default: null)
 * }
 * @date 14/07/2010
 * @author André Garlini
 */
(function($) {
    jQuery.fn.centralizaImg = function(options) {
        var $this = this;

        var settings = jQuery.extend({
                vertical: true,
                horizontal: false,
                classComplete: null,
                callbackComplete: null
            }, options);

        $this.each(function(){

            var $img = $(this);
            var img = this;
            var $parent = $img.parent();
            while ($parent && $parent.css('display') != 'block'){
                $parent = $parent.parent();
            }

            function centraliza(){
                if (img.complete){
                    if (settings.vertical){
                        var heightParent = $parent.height();
                        var heightImg = img.height;
                        if ((heightParent - heightImg) > 0){
                            img.vspace = ((heightParent - heightImg) / 2);
                        }
                    }
                    if (settings.horizontal){
                        var widthParent = $parent.width();
                        var widthImg = img.width;
                        if ((widthParent - widthImg) > 0){
                            img.hspace = ((widthParent - widthImg) / 2);
                        }
                    }
                    if (settings.classComplete){
                        $img.addClass(settings.classComplete);
                    }
                    if (settings.callbackComplete){
                        settings.callbackComplete.call(img);
                    }
                } else {
                    setTimeout(centraliza, 1000);
                }
            }

            if  ($parent && $parent.css('display') == 'block' && img.nodeName.toString().toUpperCase() == 'IMG'){
                centraliza();
            }
        });

        return this;

    }
})(jQuery);
