﻿
/* Windows Media Player */

// 0: pause, 1: resume
function ChangeWMPPlayingState(state) {
    return;
    // not implemented
    var mediaPlayerControl = document.getElementById('mediaPlayer');
    if (!mediaPlayerControl) {
        return;
    }

    switch (state) {
        case 0:
            if (!isIE() || mediaPlayerControl.controls.isavailable("pause")) {
                mediaPlayerControl.controls.pause();
            }
            break;
        case 1:
            if (!isIE() || mediaPlayerControl.controls.isavailable("play")) {
                mediaPlayerControl.controls.play();
            }
            break;
        default:
            break;
    }
}

function loadMediaPlayer(url, width, height) {
    var mediaPlayerControl = document.getElementById('mediaPlayer');
    if (!mediaPlayerControl || !isIE()) {
        $('#videoPlayer')[0].innerHTML = getMediaPlayerHTML(url, width, height);

        if (isIE()) {
//            // attach play state change event
//            mediaPlayerControl = document.getElementById('mediaPlayer');
//            mediaPlayerControl.attachEvent("playStateChange", setWMPstatus);
        }
    }
    else {
        mediaPlayerControl.fileName = url;
    }
}

function getMediaPlayerHTML(url, width, height) {
    var html = '<object id="mediaPlayer" width="' + width + '" height="' + height + '"'
                + (isIE() ? ' classid="clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95"' : '')
                + ' type="application/x-ms-wmp">'
                + '<param name="loop" value="false" />'
                + '<param name="ShowPositionControls" value="false" />'
                + '<param name="fileName" value="' + url + '" />'
                + '<param name="autoStart" value="true" />'
                + '<param name="animationatStart" value="true" />'
                + '<param name="transparentatStart" value="true" />'
                + '</object>';

    return html;
}

var _WMP_FLAG = 0;
function setWMPstatus() {
    var mediaPlayerControl = document.getElementById('mediaPlayer');
    if (mediaPlayerControl.playState == 0 && _WMP_FLAG == 1) {
        _WMP_FLAG = 0;
//        document.getElementById("videoPreview").style.display = "block";
    } else if (mediaPlayerControl.playState == 3 && _WMP_FLAG == 0) {
//        document.getElementById("videoPreview").style.display = "none";
        _WMP_FLAG = 1;
    }
}

/* End Windows Media Player */

/* Silverlight Player */

// 0: pause, 1: resume
function ChangeSLPPlayingState(state) {
    var silverlightControl = document.getElementById("silverlightVideoPlayer");
    switch (state) {
        case 0:
            silverlightControl.Content.VideoPlayer.PauseVideo();
            break;
        case 1:
            silverlightControl.Content.VideoPlayer.ResumeVideo();
            break;
        default:
            break;
    }
}

function loadSilverlightPlayer(videoId, videoUrl, width, height) {
    _PLAYER_LOAD_STATE = 1;

    var silverlightControl = document.getElementById("silverlightVideoPlayer");
    // when silverlight control is loading, the default video would be loaded automatically.
    if (silverlightControl == null || silverlightControl == 'undefined') {
        // specify the video parameters to init the video player
        if (videoId > 0) {
            _DEFAULT_VIDEO_ID = videoId;
            _DEFAULT_VIDEO_URL = '';
        }
        else {
            _DEFAULT_VIDEO_ID = 0;
            _DEFAULT_VIDEO_URL = videoUrl;
        }

        $('#videoPlayer')[0].innerHTML = getSilverlightPlayerHTML(width, height);
    }
    // load different video
    else {
        if (videoId > 0) {
            silverlightControl.Content.VideoPlayer.DoVideoLoad(videoId);
        }
        else {
            silverlightControl.Content.VideoPlayer.DoVideoLoadByUrl(videoUrl);
        }
    }
}

var _DEFAULT_VIDEO_ID = 0;
var _DEFAULT_VIDEO_URL = '';
// this method will be invoked to play the default video in the silverlight control when loading.
function CheckVideoLoaded() {
    _PLAYER_LOAD_STATE = 2;

    var silverlightControl = document.getElementById("silverlightVideoPlayer");
    if (silverlightControl != null && silverlightControl != 'undefined') {
        if (_DEFAULT_VIDEO_ID > 0) {
            silverlightControl.Content.VideoPlayer.DoVideoLoad(_DEFAULT_VIDEO_ID);
        }
        else {
            silverlightControl.Content.VideoPlayer.DoVideoLoadByUrl(_DEFAULT_VIDEO_URL);
        }
    }
}

//function setSLPStatus_Playing() {
//    var videoPreviewDiv = document.getElementById('videoPreview');
//    if (videoPreviewDiv) {
//        videoPreviewDiv.style.display = 'none';
//    }
//}

//function setSLPStatus_Stopped() {
//    var videoPreviewDiv = document.getElementById('videoPreview');
//    if (videoPreviewDiv) {
//        videoPreviewDiv.style.display = 'block';
//    }
//}

