// ==================
// variables
// ==================
var IGNORED_ELEMENTS = [];
var ROTATE_INTERVAL = 4000;
var headline_count;
var headline_interval = 0;
var old_headline = 0;
var current_headline = 0;
var arr_headlines;

// ==================
// methods
// ==================
function headline_rotate() {
	current_headline = (old_headline + 1) % headline_count;
	
	// scroll up the old headline
	new Effect.Move(arr_headlines[old_headline], {
		x: 0,
		y: -34,
		mode: "relative",
		afterFinish: function(effect) {
			effect.element.setStyle({top: "34px"});
		}
	});
	
	// scroll up the current headline
	new Effect.Move(arr_headlines[current_headline], {x: 0, y: -34, mode: "relative"});

	old_headline = current_headline;
}

function _textSelectionHandler(event) {
	var element = Event.element(event);
	if (!element) return;
	for (var i = 0, node; node = IGNORED_ELEMENTS[i]; i++) {
		if (element === node || element.descendantOf(node)) {
			Event.stop(event);
			break;
		}
	}
}

function disableTextSelect() {
	if (document.attachEvent)
		document.onselectstart = _textSelectionHandler.bindAsEventListener(window);
	else
		document.observe("mousedown", _textSelectionHandler);

	Element.addMethods({
		enableTextSelection: function(element, isEnabled) {
			if (isEnabled) {
				IGNORED_ELEMENTS = IGNORED_ELEMENTS.without(element);
			} else {
				if (!IGNORED_ELEMENTS.include(element)) {
					IGNORED_ELEMENTS.push(element);
				}
			}
		}
	});
	
	Element.enableTextSelection(document, false);
}

// ==================
// event
// ==================
function scrollup_onmouseover(e) {
	if (headline_interval) clearInterval(headline_interval);
}

function scrollup_onmouseout(e) {
	headline_interval = setInterval(headline_rotate, ROTATE_INTERVAL);
	headline_rotate();
}

// ==================
// onload event
// ==================
document.observe("dom:loaded", function() {
	disableTextSelect();
	
	arr_headlines = $$("div.headline");
	if (arr_headlines.length > 0) {
		headline_count = arr_headlines.size();
		arr_headlines[current_headline].setStyle({
			top: "0px"
		});
		headline_interval = setInterval(headline_rotate, ROTATE_INTERVAL);
		$$("#scrollup .headline").invoke("observe", "mouseover", scrollup_onmouseover);
		$$("#scrollup .headline").invoke("observe", "mouseout", scrollup_onmouseout);
	} else if (headline_interval) {
		clearInterval(headline_interval);
	}
	
});

// disable right clicking
document.observe("contextmenu", function(e) {
	Event.stop(e);
});
