window.addEvent('load', function() {
			var slider_container = $$('.slider_cont')[0];
			var slider_left = 0;
			var slider_right = 0;
			var over_left = 0;
			var over_right = 0;
			var offset = 100;

			var period = 20;
			var shift = 5;

			var slider = $('slider');

			var left_arrow = $('slide_left');
			var right_arrow = $('slide_right');

			var current_position = 0;
			var difference = slider_container.getCoordinates().width
					- slider.getCoordinates().width
					+ slider.getFirst().getFirst().getLast()
							.getStyle('paddingRight').toInt();
			var timer;
			if (difference >= 0) {
				return;
			}

			slider_container.addEvents({
						mouseenter : onSliderMouseEnter,
						mouseleave : onSliderMouseLeave
					});

			function onSliderMouseEnter(e) {
				var event = new Event(e);
				var coords = slider_container.getCoordinates();
				slider_left = coords.left;
				slider_right = coords.width + coords.left;
				over_left = slider_left + offset;
				over_right = slider_right - offset;

				this.addEvent('mousemove', onSliderMouseMove);
			}

			function onSliderMouseLeave(e) {
				var event = new Event(e);
				this.removeEvent('mousemove', onSliderMouseMove);
				stop();
			}

			function onSliderMouseMove(e) {
				var event = new Event(e);
				var x = event.page.x;

				if (x > slider_left && x < over_left) {
					dispatchMove('left');
				} else if (x > over_right && x < slider_right) {
					dispatchMove('right');
				} else {
					stop();
				}
			}

			function dispatchMove(direction) {
				if (!timer) {
					switch (direction) {
						case 'left' :
							if (current_position != 0) {
								timer = left_mover.periodical(period);
							}
							break;
						case 'right' :
							if (current_position != difference) {
								timer = right_mover.periodical(period);
							}
							break;
					}
				}
			}

			var left_mover = function() {
				if (current_position != 0) {
					if (current_position + shift < 0) {
						current_position += shift;
					} else {
						current_position = 0;
					}
					slider.setStyle('left', current_position);
				} else {
					stop();
				}
			}

			var right_mover = function() {
				if (current_position == difference) {
					stop();
				} else {
					if (-difference + current_position > shift) {
						current_position -= shift;
					} else {
						current_position = difference;
					}
					slider.setStyle('left', current_position);
				}
			}

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

			left_arrow.addEvents({
						mouseenter : function() {
							dispatchMove('left');
						},
						mouseleave : function(e) {
							stop();
						},
						click : function(e) {
							new Event(e).stop();
						}
					});

			right_arrow.addEvents({
						mouseenter : function() {
							dispatchMove('right');
						},
						mouseleave : function(e) {
							stop();
						},
						click : function(e) {
							new Event(e).stop();
						}
					});
		});
