$.fn.easycarousel = function(options){
    // valores por defecto
    var defaults = {
        interval: 6,
        activeclass: "active",
        nav: "#carousel"
    };
    // merge de los valores por defecto y las opciones
    var options = $.extend(defaults, options);
    var obj_selector = this.selector;
    
    // recuperamos todos los elementos de navegación del carrusel
    var nav_els = $(options.nav + " a");
    
    var photo_container = document.createElement("div");
    var elem;
    var cycle;
    var carousel_txt = $(options.parent +' '+ options.text);
    
    nav_els.each(function(){
        elem = document.createElement("img");
        elem.src = "" + $(this).attr("href") + "";
        elem.alt = this.title;
        $(photo_container).append(elem);
    });
    // borramos el contenido por defecto
    $(this).html("");
    // inyectamos las imágenes
    $(this).append(photo_container);
    // ocultamos todas las imágenes menos la primera
    $(obj_selector + " img:not(:first)").hide();
    carousel_txt.not(':first').hide();
    // ponemos activo el primer link
    $(options.nav + " a:first").addClass(options.activeclass);
    
    // asignamos los clicks
    $(nav_els).click(function(e){
        e.preventDefault();
        changeimage(this);
        clearInterval(cycle);
        cycle = setInterval(jump, (options.interval * 1000));
        var posi = $(nav_els).index(this);
        carousel_txt
          .hide()
          .eq(posi).fadeIn();
        
    });
    
    // logica de salto
    var jump = function(){
        var next_elem = $(options.nav + " a.active").parent().next().find("a");
        if(next_elem.length == 0) var next_elem = $(options.nav + " a:first");
        changeimage(next_elem);
        var pos = $(options.nav+' li a').index(next_elem);
        carousel_txt
          .hide()
          .eq(pos).fadeIn();
    }
    cycle = setInterval(jump, (options.interval * 1000));
    
    // función que cambia la imagen
    var changeimage = function(obj){
        var href= $(obj).attr("href");
        $(options.nav + " a").removeClass(options.activeclass);
        $(obj).addClass(options.activeclass);
        $(obj_selector + " img:not([src$='" + href +"'])").fadeOut();
        $(obj_selector + " img[src$='" + href +"']").fadeIn();
    };
}