/* 
    ver 0.1
*/

(function( $ )
{
    $.fn.slideShow = function( m_options )
    {
        var setting = $.extend( {
            element: "",
            speed: 1500,
            timeout: 2000,
            current: 0
        }, m_options );

        $( this ).css( 'position', 'relative' );
        $.fn.slideShow._data = setting;

        var elements = $( this ).children();

        setting.countElement = elements.length;

        for ( var i = 0; i < elements.length; i++ )
        {
            $( elements[i] ).css( 'z-index', String( elements.length - i ) ).css( 'position', 'absolute' );
            $( elements[i] ).hide();
        }

        var elementName = setting.element;
        $.fn.slideShow._timer = null;
        $.fn.slideShow._timer = window.setInterval( function()
        {
            $( elementName ).slideShow.showNext();
        }, setting.timeout );
        $( elements[0] ).show();
    };

    $.fn.slideShow.showNext = function( number )
    {
        var elements = $( $.fn.slideShow._data.element ).children();

        var nextNumber = 0;
        if ( !number )
        {
            nextNumber = ( $.fn.slideShow._data.current + 1);
            if ( nextNumber > ( elements.length - 1 ) )
            {
                nextNumber = 0;
            }
        }
        else
        {
            nextNumber = number.next;
        }

        $( elements[$.fn.slideShow._data.current] ).fadeOut( $.fn.slideShow._data.speed );
        $( elements[nextNumber] ).fadeIn( $.fn.slideShow._data.speed );

        $.fn.slideShow._data.current = nextNumber;

        if ( $.fn.slideShow._timer == null )
        {
            var elementName = $.fn.slideShow._data.element;
            $.fn.slideShow._timer = window.setInterval( function()
            {
                $( elementName ).slideShow.showNext();
            }, $.fn.slideShow._data.timeout );
        }
    };

    $.fn.slideShow.next = function()
    {
        if ( $.fn.slideShow._timer != null )
        {
            window.clearTimeout( $.fn.slideShow._timer );
            $.fn.slideShow._timer = null;
        }
        $.fn.slideShow.showNext();
    };

    $.fn.slideShow.prev = function()
    {
        if ( $.fn.slideShow._timer != null )
        {
            window.clearTimeout( $.fn.slideShow._timer );
            $.fn.slideShow._timer = null;
        }
        var prev = ( $.fn.slideShow._data.current - 1 );
        if ( prev < 0 )
        {
            prev = $.fn.slideShow._data.countElement - 1;
        }
        $.fn.slideShow.showNext( { next: prev } );
    };
})( jQuery );
