window.addEvent('domready', function() { 

	page = getPage();


	new node({		
		parent: $('link_projects'),					
		id: $('subNav_work').id,
		type: 'sub'
	});	

	new node({		
		parent: $('link_studio'),					
		id: $('subNav_studio').id,
		type: 'sub'
	});	
	
	new node({					
		//name: linky.c.category,
		parent: $('link_Buzz'),
		id: $('Buzz').id,
		type: 'final'
	});

	/*
	json.each(function(el, idx) {		
		parent_menu = findCategory(el);		
	});
	*/

	killer = new KillerMenuDude({
		linkies: json
		//main_nav: $('menu'),
		//sub_navs: [$('subNav_work'), $('subNav_studio')]
	});


	tree.each(function(element,idx){

		//console.log($(element.id));
		//console.log(element.parent);

		if(element.parent) {
			//console.log($(element.id));
			var movement = getMovement(element);
			var parent = $(element.parent);

			var fx = new Fx.Morph($(element.id), {duration: 500, link: 'cancel', transition: Fx.Transitions.linear});

			//debug_string += fx + "\t";

			parent.store('morph_menu', fx);

			parent.addEvents({
				'mouseenter':function() {

					//console.log(element + "<-- element passed");
					//console.log(parent + "<-- element passed parent");

					if(!visible(element)) {		
						//alert(this.retrieve('morph_menu').pass);						
						this.retrieve('morph_menu').start({
							'opacity' : [0, 1],
							'top' : movement
						})						
					}					
				},
				'mouseleave':function() {
					//alert(this.retrieve('morph_menu').pass.id);					
				}			
			})



		}				
	});


	//$('link_Sketch').addEvent('mouseenter', function() { doSketch(); });
	//console.log(page);
	//console.log($(original_nav));
	//console.log($(original_subnav));


	if($(original_nav)){
		$(original_nav).fireEvent('mouseenter');
	}
	if($(original_subnav)){
		$(original_subnav).fireEvent('mouseenter');
	}


	$$('div#footer a').each(function(el, idx) {
		el.store('effect',new Fx.Morph(el, {duration: 'long', link: 'cancel', transition: Fx.Transitions.Expo.easeOut}));
		el.addEvents({
			'mouseenter': function() {
				$clear(revert);
				if(this.className ==  'on'){
					this.store('on', true);
					return true;
				}				
				this.retrieve('effect').start({
					'color': ['#AAAAAA' ,'#FFFFFF']					
				})				
			},
			'mouseleave': function(){
				revertTimer();				
				if(!this.retrieve('on')) {
					this.retrieve('effect').start({
						'color': ['#FFFFFF' ,'#AAAAAA']
					})
				}
			}
		})		
	})



	$('scroll_right_img').addEvents({
		'mouseenter': function() {
			this.src='/img/scroll_right_on.gif';
			scroll_right(active_finalnav);
			$clear(revert);	
		},
		'mouseleave': function() {
			this.src='/img/scroll_right.gif';
			$clear(scroller_right);
			revertTimer();
		}
	});

	$('scroll_left_img').addEvents({
		'mouseenter': function() {
			this.src='/img/scroll_left_on.gif';			
			scroll_left(active_finalnav);	
			$clear(revert);
		},
		'mouseleave': function() {
			this.src='/img/scroll_left.gif';
			$clear(scroller_left);
			revertTimer();
		}
	});


	steriles = $$('a.sterile');
	//console.log(steriles);

	steriles.each(function(el,idx){
		el.addEvent('mouseenter', function() {
			sterilize();
		})
	});
	
	//alert(page);
	
	switch(page){
		case 'studio':
			original_nav = "link_studio";
			$('link_studio').fireEvent('mouseenter');
			break;
		case 'projects':
			original_nav = "link_projects";
			$('link_projects').fireEvent('mouseenter');
			break;
		
	
		case '2004':
			$('link_studio').fireEvent('mouseenter');
			$('link_Buzz').fireEvent('mouseenter');
			$('link_2004').addClass('on');
			$('link_2004').store('on', true);
			original_nav = "link_studio";
			original_subnav = "link_Buzz";
			break;
		case '2005':
			$('link_studio').fireEvent('mouseenter');
			$('link_Buzz').fireEvent('mouseenter');
			$('link_2005').addClass('on');
			$('link_2005').store('on', true);
			original_nav = "link_Buzz";
			original_subnav = "link_Buzz";
			break;
		case '2006':
			$('link_studio').fireEvent('mouseenter');
			$('link_Buzz').fireEvent('mouseenter');
			$('link_2006').addClass('on');
			$('link_2006').store('on', true);
			original_nav = "link_Buzz";
			original_subnav = "link_Buzz";
			break;
		case '2007':
			$('link_studio').fireEvent('mouseenter');
			$('link_Buzz').fireEvent('mouseenter');
			$('link_2007').addClass('on');
			$('link_2007').store('on', true);
			original_nav = "link_Buzz";
			original_subnav = "link_Buzz";
			break;
		case '2008':
			$('link_studio').fireEvent('mouseenter');
			$('link_Buzz').fireEvent('mouseenter');
			$('link_2008').addClass('on');
			$('link_2008').store('on', true);
			original_nav = "link_Buzz";
			original_subnav = "link_Buzz";
			break;
		case 'join':
			$('link_studio').fireEvent('mouseenter');
			$('link_join').addClass('on');
			$('link_join').store('on', true);
			original_nav = "link_studio";
			break;
		case 'collaborate':
			$('link_studio').fireEvent('mouseenter');
			$('link_collaborate').addClass('on');
			$('link_collaborate').store('on', true);
			original_nav = "link_studio";
			break;
		case 'commission':
			$('link_studio').fireEvent('mouseenter');
			$('link_commission').addClass('on');
			$('link_commission').store('on', true);
			original_nav = "link_studio";
			break;
		case 'contact':
			$('link_studio').fireEvent('mouseenter');
			$('link_contact').addClass('on');
			$('link_contact').store('on', true);
			original_nav = "link_studio";
			break;
			
		case 'clients':
			$('link_projects').fireEvent('mouseenter');
			$('link_clients').addClass('on');
			$('link_clients').store('on', true);
			original_nav = "link_projects";
			break;			
		case 'extras':
			$('link_projects').fireEvent('mouseenter');
			$('link_extras').addClass('on');
			$('link_extras').store('on', true);
			original_nav = "link_projects";
			break;
		case 'patrons':
			$('link_projects').fireEvent('mouseenter');
			$('link_patrons').addClass('on');
			$('link_patrons').store('on', true);
			original_nav = "link_projects";
			break;
		case 'sketches':
			$('link_Sketch').addClass('on');
			$('link_Sketch').store('on', true);
			break;
	}

	disables = $$('a.disable');
	disables.each(function(el,idx){
		el.addEvent('click', function(){return false;});
	})

});

