var ns_nav = new Class({
	
	Implements: Options,
	
	options: {},
	
	fx_duration: 1000,
	fx_transition: Fx.Transitions.Quad.easeOut,
	
	fx2_duration: 500,
	fx2_transition: Fx.Transitions.Bounce.easeOut,
	
	initialize: function(){
		
		//	run setup
		this.setup();
	},
	
	setup: function(){
		
		$$('#nav a').addEvent('focus', function(){ this.blur(); });
		
	},
	
	set: function(in_open_section, in_options){
		
		//	set options
		this.setOptions(in_options);
		
		if(in_open_section == 'left'){
			$('nav_sub_right').setStyle('margin-left', 330);
			$('nav_sub_left').setStyle('width', 150);
			$('nav_main').setStyle('margin-left', 150);	
		}
		
		if(in_open_section == 'right'){
			$('nav_sub_left').setStyle('width', 0);
			$('nav_sub_right').setStyle('margin-left', 180);
			$('nav_main').setStyle('margin-left', 0);
		}
		
		this.nav(in_open_section, in_options);
		
	},
	
	nav: function(in_open_section, in_options){
		
				
		//	set options
		this.setOptions(in_options);
		
		if(!this.options.left && !this.options.right && !this.options.left_sub && !this.options.right_sub && !this.options.main){
			//	none
			$('nav_main_sub').set('html', '');
			this[in_open_section].apply(this);
			return;	
		}
		
		//	left
		if(in_options.left){
			$('nav_main_sub').set('html', '');
			el = $('nav_sub_left');
			el.addEvent('ajaxload', (function(){
				//	animate main menu
				this[in_open_section].apply(this);
			}).bind(this));
			this.load(el, in_options.left);
			
		}
		
		//	left sub
		if(in_options.left_sub){
			el = $('nav_sub_left_sub');
			el.addEvent('ajaxload', (function(){
				//	animate menu
				if(this[in_open_section]) this[in_open_section].apply(this);		
			}).bind(this));
			this.load(el, in_options.left_sub);
			
		}
		
		//	right
		if(in_options.right){
			if(!in_options.main) $('nav_main_sub').set('html', '');
			el = $('nav_sub_right');
			el.addEvent('ajaxload', (function(){
				//	animate menu
				this[in_open_section].apply(this);		
			}).bind(this));
			this.load(el, in_options.right);
		}
		
		//	right sub
		if(in_options.right_sub){
			el = $('nav_sub_right_sub');
			el.addEvent('ajaxload', (function(){
				//	animate menu
				if(this[in_open_section]) this[in_open_section].apply(this);		
			}).bind(this));
			this.load(el, in_options.right_sub);
			
		}
		
		//	main
		if(in_options.main){
			el = $('nav_main_sub');
			el.addEvent('ajaxload', (function(){
				//	wipe
				el = $('nav_main_sub');
				el.setStyle('width', '0px');
				new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', 0, 180);		
			}).bind(this));
			this.load(el, in_options.main);
		}
		
		
		
	},
	
	load: function(in_div, in_url){
		$(in_div).set('html', '');
	    new Request.HTML({   
	        method: 'get',   
	        url: 'page=nav.'+in_url, 
	        evalScripts: true, 
	        headers: {'X-REQUEST': 'AJAX'},
	        update: in_div,
	        onComplete: function(){
	        	in_div.fireEvent('ajaxload');
	            in_div.removeEvents('ajaxload');
	        }
		}).send();
	},
	
	none: function(){
		//	close right
		el = $('nav_sub_right');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 330);
		//	close right content
		if($defined($('nav_sub_right_content'))){
			el = $('nav_sub_right_content');
			if(el.fx) el.fx.cancel();
			el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), -126);
		}
		
		//	close left
		el = $('nav_sub_left');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', el.getSize().x, 36);
		
		
		//	slide main
		el = $('nav_main');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 36);
	},
	
	left: function(){

		//	close right
		el = $('nav_sub_right');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 330);
		
		//	close right content
		if($defined($('nav_sub_right_content'))){
			el = $('nav_sub_right_content');
			if(el.fx) el.fx.cancel();
			el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), -126);
		}
		
		//	open left
		el = $('nav_sub_left');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', el.getStyle('width').toInt(), 150);
		
		//	slide main
		el = $('nav_main');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 150);
	},
	
	right: function(){
		
		//	close left
		el = $('nav_sub_left');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', el.getSize().x, 0);
		
		//	open right
		el = $('nav_sub_right');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 180);
		new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', el.getStyle('width').toInt(), 150);
		//	open right content
		if($defined($('nav_sub_right_content')) && el.getStyle('margin-left').toInt() != 180){
			el = $('nav_sub_right_content');
			if(el.fx) el.fx.cancel();
			el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', -126, 19);
		}
		
		//	slide main
		el = $('nav_main');
		if(el.fx) el.fx.cancel();
		el.fx = new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('margin-left', el.getStyle('margin-left').toInt(), 0);
	},
	
	main: function(){
		alert('x');
		el = $('nav_main_sub');
		//	drop fade
		el.setStyle('width', '0px');
		new Fx.Tween(el, {duration: this.fx_duration, transition: this.fx_transition}).start('width', 0, 180);	
	}
	
});

var my_nav = {};

window.addEvent('domready', function(){
	my_nav = new ns_nav();
	window.fireEvent('navready');
});
