
document.domain = "9sky.com";
var g_playlist = new Array();
var g_curTrk = null;
var g_playState = 0;
var g_playerID = (new Date()).getTime();

//初始歌曲信息
function InitTrackInfo(trk) {
    try {
        if (!trk) return;
        $("#ctlBenison").html("<marquee scrollDelay=\"3\" Scrollamount=\"3\" DIRECTION=\"left\" >{0}</marquee>".format(trk.benison));
        $("#ctlTrkName").html(trk.trkName);
        $("#ctlArtName").html(trk.artName);
        $("#ctlNickName").html("<a href=\"{0}\" target=\"_blank\">{1}</a>".format(PERHOME_URL.format(trk.uID), (trk.nickname ? trk.nickname : "")));
        $("#ctlArtHref").attr("href", ARTIST_URL.format(trk.artID));
        var t1 = new Date();
        var arr = trk.time.split(",");
        var t2 = new Date(parseInt(arr[0]), parseInt(arr[1]) - 1, parseInt(arr[2]), parseInt(arr[3]) - 1, parseInt(arr[4]) - 1, parseInt(arr[5]) - 1, parseInt(arr[6]) - 1, parseInt(arr[7]) - 1);
        //        var v = "";
        //        var t = (t1 - t2);
        //        var h = parseInt(t / (1000 * 3600));
        //        if (h >= 24) {
        //            v = parseInt(h / 24) + "天前";
        //        }
        //        else {
        //            v = h + "小时前";
        //        }

        //        $("#ctlHour").html(v);
        $("#ctlSexImg").attr("src", $("#ctlSexImg").attr("t").format(trk.uID));
        $("#ctlSexImg").show();
    } catch (e) { }
    UpdateVolume();
}

function GetTimeSpan(t1, t2) {
}

//播放器控件
function GetMedia() {
    var host = document.getElementById("SilverlightControl");
    if (host) { return host.content.findName("media"); }
    return null;
}

//播放上一首
function PlayPrev() {
    if (g_playlist.length == 0) return;
    var i = 0;
    if (g_curTrk == null)
        i = 0;
    else {
        g_playlist.foreach(function(t, j) {
            if (t.trkID == g_curTrk.trkID) {
                i = j; return true;
            }
        });
        i--;
        if (i < 0) i = 0;
    }
    var t = g_playlist[i];
    PlayTrack(t.trkID);
}

//播放下一首
function PlayNext() {
    if (g_playlist.length == 0) return;
    var i = 0;
    if (g_curTrk == null)
        i = 0;
    else {
        g_playlist.foreach(function(t, j) {
            if (t.trkID == g_curTrk.trkID) {
                i = j; return true;
            }
        });
        i++;
        if (i >= g_playlist.length) i = 0;
    }
    var t = g_playlist[i];
    PlayTrack(t.trkID);
}

//打开增加歌曲窗口
function OpenAddTrackWindow() {
    if (!UserValidate()) return;
    var url = g_staticJS + "Radio/rad1/addTrackWindow.js?" + (new Date()).getTime();
    AjaxScript(url, null, null, function() { LoadCSS(g_staticIMG + "Radio/rad1/addtrk.css"); _OpenAddTrackWindow(); });
    _HideWindows(1);
}

//打开邀请好友窗口
function OpenInviteFriendsWindow() {
    if (!UserValidate()) return;
    var url = g_staticJS + "Radio/rad1/inviteFriendsWindow.js";
    AjaxScript(url, null, null, function() { LoadCSS(g_staticIMG + "Radio/rad1/invifri.css"); _OpenInviteFriendsWindow(); });
    _HideWindows(0);
}

function _HideWindows(i) {
    try {
        var id = new Array("ctlRadioParent", "ctlInviteParent", "ctlAddTrkWnd", "ctlSuccess");
        $("#" + id[i]).css("display", "none");
    } catch (e) { }
}

