
var Artform = Artform || {};

Artform.Slider = function() {
	var started = false;
	var $wrap, $container, $ul, $lis, $af_prev, $af_next; 
    var ul_width = 0;
    var li_width = 0;
	var current_slide = 1;
	var nb_slides = 1;
    var af_anim_speed = 500;
    
    var $toggle_progress, $progressbar;
    var progressTimeout;
    var currentW = 1;
    var progress_speed = 15;

    var getLeftMargin = function() {
    	return -(li_width)*(current_slide-1);
    };
    
    var newslide = function() {
    	currentW = 1;
        current_slide = (current_slide % (nb_slides)) + 1;
        switch (current_slide) {
        case 1:
            $('#af_next').hide();
            $('#af_next').attr('id', 'af_start_next');
        	$af_prev.fadeOut('fast', function(){
              $('#af_start_next').fadeIn('slow');
            });            
        	break;
        case 2:
            $('#af_start_next').attr('id', 'af_next');
        	$af_prev.fadeIn('fast');
        	break;
        }
        $ul.stop().animate({marginLeft: getLeftMargin()}, af_anim_speed, 'easeInOutCirc');
    };

    var resize = function() {
		li_width = $container.css('width').replace('px', '');
		ul_width = li_width * nb_slides;
		$ul.css({width: ul_width, marginLeft: getLeftMargin()});
		$lis.css({float: 'left', width: li_width});
		
		$lis.find('a').each(function() {
			var $a = $(this);
			var pos = $.parseJSON($a.attr('rel'));
			var offset = Math.round((li_width - 900) / 2);
			$a.css({left: (offset + pos[0]) + 'px', top: pos[1] + 'px'});
		});
    };
    
    var toggleProgress = function() {
    	if ($toggle_progress.hasClass('active')) {
        	stopProgress();
        	$toggle_progress.removeClass('active');
        } else {
        	setProgress();
        	$toggle_progress.addClass('active');
        }
    };
    
    var setProgress = function() {
    	$progressbar.css('width', currentW + 'px');
    	currentW += 2;
    	if (currentW > 900) {
    		nextSlide();
    	}
    	progressTimeout = setTimeout(setProgress, progress_speed);
    };
    
    var stopProgress = function() {
    	clearTimeout(progressTimeout);
    };
    
    var nextSlide = function(e) {
    	newslide();
    };
    
    var prevSlide = function(e) {
    	current_slide -= 2;
    	if (current_slide < 0) {
    		current_slide = nb_slides-1;
    	}
    	
    	newslide();
    };
    
    var trackCurrentSlide = function() {
    	_gaq && _gaq.push(['_trackEvent', 'Slideshow', 'clicked', $($lis[current_slide-1]).find('a').attr('href')]);
    };
    
    return {
    	init: function(container_id, wrapper_id) {
    		$wrap = $(wrapper_id);
    		$container = $(container_id);
    		$ul = $container.find('ul');
    		$lis = $ul.find('li');
    		nb_slides = $lis.length;
    		$(window).resize(resize);
    		resize();
    		
    		$container.after('<div id="progressbar_container"><div id="progressbar"></div></div>');
    		$progressbar = $('#progressbar');
    		
    		$toggle_progress = $('<div class="active" id="toggle_slideshow" />').css({display: 'none'});
    		$toggle_progress.click(toggleProgress);
            
            $af_prev = $('<a href="#" id="af_prev"></a>');
    		$af_prev.click(function(e) {
    			e.preventDefault();
    			
    			prevSlide();
    			
    			trackCurrentSlide();
    		}).hide();    		
            
            if (current_slide > 1){
              $af_next =  $('<a href="#" id="af_next"></a>');
            }else{
              $af_next =  $('<a href="#" id="af_start_next"></a>');
            }
                             		
            $af_next.click(function(e) {
    			e.preventDefault();
    			
    			if ( ! started) {
    				$af_prev.fadeIn('fast');
    				$toggle_progress.fadeIn('fast');
    				setProgress();
    				started = true;
    			}
    			
    			nextSlide();
    			
    			trackCurrentSlide();
    		});
    		$wrap.append($toggle_progress, $af_prev, $af_next);
      }
    };
}();

$(document).ready(function() {

  /* Mainmenu JS */
  var mainMenuTo;
  var mainSubMenu;

  $('#main_menu > ul > li').mouseover(function() {
    $('#main_menu > ul > li > ul').hide();
    clearTimeout(mainMenuTo);
    $(this).find('ul').show();
  });

  $('#main_menu > ul > li').mouseout(function() {
    mainSubMenu = $(this).find('ul');
    mainMenuTo = setTimeout(function(){
      mainSubMenu.hide();
    }, 1000);
  });

  $('.social_button').mouseover(function() {
    $(this).css('backgroundPosition', '0 0');
  });
  $('.social_button').mouseout(function(){
    $(this).css('backgroundPosition', '0 25px');
  });

  var searchDropdownTo;
  $('#keyword').keyup(function(){
    if ($('#keyword').val().length > 3)
    {
      clearTimeout(searchDropdownTo);
      searchDropdownTo = setTimeout(function()
      {
        $.ajax({
          url: '/ajax/search/' + $('#keyword').val(),
          success: function(data) {
            $('#searchresult').html(data);
            $('#searchresult').fadeIn();
          }
        });
      }
      , 200);
    }
    else
    {
      $('#searchresult').html('');
      $('#searchresult').fadeOut();
    }
    return false;
  });

  var mouse_is_inside;
  $('#searchresult').hover(function(){
	  mouse_is_inside=true;
  }, function(){
	  mouse_is_inside=false;
  });

  $(document).mouseup(function(){
	  if(! mouse_is_inside) {
		  $('#searchresult').fadeOut();
	  }
  });
  
  $('#navigation > li').hover(
	function () {
		$('a',$(this)).stop().animate({'marginLeft':'-2px'},300);
	},
	function () {
		$('a',$(this)).stop().animate({'marginLeft':'-170px'},300);
	}
  );
  
  $('#navigation2 > li').hover(
		  function () {
			  $('a',$(this)).stop().animate({'marginLeft':'-2px'},300);
		  },
		  function () {
			  $('a',$(this)).stop().animate({'marginLeft':'-170px'},300);
		  }
  );

  /*
   * Filmstrip
   */
  $('.fs_link > a').mouseover(function(){
	  var $e = $(this);
	  var imgSrc = $e.find('img').attr('src');
	  var imgAlt = $e.attr('rel');
	  $e.find('img').attr('src', imgAlt);
	  $e.find('img').attr('alt', imgSrc);
	  
	  $e.find('.fs_title').show();
	  $e.find('img').css('opacity', '1.0');
  });
  $('.fs_link > a').mouseout(function(){
	  
	  var imgSrc = $(this).find('img').attr('src');
	  var imgAlt = $(this).find('img').attr('alt');
	  $(this).find('img').attr('src', imgAlt);
	  $(this).find('img').attr('alt', imgSrc);
	  
	  $(this).find('.fs_title').hide();
	  $(this).find('img').css('opacity', '0.4');
  });
  
  var stripWidth = ($('.fs_link').size() * 179) / 2;
  var marLeft = 0;
  
  $('#fs_left').click(function(){
	  if(marLeft < 0)
	  {
		  marLeft += 905;
		  $('#fs_strip').animate({marginLeft: marLeft}, 500, function(){});
	  }
  });
  
  $('#fs_right').click(function(){
	  if(marLeft > (stripWidth*-1))
	  {
		  marLeft -= 905;
		  $('#fs_strip').animate({marginLeft: marLeft}, 500, function(){});
	  }
  });
});

