/**
 * Image Marquee
 * Revision: 1.0.1
 */
 
var marquee_spec = new Array();
var marquee_stat = new Array();
 
function initImgMarquee(id, json) {
	var spec = eval("("+json+")");
	marquee_spec[id] = spec;
	
	var stat = new Object();
	stat.direction = 1;	// Start with element B
	stat.position = 0;	// Start with first image
	marquee_stat[id] = stat;
	
	changeOpac(id+'-a', 1)
	changeOpac(id+'-b', 0)
	var a = document.getElementById(id+'-a');
	var b = document.getElementById(id+'-b');
	
	addEvent(a, 'load', imgMarqueeLoad);
	addEvent(b, 'load', imgMarqueeLoad);
	
	fireImgMarquee(id);
}

function fireImgMarquee(id) {
	var stat = marquee_stat[id];
	var spec = marquee_spec[id];
	
	var el;
	var item_spec = spec[stat.position];
	
	if (stat.direction) {
		el = document.getElementById(id+'-b');
	} else {
		el = document.getElementById(id+'-a');
	}
	if (!el) return;
	
	el.src = item_spec['fn'];
}

function imgMarqueeLoad(e) {
	if (!e) var e = window.event;
	var targ = e.target ? e.target : e.srcElement;
	if (targ.nodeType == 3) targ = targ.parentNode; // defeat Safari bug

	var baseID = targ.id;
	var id = baseID.substring(0, baseID.length - 2);
	var src = document.getElementById(baseID).src;
	if (src.substr(src.length - 8) == 'null.gif') return;

	var d = new Date();
	setTimeout("imgMarqueeProgress('"+id+"', "+d.getTime()+")", 10);
}

function imgMarqueeProgress(id, startTime) {
	if (!document.getElementById(id+'-b')) return;
	
	var d = new Date();
	var t = d.getTime();

	var stat = marquee_stat[id];
	var spec = marquee_spec[id];
	var item_spec = spec[stat.position];
	
	var animTime = item_spec['f'];
	var direction = stat.direction;
	
	if (t >= startTime + animTime) {
		// Last call - finish off
		if (direction) {
			changeOpac(id+'-b', 1);
		} else {
			changeOpac(id+'-b', 0);
		}
		
		stat.position++;
		if (stat.position >= spec.length) stat.position = 0;
		stat.direction = stat.direction ? 0 : 1;
		marquee_stat[id] = stat;
		
		setTimeout("fireImgMarquee('"+id+"')", item_spec['d']);
	} else {
		var progress = (t - startTime) / animTime;
		if (direction) {
			changeOpac(id+'-b', progress);
		} else {
			changeOpac(id+'-b', 1-progress);
		}
		
		// Queue up next frame
		setTimeout("imgMarqueeProgress('"+id+"', "+startTime+")", 10);
	}
}