function On_Playing() {
    var o = GetMedia();
    var pos = (o.Position.Seconds * trackStep.getBarWidth() / o.NaturalDuration.Seconds) + trackStep.m_basePoint;
    trackStep.adjustPos(pos);
    $E("ctlPlay").style.display = "none";
    $E("ctlPause").style.display = "block";
    $E("ctlTGuage2").style.width = trackStep.Pointer.style.left;
    $E("ctlTime").innerHTML = SecTotime(o.Position.Seconds).substring(3);
}

function On_Closed() {
    g_playState = 0;
    PlayNext();
}

function On_Stop() {
    g_playState = 0;
    PlayNext();
}

function On_Pause() {
    $E("ctlPlay").style.display = "block";
    $E("ctlPause").style.display = "none";
}

var mediaTimer = function() {
    setTimeout(function() {
        try {
            if (play_getCurPlayerStatus() == "0") {
                Pause();
            }
            if (g_playState == 1) {
                var o = GetMedia();
                switch (o.CurrentState) {
                    case "Closed":
                        On_Closed();
                        break;

                    case "Playing":
                        On_Playing();
                        break;

                    case "Paused":
                        if (parseInt(o.Position.Seconds) + 1 >= parseInt(o.NaturalDuration.Seconds)) {
                            On_Stop();
                        }
                        else {
                            On_Pause();
                        }
                        break;
                }
            }
        } catch (e) { }
        mediaTimer();
    }, 5000);
}
mediaTimer();

function GetURL(o, fn) {
    var trkID = o.trkID;
    var albID = o.albID;
    var artID = o.artID;
    var discID = o.discID;
    var artName = o.artName;
    var trkName = o.trkName;
    var file = o.file;
    //var url = "http://media.9sky.com/media/ajaxtrackurl.aspx";
    //var params = "trkID={0}&albID={1}&artID={2}&discID={3}&artName={4}&trkName={5}&file={6}&ts={7}".format(trkID, albID, artID, discID, escape(artName), escape(trkName), file, (new Date()).getTime());
    var url = "http://www.9sky.com/media/ajaxtrackurl.aspx";
    var params = "action=i9sky&trkID={0}&albID={1}&artID={2}&discID={3}&artName={4}&trkName={5}&file={6}&ts={7}".format(trkID, albID, artID, discID, escape(artName), escape(trkName), file, (new Date()).getTime());
    AjaxScript(url, "__varName_loadTrackInfo__URL", params, function(msg) { if (fn) { fn(msg); } });
}

function GetTrackInfo(trkID, fn) {
    var url = g_GroupHomeURL + "Ajax/Radio/TrackInfo.aspx";
    var params = "trkID=" + trkID;
    AjaxScript(url, "__varName_loadTrackInfo__URL", params, function(msg) {
        if (msg != "") {
            var obj = eval(msg);
            if (fn) { fn(obj); }
        }
        else {
            if (fn) { fn(null); }
        }
    });
}

function FindTrack(trkID) {
    var o1 = null;
    g_playlist.foreach(function(o) {
        if (o.trkID == trkID) { o1 = o; return true; }
    });
    return o1;
}

function PlayURL(url) {
    InitTrackInfo(g_curTrk);
    SetSource(url);
    InitMediaCtl();
    Play();
    g_playState = 1;
}

function ListenTrace(o) {
    if (!o) return;
    setTimeout(function() {
        var img = new Image();
        //加 escape 解决乱码问题
        //
        img.src = g_GroupHomeURL + "Proxy/Trace.aspx?a={0}&ot={1}&o={2}&on={3}&groupid={4}&ts={5}".format(2, 3, o.trkID, escape(o.trkName), g_curGroupID, (new Date()).getTime());
    }, 1000);
}

function PlayTrack(trkID) {
    play_setCurPlayerStatus();
    Stop();
    if (trkID == 0)
        return;

    var o1 = FindTrack(trkID)
    if (o1 == null) {
        GetTrackInfo(trkID, function(o) {
            if (o != null) {
                g_curTrk = o;
                g_playlist.push(o);
                GetURL(o, function(url) { PlayURL(url); });
            }
            else {
                alert("该歌曲不存在!");
            }
        });
    }
    else {
        g_curTrk = o1;
        GetURL(o1, function(url) { PlayURL(url); });
    }
    ListenTrace(o1);

    playno(trkID);

    $("#ctlPlayPanel").css("visibility", "visible");
}


