window.addEvent('domready', function() {
	
	//console.log('broken');

	Fresh = new FreshMenu({pages:pages,galleries:galleries,handle:handle,publications:publications});

	new node({ id: $('about_link').id, parent: null, child: $('ul_final_nav_about'), type: 'about'});	

	new node({ id: $('projects_link').id, parent: null, child: $('sub_nav'), type: 'projects'});		

	new node({ id: $('multi_first').id,	parent: null, child: $('final_nav_multi'), type: 'sub'});

	new node({ id: $('lifestyle_first').id,	parent: null, child: $('final_nav_lifestyle'), type: 'sub' });

	new node({ id: $('residential_first').id, parent: null,	child: $('final_nav_residential'), type: 'sub' });

	new node({ id: $('media_link').id, parent: null, child: $('div_ul_press'), type: 'media' });
	
	new node({ id: $('media_link').id, parent: null, child: $('div_ul_press'), type: 'media' });

	new node({ id: $('services_link'), parent: null, child: null, type: 'services' });
	

	tree.each(function (el, idx) {

		if(el.child) {
			var child = $(el.child);						
			var fx = new Fx.Morph($(el.child), {duration: 500, link: 'cancel', transition: Fx.Transitions.linear});
			$(el.id).store('morph_menu', fx);
		}
		

		$(el.id).addEvents({
			'mouseenter':function() {								
				if(!visible(el)) {		
					this.retrieve('morph_menu').start({
						'opacity' : [0, 1]
					})
					$clear(revert);	
				}
			},
			'mouseleave':function() {
				revertTimer();
			}			
		})	

	})	
	
	highlight_menus();
	
	//console.log(Fresh.active_sub_link);
	
	if(Fresh.fire_link) {		
		$('projects_link').fireEvent('mouseenter');
		original_main = $('projects_link');
		
		$(Fresh.fire_link).fireEvent('mouseenter');
		original_sub = $(Fresh.fire_link);
		
		$(Fresh.active_sub_link).addClass('highlighted');
		$('projects_link_real').addClass('highlighted');
		
		adjust_menu();		
	}
	
	if(Fresh.sub_link) {		
		$('media_link').fireEvent('mouseenter');
		original_main = $('media_link');
				
		$(Fresh.sub_link).fireEvent('mouseenter');		
		original_sub = $(Fresh.sub_link);
		
		$(Fresh.active_sub_link).addClass('highlighted');		
		$(Fresh.to_activate).addClass('active');		
		$(Fresh.to_activate).fireEvent('mouseenter');
		original_final = $(Fresh.to_activate);
				
		$('media_link_real').addClass('highlighted');	
	}	
	

})

var tree = new Array();

var active_main;
var active_sub;
active_sub = null;
var active_final;
active_final = null;

var original_main;
var original_sub;
var original_final;

var revert = null;


//function to say "you're already active (true)" or clean up stale menus and say "your not active yet (false)"

function visible(el) {
	if(active_sub == $(el.id) || active_final == $(el.id)) {
		return true;
	}
	
	switch(el.type){
		
		case 'about' :			
			clear_both();
			active_final = $(el.id);
			return false;		
			break;	
				
		case 'projects' :
			clear_both();
			active_sub = $('projects_link');
			return false;
			break;	
				
		case 'sub' :		
			if(active_final && active_final != $(el.child.id)) {
				clear_active_final();
			}
			active_final = $(el.id);		
			active_sub = $('projects_link');
			return false;
			break; 	
					
		case 'services' :
			clear_both();
			return true;		
			break;	
			
		case 'media' :
			clear_both();
			active_sub = $('media_link');
			return false;
			break;
			
			
			
	}
}


function clear_active_final() {
	if(active_final) {
		$(active_final.id).retrieve('morph_menu').start({
			'opacity':[0]
		})
		active_final = null;
	}
}

function clear_active_sub() {
	if(active_sub){
		active_sub.retrieve('morph_menu').start({
			'opacity':[0]
		})		
		active_sub = null;
	}
}

function clear_both() {
	clear_active_sub();
	clear_active_final();
}

function highlight_menus() {
	
	if(handle == 'services') {
		$('services_link_real').addClass('highlighted');
	}

	if(handle == 'team' || handle == 'jules' || handle == 'firm') {
		$('about_link_real').addClass('highlighted');
		$('about_link').fireEvent('mouseenter');
		original_main = $('about_link');
		switch(handle) {
			case 'team':
				$('team_link').addClass('highlighted');
				$('team_li').addClass('on');
				break;
			case 'jules':
				$('jules_link').addClass('highlighted');
				$('jules_li').addClass('on');
				break;
			case 'firm':
				$('firm_link').addClass('highlighted');
				$('firm_li').addClass('on');
				break;
		
		}
	}
}

function adjust_menu() {
	coords = $(Fresh.active_link).getPosition($('final_nav_lifestyle_content'));
	$('final_nav_lifestyle_content').scrollTo(0, coords.y);
}	

function adjust_pub() {
	coords = $(Fresh.active_link).getPosition($('final_nav_lifestyle_content'));
	$('final_nav_lifestyle_content').scrollTo(0, coords.y);
}