var disables;

var work 	= new Array();
var studio 	= new Array();	
var parent_menu;
var tree	= new Array();
var subnavs = new Array();
var finalnavs = new Array();

var steriles = new Array();

var active_subnav = '';
var active_finalnav = '';


var original_nav = '';
var original_subnav = '';
var original_finalnav = '';

var built_divs = new Array();

var revert = null;

var debug_string = '';


work 	= ['Play', 'Dine', 'Work', 'Live', 'Stay', 'Shop', 'Extras'];
studio 	= ['Events', 'Haus'];


var node = new Class({
	options: {
		parent: null,
		child: null,
		type: null,
		name: null,
		id: null	
	},
	initialize: function(options) {
		this.setOptions(options);
		this.addToHash();				
	},
	addToHash: function() {
		tree.push(this.options);		
	}

});
node.implement(new Options, new Events);



var KillerMenuDude = new Class({
		options: {
			linkies: [],
			originalNav: ''			
		},
		initialize: function(options){
			this.setOptions(options);
			this.linkies = [];	
			this.addLinkies(this.options.linkies);
			this.checkForProjectPage();
			//highlight active
			//revert to original
		},
		addLinkies: function(linkies) {
			json.each(function(linky){
				this.linkies.include(linky);				
				this.createLinkyPoo(linky);				
			},this);		
		},
		createLinkyPoo: function(linky) {			
				
			

			if(page == linky.co.link) {
				current_page = true;
				//console.log(page+ " " + linky.co.link +"" + (page == linky.co.link) +" ");
			} else {
				current_page = false;
			}

			var category = findCategory(linky.c.category);
			
			//console.log(category);

			//debug_string += linky.c.category + ":" + category + "\t";

			if(category) {	
				//alert($(linky.c.category));	

				//debug_string += linky.co.name + " : " + (!$(linky.c.category)) + "       ";

				//debug_string += built_divs.indexOf(linky.c.category) + "\t";

				if(built_divs.indexOf(linky.c.category) < 0) {

					classy = (category == 'sketch') ? 'subNav' : 'finalNav';
					
					var d = new Element('div',{
						'class':classy,
						'id':linky.c.category
					});	

	
					
					//$('link_' + linky.c.category).href = '/projects/details/' + linky.co.link;
					
					if(linky.c.category == 'Haus'){
						$('link_' + linky.c.category).href = '/haus/' + linky.co.link;
					}	
					
					/*
					if(category == "projects" && $('link_projects').href.indexOf("none") > 0 ){
						$('link_projects').href = '/projects/details/' + linky.co.link;
					}
					if(category == "studio" && $('link_projects').href.indexOf("none") > 0){
						$('link_studio').href = '/haus/werkers'
					}
					*/
					
					//console.log(d);	
					//alert(d);	
					//debug_string += d.id + " : " + linky.co.name + "\t";

					var u = new Element('ul',{
						'id':'ul_' + linky.c.category
					});
					//debug_string += u.id + "\t";
					u.inject(d);				
					d.inject($('footer'));	

					//console.log($('link_' + linky.c.category));
					
					var typey;
					typey =  (category == 'sketch') ? 'subNav' : 'final';				

					var nod = new node({					
						//name: linky.c.category,
						parent: $('link_' + linky.c.category),
						id: linky.c.category,
						type: typey
					});

					built_divs.push(linky.c.category);
				}
				var a_href;

				switch(linky.co.link) {
					case 'directors':
						a_href = '/haus/directors';
						break;
					case 'werkers':
						a_href = '/haus/werkers';
						break;
					case 'graham':
						a_href = '/haus/graham';
						break;
											
					default: 
						a_href = '/projects/details/' + linky.co.link
						break;
				}

				var a = new Element('a',{				
					'href': a_href,
					'html':linky.co.name	
				});
				

				if(current_page) {
	
					a.addClass('on');

					//console.log(category + "  <--category");
					category = (category == 'sketch') ? 'Sketch' : category;	
					original_nav = "link_" + category;
					$(original_nav).addClass('on');
					//console.log(original_nav + "  <--original_nav");

					original_subnav = "link_" + linky.c.category;
					
					$(original_subnav).addClass('on');
					//console.log(original_subnav);

					//console.log('on');
				}

				//this.addEffect(linky,a);		


				u = $("ul_" + linky.c.category);

				var li = new Element('li', {
					id: "li_" + linky.c.category
				});			
				li.inject(u);
				a.inject(li);

			}

		},
		checkForProjectPage: function() {			
			page = getPage();
			
			category = findCategory(page);
			
			if(page && category) {
				$('link_' + page).addClass('on');
				$('link_' + category).addClass('on');
	
				original_nav = 'link_' + category;
				original_subnav = 'link_' + page;
				
				//console.log('hit');	
				//console.log(page + " " + category)
			}
		}/*,
		addEffect: function(linky,a) {

			$(a).store('effect',new Fx.Morph($(a), {duration: 'normal', link: 'cancel', transition: Fx.Transitions.Expo.easeOut}));			

			a.addEvents({
				'mouseover': function() {
					this.retrieve('effect').start({
						'color': ['#AAAAAA' ,'#FFFFFF']						
					})
				},
				'mouseout': function(){
					this.retrieve('effect').start({
						'color': ['#FFFFFF' ,'#AAAAAA']	
					})
				}
			})
		}	
		*/
});

