// CONFiG
//jQuery.noConflict(); // jquery auf gemeinsame Nutzung mit mootools einstellen

var counter = 0; //wieviele nachrichten aktuell eingefadet sind
var fadeInit = 6; //wieviele tweets initial gefadet werden sollen
var fadeInSpeed = 300; //fadeInSpeed fuer init
var fadeDelay = 1000; //pause zwischen einzelnen tweets
var fadeSpeedFast = 1000; //geschwindigkeit f�r start und end button
var maxTweets = 50; // wie viele Tweets sollen angezeigt werden

if ( tweets.length-1 > maxTweets){
  var shownTweets = maxTweets; //alle tweets aus cahe anzeigen
} else {
  var shownTweets = tweets.length; //alle tweets aus cache anzeigen
}
//var shownTweets = 100; //angezeigte tweets
var fadeSpeed = shownTweets*6000; //geschwindikeit des gesammten durchlaufs

var tweetWidth = 222; //breite eines einzelnen tweets
var tweetPadding = 22; // padding eines einzelnen tweets
var wallWidth = 0; //hintergrundbreite initialisiert
var scrollWidth = 0;

var newMessageIntervall = 30000; // intervall in welchem geprueft werden soll ob neue nachrichten verfuegbar sind
var aktualLength = tweets[0]["twitter_id"]; //neueste id wird gespeichert (fuer pruefung ob neue nachricht da ist)

var js_data = "new"; //in welcher datei man sich gerade befinde (new oder old)
var direction = 'nothing'; //richtung in der gerade geslidet wird ('' = forwaerts, 'reverse' = rueckwaerts)

var randNum = 0;

var timeout;

var firstNext = true; //true wenn noch nicht die get_next Methode aufgerufen wurde. Neuesten 50 Tweets werden geladen

// JavaScript Document

jQuery(document).ready(function(){
  if (perma != 1){
    //window.setInterval("check_new()",newMessageIntervall); //pruefungsintervall ob neue nachrichten verfuegbar sind
  }
	
  jQuery('a').bind('focus',function(){
    this.blur();
  });

  jQuery('#slider .fotos .foto a').each(function(){

    randNum = Math.random()*500;
    randNum = randNum+100; //random zahl zwischen 100 und 600;
    randNum = Math.ceil(randNum);
		
    jQuery(this).css("padding-left", randNum);
		
  });
  jQuery('#slider .fotos').show();
	
  img = new Image();
	
  img.onload = tweets_init;
  img.src = "_img/mauer_bg.jpg";
  if (img.complete && tweets.length > 0) {
    tweets_init();
  }
	
});

function tweets_init() {
  slide_pause();
  jQuery('#slider').css('left',0);
  build_tweets();
  fade_in(0, false);
}

function build_tweet(id, twitter_id, username, pic, text, priority, published, special) {
  jQuery('#content #slider .tweets').append('<div class="tweet_holder"><div class="tweet" id="tweet_'+ (id + 1) +'"></div></div>');
  if ( special > 0){
    jQuery('#content #slider .tweets #tweet_'+ (id + 1)).addClass('blue')
  }
  datum = published.split(' ');
  datum = datum[0].split('-');
  var d=new Date(datum[0],datum[1] - 1,datum[2]);
  complete_date = weekday[d.getDay()]+' '+datum[2]+'.'+datum[1]+'.'+datum[0];
  jQuery('#content #slider .tweets #tweet_'+ (id + 1)).append('<div class="img"><a href="http://twitter.com/' + username + '"><img src="' + pic + '" alt="profilePic" title="' + username + '" /></a></div>');
  jQuery('#content #slider .tweets #tweet_'+ (id + 1)).append('<div class="published">' + complete_date + ' <span class="user"><a href="http://twitter.com/' + username + '">' + username + '</a></span></div>');
  jQuery('#content #slider .tweets #tweet_'+ (id + 1)).append('<div class="text">&raquo;' + text + '&laquo;</div>');
}

function build_tweets() {
  jQuery('#content #slider .tweets').html('');

  wallWidth = (tweetWidth+tweetPadding)*shownTweets; // berechnung der breite aller tweets
  if (wallWidth < screen.width){
    wallWidth = screen.width;
  }

  scrollWidth = 0-wallWidth+screen.width; //breite aller tweets minus aktuelle aufl�sung

  jQuery('#content #slider .tweets, #content #slider').css('width',wallWidth); // hintergrundbreite wird gesetzt
  jQuery('#content #slider .tweets').html(''); // tweets conteiner wird geleert
  for (var i = 0; i < shownTweets; i++) {
    build_tweet(i, tweets[i]['twitter_id'], tweets[i]['username'], tweets[i]['profilepic'], tweets[i]['text'], tweets[i]['priority'], tweets[i]['published'], tweets[i]['priority']);
  }
}

