Ciao ragazzi,
Sto utilizzando questa classe come slideshow di foto..
Il funzionamento è molto semplice si ha un array con dentro i percorsi delle foto.. va faccio vedere meglio
Codice PHP:
<script type="text/javascript" language="Javascript">
var 
images = new Array();
var 
link = new Array();
images[0] = "http://lifedraft.de/images/1.jpg"
images[1] = "http://lifedraft.de/images/3.jpg"

link[0] = "http://www.sito.it"
link[1] = "http://www.sito2.it"


Event.observe(window"load", function() {
    new 
Widget.Fader("defaultDemo"images,{
        
fadeInDuration1.0,
        
fadeOutDuration0.5,
        
displayDuration2.0
}, link
    
);
})
</script> 
il tutto aggisce semplicemente
su
Codice PHP:
[img]miafoto.jpg[/img
Adesso la cosa che vorrei fare è di riuscire a passare oltre il percorso delle immagini anche altri valori com per esempio link .

Codice PHP:
[url="link_di_mia_foto"][img]miafoto.jpg[/img][/url

la classe è questa
Codice PHP:
Widget.Fader = Class.create(/** @scope Widget.Fader **/{
    
initialize: function(img, list, options) {
        
this.img = $(img);
        
this.list = list;

        
/**
         * The default options object.
         * @class
         * @param {string} [id] The id used as queue scope. (default: img.id)
         * @param {float} [fadeInDuration] The time in seconds of the fade in. (default: 2.5)
         * @param {float} [fadeOutDuration] The time in seconds of the fade out. (default: 1.5)
         * @param {float} [displayDuration] The time in seconds that the image is not faded out after being faded in. (default: 2.5)
         * @param {bool} [autoSize] Set true if the image should be sized to it's container. Maintains aspect ratio. (default: false)
         * @param {bool} [autoStart] If false the Blender will not start until Blender#start is called. (default: true)
         * @param {object} [attributes] An associative array of attributes given to the image. (default: {})
         * @param {string} [dir] The directory that all images reside in. Used as a prefix for the image src. (default: null)
         * @param {function} [beforeFade] A function that is called before the image is faded. 2 parameters are passed: 1. the image; 2. a boolean indicating if the image is being faded in (true) or out (false) (default: null)
         * @param {int} [startIndex] The index of the first new image to be shown. (default: 0)
         * @param {function} [builder] The function called to build the items. (default: Widget.Fader.imageBuilder)
         */
        
this.options Object.extend({
            
idthis.img.id,
            
fadeInDuration2.5,
            
fadeOutDuration1.5,
            
displayDuration2.5,
            
autoSizefalse,
            
autoStarttrue,
            
attributes: {},
            
dir"",
            
beforeFadenull,
            
startIndex0,
            
builderWidget.Fader.imageBuilder
        
}, options || {});
        
this.options.attributes["id"] = this.options.id;

        
this.index this.options.startIndex;
        
this.container = $(this.img.parentNode);
        
this.loadedObserver this.loaded.bind(this);
        
this.fadeInObserver this.fadeIn.bind(this);
        
this.nextObserver this.next.bind(this);

        if(
this.options.autoStart) {
            
setTimeout(this.start.bind(this), this.options.displayDuration 1000);
        }
    },
    
/**
     * Starts the fading if the autoStart option was set to false or after a call to stop.
     * @function
     */
    
start: function() {
        
this.stopped false;
        
this.next();
    },
    
/**
     * Stops the fading and sets the opacity of the current image to 100%.
     * @function
     */
    
stop: function() {
        
this.stopped true;
        try { 
clearTimeout(this.timeout); } catch(ex) { }
        try { 
Effect.Queues.get(this.options.id).each(function(effect) { effect.cancel() }) } catch(ex) { }
        if(
this.oldImg) {
            
this.img this.oldImg;
            --
this.index;
        }
        
Element.setOpacity(this.img1);
    },
    
/**
     * Loads the next image in list
     * @private
     * @function
     */
    
next: function() {
        
this.oldImg this.img;
        if(
this.stopped || this.list.length == 0) {
            return;
        }
        ++
this.index;
        if(
this.index >= this.list.length) {
            
this.index 0;
        }
        
/*this.img = new Element("img", this.options.attributes);
        Event.observe(this.img, "load", this.loadedObserver);
        this.img.src = this.options.dir + this.list[this.index];*/
        
this.img this.options.builder(thisthis.list[this.index], this.loadedObserver);

    },
    
/**
     * Event listener for image loaded
     * @private
     * @function
     */
    
loaded: function() {
        
Event.stopObserving(this.img"load"this.loadedObserver);
        if(
typeof this.options.beforeFade == "function") {
            
this.options.beforeFade(this.oldImgfalse);
        }
        new 
Effect.Opacity(this.oldImg, { durationthis.options.fadeOutDurationfrom1.0to0.0queue: { scopethis.options.id } });
        
this.timeout setTimeout(this.fadeInObserverthis.options.fadeOutDuration 1000);
    },
    
/**
     * Event listener for fadeIn
     * @private
     * @function
     */
    
fadeIn: function() {
        if(
typeof this.options.beforeFade == "function") {
            
this.options.beforeFade(this.imgtrue);
        }
        
this.img.id this.id;
        
Element.setOpacity(this.img0);
        if(
this.options.autoSize) {
            
this.resize(this.img);
        }
        
this.container.replaceChild(this.imgthis.oldImg);
        
this.oldImg null;
        new 
Effect.Opacity(this.img, { durationthis.options.fadeInDurationfrom0.0to1.0queue: { scopethis.options.id } });
        
this.timeout setTimeout(this.nextObserver, (this.options.fadeInDuration this.options.displayDuration) * 1000);
    },
    
/**
     * Resize the image to the container while maintaining aspect ratio
     * @private
     * @function
     */
    
resize: function(img) {
        var 
dim this.container.getDimensions();
        
dim.width -= parseInt(this.container.getStyle("padding-left")) +
            
parseInt(this.container.getStyle("padding-right")) +
            
parseInt(this.container.getStyle("border-left-width")) +
            
parseInt(this.container.getStyle("border-right-width"));
        
dim.height -= parseInt(this.container.getStyle("padding-top")) +
            
parseInt(this.container.getStyle("padding-bottom")) +
            
parseInt(this.container.getStyle("border-top-width")) +
            
parseInt(this.container.getStyle("border-bottom-width"));

        var 
dw dim.width img.width;
        var 
dh dim.height img.height;
        var 
w1 img.width dh;
        var 
h1 img.height dw;

        if(
dw dh) {
            
img.width w1;
            
img.height dim.height;
        } else {
            
img.width dim.width;
            
img.height h1;
        }
    }
});

/**
 * Builds an image item out the item passed by fader.
 * This is the default builder.
 * @function
 * @param {object} fader The calling Widget.Fader
 * @param {object} item The current item
 * @param {object} loaded A callback bound to the fader for when the item has loaded.
 **/
Widget.Fader.imageBuilder = function(faderitemloaded) {
    var 
img = new Element("img"fader.options.attributes);
    
img.observe("load"loaded);
    
img.alt item;
    
img.src fader.options.dir item;
    return 
img;
};

/**
 * Builds div containing the text from the item passed by fader.
 * The Widget.Fader.options.dir is ignored.
 * @function
 * @param {object} fader The calling Widget.Fader
 * @param {object} item The current item
 * @param {object} loaded A callback bound to the fader for when the item has loaded.
 **/
Widget.Fader.textBuilder = function(faderitemloaded) {
    var 
div = new Element("div"fader.options.attributes).update(item);
    
loaded.defer();
    return 
div;
};

/**
 * @class
 * @deprecated
 **/
var Fader Widget.Fader
Secondo voi è troppo complesso? e mi conviene cercare altro?
Il problema è che utilizzo la libreria scriptaculous ormai.. ma nn ho trovato nulla di semplice come questo.