YUI().use('node', function( Y )
{
	var IntervallArray = new Array();
	// http://wuv.example.com/nachrichten/unternehmen
    Y.on( 'contentready', function( e )
    {
	    	var List = Y.all( '.teaserbox'),
	    	    index = 0;
	    	
	    	List.each(function() {
	    		var Boxid = List.item(index).get('id'),
	    			TickerOn = document.getElementById( Boxid + '_ticker' ).value,
	    		    Frontpage = sliderShow( Boxid );
	    			//alert(TickerOn + ' :: ' + TickerDelay);
	    		if (TickerOn == 1)
	    		{
	    			Frontpage.shouldTick = true;
	    			var TickerDelay = document.getElementById( Boxid + '_delay' ).value*1000;
	    			if (TickerDelay == 0)
	    				TickerDelay = 5500;
	    			IntervallArray[Boxid] = window.setInterval( function() 
	    			{
	    				Frontpage.tick();
	    			}, TickerDelay);
	    		}
	    		index++;
	    	});
    	
    }, 'BODY' );
    
    /*Y.on( 'mouseout', function( e )
    {
    	startIntervall();
	}, '.teaserbox' );*/
    
    

    var sliderShow = function ( id )
	{
    	YAHOO.namespace( 'frontpagemenu_' + id );
    	
    	var Dom = YAHOO.util.Dom,
    	    Frontpage = eval('YAHOO.frontpagemenu_' + id );
    	Frontpage.currentlySelected = 0;
    	Frontpage.selectElement = 0;
		Frontpage.ticker_id = id;
		Frontpage.random = 0;
		
	    /**
		 * Initalizes stuff
		 */
		Frontpage.init = function() 
		{
			Frontpage.ticker_on = document.getElementById( Frontpage.ticker_id + '_ticker' ).value;
			if (document.getElementById( Frontpage.ticker_id + '_delay' ))
			{
				Frontpage.tickerDelay = document.getElementById( Frontpage.ticker_id + '_delay' ).value*1000;
			}
			if (document.getElementById( Frontpage.ticker_id + '_random' ))
			{
				Frontpage.random = document.getElementById( Frontpage.ticker_id + '_random' ).value;
			}
			
			var imagesRoot = Dom.get( 'frontpage-menu-images_' + Frontpage.ticker_id );
			Frontpage.images = Dom.getElementsByClassName( 'class-banner', 'div', imagesRoot );
			if (Frontpage.random == 0)
		    {
				var listItemsRoot = Dom.get( 'frontpage-menu-items_' + Frontpage.ticker_id );
				var filter = function filter(y){return true;};
		    
		    	Frontpage.listElements = Dom.getElementsBy( filter, 'li', listItemsRoot );
		    	Frontpage.listAElements = Dom.getElementsBy( filter, 'a', listItemsRoot );
		    }
		    Frontpage.hideAllImages();
		    
			if (Frontpage.ticker_on != 1 && Frontpage.selectElement == 0)
			{
				var counter = Frontpage.images.length;
				var div = counter - 0;
				var randNum = Math.random();
				for (var i = 0; i <= div - 1; i++)
				{
					if (randNum >= i / div && randNum < (i+1) / div)
				    {
						Frontpage.selectElement = i + 0;
					}
				}
			}
		    
		    Frontpage.selectItem( Frontpage.selectElement, false );
		    if (Frontpage.random == 0)
		    {
			    YAHOO.util.Event.addListener( listItemsRoot, 'mouseover', Frontpage.onHoverCallback );
			    YAHOO.util.Event.addListener( listItemsRoot, 'click', Frontpage.onHoverMenu );
			    YAHOO.util.Event.addListener( Dom.get( 'frontpage-menu_' + Frontpage.ticker_id ), 'mouseover', Frontpage.onHoverMenu );
			    if (Frontpage.ticker_on == 1)
			    {
			    	YAHOO.util.Event.addListener( Dom.get( 'frontpage-menu_'+id ), 'mouseout', Frontpage.startIntervall );
			    }
			}
		};
		
		/**
		 * Callback for the mouseout for the div frontpage-menu_{ID}, only if ticker_on is 1
		 */
		Frontpage.startIntervall = function( event ) 
		{
			window.clearInterval(IntervallArray[Frontpage.ticker_id]);
			if (Frontpage.ticker_on == 1)
			{
				Frontpage.shouldTick = true;
				if (Frontpage.tickerDelay == 0)
					Frontpage.tickerDelay = 5500;
				IntervallArray[Frontpage.ticker_id] = window.setInterval( function() 
				{
					Frontpage.tick();
				}, Frontpage.tickerDelay);
			}
		};
		
		/**
		 * Callback for when hovering over the frontpage menu list items
		 */
		Frontpage.onHoverCallback = function( event ) 
		{ 
		    var target = YAHOO.util.Event.getTarget( event );
		    
		    window.clearInterval(IntervallArray[Frontpage.ticker_id]);

		    for( i = 0; i < Frontpage.listAElements.length; i++ )
		    {
		        if ( target != Frontpage.listAElements[i] )
		            continue;
		
		        Frontpage.selectItem( i, false );    
		        break;            
		    }
		};
		
		/**
		 * Callback for when hovering over any part of the frontpage menu
		 */
		Frontpage.onHoverMenu = function( event )
		{
		    Frontpage.shouldTick = false;
		};
		
		
		/**
		 * Hides all frontpage menu images
		 */
		Frontpage.hideAllImages = function() 
		{
		    for( j = 0; j < Frontpage.images.length; j++ )
		    {
		        Dom.addClass( Frontpage.images[j], 'hide' );
		        Dom.setStyle( Frontpage.images[j], 'opacity', 1 );
		    }
		};
		
		/**
		 * Deselectes all the frontpage menu items
		 */
		Frontpage.deselectListItems = function(index, previos, next) 
		{
			
			Dom.removeClass( Frontpage.listElements[index], 'paddingRest' );
			if (previos >= 0)
				Dom.removeClass( Frontpage.listElements[previos], 'paddingRest' );
			Dom.removeClass( Frontpage.listElements[next], 'paddingRest' );
			
		    for( k = 0; k < Frontpage.listElements.length; k++ )
		    {
		        Dom.removeClass( Frontpage.listElements[k], 'selected' );
		        Dom.removeClass( Frontpage.listElements[k], 'paddingLeft' );
		        Dom.removeClass( Frontpage.listElements[k], 'paddingRight' );
		        if (k != index && k != previos && k != next)
		        {
		        	Dom.addClass( Frontpage.listElements[k], 'paddingRest' );
		        }
		    }
		};
		
		Frontpage.selectItem = function( index, animate )
		{
			var currentBanner = Frontpage.images[Frontpage.currentlySelected];
		
		    if ( animate )
		    {
		        if ( currentBanner != Frontpage.images[index] )
		        {
		            Frontpage.fadeInBanner( Frontpage.images[index], currentBanner );            
		        }    
		    }
		    else
		    {
		        Frontpage.hideAllImages();
		        Dom.removeClass( Frontpage.images[index], 'hide' );        
		    }
		    
		    if (Frontpage.random == 0)
		    {
			    Frontpage.deselectListItems(index, index-1, index+1);
			
			    Dom.addClass( Frontpage.listElements[index], 'selected' );
			    if (index > 0)
			    {
			    	Dom.addClass( Frontpage.listElements[index-1], 'paddingLeft' );
			    }
			    if (index < Frontpage.listElements.length)
			    {
			    	Dom.addClass( Frontpage.listElements[index+1], 'paddingRight' );
			    }
		    }
		    
		    Frontpage.currentlySelected = index;
		};
		
		Frontpage.stopTicking = function()
		{
		    Frontpage.shouldTick = false;
		};
		
		Frontpage.tick = function()
		{
		    if ( !Frontpage.shouldTick )
		        return;
		    
		    var selected = Frontpage.currentlySelected;
		        
		    if ( selected + 1 >= Frontpage.listElements.length )
		        selected = 0;
		    else
		        selected++;
		    
		    Frontpage.selectItem( selected, true );
		};
		
		Frontpage.fadeInBanner = function( newBanner, oldBanner )
		{
		    var fadeBannerOut = new YAHOO.util.Anim( oldBanner, {opacity: {to: 0} }, 0.6 );
		    var fadeBannerIn = new YAHOO.util.Anim( newBanner, {opacity: {to: 1} }, 0.6 );
		    
		    var clearOpacity = function( type, args )
		    {
		        Dom.setStyle( oldBanner, 'opacity', 0 );
		        Dom.addClass( oldBanner, 'hide' );
		    };
		    
		    var fadeIn = function( type, args ) 
		    {
		        Dom.setStyle( newBanner, 'opacity', 0 );
		        Dom.removeClass( newBanner, 'hide' );
		        fadeBannerIn.animate();
		    };
		
		    fadeBannerIn.onComplete.subscribe(clearOpacity);
		    fadeBannerOut.animate();
		    fadeIn();
		};
		
		YAHOO.util.Event.onDOMReady( Frontpage.init );
		
	    return Frontpage;
	};
	
});