KillerMenuDude.implement(new Options, new Events);

function getPage(){
	var loc = window.location.toString(); 			
	var page = loc.substr(loc.lastIndexOf('/') + 1,loc.length);
	return page;
}

function findCategory(el) {

	for(x=0; x < work.length; x++){
		if(el == work[x]){
			//debug_string += 'yeas';
			return 'projects';						
		}
	}

	for(x=0; x < studio.length; x++){
		if(el == studio[x]){
			return 'studio';			
		}
	}

	if(el == 'Sketch') {
		return 'sketch';	
	} 

	return false;

	/*	

	if(work.indexOf(el) >= 0)	{
		return 'projects';
	} else if(studio.indexOf(el) >= 0) {
		return 'haus';		
	} else if(el == 'Sketch') {
		return 'sketch';	
	} else {
		return false;
	}
	*/
}

function makeVisible(el) {
	el.setStyle('visibility','visible');
}	

function getMovement(el) {
	if(el.type == 'final'){
		return [50,70];
	} else {
		return [22,42];
	}
}

function visible(el) {
	//console.log(el + "<==el");
	//console.log(el.parent + "<-- el.parent")
	if(active_finalnav == el || active_subnav == el) {
		return true;
	} else {	
		hide_scroller_images();
		if(el.type=='final'){
			if(active_finalnav){
				//console.log('fading finalnav => ' + $(active_finalnav.parent));
				$(active_finalnav.parent).retrieve('morph_menu').start({
					'opacity':[0]
				})
			}
			active_finalnav = el;
			scrolly_polly(el);
		}else {
			if(active_subnav){
				if($chk(active_finalnav)){
					if($(active_finalnav.parent)){
	
						//console.log(active_finalnav.id);
	
						$(active_finalnav.parent).retrieve('morph_menu').start({
							'opacity':[0]
						})
					}
				}

				$(active_subnav.parent).retrieve('morph_menu').start({
					'opacity':[0]
				})

			}
			active_subnav = el;
		}		
		return false;		
	}
}

