jQuery.fn.fadeSlideShow = function(options) {
    return this.each(function(){
        settings = jQuery.extend({
             width: 941, // default width of the slideshow
             height: 280, // default height of the slideshow
            speed: 'slow', // default animation transition speed
            interval: 3000, // default interval between image change
            PlayPauseElement: 'fssPlayPause1', // default css id for the play / pause element
            PlayText: 'Play1', // default play text
            PauseText: 'Pause1', // default pause text
            NextElement: 'fssNext1', // default id for next button
            NextElementText: 'Next >1', // default text for next button
            PrevElement: 'fssPrev1', // default id for prev button
            PrevElementText: '< Prev1', // default text for prev button
            ListElement: 'steps1', // default id for image / content controll list
            ListLi: 'fssLi1', // default class for li's in the image / content controll 
            ListLiActive: 'active1', // default class for active state in the controll list
            addListToId: false, // add the controll list to special id in your code - default false
            allowKeyboardCtrl: false, // allow keyboard controlls left / right / space
            autoplay: true // autoplay the slideshow
         }, options);
        // set style for wrapper element
        jQuery(this).css({
            width: settings.width,
            height: settings.height,
            position: 'relative',
            overflow: 'hidden'
        });
        
        // set styles for child element
        jQuery('> *',this).css({
            position: 'absolute',
            width: settings.width,
            height: settings.height
        });
        
        // count number of slides
        Slides = jQuery('> *', this).length;
        
        Slides = Slides - 1;
        ActSlide = Slides;
        // Set jQuery Slide short var
        jQslide = jQuery('> *', this);
        // save this
        fssThis = this;
        
        autoplay = function(){
            intval = setInterval(function(){
                jQslide.eq(ActSlide).fadeOut(settings.speed);
                
                // if list is on change the active class
                if(settings.ListElement){
                    setActLi = (Slides - ActSlide) + 1;
                    if(setActLi > Slides){setActLi=0;}
                    jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive);
                    jQuery('#'+settings.ListElement+' li').eq(setActLi).addClass(settings.ListLiActive);
                }
                
                if(ActSlide <= 0){
                    jQslide.fadeIn(settings.speed);
                    ActSlide = Slides;
                }else{
                    ActSlide = ActSlide - 1;    
                }
            }, settings.interval);
            
            if(settings.PlayPauseElement){
                jQuery('#'+settings.PlayPauseElement).html(settings.PauseText);
            }
        }
        
        stopAutoplay = function(){
            clearInterval(intval);
            intval = false;
            if(settings.PlayPauseElement){
                jQuery('#'+settings.PlayPauseElement).html(settings.PlayText);
            }
        }
        
        jumpTo = function(newIndex){     
            if(newIndex < 0){newIndex = Slides;}
            else if(newIndex > Slides){newIndex = 0;}    
            if( newIndex >= ActSlide ){
                jQuery('> *:lt('+(newIndex+1)+')', fssThis).fadeIn(settings.speed);
            }else if(newIndex <= ActSlide){
                jQuery('> *:gt('+newIndex+')', fssThis).fadeOut(settings.speed);
            }
             
            // set the active slide
            ActSlide = newIndex;

            if(settings.ListElement){
                // set active          
                //console.log(settings.ListElement); 
                jQuery('#'+settings.ListElement+' li').removeClass(settings.ListLiActive);
                jQuery('#'+settings.ListElement+' li').eq((Slides-newIndex)).addClass(settings.ListLiActive);
            }
        }
        
        // if list is on render it
        if(settings.ListElement){
            i=0;
            li = '';
            while(i<=Slides){
                var sk = i +1;
                if(i==0){
                    li = li+'<li class="'+settings.ListLi+i+settings.kuris+' '+settings.ListLiActive+'"><a href="#">'+sk+'<\/a><\/li>';
                }else{
                    li = li+'<li class="'+settings.ListLi+i+settings.kuris+'"><a href="#">'+sk+'<\/a><\/li>';
                }
                i++;
            }        //console.log(1); 
            List = '<ul id="'+settings.ListElement+'">'+li+'<\/ul>';
            
            // add list to a special id or append after the slideshow
            if(settings.addListToId){
                jQuery('#'+settings.addListToId).append(List);
            }else{
                jQuery(this).after(List);
            }
            
            jQuery('#'+settings.ListElement+' a').bind('click', function(){ 
                index = jQuery('#'+settings.ListElement+' a').index(this);
                stopAutoplay();   
                ReverseIndex = Slides-index;
                
                jumpTo(ReverseIndex);
                
                return false;
            });
        }
        
        if(settings.PlayPauseElement){
            if(!jQuery('#'+settings.PlayPauseElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings.PlayPauseElement+'"><\/a>');
            }
            
            if(settings.autoplay){
                jQuery('#'+settings.PlayPauseElement).html(settings.PauseText);
            }else{
                jQuery('#'+settings.PlayPauseElement).html(settings.PlayText);
            }
            
            jQuery('#'+settings.PlayPauseElement).bind('click', function(){
                if(intval){
                    stopAutoplay();
                }else{
                    autoplay();
                }
                return false;
            });
        }
        
        if(settings.NextElement){
            if(!jQuery('#'+settings.NextElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings.NextElement+'">'+settings.NextElementText+'<\/a>');
            }
            
            jQuery('#'+settings.NextElement).bind('click', function(){
                nextSlide = ActSlide-1;
                stopAutoplay();
                jumpTo(nextSlide);
                return false;
            });
        }
        
        if(settings.PrevElement){
            if(!jQuery('#'+settings.PrevElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings.PrevElement+'">'+settings.PrevElementText+'<\/a>');
            }
            
            jQuery('#'+settings.PrevElement).bind('click', function(){
                prevSlide = ActSlide+1;
                stopAutoplay();
                jumpTo(prevSlide);
                return false;
            });
        }
        
        if(settings.allowKeyboardCtrl){
            jQuery(document).bind('keydown', function(e){
                if(e.which==39){
                    nextSlide = ActSlide-1;
                    stopAutoplay();
                    jumpTo(nextSlide);
                }else if(e.which==37){
                    prevSlide = ActSlide+1;
                    stopAutoplay();
                    jumpTo(prevSlide);
                }else if(e.which==32){
                    if(intval){stopAutoplay();}
                    else{autoplay();}
                    return false;
                }
            });
        }
        
        // start autoplay or set it to false
        if(settings.autoplay){autoplay();}else{intval=false;}
    });
}; 


