// JavaScript Document
var TopicScroller = new function() {
	this.windowDiv = null;
	this.scrollerDiv = null;
	this.navDiv = null;
	this.scrollTimer = null;
	this.scrollInterval = null;
	this.scrollItems = null;
	this.navItems = null;
	this.totItems = 0;
	this.currentItem = 1;
	this.currentOffset = 0;
	this.step = 10; // windowSize should be evenly divisible by this!
	this.windowSize = 200;
	this.delay = 2000;

	this.init = function(windowdiv, scrollerdiv, navdiv, windowsize, step) {
		TopicScroller.windowDiv = document.getElementById(windowdiv);
		TopicScroller.scrollerDiv = document.getElementById(scrollerdiv);
		TopicScroller.navDiv = document.getElementById(navdiv);
		//TopicScroller.currentOffset = TopicScroller.windowDiv.offsetTop;
		TopicScroller.step = step;
		TopicScroller.windowSize = windowsize;
		
		//TopicScroller.initScroll();
	}; // init
	
	this.cleanup = function() {
		TopicScroller.windowDiv = null;
		TopicScroller.scrollerDiv = null;
		TopicScroller.navDiv = null;
		TopicScroller.scrollItems = null;
		TopicScroller.navItems = null;
	}; // cleanup
	
	this.initScroll = function(delay) {
		TopicScroller.delay = delay || 3000;
		//TopicScroller.scrollItems = TopicScroller.scrollerDiv.getElementsByTagName("DIV");
		TopicScroller.scrollItems = new Array();
		var i = 0;
		for (var c = 0; c < TopicScroller.scrollerDiv.childNodes.length; c++) {
			//alert(TopicScroller.scrollerDiv.childNodes[c].nodeName);
			if (TopicScroller.scrollerDiv.childNodes[c].nodeName == "DIV") {
				TopicScroller.scrollItems[i] = TopicScroller.scrollerDiv.childNodes[c];
				i++;
			}
		}
		//alert(TopicScroller.windowDiv.offsetTop + "\n" + TopicScroller.scrollerDiv.offsetTop);
		TopicScroller.totItems = TopicScroller.scrollItems.length;
		var tempItem = TopicScroller.scrollItems[0].cloneNode(true);
		TopicScroller.scrollerDiv.appendChild(tempItem);
		//alert(TopicScroller.totItems);
		//alert('Hit ok to start scroll');
		//TopicScroller.startScroll();
		
		if (TopicScroller.totItems > 1) {
			// add nav items to nav div
			var tempElem = document.createElement("SPAN");
			TopicScroller.navDiv.appendChild(tempElem);
			tempElem.appendChild(document.createTextNode('Jump to Item:'));
			var tempUl = document.createElement("UL");
			TopicScroller.navDiv.appendChild(tempUl);
			TopicScroller.navItems = new Array();
			
			for (var c = 0; c < TopicScroller.totItems; c++) {
				var tempElem = document.createElement("LI");
				TopicScroller.scrollItems[c] = tempElem;
				tempUl.appendChild(tempElem);
				tempElem.appendChild(document.createTextNode(c + 1));
				tempElem.id = 'topic_' + c;
				
				tempElem.onclick = function() {
					//alert(this.id);
					var index = this.id.split('_')[1] * 1; // need to multiply by 1 to get clean number
					clearInterval(TopicScroller.scrollInterval);
					clearTimeout(TopicScroller.scrollTimer);
					TopicScroller.currentItem = index + 1;
					TopicScroller.currentOffset = (0 - (index * TopicScroller.windowSize));
					TopicScroller.scrollerDiv.style.top = TopicScroller.currentOffset + 'px';
					TopicScroller.scrollTimer = setTimeout(TopicScroller.startScroll, delay * 2);
				};
				tempElem.onmouseover = function() {
					this.style.cursor = 'pointer';
				};
				tempElem.onmouseout = function() {
					this.style.cursor = 'default';
				};
			}
		
			TopicScroller.scrollTimer = setTimeout(TopicScroller.startScroll, delay);
		} else {
			// hide nav if not needed
			TopicScroller.navDiv.style.display = 'none';
		}
	}; // initscroll
	
	this.startScroll = function() {
		//TopicScroller.updatePos();
		TopicScroller.scrollInterval = setInterval(TopicScroller.updatePos, 1);
	}; //startScroll

	this.scrollNext = function() {
		
	}; //startScroll
	
	this.updatePos = function() {
		TopicScroller.currentOffset = TopicScroller.currentOffset - TopicScroller.step;
		TopicScroller.scrollerDiv.style.top = TopicScroller.currentOffset + 'px';
		if ( TopicScroller.currentOffset <= (0 - (TopicScroller.currentItem * TopicScroller.windowSize)) ) {
			clearInterval(TopicScroller.scrollInterval);
			/*
			alert(TopicScroller.currentItem + "\n" +
				  TopicScroller.currentOffset + "\n" +
				  TopicScroller.currentItem * TopicScroller.windowSize);
			*/
			TopicScroller.currentItem++;
			if (TopicScroller.currentItem > TopicScroller.totItems) {
				TopicScroller.currentItem = 1;
				TopicScroller.currentOffset = 0;
				TopicScroller.scrollerDiv.style.top = TopicScroller.currentOffset + 'px';
			}
			TopicScroller.scrollTimer = setTimeout(TopicScroller.startScroll, TopicScroller.delay);
		}
	}; //startScroll
	
	this.updateNav = function(index) {
		
	};


}; // TopicScroller

