funziona alla perfezione, grazie mille, era proprio quello che stavo cercando!

rimane solo un piccolo dubbio: ora la prima immagine che appare è la seconda, con la prima didascalia sotto...mentre la prima compare quando il giro ricomincia con didascalia "undefined"...quale potrebbe essere la causa?

Il codice è di fatto identico a quello che mi hai proposto tu, ma nel dubbio lo ricopio qui sotto:

<script language="JavaScript">

<!--


var interval = 5000;
var random_display = 0;
var imageDir = "portraits/";
var imageNum = 0;

imageArray = new Array();
didascalieArray = new Array();
imageArray[imageNum++] = new imageItem(imageDir + "01_stappert_rp.jpg");
didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
imageArray[imageNum++] = new imageItem(imageDir + "02_stappert_rp2.jpg");
didascalieArray[imageNum] = "Raymond Pettibon - Berlin 1998";
imageArray[imageNum++] = new imageItem(imageDir + "03_stappert_mk1.jpg");
didascalieArray[imageNum] = "Martin Kippenberger - Studio, Cologne 1986";
imageArray[imageNum++] = new imageItem(imageDir + "04_stappert_cwe.jpg");
didascalieArray[imageNum] = "Cerith Wyn Evans - Frankfurt am Main 2004";

var totalImages = imageArray.length;

function imageItem(image_location) {
this.image_item = new Image();
this.image_item.src = image_location;
}

function get_ImageItemLocation(imageObj) {
return(imageObj.image_item.src)
}

function getNextImage() {
if (random_display) {
imageNum = randNum(0, totalImages-1);
}

else {
imageNum = (imageNum+1) % totalImages;
}
var new_image = get_ImageItemLocation(imageArray[imageNum]);

document.getElementById("didascalia").innerHTML = didascalieArray[imageNum];
return(new_image);
}

function getPrevImage() {
if(imageNum-1 < 0) {
imageNum = totalImages-1;
}
else
imageNum = (imageNum-1) % totalImages;
var new_image = get_ImageItemLocation(imageArray[imageNum]);
document.getElementById("didascalia").innerHTML = didascalieArray[imageNum];
return(new_image);
}

function prevImage(place) {
var new_image = getPrevImage();
document[place].src = new_image;
}

function switchImage(place) {
var new_image = getNextImage();
document[place].src = new_image;
var recur_call = "switchImage('"+place+"')";
timerID = setTimeout(recur_call, interval);
}

// -->

</script>