﻿function playerDetect() {

    var mediaPlugins = { None: 0, WindowsMedia: 1, Silverlight: 2, Html5: 4, Flash: 8, Port25: 16 };
    var clientCaps = mediaPlugins.None;
    var cookieName = "MediasitePlayerCaps";

    function detectSL() {
        try {
            if (window.ActiveXObject) {
                try {
                    var control = new ActiveXObject('AgControl.AgControl');
                    clientCaps = clientCaps | mediaPlugins.Silverlight;
                    control = null;
                    return;
                }
                catch (ex) {
                }
            }
            var plugin = navigator.plugins['Silverlight Plug-In'];
            if (plugin) {
                clientCaps = clientCaps | mediaPlugins.Silverlight;
            }
        }
        catch (e) {
        }
    }

    function detectWMP() {
        var i;
        try {
            if (window.ActiveXObject) {
                try {
                    var control = new ActiveXObject('WMPlayer.OCX.7');
                    clientCaps = clientCaps | mediaPlugins.WindowsMedia;
                    control = null;
                    return;
                }
                catch (e1) {
                }
            }
            if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
                for (i = 0; i < navigator.plugins.length; i = i + 1) {
                    if (navigator.plugins[i].filename === 'np-mswmp.dll') {
                        clientCaps = clientCaps | mediaPlugins.WindowsMedia | mediaPlugins.Port25;
                        return;
                    }
                }
            }
        }
        catch (e2) {
        }
    }

    function detectHTML5() {
        try {
            var video = document.createElement('video');
            var playable = video.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
            if (playable === 'probably' || playable === 'maybe') {
                clientCaps = clientCaps | mediaPlugins.Html5;
            }
        }
        catch (e1) {
        }
    }

    function detectFlash() {
        try {
            if (window.ActiveXObject) {
                try {
                    var control = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');
                    clientCaps = clientCaps | mediaPlugins.Flash;
                    control = null;
                    return;
                }
                catch (e1) {
                }
            }
            var plugin = navigator.plugins['Shockwave Flash'];
            if (plugin) {
                clientCaps = clientCaps | mediaPlugins.Flash;
            }
        }
        catch (e2) {
        }
    }

    function writeCookieData() {
        var cookieData = 'ClientPlugins=' + clientCaps;
        var newCookie = cookieName + '=' + cookieData;
        document.cookie = newCookie;
    }

    detectSL();
    detectWMP();
    detectHTML5();
    detectFlash();

    writeCookieData();

    var playerLoc = window.location.href.replace(/\/Info\/?($|\?)/i, '?').replace(/_escaped_fragment_=/, '').replace(/\?$/, '');

    if (document.cookie && document.cookie.indexOf(cookieName + '=') > -1) {
        window.location.href = playerLoc;
    }
    else {
        var noCookieForm = document.createElement("form");
        noCookieForm.setAttribute("id", "noCookieForm");
        noCookieForm.setAttribute("method", "POST");        
        noCookieForm.setAttribute("style", "display:none");
        document.body.appendChild(noCookieForm);

        var inputPlugins = document.createElement("input");
        inputPlugins.setAttribute("name", "ClientPlugins");
        inputPlugins.setAttribute("value", clientCaps);
        noCookieForm.appendChild(inputPlugins);

        var inputReferrer = document.createElement("input");
        inputReferrer.setAttribute("name", "UrlReferrer");
        inputReferrer.setAttribute("value", document.referrer);
        noCookieForm.appendChild(inputReferrer);

        noCookieForm.submit();

        //window.location.href = playerLoc + (playerLoc.indexOf('?') > 0 ? '&' : '?') + 'useServerDetection=true';
    }
}