function _SetMute() {
    SetMute();
    var b = GetMute();
    if (b) {
        $("#ctlBugle").css("background", "url({0}radio/rad1/mute_tp.gif)".format(g_staticIMG));
    }
    else {
        $("#ctlBugle").css("background", "");
    }
}

function UpdateVolume() {
    var w = $E("ctlVGuage").style.width;
    var v = parseInt(w) / 20;
    SetVolume(v);
}

function SetGrade(trkID, trkName, s) {
    var url = g_GroupHomeURL + "Ajax/Radio/SetScore.aspx";
    var p = "id={0}&name={1}&s={2}".format(trkID, trkName, s);
    AjaxScript(url, "__grade__" + (new Date()).getTime(), p, null);
}

function LoadTrackGrade(trkIDs) {
    var url = g_GroupHomeURL + "Ajax/Radio/GetScore.aspx";
    var p = "trkIDs=" + trkIDs;
    AjaxScript(url, "__grade__" + (new Date()).getTime(), p, function(msg) {
        if (msg == "") return;
        var o = eval(msg);
        if (o.scores) {
            var html = "";
            o.scores.foreach(function(s, i) { UpdateGrade(s.id, s.s, false); });
        }
    });
}

function UpdateGrade(trkID, i, b) {
    var ctl = $("#ctlTrkGrade" + trkID);
    if (ctl) {
        ctl.html(BuildGrade(trkID, i));
        var obj = FindTrack(trkID);
        if (obj) { obj.score = i; }
    }
    if (b) {
        var o = FindTrack(trkID)
        if (o) {
            SetGrade(trkID, o.trkName, i);
        }
    }
}

function BuildGrade(trkID, n) {
    var v = "";
    for (var i = 0; i < 5; i++) {
        if (i < n) {
            v += "<b onclick=\"UpdateGrade({0},{1},true)\"></b>".format(trkID, i + 1);
        }
        else {
            v += "<i onclick=\"UpdateGrade({0},{1},true)\"></i>".format(trkID, i + 1);
        }
    }
    return v;
}


function PlayListReSort() {
    var ctl = $E("ctlPlayList");
    g_playlist.foreach(function(o, i) {
        if (o)
            var ctl = $E("trkContents" + o.trkID);
    });
}

function AddTrackItem(trk, p) {
    if (p == null) return;
    system.createDIV("trkContents" + trk.trkID, function(o) {
        if (trk.trkID == g_curTrkID) {
        }
        trk.inx = i;
        var v = "<a href=\"#\" class=\"p1\" title=\"\"></a>";
        var arts = "";
        trk.arts.foreach(function(art, i) {
            if (i == 0)
                arts = "<a href=\"\" target='_blank'>".format(ARTIST_URL.format(art.artID)) + art.artName + "</a>";
            else
                arts += "/" + "<a href=\"{0}\" target='_blank'>".format(ARTIST_URL.format(art.artID)) + art.artName + "</a>";
        });

        if (arts == "")
            arts = "<a href=\"{0}\" target='_blank'>".format(ARTIST_URL.format(trk.artID)) + trk.artName + "</a>";
        v += "<p class=\"p2 rlk1\"><a href=\"#@\" onclick=\"PlayTrack({0})\">{1}</a>-{2}</p>".format(trk.trkID, trk.trkName, arts);

        if (g_isGroupAdmin)//控制删除操作
            v += "<a href=\"#@\" onclick=\"removePlaylistItem({0})\" class=\"p3 p3_1\" title=\"删除\"></a>".format(trk.trkID);
        else
            v += "<a style=\"background:url();\" class=\"p3\" style=\"visibility:hidden\" ></a>".format(trk.trkID);
        v += "<a href=\"#@\" onclick=\"DownloadTrack({0})\" class=\"p3\" title=\"\"></a>".format(trk.trkID);
        v += "<p class=\"p4\" id=\"ctlTrkGrade{0}\">{1}</p>".format(trk.trkID, BuildGrade(trk.trkID, trk.trkName, trk.score));
        o.onmouseover = "this.className='gray'";
        o.onmouseout = "this.className='first'";
        o.innerHTML = v;
        p.prepend($(o));
    });
}


