/*
 * Fading script
 * autor: Goweb.ie
 *
 **/
(function($) {
    $.fn.fader = function(options){
        element = this;
        var settings = {
            'timeout':  '6000',
            'speed':    'slow',
            'slideSpeed': 'normal',
            'random':   false,
            'current':  0,
            //'nav':      false,
            'navSelector': '.changing-banner-nav',
            'itemBlockSelector': '.changing-banner-item',
            'textSelector': '.changing-banner-text'
        }
        if (options)
            $.extend(settings, options);
        var items = $(settings.itemBlockSelector, element);
        if(items.size() > 1){
            settings.last = items.size() - 1;
            if(settings.random){
                settings.current = Math.round(Math.random() * settings.last);
                settings.showed =  new Array();
                settings.showed[settings.current] = true;
                settings.showedCount = 1;
            }
            /*if(settings.nav){
                $(settings.navSelector, element).show();
            }*/
            $(items[settings.current]).fadeIn(settings.speed, function(){
                $(items[settings.current]).find(settings.textSelector).slideDown(settings.slideSpeed, function(){
                    setTimeout(function(){
                        showNext();
                    }, settings.timeout);
                });
            });
        }
        function showNext(number){
            var next = -1;
            $.extend(next, number);
            if(settings.random){ //check if random display
                if(settings.showedCount < settings.last+1 ){
                    do{
                        next = Math.round(Math.random() * settings.last);
                    }while(next in settings.showed)
                    settings.showedCount++;
                }else{
                    settings.showedCount = 1;
                    settings.showed =  new Array();
                    do{
                        next = Math.round(Math.random() * settings.last);
                    }while(settings.current == next)
                }
                settings.showed[next] = true;
            }else{
                next = settings.current+1;
                if(settings.last < next)
                    next = 0;
            }
            if (next > settings.current){
                $(items[settings.current]).find(settings.textSelector).slideUp(settings.slideSpeed, function(){
                    $(items[next]).fadeIn(settings.speed, function(){
                        $(items[settings.current]).hide();
                        $(items[next]).find(settings.textSelector).slideDown(settings.slideSpeed, function(){
                            settings.current = next;
                            setTimeout(function(){
                                showNext('next');
                            }, settings.timeout);
                        });
                    });
                });
            }else{
                $(items[next]).show();
                $(items[settings.current]).find(settings.textSelector).slideUp(settings.slideSpeed, function(){
                    $(items[settings.current]).fadeOut(settings.speed, function(){
                        $(items[next]).find(settings.textSelector).slideDown(settings.slideSpeed, function(){
                            settings.current = next;
                            setTimeout(function(){
                                showNext('next');
                            }, settings.timeout);
                        });
                    });
                });
            }
        }
    }

})(jQuery);

