// 
//  (c) 2007 Gavin Botica
//  www.stompbox.net.au
//  requires mootools 1.11
//  (not tested with any other version)
//  http://mootools.net.
//
////////////////////////////////////////

new Asset.images([
		'/images/menu-tab-l.gif',
		'/images/menu-tab-r.gif',
		'/images/scroll-left.gif',
		'/images/scroll-right.gif',
		'/images/scrollBar.gif',
		'/images/scrollButton-l.gif',
		'/images/scrollButton-r.gif',
		'/images/menu-button-close.gif',
		'/images/menu-button-open.gif'
 ]);
	

var Site = { // Site
	
	Init: function() { 
	
			// preload interface graphics

		if($('scroller'))	{ 
			Site.mscroll();  
			Site.menuFadeInit();
			}
			
		if($('main-menu'))	Site.menuFx();
		if($('site-menu'))	Site.siteMenuFx();
		if($('sub-menu'))	Site.subMenuFx();
		
		// smooth scrolling to anchors '#'
		new SmoothScroll({transition: Fx.Transitions.quadOut,fps: 60,duration: 1200});


},
	
	
	subMenuFx: function() {
		
		$$('#sub-menu li').each(function(el){
										 
		if (el.getProperty('class') !== 'current') {
	
		var overfxs = new Fx.Style(el, 'opacity', {'duration': 260, 'wait': false});
		
		overfxs.set(0.70);
		
		// safari has a opacity flicker bug. using opacity of .99 rather than 1.0 avoids the bug
		// see: http://www.quirksmode.org/bugreports/archives/2007/03/Webkit_hover_opacity_bug.html
		// tested: 7.11.07 safari winXP 3.03 - fix still required
		var onOpacity = 1;
		if (window.webkit) {onOpacity = 0.99;}
		
		el.addEvent('mouseenter', function(){
				
				overfxs.start(onOpacity);
				
		});
		
		el.addEvent('mouseleave', function(){								   
				
				overfxs.start(0.70);
				
			});
		}
	});
		
},
	
	//site menu at top right of window hover fx
	siteMenuFx: function() {
	
		$$('#site-menu a').each(function(el) { 
										 
		el.addEvent('mouseenter',function(){
										  
			el.effect('marginRight', {duration: 100,transition: Fx.Transitions.Sine.easeIn, wait: false}).start(5);
			
		})
		
		el.addEvent('mouseleave',function(){
										  
			el.effect('marginRight', {duration: 300,transition: Fx.Transitions.Sine.easeOut, wait: false}).start(0);
			
			});
		
		});
		
		
		var buttonLink = $ES('p.button-link');
		
		buttonLink.each(function(el) {
								 
		var buttonLinkFx = new Fx.Styles(el, {duration: 220,transition: Fx.Transitions.Sine.easeOut});
		
		el.setStyle('opacity',0.78);
		
		var onOpacity = 1;
		if (window.webkit) {onOpacity = 0.99;}
		
		el.addEvent('mouseenter', function(){
			
				buttonLinkFx.start({	 
								 'opacity': onOpacity
								 });
			
			})
			
		el.addEvent('mouseleave', function(){
			
				buttonLinkFx.start({
								 'opacity': 0.78
								 });
			
			})
		
		})
},
	 
	 
	 // for portfolio pages, init the menu fade function
	menuFadeInit: function(){
		
		
		// menu fade fx
		menuFader = new Fx.Style($('main-menu'), 'opacity', {duration: 490,transition: Fx.Transitions.Sine.easeIn, onComplete: 
								  
								  function(){
									  
									   menuSwitch.setText(newHTML);
									   menuLinkAnchor.toggleClass('close')
									   
									   }
								});
	// set menu opacity 0 to start
		menuFader.set(0);
		
	
	// toggle the menu on click
		//menuLinkAnchor.addEvent('click', function(e){
												  
			//	e = new Event(e).stop();	
			//	e = new Event(e);
			//	Site.menuFadeToggle();
			//	e.stop();											
			//});
	if($('scrollBar')) {
		
	// grab the scrollbar
		var scrollVar = $$('#scrollKnobContainer','#scrollBar');
		
		
	// scrollbar fade fx
		menuFx = new Fx.Elements(scrollVar,{duration: 500, transition: Fx.Transitions.sineOut});
	
	}
},
	
	
	// do the menu fade in / out
	menuFadeToggle: function() {
		
		//newHTML = menuSwitch.innerHTML == 'Open' ? 'Close' : 'Open';
	
		
		if ($('main-menu').getStyle('opacity') >= 0.85) {
				
				
				menuFader.start(0).chain(function(){
					$$('div.videoContent').setStyle('display', 'block');
												  });
				if($('scrollBar')) {
				menuFx.start({
							 
								 '0': {'opacity': 1},
								 '1': {'opacity': 1}
								 
							 });
				}
				} else {

				$('main-menu').setStyle('display','block');
				$$('div.videoContent').setStyle('display', 'none');
				menuFader.start(0.85);
				if($('scrollBar')) {
				menuFx.start({
							 
								 '0': {'opacity': 0},
								 '1': {'opacity': 0}
								 
							 });
				}
				}	
},
	 
	// main menu hover fx
	menuFx: function() {
	
			$$('#main-menu li a').each(function(el) { 
				
			var hoverFx = new Fx.Styles(el, {duration: 100, transition: Fx.Transitions.Sine.easeOut, fps: 60, wait: false});
		 
			el.addEvents({
						 
				'mouseenter': function(){
					
					hoverFx.start({'paddingLeft': '6px','color': '#fff'})
					
			},
			
			'mouseleave': function(){
				
					hoverFx.start({'paddingLeft': '0px','color': '#ccc'})
			
			}
			
			});
		});
	
},
	
	
	// fx for portfolio pages
	mscroll: function() {
			
			if ($('scrollBar')) {
	
			// init scroller
			MooScroll = new MooScroller('scroller', 'scrollKnob', { mode: 'horizontal', scrollSteps: 6 });
			
			// run mooscroll method: update(), when window resizes
			window.addEvent('resize',function(){MooScroll.update();});
					
			// scroller opacity fx on hover
				
			var skc = $('scrollKnobContainer');
			
			skc.setStyle('opacity',0.7).setStyle('background','url(/images/scrollBar.gif) 0 0 no-repeat');
			
			var scrollFadeIn = new Fx.Style(skc, 'opacity', {duration: 150, transition: Fx.Transitions.sineIn});
			var scrollFadeOut = new Fx.Style(skc, 'opacity', {duration: 750, transition: Fx.Transitions.sineOut});
			
			skc.addEvents({
						  
					'mouseenter': function(){
						
						scrollFadeOut.stop();
						scrollFadeIn.start(1)
						
						},
						
					'mouseleave': function(){
						
						scrollFadeIn.stop();
						scrollFadeOut.start(0.7)
						
						}
			});
			};
			
			
			// main menu link for portfolio pages
			if ($('menuLink')) {
			
			menuLinkAnchor = $E('a', 'menuLink');
			menuSwitch = $E('span', 'menuLink');
			var menuTrigger = new Fx.Styles(menuLinkAnchor, {duration: 200, transition: Fx.Transitions.sineOut});
			
			menuLinkAnchor.setStyle('opacity',0.75);
				
				$('menuLink').addEvents({
										 
					'mouseenter': function(){
						
						menuTrigger.start({'height': 23, 'paddingTop': 7,'opacity': 1});
						
						},
						
					'mouseleave': function(){
						
						menuTrigger.start({'height': 23, 'paddingTop': 4,'opacity': 0.75});
						
						}
	
				});
			};
				
	} //  mscroll
							
}; 


// Init Site...

window.addEvent('domready', Site.Init);
