PDA

View Full Version : Javascript help - previous/next with Dreamweaver swapImage



maida
02-15-2007, 06:24 PM
My client has an existing site with Dreamweaver generated galleries - the ones that change the photo when you mouse over the thumbnail

They would like to add Previous/Next functionality to the gallery as well.

Here's the Dreamweaver code


function MM_findObj(n, d) { //v4.01
var p,i,x;
if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n);
return x;
}

function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

The MM_preloadImages already loads all the images for the gallery into an array
The MM_swapImage can change the image.

So I want to set up a nextImage function that:
uses function MM_findObj to find the current image
Find the current image in the MM_p array
swap the current image to the next image in the array

The big question is:
How can I pass the current image into the function?

My test page is here:
http://www.newagaincustomhomes.com/gallery_test.html

I've been working on this for a while and just can't get my head around it.

If you're bored and want to help, I'd appreciate it. Right now, I'm going to the climbing gym to clear my head!

wildjokerdesign
02-16-2007, 09:10 AM
I am not real sure what you are wanting to do but as I see it d.MM_p is not a global variation so is only available in the MM_preloadImages function. I don't code javascirpt enough to be sure but I think that need to "declare" d.MM_p outside of the function. That would mean that you would do something like this:

document.MM_p=new Array();
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p)
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
Notice I changed it to document.MM_p=new Array();

That may get you strated on the right track.