﻿
function rgbToHex(rgb) {
    var strHex = "0123456789ABCDEF";
    var ichBracket = rgb.indexOf("(");
    if (ichBracket != -1) {
        var rgstr = rgb.substr(ichBracket + 1, rgb.length - ichBracket - 2).split(',');
        rgb = "#" + strHex[parseInt(rgstr[0]) >> 4] + strHex[parseInt(rgstr[0]) % 16] +
			   strHex[parseInt(rgstr[1]) >> 4] + strHex[parseInt(rgstr[1]) % 16] +
			   strHex[parseInt(rgstr[2]) >> 4] + strHex[parseInt(rgstr[2]) % 16];
    }
    return rgb;
}

function StartPlayer_0(parentId) {
    try {
        eval('document.body.style.backgroundColor="#000000"');
    } catch (e) { }

    this._hostname = ExpressionPlayer.Player._getUniqueName("xamlHost");
    Silverlight.createObjectEx({ source: 'player.xaml',
        parentElement: $get(parentId || "divPlayer_0"),
        id: this._hostname,
        properties: { width: '100%', height: '100%', version: '1.0', background: rgbToHex(document.body.style.backgroundColor), isWindowless: 'false', inplaceInstallPrompt: true },
        events: { onLoad: Function.createDelegate(this, this._handleLoad) }
    });
    this._currentMediainfo = -1;
}
StartPlayer_0.prototype = {
    _handleLoad: function() {
        this._player = $create(ExtendedPlayer.Player,
                                  { // properties
                                      autoPlay: this.autoPlayParam(),
                                      //autoPlay: false,
                                      autoLoad: this.autoLoadParam(),
                                      scaleMode: this.scaleModeParam(),
                                      muted: this.mutedParam(),
                                      enableCaptions: this.enableCaptionsParam(),
                                      volume: 1.0
                                  },
                                  { // event handlers
                                      mediaEnded: Function.createDelegate(this, this._onMediaEnded),
                                      mediaFailed: Function.createDelegate(this, this._onMediaFailed),
                                      playPreviousVideo: Function.createDelegate(this, this._onPlayPreviousVideo),
                                      playNextVideo: Function.createDelegate(this, this._onPlayNextVideo)
                                  },
                                  null, $get(this._hostname));

        this._playlist = [];

        try {
            if ((JSEventState == 'BROADCASTING') && (JSMedia2URL != '')) {
                var nhost = document.getElementById("xamlHost0");
                var CMP1 = nhost.content.findName("VideoWindow");
                var newBuf = CMP1.BufferingTime.Seconds;
                newBuf = 0;
                CMP1.BufferingTime.Seconds = newBuf;
                var CMP2 = nhost.content.findName("VideoWindow2");
                if (CMP2) { CMP2.BufferingTime.Seconds = newBuf; }
            }
        } catch (e) { }

        try {
            eval('this._playlist=[' +
		'{"mediaSource":"' + JSMedia1URL + '",' +
		'"placeholderSource":"",' +
		'"chapters":' +
			'[' +
	            JSChapters +
			']}' +
		'];');
        } catch (e) { }

        this._galleryItems = [];
        try {
            eval('this._galleryItems=[' +
		'new ExpressionPlayer.GalleryItem("TEST","2008-FALL_32-QA-CHWR_20081009_1610_31_57670[1].VGA_Thumb.jpg")' +
		'];');
        }
        catch (e) { }

        this._player.set_galleryInfo(this._galleryItems, Function.createDelegate(this, this._onClickGalleryItem));
        this._onPlayNextVideo(null, null);

        this._loadEventsUI(null);
        this._loadEventsMetaData(null);
        if (JSMedia2URL != '') { this.BroadCastingSwap(null, null); }
    },

    _loadEventsMetaData: function() {
        try {
            var nhost = document.getElementById("xamlHost0");
            this.txtbTitle = nhost.content.findName("txtbTitle");
            this.txtbPresenters = nhost.content.findName("txtbPresenters");
            this.txtbDateTime = nhost.content.findName("txtbDateTime");

            this.txtbTitle.text = JStxtTitle;
            this.txtbPresenters.text = JStxtPresenters;
            this.txtbDateTime.text = JStxtDateTime;
        } catch (e) { }
    },

    _loadEventsUI: function() {
        try {
            var nhost = document.getElementById("xamlHost0");
            var Placeholder1 = nhost.content.findName("Placeholder1");
            var Placeholder2 = nhost.content.findName("Placeholder2");
            var CMP1 = nhost.content.findName("VideoWindow");
            var CMP2 = nhost.content.findName("VideoWindow2");

            if (JSEventState == 'PUBLISHING') {
                if (Placeholder1) { Placeholder1.Source = "PUBLISHING.jpg"; }
                if (Placeholder2) { Placeholder2.Source = "PUBLISHING.jpg"; }
            } else {
                if (Placeholder1) { Placeholder1.Source = "NOTSTARTED.jpg"; }
                if (Placeholder2) { Placeholder2.Source = "NOTSTARTED.jpg"; }
            }

            if (CMP2) {
                CMP2.source = JSMedia2URL;
                this.btnSwap = nhost.content.findName("swap");
                this.btnSwap.addEventListener("MouseLeftButtonUp", Function.createDelegate(this, this.handleswap));
            }

            this.ButtonAsk = nhost.content.findName("ButtonAsk");
            this.ButtonAsk.addEventListener("MouseLeftButtonUp", Function.createDelegate(this, this.handleButtonAsk));
            if (JSEnableFeedback == true) {
                this.ButtonAsk.Visibility = 'Visible';
            } else {
                this.ButtonAsk.Visibility = 'Collapsed';
            }

        } catch (e) { alert(e); }
    },

    handleButtonAsk: function(sender, eventArgs) {
        // The following line of code shows how to find an element by name and call a method on it.
        window.open('../SubmitFeedback.aspx', 'Feedback', 'width=900,height=300,toolbar=no, location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no, resizable=yes');
    },

    handleswap: function(sender, eventArgs) {
        try {
            var VB1BV = sender.findName("VB1BV");
            var VB1FS = sender.findName("VB1FS");
            var VB2BV = sender.findName("VB2BV");
            var VB2FS = sender.findName("VB2FS");
            if (VB2BV) {
                if (VB1BV.SourceName == "VideoWindow") {
                    VB1BV.SourceName = "VideoWindow2";
                    VB1FS.SourceName = "VideoWindow2";
                    VB2BV.SourceName = "VideoWindow";
                    VB2FS.SourceName = "VideoWindow";
                } else {
                    VB1BV.SourceName = "VideoWindow";
                    VB1FS.SourceName = "VideoWindow";
                    VB2BV.SourceName = "VideoWindow2";
                    VB2FS.SourceName = "VideoWindow2";
                }
            }
        } catch (e) { alert(e); }
    },

    BroadCastingSwap: function(sender, eventArgs) {
        try {
            var nhost = document.getElementById("xamlHost0");
            var VB1BV = nhost.content.findName("VB1BV");
            var VB1FS = nhost.content.findName("VB1FS");
            var VB2BV = nhost.content.findName("VB2BV");
            var VB2FS = nhost.content.findName("VB2FS");
            if (VB2BV) {
                if (VB1BV.SourceName == "VideoWindow") {
                    VB1BV.SourceName = "VideoWindow2";
                    VB1FS.SourceName = "VideoWindow2";
                    VB2BV.SourceName = "VideoWindow";
                    VB2FS.SourceName = "VideoWindow";
                } else {
                    VB1BV.SourceName = "VideoWindow";
                    VB1FS.SourceName = "VideoWindow";
                    VB2BV.SourceName = "VideoWindow2";
                    VB2FS.SourceName = "VideoWindow2";
                }
            }
        } catch (e) { alert(e); }
    },

    _onClickGalleryItem: function(galleryItemIndex) {
        this._player.set_mediainfo(this._playlist[galleryItemIndex]);
        this._currentMediainfo = galleryItemIndex + 1;
    },

    _onMediaEnded: function(sender, eventArgs) {
        window.setTimeout(Function.createDelegate(this, this._onPlayNextVideo), 1000);
    },

    _onMediaFailed: function(sender, eventArgs) {
        //        alert(String.format(Sys.UI.Silverlight.MediaPlayer.Res.mediaFailed, this._player.get_mediaSource()));
    },


    _onPlayPreviousVideo: function(sender, eventArgs) {
        if (this._playlist != null) {
            if (this._currentMediainfo > 0) {
                this._player.set_mediainfo(this._playlist[--this._currentMediainfo]);
            }
        }
    },

    _onPlayNextVideo: function(sender, eventArgs) {
        if (this._playlist != null) {
            if (this._currentMediainfo < this._playlist.length - 1) {
                this._player.set_mediainfo(this._playlist[++this._currentMediainfo]);
            }
        }
    },

    autoLoadParam: function() {
        var autoLoad = true;
        try {
            eval("autoLoad=('True'!=='False')");
        } catch (e) { }
        return autoLoad;
    },

    autoPlayParam: function() {
        var autoPlay = true;
        try {
            eval("autoPlay=('True'!=='False')");
        } catch (e) { }
        return autoPlay;
    },

    scaleModeParam: function() {
        var scaleMode = 1/*Normal*/;
        try {
            eval("scaleMode=1;");
        } catch (e) { }
        return scaleMode;
    },

    enableCaptionsParam: function() {
        var enableCaptions = true;
        try {
            eval("enableCaptions=('True'!=='False');");
        } catch (e) { }
        return enableCaptions;
    },

    mutedParam: function() {
        var muted = false;
        try {
            eval("muted=('False'!=='False');");
        } catch (e) { }
        return muted;
    }
}

function StartWithParent(parentId, appId) {
    new StartPlayer_0(parentId);
}

