var scroller = {
	control_group: 'control',
	control_element: 'span',
	scroll_id: 'scroller',
	speed: 10,
	count: 4,
	width: 80,
	init: function(args) {
		if(args) for(var key in args) this[key] = args[key];
		if(!document.getElementById || !document.getElementsByTagName) return;
		var c = document.getElementById(this.control_group);
		var s = c.scroll_obj = document.getElementById(this.scroll_id);
		var q = s.getElementsByTagName('div');
		this.width = q[0].offsetWidth;
		var nodes = this.width*q.length;
		s.parentNode.style.width = this.width*this.count + 'px';
		s.style.width = nodes + 'px';
		s.scroll_position = s.current_position = 0;
		s.scroll_range = nodes - s.parentNode.offsetWidth;
		c.back_control = c.getElementsByTagName(this.control_element)[0];
		addEvent(c, 'click', this.control);
	},
	control: function(e) {
		var el = (e || event).target || e.srcElement;
		if(el.tagName.toLowerCase() != scroller.control_element && el.parentNode.tagName.toLowerCase() == scroller.control_element) el = el.parentNode;
		if(el.tagName.toLowerCase() == scroller.control_element) scroller.process(el.parentNode.scroll_obj, el == el.parentNode.back_control);
		return false;
	},
	process: function(o, b) {
		var p = o.scroll_position;
		o.scroll_position = (!b && p > -o.scroll_range) ? p - this.speed : (b && p < 0) ? p + this.speed : p;
		o.style.left = o.scroll_position + 'px';
		return ((o.current_position - -this.width <= o.scroll_position || o.scroll_position == 0) || (o.current_position - this.width >= o.scroll_position || o.scroll_position <= -o.scroll_range)) ? o.current_position = o.scroll_position : window.setTimeout(function() { return scroller.process(o, b); }, 10);
	}
}
