/* ================================================================================

   RADIO DRS - WEBPLAYER - Ticker (und mehr)

   aktualisiert zyklisch diverse Informationen zum abgespielten
   Medium.

   ----------------------------------------------------------------------
   2007-09-xx  hahnax  init
   hahnax: Axel Hahn (webmaster@srdrs.ch)
   ================================================================================
*/

var aMappings = new Array();
var bCanAjax=testCanAjax();


// ----------------------------------------------------------------------
/**
 * Test: kann dieser Browser AJAX verwenden
 * @return Http-Request-Objekt
 */
function testCanAjax() {
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
      // zu dieser Zeile siehe weiter unten
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  return (http_request);
}


// ----------------------------------------------------------------------
// Client-Content aktualisieren - Request ausl�sen und vom Server
// HTML Code abholen
// param sUrl: aufzurufende URL
// param oObj: Objekt, wo der Inhalt eingef�gt werden soll (wird durchgereicht)
// return: bool (aber unwichtig)
function updateContent(sUrl,sObj) {
  if (!bCanAjax) return false;
  var http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
      http_request.overrideMimeType('text/xml');
      // zu dieser Zeile siehe weiter unten
    }
  } else if (window.ActiveXObject) { // IE
    try {
      http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        http_request = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!http_request) {
    // hier sollte man eigentlich nie hinkommen, weil
    // bCanAjax das bereits abfing.
    alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
    return false;
  }
  
  if (sUrl.indexOf("?")>0) sUrl += "&"
  else sUrl += "?"
  var oDate = new Date();
  sUrl += "additionalrndvalue="+oDate.getFullYear();
  if ((oDate.getMonth()+1)<10) sUrl += "0"
  sUrl +=(oDate.getMonth()+1);
  if ((oDate.getDate())<10) sUrl += "0"
  sUrl +=oDate.getDate();
  if ((oDate.getHours())<10) sUrl += "0"
  sUrl +=oDate.getHours();
  if ((oDate.getMinutes())<10) sUrl += "0"
  sUrl +=oDate.getMinutes();
  if ((oDate.getSeconds())<10) sUrl += "0"
  sUrl +=oDate.getSeconds();

  http_request.open('GET', sUrl, true);
  http_request.onreadystatechange=function() {
    if (http_request.readyState == 4) {
      if (http_request.status == 200) {
        document.getElementById(sObj).innerHTML=http_request.responseText;
      } else {
        document.getElementById(sObj).innerHTML = '?';
      }
      // Fenstergroesse anpassen
      // updateWindowSize(true);
    }
  }
  http_request.send(null);
  
} // function makeRequest(sUrl,sObj)

// Anzeigen des aktuell gespielten Titels eines Senders
// per Switch der CSS-Eigenschaft display.
// Divs werden erzeugt in /lib/player/playerinfos_jetztauchaufsendung.php
// Ids sind "jetztauf" + Sendername aus der /lib/player/config.php
function zeigeJetztaufsendung(sId) {
  // alle ausblenden ....
  document.getElementById("jetztaufdrs1").style.display = 'none';
  document.getElementById("jetztaufdrs2").style.display = 'none';
  document.getElementById("jetztaufdrs3").style.display = 'none';
  document.getElementById("jetztaufdrs4").style.display = 'none';
  document.getElementById("jetztaufvirus").style.display = 'none';
  document.getElementById("jetztaufdrsmusikwelle").style.display = 'none';
  document.getElementById("jetztaufkinderradio").style.display = 'none';
  document.getElementById("jetztaufrsc_de").style.display = 'none';
  document.getElementById("jetztaufrsj").style.display = 'none';
  document.getElementById("jetztaufrsp").style.display = 'none';
  // ... und aktive id einblenden
  document.getElementById(sId).style.display = 'block';
} // function zeigeJetztaufsendung(sId)

// ----------------------------------------------------------------------
//
// Init
// - loopt �ber alle Divs und aktualisiert diese erstmalig
// - evtl. laufender Ticker wird abgestellt und neu gesetzt.
// - aufgerufen in Radio.prototype.play = function() (radio.js)
//
// ----------------------------------------------------------------------
function initTicker(sAudiourl, iIdSG, iIdSH, bStream) {
  if (bCanAjax) {
    // Loop ueber alle Konfigurations-Eintr�ge:

    // ----------------------------------------------------------------------
    // Config
    // ----------------------------------------------------------------------
    
    // Konfiguration der Mappings ... welches Span/ Div wird mit welcher URL
    // in welchen Abst�nden aktualisiert?
    //
    //  aMappings[i]["sID"]              = ID des Div oder Span-Tags, wo der Inhalt eingef�gt werden soll
    //  aMappings[i]["sUrl"]             = URL (playerinfos.php mit entspr. Parametern)
    //  aMappings[i]["sParam"]           = URL-Parameter
    //  aMappings[i]["iIntervall"]       = Update-Intervall in Sekunden; -1 = nicht wiederholen
    //
    var i=-1;
    
    if (bStream) {
      // bei Streams: statisches File + regelmaessig aktualisieren
      i++;
      aMappings[i]=new Object();
      aMappings[i]["sID"]              = "infoszursendung";
      // aMappings[i]["sUrl"]             = "/import/webradio/playerinfos_infoszursendung_"+bStream+".html";
      aMappings[i]["sUrl"]             = "/import/webradio/teaser_in_player_"+bStream+".htmlpart";
      aMappings[i]["sParam"]           = '';
      aMappings[i]["iIntervall"]       = 20000;
    } 

    i++;
    aMappings[i]=new Object();
    aMappings[i]["sID"]              = "jetztauchaufsendung";
    aMappings[i]["sUrl"]             = "/import/webradio/playerinfos_jetztauchaufsendung.htmlpart";
    aMappings[i]["sParam"]           = '';
    aMappings[i]["iIntervall"]       = 90000;

    
    // ----------------------------------------------------------------------
    // Config Ende - ab hier nichts mehr anpassen
    // ----------------------------------------------------------------------

    for (i=0; i < aMappings.length; i++ ) {
      var sUrl=aMappings[i]["sUrl"] + aMappings[i]["sParam"];
      var sID=aMappings[i]["sID"];

      // erstmalig aktualisieren
      // updateContent(sUrl, sID);

      // Intervall f�r automatische Aktualisierungen
      window.clearInterval(aMappings[i]["oTicker"]);
      if (aMappings[i]["iIntervall"]>0) {
        add2Log('Debug', 'initialisiere Ticker ' +sID+ ' ('+(aMappings[i]["iIntervall"]/1000) + 's)');
        aMappings[i]["oTicker"]=window.setInterval('updateContent("'+sUrl+'", "'+sID+'")', aMappings[i]["iIntervall"]);
      }
    }
  }

} // function initTicker()


function stopAllTickers() {
  if (bCanAjax)
    for (var i=0; i < aMappings.length; i++ ) window.clearInterval(aMappings[i]["oTicker"]);
}

// ----------------------------------------------------------------------
// EOF
// ----------------------------------------------------------------------

