/*
	New Slider Article
	-------------------------
	Scripted by szenaris.com  [SG] 
*/

jQuery.fn.accessNewSliderArticle = function( settings ) {
	settings = jQuery.extend({
        speed : "normal",
		slideBy : 1,
		minHeight : 56,
		showAllText : "Alle anzeigen",
		showOneText : "Einzeln anzeigen"
    }, settings);
    return this.each(function() {
		jQuery.fn.accessNewSliderArticle.run( jQuery( this ), settings );
    });
};
jQuery.fn.accessNewSliderArticle.run = function( $this, settings ) {
	jQuery( ".javascript_css", $this ).css( "display", "none" );
	var div = jQuery( ".slide_container", $this );
	var ul = jQuery( "ul:eq(0)", $this );
	var li = ul.children();
	var akt_li = 0;
	var offsetTop = 0;
	var offsetLeft = 0;
	var ulHeight = 0;
	var ulFirstHeight = 0;
	
	var $next = jQuery( ".next > a", $this );
	var $back = jQuery( ".back > a", $this );
	$next.css( "display", "none" );
	$back.css( "display", "none" );
	
	if ( li.length > settings.slideBy ) {
		for (var i = 0; i < li.length; i++){
			if (jQuery( li[i] ).height() <= settings.minHeight){ jQuery( li[i] ).css( "height", ( settings.minHeight ) ); }
			if ( i >= akt_li && i < (akt_li+settings.slideBy) ) { ulHeight += jQuery( li[i] ).height(); }	
		}
		var liWidth = jQuery( li[0] ).width();
		var animating = false;
		
		ulFirstHeight = jQuery( li[0] ).height();
		div.css( "height", ( ulHeight ) );
		ul.css( "width", ( li.length * liWidth ) );
		$next.click(function() {
			if ( !animating ) {
				animating = true;
				offsetTop = 0;
				offsetLeft = parseInt( ul.css( "left" ) ) - ( liWidth * settings.slideBy );
				ulHeight = 0;
				akt_li = akt_li < li.length ? akt_li + settings.slideBy : akt_li;
				for (var i = 0; i < li.length; i++){
					if ( i >= akt_li && i < (akt_li+settings.slideBy) ) { ulHeight += jQuery( li[i] ).height(); }
					if ( i < akt_li) { offsetTop += jQuery( li[i] ).height(); }
				}
				offsetTop = parseInt( - offsetTop );
				if ( akt_li < li.length) {
					$back.css( "display", "block" );
					div.animate({
						height: ulHeight
					}, settings.speed );
					ul.animate({
						left: offsetLeft						
					}, settings.speed, function() {
						if ( (akt_li + 1 + settings.slideBy) > li.length) {
							$next.css( "display", "none" );
						}
						animating = false;
					});
				} else {
					$next.css( "display", "none" );
					animating = false;
				}
			}
			return false;
		});
		$back.click(function() {
			if ( !animating ) {
				animating = true;
				offsetTop = 0;
				offsetRight = parseInt( ul.css( "left" ) ) + ( liWidth * settings.slideBy );
				ulHeight = 0;		
				akt_li = akt_li > 0 ? akt_li - settings.slideBy : akt_li;
				for (var i = 0; i < li.length; i++){
					if ( i >= akt_li && i < (akt_li+settings.slideBy) ) { ulHeight += jQuery( li[i] ).height(); }
					if ( i < akt_li) { offsetTop += jQuery( li[i] ).height(); }
				}
				offsetTop = parseInt( - offsetTop );
				if ( akt_li < li.length) {
					$next.css( "display", "block" );
					div.animate({
						height: ulHeight
					}, settings.speed );
					ul.animate({
						left: offsetRight						
					}, settings.speed, function() {
						if ( akt_li <= 0) {
							$back.css( "display", "none" );
						}
						animating = false;
					});
				} else {
					$next.css( "display", "none" );
					animating = false;
				}
				
			}
			return false;
		});
		$next.css( "display", "block" )
			.parent().after( [ "<p class=\"view_all\">", "<a href=\"#\">"+ settings.showAllText +"</a> (", li.length ,")</p>" ].join( "" ) );
		jQuery( ".view_all > a", $this ).click(function() {
			if ( jQuery( this ).html() == settings.showAllText ) {
				div.css( "height", "auto" ).css( "top", "0" );
				ul.css( "width", "auto" ).css( "left", "0" );
				$next.css( "display", "none" );
				$back.css( "display", "none" );
				jQuery( this ).html( settings.showOneText );
			} else {
				jQuery( this ).html( settings.showAllText );
				akt_li = 0;
				ul.css( "width", ( li.length * liWidth ) );
				div.css( "height", ( jQuery( li[0] ).height() ) );
				$next.css( "display", "block" );
			}
			return false;
		});
	}
};