/*global amplitude_config:true */
/* Radio Funtions */
/**** Last-fm API ****/
(function( $ ) {
$.fn.lfya = function(){
var urla = "https://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&period=12month&format=json&limit=200";
var artists = [];
function isLoadeda (artistElement) {
for (var i = 0; i < artists.length; i++){
var markup = $("
" + artists[i].aname + "" + artists[i].played + "");
artistElement.append(markup);
}
}
return this.each(function(){
var $this = $(this);
$.getJSON( urla, function(data){
$(data.topartists.artist).each(function(){
artists.push ({
aname: this.name,
played: this.playcount
});
});
isLoadeda($this);
});
});
};
$('.artists').lfya();
$.fn.lfyt = function(){
var urla = "https://ws.audioscrobbler.com/2.0/?method=user.gettoptracks&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&period=12month&format=json&limit=200";
var tracks = [];
function isLoadedt (tracksElement) {
for (var i = 0; i < tracks.length; i++){
var markup = $("" + tracks[i].artist + ": " + tracks[i].title + "" + tracks[i].played + "");
tracksElement.append(markup);
}
}
return this.each(function(){
var $this = $(this);
$.getJSON( urla, function(data){
$(data.toptracks.track).each(function(){
tracks.push ({
title: this.name,
artist: this.artist.name,
played: this.playcount,
});
});
isLoadedt($this);
});
});
};
$('.tracks').lfyt();
$.fn.lfm = function(){
var url = "https://ws.audioscrobbler.com/2.0/?method=user.gettopalbums&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&period=12month&format=json&limit=200";
var albums = [];
function isLoaded (albumElement) {
for (var i = 0; i < albums.length; i++){
var markup = $("" + albums[i].artist + ": " + albums[i].name + "");
albumElement.append(markup);
}
albumElement.find('.album').hover(function(){
$(this).addClass('flip');
},function(){
$(this).removeClass('flip');
});
}
return this.each(function(){
var $this = $(this);
$.getJSON( url, function(data){
$(data.topalbums.album).each(function(){
albums.push ({
name: this.name,
artist: this.artist.name,
played: this.playcount,
art: this.image[this.image.length-1]["#text"]
});
});
isLoaded($this);
});
});
};
$('.albums').lfm();
})( jQuery );
function getRecentTracks() {
$.fn.lfmr = function(){
//tracksinterval = setInterval(getRecentTracks,180000); // check every 3 minutes
var urla = "https://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&user=windhamdavid&api_key=e12ea1d0253898ee9a93edfe42ffdeab&format=json&limit=100";
var tracks = [];
function isLoadedr (recentElement) {
for (var i = 0; i < tracks.length; i++){
var markup = $("" + tracks[i].artist + " - " + tracks[i].title + " : " + tracks[i].album + "");
recentElement.append(markup);
}
}
return this.each(function(){
var $this = $(this);
$.getJSON( urla, function(data){
$(data.recenttracks.track).each(function(){
tracks.push ({
artist: this.artist["#text"],
title: this.name,
album: this.album["#text"]
});
});
isLoadedr($this);
});
});
};
$('.recent').lfmr();
$('.recent').hide();
$('.recent').fadeIn(1000);
}
/**** Audio Player ****/
amplitude_config = {
"amplitude_songs": [{
"url": "http://stream.davidawindham.com:8008/stream",
"live": true
}],
"amplitude_volume": 73
};
function get_radio_tower() {return 'img/radio.gif';}
function get_radio_none() {return 'img/none.svg';}
function get_radio_eq() {return 'img/eq.gif';}
function get_radio_eq_none() {return 'img/1.png';}
var interval = null;
function radioTitle() {
var url = 'http://stream.davidawindham.com/status2.xsl';
var mountpoint = '/stream';
$.ajax({ type: 'GET',
url: url,
async: true,
jsonpCallback: 'parseMusic',
contentType: "application/json",
dataType: 'jsonp',
success: function(json){
if(json[mountpoint] == null) {
$('#connection-error').modal('show');
$('#error-reconnecting').hide();
$('#error-reconnecting-again').hide();
$('#connection-error-reconnecting').attr('data-transitiongoal', 0).progressbar();
$('#connection-error-retry').on('click', function () {
$('#error-reconnecting').show();
$('#connection-error-reconnecting').attr('data-transitiongoal', 100).progressbar({
done: function() { $('#error-reconnecting-again').show(); }
});
});
$('#radio').attr('src', get_radio_none()).fadeIn(300);
$('#eq').attr('src', get_radio_eq_none()).fadeIn(300);
}
else {
$('#connection-error').modal('hide');
$('#track').text(json[mountpoint].title);
$('#listeners').text(json[mountpoint].listeners);
$('#peak-listeners').text(json[mountpoint].peak_listeners);
$('#bitrate').text(json[mountpoint].bitrate);
$('#radio').attr('src', get_radio_tower()).fadeIn(300);
$('#eq').attr('src', get_radio_eq()).fadeIn(300);
}
},
error: function(){
$('#connection-error').modal('show');
clearInterval(interval);
$('#radio').attr('src', get_radio_none()).fadeIn(300);
$('#eq').attr('src', get_radio_eq_none()).fadeIn(300);
}
});
}
interval = setInterval(radioTitle,20000); // every 20 seconds or stop polling
/**** Page Features ****/
$(document).ready(function() {
$('#auth-modal').modal('show');
$('#nickname').validator();
radioTitle(); // call it once on load to avoid 20s delay
getRecentTracks(); //call it once to avoid 3m delay
var randomColor = Math.floor(Math.random()*16777215).toString(16);
$("span#user-label").css({ backgroundColor: '#' + randomColor });
$('ul.nav-tabs a').tooltip();
});