jQuery.fn.fadeSlideShow2 = function(options) {
    return this.each(function(){
        settings2 = jQuery.extend({
             width: 941, // default width of the slideshow
             height: 280, // default height of the slideshow
            speed: 'slow', // default animation transition speed
            interval: 3000, // default interval between image change
            PlayPauseElement: 'fssPlayPause2', // default css id for the play / pause element
            PlayText: 'Play2', // default play text
            PauseText: 'Pause2', // default pause text
            NextElement: 'fssNext2', // default id for next button
            NextElementText: 'Next >2', // default text for next button
            PrevElement: 'fssPrev2', // default id for prev button
            PrevElementText: '< Prev2', // default text for prev button
            ListElement: 'steps2', // default id for image / content controll list
            ListLi: 'fssLi2', // default class for li's in the image / content controll 
            ListLiActive: 'active2', // default class for active state in the controll list
            addListToId: false, // add the controll list to special id in your code - default false
            allowKeyboardCtrl: false, // allow keyboard controlls left / right / space
            autoplay: true // autoplay the slideshow
         }, options);
        // set style for wrapper element
        jQuery(this).css({
            width: settings2.width,
            height: settings2.height,
            position: 'relative',
            overflow: 'hidden'
        });
        
        // set styles for child element
        jQuery('> *',this).css({
            position: 'absolute',
            width: settings2.width,
            height: settings2.height
        });
        
        // count number of slides
        Slides2 = jQuery('> *', this).length;
        
        Slides2 = Slides2 - 1;
        ActSlide2 = Slides2;
        // Set jQuery Slide short var
        jQslide2 = jQuery('> *', this);
        // save this
        fssThis2 = this;
        
        autoplay2 = function(){
            intval = setInterval(function(){
                jQslide2.eq(ActSlide2).fadeOut(settings2.speed);
                
                // if list is on change the active class
                if(settings2.ListElement){
                    setActLi = (Slides2 - ActSlide2) + 1;
                    if(setActLi > Slides2){setActLi=0;}
                    jQuery('#'+settings2.ListElement+' li').removeClass(settings2.ListLiActive);
                    jQuery('#'+settings2.ListElement+' li').eq(setActLi).addClass(settings2.ListLiActive);
                }
                
                if(ActSlide2 <= 0){
                    jQslide2.fadeIn(settings2.speed);
                    ActSlide2 = Slides2;
                }else{
                    ActSlide2 = ActSlide2 - 1;    
                }
            }, settings2.interval);
            
            if(settings2.PlayPauseElement){
                jQuery('#'+settings2.PlayPauseElement).html(settings2.PauseText);
            }
        }
        
        stopAutoplay2 = function(){
            clearInterval(intval);
            intval = false;
            if(settings2.PlayPauseElement){
                jQuery('#'+settings2.PlayPauseElement).html(settings2.PlayText);
            }
        }
        
        jumpTo2 = function(newIndex){     
            if(newIndex < 0){newIndex = Slides2;}
            else if(newIndex > Slides2){newIndex = 0;}  
            //console.log(newIndex);  
            if( newIndex >= ActSlide2 ){
                jQuery('> *:lt('+(newIndex+1)+')', fssThis2).fadeIn(settings2.speed);
            }else if(newIndex <= ActSlide2){
                jQuery('> *:gt('+newIndex+')', fssThis2).fadeOut(settings2.speed);
            }
             
            // set the active slide
            ActSlide2 = newIndex;

            if(settings2.ListElement){
                // set active          
                //console.log(settings2.ListElement); 
                jQuery('#'+settings2.ListElement+' li').removeClass(settings2.ListLiActive);
                jQuery('#'+settings2.ListElement+' li').eq((Slides2-newIndex)).addClass(settings2.ListLiActive);
            }
        }
        
        // if list is on render it
        if(settings2.ListElement){
            i=0;
            li = '';
            while(i<=Slides2){
                var sk = i +1;
                if(i==0){
                    li = li+'<li class="'+settings2.ListLi+i+' '+settings2.ListLiActive+'"><a href="#">'+sk+'<\/a><\/li>';
                }else{
                    li = li+'<li class="'+settings2.ListLi+i+'"><a href="#">'+sk+'<\/a><\/li>';
                }
                i++;
            }
            List = '<ul id="'+settings2.ListElement+'">'+li+'<\/ul>';
             //console.log(2);
            // add list to a special id or append after the slideshow
            if(settings2.addListToId){
                jQuery('#'+settings2.addListToId).append(List);
            }else{
                jQuery(this).after(List);
            }
            
            jQuery('#'+settings2.ListElement+' a').bind('click', function(){ 
                index = jQuery('#'+settings2.ListElement+' a').index(this);
                stopAutoplay2();   
                ReverseIndex = Slides2-index;
                
                jumpTo2(ReverseIndex);
                
                return false;
            });
        }
        
        if(settings2.PlayPauseElement){
            if(!jQuery('#'+settings2.PlayPauseElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings2.PlayPauseElement+'"><\/a>');
            }
            
            if(settings2.autoplay){
                jQuery('#'+settings2.PlayPauseElement).html(settings2.PauseText);
            }else{
                jQuery('#'+settings2.PlayPauseElement).html(settings2.PlayText);
            }
            
            jQuery('#'+settings2.PlayPauseElement).bind('click', function(){
                if(intval){
                    stopAutoplay2();
                }else{
                    autoplay2();
                }
                return false;
            });
        }
        
        if(settings2.NextElement){
            if(!jQuery('#'+settings2.NextElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings2.NextElement+'">'+settings2.NextElementText+'<\/a>');
            }
            
            jQuery('#'+settings2.NextElement).bind('click', function(){
                nextSlide = ActSlide2-1;
                stopAutoplay2();
                jumpTo2(nextSlide);
                return false;
            });
        }
        
        if(settings2.PrevElement){
            if(!jQuery('#'+settings2.PrevElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings2.PrevElement+'">'+settings2.PrevElementText+'<\/a>');
            }
            
            jQuery('#'+settings2.PrevElement).bind('click', function(){
                prevSlide = ActSlide2+1;
                stopAutoplay2();
                jumpTo2(prevSlide);
                return false;
            });
        }
        
        if(settings2.allowKeyboardCtrl){
            jQuery(document).bind('keydown', function(e){
                if(e.which==39){
                    nextSlide = ActSlide2-1;
                    stopAutoplay2();
                    jumpTo2(nextSlide);
                }else if(e.which==37){
                    prevSlide = ActSlide2+1;
                    stopAutoplay2();
                    jumpTo2(prevSlide);
                }else if(e.which==32){
                    if(intval){stopAutoplay2();}
                    else{autoplay2();}
                    return false;
                }
            });
        }
        
        // start autoplay or set it to false
        if(settings2.autoplay){autoplay2();}else{intval=false;}
    });
};  
 