function fade_in(start, reverse) {
  jQuery('.tweets').append('<div class="clear">&nbsp;</div>');
  if (reverse){
    var j = 0;
    for(var i = shownTweets; i >= fadeInit; i--) {
      j++;
      timeout = window.setTimeout("jQuery('#content #slider .tweets #tweet_"+i+"').fadeIn(fadeInSpeed);", fadeDelay*j);
    }
    timeout = window.setTimeout("jQuery('#content #slider .tweets .tweet').show();slide_reverse();", fadeDelay*(i+1));
	
  } else {

    for(var i = start; i < fadeInit; i++) {
      timeout = window.setTimeout("jQuery('#content #slider .tweets #tweet_'+ ("+i+" + 1)).fadeIn(fadeInSpeed);", fadeDelay*i);
    }
    timeout = window.setTimeout("jQuery('#content #slider .tweets .tweet').show();slide_play();", fadeDelay*(i+1));
  }

}

function slide_go(what) {
  slide_pause();

  switch(what) {
    default:
      direction = '';
      slideSpeed = fadeSpeed;
      slideWidth = scrollWidth;
      break;

    case 'play':
      direction = '';
      wallWidthProzent = (parseInt(jQuery('#slider').css('left'))/scrollWidth); //berechnung der aktuellen position in prozent
      slideSpeed = fadeSpeed - (fadeSpeed * wallWidthProzent); //berechnung der zeit differenz position in prozent
      slideWidth = scrollWidth;
      break;

    case 'reverse':
      direction = 'reverse';
      wallWidthProzent = (parseInt(jQuery('#slider').css('left'))/scrollWidth); //berechnung der aktuellen position in prozent
      slideSpeed = fadeSpeed * wallWidthProzent; //berechnung der zeit differenz position in prozent
      slideWidth = 0;
      break;

    case 'start':
      direction = '';
      wallWidthProzent = (parseInt(jQuery('#slider').css('left'))/scrollWidth); //berechnung der aktuellen position in prozent
      slideSpeed = fadeSpeedFast * wallWidthProzent; //berechnung der zeit differenz position in prozent
      slideWidth = 0;
      break;

    case 'end':
      direction = 'reverse';
      wallWidthProzent = (parseInt(jQuery('#slider').css('left'))/scrollWidth); //berechnung der aktuellen position in prozent
      slideSpeed = fadeSpeedFast  - (fadeSpeedFast * wallWidthProzent); //berechnung der zeit differenz position in prozent
      slideWidth = scrollWidth;
      break;
  }
	
  jQuery('#slider').animate({
    left: slideWidth
  }, slideSpeed, "linear"); //JQUERY VERSION
}

function slide_start() {
  if (js_data == "new") {
    slide_go('start');
  } else {
    direction = 'nothing';
    js_data = "new";
    jQuery.ajax({
      url: "_js/tweets.js",
      type: "GET",
      dataType: "script",

      beforeSend: function() {
        slide_pause();
        jQuery('#slider .tweets').fadeOut('fast');
        jQuery('#content #slider .tweets').html('');
      },

      complete: function() {
        jQuery('#slider').css('left',0);
        //aktualLength = tweets[0]["twitter_id"];
        build_tweets();
        timeout = window.setTimeout("jQuery('#slider .tweets').show();fade_in(0, false);", 1000);
      }
    });
  }
}

function slide_pause(clicked) {
  if (clicked != undefined){
    direction = clicked;
  }
  jQuery('#vogel img').attr("src","_img/vogel.gif");
  jQuery('#slider').stop();
  jQuery('#buttons ul li.start, #buttons ul li.rewind, #buttons ul li.stop, #buttons ul li.play, #buttons ul li.end').removeClass('active');
  jQuery('#buttons ul li.stop').addClass('active');
}

function slide_play() {
  direction = '';
  slide_go('play');
  jQuery('#buttons ul li.start, #buttons ul li.rewind, #buttons ul li.stop, #buttons ul li.play, #buttons ul li.end').removeClass('active');
  jQuery('#buttons ul li.play').addClass('active');
  jQuery('#vogel img').attr("src","_img/vogel-2.gif");
}

function slide_reverse() {
  direction = 'reverse';
  slide_go('reverse');
  jQuery('#buttons ul li.rewind, #buttons ul li.stop, #buttons ul li.play, #buttons ul li.end').removeClass('active');
  jQuery('#buttons ul li.rewind').addClass('active');
  jQuery('#vogel img').attr("src","_img/vogel-2.gif");
}

function slide_end() {
  if(js_data == 'old') {
    slide_go('end');
  } else {
    direction = 'nothing';
    js_data = "old";
    jQuery.ajax({
      url: "_js/old_tweets.js",
      type: "GET",
      dataType: "script",

      beforeSend: function() {
        slide_pause();
        jQuery('#slider .tweets').fadeOut('fast');
        jQuery('#content #slider .tweets').html('');
      },

      complete: function() {
        jQuery('#slider').css('left',scrollWidth);
        direction = 'reverse';
        //aktualLength = tweets[0]["twitter_id"];
        shownTweets = tweets.length;
        tweets.reverse();
        build_tweets();
        timeout = window.setTimeout("jQuery('#slider .tweets').show();fade_in(0, true);", 500);
      }
    });
  }
}

