var Obj = {
	set:function(obj_elem, obj_type, obj_hndl) {
		var result = null;
		if (obj_elem.addEventListener) result = obj_elem.addEventListener(obj_type, obj_hndl, false);
		else if(obj_elem.attachEvent) result = obj_elem.attachEvent('on' + obj_type, obj_hndl);
		else obj_elem['on' + obj_type] = obj_hndl;
		return {obj_type:obj_type, obj_hndl:obj_hndl, obj_elem:obj_elem, result:result};
	},
	unset:function(eventWrapper) {
		var obj_elem = eventWrapper.obj_elem;
		if (obj_elem.removeEventListener) obj_elem.removeEventListener(eventWrapper.obj_type, eventWrapper.obj_hndl, false);
		else if(obj_elem.detachEvent) obj_elem.detachEvent('on' + eventWrapper.obj_type, eventWrapper.obj_hndl);
		else obj_elem['on' + eventWrapper.obj_type] = null;
	}
}

var Ticker = {
	init:function(id) {
		var sc = document.getElementById(id);
		var sul = sc.getElementsByTagName("ul")[0];
		var sli = sul.getElementsByTagName("li");
		var lc = null;
		var length = sli.length;
		var cnt = 0;

		while (cnt < sul.childNodes.length) {
			var c = sul.childNodes[cnt];
			if (c.nodeType != 1) sul.removeChild(c);
			else cnt++;
		}

		for (var i = 0; i < length; i++) {
			lc = sli[i];
			sul.appendChild(lc.cloneNode(true));
		}
		
		lc = lc.nextSibling;
		var end = lc.offsetLeft;
		var start = sul.childNodes[0].offsetLeft;
		sul.scrollMax = {x:end,y:0};
		sul.scrollPos = {x:0,y:0};
		sul.scrollStart = {x:start, y:0};
		sul.timer = false;
		Ticker.start(id);
	},
	start:function(id) {
		var sul = document.getElementById(id).getElementsByTagName("ul")[0];
		if (sul.timer != false) Ticker.stop(id);
		sul.timer = window.setInterval( function() {
			Ticker.scroll(id);
		}, 40 );
	},
	stop:function(id) {
		var sul = document.getElementById(id).getElementsByTagName("ul")[0];
		if (sul.timer != false) {
			window.clearInterval(sul.timer);
		}
		sul.timer = false;
	},
	scroll:function(id) {
		var sul = document.getElementById(id).getElementsByTagName("ul")[0];
		var scrollPos = sul.scrollPos;
		var scrollMax = sul.scrollMax;
		var scrollStart = sul.scrollStart;
		if (scrollPos.x==scrollMax.x) scrollPos = {x:scrollStart.x,y:scrollStart.y};
		else scrollPos.x += 1;
		sul.scrollLeft = scrollPos.x;
		sul.scrollPos = scrollPos;
	}
}

var tickerInit = Obj.set(window,"load", function() {
	Ticker.init("rotation");
	Obj.unset(tickerInit);
});