Maybe use this demo as a guide.
You can put as many images and captions as you like in the
picData array and the thumbnails will be created dynamically without having to touch the html.
When you mouseover an image, it's enlargement and caption will fade in. The captions are not displayed with the thumbnails.
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
p {
clear: both;
}
#ulThumbs {
clear: both;
list-style-type: none
}
#ulThumbs li {
margin: 0px 10px 0px 0px;
padding: 0px 0px 0px 0px;
display: inline
}
#imgEnlargeContainer {
width: 50%;
float: left
}
#descContainer {
width: 50%;
float: right
}
#enlargeContainer {
opacity: 0;
filter:alpha(opacity=0)
}
</style>
<script type="text/javascript">
var picData = [
['num1.jpg','description 1'],
['num2.jpg','description 2'],
['num3.jpg','description 3'],
['num4.jpg','description 4']
];
var thumbMaxWidth = 100;
var thumbMaxHeight = 100;
var fadeTimer;
function showEnlargement(picNum){
var nextThumbIndex = (picNum+1 > picData.length-1)? 0 : picNum+1;
if(fadeTimer){
clearInterval(fadeTimer);
curOpac = 0;
setOpacityCSS();
}
imgEnlargeO.src = picO[picNum].src;
descContainerO.innerHTML = picData[picNum][1];
fadeTimer = setInterval(setOpacity,100);
}
var curOpac = 0;
var speed = 0.2;
function setOpacity() {
curOpac = curOpac + speed;
if(curOpac <= 10){
setOpacityCSS();
}
}
function setOpacityCSS(){
if(typeof(enlargeContainerO.style.opacity) == 'string'){
enlargeContainerO.style.opacity = curOpac/10;
} else {
enlargeContainerO.style.filter = 'alpha(opacity=' + curOpac*10 + ')';
}
}
window.onload=function(){
enlargeContainerO = document.getElementById('enlargeContainer');
imgEnlargeO = document.getElementById('imgEnlarge');
descContainerO = document.getElementById('descContainer');
//load the images into an Image object
picO = new Array();
for(i=0; i < picData.length; i++){
picO[i] = new Image();
picO[i].src = picData[i][0];
}
//create the thumbnails
var ulThumbsO = document.getElementById('ulThumbs');
var thumbDims = new Array();
for(i=0; i < picO.length; i++){
liO = document.createElement('li');
imgO = document.createElement('img');
imgO.src = picO[i].src;
thumbDims = calcNewDimensions(picO[i].width, picO[i].height, thumbMaxWidth, thumbMaxHeight);
imgO.width = thumbDims['width'];
imgO.height = thumbDims['height'];
imgO.num = i;
imgO.onmouseover=function(){
showEnlargement(this.num);
}
liO.appendChild(imgO);
ulThumbsO.appendChild(liO);
}
//set a default random enlargement and description
var picNum = Math.floor(Math.random()*picData.length);
showEnlargement(picNum);
}
//-------------------------------------------
function calcNewDimensions(width, height, maxWidth, maxHeight){
newDims = new Array();
var xRatio = maxWidth / width;
var yRatio = maxHeight / height;
//calculate the new width and height
if(width <= maxWidth && height <= maxHeight) { //image does not need resizing
newDims["width"] = width;
newDims["height"] = height;
} else if(xRatio * height < maxHeight) {
newDims["height"] = Math.round(xRatio * height);
newDims["width"] = maxWidth;
} else {
newDims["width"] = Math.round(yRatio * width);
newDims["height"] = maxHeight;
}
return newDims;
}
</script>
</head>
<body>
<!-- preload the images so we can use their actual width and height property
to scale the thumbnails -->
<div id="preloadedPics" style="display: none"></div>
<script type="text/javascript">
for(i=0; i < picData.length; i++){
var newImg = document.createElement('img');
newImg.src = picData[i][0];
newImg.alt = picData[i][1];
document.getElementById('preloadedPics').appendChild(newImg);
}
</script>
<!-- --------------------End of image preloads ------------------ -->
<div id="enlargeContainer">
<div id="imgEnlargeContainer">
<img id="imgEnlarge" src="" alt="" />
</div>
<div id="descContainer"></div>
</div>
<p>Hover on a thumbnail</p>
<ul id="ulThumbs"></ul>
</body>
</html>