(function() {
    
    var settings = {
        speed : 400,
        offset : 0,
        slide_speed : 3000,
        range : 110,
        size : 0,
        cur : 0,
        show_overlay : true
    };
    
    $.fn.picbox = function( s ) {
        var t = this;
        settings = $.extend( true, settings, s );
        
        function startup() {
            settings.size = $('.icon-c', t).length;
            
            if( settings.offset == 0 ) {
                $('#prev', t).addClass('disabled');
                $('#home', t).addClass('disabled');
            } else if( settings.offset == settings.size - 1) {
                $('#next', t).addClass('disabled');
                $('#end', t).addClass('disabled');
            }
            
            loadWith( settings.offset );
            regAnim();
            set_nav();
        }
        
        function loadWith( i ) {
            var prd = new Image();
            
            var cursor = $('.icon-c').eq(i);
            $('.photo-scroll', t).animate({scrollLeft : Math.round(i * settings.range)}, settings.speed);
            $('.icon-c', t).removeClass('current');
            cursor.addClass('current');
            
            var title = $.trim( cursor.find('img').attr('title') );
            var alt = $.trim( cursor.find('img').attr('alt'));
            
            prd.onload = function() {
                $('#view').attr({
                    src : prd.src,
                    title : title,
                    alt : alt
                })
                $('.tinybox', t).attr({
                    href : cursor.attr('rel'),
                    title : cursor.attr('title')
                });
                $('.info-text h2', t).text(cursor.attr('title'));
                $('.info-text div', t).text(cursor.attr('description'));
                $('#preloader', t).hide();
                prd.onload = null;
                prd = null;
            };
            
            if( settings.show_overlay ) {
                $('.overlay .title', t).text( title );
                $('.overlay .alt', t).text(alt);
            }
            
            prd.src = cursor.attr('href');
            settings.cur = i;
        }
        
        function set_nav() {
            $('#prev:not(.disabled)', t).live('click', function() {
                $('#next.disabled', t).removeClass('disabled');
                $('#end.disabled', t).removeClass('disabled');
                if( settings.cur > 0 ) {
                    loadWith( settings.cur-1 );
                }
                if( settings.cur == 0 ) {
                    $(this).addClass('disabled');
                    $('#home', t).addClass('disabled');
                }
                return false;
            });
            
            $('#next:not(.disabled)', t).live('click', function() {
                $('#prev.disabled', t).removeClass('disabled');
                $('#home.disabled', t).removeClass('disabled');
                if( settings.cur < settings.size - 1 ) {
                    loadWith( settings.cur+1 );
                }
                if(  settings.cur == settings.size - 1  ) {
                    $(this).addClass('disabled');
                    $('#end', t).addClass('disabled');
                }
                return false;
            });
            
            $('#home:not(.disabled)', t).live('click', function() {
                loadWith( 0 );
                $('#end').removeClass('disabled');
                $('#next').removeClass('disabled');
                $('#prev').addClass('disabled');
                $(this).addClass('disabled');
                return false;
            });
            
            $('#end:not(.disabled)', t).live('click', function() {
                loadWith( settings.size - 1 );
                $('#home').removeClass('disabled');
                $('#prev').removeClass('disabled');
                $('#next').addClass('disabled');
                $(this).addClass('disabled');
                return false;
            });
        }
        
        var gallery_on = false;
        
        function slideShow(i) {
            if (gallery_on) {
                if (settings.cur >= settings.size - 1) {
                    gallery_on = false;
                    loadWith(0);
                    return false;
                }
                loadWith(i);
                window.setTimeout(function(){
                    slideShow(settings.cur + 1);
                }, settings.slide_speed);
            }
        }

    
        function regAnim() {
            $('#play', t).click(function() {
                gallery_on = !gallery_on;
                settings.cur = 0;
                slideShow( 0 );
                return false;
            });
            
            $('.icon-c', t).click(function() {
                var rel = $('.icon-c', t).index(this);
                if( rel == settings.size - 1 ) {
                    $('#next', t).addClass('disabled');
                    $('#end', t).addClass('disabled');
                } else {
                    $('#next', t).removeClass('disabled');
                    $('#end', t).removeClass('disabled');
                }
                if( rel == 0 ) {
                    $('#prev', t).addClass('disabled');
                    $('#home', t).addClass('disabled');
                } else {
                    $('#prev', t).removeClass('disabled');
                    $('#home', t).removeClass('disabled');
                }
                loadWith( $('.icon-c', t).index(this) );
                return false;
            })
        }
        
        startup();
    }
})();