function get_next(next) {
  if (next) {

    tweet = tweets.pop();
    data = 'tid=' + (parseInt(tweet['twitter_id']) + 1) + '&dir=rev';
  } else {
    tweet = tweets.shift();
    data = 'tid=' + (parseInt(tweet['twitter_id']) - 1);
  }

  if (firstNext) {
    data = 'tid=' + 'new';
  }

  jQuery.ajax({
    url: "get_tweets.php",
    type: "GET",
    dataType: "script",
    data: data,
    beforeSend: function() {
      slide_pause();
      jQuery('#slider .tweets').fadeOut();
      jQuery('#content #slider .tweets').html('');
    },

    complete: function() {
      build_tweets();
      slide_go('start');
      window.clearTimeout(timeout);
      timeout = window.setTimeout("jQuery('#slider .tweets').show();fade_in(0, false);", 1000);
      firstNext = false;
    }
  });
}

function check_new() {
		
  scrollto = 0;
		
  jQuery.ajax({
    url: "_js/tweets.js",
    type: "GET",
    dataType: "script",
			
    complete: function() {
				
      if (tweets[0]["twitter_id"] > aktualLength) {
					
        for (var i = 0; i <= tweets.length; i++) {
						
          if ( i < tweets.length && tweets[i]["twitter_id"] > aktualLength){
						
            if (jQuery('.tweet_holder').html() != null) {
              jQuery('#content #slider .tweets .tweet_holder:first').before('<div class="tweet_holder"><div class="tweet" id="tweet_'+tweets[i]["twitter_id"]+'"></div></div>');
            } else {
              jQuery('#content #slider .tweets').html('<div class="tweet_holder"><div class="tweet" id="tweet_'+tweets[i]["twitter_id"]+'"></div></div>');
            }
            datum = tweets[i]['published'].split(' ');
            datum = datum[0].split('-');
            var d=new Date();
            d.setFullYear(parseInt(datum[0]),parseInt(datum[1]),parseInt(datum[2]));
            complete_date = weekday[d.getDay()]+' '+datum[2]+'.'+datum[1]+'.'+datum[0];
							
            jQuery('#content #slider .tweets #tweet_'+tweets[i]["twitter_id"]).append('<div class="img"><a href="http://twitter.com/' + tweets[i]['username'] + '"><img src="' + tweets[i]["profilepic"] + '" alt="profilePic" title="'+tweets[i]['username']+'" /></a></div>');
            jQuery('#content #slider .tweets #tweet_'+tweets[i]["twitter_id"]).append('<div class="published">' + complete_date + ' <span class="user"><a href="http://twitter.com/' + tweets[i]['username'] + '">' + tweets[i]['username'] + '</a></span></div>');
            jQuery('#content #slider .tweets #tweet_'+tweets[i]["twitter_id"]).append('<div class="text">&raquo;' + tweets[i]['text'] + '&laquo;</div>');
							
            scrollto = scrollto-(tweetWidth+tweetPadding);
            jQuery('#content #slider .tweets .tweet:first').fadeIn('fast');
            var z = 0;
            jQuery('.tweet_holder').each(function() {
              z++;
            })
            if (jQuery('.tweet_holder').html() != null && z >= maxTweets) {
              jQuery('#content #slider .tweets .tweet_holder:last').remove();
            } else {
              shownTweets++;
              wallWidth = (tweetWidth+tweetPadding)*shownTweets; // berechnung der breite aller tweets
              if (wallWidth < screen.width){
                wallWidth = screen.width;
              }
              
              scrollWidth = 0-wallWidth+screen.width; //breite aller tweets minus aktuelle aufl�sung
              jQuery('#content #slider .tweets, #content #slider').css('width',wallWidth); // hintergrundbreite wird gesetzt
            }
            if ( direction == 'reverse' ){
              add_tweets();
            }
          } else {
            slide_pause();
            if (wallWidth > screen.width) {
              jQuery('#slider .fotos').css('left', (parseInt(jQuery('#slider .fotos').css('left'))+(scrollto*(-1))));
              jQuery('#slider').css('left', (parseInt(jQuery('#slider').css('left'))+scrollto));
  
              if (jQuery.browser.msie){
                bgPos = jQuery('#slider').css('background-position-x');
                bgPos = bgPos.replace("px","");
                jQuery('#slider').css('background-position-x', parseInt(bgPos)+(scrollto*(-1))+'px');
              } else {
                bgPos = jQuery('#slider').css('backgroundPosition');
                jQuery('#slider').css({
                  backgroundPosition: parseInt(bgPos)+(scrollto*(-1))+'px 0px'
                });
              }
            }

            jQuery('#head #new_message').fadeIn('fast');
            timeout = window.setTimeout("jQuery('#head #new_message').fadeOut('fast')",10000);
		
            aktualLength = tweets[0]["twitter_id"];
            slide_what();
			
            break;
          }
						
        }
					
      }
	
    }
  });
}

function add_tweets(){
  slide_reverse();
}

function slide_what() {
  switch (direction){
		
    case '':
      slide_play();
      break;
		
    case 'reverse':
      slide_reverse();
      break;
		
    case 'pause':
      slide_pause();
      break;
		
    default:
      break;
  }
}