Use this version of the script:
Code:
/* Expando Image Script ©2008-2010 John Davenport Scheuer
as first seen in http://www.dynamicdrive.com/forums/
username: jscheuer1 - This Notice Must Remain for Legal Use
Updated: 02/18/2010 for image maps and link behavior
*/
if(document.images && document.getElementById){
(function(){
var targ, addAttach, a = /Apple/.test(navigator.vendor), times = a? 20 : 40, speed = a? 40 : 20, widthHeight = function(dim, cos){
return dim[0] * cos + dim[1] + 'px';
};
function exC(im){
if(exC.die){
return;
}
im = im || window.event;
var type;
if(im.type){
type = im.type;
}
if(!exC.r.test(im.className)){
im = im.target || im.srcElement || null;
}
var d = document.images, i = d.length - 1;
if(im.tagName && im.tagName.toLowerCase() === 'area'){
for(i; i > -1; --i){
if(d[i].getAttribute('usemap').replace(exC.iMap, '') === im.parentNode.name){
im = d[i];
break;
}
}
}
if(!im || !exC.r.test(im.className)){
return;
}
var resize = function(){
if(!exC.ims[i]) {return;}
var cos = (1 - Math.cos((exC.ims[i].jump / times) * Math.PI)) / 2;
im.style.width = widthHeight(exC.ims[i].w, cos);
im.style.height = widthHeight(exC.ims[i].h, cos);
if(exC.ims[i].d && times > exC.ims[i].jump){
++exC.ims[i].jump;
exC.ims[i].timer = setTimeout(resize, speed);
}else if(!exC.ims[i].d && exC.ims[i].jump > 0){
--exC.ims[i].jump;
exC.ims[i].timer = setTimeout(resize, speed);
}
};
for(i; i > -1; --i)
if(d[i] === im) {break;}
i = i + im.src;
if(!exC.ims[i] && im && type === 'mouseover'){
exC.ims[i] = {im: new Image(), jump: 0};
exC.ims[i].im.onload = function(){
im.title = im.alt = '';
exC.ims[i].w = [exC.ims[i].im.width - im.width, im.width];
exC.ims[i].h = [exC.ims[i].im.height - im.height, im.height];
exC(im);
};
exC.ims[i].im.src = im.src;
return;
}
if(exC.ims[i] && exC.ims[i].timer) {clearTimeout(exC.ims[i].timer);}
if(exC.ims[i]){
exC.ims[i].d = !exC.ims[i].d;
resize();
}
}
targ = (function(){
return typeof event !== 'undefined'? function(){return event.srcElement || null;} :
function(e){return e.target || null;};
})();
function imClick(e){
var t = targ(e), ta = t.parentNode, d, i;
if(t && exC.reset.test(t.className) || ta && exC.reset.test(ta.className)){
if(exC.resize.test(t.className) || ta && exC.resize.test(ta.className)){
exC.die = true;
d = document.images, i = d.length - 1;
for(i; i > -1; --i){
if(d[i] && exC.r.test(d[i].className)){
d[i].style.width = d[i].style.height = '';
}
}
}
setTimeout(function(){exC.die = false;}, 500);
exC.ims = {};
}
}
exC.ims = {};
exC.r = /\bexpando\b/;
exC.reset = /\b(resetExpando)|(resizeExpando)\b/;
exC.resize = /\bresizeExpando\b/;
exC.iMap = /^#/;
addAttach = (function(){return window.addEventListener? function(el, ev, f){
el.addEventListener(ev, f, false);
}:window.attachEvent? function(el, ev, f){
el.attachEvent('on' + ev, f);
}:function(){return;};
})();
addAttach(document, 'mouseover', exC);
addAttach(document, 'mouseout', exC);
addAttach(document, 'click', imClick);
})();
}
Bookmarks