addLoadEvent(zoomInit);

var zoomOn=0;
var ua=navigator.userAgent;
if (ua.indexOf('MSIE 6.0')>=0) {
	zoomOn=1;
} else if (ua.indexOf('Firefox')>=0) {
	zoomOn=1;
}

var zoom=new Object();
zoom.duration=200;
zoom.fps=20;

function zoomInit()
{
	if (!zoomOn)
		return;

	var elts=getElementsByClass('zoomThumb');
	if (elts) {
		for (var i=0;i<elts.length;i++) {
			elts[i].onclick=zoomIt;
		}
	}
	if (document.getElementById) {
		zoom.eltLoading=document.getElementById('zoomLoading');
	}
}

function zoomIt(e)
{
	var thumb=basEventSource(e);

	zoom.thumb=thumb;
	var posStart=getAbsPos(thumb);
	zoom.posStart=posStart;

	var div = thumb.zoomdiv;
	if (!div) {
		div=document.createElement('div');
		div.className='zoomDiv';
		document.body.appendChild(div);
		thumb.zoomdiv = div;
	}
	div.style.left=posStart.x;
	div.style.top=posStart.y;
	div.style.backgroundColor = 'transparent';

	if (zoom.eltLoading) {
		zoom.eltLoading.style.left=posStart.x;
		zoom.eltLoading.style.top=posStart.y;
		bas.show(zoom.eltLoading);
	}

	var a = thumb.parentNode;
	thumb.savhref=a.href;
	a.href='#';

	zoom.div = div;
   xmrGetDoc('getZoom.pl?id='+a.id,zoomDocReady);
	return true;
}

function zoomDocReady(content)
{
	var div=zoom.div;
	if (div) {
		bas.hide(div);
		div.innerHTML=content;
		zoom.interval=setInterval('zoomStart()',10);
	}
}

function zoomStart()
{
	var div=zoom.div;
	if (div) {
		var elts=div.getElementsByTagName('img');
		if (elts && elts.length>0) {
			var img=elts[0];
			zoom.img=img;
			if (img.complete) {
				if (zoom.eltLoading) {
					bas.hide(zoom.eltLoading);
				}
				var thumb = zoom.thumb;
				clearInterval(zoom.interval);
				img.onclick=zoomKill;
				zoom.goal=new point(img.width,img.height);
				img.width=thumb.width;
				img.height=thumb.height;
				zoom.interval=setInterval('zoomNext()',1000/zoom.fps);
				zoom.start=new Date().valueOf();
			}
		}
	}
}

function zoomNext()
{
	var div=zoom.div;
	if (div) {
		var img=zoom.img;
		var elapsed=new Date().valueOf()-zoom.start;
		if (elapsed>=zoom.duration) {
			clearInterval(zoom.interval);
			img.width=zoom.goal.x;
			img.height=zoom.goal.y;
			div.style.left=0;
			div.style.top=0;
			var a = zoom.thumb.parentNode;
			a.href=zoom.thumb.savhref;
			div.style.backgroundColor = '';
			var elts=getElementsByClass('zoomFinal',div);
			if (elts) {
				for (var i=0;i<elts.length;i++) {
					bas.show(elts[i]);
				}
				zoom.final=elts;
			}

		} else {
			var frac=elapsed/zoom.duration;
			var thumb=zoom.thumb;
			div.style.left = Math.floor((1-frac)*zoom.posStart.x);
			div.style.top  = Math.floor((1-frac)*zoom.posStart.y);
			img.width  = Math.ceil(frac*zoom.goal.x);
			img.height = Math.ceil(frac*zoom.goal.y);
		}
		bas.show(div);
	}
}

function zoomKill(e)
{
	var div=zoom.div;
	if (div) {
		bas.hide(div);
		var elts=zoom.final;
		if (elts) {
			for (var i=0;i<elts.length;i++) {
				bas.hide(elts[i]);
			}
		}
		zoom.div=null;
	}
}


