
var newsChangeTimer;
var newsChangeLock = false;
var newsSecondLock = false;

function newsSwitch(new_i)
{
  if (newsSecondLock)
    return;
  newsSecondLock = true;
  
  if (newsChangeLock) {
    setTimeout(function() {newsSecondLock = false;}, 1000)
    return;
  }
  
  newsChangeLock = true;
  newsSecondLock = false;
  clearTimeout(newsChangeTimer);
  newsChangeTimer = 0;
  var container = $('#news');
  var buttons = $('.news ul li');
  var offset = 0;
  
  /* Normalize new_i */
  if (new_i < 0 || new_i >= buttons.length)
    new_i = undefined;
  
  /* Unmark selected */
  var selected = $('.news ul li div');
  if (selected.length > 0) {
    selected = $(selected[0]);
    
    /* For offset calculation */
    var selected_index = selected.data('index');
    
    if (new_i != undefined) {
      offset = new_i - selected_index;
      if (offset < 0)
        offset += buttons.length;
    } else {
      offset = 1;
    }
    if (offset == 0) {
      newsChangeTimer = setTimeout('newsSwitch()', 3000);
      newsChangeLock = false;
      return;
    }
    
    /* Make it collapse */
    selected.css('float', 'right');
    selected.animate({
      'width': '0px'
    }, {
      'duration': 2000,
        'easing': 'easeInOutQuad',
      'complete': (function(item) {return function() {
        item.remove();
      };})(selected)
    });
  } else {
    return;
  }
  
  // Shift all for one place to left
  container.children().each(function(i, news_item) {
    news_item = $(news_item);
    var new_pos = parseInt(news_item.css('left')) - news_item.width() * offset;
    var visible_area = i * news_item.width();
    
    var cb = function() {};
    if (new_pos < -visible_area) {
      cb = (function(news_item) { return function() {
        news_item.css('left', (parseInt(news_item.css('left')) + news_item.width() * $('#news').children().length) + 'px');
      }})(news_item);
    } else if (new_pos == -visible_area) {
      var new_selected = $($('.news ul').children()[i]);
      /* Create a fading mask */
      var buttons_count = $('.news ul li').length;
      var mask = $('<div></div>');
      new_selected.append(mask);
      
      /* Fill it up */
      mask.css('width', '0px');
      mask.animate({
        'width': new_selected.width() + 'px'
      }, {
        'duration': 2000,
        'easing': 'easeInOutQuad'
      })
      mask.data('index', i);
        
      cb = function() {
        newsChangeTimer = setTimeout('newsSwitch()', 3000);
        newsChangeLock = false;
      };
    }
    
    news_item.animate({'left': new_pos + 'px'}, {'complete': cb, 'duration': 2000, 'easing': 'easeInOutExpo'});
    if (news_item.children().length > 0 && new_pos <= -visible_area) {
      var child = $(news_item.children()[0]);
      var img_position = -news_item.width();
      if (new_pos == -visible_area)
        img_position = 0;
      
      child.animate({
        'left': img_position + 'px'
      }, {
        'duration': 2000,
        'easing': 'easeInOutQuad',
        'complete': (function(img, position) { return function() {
          img.css('left', position + 'px')
        }})(child, -img_position)
      });
    }
  });
}

$(document).ready(function() {
  newsChangeTimer = setTimeout('newsSwitch()', 6000);
});

