var Nav = {
	nav : null,
	navitems : null,
	pageon : null,
	_mouseout : null,
	_navout : null,
	initialized : false,
	
	init : function() {
		this.nav = $('nav');
		this.navitems = $$('#nav > li');
		this._mouseout = this.mouseout.bindAsEventListener(this);
		this._navout = this.navout.bindAsEventListener(this);
		if (!this.initialized) {
			for (var i=0, ilength = this.navitems.length; i<ilength; i++) {
				var ni = this.navitems[i];
				ni._mouseout = this.mouseout.bindAsEventListener(ni, this);
				ni._mouseover = this.mouseover.bindAsEventListener(ni, this);
				ni.observe('mouseover', ni._mouseover);
				ni.childs = ni.select('li:not([class="pipe"])');
				if (-1 != ni.down('a').href.indexOf(this.pageon)) {
					ni.addClassName('selected');
				}
				for (var j=0, jlength=ni.childs.length; j<jlength; j++) {
					var nci = ni.childs[j];
					if (-1 != nci.down('a').href.indexOf(this.pageon)) {
						nci.addClassName('selected');
						nci.up('li').addClassName('selected');
					}
				} 
			}
			this.initialized = true;
		}
	},
	
	mouseover : function(event, scope) {
		this.addClassName('over');
		this.stopObserving('mousover', this._mouseover);
		Event.observe(document, 'mouseover', this._mouseout);
//		Event.observe(this, 'mouseout', this._mouseout);
		var selected = $$('#nav .selected');
		for (var i=0, ilength=selected.length; i<ilength; i++) {
			selected[i].addClassName('_selected');
			selected[i].removeClassName('selected');
		}
	},
	
	mouseout : function(event, scope) {
		var elem = Event.element(event);

		if (!elem.descendantOf(this)) {
			this.observe('mouseover', this._mouseover);
			Event.stopObserving(document, 'mouseover', this._mouseout);
			this.removeClassName('over');
			if (!elem.descendantOf(scope.nav)) {
				scope.navout();
			}
		}
	},
	
	navout : function() {
		var selected = $$('#nav ._selected');
		for (var i=0, ilength=selected.length; i<ilength; i++) {
			selected[i].addClassName('selected');
			selected[i].removeClassName('_selected');
		}
	}
}

Event.observe(window, 'load', function() {
	Nav.init();
});