Nowplaying = {}
Nowplaying.site_id = 0;
Nowplaying.data_url = '';


Nowplaying.init = function(station_id, nowplaying_url) {
	if (typeof nowplaying_url == "undefined" || nowplaying_url == '') {
    nowplaying_url = "http://nowplaying.radio.astral.com.s3.amazonaws.com/s";
	}
	Nowplaying.site_id = station_id;
	Nowplaying.data_url = nowplaying_url + station_id;
  $(document).bind("onNowplayingChanged", Nowplaying.onNowplayingChanged );
  $(document).bind("onNowplayingSongChanged", Nowplaying.onNowplayingSongChanged );
  Nowplaying.load();
}
Nowplaying.load = function(data_url){
	if (typeof(data_url) == 'undefined') {
		data_url = Nowplaying.data_url;
	}
	var data = '';
  
  $.getJSON(data_url+"?jsoncallback=?", function(){});
}

// we got an update of new data
Nowplaying.onNowplayingChanged = function(event, data) {

}

// we got an update of a new song.
Nowplaying.onNowplayingSongChanged = function(event, data) {
	if (iYIM && iYIM.findIMediaYCarouselByClassName) {
	  var Carousels = iYIM.findIMediaYCarouselByClassName('carousel_block_recentlyplayed');
	  if (Carousels && (Carousels.length > 0)) {
	    // changed loop due to IE bug with for i in XXX
	  	for(var i = 0; i < Carousels.length; i++) {
	      Carousels[i].insertItem(null);
	    }
	  }
	}
}

Nowplaying.nowPlayingTimer = null;
Nowplaying.currentTitle = '';
Nowplaying.ERROR_WINDOW_SIZE = 4 * 60 * 1000;
Nowplaying.currentDuration = 0;
Nowplaying.lastUpdate = 0;
Nowplaying.firstUpdate = true;
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");
      delete(parser);
    }
  }catch(e){}
  
  var now = (new Date()).getTime();
  var NowPlayingData = {};
  NowPlayingData.artist = $("nowplaying>artist>name", data).text();
  NowPlayingData.song = $("nowplaying>track>name", data).text();
  if(NowPlayingData.song != Nowplaying.currentTitle){
    Nowplaying.currentTitle = NowPlayingData.song;
    Nowplaying.lastUpdate = now;
    NowPlayingData.newData = true;
    NowPlayingData.window_expired = false;
  }
  else {
    if((now - Nowplaying.lastUpdate) > Nowplaying.ERROR_WINDOW_SIZE ){
      NowPlayingData.song = 'n/a';
      NowPlayingData.artist = 'n/a';
      NowPlayingData.window_expired = true;
      NowPlayingData.newData = true;
    }
    else {
      NowPlayingData.window_expired = false;
      NowPlayingData.newData = false;	
    }
  }    
  NowPlayingData.albumImage = $('nowplaying>album>image', data).text();
  NowPlayingData.showImage = $('nowplaying>onair>now>mastheadimage', data).text();
  NowPlayingData.artistLink = $('nowplaying>artist>link', data).text();
  NowPlayingData.albumLink = $('nowplaying>album>link', data).text();
  NowPlayingData.albumName = $('nowplaying>album>name', data).text();
  NowPlayingData.showName = $('nowplaying>onair>now>showname', data).text();
  NowPlayingData.showStart = ($('nowplaying>onair>now>start', data).text());
  NowPlayingData.showEnd = ($('nowplaying>onair>now>end', data).text());
  NowPlayingData.showLink = $('nowplaying>onair>now>link', data).text();
  NowPlayingData.showStart = NowPlayingData.showStart.replace(/:00/, "");
  NowPlayingData.showEnd = NowPlayingData.showEnd.replace(/:00/, "");

  delete(data);

  // only fire if the data has actually changed.
  if (NowPlayingData.newData) {
    $(document).trigger("onNowplayingChanged", NowPlayingData);
  }
  // only send event for actual song change events (and don't include the initial song fetched)
  if (NowPlayingData.newData && NowPlayingData.window_expired == false && !Nowplaying.firstUpdate) {
    $(document).trigger("onNowplayingSongChanged", NowPlayingData);
  }
  
  clearTimeout(Nowplaying.nowPlayingTimer);
  Nowplaying.nowPlayingTimer = null;
  
  Nowplaying.nowPlayingTimer = setTimeout(function() {
  	Nowplaying.load(Nowplaying.data_url);
  }, 15000);
  
  Nowplaying.firstUpdate = false;

  return;
}

