﻿var MobMediaPlayer;
var MobMediaPlayerPanel;
var MobPlayerMode = 1;
var PostInstallGuidance;
var myContent;
var miniPlayerPublished = true;

var getSilverlightMethodCall =
            "javascript:Silverlight.getSilverlight(\"4.0.50401.0\");"
var installImageUrl =
            "http://go.microsoft.com/fwlink/?LinkId=161376";
var imageAltText = "Get Microsoft Silverlight";
var altHtml =
            "<a href='{1}' style='text-decoration: none;'>" +
            "<img src='{2}' alt='{3}' " +
            "style='border-style: none'/></a>";
altHtml = altHtml.replace('{1}', getSilverlightMethodCall);
altHtml = altHtml.replace('{2}', installImageUrl);
altHtml = altHtml.replace('{3}', imageAltText);


function initMobMediaPlayerVars() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;
    init();
    PostInstallGuidance = document.getElementById("PostInstallGuidance");
    if (null != PostInstallGuidance) {
        if (Silverlight.isBrowserRestartRequired) {
            PostInstallGuidance.innerHTML = " When installation is complete,<br />restart your browser to activate your Silverlight content.";
        }
        else {
            PostInstallGuidance.innerHTML = "";
        }
    }
}

(function() {
    /*@cc_on
    if (document.body) {
        try {
            document.createElement('div').doScroll('left');
            return initMobMediaPlayerVars();
        } catch (e) { }
    }
    /*@if (false) @*/
  if (/loaded|complete/.test(document.readyState)) return initMobMediaPlayerVars();
  /*@end
    @*/
    if (!initMobMediaPlayerVars.done) setTimeout(arguments.callee, 50);
})();
_prevOnload = window.onload;
window.onload = function() {
    if (typeof _prevOnload === 'function') _prevOnload();
    initMobMediaPlayerVars();
};
if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', initMobMediaPlayerVars, false);
}


function onSilverlightError(sender, args) {
    var appSource = "";
    if (sender != null && sender != 0) {
        appSource = sender.getHost().Source;
    }
    var errorType = args.ErrorType;var iErrorCode = args.ErrorCode;
    var errMsg = "We could not load the media " + appSource + "\n";
    errMsg += "Code: " + iErrorCode + "    \n";
    errMsg += "Category: " + errorType + "       \n";
    errMsg += "Message: " + args.ErrorMessage + "     \n";
    if (errorType == "ParserError") {
        errMsg += "File: " + args.xamlFile + "     \n";
        errMsg += "Line: " + args.lineNumber + "     \n";
        errMsg += "Position: " + args.charPosition + "     \n";
    }
    else if (errorType == "RuntimeError") {
        if (args.lineNumber != 0) {
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        errMsg += "MethodName: " + args.methodName + "     \n";
    }
    alert(errMsg);
}

function setMode(mode) {
    if (isContentAvailible()) {
        switch (mode) {
            case "0":
                //mini mode
                MobMediaPlayer.style.width = 224;
                MobMediaPlayer.style.height = 129;
                MobMediaPlayerPanel.style.width = 224; ;
                MobMediaPlayerPanel.style.height = 129;
                break;
            case "1":
                //normal
                MobMediaPlayer.style.width = 434;
                MobMediaPlayer.style.height = 346;
                MobMediaPlayerPanel.style.width = 434;
                MobMediaPlayerPanel.style.height = 346;
                break;
            case "2":
                //docked to bottom
                alert("This mode is not supported");
                break;
            case "3":
                //docked to bottom
                alert("This mode is not supported");
                break;
            case "4":
                //Full Screen
                alert("This mode is not supported");
                break;
            case "5":
                MobMediaPlayerPanel.style.width = 1;
                MobMediaPlayerPanel.style.height = 1;
                MobMediaPlayer.style.width = 1;
                MobMediaPlayer.style.height = 1;
                break;
        }
        myContent.Player.SwitchMode(mode);

    }
    if (mode != 5) {
        MobPlayerMode = mode;
    }
}
var mnf = "Media player not found.";
function PlaySong(mediaID, player, fileID) {
    if (Silverlight.isInstalled("2.0")) {
        if (isContentAvailible()) {
            setMode(MobPlayerMode);
            if (mediaID == -1) {
                myContent.PlayerControls.PlayUnpublishedSong(fileID);
            }
            else {
                myContent.PlayerControls.PlaySong(mediaID);
            }
        }
        else {
            alert(mnf);
        }
    }
    else {
        fetchMediaInfo(publishedMediaId, true);
    }
}

function PlayTopSongs() {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayTopSongs();
    }
    else {
        alert(mnf);
    }
}
function PlayAllSongs() {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayAllSongs(1);
    }
    else {
        alert(mnf);
    }
}
function PlayStaffPicks() {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayStaffPicks(1);
    }
    else {
        alert(mnf);
    }
}
function PlayTopRated() {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayTopRated(1);
    }
    else {
        alert(mnf);
    }
}
function PlayNewSongs() {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayNewSongs(1);
    }
    else {
        alert(mnf);
    }
}
function PlayArtistSongs(atristID) {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.PlayArtistSongs(atristID);
    }
    else {
        alert(mnf);
    }
}
function Close() {
    var miniPlayer = document.getElementById('SilverlightPlugInHost');
    var h = document.getElementById('MiniPlayerDragHandel');
    miniPlayer.innerHTML = "";
    h.style.display="none";
}

