jQuery(function(){

	jQuery("#slideshow div.menu p").bind("click", function(){

		jQuery("#slideshow div.menu ul").slideToggle();
		jQuery("#slideshow div.menu p span").slideToggle();

	});

	jQuery("#slideshow div.menu ul li a").bind("click", function(){

		var source = jQuery(this);

		var section = jQuery("#slideshow div.sections div." + source.parent().attr("class"));

		left = section.position().left;

		var limit = jQuery("#slideshow div.sections").width() - 999;

		if (left > limit) left = limit;

		jQuery("#slideshow div.sections").animate({"left":-left});
		jQuery("#slideshow div.menu ul").slideUp();
		jQuery("#slideshow div.menu p span").slideDown();
		jQuery("#slideshow div.slider").slider({"value":left + jQuery("#slideshow div.sections").data("left")});

		return false;

	});

	// slider

	var max_slider_value = jQuery("#slideshow div.sections").width() - 999 + jQuery("#slideshow div.sections").data("left");

	jQuery("#slideshow div.slider").slider({

		"change": function(event, ui) {

			var amount = parseInt(ui.value, 10);

			jQuery("#slideshow div.sections").css({"left":jQuery("#slideshow div.sections").data("left")-amount});

		},
		"min": 0,
		"max": max_slider_value,
		"slide": function(event, ui) {

			var amount = parseInt(ui.value, 10);

			jQuery("#slideshow div.sections").css({"left":jQuery("#slideshow div.sections").data("left")-amount});

		},
		"value": 0

	});

	/// handle

	handle = jQuery("#slideshow div.slider a.ui-slider-handle");

	handle.bind("touchstart", function(event){

		var current_slider_value = jQuery("#slideshow div.slider").slider("option", "value");

		var mouse_x = event.originalEvent.touches.item(0).pageX;

		handle.bind("touchmove", function(event) {

			var delta1 = event.originalEvent.touches.item(0).pageX - mouse_x;
			var delta2 = (jQuery("#slideshow div.sections").width() * delta1) / jQuery("#slideshow div.slider").width();

			delta2 = delta2 * 0.81;

			var value = current_slider_value + Math.floor(delta2);

			if (value > max_slider_value) value = max_slider_value;
			if (value < 0) value = 0;

			jQuery("#slideshow div.slider").slider("option", "value", value);

			event.preventDefault();
			event.stopPropagation();

			return false;

		});

		event.preventDefault();
		event.stopPropagation();

		return false;

	});

	handle.bind("touchend", function(event) {

		handle.unbind("touchmove");

		event.preventDefault();
		event.stopPropagation();

		return false;

	});

	/// sections

	sections = jQuery("#slideshow div.sections");

	sections.draggable({

		"axis": "x",
		"drag": function(event, ui) {

			if (ui.position.left > jQuery("#slideshow div.sections").data("left") || ui.position.left < -(jQuery("#slideshow div.sections").width() - 999)) {

				sections.data("stopped", true);

				event.preventDefault();
				event.stopPropagation();

				return false;
			
			}

			jQuery("#slideshow div.slider").slider("option", "value", -ui.position.left + jQuery("#slideshow div.sections").data("left"));

		},
		"start": function(event, ui) {

			sections.data("stopped", false);

		},
		"stop": function(event, ui) {

		}

	});

	sections.bind("touchstart", function(event){

		var current_slider_value = jQuery("#slideshow div.slider").slider("option", "value");

		var mouse_x = event.originalEvent.touches.item(0).pageX;

		sections.bind("touchmove", function(event) {

			var delta1 = event.originalEvent.touches.item(0).pageX - mouse_x;
			var delta2 = (jQuery("#slideshow div.slider").width() * delta1) / sections.width();

			delta2 = -delta2 * 6;

			var value = current_slider_value + Math.floor(delta2);

			if (value > max_slider_value) value = max_slider_value;
			if (value < 0) value = 0;

			jQuery("#slideshow div.slider").slider("option", "value", value);

			event.preventDefault();
			event.stopPropagation();

			return false;

		});

	});

	sections.bind("touchend", function(event) {

		sections.unbind("touchmove");

		event.preventDefault();
		event.stopPropagation();

		return false;

	});

	sections.find("a").bind("click", function() {

		if (sections.data("stopped")) {

			sections.data("stopped", false);

			return false;
		
		}

	});

	///

});
