function hilite_menu(evt) {
	var el = Event.element(evt);
	el = el.parentNode;
	if (!el._origbgcolor) {
		el._origbgcolor = Element.getStyle(el, 'background-color');
	}
	Element.setStyle(el, {'background-color': '#DFC8B1'});
}

function unhilite_menu(evt) {
	var el = Event.element(evt);
	el = el.parentNode;
	el.setStyle({'background-color': el._origbgcolor});
}


function arrow_click(evt) {
	var el = Event.element(evt);
	var matches = el.id.match(/domarrow(\d+)/);

	if (!matches || matches.length < 1)
		return;

	var src = el.src;
	if (src.match(/-down/)) {
		el.src = src.replace('-down', '-right');
	}
	else {
		el.src = src.replace('-right', '-down');
	}

	var id = matches[1];
	var foldable = $("dom_foldable" + id);
	Element.toggle(foldable);
}


function setup_domlist_events(doc) {
	var domlist = $('domainlist');
	
	if (!domlist || !domlist.childNodes) {
		// try 'view_domain_box' for when viewing single IDN
		var container = $('view_domain_box');
		if (!container) return;

		var elements = doc.getElementsByClassName('counter', container);
		if (elements && elements.length > 0 && elements[0].id.length > 0) {
			var m = elements[0].id.match(/counter_(\d+)/);
			if (m && m.length > 1) {
				var dom_id = m[1];
				var plus = $("plus_" + dom_id);
				var minus = $("minus_" + dom_id);
				var counter = $("counter_" + dom_id);
				if (plus && minus && counter) {
					new VoteCounter(counter, plus, minus);
				}
			}
		}
		return;
	}

	var domains = domlist.childNodes;
	for (i = 0; i < domains.length; i++) {
		var dom = domains[i];
		if (dom.tagName != "DIV" || dom.className != "domlist")
			continue;

		if (!dom.childNodes || !dom.id)
			continue;

		var matches = dom.id.match(/domitem(\d+)/);
		if (matches && matches.length < 1)
			continue;

		var dom_id = matches[1];
		var plus = $("plus_" + dom_id);
		var minus = $("minus_" + dom_id);
		var counter = $("counter_" + dom_id);
		if (plus && minus && counter) {
			new VoteCounter(counter, plus, minus);
		}

		var arrow = $("domarrow" + dom_id);
		Event.observe(arrow, 'click', arrow_click, false);
	}
}

function setup_listeners() {
	Event.observe('mi_home', 'mouseover', hilite_menu, false);
	Event.observe('mi_home', 'mouseout', unhilite_menu, false);
	Event.observe('mi_submit', 'mouseover', hilite_menu, false);
	Event.observe('mi_submit', 'mouseout', unhilite_menu, false);
	Event.observe('mi_about', 'mouseover', hilite_menu, false);
	Event.observe('mi_about', 'mouseout', unhilite_menu, false);
	Event.observe('mi_faq', 'mouseover', hilite_menu, false);
	Event.observe('mi_faq', 'mouseout', unhilite_menu, false);
	Event.observe('mi_tools', 'mouseover', hilite_menu, false);
	Event.observe('mi_tools', 'mouseout', unhilite_menu, false);

	// need to set the visibility property before toggle would work
	Element.setStyle('searchbox_tip', {display: 'none'});
	Element.setStyle('searchbox_tip', {visibility: 'visible'});
	Event.observe('main_searchbox', 'mouseover',
		function() { Element.toggle('searchbox_tip'); });
	Event.observe('main_searchbox', 'mouseout',
		function() { Element.toggle('searchbox_tip'); });

	setup_domlist_events(document);
}

Event.observe(window, 'load', setup_listeners);





function getWindowHeight() {
	var myWidth = 0, myHeight = 0;

	if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	}
	else if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	}

	return {width: myWidth, height: myHeight};
}



function show_loginbox(evt) {
	var loginbox = $("hidden_loginbox");
	// if (!loginbox) return;

	loginbox.setOpacity(loginbox.getStyle('opacity'));
	Event.observe('cancel_loginbox', 'click', hide_loginbox);
	var styles = {visibility: 'visible'};

	var dim = getWindowHeight();
	styles['height'] = dim.height  + 'px';
	loginbox.setStyle(styles);

	var posY = Event.pointerY(evt) - 50;
	posY += 'px';

	var panel = $('hidden_loginbox_panel');
	Position.absolutize(panel);
	panel.setStyle({ top: posY });
}


function hide_loginbox(evt) {
	loginbox = $("hidden_loginbox");
	// if (!loginbox) return;

	Event.stopObserving('cancel_loginbox', 'click', hide_loginbox);

	loginbox.setStyle({visibility: 'hidden'});

	Event.stop(evt);
	return false;
}

