$(document).ready(function(){
	
  winWidthOld = window.innerWidth;
	
  var $slideshow =  $('#slideshow'),
      $articles = 0,
      articlesLength = 0,
      controlsHtml = '<div id="controls" class="rotate">',
      $activeSlide,
      $nextSlide,
      changeSlide,
      autoSlide,
      
      activeSlideNr = 0,
      bodyWidth = $(window).width(),
      leftArticleCenter = (bodyWidth/2)-(960/2),
      slideInterval,
      intervalLength = 10000,
      
      // slideshow animation options
	  imgPosition = -300,
      slideOutSpeed = 600,
      slideInSpeed = 600,
      slideInPosition = -1000,
      imgOutSpeed = 500,
      imgInSpeed = 1800,
      
      //References slider
      $references = $('#references-home'),
      $referencesLi,
      posLeft,
      posLeftGap,
      changeReferenceLogo,
      currentNr,
      referenceSpeed,
      nextLogo,
      logosShown,
      lastNr,
      
      opacityIE = ( $.browser.msie && $.browser.version < 9 ) ? 1 : 0;
  
  //References
  if( $references.length > 0 ) {
    
    $references.css({ 'height' : 80 });
    $referencesLi = $references.find('li');
	
    var referencesLiLength = $referencesLi.length,
	    posLeft = 0,
	    //currentlyLastLogo = 5,
	    //currentFirstLogo = 0,
	    nextLogo = 6,
	    lastNr,
	    //logoWidth = $referencesLi.eq(0).find('img').width(),
	    logoWidth = 150,
	    logoMargin = 0
	    currentNr = 0,
	    logosShown = 5,
	    referenceSpeed = 1000;
    
    $referencesLi.each(function(nr) {
      
      $(this)
        .addClass( 'nr' + nr )
        .css({ 'position' : 'absolute', 'left' : posLeft })
        .find('img')
          .css({ 'width' : 150, 'height' : 80 });
      
      //Show only 6 logos.
      if( nr < 5 ) {
      
        posLeft += logoWidth + logoMargin;
      
      } else {
        
        posLeft = 760;
        
      }
      
      lastNr = nr;
      
    });
    
    changeReferenceLogo = function() {
      
      $references.find('.nr'+currentNr).animate({ 'left' : -logoWidth, 'opacity' : opacityIE }, referenceSpeed, function(){
        
        lastNr++;
        
        $(this)
          .removeClass()
          .addClass('nr'+(lastNr))
          .css({ 'left' : 760 });

        
      });
      
      for(var i=1; i<=logosShown; i++ ) {
      
        $references
          .find('.nr'+(currentNr+i))
          .animate({ 'left' : (i-1)*(logoWidth+logoMargin) }, referenceSpeed );
      
      }
      
      
      $('.nr'+(currentNr+logosShown+1))
        .css({ 'opacity' : opacityIE })
        .animate({ 'left' : (5)*(logoWidth+logoMargin), 'opacity' : 1 }, referenceSpeed );
      
      currentNr++;
      
    }
    
    setInterval( changeReferenceLogo, 4000 );
    
  }

 
  // Inject slideshow functionality only on page that actually contains
	// slideshow.
  if( $slideshow.length > 0 && !$slideshow.parent().hasClass('static') ) {
  
    $articles  = $slideshow.find('.article');
    articlesLength = $articles.length;
    
    // Slideshow slides.
    $articles.each(function(nr){
    
      controlsHtml += (nr === 0) ? '<a class="active" rel="'+nr+'"></a>' : '<a rel="'+nr+'"></a>';
      
      if ( nr === 0 ) {
        
        $activeSlide = $(this);
      
        $(this)
            .attr({'rel' : nr })
            .css({ 'display' : 'block', 'position':'absolute', 'left':leftArticleCenter, 'top':0 })
            .find('img').css({ 'right' : 0 });
      
      } else {
      
        $(this)
          .attr({'rel' : nr })
          .css({ 'display' : 'block', 'position':'absolute', 'left':'-9999px', 'top':0 })
          .find('img').css({ 'right' : imgPosition });
      
      }
    
    });
  
    controlsHtml += '</div>';
    
    // Inject slideshow controls
    $slideshow.append(controlsHtml);
    
    changeSlide = function($nextSlide){
      
      $activeSlide
        .removeClass('open')
        .animate({'left' : -bodyWidth-600 }, slideOutSpeed)
        .find('img').animate({ 'right' : imgPosition }, imgOutSpeed);
        
        
      $nextSlide
        .addClass('open')
        .delay('400')
        .css({ 'left' : (bodyWidth) })
        .animate({'left' : leftArticleCenter }, slideInSpeed)
        .find('img')
          .css({ 'right' : slideInPosition })
          .animate({ 'right' : 0 }, imgInSpeed );
      
      $slideshow.find('.active').removeClass('active');
      $('#controls').find('a:eq(' + $nextSlide.attr('rel') + ')').addClass('active');
      
      $activeSlide = $nextSlide;
      activeSlideNr = $nextSlide.attr('rel');
      
    };
    
    
    $('#slideshow')
      .find('#controls')
      .find('a').click(function(){
        
        $nextSlide = $articles.filter(':eq('+$(this).attr('rel')+')');
        
        if( !$nextSlide.hasClass('open') ) {
        
          changeSlide( $nextSlide );
          
        }
        
      });
        
    
    autoSlide = function(){
      
      activeSlideNr++;
      
      if( activeSlideNr > articlesLength-1 ) {
        activeSlideNr = 0;
        
      }
      
      $nextSlide = $articles.filter(':eq('+activeSlideNr+')');
      
      changeSlide($nextSlide);
      
      slideInterval = setTimeout(autoSlide, intervalLength);
      
    };
    
    
    
    slideInterval = setTimeout(autoSlide, intervalLength);
    
    
    
    $('#slideshow-container')
      .mouseenter(function(){
        clearTimeout(slideInterval);
      })
      .mouseleave(function(){
        slideInterval = setTimeout(autoSlide, intervalLength);
      });
    
  
  }


  // ie6 menu fix
  $('#side-nav').find('.lang')
    
    .mouseenter(function(){
      $(this).find('ul').css({ 'display' : 'block' });
    })
    
    .mouseleave(function(){
      $(this).find('ul').css({ 'display' : 'none' });
    });
  
  
	window.setInterval(function(){
			
		  winWidthNew = window.innerWidth;
		
		  if (winWidthOld != winWidthNew) {	
		  	location.reload();
			winWidthOld = winWidthNew;
		  }
		}, 1000);
  
  
});
