// Requires Prototype and Scriptaculous
// Written by Ryan Hinkel

var mouse_start = null;
var window_start = null;

function scroll(x,y) {
	window.scrollBy(x,y);
}

function start_mouse_move_observer(event){
	
	// Grab starting position of mouse and page offset
	mouse_start = current_mouse = Event.pointerX(event);
	var scroll_positions = document.viewport.getScrollOffsets();
	window_start = scroll_positions['left'];
	
	//$(event.target.id).observe('mousemove', function(event){ scroll(event) });
}

function stop_mouse_move_observer(event){

	var current_mouse = Event.pointerX(event);
	if(Math.abs(mouse_start - current_mouse) > 10){
		//if (event.stopPropagation) event.stopPropagation();   // DOM Level 2
		//else event.cancelBubble = true;                       // IE
	
		// Now prevent any default action.
		//if (event.preventDefault) event.preventDefault();     // DOM Level 2
		//else event.returnValue = false;  
    }
}

function center_horizontally(element_to_center){

	var scroll_offset =  element_to_center.cumulativeOffset();
	var window_width = document.viewport.getWidth();
	var element_width = element_to_center.getWidth();
	var offset = scroll_offset['left']-((window_width - element_width)/2);
	
	window.scrollTo(offset,0);
}

document.observe("dom:loaded", function() {
	var drag_elements = ['concept_sort_block', 'image_sort_block', 'sort_fork_block', 'show_block'];

	for(i = 0; i < drag_elements.length; i++){
		var element = $(drag_elements[i]);
	    if(element){
			element.observe('mousedown', start_mouse_move_observer);
			element.observe('mouseup', stop_mouse_move_observer);
			new Draggable(element, { revert: true, constraint: 'horizontal' });
		}
	}
	
	
	// if sort_fork_block, scroll to middle
	
	if($('sort_fork_block')){
	
		// Set up event mark scroll location
		Event.observe(window,'beforeunload',function(){
			var scroll_positions = document.viewport.getScrollOffsets();
			Cookie.set('scroll_position',scroll_positions['left'],600); 
		}); 
		
		// Set page position
		var scroll_position = Cookie.get('scroll_position'); 
		
		if(scroll_position){
			window.scrollTo(scroll_position, 0);
		} else {
			var element_to_center = $('drag_instructions');
			center_horizontally(element_to_center);
		}
		
	}
	
	
});
