$(document).ready(function() { z_init_sweeper();  });

function z_init_sweeper() {
  $container = $('.sweeper');
  $container.addClass('started');
  $('<div class=pager></div>').css({'z-index': 1010 }).appendTo($container);
  var animationIntervalID;
  var savedWidth = [];
  var labelCss = {
     all: { width:1, paddingRight:0, marginRight:0},
     current: { width:'auto', paddingRight:15, marginRight:-13}
  };

	var showImage = function(i, $container) {
    var $a = $container.find('.pager a');
	var $a_this = $container.find('.pager a').eq(i);
	$container.data('href', $a_this.attr('href'));

                if (!$a_this.hasClass('current'))
                {
                    $a_this.addClass('current');
                    $a.not($a_this).each( function() {
                        if ($a.hasClass('current')) {
                            $(this).removeClass('current');
                            $(this).find('em').animate(labelCss.all, 800, 'swing');
                         }
                    });
                     labelCss.current.width = savedWidth[i];
                     $a_this.find('em').animate(labelCss.current, 800, 'swing');
                }

        var $li = $container.find('ul.listing li');
		var $li_this = $container.find('ul.listing li').eq(i);

               // $container.css({ 'z-index': '1001' });
                if ($li_this.css('z-index') != '1000')
                {
                    $li_this.css({ 'z-index': '1000', opacity: 0 });

                    $li.not($li_this).each( function() {
						if ($(this).css('z-index') != 'auto')
							$(this).css('z-index', parseInt($(this).css('z-index'), 10) - 1);
                    });
                    $li_this.stop().animate({ opacity: 1 }, 800, 'swing');
                }

    };




  $container.find('ul.listing li').each(function(index) {

     $a = $(this).find('.views-field-title a');
     $a.contents().wrap('<em/>').wrap('<span/>');
     $('<strong>'+(index+1)+'</strong>').prependTo($a);
     $a.appendTo($container.find('.pager'));

     savedWidth[index] = $a.find('em').width();
     $a.find('em span').css({width:$a.find('em span').width()});


     $(this).css({ top: '0', left: '0', opacity:1, 'z-index': 1000-index });

     //init labels
     if (index == 0) {$a.find('em').css(labelCss.current); $a.addClass('current'); showImage(index, $container);}
     else $a.find('em').css(labelCss.all);
  });

  $container.find('.pager a strong').click( function(o) {
       clearInterval(autoAnimationIntervalID);
       index = $container.find('.pager a strong').index($(this));
       showImage(index, $container);
       return false;
 
  });



         $container.hover(
            function() {
                $(this).data('hovered', true);
            },
            function() {
                $(this).data('hovered', false);
            }
        );


  $container.click(function(){
      $(this).data('clicked', false);
      window.location = $(this).data('href');
  });

	var showcaseCycler = function(index, nImages, $container) {
		return setInterval( function() {
			if (!$container.data('hovered') && !$container.data('clicked'))
                  	showImage(++index % nImages, $container);
            }, 3000);
	};

    autoAnimationIntervalID = showcaseCycler(0, $container.find('ul.listing li').length, $container);
}

