/* =========================================================

// jquery.innerfade.js

// Datum: 2008-02-14
// Firma: Medienfreunde Hofmann & Baldes GbR
// Author: Torsten Baldes
// Mail: t.baldes@medienfreunde.com
// Web: http://medienfreunde.com

// based on the work of Matt Oakes http://portfolio.gizone.co.uk/applications/slideshow/
// and Ralf S. Engelschall http://trainofthoughts.org/

 *
 *  <ul id="news">
 *      <li>content 1</li>
 *      <li>content 2</li>
 *      <li>content 3</li>
 *  </ul>
 *
 *  $('#news').innerfade({
 *	  animationtype: Type of animation 'fade' or 'slide' (Default: 'fade'),
 *	  speed: Fading-/Sliding-Speed in milliseconds or keywords (slow, normal or fast) (Default: 'normal'),
 *	  timeout: Time between the fades in milliseconds (Default: '2000'),
 *	  type: Type of slideshow: 'sequence', 'random' or 'random_start' (Default: 'sequence'),
 * 		containerheight: Height of the containing element in any css-height-value (Default: 'auto'),
 *	  runningclass: CSS-Class which the container get’s applied (Default: 'innerfade'),
 *	  children: optional children selector (Default: null)
 *  });
 *

// ========================================================= */

(function($) {

    var timerId = null;
    var innerfadeLast = 0;

    $.fn.innerfade = function( options )
    {
        return this.each( function() {
            $.innerfade( this, options );
        } );
    }

    $.innerfade = function( container, options )
    {
        var settings =
        {
            speed:            "normal",
            timeout:          2000,
            containerheight:  "auto",
            runningclass:     "innerfade",
            children:         null,
            onShow:           null
        };
        if ( options )
            $.extend( settings, options );
        if ( settings.children === null )
            var elements = $( container ).children();
        else
            var elements = $( container ).children( settings.children );
        $( container ).data( "innerfade.settings", { elements: elements, options: settings } );
        if ( elements.length > 1 )
        {
            $( container ).css( { "position": "relative", "height": settings.containerheight } ).addClass( settings.runningclass );
            for ( var i = 0; i < elements.length; i++ )
            {
                $( elements[i] ).css( { "z-index": String( elements.length - i ), "position": "absolute" } ).hide();
            };
            timerId = setTimeout( function() {
                $.innerfade.next( elements, settings, 1, 0 );
            }, settings.timeout );
            $( elements[0] ).show();
		}
    };

    // private method
    $.innerfade.next = function( elements, settings, current, last )
    {
        if ( current != last )
        {
            var c = current;
            $( elements[last] ).fadeOut( settings.speed );
            if ( settings.onShow )
                settings.onShow( c );
            $( elements[current] ).fadeIn( settings.speed, function() {
    			removeFilter( $(this)[0] );
//    			if ( settings.shownFn )
//                    settings.shownFn( c );
    		} );
        }
        else
            current = innerfadeLast;
        if ( current + 1 < elements.length )
        {
            current = current + 1;
            last = current - 1;
        }
        else
        {
            current = 0;
            last = elements.length - 1;
        }
        innerfadeLast = last;
        timerId = setTimeout( function() {
            $.innerfade.next( elements, settings, current, last );
        }, settings.timeout );
    };

    $.innerfade.select = function( container, current ) {
        var settings = $( container ).data( "innerfade.settings" );
        if ( timerId )
            clearTimeout( timerId );
        $.innerfade.next( settings.elements, settings.options, current, innerfadeLast );
    }

})(jQuery);

// **** remove Opacity-Filter in ie ****
function removeFilter(element) {
	if(element.style.removeAttribute){
		element.style.removeAttribute("filter");
	}
}