//下载歌曲
function DownloadTrack(id) {
    var url = "http://www.9sky.com/ajax/d/User.aspx?trkID=" + id;
    window.open(url, 'DOWNLOAD', 'width=450,height=350,resizable=1,scrollbars=1');
}

var trackStep = new DragBar();
function InitMediaCtl() {
    var ctl = $E("ctlTGuage");
    trackStep.create(ctl);
    trackStep.Disabled = true;
    trackStep.m_basePoint = 0;
    trackStep.getBarWidth = function() { return 178; }
    trackStep.On_Drag = function() {
        Pause();
        $E("ctlTGuage2").style.width = this.Pointer.style.left;
    }

    trackStep.On_Out = function() {
        var o = GetMedia();
        var p = o.Position.Seconds / o.NaturalDuration.Seconds * 100;
        var s = (parseInt(this.Pointer.style.left) - this.m_basePoint) * parseInt(o.NaturalDuration.Seconds) / this.getBarWidth();
        SetMediaPosition(s);
        Play();
    }
}

function LoadOnlineUserList(gID) {
    var url = g_GroupHomeURL + "Ajax/Radio/OnlineUser.aspx";
    var params = "groupid=" + gID;
    AjaxScript(url, "__onlineuser__" + (new Date()).getTime(), params, function(msg) {
        if (msg == "") return;
        var o = eval(msg);
        if (o.fris) {
            var html = "";
            o.fris.foreach(function(u, i) {
                html += "<dt>";
                html += "<a href=\"{1}\" class=\"dt1\" target=\"_blank\"><img src=\"http://www.9sky.com/ajax/d/player/AjaxUserImg.aspx?userID={0}\" width=18 height=18 alt=\"\"/></a>".format(u.uID, PERHOME_URL.format(u.uID));
                html += "	<img src=\"{1}Ajax/Common/SexPicSrc.aspx?userID={0}\"/>".format(u.uID, g_GroupHomeURL);
                html += "	<i class=\"i1 rlk2\"><a href=\"{0}\" title=\"\" target=\"_blank\">{1}</a></i>".format(PERHOME_URL.format(u.uID), u.uName);
                if (u.uID != getUserID())
                    html += "	<a href=\"#\" class=\"dt2\" title=\"\" rel=\"{0}\"></a>".format(u.uID);
                //alert(u.uID+','+getUserID())
                html += "</dt>"
            });
            $E("ctlUsers").innerHTML = html;
        }
    });
}

function LoadPlayList(statID, gID, fn) {
    $.ajax({
        url: g_GroupHomeURL + 'Proxy/MediaPlayer.aspx',
        dataType: 'json',
        data: {
            act: 'playlist',
            groupID: gID,
            r: Math.random()
        },
        success: function(r) {
            if (0 == r.s) {
                var p = $("#ctlPlayList");
                var v = "";
                r.playlist.reverse();
                r.playlist.foreach(function(o, i) {
                    try {
                        if (i == 0) v = o.trkID; else v += "," + o.trkID;
                        if (!FindTrack(o.trkID)) {
                            g_playlist.unshift(o);
                            AddTrackItem(o, p);
                        }
                    } catch (e) { }
                });
                try {
                    if (g_pageName) {
                        PlayListReSort();
                        LoadTrackGrade(v);
                    }
                } catch (e) { }
                if (fn) { fn(); }
            }
        }
    });
    //	var url = g_tcache + "TemporaryCache/Radio/{0}/playlist.js?{1}.js".format(gID,(new Date()).getTime());
    //	AjaxScript(url, "___playlist___", null, function(msg) 
    //	{
    //		var obj = eval(msg);
    //		if (obj)
    //		{
    //			var p = $("#ctlPlayList");
    //			var v = "";
    //			obj.tracks.foreach(function(o,i)
    //			{
    //				try
    //				{
    //					if (i == 0) v = o.trkID; else v += "," + o.trkID;
    //					if (!FindTrack(o.trkID))
    //					{
    //						
    //						g_playlist.push(o);
    //						AddTrackItem(o, p);
    //					}
    //				}catch(e){}
    //			});
    //			try
    //			{
    //				if (g_pageName)
    //				{
    //					PlayListReSort();			
    //					LoadTrackGrade(v);
    //				}
    //			}catch(e){}
    //		}
    //		if (fn) { fn();} 
    //	});
}

