(function(){

    function Diashow( slideData, container ) {
        var self = {};
        function init( ) {
            self.index = 1;
            self.max = slideData.length;
            self.images = dojo.map( slideData, self.generateImage );
            self.currentImage = self.images[ 0 ];
            dojo.style( self.currentImage, 'opacity', 1 );

	    dojo.style( container, 'display', 'block' );
            dojo.subscribe( 'step', self.step );
            self.step( );
            return self;
        }
        self.step = function( ) {
            function doIt( ) {
                if( self.index == self.max ) {
                    self.index = 0;
                } else {
                    self.index += 1;
                }
                dojo.animateProperty( {
                    node: self.currentImage,
                    properties: {
                        opacity: {
                            start: 1,
                            end: 0
                        }
                    },
                    duration: 800
                } ).play( );
                self.currentImage = self.images[ self.index ];
                var anim = dojo.animateProperty( {
                    node: self.currentImage,
                    properties: {
                        opacity: {
                            start: 0,
                            end: 1
                        }
                    },
                    duration: 800
                } ).play( );
                dojo.connect( anim, 'onEnd', function( ) {
                    dojo.publish( 'step' );
                } );
            }
            setTimeout( doIt, 5000 );
        };
        self.generateImage = function( data ) {
            var src = data[ 0 ];
            var original = data[ 1 ];
            var title = data[ 2 ];
	    var img = dojo._toDom(
		'<img src="' + src + '" title="' + title + '" style="position: absolute; display: block; top: 0; left: 0;" />'
	    );
	    dojo.style( img, 'opacity', 0 );
            dojo.connect( img, 'click', function( ) {
                location.href = original;
            } );
            dojo.place( img, container );
            return img;
        };
        return init( );
    }

    dojo.addOnLoad( function( ) {
        if( mySlideData && dojo.byId( 'mySlideshow' ) ) {
            Diashow( mySlideData, dojo.byId( 'mySlideshow' ) );
        }
    } );

})();
