(function($) {

    $.fn.rotarImagenes = function(opciones) {
        return this.each(function () {
            var $self = $(this);
            var configuracion = $.extend({}, $.fn.rotarImagenes.predeterminados, opciones);
            var $contenedorImagenes = $("#"+configuracion.imagenes +"", $(this));
            var $elementoDescripcion = $("#" +configuracion.descripcion + "", $(this));
            var $elementoAnterior = $("#" +configuracion.anterior + "", $(this));
            var $elementoSiguiente = $("#" +configuracion.siguiente + "", $(this));

            if(!$contenedorImagenes) return;

            var $imagenes = $("div", $contenedorImagenes);

            configuracion.totalImagenes = $imagenes.length;

            $imagenes.each(function(i) {

                var $actual = $(this);
                if(i > 0) $actual.hide();
                $actual.css("z-index", 10 +i);
                $actual.css("position", "absolute");
            });

            $self.oneTime(configuracion.intervalo, "cambio", function() {
                $elementoSiguiente.click();
            });

            $elementoAnterior.click(function() {
                if (configuracion.imagenActual >= 0) {

                    $self.stopTime("cambio");
                    var $imagenactual = $($imagenes[configuracion.imagenActual]);

                    $imagenactual.css("z-index", 10);
                    $imagenactual.fadeOut(configuracion.duracionFade);

                    $elementoDescripcion.empty();

                    configuracion.imagenActual = configuracion.imagenActual -1;

                    if (configuracion.imagenActual < 0 ) configuracion.imagenActual = configuracion.totalImagenes -1;

                    $imagenactual = $($imagenes[configuracion.imagenActual]);

                    //alert($imagenactual.attr("title"));
                    $elementoDescripcion.append("<p>" +$("img",$imagenactual).attr("title") +"</p>");
                    $imagenactual.css("z-index", 11);
                    $imagenactual.fadeIn(configuracion.duracionFade);

                    $self.oneTime(configuracion.intervalo, "cambio", function() {
                        $elementoSiguiente.click();
                    });
                }
            });

            $elementoSiguiente.click(function () {
                if (configuracion.imagenActual >= 0) {

                    $self.stopTime("cambio");
                    var $imagenactual = $($imagenes[configuracion.imagenActual]);

                    $imagenactual.css("z-index", 10);
                    $imagenactual.fadeOut(configuracion.duracionFade);

                    $elementoDescripcion.empty();

                    configuracion.imagenActual = (configuracion.imagenActual +1) % configuracion.totalImagenes;


                    $imagenactual = $($imagenes[configuracion.imagenActual]);

                    //alert($imagenactual.attr("title"));
                    $elementoDescripcion.append("<p>" +$("img",$imagenactual).attr("title") +"</p>");
                    $imagenactual.css("z-index", 11);
                    $imagenactual.fadeIn(configuracion.duracionFade);

                    $self.oneTime(configuracion.intervalo, "cambio", function() {
                        $elementoSiguiente.click();
                    });
                }
            });
        });
    }

    $.fn.rotarImagenes.predeterminados = {
        imagenes: "imagenes",
        descripcion: "img_descripcion",
        anterior: "img_anterior",
        siguiente: "img_siguiente",
        intervalo: 6000,
        duracionFade: 1000,
        totalImagenes: 0,
        imagenActual: 0
    }

})(jQuery);

$().ready(function() {
   $("#contenedor_imagenes").rotarImagenes({});
})
