/* Now playing updates implemented with AJAX and JQuery */

/*
DOM Structure:
    <div id="nowplaying">
      <div class="cover">album art</div>
      <div class="info">
        <div class="label">On air now:</div>
        <div class="show">foo</div>
        <div class="label">Now Playing:</div>
        <div class="artist">foo</div>
        <div class="label">Song:</div>
        <div class="song">foo</div>
        <div class="listen">LISTEN NOW</div>
      </div>
    </div>
*/

var nowPlayingTimer;

/* IE is silly so:
 seems that ff crashes out if you reference nodevalues of childs that are null.
 so this attempts to fix */
function  getNodeValue(path, data, index) {

  var v = $(path, data).text();
  return v;
}

var loadNowPlaying = function () {
  $('body').json('http://nowplaying.radio.astral.com.s3.amazonaws.com/'+SiteID, renderNowPlaying);  
}

var renderNowPlaying = function(jsonData) {
   try {
     if (window.ActiveXObject) {
       var data=new ActiveXObject("Microsoft.XMLDOM");
       data.async="false";
       data.loadXML(jsonData.data);
    }
    else {
      var parser=new DOMParser();
      var data=parser.parseFromString(jsonData.data,"text/xml");
    }
  }catch(e){}
      
    var artist = getNodeValue("/nowplaying/artist/name", data, 0);
    var song = getNodeValue("/nowplaying/track/name", data, 0);
    var albumImage = getNodeValue("/nowplaying/album image", data, 0);
    var showImage = getNodeValue('/nowplaying/onair/now image', data, 0);
    var artistLink = getNodeValue("/nowplaying/artist/link", data, 0);
    var albumLink = getNodeValue("/nowplaying/album/link", data, 0);
    var albumName = getNodeValue("/nowplaying/album/name", data, 0);
    var showName = getNodeValue("/nowplaying/onair/now/showname", data, 0);
    var showLink = getNodeValue('/nowplaying/onair/now/link', data, 0);
    
    $("#nowplaying/div.info/div.artist").empty();
    if (artistLink) {
      $("#nowplaying/div.info/div.artist").append('<a href="' + artistLink + '">' + artist + '</a>');
    }
    else {
      $("#nowplaying/div.info/div.artist").append(artist);
    }  
    
    $("#nowplaying/div.info/div.song").empty();
    if (albumLink) {
      $("#nowplaying/div.info/div.song").append('<a href="' + albumLink + '">' + song + '</a>');
    }
    else {
      $("#nowplaying/div.info/div.song").append(song);
    }

    $("#nowplaying/div.cover").empty();
    var img = '';
    var content = '';
    if (showImage) {
      img = '<img src="' + showImage + '" alt="' + showName  + '" title="' + showName + '" />';
      if (showLink) {
        content = '<a href="' + showLink  + '">' + img  + '</a>';
      }
      else {
        content = img;
      }
      $("#nowplaying/div.cover").append('<div>' + content  + '</div>');
    }
    else {
      $("#nowplaying/div.cover").append('<div><img src="/themes/sri2/images/audio_05_95x95.jpg" alt="" /></div>');
    }

    if (albumImage) {
      albumName = new String(albumName);
      albumName = albumName.replace(/\[[a-zA-Z ]*\]/,'');
      img = '<img src="' + albumImage + '" alt="' + albumName  + '" title="' + albumName + '" />';
      delete(albumName);
      if (albumLink) {
        content = '<a href="' + albumLink  + '">' + img  + '</a>';       
      }
      else {
        content = img;
      }
      $("#nowplaying/div.cover").append('<div style="display:none;">' + content + '</div>');
      //$("#nowplaying/div.cover").append('<div>' + content + '</div>');
    }

    if (showImage && albumImage) {
      $("#nowplaying/div.cover").innerfade({
        speed: 0.01,
        timeout: 6000,
        type: 'sequence',
        containerheight: '64px'
      });
    }

    delete parser;
    parser = null;

    delete data;
    data = null;

    nowPlayingTimer = setTimeout(loadNowPlaying, 15000);
  //});
}

$(document).ready(loadNowPlaying);