PictureViewer Random Play

Hi,

When you use the Autoplay option with pictureviewer the images are displayed in Alfabetic order.

i was wondering if someone could change the code so it will show the images in random order.

// main.js

var currentimg = ''; //Current img

var previmg = ''; //Previous img



function Init(){

LoadImage(1);

}



//Get the extension of the filename

function GetExtensionOfFile(filename){

var spl;

spl = filename.split('.');

return (spl[spl.length-1].toUpperCase());

}

//Is the file a valid image type file.

function FileIsValidImg(filename){

var ext;

ext = GetExtensionOfFile(filename);

return ((ext=='JPG') || (ext=='BMP') || (ext=='PNG') || (ext=='GIF'));

}

//Get the last valid image file in the directory

function GetLastImgInDirectory(){

var path = this.ConvertToValue(this.parameters('PATH').value);

var files = new ActiveXObject("Scripting.FileSystemObject");

var f = files.GetFolder(path);

var fc = new Enumerator(f.files);

var lastimg;

var filen;

for (; !fc.atEnd(); fc.moveNext())

{

//Name of new file

filen = fc.item().Name

if (FileIsValidImg(filen)) //Verify if its a valid image by checking its extension

lastimg = filen;

}

return(lastimg);

}

//load next image in the directory Direction 1 or -1 for next or previous

function LoadImage(direction){

var path = this.ConvertToValue(this.parameters('PATH').value);

var files = new ActiveXObject("Scripting.FileSystemObject");

var f = files.GetFolder(path);

var fc = new Enumerator(f.files);

var firstimg = '';

var newfile = '';

var viewer = this.layers('DispayImg');



for (; !fc.atEnd(); fc.moveNext())

{

//Name of new file

newfile = fc.item().Name

if (FileIsValidImg(newfile)) //Verify if its a valid image by checking its extension

{

if (firstimg == '') // remember the first image

firstimg = newfile;

if (currentimg=='') //First time, image not load yet

{

currentimg = newfile;

viewer.src = path+''+currentimg;

return;

}

else

{

if (newfile == currentimg) //found last image position

{

if (direction > 0) //next

{

currentimg = ''; //get the next file

}

else

{

if ((previmg == currentimg) || (previmg==''))

previmg = GetLastImgInDirectory();

currentimg = previmg;

viewer.src = path+''+currentimg;

return;

}

}

}

previmg = newfile; //Remember the previous img

}

}

//If you reach here then you load the first file again

currentimg = firstimg;

viewer.src = path+''+currentimg;

}



//Prompt the user for the path of the files

function PromptPath(){

var newpath = this.UI.PromptDirectory('Please select a folder with images.');

if (newpath != '')

{

this.parameters('PATH').value = newpath;

this.controls('Imagepath').redraw();

}

}

//Drag and Drop a image file

function DropFile(){

var viewer = this.layers('DispayImg');

var filename = this.GetDroppedFileName();

if (FileIsValidImg(filename))

{

viewer.src = filename;

}

}

//Start the slide show

function StartPlay(){

if (currentimg == '')

LoadImage(1); //Load one image

var pl = this.layers('Play');

var delaytm = this.timers('DELAY');

var delayval = this.parameters('DELAY');

delaytm.Delay = delayval.Value; //four seconds

delaytm.ResetTimer();

pl.down = true;

}



//Stop Play of all the files

function StopPlay(){

var pl = this.layers('Play');

if (pl.down)

{

var delaytm = this.timers('DELAY');

delaytm.StopTimer();

pl.down = false;

}

}



//Set the values

function SetValues(){

if (this.GetChangeToSide() == '1') ///Backside

{

var lyscale = this.layers('Scaleimgchk');

var lyscaleprop = this.layers('Scalepropchk');

var prmscale = this.parameters('SCALE');

var prmscaleprop = this.parameters('SCALEPROP');

lyscale.down = (prmscale.value=='True') //enabled

lyscaleprop.down = (prmscaleprop.value=='True') //enabled

}

if (this.GetChangeToSide() == '0') ///Backside

{ //Set new delay

var ctrldelay = this.controls('Delay');

var paramdelay = this.parameters('DELAY');

paramdelay.value = ctrldelay.value;

if (this.layers('Play').Down) //animation is running update timer

{

var delaytimer = this.timers('DELAY');

delaytimer.Delay = paramdelay.value;

delaytimer.ResetTimer();

}



}

}



//Set the parameter and the property for scaling

function SetScale(){

var lyscale = this.layers('Scaleimgchk');

var prmscale = this.parameters('SCALE');

lyscale.down = !lyscale.down;

prmscale.value = lyscale.down;

var imgdisplay = this.layers('DispayImg');

imgdisplay.Scale = lyscale.down;

}



//Set the parameter and the property for scale proportional

function SetScaleProp(){

var lyscale = this.layers('Scalepropchk');

var prmscale = this.parameters('SCALEPROP');

lyscale.down = !lyscale.down;

prmscale.value = lyscale.down;

var imgdisplay = this.layers('DispayImg');

imgdisplay.ScaleProportional = lyscale.down;

}

#516837