function getSilverlightPlayerHTML(width, height) {
    // playerHostingPageUrl can't be calculated in this function, since the current requested page may not be the wanted player hosting page
    // , get the parent page url if current page in a iframe, otherwise, returns the current page url.
    /*var playerHostingPageUrl = window.parent.document.location.href.split('?')[0];*/
    var videoListName = $('#HiddenVideoListName')[0].value;
    var videoWebRelativeUrl = $('#HiddenVideoWebRelativeUrl')[0].value;
    var rootSiteUrl = $('#HiddenVideoRootSiteUrl')[0].value;
    var reg = new RegExp('^(https?://[^/]+)(/.*)?$', 'i');
    var videoWebUrl = reg.exec(rootSiteUrl)[1] + videoWebRelativeUrl;

    var spaces = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
    var html = '<object id="silverlightVideoPlayer" data="data:application/x-silverlight-2," type="application/x-silverlight-2"'
                + 'width="' + width + '" height="' + height + '">'
                + '<param name="source" value="' + rootSiteUrl + '/Documents/EnhancedVideoPlayerWebPart/PressPassVideoPlayer.xap" />'
                + '<param name="onError" value="onSilverlightError" />'
                + '<param name="background" value="transparent" />'
                + '<param name="minRuntimeVersion" value="3.0.40624.0" />'
                + '<param name="autoUpgrade" value="true" />'
                + '<param name="windowless" value="true" />'
                + '<param name="splashscreensource" value="' + rootSiteUrl + '/Documents/EnhancedVideoPlayerWebPart/SplashScreen.xaml" />'
                + '<param name="onSourceDownloadProgressChanged" value="progressChanged" />'
                + '<param name="initParams" value="OffDomainFunction=channelVideoplayerShare,'
		            + 'AnalyticsFunction=channelCapture,'
                    /*+ 'playerHostingPageUrl=' + playerHostingPageUrl + ','*/
		            + 'contentGroup=fam,'
                    + 'videoWebUrl=' + videoWebUrl + ','
                    + 'videoListName=' + videoListName + ','
		            + 'standalonePlayerUrl=' + videoWebUrl + '/_layouts/EnhancedVideoWebPart/standaloneplayer.aspx,'
    		        + 'showLoggingInfo=false" />'
                    + '<!--possible values for liveStreamTest (without quotes): "HSN", or "iStreamPlanet", or remove parameter-->'
                + '<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;">'
                    + '<img src="' + rootSiteUrl + '/Documents/EnhancedVideoPlayerWebPart/installexperience.jpg" alt="Get Microsoft Silverlight" style="width: 100%; border-style: none;" />'
                + '</a>'
                + '</object>'
                + '<iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px; border: 0px"></iframe>'
                + '<a id="VideoLink" href="" target="_blank" style="POSITION:relative;WIDTH:200px;DISPLAY:none;HEIGHT:25px;FONT-SIZE:25px;TEXT-DECORATION:none;FONT-FAMILY:Arial;">'
                    + (isIE() ? spaces : '') + '</a>';

    return html;
}

//conversionOnView parameter is usually null, but when start playing video pass in "View"
//contentType parameter will always be video from the player application
function channelCapture(videoID, action, videoTitle, contentType, conversionOnView) {
    // alert(action);
}

function channelVideoplayerShare(URL) {
    window.open(URL);
}

function ShowURLNewWindow(URL) {
    window.open(URL);
}

function ShowURLSameWindow(URL) {
    document.location.href = URL;
}

function GetOffsets() {
    silverlightControl = document.getElementById("silverlightVideoPlayer");
    silverlightControl.Content.VideoPlayer.SetOffsets(0, -$("#silverlightVideoPlayer").height());
}

function ShowDiv(LocX, OffX, LocY, OffY, vidLink, vidAltTitle) {
    linkDiv = document.getElementById("VideoLink");
    linkDiv.style.display = 'block';
    linkDiv.style.left = LocX + OffX + 'px';
    linkDiv.style.top = LocY + OffY + 'px';
    linkDiv.href = vidLink;
    linkDiv.title = vidAltTitle;
}

function HideDiv() {
    linkDiv = document.getElementById("VideoLink");
    linkDiv.style.display = 'none';
}

function progressChanged(sender, eventArgs) {
    var myHost = document.getElementById("silverlightVideoPlayer");
    if (myHost) {
        var text1 = myHost.content.findName("LoadingTextCtrl");
        if (text1) {
            text1.Text = Math.round(eventArgs.progress * 100) + "%";
        }
    }
}

function onSilverlightError(sender, args) {
    var appSource = "";
    if (sender != null && sender != 0) {
        appSource = sender.getHost().Source;
    }

    var errorType = args.ErrorType;
    var iErrorCode = args.ErrorCode;

    if (errorType == "ImageError" || errorType == "MediaError") {
        return;
    }

    var errMsg = "Unhandled Error in Silverlight Application " + 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";
    }

    throw new Error(errMsg);
}

