var curr_index;
var max_index;
var left_ready = false;
var right_ready = false;
var easing = 'easeInOutCirc';

function gal_init( images, start_id ) {
  max_index = images.length - 1;
  if( start_id == null || start_id > max_index ) {
    start_id = 0;
  }
  curr_index = start_id;

  var output = '';
  var nonedis = '';
  for(i=0;i<images.length;i++)
  {
    nonedis='';
    if(i < (curr_index-1) || i > (curr_index+1)) {
      nonedis='style="display:none"';
    } else if(i == (curr_index-1)) {
      nonedis='style="z-index:100"';
    } else if(i == curr_index) {
      nonedis='style="z-index:102"';
    } else if(i == (curr_index+1)) {
      nonedis='style="z-index:101"';
    }
    output += '<div id="gal_image_'+i+'" '+nonedis+' class="gal_img">';
    output += '  <a href="'+images[i].link+'"><img class="gal_inner_image" src="'+images[i].src+'" border="0" /></a>';
    output += '  <div class="gal_textblock">';
    output += '    <a href="'+images[i].link+'" class="gal_title">'+images[i].title+'</a>'
    output += '    <p class="c">'+images[i].desc+' <a href="'+images[i].link+'" class="gal_themenlink">Zum Thema</a></p>'
    output += '  </div>';
    output += '  <div class="gal_title_only">';
    output += '    <p>'+images[i].title+'</p>'
    output += '  </div>';
    output += '  <div class="gal_left" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" onclick="gal_browse(\'left\');return false;">';
    output += '  </div>';
    output += '  <div class="gal_right" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" onclick="gal_browse(\'right\');return false;">';
    output += '  </div>';
    output += '</div>';
  }
  output += '<img id="gal_arrow_left" class="gal_arrow_left" alt="nach links" title="nach links" src="/images/zeit/coverflow/left.jpg" onclick="gal_browse(\'left\');return false;" />';
  output += '<img id="gal_arrow_right" class="gal_arrow_right" alt="nach rechts" title="nach rechts" src="/images/zeit/coverflow/right.jpg" onclick="gal_browse(\'right\');return false;" />';
  $( '#gal_carousel' ).html(output);

  if(curr_index > 0) {
    $( '#gal_image_' + (curr_index-1) ).toggleClass('gal_img_left');
  }
  $( '#gal_image_' + (curr_index) ).toggleClass('gal_img_center');
  $( '#gal_image_' + (curr_index+1) ).toggleClass('gal_img_right');
}

function animation_callback(animation_done, rtl) {
  switch( animation_done ) {
    case 'l':
      left_ready = true;
       break;
    case 'r':
      right_ready = true;
      break;
    default:
      return;
  }

  if( left_ready && right_ready ) {
    left_ready = false;
    right_ready = false;
    if( rtl ) {
      $('#gal_image_' + curr_index).animate({width: "252px",height: "220px",left: "0px",top: "45px"}, 500, easing,
      function() {
        $('#gal_image_' + (curr_index+1)).css("z-index", "101");
        $('#gal_image_' + (curr_index-1)).css("z-index", "100");
        $('#gal_image_' + curr_index).removeClass();
        $('#gal_image_' + curr_index).addClass('gal_img_center');
      } );
      $('#gal_image_' + (curr_index+1)).animate({width: "367px",height: "300px",left: "300px", top: "22px"}, 500, easing,
      function() {
        $('#gal_image_' + curr_index).css("z-index", "102");
        $('#gal_image_' + (curr_index-1)).removeClass();
        $('#gal_image_' + (curr_index-1)).addClass('gal_img_left');
      } );
    } else {
      $('#gal_image_' + (curr_index)).animate({width: "252px",height: "220px",left: "487px",top: "45px"}, 500, easing,
      function() {
        $('#gal_image_' + (curr_index)).css("z-index", "102");
        $('#gal_image_' + (curr_index-1)).css("z-index", "100");
        $('#gal_image_' + curr_index).removeClass();
        $('#gal_image_' + curr_index).addClass('gal_img_center');
      } );
      $('#gal_image_' + (curr_index-1)).animate({width: "367px",height: "300px",left: "66px", top: "22px"}, 500, easing,
      function() { 
        $('#gal_image_' + (curr_index+1)).css("z-index", "99"); 
        $('#gal_image_' + (curr_index+1)).removeClass();
        $('#gal_image_' + (curr_index+1)).addClass('gal_img_right');
      } );
    }
  }
}

function gal_browse(dir){
  ivwReload();

  if( !(dir == 'left' || dir == 'right' ) )
  {
    return;
  }

  var new_left,new_center,new_right;
  
  left_ready = false;
  right_ready = false;

  if( dir == 'right' )
  {
    new_left = curr_index;
    new_center = (curr_index+1);
    new_right = (curr_index+2);

    if( new_right > max_index + 1 ) return;

    $('#gal_arrow_left').css("visibility", "visible");

    $('#gal_image_' + (curr_index-1)).css("z-index", "0");
    $('#gal_image_' + (curr_index-1)).hide(1000);

    $('#gal_image_' + new_left).animate({width: "367px",height: "300px",left: "66px",top: "22px"}, 500, easing, animation_callback('l', true) );

    $('#gal_image_' + new_center).animate({width: "480px",height: "380px",left: "130px", top: "0"}, 500, easing, animation_callback('r', true) );

    if( new_right <= max_index ) {
      $('#gal_image_' + new_right).removeClass();
      $('#gal_image_' + new_right).addClass('gal_img_right');
      $('#gal_image_' + new_right).show(1000);
    } else {
      $('#gal_arrow_right').css("visibility", "hidden");
    }

    curr_index = new_center;
  }

  if( dir == 'left' )
  {
    new_left = (curr_index-2);
    new_center = (curr_index-1);
    new_right = curr_index;

    if( new_left + 1 < 0 ) return;

    $('#gal_arrow_right').css("visibility", "visible");

    $('#gal_image_' + (curr_index+1)).css("z-index", "0");
    $('#gal_image_' + (curr_index+1)).hide(1000);

    $('#gal_image_' + new_right).animate({width: "367px",height: "300px",left: "300px",top: "22px"}, 500, easing, animation_callback('r', false) );

    $('#gal_image_' + new_center).animate({width: "480px",height: "380px",left: "130px", top: "0"}, 500, easing, animation_callback('l', false) );

    if( new_left >= 0 ) {
      $('#gal_image_' + new_left).removeClass();
      $('#gal_image_' + new_left).addClass('gal_img_left');
      $('#gal_image_' + new_left).show(1000);
    } else {
      $('#gal_arrow_left').css("visibility", "hidden");
    }

    curr_index = new_center;
  }
}
