(function($) {  
    $.fn.lookbook = function(options) {  
 
        var options = $.extend({}, $.fn.lookbook.defaultOptions, options);
        var lookbook = $(this);
        

        if(lookbook.children().length == 0 ){
            init(lookbook,options);
        }
        $('.'+options.navigatorBtnClass).live('click', function(e){
            
            e.preventDefault();

            var img = new Image;
            var link = $(this);
            $('.'+options.lookbookLinkActive).removeClass(options.lookbookLinkActive);
            link.addClass(options.lookbookLinkActive);
            
            $('#' + options.lookbookLinkID).empty();
            $('#' + options.lookbookLinkID).addClass(options.loadingClass); 
            
            $('#' + options.lookbookDescrID).html(link.attr('title'));
            $('#' + options.lookbookTitleID).attr('href', link.attr('rel'));
            $('#' + options.lookbookTitleID).attr('title',link.attr('rev'));
            $('#' + options.lookbookTitleID).text(link.attr('rev'));
            $('#' + options.lookbookLinkID).attr('href', link.attr('rel'));
            $('#' + options.lookbookLinkID).attr('title', link.attr('title'));

            $(img).load(function(){
                $(this).hide();                
                $('#'+options.lookbookLinkID).removeClass(options.loadingClass);
                $(img).appendTo($('#'+options.lookbookLinkID)).fadeIn();
            }).attr('src',link.attr('href')); 
            
        });

    };
    
    function init(lookbook,options){
        var first       = $('.'+options.navigatorBtnClass).first();
        var firstImg    = new Image();
        var firstLink =$('<a/>');
        first.addClass(options.lookbookLinkActive);
        
        firstLink.attr('id', options.lookbookLinkID);
        firstLink.attr('href',first.attr('rel'));
        firstLink.attr('title',first.attr('title'));
        
        $('#'+options.lookbookDescrID).html(first.attr('title'));
        $('#'+options.lookbookTitleID).attr('href',first.attr('rel'));
        $('#'+options.lookbookTitleID).attr('title',first.attr('rev'));
        $('#'+options.lookbookTitleID).text(first.attr('rev'));
        
        lookbook.append(firstLink);
        firstLink.append($(firstImg));
        
        $('#'+options.lookbookLinkID).addClass(options.loadingClass);        
        $(firstImg).load(function(){
            $(this).hide();
            $('#'+options.lookbookLinkID).removeClass(options.loadingClass);
            $(firstImg).appendTo($('#'+options.lookbookLinkID)).fadeIn();
        }).attr('src',first.attr('href')); 
        
        var navigatorWidth = (($('#'+options.navigatorSlideID).children().length -1) *  240)-20;
        $('#'+options.navigatorSlideID).width(navigatorWidth);
        
        if ($('#'+options.navigatorSlideID).children().length > 5){                        
            var scrollContent = $('#'+options.navigatorSlideID);
            var scrollPane = $('#'+options.navigatorID);
            $( '#'+options.lookbookScrollerID ).show();
            $( '#'+options.lookbookSliderID ).slider({
                max: 100,
                slide: function( event, ui ) {
                    if ( scrollContent.width() > scrollPane.width() ) {
                        scrollContent.css( "margin-left", Math.round(ui.value / 100 * ( scrollPane.width() - scrollContent.width() )) + "px" );
                    } else {
                        scrollContent.css( "margin-left", 0 );
                    }
                }   
            });
        }
    };
    
    $.fn.lookbook.defaultOptions = {
        loadingClass        : 'loading',
        navigatorID         : 'lookbook-navigator',
        navigatorSlideID    : 'lookbook-nav-container',
        navigatorBtnClass   : 'lookbook-nav',
        lookbookLinkID      : 'lookbook-link',
        lookbookSliderID    : 'lookbook-slider',
        lookbookScrollerID  : 'lookbook-scrollbar',
        lookbookTitleID     : 'lookbook-title',
        lookbookDescrID     : 'lookbook-description',
        lookbookLinkActive  : 'lookbook-active'
    }
})(jQuery);
