$.fn.slideshow = function ( slides, duration ) {
    duration = duration || 7500;
    var fgImg = this.children( )[1];
    var bgImg = this.children( )[0];
    var caption = this.children( )[2];
    var caption_content = $(caption).children( )[0];
    var slideNo = 1;
    
    var preloads = [];
    
    for ( i in slides ) {
        preloads[i] = new Image( ).src = slides[i].image;
    }
    
    $(caption).animate( {
        marginRight: 0,
        opacity: 1
    }, 750 );
    
    setInterval( function ( ) {
        $(caption).animate( {
            marginRight: -200,
            opacity: 0
        }, 750, function ( ) {            
            if ( !$(fgImg).is( ':hidden' ) ) {
                $(bgImg).attr( 'src', slides[slideNo].image );
                $(fgImg).fadeOut( );
            } else {
                $(fgImg).attr( 'src', slides[slideNo].image );
                $(fgImg).fadeIn( );
            }
            
            $(caption_content).html(  slides[slideNo].caption );
            $(caption).animate( {
                marginRight: 0,
                opacity: 1
            }, 750 );
            
            slideNo = ( slideNo == ( slides.length - 1 ) ) ? 0 : ( slideNo + 1 );
        } );
    }, duration );
};
