/**************************************************************************
* Menu / Rollover Handler
*
* Sets up links, drop down menus, and rollover image links.
* Scott Wespi (scott@darkstardesign.com)
*
* Requires Prototype / Scriptaculous
**************************************************************************/
var dsd_menu = {
	_auto_close_time: 100
	, _close_timeout: false
	, _current_menu: 0
	, init: function() {	
		// rollovers
		$$('a.rollover').each(function(s){
			var a = new Image();
			var b = s.down().src;
			a.src = ( b.substring(0,b.lastIndexOf('.')) + '-over' + b.substring(b.lastIndexOf('.'),b.length) );
			s.oldImg = a;
			s.onmouseover = dsd_menu.swap;
			s.onmouseout = dsd_menu.swap;
		});
		
		// drop downs
		$$('a.drop-down').each(function(s) {
			s.onmouseover = dsd_menu.open;
			s.onmouseout = dsd_menu.start_close;
			
			s.next('.sub-menu').onmouseover = dsd_menu.cancel_close;
			s.next('.sub-menu').onmouseout = dsd_menu.start_close;
		});		
	}, swap: function() {
		// if a drop down is open, close it
		if (this.oldImg) {
			a = this.down().src;
			this.down().src = this.oldImg.src;
			this.oldImg.src = a;
		}
	}, open: function() {
		dsd_menu.cancel_close();	
		dsd_menu.close();
		if (!$(this).next('.sub-menu').hasClassName('out')) {
			if ($(this).hasClassName('rollover')) {
				dsd_menu.swap.call($(this));
			}
		}
		dsd_menu._current_menu = $(this).next('.sub-menu');
		$(this).next('.sub-menu').show(); // could use effect here
		$(this).next('.sub-menu').addClassName('out');
	}, close: function() {
		if (dsd_menu._current_menu) {
			if (dsd_menu._current_menu.previous('a.drop-down').hasClassName('rollover')) {
				if (dsd_menu._current_menu.hasClassName('out')) {
					dsd_menu.swap.call(dsd_menu._current_menu.previous('a.drop-down'));
				}
			}
			dsd_menu.close_menu(); // could use effect here
		}
	}, close_menu: function() {
		if (dsd_menu._current_menu) {
			dsd_menu._current_menu.removeClassName('out');
			dsd_menu._current_menu.hide(); // could use effect here
			dsd_menu._current_menu = false;
		}
	}, start_close: function() {
		dsd_menu._close_timeout = window.setTimeout(dsd_menu.close, dsd_menu._auto_close_time);
	}, cancel_close: function() {
		if(dsd_menu._close_timeout) {
			window.clearTimeout(dsd_menu._close_timeout);
			dsd_menu._close_timeout = false;
		}
	}, debug_time: function() {
		var d = new Date()

		return d.getMinutes()+':'+d.getSeconds()+'.'+d.getMilliseconds();
	}
};