(function($) {

    var NivoSlider = function(element, options){
		//Defaults are below
		var settings = $.extend({}, $.fn.nivoSlider.defaults, options);

    // MiG - pokud je stara verze IE (<9) potom vypnu efekty
    if ($.browser.msie && $.browser.version.substr(0,1) < 9)
    {
      settings.animSpeed = 0;
      //alert('Stare IE!!! Verze - ' + $.browser.version);
    } // end if
    
        //Useful variables. Play carefully.
        var vars = {
            currentSlide: 0,
            currentImage: '',
            totalSlides: 0,
            randAnim: '',
            running: false,
            paused: false,
            stop: false
        };
        
        // Aktivuje fuknci ktera zabranuje pri slidovani HTML slidu plynule viditelne prejizdeni z konce na zacatek
        var continuousSliding = true;
    
        //Get this slider
        var slider = $(element);

        slider.parent().removeClass('no-js');
        slider.removeAttr('style');
        
        slider.data('nivo:vars', vars);
        slider.css('position','relative');
        slider.addClass('nivoSlider');

        //Find our slider children
        var kids = slider.children();
        
        kids.each(function() {
            var child = $(this);
            var link = '';
            
            if (!child.hasClass('nivoSlide')) 
              return;
            
            child.hide();
            
            if (!child.hasClass('nivoHtml'))
              child = child.find('img:first');

            //Get img width & height
            var childWidth = child.width();
            if(childWidth == 0) childWidth = child.attr('width');
            var childHeight = child.height();
            if(childHeight == 0) childHeight = child.attr('height');
            //Resize the slider
            if(childWidth > slider.width()){
                slider.width(childWidth);
            }
            if(childHeight > slider.height()){
                slider.height(childHeight);
            }
            if(link != ''){
                link.css('display','none');
            }
            child.css('display','none');
            vars.totalSlides++;
        }); 
        
        vars.previousSlideDiv = $(kids[0]);
        
        //Set startSlide
        if(settings.startSlide > 0){
            if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
            vars.currentSlide = settings.startSlide;
        }
        
        //Get initial image
        if($(kids[vars.currentSlide]).is('img')){
            vars.currentImage = $(kids[vars.currentSlide]);
        } else {
            vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
        }
        
        //Show initial link
        if($(kids[vars.currentSlide]).is('a')){
            $(kids[vars.currentSlide]).css('display','block');
        }
        
        //Set first background

        if (vars.currentImage.length > 0 && vars.currentImage.attr('src') !== undefined)
          slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
        
        //Add initial slices
        for(var i = 0; i < settings.slices; i++){
            var sliceWidth = Math.round(slider.width()/settings.slices);
            if(i == settings.slices-1){
                slider.append(
                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px' })
                );
            } else {
                slider.append(
                    $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' })
                );
            }
        }
                
        //Create caption
        slider.append(
            $('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
        );	

        //Create htmlbox
        slider.append(
            $('<div class="nivo-html"><div></div></div>').css({ display:'none'})
        );
        
        // For put all html slides side-by-side to nivo-carousel div, so they can be carouseled	        

        if (settings.htmlEffect == 'slide') {
          var totalWidth = (slider.outerWidth()+40)*($('.nivoSlide',slider).length+((continuousSliding)?2:0));

          $('.nivo-html *',slider).remove();
          $('.nivo-html',slider).append($('<div class="nivo-html-carousel"></div>'));
          $('.nivoSlide',slider).each(function(){
            var page = $('<div class="nivo-html-page"></div>');
            if ($(this).hasClass('nivoHtml')) {
              page.append($(this).html())  
              $(this).remove();
            } 
           
            page.css({
              width: slider.outerWidth(),
              height: slider.outerHeight()
            });
            $('.nivo-html-carousel',slider).append(page);    
          });
          $('.nivo-html-carousel',slider).css('width',totalWidth);
          $('.nivo-html').css('z-index',40);
          
          // Musime zkopirovat posledni page pred prvni, aby carousel nepreletaval
          if (continuousSliding) {
            var $cloned = $('.nivo-html-carousel .nivo-html-page:last', slider).clone().prependTo($('.nivo-html-carousel', slider)).addClass('cloned');  
            // Pridame priznak lighboxovym fotkam aby se nepridavaly do LB 2x
            $('.lightbox-slider, .lightbox-slider img',$cloned).addClass('cloned');
            
            var $cloned = $('.nivo-html-carousel .nivo-html-page:not(.cloned):first', slider).clone().appendTo($('.nivo-html-carousel', slider)).addClass('cloned');  
            // Pridame priznak lighboxovym fotkam aby se nepridavaly do LB 2x
            $('.lightbox-slider, .lightbox-slider img',$cloned).addClass('cloned');
          }
        } else if (settings.htmlEffect == 'slide-vertical') {

          var totalHeight = (slider.outerHeight()+40)*($('.nivoSlide',slider).length);

          $('.nivo-html *',slider).remove();
          $('.nivo-html',slider).append($('<div class="nivo-html-carousel vertical"></div>'));
          $('.nivoSlide',slider).each(function(){
            var page = $('<div class="nivo-html-page vertical"></div>');
            if ($(this).hasClass('nivoHtml')) {
              page.append($(this).html())  
            } 

            page.css({
              width: '100%',
              height: slider.height()
            });
            $('.nivo-html-carousel',slider).append(page);    
          });
          $('.nivo-html-carousel',slider).css('width',totalWidth);
          $('.nivo-html').css('z-index',40);
          
          // Pokud je typ ovladani newsticker, musime zkopirovat posledni page pred prvni
          if (settings.newsticker) {
            $('.nivo-html-carousel .nivo-html-page:last', slider).clone().prependTo($('.nivo-html-carousel', slider));  
          }
        }
        
        
        // Pri kontinualnim posunu nastavit pocatecni pozici na druhy slide
        if (continuousSliding && settings.htmlEffect == 'slide')
          $('.nivo-html-carousel', slider).css('left',-((slider.width()+40)));

	      //Process initial  caption

        if(vars.currentImage.attr('title')!== undefined && vars.currentImage.attr('title') != ''){
            var title = vars.currentImage.attr('title');
            if(title.substr(0,1) == '#') title = $(title).html();
            
            $('.nivo-caption p', slider).html(title);					
            $('.nivo-caption', slider).fadeIn(settings.animSpeed);
        }
       
        //In the words of Super Mario "let's a go!"
        var timer = 0;
        if(!settings.manualAdvance && kids.length > 1){
            timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
        }
        
        
        
        //Add Direction nav
        if(settings.directionNav && vars.totalSlides > 1){
            slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');
            
            $('a.nivo-prevNav', slider).live('click', function(){
                if(vars.running && !vars.allowRapidSlideChange) return false;
                clearInterval(timer);
                timer = '';
                vars.currentSlide-=2;
                nivoRun(slider, kids, settings, 'prev');
            });
            
            $('a.nivo-nextNav', slider).live('click', function(){
                if(vars.running && !vars.allowRapidSlideChange) return false;
                clearInterval(timer);
                timer = '';
                nivoRun(slider, kids, settings, 'next');
            });
        }

        //Add Control nav
        var nivoControl = $('.nivo-controlNav',slider);
        if(settings.controlNav && vars.totalSlides > 1){
            
            //Set initial active link
            $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
            $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).parents('li').addClass('active');
            
            $('.nivo-controlNav a', slider).live('click', function(){
                if(vars.running && !vars.allowRapidSlideChange) return false;
                if($(this).hasClass('active')) return false;
                clearInterval(timer);
                timer = '';
                if (vars.currentImage.length>0)
                  slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
                vars.currentSlide = $(this).attr('rel') - 1;
                nivoRun(slider, kids, settings, 'control');
            });
            $('.nivo-controlNav li', slider).live('click', function(){
                $('a',this).trigger('click');
            });
            nivoControl.fadeIn();
        } else {
           nivoControl.hide();
        }
        
        //Keyboard Navigation
        if(settings.keyboardNav){

            $(window).keydown(function(event){

                //Left
                if(event.keyCode == '37'){
                    if(vars.running && !vars.allowRapidSlideChange) return false;
                    clearInterval(timer);
                    timer = '';
                    vars.currentSlide-=2;
                    nivoRun(slider, kids, settings, 'prev');
                }
                //Right
                if(event.keyCode == '39'){
                    if(vars.running && !vars.allowRapidSlideChange) return false;
                    clearInterval(timer);
                    timer = '';
                    nivoRun(slider, kids, settings, 'next');
                }
            });
        }
        
        //For pauseOnHover setting
        if(settings.pauseOnHover){
            slider.hover(function(){
                vars.paused = true;
                clearInterval(timer);
                timer = '';
            }, function(){
                vars.paused = false;
                //Restart the timer
                if(timer == '' && !settings.manualAdvance){
                    timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
                }
            });
        }
        
        
        
        //Event when Animation finishes
        slider.bind('nivo:animFinished', function(){ 
            vars.running = false; 
            //Hide child links
            $(kids).each(function(){
                if($(this).is('a')){
                    $(this).css('display','none');
                }
            });
            //Show current link
            if($(kids[vars.currentSlide]).is('a')){
                $(kids[vars.currentSlide]).css('display','block');
            }
            //Restart the timer
            if(timer == '' && !vars.paused && !settings.manualAdvance){
                timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
            }
            //Trigger the afterChange callback
            settings.afterChange.call(this);
        });
        
        // Reset slice width before animations run
        var resetSliceWidth = function(slider, settings){
            var slices = $('.nivo-slice', slider);
            var i = 0;
            slices.each(function(){
                var slice = $(this);
                var sliceWidth = Math.round(slider.width()/settings.slices);
                if(i == settings.slices-1){
                    slice.css('width', (slider.width()-(sliceWidth*i)) + 'px');
                } else {
                    slice.css('width', sliceWidth + 'px');
                }
                i++;
            });
        }

        if ($('.nivo-html a.lightbox-slider:not(.cloned)').length > 0) {
          $('.nivo-html a.lightbox-slider:not(.cloned)').removeClass('lightbox-slider').addClass('lightbox-activated').addClass('lightbox').fancyZoom();
        }
        // Private run method
		var nivoRun = function(slider, kids, settings, nudge, callbackAfterAnimate){

			//Get our vars
			var vars = slider.data('nivo:vars');

      //Trigger the lastSlide callback
      if(vars && (vars.currentSlide == vars.totalSlides - 1)){ 
  			settings.lastSlide.call(this);
  			
  			if (!settings.opakovatDokola && nudge == 'next') return false;
	  	}

	  	if (!settings.opakovatDokola && vars.currentSlide < -1 && nudge == 'prev') {
	  	  vars.currentSlide = 0;
	  	  return false; 
	  	}
    
      // Stop
			if((!vars || vars.stop) && !nudge) return false;
			
			//Trigger the beforeChange callback
			settings.beforeChange.call(this);
					
			//Set current background before change
			if (vars.currentImage.length>0) {
  			if(!nudge){
  				slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
  			} else {
  				if(nudge == 'prev'){
  					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
  				}
  				if(nudge == 'next'){
  					slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat');
  				}
  			}
			}
			vars.currentSlide++;

            //Trigger the slideshowEnd callback
			if(vars.currentSlide == vars.totalSlides){ 
				vars.currentSlide = 0;
				settings.slideshowEnd.call(this);
			}
			if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
			//Set vars.currentImage
			if($(kids[vars.currentSlide]).is('img')){
				vars.currentImage = $(kids[vars.currentSlide]);
			} else if (!$(kids[vars.currentSlide]).hasClass('nivoHtml')) {
				vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
			} else {
        vars.currentImage = []; 
			}
			vars.currentSlideDiv = $(kids[vars.currentSlide]);
			//Set acitve links
			if(settings.controlNav){
				$('.nivo-controlNav a', slider).removeClass('active');
			  $('.nivo-controlNav li', slider).removeClass('active');
				$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
				$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).parents('li').addClass('active');
			}
			
			// nastavit aktivitu sipek
			if(vars.currentSlide+1 == vars.totalSlides){ 
        $('.nivo-directionNav .nivo-nextNav', slider).addClass('disabled');
			} else {
			  $('.nivo-directionNav .nivo-nextNav', slider).removeClass('disabled'); 
			}
			if(vars.currentSlide == 0){ 
        $('.nivo-directionNav .nivo-prevNav', slider).addClass('disabled');
			} else {
			  $('.nivo-directionNav .nivo-prevNav', slider).removeClass('disabled'); 
			}
			if(vars.totalSlides == 0){
			   $('.nivo-directionNav *', slider).hide();
			} 

			// Pokud neni obrazek, dame neco na pozadi
			if (vars.currentImage.length == 0) {
  			$('.nivo-slice', slider).hide();
  			$(slider).css('background','none');
			} else {
        $('.nivo-slice', slider).show();
			}
			              

      html = vars.currentSlideDiv.html();
      
      vars.allowRapidSlideChange = false;
			// Process HTML
			if (settings.htmlEffect == 'slide') {
			  var html2htmlTransition = (vars.currentSlideDiv.hasClass('nivoHtml') && vars.previousSlideDiv.hasClass('nivoHtml'))
		    if (html2htmlTransition) {
		      // Prechod HTML-HTML
		      vars.allowRapidSlideChange = true;
		      $('.nivo-html',slider).fadeIn(); 
		      
		      // Aby se neprejizdelo z konce na zacatek prez cely slideru udelame toto
		      var slide_offset = 0;
          if (continuousSliding) {
            var lastIndex = (kids.index(vars.previousSlideDiv));
		       
            // Pokud jdeme z posledniho na prvni
            if (vars.currentSlide == 0 && lastIndex == vars.totalSlides-1 && vars.totalSlides>2)
              $('.nivo-html-carousel', slider).css('left',0);
  
  
            // Pokud jedeme z prvniho na posledni
            if (vars.currentSlide == vars.totalSlides-1 && lastIndex == 0 && vars.totalSlides>2) {
                $('.nivo-html-carousel', slider).css('left',-((slider.width()+40)*(vars.totalSlides+1)));
            }
            
            slide_offset = 1;                      
            

          }
		      
  			  $('.nivo-html-carousel', slider).stop().animate({ left:'-'+((slider.width()+40)*(vars.currentSlide+slide_offset))+'px'}, settings.animSpeed);
		    } else {
		      if (vars.currentSlideDiv.hasClass('nivoHtml')) {
		        // Prechod PHOTO-HTML
  			    $('.nivo-html',slider).hide();
  			    $('.nivo-html',slider).fadeIn(); 
  			    $('.nivo-html-carousel', slider).css({ left:'-'+((slider.width()+40)*vars.currentSlide)+'px'});  
  			  } else {
  			    if (!vars.previousSlideDiv.hasClass('nivoHtml')) {
  			      // Prechod PHOTO-PHOTO 
  			      $('.nivo-html',slider).hide(); 
  			    } 
  			  }
          
		    }
			} else if (settings.htmlEffect == 'slide-vertical') {
			  var html2htmlTransition = (vars.currentSlideDiv.hasClass('nivoHtml') && vars.previousSlideDiv.hasClass('nivoHtml'))
			  if (html2htmlTransition) {
		      // Prechod HTML-HTML
		      vars.allowRapidSlideChange = true;
		      $('.nivo-html',slider).fadeIn(); 
          
          // Pro newsticker musime skocit nejprve na zkopirovany posledni snimek na zacatku
          var slide_offset = 0;
          if (settings.newsticker) {
            if (vars.currentSlide == 0)
              $('.nivo-html-carousel', slider).css('top',0);
            slide_offset = 1;
          }
          
  			  $('.nivo-html-carousel', slider).stop().animate({ top:'-'+((slider.height())*(vars.currentSlide+slide_offset))+'px'}, settings.animSpeed);
		    } else {
		      if (vars.currentSlideDiv.hasClass('nivoHtml')) {
		        // Prechod PHOTO-HTML
  			    $('.nivo-html',slider).hide();
  			    $('.nivo-html',slider).fadeIn(); 
  			    $('.nivo-html-carousel', slider).css({ top:'-'+((slider.height())*vars.currentSlide)+'px'});  
  			  } else {
  			    if (!vars.previousSlideDiv.hasClass('nivoHtml')) {
  			      // Prechod PHOTO-PHOTO 
  			      $('.nivo-html',slider).hide(); 
  			    } 
  			  }
          
		    }
			 
			 
			} else {
  			if (vars.currentSlideDiv.hasClass('nivoHtml')) {
          if($('.nivo-html', slider).css('display') == 'block'){
		  			$('.nivo-html div', slider).fadeOut(settings.animSpeed, function(){
  		  			$(this).html(vars.currentSlideDiv.html());
	  		   		$(this).fadeIn(settings.animSpeed);
		  	   	});
		  		} else {
  		  		$('.nivo-html div', slider).html(vars.currentSlideDiv.html());
		  		}					
		  		$('.nivo-html', slider).fadeIn(settings.animSpeed); 
			  } else {
		  		$('.nivo-html', slider).fadeOut(settings.animSpeed);
        }
			}
     
      
      //Process caption
      if((vars.currentSlideDiv.html().length>0 && vars.currentSlideDiv.hasClass('nivoPhoto'))) {
//			  trace('caption activated');
				if($('.nivo-caption', slider).css('display') == 'block'){
//			  trace('caption set to BLOCK -> fading Out');
					$('.nivo-caption', slider).fadeOut(settings.animSpeed, function(){
//			  trace('setting caption html and fadingIn');
						$(this).html(vars.currentSlideDiv.html());
						$(this).fadeIn(settings.animSpeed);
					});
				} else {
//			  trace('caption set to display NONE -> setting html and fading In');
					$('.nivo-caption', slider).html(vars.currentSlideDiv.html());
  				$('.nivo-caption', slider).fadeIn(settings.animSpeed);
				}					
			} else {
//			 trace('no caption->fading out')
				$('.nivo-caption', slider).fadeOut(settings.animSpeed);
			}
			
			// Nastavit onclick na slice
			var headerUrl = $('a:first',vars.currentSlideDiv.html()).attr('href');
			$('.nivo-slice').unbind('click').css('cursor','Default');
			if (headerUrl !== undefined) {
			  $('.nivo-slice').click(function(){
  			  location.href = headerUrl; 
  			}).css('cursor','pointer'); 
			}
			
		
			
			
			
			//Set new slice backgrounds
			var  i = 0;
			if (vars.currentImage.length > 0) {
  			$('.nivo-slice', slider).each(function(){
  				var sliceWidth = Math.round(slider.width()/settings.slices);
  				$(this).css({ height:'0px', opacity:'0', 
  					background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' });
  				i++;
  			});
			}			
			
			if(settings.effect == 'random'){
				var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade','slideInRight','slideInLeft');
				vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
				if(vars.randAnim == undefined) vars.randAnim = 'fade';
			}

            //Run random effect from specified set (eg: effect:'fold,fade')
            if(settings.effect.indexOf(',') != -1){
                var anims = settings.effect.split(',');
                vars.randAnim = anims[Math.floor(Math.random()*(anims.length))];
				        if(vars.randAnim == undefined) vars.randAnim = 'fade';
            }

            
			//Run effects
			vars.running = true;
			if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' ||
				settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
				var timeBuff = 0;
				var i = 0;
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					slice.css({ 'top': '0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			} 
			else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' ||
					settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
				var timeBuff = 0;
				var i = 0;
				

				
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					slice.css({ 'bottom': '0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			} 
			else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' || 
					settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
				var timeBuff = 0;
				var i = 0;
				var v = 0;
                resetSliceWidth(slider, settings);
				var slices = $('.nivo-slice', slider);
				if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse();
				slices.each(function(){
					var slice = $(this);
					if(i == 0){
						slice.css('top','0px');
						i++;
					} else {
						slice.css('bottom','0px');
						i = 0;
					}
					
					if(v == settings.slices-1){
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					v++;
				});
			} 
			else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
				var timeBuff = 0;
				var i = 0;
                resetSliceWidth(slider, settings);
				$('.nivo-slice', slider).each(function(){
					var slice = $(this);
					var origWidth = slice.width();
					slice.css({ top:'0px', height:'100%', width:'0px' });
					if(i == settings.slices-1){
						setTimeout(function(){
							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
						}, (100 + timeBuff));
					} else {
						setTimeout(function(){
							slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
						}, (100 + timeBuff));
					}
					timeBuff += 50;
					i++;
				});
			}  
			else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
				var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': slider.width() + 'px',
                    'top': '0px'
                    
                });
    
				firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
			}    
            else if(settings.effect == 'slideInRight' || vars.randAnim == 'slideInRight'){
                var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': '0px',
                    'opacity': '1',
                    'top': '0px'
                });
                
                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
            }
            else if(settings.effect == 'slideInLeft' || vars.randAnim == 'slideInLeft'){
                var firstSlice = $('.nivo-slice:first', slider);
                firstSlice.css({
                    'height': '100%',
                    'width': '0px',
                    'opacity': '1',
                    'left': '',
                    'right': '0px',
                    'top': '0px'
                });

                firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ 
                    // Reset positioning
                    firstSlice.css({
                        'left': '0px',
                        'right': ''
                    });
                    slider.trigger('nivo:animFinished'); 
                });
            }
            
            vars.previousSlideDiv = $(kids[vars.currentSlide]);
		}
        
        // For debugging
        var trace = function(msg){
            if (this.console && typeof console.log != "undefined")
                console.log(msg);
        }
        
        this.moveTo = function($a) {

          // Zjistit cislo stranky na ktere se nahled nachazi
          var page  = $a.parents('.nivo-html-page').index()-1-((continuousSliding)?1:0);
          var delta = vars.currentSlide-page-1.0;

          // Prejit na danou stranku
          clearInterval(timer);
          timer = '';
          $(element).data('nivo:vars').currentSlide = page;
          nivoRun(slider, kids, firstRunSettings, 'control');
          
          // vratime pocet pixelu o ktere se slidovalo
          return delta * slider.width();
        }
        
        // Start / Stop
        this.stop = function(){
            if(!$(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = true;
                trace('Stop Slider');
            }
        }
        
        this.start = function(){
            if($(element).data('nivo:vars').stop){
                $(element).data('nivo:vars').stop = false;
                trace('Start Slider');
            }
        }
        
        // Nastavit pocatecni polohu... Pri contualnim posouvani se musiem nastavit na druhou stranku
        vars.currentSlide = -1;
        
        // Create copy of settings for first run (must set effect to fade-slices wasnt worked goot in first run)
        var firstRunSettings = jQuery.extend({}, settings);
        firstRunSettings.effect = 'fade';
        nivoRun(slider, kids, firstRunSettings, 'control');
        
        //Trigger the afterLoad callback
        settings.afterLoad.call(this);
    };
        
    $.fn.nivoSlider = function(options) {
    
        return this.each(function(){
            var element = $(this);
            // Return early if this element already has a plugin instance
            if (element.data('nivoslider')) return;
            // Pass options to plugin constructor
            var nivoslider = new NivoSlider(this, options);
            // Store plugin object in this element's data
            element.data('nivoslider', nivoslider);
        });

	};
	
	//Default settings
	$.fn.nivoSlider.defaults = {
		effect: 'random',
		slices: 15,
		animSpeed: 500,
		pauseTime: 3000,
		startSlide: 0,
		directionNav: true,
		controlNav: true,
		controlNavThumbs: true,
    controlNavThumbsFromRel: true,
		controlNavThumbsSearch: '.jpg',
		controlNavThumbsReplace: '_thumb.jpg',
		keyboardNav: true,
		pauseOnHover: true,
		manualAdvance: false,
		captionOpacity: 0.8,
		beforeChange: function(){},
		afterChange: function(){},
		slideshowEnd: function(){},
        lastSlide: function(){},
        afterLoad: function(){}
	};
	
	$.fn._reverse = [].reverse;
	
})(jQuery);