function AddToPlayList(mediaID,playlistname) {
    if (isContentAvailible()) {
        setMode(MobPlayerMode);
        myContent.PlayerControls.AddSongToPlayList(mediaID, playlistname);
    }
}
function isContentAvailible() {
    var availible = false;
    if ((MobMediaPlayer != undefined) && (myContent != undefined)) {
        availible = true;
    }
    return availible;
}


function fetchMediaInfo(mediaId, isPublished) {
    var service = CilibertiEnterprises.MyOnlineBand.Web.Services.MediaPlayerService;
    MobMediaPlayerPanel.innerHTML = "<div class='oddbox'>Loading Music</div>";
    if (isPublished) {
        service.GetSingleSong(mediaId, onMediaInfoSuccess, null, null);
    }
    else {
        service.GetUnPublishedSong(mediaId, onMediaInfoSuccess, null, null);
    }
}

function onMediaInfoSuccess(result) {
    var supported = doesBrowserSupportCodec(result.FileType);
    if (supported) {
        PlayUsingAudioTag(result.SongURL + "&a208=x509" + result.StreamingToken);
    }
    else if (result.FileType == ".mp3") {
    FallbacktoEvilFlash(result);
    }
    else {
        miniPayerSilverlightInstall(result.SongImageURL, result.SongURL);
    }
}
function miniPayerSilverlightInstall(image, url) {
    if (Silverlight.supportedUserAgent("4.0")) {
        alert("The Microsoft Silverlight plug-in is required to play this content");
        MobMediaPlayerPanel.innerHTML = altHtml;
    }
    else {
        alert("Sorry, your device does not support playback of this content.");
    }
}
function PlayUsingAudioTag(url) {
    MobMediaPlayerPanel.innerHTML = "<audio id='audio' autoplay='true' src='" + url + "' class='shadow' controls></audio>";
}

function doesBrowserSupportCodec(codecName) {
    if (codecName == '.mp3') {
        return (Modernizr.audio && Modernizr.audio.mp3);
    }
    else if (codecName == '.ogg') {
        return (Modernizr.audio &&Modernizr.audio.ogg);
    }
    else if (codecName == '.wav') {
        return (Modernizr.audio && Modernizr.audio.wav);
    }
    else if (codecName == '.m4a' || codecName == '.mp4') {
        return (Modernizr.audio && Modernizr.audio.m4a);
    }
    return false;

}


function FallbacktoEvilFlash(media) {
    var songUrl = encodeURIComponent(media.SongURL + "&a208=x509" + media.StreamingToken);
    var flashObject = "<div class='oddbox'><object id='myId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='470' height='24'> " + 
        "<param name='movie' value='/FlashPlayer/player.swf' /> " +
        "<param name='flashvars' value='file=" + songUrl + "&autostart=true&provider=sound' /> " +
        "<object type='application/x-shockwave-flash' data='/FlashPlayer/player.swf' width='320' height='24'> " +
        "<param name='flashvars' value='file=" + songUrl + "&autostart=true&provider=sound' /> " + 
          "<p>The content cannot be loaded</p></object></object><br><a href='" + getSilverlightMethodCall + "'>For a better experience on this site install Microsoft Silverlight</a></div> ";
    MobMediaPlayerPanel.innerHTML = flashObject;
}

function Play(publishedMediaId) {
    jQuery(MobMediaPlayer).css("width", 224);
    jQuery(MobMediaPlayer).css("height", 129);
    var h = document.getElementById('MiniPlayerDragHandel');
    if (h) {
        h.style.display = "block";
    }
    if (Silverlight.isInstalled("2.0")) {
        createSilverlight(publishedMediaId, 0);
    }
    else {
        fetchMediaInfo(publishedMediaId, miniPlayerPublished);
    }
}




    