function revertTimer() {	
	if(revert){
		$clear(revert);
		//console.log('clearing revert');
	}	
	revert = (function(){ revertMenu(); }).delay(3000);
}

function revertMenu() {
	//console.log(original_subnav);
	if($(original_nav)){
		$(original_nav).fireEvent('mouseenter');
	}
	
	if($(original_subnav)){
		$(original_subnav).fireEvent('mouseenter');
	}
}


function sterilize() {
	hide_scroller_images();

	if($chk(active_finalnav)) {
		if($(active_finalnav.parent).retrieve('morph_menu')){
			//console.log(active_finalnav.parent.id)
			$(active_finalnav.parent).retrieve('morph_menu').start({
				'opacity':[0]
			})		
			active_finalnav = null;			
		}	
	}	
}

function doSketch() {
	hide_scroller_images();
	if($chk(active_finalnav)) {
		if($(active_finalnav.parent).retrieve('morph_menu')){
			//console.log(active_finalnav.parent.id)
			$(active_finalnav.parent).retrieve('morph_menu').start({
				'opacity':[0]
			})		
			active_finalnav = null;			
		}	
	}
	if($chk(active_subnav)) {
		if($(active_subnav.parent).retrieve('morph_menu')){
			//console.log(active_finalnav.parent.id)
			$(active_subnav.parent).retrieve('morph_menu').start({
				'opacity':[0]
			})		
			active_subnav = null;			
		}	
	}
}
	
function scrolly_polly(el) {

	//console.log(el.id + "scrolly: " + ($(el.id).getScroll().x + " " + $(el.id).getSize().x));

	if ($(el.id).getScrollSize().x > 920){	
		$(el.id).setStyles({
			'margin':'0 10px',
			'width': 900
		});	
		show_scroller_images();
	} else {
		hide_scroller_images();
	}
}


function show_scroller_images(){
	$('scroll_left_img').setStyle('visibility','visible');
	$('scroll_right_img').setStyle('visibility','visible');
}

function hide_scroller_images(){
	$('scroll_left_img').setStyle('visibility','hidden');
	$('scroll_right_img').setStyle('visibility','hidden');
}




var scroller_left 	= null;
var scroller_right 	= null;

function righter(el) {
	to_here = $(el.id).getScroll();	
	to_here = to_here.x + 3;
	$(el.id).scrollTo(to_here, 0);
	//console.log("crolling" + $(el.id) + " to " + to_here);		
}

function lefter(el) {		
	to_here = $(el.id).getScroll();	
	to_here = to_here.x - 3;	
	$(el.id).scrollTo(to_here, 0);			
}

function scroll_right(el) {
	//console.log('here ' + el.id);
	scroller_right = function() { righter($(el.id)) };
	//righter($(el.id));
	scroller_right = scroller_right.periodical(15);
}


function scroll_left(el) {
	scroller_left = function() { lefter($(el.id)) };
	scroller_left = scroller_left.periodical(15);
}