function UserValidate() {
    try {
        if (!getLoginState()) {
            alert("请先登录!");
            return false;
        }

        if (!g_isGroupMemer) {
            if (confirm("只有加入该音乐圈才能给电台添加歌曲。您是否加入该音乐圈!")) {
                window.open(g_GroupHomeURL + g_curGroupID, "_blank");
            }
            return false;
        }
    } catch (e) {
        return false;
    }
    return true;
}

function removePlaylistItem(trkID) {
    if (!g_isGroupAdmin) return;
    var id = "trkContents" + trkID;
    $("#" + id).remove();
    var i = -1;
    for (var j = 0; j < g_playlist.length; j++) {
        var trk = g_playlist[j];
        if (trk.trkID == trkID) {
            i = j;
            break;
        }
    }
    if (i >= 0) {
        g_playlist.remove(i);
        //2008-07-24 施丹侠 删除歌曲
        $.ajax({ cache: false, url: g_GroupHomeURL + "proxy/MediaPlayer.aspx", data: { act: "reset", groupid: g_groupID} });
        var iframe = $('#mframe');
        var src = encodeURI(g_SetPlayList + '?act=2&trkIDs=' + trkID + '_0,&userID=' + g_curGroupID + '&userType=102&type=0&index=0&date=' + new Date().valueOf());
        if (iframe.length == 0) {
            iframe = $('<iframe>').hide().attr({ id: 'mframe', src: src }).appendTo('body');
        } else iframe.attr({ src: src });
    }

    //	var url = g_GroupHomeURL + "Ajax/Radio/RemoveTrackToList.aspx";
    //	var params = "trkID={0}&groupID={1}&ts={2}".format(trkID, g_curGroupID, (new Date()).getTime());
    //	AjaxScript(url, "__varName_remove" + (new Date()).getTime(), params, function(msg) { });
}

function thisMovie(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

function playno(trkID) {
    var f = thisMovie("Epxml2");
    try {
        f.playRadio(trkID);
    } catch (e) { };
}

function playwma(trkID) {
    PlayTrack(trkID);
}

var g_ckPlayerStatus = "Group_PlayerStatus";
function play_setCurPlayerStatus() {
    var v = system.getCookie(g_ckPlayerStatus)
    if (v == "" || v == null) {
        v = "{0}|1".format(g_playerID);
    }
    else {
        var b = false;
        var arr1 = v.split("$");
        arr1.foreach(function(s, i) {
            var arr2 = s.split("|");
            if (arr2[0] == g_playerID) {
                arr2[1] = "1";
                b = true;
            }
            else {

                arr2[1] = "0";
            }
            arr1[i] = arr2.join("|");
        });
        if (!b) arr1.push("{0}|1".format(g_playerID));
        v = arr1.join("$");
    }
    system.setCookie(g_ckPlayerStatus, v, (new Date()).addDays(30), "9sky.com", "/");
}

function play_getCurPlayerStatus() {
    var v = system.getCookie(g_ckPlayerStatus)
    if (v == "" || v == null)
        return "1";

    var r = "1";
    var arr1 = v.split("$");
    arr1.foreach(function(s) {
        var arr2 = s.split("|");
        if (arr2[0] == g_playerID)
            r = arr2[1];
    });
    return r;
}