/**
 * Class Frontend
 *
 * @author		Felix Zandanel [fz at onwebworx dot net]
 * @package		zi-FrontendExtensions
 */
var Frontend = {
	
	resizeBody: function()
	{
		var useHeight = window.getHeight();
		if( !useHeight && document.body )
		{
			useHeight = document.body.offsetHeight;
		}

		if( useHeight )
		{
			$( 'footer' ).setStyle( 'position', useHeight < $( 'top-container' ).offsetHeight + 170 ? 'relative' : 'absolute' );
		}
	},
	
	changeFontSize: function( mode, size )
	{
		var bodyEl = $( document.body );
		var curFontSize = bodyEl.getStyle( 'fontSize' ).toInt();
		
		switch( mode )
		{
			case 'direct':
				var newFontSize = Math.min( 20, Math.max( 16, size ) );
				break;
		
			case 'up':
				var newFontSize = Math.min( curFontSize + 2, '20' );
				break;
			
			case 'down':
				var newFontSize = Math.max( curFontSize - 2, '16' );
				break;
			
			default:
				var newFontSize = 16;
				break;
		}
		
		if( newFontSize )
		{
			bodyEl.setStyle( 'font-size', newFontSize + 'px' );
		}
	},
	
	fixNav: function()
	{
		$( 'nav' ).getElements( 'li[id^=nav-]' ).each( function( element )
		{
			Browser.fixPNG( element.getElement( 'a' ).getElement( 'div' ) );
		} );
	},
	
	toggleSubNav: function( e )
	{
		e.stop();
		this.slideFx.toggle();
	}
	
};

Element.implement( {

	disableFocus: function()
	{
		var elements = [];
		var target = $( this );
		$A( arguments ).each( function( selector ) { elements.combine( target.getElements( selector ) ); } );
		elements.each( function( element ) { element.addEvent( 'focus', function() { this.blur(); } ) } );
		return this;
	}
		
} );

if( Browser.Engine.trident )
{
	window.addEvents( {
		domready: function() {
			Browser.fixPNG( 'header-ol' );
			Browser.fixPNG( 'random-image-ol' );
			Frontend.fixNav();
			Frontend.resizeBody();
		},
		resize: Frontend.resizeBody,
		load: Frontend.resizeBody
	} );
}
else
{
	window.addEvent( 'domready', function() { $( document.body ).disableFocus( 'a' ); } );
}

window.addEvent( 'domready', function() {
	$( 'nav' ).getElements( 'li[id^=nav-]' ).each( function( element )
	{
		element.slideFx = new Fx.Slide( element.getElement( 'div[class^=subnav]' ), {
		    mode:		'vertical',
		    duration:	500
		} );
		
		element.slideFx.addEvent( 'complete', ( function() {
			if( this.slideFx.open )
			{
				this.removeClass( 'closed' );
			}
			else
			{
				this.addClass( 'closed' );
			}
		} ).bind( element ) );
		
	    if( !element.hasClass( 'current' ) && !element.hasClass( 'trail' ) ) { element.addClass( 'closed' ).slideFx.hide(); }
	    
	     element.getElement( 'a' ).addEvent( 'click', Frontend.toggleSubNav.bindWithEvent( element ) );
	} ); 
} );

new Asset.images( [
	'/img/nav-button-open-white.gif',
	'/img/nav-button-open-green.gif',
	'/img/nav-button-closed-white.gif',
	'/img/nav-button-closed-green.gif'
] );

