﻿function Jukebox() {
    this.songs = new Array();
    this.numberOfSongs = 0;
    this.index = 0;
    this.songsJSON = null;
    this.artistMode = false;
    this.saved = false;
    this.maxsongs = 0;
}

Jukebox.prototype.get = function (guid) {
    var me = this;
    jQuery.getJSON("/Jukebox/Get", { id: guid }, function (data) {
        me.loadJukebox(data);
    });
}

Jukebox.prototype.getArtistMode = function () {
    return this.artistMode;
}

Jukebox.prototype.getSongID = function (index) {
    return this.songs[index];
}
Jukebox.prototype.getNumberOfSongs = function () {
    return this.numberOfSongs;
}
Jukebox.prototype.getSongs = function () {
    return this.songsJSON;
}
Jukebox.prototype.getSaved = function () {
    return this.saved;
}
Jukebox.prototype.getMaxSongs = function () {
    return this.maxsongs;
}
Jukebox.prototype.addToJukebox = function (songid) {
    var me = this;
    jQuery.getJSON("/Jukebox/AddSong", { id: songid }, function (data) {
        me.loadJukebox(data);
    });
}
Jukebox.prototype.addArtistToJukebox = function (artistid) {
    var me = this;
    jQuery.getJSON("/Jukebox/AddSongs", { id: artistid }, function (data) {
        me.loadJukebox(data);
    });
}

Jukebox.prototype.resetJukebox = function () {
    var me = this;
    $.getJSON("/Jukebox/Clear", null, function (data) {
        me.loadJukebox(data);
    });
}

Jukebox.prototype.deleteFromJukebox = function (id) {
    var me = this;
    $.getJSON("/Jukebox/RemoveSong", { id: id }, function (data) {
        me.loadJukebox(data);
    });
}

Jukebox.prototype.sort = function (newsort) {
    var me = this;
    $.getJSON("/Jukebox/Sort", { id: newsort }, function (data) {
        me.loadJukebox(data);
    });
}

Jukebox.prototype.loadJukebox = function (data) {
    var me = this;
    me.index = 0;
    me.artistMode = data.ArtistMode;
    me.saved = data.IsSaved;
    me.maxsongs = data.MaxSongs;
    me.songs = new Array();
    if (data.SongsJSON != null) {
        $.each(data.SongsJSON, function (i, song) {
            me.songs.push(song.ID);
            me.index++;
        });
    }
    me.numberOfSongs = me.index;
    me.songsJSON = data.SongsJSON;
    jukeboxLoadCompleted.fire(me, null);
}
