Aha. Of course - I was thinking that those vars needed to be global, cos I'm iterating through them. Didn't occur to me that in putting them inside a function, I'm making them specific to each instance of the function. If that makes sense

Thank you.
On a kind-of-related matter - it's the same code, anyhow - this is what I've currently got:
Code:
$$("div.insetcontent").each(function(oBox){
var oLinkImg = oBox.down('img');
new Effect.Opacity(oLinkImg, {duration:0, from:1.0, to:0.5});
Event.observe(oBox, 'mouseover', function() {new Effect.Opacity(oLinkImg, {duration:0, from:0.5, to:1.0})});
Event.observe(oBox, 'mouseout', function() {new Effect.Opacity(oLinkImg, {duration:0, from:1.0, to:0.5})});
});
And, while it works as it should, it doesn't work as I want. I've attached the mouseover/out handlers to the containing div. This does highlight the image as you rollover the box, but as you move your mouse between the image and the paragraph, it flickers between opacity. And even worse, sometimes it seems to get mixed up and the image doesn't always return to semi-opaque when you mouse out of the box.
Is there a way to avoid this? I have a feeling it's... event bubbling, or something, but don't know enough about it.