/*
 * Ad scroller
 * $Id: adscroller.js,v 1.2 2006/06/17 21:29:38 dread Exp dread $
 */

/*
 * $Log: adscroller.js,v $
 */
		  

var divContainerId = 'divads';

var adTimePause = 5000;
// var adTimeStep = 100;
var adTimeStep = 20;

var adPosHide = -5;
var adPosNext = 5;
var adPosStop = 100;
var adPosStart = 150;

var adIn = 0;
var adOut = 0;

var adElements = new Array();

function shuffleIn() {
	var ad = adElements[adIn];
	if (ad.style.display != 'block') 
		showDiv(ad);
	var y = parseInt(ad.style.top, 10);
	y--;
	ad.style.top = y + 'px';
	if (y == adPosStop) {
		adOut = adIn;
		setTimeout(shuffleOut, adTimePause);
		return 0;
	}
	setTimeout(shuffleIn, adTimeStep);
	return 0;
}

function shuffleOut() {
	var ad = adElements[adOut];
	var y = parseInt(ad.style.top, 10);
	if (y == adPosNext) {						// roll in next ad
		adIn = (adOut+1) % adElements.length;
		setTimeout(shuffleIn, adTimeStep);
	}
	y--;
	ad.style.top = y + 'px';
	if (y < adPosHide) {
		hideDiv(ad);							// hide & move to end of the line
		ad.style.top = adPosStart + 'px';
		return 0;
	} 
	setTimeout(shuffleOut, adTimeStep);	
	return 0;
}

function initAds() {
	var ad, p, h_max = 10;
	var el = document.getElementById(divContainerId);
	if (el) {
		p = getAbsolutePos(el);
		adPosHide = adPosNext = adPosStop = adPosStart = 0;
		adPosStart += p.h;								// below the container
		adPosStop += p.h >> 1;							// the center of the container
		adPosNext += 5;									// trigger the next ad roll in

		var a_el = getChildrenByTag('div', el);
		if (a_el.length == 0)
			return 0;
		if (a_el.length == 1) {
			var newdiv = document.createElement('div');
			newdiv.appendChild(document.createElement('hr'));
			el.appendChild(newdiv);
			a_el = getChildrenByTag('div', el);
		}
		for (var i=0; i< a_el.length; i++) {
			ad = a_el[i];
			ad.style.left = 0 + 'px';					
			ad.style.top = adPosStart + 'px';
			ad.style.display = 'block';					// turn it on,
			var v = getAbsolutePos(ad);					//  get dimensions,
			ad.style.display = 'none';					//   then turn it off.
			if (v.h > h_max) 
				h_max = v.h; 
			adElements[i] = ad;
		}
		adPosHide -= h_max;								// fine tune the "stop" & "hide" positions
		adPosStop -= h_max >> 1;
		if (adPosNext > adPosStop)
			adPosNext = adPosStop -1;
		var now = new Date();							// randomize
		adOut = now.getSeconds() % adElements.length;
		ad = adElements[adOut];
		ad.style.top = adPosStop + 'px';
		showDiv(ad);
		setTimeout(shuffleOut, adTimePause);
	}
	return 0;
}

addLoadEvent(initAds);