function SLPPlayingProgressChange(percentage) {
    if (typeof (InvokeWebTrend) == 'function') {
        InvokeWebTrend(percentage);
    }
}

// 0: N/A, 1: loading, 2: loaded
var _PLAYER_LOAD_STATE = 0;
function GetSLPCurrentState() {
    switch (_PLAYER_LOAD_STATE) {
        case 0:
            return 'N/A';
        case 1:
            return 'Loading';
            break;
        case 2:
            var silverlightControl = document.getElementById("silverlightVideoPlayer");
            return silverlightControl.Content.VideoPlayer.GetCurrentState();
        default:
            return 'N/A';
    }
}

/* End Silverlight Player */


/* Common */

function WMPInstalled() {
    var isWmpInstalled = false;
    if (isIE()) {
        try {
            var wmpPlayer = new ActiveXObject("WMPlayer.OCX.7");
            isWmpInstalled = true;
        }
        catch (e) {
            // Handle error -- no WMP 7 or 9 control
            // Can use WMP 6 also if necessary, but this is legacy software nowadays.
        }
    }
    else {
        // Netscape, FireFox, Google chrome etc
        try {
            for (i = 0; i < navigator.plugins.length; i++) {
                if (navigator.plugins[i].name.indexOf('Windows Media Player Firefox Plugin') != -1) {
                    isWmpInstalled = true;
                }
            }
        }
        catch (e) {
            // Error. Windows Media Player not installed.
        }
    }
    return (isWmpInstalled);
}

function SilverlightInstalled() {
    var silverlightInstalled = false;
    if (isIE()) {
        try {
            var slControl = new ActiveXObject('AgControl.AgControl');
            silverlightInstalled = true;
        }
        catch (e) {
            // Error. Silverlight not installed.  
        }
    }
    else {
        // Netscape, FireFox, Google chrome etc
        try {
            if (navigator.plugins["Silverlight Plug-In"]) {

                silverlightInstalled = true;
            }
        }
        catch (e) {
            // Error. Silverlight not installed.
        }
    }
    return (silverlightInstalled);
}

function isIE() {
    if (navigator.appName == 'Microsoft Internet Explorer')
        return true;
    else
        return false;
}

function getQueryParam(key) {
    var q = location.search.substring(1);
    var qs = q.split("&");
    for (var i = 0; i < qs.length; i++) {
        var pair = qs[i].split("=");
        if (pair.length == 2) {
            if (pair[0].toLowerCase() == key.toLowerCase()) {
                return pair[1];
            }
        }
    }

    return null;
}

function splitMeasurement(strWithUnit) {
    var reg = new RegExp('(\\d+\\.?\\d*)?(px|%)?');
    var match = reg.exec(strWithUnit);

    var value = 0, unit = '';
    if (match != null) {
        if (match[1] != '') {
            value = parseFloat(match[1]);
        }
        unit = match[2];
    }

    return { value: value, unit: unit };
}

/* End Common */

/* Popup Window */

function openModalWindow(url, title, width, height) {
    ensureModalWindowDOM();

    $('#evpTitle').html(title);
    $('.evp-modalwindow-framecontainer').css('height', height + 'px');
    $('#evpFrame').attr('src', url);
    $('#evpFrame').css('width', width + 'px');
    $('#evpFrame').css('height', height + 'px');

    $.blockUI({
        message: $('#evpModalWindow'),
        css: {
            top: ($(window).height() - height) / 2 + 'px',
            left: ($(window).width() - width) / 2 + 'px',
            width: width + 'px',
            height: height + 32 + 'px',
            border: 'none'
        }
    });
}

function ensureModalWindowDOM() {
    var evp = $('#evpModalWindow');

    if (evp.length == 0) {
        var rootSiteUrl = $('#HiddenVideoRootSiteUrl')[0].value;

        var html = '<div style="display:none">';
        html += '<div id="evpModalWindow">';
        html += '<div class="evp-modalwindow-header">';
        html += '<span id="evpTitle"></span>';
        html += '<div id="evpCloseBtn" border="0" src="' + rootSiteUrl + '/Documents/EnhancedVideoPlayerWebPart/closeDialog.gif"/>';
        html += '</div>';
        html += '<div class="evp-modalwindow-framecontainer"><IFRAME id="evpFrame" src="" frameBorder="0"></IFRAME></div>';
        html += '</div>';
        html += '</div>';
    
        $('body').append(html);

        $('#evpCloseBtn').click(function () {
            $.unblockUI();
            // this line will make the popup closed much more smoothly.
            $('#evpModalWindow').parent().hide();
            $('.evp-modalwindow-framecontainer').html('<IFRAME id="evpFrame" src="" frameBorder="0"></IFRAME>');
        });
    }
}

/* End Popup Window*/

