/* Expando Image Script �2008 John Davenport Scheuer
 as first seen in http://www.dynamicdrive.com/forums/
 username: jscheuer1 - This Notice Must Remain for Legal Use
 */

if (document.images) {
	(function() {
		var cos, a = /Apple/.test(navigator.vendor), times = a ? 20 : 40, speed = a ? 40 : 20;
		var expConIm = function(im) {
			im = im || window.event;
			
			if (!expConIm.r.test(im.className))
				im = im.target || im.srcElement || null;
			if (!im || !expConIm.r.test(im.className))
				return;
			
			var e = expConIm, widthHeight = function(dim) {
				return dim[0] * cos + dim[1] + 'px';
			}, resize = function() {
				cos = (1 - Math.cos((e.ims[i].jump / times) * Math.PI)) / 2;
				im.style.width = widthHeight(e.ims[i].w);
				im.style.height = widthHeight(e.ims[i].h);
				
				if (e.ims[i].d && times > e.ims[i].jump) {
					im.style.zIndex = 1;
					++e.ims[i].jump;
					e.ims[i].timer = setTimeout(resize, speed);
				} else if (!e.ims[i].d && e.ims[i].jump > 0) {
					im.style.zIndex = 0;
					--e.ims[i].jump;
					e.ims[i].timer = setTimeout(resize, speed);
				}
			}, d = document.images, i = d.length - 1;
			
			for (i; i > -1; --i)
				if (d[i] == im)
					break;
			i = i + im.src;
			if (!e.ims[i]) {
				im.title = '';
				e.ims[i] = {
					im : new Image(),
					jump : 0
				};
				e.ims[i].im.onload = function() {
					e.ims[i].w = [ e.ims[i].im.width - im.width, im.width ];
					e.ims[i].h = [ e.ims[i].im.height - im.height, im.height ];
					e(im);			
				};
				e.ims[i].im.src = im.src;
				return;
			}
			if (e.ims[i].timer)
				clearTimeout(e.ims[i].timer);
			e.ims[i].d = !e.ims[i].d;
			resize();
		};

		expConIm.ims = {};

		expConIm.r = new RegExp('\\bexpando\\b');

		if (document.addEventListener) {
			document.addEventListener('mouseover', expConIm, false);
			document.addEventListener('mouseout', expConIm, false);
		} else if (document.attachEvent) {
			document.attachEvent('onmouseover', expConIm);
			document.attachEvent('onmouseout', expConIm);
		}
	})();
}
