(function($){
    $.fn.extend({
        supersized: function(options,callback)
        {
            var defaults = {
                startwidth      : 640,
                startheight     : 480,
                minheight       : 900,
                minwidth        : 1440,
                vertical_center : true,
                slideshow       : true,
                slide_interval  : 5000,
                start_slide     : 0
            };
            var o_o = $.extend(defaults, options);
            var o_this = $(this).get(0);
            var $o_this = $(this);

            function init()
            {
                // RESIZABLE
                resize();
                $(window).bind("resize", function(){
                    resize();
                });

                $o_this.children('.supersized_slide').css({
                    'display'   : 'none'
                });
                $o_this.children('.supersized_slide').eq(o_o.start_slide).css({
                    'display'   : 'block'
                });
                // SET pagination
                $('.slides_pagination li').removeClass('current');
                $('.slides_pagination li').eq(o_o.start_slide).addClass('current');

                if(o_o.slideshow && $o_this.children('.supersized_slide').length > 1)
                {
                    start_interval();
                }

                $('.slides_pagination li').unbind('click').bind('click', function(){
                    index   = $('.slides_pagination li').index($(this));
                    //alert(o_o.start_slide + '==' + index);
                    if(o_o.start_slide != index)
                    {
                        if(o_o.slideshow && $o_this.children('.supersized_slide').length > 1)
                        {
                            clearInterval(o_o.play_interval);
                            start_interval();
                        }
                        animate($('.slides_pagination li').index($(this)));
                    }
                });
            }

            function start_interval()
            {
                o_o.play_interval   = setInterval(function(){
                    // SWITCH slide
                    animate();
                }, o_o.slide_interval);
            }

            function animate(direction)
            {
                if((direction == undefined || direction == '') && direction != 0)
                {
                    direction   = 'next';
                }
                $o_slide    = $o_this.children('.supersized_slide');
                $o_current  = $o_slide.eq(o_o.start_slide);
                if(o_o.start_slide == 0) //first
                {
                    prev_index  = $o_slide.length - 1;
                    next_index  = o_o.start_slide + 1;
                }
                else if(o_o.start_slide == $o_slide.length - 1) //last
                {
                    prev_index  = o_o.start_slide - 1;
                    next_index  = 0;
                }
                else //mid
                {
                    prev_index  = o_o.start_slide - 1;
                    next_index  = o_o.start_slide + 1;
                }

                switch(direction)
                {
                    case 'next':
                        $o_prev = $o_slide.eq(prev_index);
                        $o_next = $o_slide.eq(next_index);

                        if(o_o.start_slide < $o_slide.length - 1)
                        {
                            o_o.start_slide += 1;
                        }
                        else
                        {
                            o_o.start_slide = 0;
                        }
                        break;
                    default:
                        $o_next = $o_slide.eq(direction);
                        o_o.start_slide     = direction
                }
                $o_current.fadeOut();
                $o_next.fadeIn();
                // SET pagination
                $('.slides_pagination li').removeClass('current');
                $('.slides_pagination li').eq(o_o.start_slide).addClass('current');
            }

            function resize()
            {
                var imgratio                = o_o.startheight / o_o.startwidth;
                var imagewidth              = $o_this.width();
                var imageheight             = $o_this.height();
                var browserwidth            = jQuery(window).width();
                var browserheight           = jQuery(window).height();
                var browser_ratio           = browserheight / browserwidth;
                var standard_browser_ratio  = 0.511
                var offset;

                browser_ratio        = Math.round(browser_ratio * 1000) / 1000;

                if(browserheight < o_o.minheight)
                {
                    browserheight   = o_o.minheight;
                }

                if(browserwidth < o_o.minheight)
                {
                    browserwidth   = o_o.minwidth;
                }

                if((browserheight / browserwidth) > imgratio)
                {
                    $o_this.height(browserheight);
                    $o_this.width(browserheight / imgratio);
                    $o_this.children().height(browserheight);
                    $o_this.children().width(browserheight / imgratio);
                    $o_this.parent().height(browserheight)
                }
                else
                {
                    $o_this.width(browserwidth);
                    $o_this.height(browserwidth * imgratio);
                    $o_this.children().width(browserwidth);
                    $o_this.children().height(browserwidth * imgratio);
                    $o_this.parent().height(browserheight);
                }
                if(o_o.vertical_center)
                {
                    $o_this.children().css('left', (browserwidth - $o_this.width()) / 2);
                    $o_this.children().css('top', (browserheight - $o_this.height()) / 5);
                }
                return false;
            }

            function slideshow()
            {
                
            }

            return this.each(function(){
                init();
                /* -----------------------------------------------------------------------
                 * RUN callback function
                 * ----------------------------------------------------------------------- */
                if(callback)
                {
                    callback();
                }
            });
        }
    });
})(jQuery);
