Problem With Slideshow Code - Help!

I am trying to reuse some great code that Todd Domney of whatdoiknow.org wrote. It’s a fading slideshow. I’ve had great results with it so far, though I am having one specific bug that I can’t work out for the life of me.

You can view my site here: http://www.piconeenergy.com/new/

Each page on the site has a slideshow associated with it. I will explain how to view the bug. If you click, for example, Contact Us, a movieclip on the stage is told to goto frame 2, and contact us plays. Eventually we get to a stop frame and the slideshow begins fine. Then, if you click another category, and come back to contact us, or click contact us again, often times the slideshow will no longer fade between images. It stalls on the first image, and then just flashes one image after the next, without cross fading. I’ve been looking at this for a long time, and have NO idea why.

Here’s my code. I have two slideshow layers. On the stop frame, this is the code on a keyframe on one layer:

MovieClip.prototype.alpha = function(vel, to) {
this.vel = vel;
this.to = to;
this.alpha_init = this._alpha;
this.onEnterFrame = function() {
updateAfterEvent();
if (this.to != undefined && this.vel != undefined) {
if (this.to>this.alpha_init) {
if (this._alpha<=100) {
this._alpha += this.vel;
} else {
this.onEnterFrame = null;
}
} else {
if (this._alpha>this.to) {
this._alpha -= this.vel;
} else {
this.onEnterFrame = null;
}
}
} else {
}
};
};

On a keyframe on a layer below it, I have Todd’s code, slightly modified to load my XML file for a given category:

//
/
Crossfading slide show /
/
Author: Todd Dominey /
/
http://whatdoiknow.org /
/
http://domineydesign.com /
/
/

// set random # variables - each must be 0 for first ‘while’ loop below
var randomNum = 0;
var randomNumLast = 0;

// parent container
var container_mc = this.createEmptyMovieClip(“container”,0);
// movie clip containers
container_mc.createEmptyMovieClip(“loader1_mc”,2);
container_mc.createEmptyMovieClip(“loader2_mc”,1);

// preload watcher
var delme = this.createEmptyMovieClip(“watcher_mc”,100);

// load xml
images_xml = new XML();
images_xml.ignoreWhite=true;
images_xml.onLoad = parse;
images_xml.load(“manufacturers.xml”);

function parse(success) {
if (success) {
imageArray = new Array();
var root = this.firstChild;
_global.numPause = Number(this.firstChild.attributes.timer * 1000);
_global.order = this.firstChild.attributes.order;
_global.looping = this.firstChild.attributes.looping;
_global.fadetime = Number(this.firstChild.attributes.fadetime);
_global.xpos = Number(this.firstChild.attributes.xpos);
_global.ypos = Number(this.firstChild.attributes.ypos);
var imageNode = root.lastChild;
var s=0;
while (imageNode.nodeName != null) {
imageData = new Object;
imageData.path = imageNode.attributes.path;
imageArray[s]=imageData;
imageNode = imageNode.previousSibling;
s++;
}
// place parent container
container_mc._x = _global.xpos;
container_mc._y = _global.ypos;
// parse array
imageArray.reverse();
imageGen(imageArray);
} else {
trace(‘problem’);
}
}

// depth swapping
function swapPlace(clip,num) {
eval(clip).swapDepths(eval(“container_mc.loader”+num+"_mc"));
}

function loadImages(data,num) {
if (i==undefined || i == 2) {
i=2;
createLoader(i,data,num);
i=1;
} else if (i==1) {
createLoader(i,data,num);
i=2;
}
}
function createLoader(i,data,num) {
thisLoader=eval(“container_mc.loader”+i+"_mc");
thisLoader._alpha=0;
thisLoader.loadMovie(data[num].path);
watcher_mc.onEnterFrame=function () {
var picLoaded = thisLoader.getBytesLoaded();
var picBytes = thisLoader.getBytesTotal();
if (isNaN(picBytes) || picBytes < 4) {
return;
}
if (picLoaded / picBytes >= 1) {
swapPlace(“container_mc.loader2_mc”,1);
thisLoader.alpha(_global.fadeTime,100);
timerInterval = setInterval(imageGen,_global.numPause,data);
delete this.onEnterFrame;
}
}
}
function imageGen(data) {
// random, or sequential?
if (_global.order==“random”) {
// choose random # between 0 and total number of images
while (randomNum == randomNumLast) {
randomNum = Math.floor(Math.random() * data.length);
trace(randomNum);
}
loadImages(data,randomNum);
randomNumLast = randomNum;
} else if (_global.order==“sequential”) {
// start at 0, increment to total number of images, then drop back to zero when done
if (p==undefined || p==data.length && _global.looping==“yes”) { p=0; } else { break; }
loadImages(data,p);
p++;
} else {
trace (“order attribute in xml isn’t correct - must specify either ‘random’ or ‘sequential’”);
}
clearInterval(timerInterval);
}
stop();

Finally, when the movieclip is hiding itself (when the user clicks another category, I have a frame with this code:

_level0.c_manufacturers.container_mc.removeMovieClip();

Without this line of code, the slideshows won’t play the second time you come back to a category. With it, they play, but don’t crossfade. I’d really appreciate any help, this problem has been bothering me for days.

Thanks very much,

mfrederickson