﻿function ExecuteService(url, params, async, callbackSuccess, callbackError) {
    $.ajax({
        async: async,
        cache: false,
        type: "POST",
        url: url,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: params,
        success: callbackSuccess,
        error: callbackError
    });
}

function ModalShow(position, text) {
    $(position).dialog("destroy");
    $(position).html(text);
    $(position).dialog({
        modal: true,
        resizable: false,
        buttons: { "Ok": function() { $(this).dialog("close"); } }
    });
    $(position).prev().hide();
    $(position).dialog("open")
}

function ConfirmWindow(position, text, doIfYes, param) {
    $(position).dialog("destroy");
    $(position).html(text);
    $(position).dialog({
        modal: true,
        resizable: false,
        buttons: { "Да": function() { doIfYes(param); $(this).dialog("close"); }, "Нет": function() { $(this).dialog("close"); } }
    });
    $(position).prev().hide();
    $(position).dialog("open");
}

function CheckAnswer(text) {
    switch (text)
    {
        case 'NotAuthenticated': ModalShow('#modalWindow', 'Для доступа требуется <a href="/UserManagement/Logon.aspx" style="color: red" target="_blank" onclick="try{ window.opener.focus(); window.opener.location.href = this.href; return false;} catch(e) {return true;}">авторизация</a>'); return false;
        case 'NotSubsc': ModalShow('#modalWindow', 'Для доступа требуется наличие подписки на прослушивание. Подписаться можно в <a href="/Account/PersonalSubscriptions.aspx" style="color: red" target="_blank" onclick="try{ window.opener.focus(); window.opener.location.href = this.href; return false;} catch(e) {return true;}">личном кабинете</a> на вкладке "Прослушивание".'); return false;
        case 'NotFound': ModalShow('#modalWindow', 'Ошибка доступа'); return false;
        case 'ExcessBalance': ModalShow('#modalWindow', 'Недостаточно средств на счете.'); return false;
        case 'Exception': ModalShow('#modalWindow', 'Неизвестная ошибка, повторите попытку позже.'); return false;
        case 'ItemInBascketAlready': ModalShow('#modalWindow', 'Трек ранее добавлен в корзину.'); return false;
    }
    return true;
}

function PlayTrackInCurPlSelf(trackId, playlistId) {
    var ret;
    ExecuteService("/Services/Player2.asmx/AddTrackToPlaylist", "{productId: '" + trackId + "', play: false, playListId: " + playlistId + "}", false, function(data) { ret = jQuery.parseJSON(data.d); });
    outSimpleLoad = false;
    outPlay = false;
    mustRedraw = true;

    outCurTab = playListUI.ConvertPlsIdToTabId(ret.Tab);
    outCurPl = ret.PlP;
    outTrack = ret.Ps;

    playListUI.InitCurTab();
}

function PlayTrackInCurPlSelfFromAs(trackId) {
    var ret;
    ExecuteService("/Services/Player2.asmx/AddTrackToPlaylist", "{productId: '" + trackId + "', play: true, playListId: -1}", false, function(data) { ret = jQuery.parseJSON(data.d); });
    outSimpleLoad = false;
    outPlay = true;
    mustRedraw = true;

    outCurTab = playListUI.ConvertPlsIdToTabId(ret.Tab);
    outCurPl = ret.PlP;
    outTrack = ret.Ps;

    playListUI.InitCurTab();
}

function ShowSavePlDlgSelf(position, title, trackId) {
    var ret;
    $(position).dialog("destroy");
    ExecuteService("/Services/Player2.asmx/GetPlaylistsForSaveDFlg", "", false, function(data) { ret = data.d; });
    if (!CheckAnswer(ret)) return;
    $(position).children().html(ret);
    $(position).dialog({
        modal: true,
        resizable: false,
        buttons: { "Ok": function() {
            if (!$('input[name="PlDlg"]:checked').val()) return;
            var plId = $('input[name="PlDlg"]:checked').val();
            if ($('input[name="PlDlg"]:checked').val() == "-100")
                ExecuteService("/Services/Player2.asmx/SaveCurPlayList", "{title: '" + $('input[name="namePl"]').val() + "'}", false, function(data) { plId = jQuery.parseJSON(data.d); });
            PlayTrackInCurPlSelf(trackId, plId);
            $(this).dialog("close");
        },
            Cancel: function() { $(this).dialog("close"); }
        },
        title: title
    });
    $(position).dialog("open");
}

function ShowSharePlayListWindow(position, title, doIfYes, param, playlist) {
    var ret;
    $(position).dialog("destroy");
    if ($(position).children().html() != '')
        ExecuteService("/Services/Player2.asmx/GetShareHtml", "", false, function(data) { ret = data.d; });
    $(position).html(ret);
    if (playlist.Description != null)
        $(position).find('textarea[name="PlayListDescr"]').html(playlist.Description);
    if (playlist.Genre != null)
        $(position).find('select[name="PlayListGenre"] [value="' + playlist.Genre + '"]').attr("selected", "selected");
    if (playlist.Mood != null)
        $(position).find('select[name="PlayListMood"] [value="' + playlist.Mood + '"]').attr("selected", "selected");
    $(position).dialog({
        width: 400,
        height: 300,
        modal: true,
        resizable: false,
        buttons: { "Ok": function() { doIfYes(param, $(position).find('textarea[name="PlayListDescr"]').html(), $(position).find('select[name="PlayListGenre"] :selected').val(), $(position).find('select[name="PlayListMood"] :selected').val()); $(this).dialog("close"); }, Cancel: function() { $(this).dialog("close"); } },
        title: title
    });
    $(position).dialog("open");
}

function shareFacebook(x, link, title) {
    x.stopPropagation();
    var url = "http://www.facebook.com/sharer.php?u=" + link + "&t=" + title;
    window.open(url, '', 'toolbar=0,status=0,width=626,height=436');
}
function shareTwitter(x, link, title) {
    x.stopPropagation();
    var url = "http://twitter.com/share?text=" + title + "&url=" + link
    window.open(url, '', 'toolbar=0,status=0,width=626,height=436');
}
function shareVkontakte(x, link, title) {
    x.stopPropagation();
    var url = "http://vkontakte.ru/share.php?url=" + link + "&title=" + title;
    window.open(url, '', 'toolbar=0,status=0,width=626,height=436');
}
