var app = function()
{
	var offset = 45;

	var content = null;
	var wrapper = null;
	var container = null;
	var arrow_left = null;
	var arrow_right = null;
	var slider = null;

	var can_slide = false;
	var max_pos = offset;
	var min_pos = 0;
	var timer = 0;

	function on_resize()
	{
		min_pos = (- container.offsetWidth + wrapper.offsetWidth - offset);

		if (min_pos > max_pos)
		{
			min_pos = max_pos - 1;
			can_slide = false;
			container.style.left = Math.round((wrapper.offsetWidth - container.offsetWidth) / 2) + 'px';
		}
		else
		{
			can_slide = true;
		}

		if (slider != null)
		{
			slider.options.steps = (max_pos - min_pos);
			slider.max = slider.element.offsetWidth - slider.knob.offsetWidth + (slider.options.offset * 2);
			slider.half = slider.knob.offsetWidth / 2;
			slider.drag.options.limit[slider.z] = [- slider.options.offset, slider.max - slider.options.offset];

			if (can_slide)
			{
				slider.set(slider.step - 1);
				slider.set(slider.step + 1);
			}
		}

		if (document.all && !window.opera) {
			content.style.height = Math.max(document.body.offsetHeight - document.getElementById('header').offsetHeight - document.getElementById('footer').offsetHeight - 22, 256) + 'px';
		}

		wrapper.style.top = Math.round((content.offsetHeight - wrapper.offsetHeight) / 2) + 'px';
	}

	function scroll_left()
	{
		slider.set(slider.step - 30);
	}

	function scroll_right()
	{
		slider.set(slider.step + 30);
	}

	function stop_scroll()
	{
		if (timer > 0)
		{
			clearInterval(timer);
			timer = 0;
		}
	}

	function init()
	{
		content = $('content');
		wrapper = $('wrapper');
		container = $('container');
		arrow_left = $('arrow_left');
		arrow_right = $('arrow_right');

		on_resize();

		slider = new Slider($('area'), $('knob'), {
			steps: (max_pos - min_pos),
			offset: 0,
			onChange: function(pos)
			{
				if (can_slide) {
					container.style.left = (- pos + offset) + 'px';
				}
			}
		});

		window.addEvent('resize', on_resize);

		$(document.body).addEvents({
			'wheelup': function(e)
			{
				e = new Event(e).stop();
				slider.set(slider.step - 100);
			},

			'wheeldown': function(e)
			{
				e = new Event(e).stop();
				slider.set(slider.step + 100);
			}
		});

		arrow_left.onmouseover = function()
		{
			if (timer > 0) clearInterval(timer);
			timer = setInterval(scroll_left, 50);
		}

		arrow_left.onclick = function()
		{
			slider.set(slider.step - 100);
			stop_scroll();
		}

		arrow_right.onmouseover = function()
		{
			if (timer > 0) clearInterval(timer);
			timer = setInterval(scroll_right, 50);
		}

		arrow_right.onclick = function()
		{
			slider.set(slider.step + 100);
			stop_scroll();
		}

		arrow_left.onmouseout = stop_scroll;
		arrow_right.onmouseout = stop_scroll;
	}

	window.addEvent('domready', init);
}();

Element.Events.extend({
	'wheelup': {
		type: Element.Events.mousewheel.type,
		map: function(event)
		{
			event = new Event(event);
			if (event.wheel >= 0) this.fireEvent('wheelup', event);
		}
	},

	'wheeldown': {
		type: Element.Events.mousewheel.type,
		map: function(event)
		{
			event = new Event(event);
			if (event.wheel <= 0) this.fireEvent('wheeldown', event);
		}
	}
});