jQuery.fn.fadeSlideShow3 = function(options) {
    return this.each(function(){
        settings3 = jQuery.extend({
             width: 941, // default width of the slideshow
             height: 280, // default height of the slideshow
            speed: 'slow', // default animation transition speed
            interval: 3000, // default interval between image change
            PlayPauseElement: 'fssPlayPause3', // default css id for the play / pause element
            PlayText: 'Play3', // default play text
            PauseText: 'Pause3', // default pause text
            NextElement: 'fssNext3', // default id for next button
            NextElementText: 'Next >3', // default text for next button
            PrevElement: 'fssPrev3', // default id for prev button
            PrevElementText: '< Prev3', // default text for prev button
            ListElement: 'steps3', // default id for image / content controll list
            ListLi: 'fssLi3', // default class for li's in the image / content controll 
            ListLiActive: 'active3', // default class for active state in the controll list
            addListToId: false, // add the controll list to special id in your code - default false
            allowKeyboardCtrl: false, // allow keyboard controlls left / right / space
            autoplay: true // autoplay the slideshow
         }, options);
        // set style for wrapper element
        jQuery(this).css({
            width: settings3.width,
            height: settings3.height,
            position: 'relative',
            overflow: 'hidden'
        });
        
        // set styles for child element
        jQuery('> *',this).css({
            position: 'absolute',
            width: settings3.width,
            height: settings3.height
        });
        
        // count number of slides
        Slides3 = jQuery('> *', this).length;
        
        Slides3 = Slides3 - 1;
        ActSlide3 = Slides3;
        // Set jQuery Slide short var
        jQslide3 = jQuery('> *', this);
        // save this
        fssThis3 = this;
        
        autoplay3 = function(){
            intval = setInterval(function(){
                jQslide3.eq(ActSlide3).fadeOut(settings3.speed);
                
                // if list is on change the active class
                if(settings3.ListElement){
                    setActLi = (Slides3 - ActSlide3) + 1;
                    if(setActLi > Slides3){setActLi=0;}
                    jQuery('#'+settings3.ListElement+' li').removeClass(settings3.ListLiActive);
                    jQuery('#'+settings3.ListElement+' li').eq(setActLi).addClass(settings3.ListLiActive);
                }
                
                if(ActSlide3 <= 0){
                    jQslide3.fadeIn(settings3.speed);
                    ActSlide3 = Slides3;
                }else{
                    ActSlide3 = ActSlide3 - 1;    
                }
            }, settings3.interval);
            
            if(settings3.PlayPauseElement){
                jQuery('#'+settings3.PlayPauseElement).html(settings3.PauseText);
            }
        }
        
        stopAutoplay3 = function(){
            clearInterval(intval);
            intval = false;
            if(settings3.PlayPauseElement){
                jQuery('#'+settings3.PlayPauseElement).html(settings3.PlayText);
            }
        }
        
        jumpTo3 = function(newIndex){     
            if(newIndex < 0){newIndex = Slides3;}
            else if(newIndex > Slides3){newIndex = 0;}  
            //console.log(newIndex);  
            if( newIndex >= ActSlide3 ){
                jQuery('> *:lt('+(newIndex+1)+')', fssThis3).fadeIn(settings3.speed);
            }else if(newIndex <= ActSlide3){
                jQuery('> *:gt('+newIndex+')', fssThis3).fadeOut(settings3.speed);
            }
             
            // set the active slide
            ActSlide3 = newIndex;

            if(settings3.ListElement){
                // set active          
                //console.log(settings3.ListElement); 
                jQuery('#'+settings3.ListElement+' li').removeClass(settings3.ListLiActive);
                jQuery('#'+settings3.ListElement+' li').eq((Slides3-newIndex)).addClass(settings3.ListLiActive);
            }
        }
        
        // if list is on render it
        if(settings3.ListElement){
            i=0;
            li = '';
            while(i<=Slides3){
                var sk = i +1;
                if(i==0){
                    li = li+'<li class="'+settings3.ListLi+i+' '+settings3.ListLiActive+'"><a href="#">'+sk+'<\/a><\/li>';
                }else{
                    li = li+'<li class="'+settings3.ListLi+i+'"><a href="#">'+sk+'<\/a><\/li>';
                }
                i++;
            }
            List = '<ul id="'+settings3.ListElement+'">'+li+'<\/ul>';
             //console.log(3);
            // add list to a special id or append after the slideshow
            if(settings3.addListToId){
                jQuery('#'+settings3.addListToId).append(List);
            }else{
                jQuery(this).after(List);
            }
            
            jQuery('#'+settings3.ListElement+' a').bind('click', function(){ 
                index = jQuery('#'+settings3.ListElement+' a').index(this);
                stopAutoplay3();   
                ReverseIndex = Slides3-index;
                
                jumpTo3(ReverseIndex);
                
                return false;
            });
        }
        
        if(settings3.PlayPauseElement){
            if(!jQuery('#'+settings3.PlayPauseElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings3.PlayPauseElement+'"><\/a>');
            }
            
            if(settings3.autoplay){
                jQuery('#'+settings3.PlayPauseElement).html(settings3.PauseText);
            }else{
                jQuery('#'+settings3.PlayPauseElement).html(settings3.PlayText);
            }
            
            jQuery('#'+settings3.PlayPauseElement).bind('click', function(){
                if(intval){
                    stopAutoplay3();
                }else{
                    autoplay3();
                }
                return false;
            });
        }
        
        if(settings3.NextElement){
            if(!jQuery('#'+settings3.NextElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings3.NextElement+'">'+settings3.NextElementText+'<\/a>');
            }
            
            jQuery('#'+settings3.NextElement).bind('click', function(){
                nextSlide = ActSlide3-1;
                stopAutoplay3();
                jumpTo3(nextSlide);
                return false;
            });
        }
        
        if(settings3.PrevElement){
            if(!jQuery('#'+settings3.PrevElement).css('display')){
                jQuery(this).after('<a href="#" id="'+settings3.PrevElement+'">'+settings3.PrevElementText+'<\/a>');
            }
            
            jQuery('#'+settings3.PrevElement).bind('click', function(){
                prevSlide = ActSlide3+1;
                stopAutoplay3();
                jumpTo3(prevSlide);
                return false;
            });
        }
        
        if(settings3.allowKeyboardCtrl){
            jQuery(document).bind('keydown', function(e){
                if(e.which==39){
                    nextSlide = ActSlide3-1;
                    stopAutoplay3();
                    jumpTo3(nextSlide);
                }else if(e.which==37){
                    prevSlide = ActSlide3+1;
                    stopAutoplay3();
                    jumpTo3(prevSlide);
                }else if(e.which==33){
                    if(intval){stopAutoplay3();}
                    else{autoplay3();}
                    return false;
                }
            });
        }
        
        // start autoplay or set it to false
        if(settings3.autoplay){autoplay3();}else{intval=false;}
    });
};  
 

