var move;
window.addEvent('domready', function() {
	var container = $('slider-container');
	var blocks = container.getElements('div.m');

	var positions = new Array();

	var BLOCK_WIDTH = 272;
	var BLOCK_MARGIN = 80;

	var timer = null;

	var speed = 30;
	var offset = 2;

	var appearing_element_index = -1;
	var appearing_element_offset = 0;

	function init() {
		var w = 0;
		for (var i = 0; i < blocks.length; i++) {
			if (i < 3) {
				w = i * (BLOCK_WIDTH + BLOCK_MARGIN);
				blocks[i].setStyle('left', w)
				positions.push(w);
			} else {
				blocks[i].setStyle('left', 976);
				positions.push(976);
			}
			blocks[i].show();
		}
	}

	move = function() {
		for (var i = 0; i < blocks.length; i++) {
			if (-positions[i] > BLOCK_MARGIN) {
				appearing_element_index = i + 3;
				if (appearing_element_index >= blocks.length) {
					appearing_element_index = appearing_element_index
							- blocks.length;
				}
				appearing_element_offset = -positions[i] + offset
						- BLOCK_MARGIN;
				if (appearing_element_index < i
						&& positions[appearing_element_index] == 976) {
					positions[appearing_element_index] = positions[appearing_element_index]
							- appearing_element_offset;
					blocks[appearing_element_index].setStyle('left',
							positions[appearing_element_index]);
					appearing_element_index = -1;
				}
				if ((BLOCK_WIDTH + positions[i]) <= offset) {
					positions[i] = 976;
					blocks[i].setStyle('left', positions[i]);
				} else {
					positions[i] = positions[i] - offset;
					blocks[i].setStyle('left', positions[i]);
				}
				continue;
			}
			if (positions[i] == 976 && i == appearing_element_index) {
				positions[i] = positions[i] - appearing_element_offset;
				blocks[i].setStyle('left', positions[i]);
				appearing_element_index = -1;
				continue;
			}
			if (positions[i] > -BLOCK_WIDTH && positions[i] < 976) {
				positions[i] = positions[i] - offset;
				blocks[i].setStyle('left', positions[i]);
				continue;
			}
		}
	}

	function stop() {
		$clear(timer);
		timer = null;
	}

	init();
	timer = move.periodical(speed);
});
