function getRequestObject() {
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return xmlhttp;
}

var oldJsonObj = null;
var jsonObj = null;
var historytracks = new Array();
var requestObject = getRequestObject();
requestObject.onreadystatechange=function()
{
  if (requestObject.readyState==4 && requestObject.status==200)
  {
    jsonObj = requestObject.responseText.evalJSON();
    //Sendethema
    if (oldJsonObj == null || oldJsonObj.sendethema != jsonObj.sendethema)
    {
      var thema_src = '/img/sendeplan2/sendethemen/'+jsonObj.sendethemaImage;
      var sendethema_div = $('sendethema_div');
      var sendethema_div_fade = $('sendethema_div_fade');
      var sendethema_fade = $('sendethema_image_fade');
      var sendethema_image = $('sendethema_image');
      var beschreibung = $('beschreibung');
      var beschreibung_fade = $('beschreibung_fade');
      sendethema_fade.src=sendethema_image.src;
      beschreibung_fade.update(beschreibung.innerHTML);
      sendethema_div_fade.style.display = 'block';
      sendethema_image.src=thema_src;
      sendethema_image.alt=jsonObj.sendethema;
      beschreibung.update(jsonObj.beschreibung);
      sendethema_div_fade.fade({duration:3.0});
    }
    //Aktueller Titel
    if (oldJsonObj == null || oldJsonObj.track != jsonObj.track)
    {
      var track_div = $('track_div');
      if (jsonObj.status)
      {
        track_div.slideUp({duration:1.0,afterFinish:slideTrackIn});
        if (jsonObj.canVote) {
          $('votebuttons').appear();
          $('alreadyvoted').fade();
        } else {
          $('alreadyvoted').appear();
          $('votebuttons').fade();
        }
      } else {
        track_div.slideUp({duration:1.0,afterFinish:slideTrackStatusIn});
      }
    }
    //History
    if (oldJsonObj == null || oldJsonObj.history != jsonObj.history)
    {
      //Alte Lieder entfernen
      var trackhistory = $('trackhistory');
      for (var j=historytracks.length-1; j>=0; j--)
      {
        var inHistory = false;
        for (var i=0; i<jsonObj.history.length; i++)
        {
          if (jsonObj.history[i] == historytracks[j].track)
          { inHistory = true; }
        }
        //alert(historytracks[j].track + ' is in history: ' + inHistory);
        if (!inHistory)
        {
          historytracks[j].element.fade({afterFinish:removeElt});
          historytracks.splice(j,1);
        }
      }
      //Neue Lieder hinzufügen
      //Wir gehen rückwärts, weil neue Lieder von unten nach oben eingefügt werden
      for (var i=jsonObj.history.length-1; i>=0; i--)
      {
        historyTrack = jsonObj.history[i];
        var isNew = true;
        for (var j=0; j<historytracks.length; j++)
        {
          if (historytracks[j].track == historyTrack)
          { isNew = false; }
        }
        if (isNew)
        {
          newLi = document.createElement('li');
          newLi.style.display = 'none';
          trackhistory.insertBefore(newLi,trackhistory.firstChild);
          newId = 'li_'+new Date().getTime();
          newLi.setAttribute('id',newId);
          newLi = $(newId);
          newLi.update(historyTrack);
          newLi.appear();
          historytracks.push({track:historyTrack,element:newLi});
        }
      }
    }
    //DJ-Bild
    if (oldJsonObj == null || oldJsonObj.djName != jsonObj.djName || oldJsonObj.djImage != jsonObj.djImage)
    {
      var dj_src = '/img/djs/'+jsonObj.djImage;
      var dj_image = $('djimage');
      var dj_image_fade = $('djimage_fade');
      dj_image_fade.src = dj_image.src;
      dj_image_fade.alt = dj_image.alt;
      dj_image_fade.style.display = 'block';
      dj_image.src=dj_src;
      dj_image.alt=jsonObj.djName;
      dj_image_fade.fade({duration:3.0});
    }
    oldJsonObj = jsonObj;
  }
}

function loadJSON()
{
  if (requestObject.readyState==4 || requestObject.readyState==0) {
    requestObject.open("GET","/xhr.php?action=infobox_json&history=5",true);
    requestObject.send();
  }
}
loadJSON();
setInterval("loadJSON()",10000);

$('vote_top').observe('click',voteUp);
$('vote_flop').observe('click',voteDown);

function voteUp(event) {
    vote('top');
    return false;
}
function voteDown(event) {
    vote('flop');
    return false;
}

function vote(text) {
  if ($('vote_result').style.display != 'none')
  {
    $('vote_result').fade({duration: 0.5});
  }
  new Ajax.Request('/xhr.php?action=votelib_json&vote='+text, {
    method:    'get',
    onSuccess: function(result) {
      resultObj = result.responseText.evalJSON();
      var resultbox = $('vote_result');
      if (resultObj.result == 'success') {
        $('votebuttons').fade();
        $('alreadyvoted').appear();
        resultbox.style.backgroundColor = '#DDFFDD';
        resultbox.style.borderColor = '#337733';
        var fadeTimer = 3000;
      } else {
        resultbox.style.backgroundColor = '#FFDDDD';
        resultbox.style.borderColor = '#AA0000';
        var fadeTimer = 8000;
      }
      resultbox.update(resultObj.message);
      
      $('vote_result').appear();
      setTimeout("$('vote_result').fade();",fadeTimer);
    }
  });
}

function slideTrackIn(obj) {
  $('track').update(jsonObj.track);
  $('track_partnerlink').href='http://partners.webmasterplan.com/click.asp?ref=444444&site=3752&type=text&tnb=29&prd=yes&stext='+jsonObj.track_partner;
  if (jsonObj.is_user) {
    if (!jsonObj.inPlaylist) {
      $('insertbutton').style.display='inline';
      var link = '/xhr.php?action=userplaylist&insertajax=true&'+jsonObj.splittracks;
      $('insertbutton').observe('click',function() {
        var ajaxRequest = new AjaxRequest();
        if (ajaxRequest.openGet(link)) {
          $('noinsertbutton').appear();
          $('noinsertbutton').style.display = 'inline';
          $('insertbutton').fade();
        }
      });
      $('noinsertbutton').style.display='none';
    } else {
      $('noinsertbutton').style.display='inline';
      $('insertbutton').style.display='none';
    }
  } else {
    $('noinsertbutton').style.display='none';
    $('insertbutton').style.display='none';
  }
  $('track_div').slideDown();
}

function slideTrackStatusIn(obj) {
  $('track').update(jsonObj.track);
  $('track_partnerlink').href='#';
  $('noinsertbutton').hide();
  $('insertbutton').hide();
  if ($('votebuttons').style.display != 'none')
    $('votebuttons').fade();
  if ($('alreadyvoted').style.display != 'none')
    $('alreadyvoted').fade();
  $('track_div').slideDown();
}

function removeElt(elt) {
  elt.element.remove();
}

function insert(track) {
  var ajaxRequest = new AjaxRequest();
  if (ajaxRequest.openGet('/xhr.php?action=userplaylist&insertajax=true&'+track)) {
    $('noinsertbutton').appear();
    if (jsonObj.is_user) {
      $('insertbutton').fade();
    }
  }
}
