/*var opt = {
	data: arrData,
	dataHeaders: arrHeader,
	links: arrLinks,
	parent: 'actions'
};*/
//arrData.push("I grew up knowing I would make games for a living. In 4th grade, I stayed inside during recess so I could program text adventures in Basic on my teacher&rsquo;s Apple II. In high school, I attended Digipen&rsquo;s summer workshops and learned how to program 2D graphics in Visual Basic. In college my Friday night social life generally involved a game of StarCraft followed by a marathon pixel-pushing se") ;
function initScroll() {
	var opt = {
			data: arrData,
			dataHeaders: arrHeader,
			links: arrLinks,
			parent: 'actions'
		};
	var kscroll = new kScroller(opt);
	kscroll.beginScroll();
}
/***********************************************/

var kScroller = function(options) {
	if (options.data === false) {
		return;
	}
	var that = this;
	var _data = options.data;
	var _links = options.links;
	var _parent = options.parent;
	var _width = options.width;
	var _height = (options.height) ? options.height : 100;
	var _dataHeaders = options.dataHeaders;
	var _topMargin = (options.topMargin) ? options.topMargin : 4;
	var _inbetweenMargin = (options.inbetweenMargin) ? options.inbetweenMargin : 10;
	var _itemDelay = (options.itemDelay) ? options.itemDelay : 3000;
	var _speed = (options.speed) ? options.speed : 5;
	var _dataStripMargin = (options.dataStripMargin) ? options.dataStripMargin : 5;
	
	var _dataLen = _data.length;
	
	var _arrData0 = new Array();
	var _arrData1 = new Array();
	var _arrMileStones = new Array();
	var _topEdge = 0;
	var _stripHeight = 0;
	var _mouseIn = false;
	
	var _scrollDiv0;
	var _scrollDiv1;
	
	this.onMouseIn = function(e) {
		_mouseIn = true;
	}
	
	this.onMouseOut = function(e) {
		_mouseIn = false;
	}
	
	function init() {
		for (var i=0; i<_dataLen; i++) {
			if ((parseInt(_arrData0[i].offsetHeight) <= 0) || (parseInt(_arrData1[i].offsetHeight) <= 0)) {
				setTimeout(init(), 1000);
				return;
			}
		}
		
		var arrHeight = new Array();
		for (var k=0; k<_dataLen; k++) {
			arrHeight[k]=parseInt(_arrData0[k].offsetHeight);
		}
		
		var mileStone = _topMargin;
		for (var j=0; j<_dataLen; j++) {
			_arrData0[j].style.visibility = 'visible';
			_arrData1[j].style.visibility = 'visible';
			_arrData0[j].style.top = mileStone + "px";
			_arrData1[j].style.top = mileStone + "px";
			_arrMileStones[mileStone]=3;
			mileStone=mileStone+arrHeight[j] + _inbetweenMargin;
		}
		_stripHeight = mileStone;
		
		_scrollDiv0.style.left= 8 + "px";
		_scrollDiv0.style.height= mileStone + "px";
		if (typeof _width !== 'undefined') {
			_scrollDiv0.style.width= _width + "px";
		}
		_scrollDiv0.style.top= _height + "px";
		_scrollDiv1.style.left= 8 + "px";
		_scrollDiv1.style.height= mileStone + "px";
		if (typeof _width !== 'undefined') {
			_scrollDiv1.style.width= _width + "px";
		}
		_scrollDiv1.style.top= _height + "px";
		
		_topEdge = _height;
		doScroll();
	}
	
	function doScroll() {
		if (_mouseIn === false) {
			_topEdge--;
			if (_topEdge < (-1 * _stripHeight)) {
				_topEdge = 0;
				_scrollDiv1.style.top = _height + "px";
			}
			_scrollDiv0.style.top = _topEdge + "px";
			if ((_topEdge + _stripHeight) < _height) {
				_scrollDiv1.style.top = _topEdge + _stripHeight + "px";
			}
		}
		if (_arrMileStones[-1 * _topEdge + 4] == 3) {
			setTimeout(function(){doScroll();}, _itemDelay);
		}
		else {
			setTimeout(function(){doScroll();}, _speed);
		}
	}
	
	function createStructure() {
		var oParent;
		if (typeof _parent === 'undefined') {
			oParent = document;
		}
		else {
			oParent = document.getElementById(_parent);
			if (!oParent) {
				return false;
			}
		}
		
		//kSandbox
		var kSandbox = document.createElement("div");
		kSandbox.setAttribute("id", "ksandbox");
		kSandbox.style.position = "relative";
		if (typeof _width !== 'undefined') {
			kSandbox.style.width = _width + "px";
		}
		kSandbox.style.height = _height + "px";
		kSandbox.style.overflow = "hidden";
		oParent.appendChild(kSandbox);
		
		//kContainer
		var kContainer = document.createElement("div");
		kContainer.setAttribute("id", "kcontainer");
		kContainer.style.position = "relative";
		if (typeof _width !== 'undefined') {
			kContainer.style.width = _width + "px";
		}
		kContainer.style.height = _height + "px";
		kContainer.style.overflow = "hidden";
		kSandbox.appendChild(kContainer);
		
		//scrollDiv0
		_scrollDiv0 = document.createElement("div");
		_scrollDiv0.setAttribute("id", "scrollDiv0");
		_scrollDiv0.style.position = "absolute";
		_scrollDiv0.style.top = "0";
		_scrollDiv0.style.left = "0";
		_scrollDiv0.style.width = "100%";
		kContainer.appendChild(_scrollDiv0);
		
		//scrollDiv1
		_scrollDiv1 = document.createElement("div");
		_scrollDiv1.setAttribute("id", "scrolldiv1");
		_scrollDiv1.style.position = "absolute";
		_scrollDiv1.style.top = "0";
		_scrollDiv1.style.left = "0";
		_scrollDiv1.style.width = "100%";
		kContainer.appendChild(_scrollDiv1);
		
		//scrollDiv0 data
		for (var i=0, len=_data.length; i<len; i++) {
			var tmp = document.createElement("div");
			tmp.setAttribute("class", "kdata");
			tmp.style.position = "absolute";
			tmp.style.visibility = "hidden";
			tmp.style.marginLeft = _dataStripMargin + 'px';
			tmp.style.marginRight = _dataStripMargin + 'px';
			tmp.style.top = "0";
			tmp.style.left = "0";
			tmp.style.overflow = "hidden";
			_scrollDiv0.appendChild(tmp);
			tmp.onmouseover = that.onMouseIn;
			tmp.onmouseout = that.onMouseOut;
			
			//links if exist
			var tmpX = tmp;
			if (_links && (_links.length === _data.length)) {
				tmpX = document.createElement("a");
				tmpX.setAttribute("href", _links[i]);
				tmpX.setAttribute("target", "_blank");
				tmp.appendChild(tmpX);
			}
			
			//headers if exist
			if (_dataHeaders && (_dataHeaders.length === _data.length)) {
				var span = document.createElement("h3");
				span.innerHTML = _dataHeaders[i];
				tmpX.appendChild(span);
			}
			var p = document.createElement("p");
			var txt = document.createTextNode(_data[i]);
			p.appendChild(txt);
			tmp.appendChild(p);
			_arrData0.push(tmp);
		}
		
		//scrollDiv1 data
		for (var j=0, len1=_data.length; j<len1; j++) {
			var tmp1 = document.createElement("div");
			tmp1.setAttribute("class", "kdata");
			tmp1.style.position = "absolute";
			tmp1.style.visibility = "hidden";
			tmp1.style.marginLeft = _dataStripMargin + 'px';
			tmp1.style.marginRight = _dataStripMargin + 'px';
			tmp1.style.top = "0";
			tmp1.style.left = "0";
			tmp1.style.overflow = "hidden";
			_scrollDiv1.appendChild(tmp1);
			//tmp.onmouseover
			//tmp.onmouseout
			
			//links if exist
			var tmpX1 = tmp1;
			if (_links && (_links.length === _data.length)) {
				tmpX1 = document.createElement("a");
				tmpX1.setAttribute("href", _links[j]);
				tmpX1.setAttribute("target", "_blank");
				tmp1.appendChild(tmpX1);
			}
			
			//headers if exist
			if (_dataHeaders && (_dataHeaders.length === _data.length)) {
				var span1 = document.createElement("h3");
				span1.innerHTML = _dataHeaders[j];
				tmpX1.appendChild(span1);
			}
			var p1 = document.createElement("p");
			var txt1 = document.createTextNode(_data[j]);
			p1.appendChild(txt1);
			tmp1.appendChild(p1);
			_arrData1.push(tmp);
		}
                return true;
	}
	
	//public functions
	this.beginScroll = function() {
		createStructure();
		setTimeout(init, 500);
	}
}
