jQuery(function( $ ){
	/**
	 * Most jQuery.serialScroll's settings, actually belong to jQuery.ScrollTo, check it's demo for an example of each option.
	 * @see http://flesler.demos.com/jquery/scrollTo/
	 * You can use EVERY single setting of jQuery.ScrollTo, in the settings hash you send to jQuery.serialScroll.
	 */
	
	/**
	 * The plugin binds 6 events to the container to allow external manipulation.
	 * prev, next, goto, start, stop and notify
	 * You use them like this: $(your_container).trigger('next'), $(your_container).trigger('goto', [5]) (0-based index).
	 * If for some odd reason, the element already has any of these events bound, trigger it with the namespace.
	 */		
	
	/**
	 * IMPORTANT: this call to the plugin specifies ALL the settings (plus some of jQuery.ScrollTo)
	 * This is done so you can see them. You DON'T need to specify the commented ones.
	 * A 'target' is specified, that means that #screen is the context for target, prev, next and navigation.
	 */
	
	
	//- durchlaufe alle panels/ li-elemente
	//- checke bei jedem li auf dessen höhe sowie auf die höhe des darin enthaltenen div.inner2
	//- ziehe höhe li von höhe div.inner2 ab, teile das ergebnis durch zwei 
	//- weise dem div.inner2 das ergebnis aus 3 als padding zu
	

	// ### mbakonyi: Slider for Col1 / Sitemap
	
	// ### mbakonyi: init of variables
	var $containerMenuCol1 = jQuery('.slider_menu_col1 ul');
	var $panelsMenuCol1 = jQuery('.slider_menu_col1 li');
	
	// ### mbakonyi: check for existence of element
	if ($containerMenuCol1.length != 0 && $panelsMenuCol1.length != 0){

		// ### mbakonyi: vertical center-alignment of pannel-contents
		/*
		$panelsMenuCol1.each(function(index){
			var panelHeight = $(this).height();
			var inner2 = $(this).find('div.inner2')
			var inner2Height = inner2.height();
			var inner2Padding = Math.round((panelHeight - inner2Height) / 2);
			inner2.css('padding-top',inner2Padding);
		});
		*/

		// ### mbakonyi: adding required elements/styling for slider
		$containerMenuCol1.css('width', $panelsMenuCol1[1].offsetWidth * $panelsMenuCol1.length - 5);
		$('div.sections_menu_col1').css({'overflow':'hidden','height':'150px'});
		$('div.sections_menu_col1').after('<a class="next_menu_col1 scrollButtons" href="#" /><a class="prev_menu_col1 scrollButtons" /><a href="#" class="hover_dummy"></a>');


		$('.slider_menu_col1').serialScroll({
			target:'.sections_menu_col1',
			items:'li', // Selector to the items ( relative to the matched elements, '#sections' in this case )
			prev:'a.prev_menu_col1',// Selector to the 'prev' button (absolute!, meaning it's relative to the document)
			next:'a.next_menu_col1',// Selector to the 'next' button (absolute too)
			axis:'x',// The default is 'y' scroll on both ways
			navigation:'#navigation li a',
			duration:400,// Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
			force:true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
			step:3, // How many items to scroll each time ( 1 is the default, no need to specify )		

			//queue:false,// We scroll on both axes, scroll both at the same time.
			//event:'click',// On which event to react (click is the default, you probably won't need to specify it)
			//stop:false,// Each click will stop any previous animations of the target. (false by default)
			//lock:true, // Ignore events if already animating (true by default)		
			//start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case )		
			//cycle:true,// Cycle endlessly ( constant velocity, true is the default )
			//jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
			//lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
			//interval:1000, // It's the number of milliseconds to automatically go to the next
			//constant:true, // constant speed

			onBefore:function( e, elem, $pane, $items, pos ){
				/**
				 * 'this' is the triggered element 
				 * e is the event object
				 * elem is the element we'll be scrolling to
				 * $pane is the element being scrolled
				 * $items is the items collection at this moment
				 * pos is the position of elem in the collection
				 * if it returns false, the event will be ignored
				 */
				 //those arguments with a $ are jqueryfied, elem isn't.
				e.preventDefault();
				if( this.blur ){
					this.blur();
				}
			},
			onAfter:function( elem ){
				//'this' is the element being scrolled ($pane) not jqueryfied
			}
		});
	}	
	
	
	// ### mbakonyi: Slider for Col2 / Sitemap

	// ### mbakonyi: init of variables
	var $containerMenuCol2 = jQuery('.slider_menu_col2 ul');
	var $panelsMenuCol2 = jQuery('.slider_menu_col2 li');

	// ### mbakonyi: check for existence of element	
	if ($containerMenuCol2.length != 0 && $panelsMenuCol2.length != 0){
		
		// ### mbakonyi: init of variables
		var $firstAnchor = jQuery('.slider_menu_col2 ul a:first');
		var $hrefFirstAnchor = $firstAnchor.attr('href');
		var $titleFirstAnchor = $firstAnchor.attr('title');

		// ### mbakonyi: adding required elements/styling for slider
		$containerMenuCol2.css('width', $panelsMenuCol2[0].offsetWidth * $panelsMenuCol2.length);
		$('div.sections_menu_col2').css({'overflow':'hidden','height':'150px'});
		$('div.sections_menu_col2').after('<a class="next_menu_col2 scrollButtons" href="#" /><a class="prev_menu_col2 scrollButtons" href="#" /><a href="#" class="hover_dummy fb_video floatbox"></a>');
		$('.slider_menu_col2 a.hover_dummy').attr({
			href: $hrefFirstAnchor,
			title: $titleFirstAnchor
		});
	

		$('.slider_menu_col2').serialScroll({
			target:'.sections_menu_col2',
			items:'li', // Selector to the items ( relative to the matched elements, '#sections' in this case )
			prev:'a.prev_menu_col2',// Selector to the 'prev' button (absolute!, meaning it's relative to the document)
			next:'a.next_menu_col2',// Selector to the 'next' button (absolute too)
			axis:'x',// The default is 'y' scroll on both ways
			navigation:'#navigation li a',
			duration:400,// Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
			force:true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
			step:1,
	
			//queue:false,// We scroll on both axes, scroll both at the same time.
			//event:'click',// On which event to react (click is the default, you probably won't need to specify it)
			//stop:false,// Each click will stop any previous animations of the target. (false by default)
			//lock:true, // Ignore events if already animating (true by default)		
			//start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case )		
			//cycle:true,// Cycle endlessly ( constant velocity, true is the default )
			//step:1, // How many items to scroll each time ( 1 is the default, no need to specify )
			//jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
			//lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
			//interval:1000, // It's the number of milliseconds to automatically go to the next
			//constant:true, // constant speed
	
			onBefore:function( e, elem, $pane, $items, pos ){
				/**
				 * 'this' is the triggered element 
				 * e is the event object
				 * elem is the element we'll be scrolling to
				 * $pane is the element being scrolled
				 * $items is the items collection at this moment
				 * pos is the position of elem in the collection
				 * if it returns false, the event will be ignored
				 */
				 //those arguments with a $ are jqueryfied, elem isn't.
				e.preventDefault();
				if( this.blur ){
					this.blur();
				}
			},
			onAfter:function( elem ){
				//'this' is the element being scrolled ($pane) not jqueryfied
				//elem.parent().css('border:red');
				var hrefValue = $(elem).children('a').attr('href');
				var titleValue = $(elem).children('a').attr('title');
				$(elem).parents('.slider').children('.hover_dummy').attr({
					href: hrefValue,
					title: titleValue
				});
				// mbakonyi: adding cur-class synchronized with current shown video-previewimage
				$(elem).parents('.slider_container').find('ul.nav_slide li.cur').removeClass('cur');
				elIndex = $(elem).parents('ul').children('li').index(elem);
				$(elem).parents('.slider_container').find('ul.nav_slide li:eq('+elIndex+')').addClass('cur');

				// mbakonyi: force floatbox to update the href-value
				fb.activateElements();
			}
		});
	}
	
	
	// ### mbakonyi: Slider for Col2 / Uploads

	// ### mbakonyi: init of variables
	var $containerUploads = jQuery('.sections_uploads ul');
	var $panelsUploads = jQuery('.sections_uploads li');


	// ### mbakonyi: check for existence of element	
	if ($containerUploads.length != 0 && $panelsUploads.length != 0){
		
		// ### mbakonyi: adding required elements/styling for slider
		$containerUploads.css('width', $panelsUploads[0].offsetWidth * $panelsUploads.length);
		$('div.sections_uploads').css({'overflow':'hidden','height':'150px'});
		$('div.sections_uploads').after('<a class="next_uploads scrollButtons" href="#"></a><a class="prev_uploads scrollButtons" href="#"></a>');
	
		$('#col2 .slider_uploads').serialScroll({
		
			target:'.sections_uploads',
			items:'li', // Selector to the items ( relative to the matched elements, '#sections' in this case )
			prev:'a.prev_uploads',// Selector to the 'prev' button (absolute!, meaning it's relative to the document)
			next:'a.next_uploads',// Selector to the 'next' button (absolute too)
			axis:'x',// The default is 'y' scroll on both ways
			navigation:'#navigation li a',
			duration:400,// Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
			force:true, // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
	
			//queue:false,// We scroll on both axes, scroll both at the same time.
			//event:'click',// On which event to react (click is the default, you probably won't need to specify it)
			//stop:false,// Each click will stop any previous animations of the target. (false by default)
			//lock:true, // Ignore events if already animating (true by default)		
			//start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case )		
			//cycle:true,// Cycle endlessly ( constant velocity, true is the default )
			//step:1, // How many items to scroll each time ( 1 is the default, no need to specify )
			//jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
			//lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
			//interval:1000, // It's the number of milliseconds to automatically go to the next
			//constant:true, // constant speed
	
			onBefore:function( e, elem, $pane, $items, pos ){
				/**
				 * 'this' is the triggered element 
				 * e is the event object
				 * elem is the element we'll be scrolling to
				 * $pane is the element being scrolled
				 * $items is the items collection at this moment
				 * pos is the position of elem in the collection
				 * if it returns false, the event will be ignored
				 */
				 //those arguments with a $ are jqueryfied, elem isn't.
				e.preventDefault();
				if( this.blur )
					this.blur();
			},
			onAfter:function( elem ){
				$(elem).parents('.slider_container').find('ul.nav_slide li.cur').removeClass('cur');
				elIndex = $(elem).parents('ul').children('li').index(elem);
				$(elem).parents('.slider_container').find('ul.nav_slide li:eq('+elIndex+')').addClass('cur');
			}
		});
	}
});

