var icms_zoomimg_iszoomed = '';
var icms_zoomimg_height = 0;
var icms_zoomimg_width = 0;
var icms_zoomimg_curzoom = 0;
var icms_zoomimg_caption = '';
var icms_zoomimg_zooms = [0, 0.2, 0.4, 0.6, 0.8, 1.0];
var icms_zoomimg_intv = 0;
var icms_zoomimg_forcev = 0;
var icms_zoomimg_force = 0;
var icms_zoomimg_dir = 1;
var icms_zoomimg_waiting = [];
var icms_zoomimg_loadedwaiter = 0;
var icms_zoomimg_imghtml = '';

function icms_css_opacity(e, opacity)
{
	var o = e.style;
	o.opacity = opacity;
	o.MozOpacity = opacity;
	o.filter = 'alpha(opacity='+(opacity*100)+')';
}

function icms_zoomimg_waitloaded()
{
	if (el('icms_zoomimg_img').complete) {
		icms_zoomimg_dir = 1;	
		icms_zoomimg_intv = window.setInterval('icms_zoomimg_int()', 70);
		icms_zoomimg_forcev = window.setTimeout('icms_zoomimg_force = 1', 6000);	
		
		window.clearInterval(icms_zoomimg_loadedwaiter);
	}
}

function icms_zoomimg_int()
{
	if (!el('icms_zoomimg_img').complete && !icms_zoomimg_force) return;
	if (icms_zoomimg_forcev) {
		window.clearInterval(icms_zoomimg_forcev);
		icms_zoomimg_forcev = 0;
	}

	var z = icms_zoomimg_zooms[icms_zoomimg_curzoom+=icms_zoomimg_dir];

	if (z>0.0 || icms_zoomimg_dir == -1) {
		var e = el('icms_zoomimg');
		var w = Math.ceil(icms_zoomimg_width*z);
		var h = Math.ceil(icms_zoomimg_height*z);

		icms_css_opacity(e, z);

		if (icms_zoomimg_dir == 1) {
			if (z > 0.99) {
				window.clearInterval(icms_zoomimg_intv);
				icms_zoomimg_intv = 0;
			}
			if (e.style.display != 'block') {
				e.style.display = 'block';
			}
		}
		else {
			if (icms_zoomimg_curzoom == -1) {
				e.style.display = 'none';
				el('icms_zoomimg_img').width = 1;
				el('icms_zoomimg_img').height = 1;
				icms_zoomimg_iszoomed = '';
				icms_zoomimg_curzoom = 0;
				window.clearInterval(icms_zoomimg_intv);
				icms_zoomimg_intv = 0;

				var wa = icms_zoomimg_waiting;
				if (wa.length) {
					icms_zoomimg_waiting = [];
					icms_zoomimg(wa[0], wa[1], wa[2], wa[3]);
				}
			}
		}
	}
}

function icms_zoomimg(file, width, height, caption)
{
	if (icms_zoomimg_intv) return;
	if (icms_zoomimg_iszoomed != file) {

		if (icms_zoomimg_iszoomed != '') {
			icms_zoomimg_waiting = [file, width, height, caption];
			icms_unzoomimg();
		}
		else {

			var cn = el('icms_zoomimg_container');
			
			// This workaround is needed because browser makers are too braindead to
			// reset .complete to 'false' when .src is changed
			
			if (icms_zoomimg_imghtml == '') icms_zoomimg_imghtml = cn.innerHTML;
			else {
				cn.innerHTML = '';
				cn.innerHTML = icms_zoomimg_imghtml;
			}
			
			var im = el('icms_zoomimg_img');
			var e = el('icms_zoomimg');

			im.src = file;

			icms_zoomimg_iszoomed = file;

			e.style.marginTop = (-Math.ceil(height/2))+'px';
			im.height = height;
			e.style.marginLeft = (-Math.ceil(width/2))+'px';
			im.width = width;

			icms_zoomimg_curzoom = 0;
			icms_zoomimg_force = 0;
			el('icms_zoomimg_caption').innerHTML = caption;



			icms_zoomimg_loadedwaiter = window.setInterval('icms_zoomimg_waitloaded();', 500);
		}
	}
	else icms_unzoomimg();
}

function icms_unzoomimg()
{
	icms_zoomimg_dir = -1;
	icms_zoomimg_intv = window.setInterval('icms_zoomimg_int()', 70);
}
