var currentArt = null;
var current_que = 'main';
var current_playlist_id = -1;
var previous_playlist_id = -1;
var seek_sec = 0;
function updateArt(url) {
    $('#albumArt').fadeOut(500, function () {
        $(this).addClass('hidden').removeAttr('height').removeAttr('width').attr('src', url);
    });
}
function updateStatus() {
    $.ajax({
        url: 'requests/status.xml',
        success: function (data, status, jqXHR) {
            if (current_que == 'main') {
                $('.dynamic').empty();
                $('#mediaTitle').append($('[name="filename"]', data).text());
                $('#totalTime').append(format_time($('length', data).text()));
                $('#currentTime').append(format_time($('time', data).text()));
                if (!$('#seekSlider').data('clicked')) {
                    $('#seekSlider').slider({
                        value: toFloat($('position', data).text()) * 100
                    });
                }
                $('#currentVolume').append(Math.round($('volume', data).text() / 2.56) + '%');
                /* Don't interfere with the user's action */
                if (!$('#volumeSlider').data('clicked')) {
                    $('#volumeSlider').slider({
                        value: ($('volume', data).text() / 5.12)
                    });
                }
                $('#rateSlider').slider({
                    value: ($('rate', data).text())
                });
                $('#currentRate').append(Math.round($('rate', data).text() * 100) / 100 + 'x');
                $('#audioSlider').slider({
                    value: ($('audiodelay', data).text())
                });
                $('#currentAudioDelay').append(Math.round($('audiodelay', data).text() * 100) / 100 + 's');
                $('#subtitleSlider').slider({
                    value: ($('subtitledelay', data).text())
                });
                $('#currentSubtitleDelay').append(Math.round($('subtitledelay', data).text() * 100) / 100 + 's');
                $('#seekSlider').attr('totalLength', $('length', data).text());
                $('#buttonPlay').attr('state', $('state', data).text()).attr('mrl', $('[name="filename"]', data).text());
                if ($('state', data).text() == 'playing') {
                    $('#buttonPlay').removeClass('paused').addClass('playing');
                } else {
                    $('#buttonPlay').removeClass('playing').addClass('paused');
                }
                if ($('random', data).text() == 'true') {
                    $('#buttonShuffle').removeClass('ui-state-default').addClass('ui-state-active');
                } else {
                    $('#buttonShuffle').addClass('ui-state-default').removeClass('ui-state-active');
                }
                if ($('loop', data).text() == 'true') {
                    $('#buttonLoop').removeClass('ui-state-default').addClass('ui-state-active');
                } else {
                    $('#buttonLoop').addClass('ui-state-default').removeClass('ui-state-active');
                }
                if ($('repeat', data).text() == 'true') {
                    $('#buttonRepeat').removeClass('ui-state-default').addClass('ui-state-active');
                } else {
                    $('#buttonRepeat').addClass('ui-state-default').removeClass('ui-state-active');
                }
                if ($('[name="artwork_url"]', data).text() != currentArt && $('[name="artwork_url"]', data).text() != "") {
                    var tmp = new Date();
                    currentArt = $('[name="artwork_url"]', data).text();
                    updateArt('/art?' + tmp.getTime());
                } else if ($('[name="artwork_url"]', data).text() == "" && currentArt != 'images/vlc-48.png') {
                    currentArt = 'images/vlc-48.png';
                    updateArt(currentArt);
                }
                current_playlist_id = parseInt($('currentplid', data).text());
                if (previous_playlist_id != current_playlist_id) {
                    updatePlayList();
                    previous_playlist_id = current_playlist_id;
                }
                seek_sec = parseInt($('seek_sec', data).text());
                if (pollStatus) {
                    setTimeout(updateStatus, 1000);
                }
            }
            $('band', data).each(function () {
                var id = $(this).attr('id');
                var value = $(this).text() ? $(this).text() : 0;
                var freq = ["60 Hz","170 Hz", "310 Hz", "600 Hz", "1 kHz","3 kHz", "6 kHz", "12 kHz" , "14 kHz" , "16 kHz" ];
                if (!$('#eq_container' + id).length) {
                    $('#window_equalizer').append('
' + value + 'dB
' + freq[id] + '
' + value + 'dB
' + freq[id] + '
' + $('error', data).text() + '
');
                        $('#window_error').dialog('open');
                    }
                    if (append != undefined) {
                        eval(append);
                    }
                    updateStreams();
                }
            });
        } else {
            $.ajax({
                url: 'requests/vlm_cmd.xml',
                data: 'command=' + encodeURIComponent(command),
                success: function (data, status, jqXHR) {
                    if ($('error', data).text()) {
                        $('#error_container').append('' + $('error', data).text() + '
');
                        $('#window_error').dialog('open');
                    }
                    updateStreams();
                }
            });
        }
    }
}
function sendBatchVLMCmd(command, append) {
    var commands = command.split(';');
    $.ajax({
        url: 'requests/vlm_cmd.xml',
        data: 'command=' + encodeURIComponent(commands.shift()),
        success: function (data, status, jqXHR) {
            if ($('error', data).text()) {
                $('#error_container').append('' + $('error', data).text() + '
');
                $('#window_error').dialog('open');
            }
            sendVLMCmd(commands.join(';'), append);
        }
    });
}
function sendEQCmd(params) {
    $.ajax({
        url: 'requests/status.xml',
        data: params,
        success: function (data, status, jqXHR) {
            updateEQ();
        }
    });
}
$(function () {
    $('#albumArt').load(function () {
        var width = $(this).width();
        var height = $(this).height();
        var max = Math.max(width, height);
        if (max > 150) {
            var ratio = 150 / max;
            width = Math.floor(width * ratio);
            height = Math.floor(height * ratio);
        }
        $(this).attr('width', width).attr('height', height).css('margin-left', Math.floor((150 - width) / 2)).css('margin-top', Math.floor((150 - height) / 2)).removeClass('hidden').fadeIn();
    });
    $('#libraryTree').jstree({
        "xml_data": {
            "ajax": {
                "url": "requests/playlist_jstree.xml"
            },
            "xsl": "nest"
        },
        "themeroller": {
            "item_leaf": "ui-icon-video"
        },
        "core": {
            "initially_open": ["plid_1", "plid_2", "plid_3"]
        },
        "plugins": ["xml_data", "ui", "themeroller"]
    }).bind("loaded.jstree", function (event, data) {
        $('[current]', '[id^="plid_"]').each(function () {
            $(this).addClass('ui-state-highlight');
            current_playlist_id = $(this).attr('id').substr(5);
        });
    }).bind("refresh.jstree", function (event, data) {
        $('[current]', '[id^="plid_"]').each(function () {
            $(this).addClass('ui-state-highlight');
            current_playlist_id = $(this).attr('id').substr(5);
        });
    }).delegate("#plid_0 li.jstree-leaf a", "click", function (event, data) {
        event.preventDefault();
        current_playlist_id = $(this).parent().attr('id').substr(5);
        sendCommand('command=pl_play&id=' + current_playlist_id);
    });
    updateStatus();
    updateStreams();
    updateEQ();
});