
$.fn.nwGalerie = function(userSettings) {

    var defSettings = {
        autoPlayDelay: 6000,
        autoPlayDelay2: 7000,
        arrowsNavigation: true,
        navigation: true,
        animationComplete: true,
        animationComplete2: true,
        autoPlayFn: false,
        currentPos: 1,
        currentPos2: 1,
        posLeft: 0,
        inter: null,
        inter2: null,
        wechselEffect: 2,
        wechselEffect2: 1,
        effectTime: 400,
        effectTime2: 300,
        panelWidth: $(this).width(),
        panelHeight: $(this).height(),
        itemsCount: $(this).find('.nwContentItem').size(),
        itemsCount2: $(this).find('.nwContentItem2').size()
    };
    
    settings = $.extend(defSettings, userSettings);
    
    //if (settings.itemsCount > 0) {settings.arrowsNavigation = true;} else {settings.arrowsNavigation = false;}

    var showPanel = $(this); var showPanel2 = $(this);

    showPanel.find('.nwShowPanel').css({'width':settings.panelWidth,'height':settings.panelHeight});
    showPanel.find('.nwContentItem').css({'width':settings.panelWidth,'height':settings.panelHeight});
    
    showPanel2.find('.nwShowPanel2').css({'width':settings.panelWidth,'height':settings.panelHeight});
    showPanel2.find('.nwContentItem2').css({'width':settings.panelWidth,'height':settings.panelHeight});

    if (settings.wechselEffect == 1) {
        showPanel.find('.nwContentPanel').css({'width':(settings.panelWidth * settings.itemsCount),'height':settings.panelHeight});
        showPanel.find('.nwContentItem').css({'float':'left','position':'relative'});
    }
    
    if (settings.wechselEffect == 2) {
        showPanel.find('.nwContentPanel').css({'width':settings.panelWidth,'height':settings.panelHeight,'position':'relative'});
        showPanel.find('.nwContentItem').css({'position':'absolute','left':0,'top':0});
        showPanel.find('.nwContentItem').not(':first').css({'display':'none'});
    }
    
    if (settings.wechselEffect2 == 1) {
        showPanel2.find('.nwContentPanel2').css({'width':(settings.panelWidth * settings.itemsCount2),'height':settings.panelHeight});
        showPanel2.find('.nwContentItem2').css({'float':'left','position':'relative'});
    }

    if (settings.wechselEffect2 == 2) {
        showPanel2.find('.nwContentPanel2').css({'width':settings.panelWidth,'height':settings.panelHeight,'position':'relative'});
        showPanel2.find('.nwContentItem2').css({'position':'absolute','left':0,'top':0});
        showPanel2.find('.nwContentItem2').not(':first').css({'display':'none'});
    }



/*------   Function: Arrows Nawigation   -----------------------------------------------------------------------------------*/
    var arrowLeft = '<div class="nwNavArrow nwNavArrowL"><div class="nwNavArrowLeft"></div></div>';
    var arrowRight = '<div class="nwNavArrow nwNavArrowR"><div class="nwNawArrowRight"></div></div>';
    
    $('#nwWrapper').hover(function(){
        $('div.nwNavArrow').fadeIn(750);
    }, function(){
        $('div.nwNavArrow').fadeOut(750);
    });

    if (settings.arrowsNavigation) {
        showPanel.append(arrowLeft, arrowRight);
        showPanel.find('.nwNavArrowLeft').click(function(){
            if(settings.animationComplete) playStepLeft();
        });
        showPanel.find('.nwNawArrowRight').click(function(){
            if(settings.animationComplete) playStepRight();
        });
    }

/*------   Function: Nawigation   -----------------------------------------------------------------------------------*/
    var nav = '<div class="nwNavi"></div>';

    if (settings.navigation) {
        showPanel.append(nav);
        for (var navC = 0; navC < settings.itemsCount; navC++) {
            showPanel.find('.nwNavi').append('<div class="nwNavItem">' + (navC+1) + '</div>');
        }
        showPanel.find('.nwNavItem:first').addClass('nwActiveItemNr');

        showPanel.find('.nwNavItem').click(function(){
            if(settings.animationComplete) {
                clearTimeout(inter);
                settings.animationComplete = false;

                showPanel.find('.nwNavItem').removeClass('nwActiveItemNr');
                $(this).addClass('nwActiveItemNr');
                settings.currentPos = 1 + $(this).index();
                
                var hqs = showPanel.find('.nwItem-' + settings.currentPos).index();

                //alert('currentPos: ' + settings.currentPos + ' index: ' + showPanel.find('.nwItem-' + settings.currentPos).index());

                if (settings.wechselEffect == 1) {
                    showPanel.find('.nwContentPanel').stop().animate({'left': -(hqs*settings.panelWidth)},settings.effectTime,function(){
                        for (hvs = 0; hvs < hqs; hvs++) {
                            var firstToEnd = showPanel.find('.nwContentItem:first').detach();
                            firstToEnd.insertAfter(showPanel.find('.nwContentItem:last'));
                        }
                        showPanel.find('.nwContentPanel').css({'left':0});
                        settings.animationComplete = true;
                        playAuto();
                    });
                }

                if (settings.wechselEffect == 2) {
                    showPanel.find('.nwItem-' + settings.currentPos).fadeIn(settings.effectTime,function(){
                        for (hvs = 0; hvs < hqs; hvs++) {
                            showPanel.find('.nwContentItem:first').css({'display':'none'});
                            var firstToEnd = showPanel.find('.nwContentItem:first').detach();
                            firstToEnd.insertAfter(showPanel.find('.nwContentItem:last'));
                        }
                        settings.animationComplete = true;
                        playAuto();
                    });
                }
            }
        });
        
    }




/*------   Function: Ein Schritt navh Rechts. Complete.   ------------------------------------------------------------------*/

    var playStepRight = function() {
    
        clearTimeout(inter);
        settings.animationComplete = false;
        
        if (settings.currentPos == settings.itemsCount) {settings.currentPos = 1;} else {settings.currentPos++;}
        showPanel.find('.nwNavItem').removeClass('nwActiveItemNr');
        showPanel.find('.nwNavItem:eq(' + (settings.currentPos - 1 ) + ')').addClass('nwActiveItemNr');


        
        if (settings.wechselEffect == 1) {
            showPanel.find('.nwContentPanel').stop().animate({'left': -980},settings.effectTime,function(){
                var firstToEnd = showPanel.find('.nwContentItem:first').detach();
                showPanel.find('.nwContentPanel').css({'left':0});
                firstToEnd.insertAfter(showPanel.find('.nwContentItem:last'));
                settings.animationComplete = true;
                playAuto();
            });
        }
        if (settings.wechselEffect == 2) {
            showPanel.find('.nwContentItem:eq(1)').fadeIn(settings.effectTime,function(){
                showPanel.find('.nwContentItem:first').css({'display':'none'});
                var firstToEnd = showPanel.find('.nwContentItem:first').detach();
                firstToEnd.insertAfter(showPanel.find('.nwContentItem:last'));
                settings.animationComplete = true;
                playAuto();
            });
        }
    }
    
    var playStepRight2 = function() {

        clearTimeout(inter2);
        settings.animationComplete2 = false;

        if (settings.currentPos2 == settings.itemsCount2) {settings.currentPos2 = 1;} else {settings.currentPos2++;}
        showPanel2.find('.nwNavItem').removeClass('nwActiveItemNr');
        showPanel2.find('.nwNavItem:eq(' + (settings.currentPos2 - 1 ) + ')').addClass('nwActiveItemNr');


        if (settings.wechselEffect2 == 1) {
            showPanel2.find('.nwContentPanel2').stop().animate({'left': -300},settings.effectTime2,function(){
                var firstToEnd2 = showPanel2.find('.nwContentItem2:first').detach();
                showPanel2.find('.nwContentPanel2').css({'left':0});
                firstToEnd2.insertAfter(showPanel2.find('.nwContentItem2:last'));
                settings.animationComplete2 = true;
                playAuto2();
            });
        }
        if (settings.wechselEffect2 == 2) {
            showPanel2.find('.nwContentItem2:eq(1)').fadeIn(settings.effectTime2,function(){
                showPanel2.find('.nwContentItem2:first').css({'display':'none'});
                var firstToEnd2 = showPanel2.find('.nwContentItem2:first').detach();
                firstToEnd2.insertAfter(showPanel2.find('.nwContentItem2:last'));
                settings.animationComplete2 = true;
                playAuto2();
            });
        }
    }

/*------   Function: Ein Schritt navh Links. Complete.   ------------------------------------------------------------------*/

    var playStepLeft = function() {

        clearTimeout(inter);
        settings.animationComplete = false;

        if (settings.currentPos == 1) {settings.currentPos = settings.itemsCount;} else {settings.currentPos--;}
        showPanel.find('.nwNavItem').removeClass('nwActiveItemNr');
        showPanel.find('.nwNavItem:eq(' + (settings.currentPos - 1 ) + ')').addClass('nwActiveItemNr');

        var endToFirst = showPanel.find('.nwContentItem:last').detach();
        endToFirst.insertBefore(showPanel.find('.nwContentItem:first'));
        
        if (settings.wechselEffect == 1) {
            showPanel.find('.nwContentPanel').css({'left':-980});
            showPanel.find('.nwContentPanel').stop().animate({'left': 0},settings.effectTime,function(){
                settings.animationComplete = true;
                playAuto();
            });
        }
        if (settings.wechselEffect == 2) {
            showPanel.find('.nwContentItem:first').css({'display':'block'});
            showPanel.find('.nwContentItem:eq(1)').fadeOut(settings.effectTime,function(){
                settings.animationComplete = true;
                playAuto();
            });
        }
    }

/*------   Function: Autoplay. Complete.   ------------------------------------------------------------------*/

    var playAuto = function(){
        //if (settings.currentPos > 1) {settings.autoPlayDelay = 6000;} else {settings.autoPlayDelay = 22000;}
        inter = setTimeout(function() {
            if (settings.autoPlayFn) {
                playStepRight();
            }
        }, settings.autoPlayDelay);
    }
    
    var playAuto2 = function(){
        inter2 = setTimeout(function() {
            if (settings.autoPlayFn) {
                playStepRight2();
            }
        }, settings.autoPlayDelay2);
    }

    playAuto();
    playAuto2();
    
   // alert($('.nwContentPanel').width() + '--' + settings.panelWidth);
};
