﻿///<reference path="widget.js" />  

var netradioChannelId = 0;
var onairInfoInterval = 0;

function startNetradio(){
    netradioChannelId = $$(".netradio-current-channelid")[0].innerHTML;
    var playerUrl = $$(".netradio-current-channelurl")[0].innerHTML;
    var metrixCode = $$(".netradio-current-metrixtag")[0].innerHTML;

    $("netradioPlay").hide();
    $("playerCurrent").show();
    $("playerNext").show();
    $$(".netradio-current-channelname")[0].show();
    
    // Set TNS-metrix code
    $$(".player-metrix-tag")[0].innerHTML = "<img alt=\"\" src=\"" + metrixCode + "\" />";
   
    // Initialize player object
    var player = new WMPObject(playerUrl, "P4Player", "231", 50);
    player.addParam("AutoPlay", "true");
    player.addParam("ShowStatusBar", "true");
    player.addParam("ShowDisplay", "false");
    player.addParam("EnableContextMenu", "false");
    player.addParam("Volume", "0");
    player.write("playerObj");
    
    // Get onair info
    getOnairInfo();
}

// OnairInfo
function getOnairInfo(){
    var url = '/Proxy.aspx?url=' + encodeURIComponent('/backend/onairInfo.aspx?channel=' + netradioChannelId);
    new Ajax.Request(url, { 
	    method:'get', 
	    requestHeaders: {Accept: 'application/json'}, 
	    onComplete: paintOnair });        
}
function paintOnair(originalRequest){
    var onairInfo = originalRequest.responseText.evalJSON(false);
    var channelInfo = getChannel(onairInfo); 
    if (channelInfo != null){
        var onairInfo = channelInfo.OnairInfo;
        updateDisplay($('playerCurrentText'), onairInfo.currentTitle, false);
        updateDisplay($('playerCurrentText'), onairInfo.currentArtist, true);
        updateDisplay($('playerNextText'), onairInfo.nextTitle, false);
        updateDisplay($('playerNextText'), onairInfo.nextArtist, true);
    }
    onairInfoInterval = window.setTimeout("getOnairInfo()", 10000);

}
function updateDisplay(elm, text, bAdd){
    if (text != undefined){
        if (bAdd) { 
            if (elm.innerHTML != "&nbsp;")
                elm.innerHTML += " - " + text; 
            else elm.innerHTML = text; 
        }
        else elm.innerHTML = text;
    } else elm.innerHTML = "&nbsp;";            
} 

function getChannel(onairInfo){
    var channelInfo = null;
    if (onairInfo.Channels.ChannelInfo.length != undefined){
        channelInfo = onairInfo.Channels.ChannelInfo.find(
            function(channelInfo){ return channelInfo.ChannelId == netradioChannelId; })
    }
    else if (onairInfo.Channels.ChannelInfo.ChannelId == netradioChannelId){
        channelInfo = onairInfo.Channels.ChannelInfo;
    }
    return channelInfo;
}

// Media player
WMPObject = function(mov, id, w, h) 
{ 
    this.mov = mov; 
    this.id = id; 
    this.width = w; 
    this.height = h; 
    this.params = new Object();
} 

WMPObject.prototype.addParam = function(name, value) 
{ 
    this.params[name] = value; 
} 

WMPObject.prototype.getParams = function() 
{
    return this.params; 
} 

WMPObject.prototype.getParam = function(name) 
{ 
    return this.params[name]; 
} 

WMPObject.prototype.getParamTags = function() 
{ 
    var paramTags = ""; 
    
    for (var param in this.getParams()) 
    { 
        paramTags += '<param name="' + param + '" value="' + this.getParam(param) + '" />'; 
    } 

    if (paramTags == "") 
    { 
        paramTags = null; 
    } 

    return paramTags; 
} 

WMPObject.prototype.getHTML = function() 
{
    var wmpHTML = "";
    
    // Add player object with parameters
    wmpHTML += "<object type=\"video/x-ms-asf\" width=\"" + this.width + "\" height=\"" + this.height + "\" id=\"" + this.id + "\">";
    this.addParam("src", this.mov);
    this.addParam("Filename", this.mov);
    if (this.getParamTags() != null) {
        wmpHTML += this.getParamTags();
    }
    
    // Add embed with parameters
    wmpHTML += "<embed type=\"application/x-mplayer2\" pluginspage=\"http://www.microsoft.com/windows/windowsmedia/player/wmcomponents.mspx\" src=\"" + this.mov + "\" width=\"" + this.width + "\" height=\"" + this.height + "\" id=\"" + this.id + "\" + controller=\"true\"";
    for (var param in this.getParams()) {
        wmpHTML += " " + param + "=\"" + this.getParam(param) + "\"";
    }
    wmpHTML += "></embed>";
    wmpHTML += "</object>";

    return wmpHTML;
}

// Deal with attributes
WMPObject.prototype.getVariablePairs = function() 
{ 
    var variablePairs = new Array(); 

    for (var name in this.getVariables()) 
    { 
        variablePairs.push(name + "=" + escape(this.getVariable(name))); 
    } 

    if (variablePairs.length > 0) 
    { 
        return variablePairs.join("&"); 
    } else { 
        return null; 
    } 
} 

// Write the HTML code to the page
WMPObject.prototype.write = function(elementId) 
{ 
    if (elementId) 
    { 
        document.getElementById(elementId).innerHTML = this.getHTML(); 
    } 
    else 
    { 
        document.write(this.getHTML()); 
    } 
}