var imageCache; // caches the images themselves
var imageSrcNames; // caches the src value of the images. this is needed because of relative urls
var debug = false;
// swaps an image's source with the provided source
function swapImage(img, src) {
if (window.preloadImages != null) preloadImages();
doSwapImage(img, src);
}
// swaps an image's source with the provided source. if multiple images with the same name exist, swaps all of them
function doSwapImage(img, src) {
myImage = findImage(src);
if (img[0] == null) {
if (myImage != null) {
if (debug) {alert('Swapping cached image '+myImage);}
img.src = myImage.src;
} else {
img.src = src;
}
} else {
for (i=0; i
if (myImage != null) {
if (debug) {alert('Swapping cached image '+myImage);}
img[i].src = myImage.src;
} else {
img[i].src = src;
}
}
}
}
// actually performs the preload. send a list of args in the form of
// a series of image src URL strings.
function doPreloadImages() {
args = doPreloadImages.arguments;
imageCache = new Array(args.length);
imageSrcNames = new Array(args.length);
if (args != null) {
for (i=0; i
if (args[i].indexOf("#") != 0) {
imageCache[i] = new Image;
imageCache[i].src = args[i];
imageSrcNames[i] = args[i];
}
}
}
}
// finds image in cache, based on src
function findImage(src) {
if (imageSrcNames != null) {
for (i=0; i
if (imageSrcNames[i] != null) {
// if (debug) {alert(i+": checking "+imageSrcNames[i]+" AGAINST "+src);}
if (imageSrcNames[i] == src) {
return imageCache[i];
}
}
}
}
return null;
}