// Written by Jonathan Snook, http://www.snook.ca/jonathan
// Add-ons by Robert Nyman, http://www.robertnyman.com
// Revised version May 11th 2007
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}	
	}
	return returnElements;
}

// Array support for the push method in IE 5
if(typeof Array.prototype.push != "function"){
	Array.prototype.push = ArrayPush;
	function ArrayPush(value){
		this[this.length] = value;
	}
}

// marquee stuff based in Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com)
var mqs = [];
var mqbs = [];
var ahs = [];
var bhs = [];
var delayScroll = 2000; // Specify initial delay before marquee starts to scroll on page (2000=2 seconds)
var speed = 1; // Specify marquee scroll speed (larger is faster 1-10)
var marquees = 0;

function pauseMarquee(n) {
	n.style.className = "paused";
}

function resumeMarquee(n) {
	n.style.className = "marquee";
}

function scrollMarquee() {
	var i;

	for (i = 0; i < marquees; i++) {
		if (mqbs[i].style.className != "paused") {
			if (parseInt(mqs[i].style.top) > (ahs[i]*(-1)+8)) // if scroller hasn't reached the end of its height
				mqs[i].style.top = parseInt(mqs[i].style.top) - speed + "px" // move scroller upwards
			else // else, reset to original position
				mqs[i].style.top = parseInt(bhs[i]) + 8 + "px";
		}
	}
}

function initializeMarquee() {
	var boxes = 0;
	var i, fix, height;
	
	mqbs = getElementsByClassName("marqueeBox", "div");
	boxes = mqbs.length;
	if (boxes < 1) return 0;
	mqs = getElementsByClassName("marquee", "div");
	marquees = mqs.length;
	if (marquees != boxes) {
		marquees = 0;
		return 0;
	}
	fix = (window.opera || navigator.userAgent.indexOf("Netscape/7") != -1);
	for (i = 0; i < marquees; i++) {
		mqs[i].style.top = 0;
		mqs[i].style.className = "marquee";
		mqbs[i].style.overflow = "hidden";
		ahs.push(mqs[i].offsetHeight);
		height = mqbs[i].offsetHeight;
		bhs.push(height);
		if (fix) {
			mqbs[i].style.height = height + "px";
			mqbs[i].style.overflow = "scroll";
		}
	}
	if (fix) return 0;

	setTimeout('lefttime=setInterval("scrollMarquee()",30)', delayScroll);
	return 1;
}

if (window.addEventListener)
	window.addEventListener("load", initializeMarquee, false)
else if (window.attachEvent)
	window.attachEvent("onload", initializeMarquee)
else if (document.getElementById)
	window.onload=initializeMarquee;