function revertTimer() {	
	if(revert){
		$clear(revert);
		//console.log('clearing revert');
	}	
	revert = (function(){ revertMenu(); }).delay(3000);
}

function revertMenu() {
	if($(original_main)){
		$(original_main).fireEvent('mouseenter');
	}
	if($(original_sub)){
		$(original_sub).fireEvent('mouseenter');
	}
	if($(original_final)){
		$(original_final).fireEvent('mouseenter');
	}
}

//nodes used so can loop through them and create effects
var node = new Class({
	options: {
		id: null,
		parent: null,
		child: null,
		type: null,
		name: null		
	},
	initialize: function(options) {
		this.setOptions(options);
		this.addToTree();				
	},
	addToTree: function() {
		tree.push(this.options);		
	}

});
node.implement(new Options, new Events);


//this was going to build every link originally but time constraint lessend it to just gallery links, more hardcoding :(
var FreshMenu = new Class({

	main_nav:  			$('main_nav'),
	sub_nav:   			$('sub_nav'),
	final_nav: 			$('final_nav'),
	sub_navs:  			{'multi': '25', 'lifestyle': '26', 'residential':'27' },
	fire_link: 			null,
	active_link: 		null,
	active_sub_link: 	null,

	options: {
		pages: 			null,
		galleries: 		null,
		handle: 		null,
		publications: 	null,
		tree:			null,
		links: 			[]
	},
	initialize: function(options){
		this.setOptions(options);
		this.links = [];	
		this.begin_menu(this.options.pages, this.options.galleries, this.options.publications);
	},
	begin_menu: function(pages, galleries){
		this.add_galleries(galleries);
		this.add_publications(publications);	
	},
	add_pages: function(pages){

	},
	add_galleries: function(galleries) {
		galleries.each(function(el,idx){
			//console.log(el);
			if(el.gallery.id != 27){
				info 			= this.categorize_gallery(el);
	
				el.ul 			= info.ul;
				el.parent_li 	= info.parent_li;
				el.parent_div	= info.parent_div;
	
				this.insert_into_gallery_nav(el);
			}
		},this);			
	},
	add_publications: function(publications) {
		publications.each(function(el,idx){
			this.insert_into_publications_nav(el);
		},this);			
	},
	insert_into_gallery_nav: function(gallery) {

		var li = new Element('li');			
		var a = new Element('a',{				
			'href': '/galleries/' + gallery.gallery.handle,
			'html': gallery.gallery.title,
			'id'  : 'gallery_link_' + gallery.gallery.handle
		});
		
		if(gallery.gallery.handle == handle) {			
			a.addClass('active');
			li.addClass('on');
			this.activate_menu(gallery); 
		}
				
		li.inject($(gallery.ul));
		a.inject(li);
		
		this.populate_link_urls(gallery);		
	},
	insert_into_publications_nav: function(publication){
		var li = new Element('li');			
		var a = new Element('a',{				
			'href': '/publications/' + publication.publication.handle,
			'html': publication.publication.title,
			'id'  : 'publication_link_' + publication.publication.handle
		});

		if(publication.publication.handle == handle) {			
			a.addClass('active');
			li.addClass('on');
			this.activate_menu_pub(publication); 
		}
		
		pub_ul = $('ul_press');
		
		if(pub_ul) {
			li.inject(pub_ul);
			a.inject(li);
		}
		
		this.populate_media_urls(publication);
	},
	categorize_gallery: function(gallery) {			

		switch(gallery.gallery.parent_id) {
			case 25:
				return {ul: 'ul_final_nav_multi', parent_li: 'multi_first', parent_div: 'final_nav_multi'};
				break;
			case 26:
				return {ul: 'ul_final_nav_lifestyle', parent_li: 'lifestyle_first', parent_div: 'final_nav_lifestyle'};
				break;
			case 27:
				return {ul: 'ul_final_nav_residential', parent_li: 'residential_first', parent_div: 'final_nav_residential'};
				break;
		}
	},
	activate_menu: function(gallery) {
		this.active_link = 'gallery_link_' + gallery.gallery.handle;
		this.fire_link = gallery.parent_li;
		this.active_sub_link = gallery.parent_li + "_link";		
	},	
	activate_menu_pub: function(publication) {
		this.active_link = 'publication_link_' + publication.publication.handle;		
		this.sub_link = $('ul_press');
		this.to_activate = $('media_link');
		this.active_sub_link = $('media_link');		
	},
	populate_link_urls: function(gallery) {
		if($('projects_link_real').href.indexOf('null') > 1){
			$('projects_link_real').set('href','/galleries/' + gallery.gallery.handle);
		}		
		
		link_string = gallery.parent_li + '_link';		
		if($(link_string).href.indexOf('null') > 1){
			$(link_string).set('href','/galleries/' + gallery.gallery.handle);			
		}		
	},
	populate_media_urls: function(publication) {
		if($('media_link_real').href.indexOf('null') > 1){
			$('media_link_real').set('href','/publications/' + publication.publication.handle);
		}		
	}


});		
FreshMenu.implement(new Options, new Events);

