var Navigator = new Class({	
	Implements: [Options, Events],
	
	initialize: function(element, options){
		this.element = element;
		this.setOptions(options);
		this.setupNavigator();
	},
	
	setupNavigator: function(){
		var navHolder = $(this.element);		
		if (!navHolder) {
			return;
		}
		var dls = navHolder.getElement('dl');		
		var togglers = dls.getElements('dt');		
		togglers.each(function(toggle){
			toggle.addClass('inactive');
		});
		var startToggle = -1;
		for(var i=0; i<togglers.length; i++){
			if(togglers[i].hasClass('active')){
				startToggle = i;
				break;
			}
		}
		
		var elements = dls.getElements('dd').setStyle('display', 'block');
		
		var heightValue='';
		var heightValue='';
		if(Browser.Engine.trident4) heightValue='100%';	
	
		var accordionObj = new Accordion(togglers, elements, {
			duration: 'short',
			display: startToggle,
			show: startToggle,
			alwaysHide:true,
			onComplete: function() { 
				var element=$(this.elements[this.previous]);
				if(element && element.offsetHeight>0) element.setStyle('height', heightValue);			
			},
			onActive: function(toggler, element){
				toggler.removeClass('inactive');
				toggler.addClass('current');
			},
			onBackground: function(toggler, element){
				toggler.addClass('inactive');
				toggler.removeClass('current');
			}
		});	

		elements.each(function(elm){
			if(elm.getElement('ul li ul')){
				var innerElms = elm.getElements('ul li ul');
				var innerTogs = innerElms.getParent();
				
				startToggle = -1;
				for(var i=0; i<innerTogs.length; i++){
					if(innerTogs[i].hasClass('active')){
						startToggle = i;
						break;
					}
				}
				
				new Accordion(innerTogs, innerElms, {
					display: startToggle,
					show: startToggle,
					duration: 'short',
					alwaysHide: true
				});
			}
		});
	}	
});

window.addEvent('domready', function(){
	new Navigator('lev');
	new Navigator('contextual');
});
