////////////////////////////////////////////////////////////////
//
// @method void wTickers(options)
//
// @desc Erzeugt einen Ticker
//
// @param options Optionen delayStart : Verzögerung bis zum Start des Tickers in Sekunden, speed : Geschwindigkeit (1-10), delimiter : Trennzeichen zwichen den Meldungen (z.B. +++), repeatMode : Wiederholungsmodus (|continue|loop) 
//
// @return void
//
////////////////////////////////////////////////////////////////
                  
jQuery.fn.wTicker = function(options){
  var containerId = String(parseInt(Math.random() * 1000));      
  var tickerData = new Array();
  jQuery.each(jQuery(this).children(), function(){
    tickerData.push($(this).children()[0]);
  }); 
    
  jQuery('<div class="listTicker" id="' + containerId + '"><div class="listTickerInner" id="' + containerId + '_inner"></div></div>').replaceAll(jQuery(this));        

  if(options['repeatMode'] == 'continue'){
    for(var i = 0; i != tickerData.length; i++){
      jQuery('#' + containerId + '_inner').append(options['delimiter']);
      jQuery('#' + containerId + '_inner').append(tickerData[i].cloneNode(true));
    }          
    for(var i = 0; i != tickerData.length; i++){
      jQuery('#' + containerId + '_inner').append(options['delimiter']);
      jQuery('#' + containerId + '_inner').append(tickerData[i]);
    } 
    jQuery('#' + containerId + '_inner').css('margin-left', '0px');                           
  }
  else{
    for(var i = 0; i != tickerData.length; i++){
      if(i != 0){
        jQuery('#' + containerId + '_inner').append(options['delimiter']);
      }
      jQuery('#' + containerId + '_inner').append(tickerData[i].cloneNode(true));
    } 
    jQuery('#' + containerId + '_inner').css('margin-left', jQuery('#' + containerId).width() + 'px');              
  }
  
  jQuery('#' + containerId + '_inner').data('hasFinishedLoop', '1');                       

  window.setTimeout(function(){
    var widthContainerInner = document.getElementById('' + containerId + '_inner').offsetWidth;
    var duration            = 200 * widthContainerInner / options['speed'];
    if(options['repeatMode'] == 'continue'){
      window.setInterval(function(){
        if(jQuery('#' + containerId + '_inner').data('hasFinishedLoop') == '1'){ 
          jQuery('#' + containerId + '_inner').data('hasFinishedLoop', '0');        
          jQuery('#' + containerId + '_inner').css('margin-left', '0px');
          jQuery('#' + containerId + '_inner').animate({'marginLeft': '-' + String(widthContainerInner) / 2}, duration / 4, 'linear', function(){jQuery('#' + containerId + '_inner').data('hasFinishedLoop', '1');});
        }
      }, 10);  
    }
    else if(options['repeatMode'] == 'loop'){
      window.setInterval(function(){
        if(jQuery('#' + containerId + '_inner').data('hasFinishedLoop') == '1'){ 
          jQuery('#' + containerId + '_inner').data('hasFinishedLoop', '0');        
          jQuery('#' + containerId + '_inner').css('margin-left', String(jQuery('#' + containerId).width()) + 'px'); 
          jQuery('#' + containerId + '_inner').animate({'marginLeft': '-' + String(widthContainerInner)}, duration, 'linear', function(){jQuery('#' + containerId + '_inner').data('hasFinishedLoop', '1');});                
        }
      }, 100);  
    }          
    else{
      jQuery('#' + containerId + '_inner').animate({'marginLeft': '-' + String(widthContainerInner)}, duration, 'linear');
    }
  }, parseInt(options['delayStart']) * 1000);     
} 
