﻿//For Config Check
//var Config_Validator_Page = "ConfigCheck.asp";
var Config_Validator_Page = "ConfigValidator.aspx";
var agt=navigator.userAgent.toLowerCase();
var appVer = navigator.appVersion.toLowerCase();
var is_minor = parseFloat(appVer);
var is_major = parseInt(is_minor);

var is_mac = (agt.indexOf("mac")!=-1);
var iePos  = appVer.indexOf('msie');

var OSName = "";
var OSVersion = "";

if (iePos !=-1)
{
    if(is_mac)
    {
        var iePos = agt.indexOf('msie');
        is_minor = parseFloat(agt.substring(iePos+5,agt.indexOf(';',iePos)));
    }
    else
        is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)));
    is_major = parseInt(is_minor);
}

var is_getElementById   = (document.getElementById) ? "true" : "false"; // 001121-abk
var is_getElementsByTagName = (document.getElementsByTagName) ? "true" : "false"; // 001127-abk
var is_opera = (agt.indexOf("opera") != -1);
var is_safari = ((agt.indexOf('safari')!=-1)&&(agt.indexOf('mac')!=-1))?true:false;
var is_ie   = ((iePos!=-1) && (!is_opera) && (!is_safari));
var is_ie4up = (is_ie && is_minor >= 4);
// *** PLATFORM ***
var is_win   = ( (agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1) );
//cookies - 990624 - abk
//document.cookie = "cookies=true";

// java
var is_java = (navigator.javaEnabled());
    var is_WMP = false;
    var is_WMP64 = false;
    var is_WMP7up = false;

    if (is_win&&is_ie4up)
    {
        var objMediaPlayer;
        try
        {
            objMediaPlayer = new ActiveXObject("MediaPlayer.MediaPlayer.1");
            is_WMP = true;
            is_WMP64 = true;
        }
        catch(objError)
        {
            is_WMP = false;
            is_WMP64 = false;
        }
        if (is_WMP)
        {
            try
            {
                objMediaPlayer = new ActiveXObject("WMPlayer.OCX");
                is_WMP7up = true;
            }
            catch(objError)
            {
                is_WMP7up = false;
            }
        }
    }
    else
    {
        var numPlugins = navigator.plugins.length;
        for (var i = 0; i < numPlugins; i++)
        {
            if (navigator.plugins[i].name.substring(0,20)=="Windows Media Player")
            {
                is_WMP = true;
                is_WMP64 = true;
                
            }
        }
    }
    var WMPVer = "";
    if (is_WMP7up)
    {
        if(objMediaPlayer.versionInfo)
            WMPVer = objMediaPlayer.versionInfo;
        else
        {
            if(is_WMP)
                WMPVer = "9.0";
            else
                WMPVer = "0.0";
        }
        objMediaPlayer = null;
    }
    else
    {
        if(is_WMP)
            WMPVer = "9.0";
        else
            WMPVer = "0.0";
    }
    
    var is_WMPMinor;
    var is_WMPMajor;

    if(WMPVer != "")
    {
        is_WMPMinor = parseFloat(WMPVer);
        is_WMPMajor = parseInt(is_WMPMinor);
    }

    var colorDepth = screen.colorDepth;
    //real
    var real_Ver = "0";
    var real_found = false;
    if (is_win&&is_ie4up)
    {
        var objRealPlayer;
        try 
        {
            var objRealPlayer = new ActiveXObject("rmocx.RealPlayer G2 Control.1")
            if(!objRealPlayer)
                objRealPlayer = new ActiveXObject("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)")
            if(!objRealPlayer)
                objRealPlayer = new ActiveXObject("RealVideo.RealVideo(tm) ActiveX Control (32-bit)")
            if(objRealPlayer)
            {
                real_found = true;
                if (typeof(objRealPlayer.GetVersionInfo) == "undefined")
                    if(is_mac)
                        real_Ver = "10.0";
                    else
                        real_Ver = "8.0";
                else
                    real_Ver = objRealPlayer.GetVersionInfo();
            }
            objRealPlayer = null;
        }
        catch(ex){}
    }
    else
    {
        var numPlugins = navigator.plugins.length;
        for (var i = 0; i < numPlugins; i++)
        {
            if (navigator.plugins[i].name.indexOf("RealPlayer Version") != -1)
            {
                real_Ver = navigator.plugins[i].description;
            }
            if (navigator.plugins[i].name.indexOf("RealPlayer") != -1)
                real_found = true;
        }
    }
    
    if(real_Ver.indexOf(".") != -1)
    {
        var real_ver_split = real_Ver.split(".");
        var realVersion = "";
        for(var i=0; i<real_ver_split.length;i++)
            realVersion = realVersion + PadDigits(real_ver_split[i], 4);
    //RealMedia function; returns a string identifying the build number of the RealPlayer software installed on the user's     //system, or an empty string if RealPlayer is not installed. Users must have RealPlayer 8 or later in order to view     //Director movies containing RealMedia content. On Windows systems, build numbers 6.0.8.132 or later indicate that     //RealPlayer 8 is installed. On Macintosh systems, RealPlayer Core component build numbers 6.0.7.1001 or later indicate     //that RealPlayer 8 is installed.
        if(is_mac)
        {
            if(parseFloat(realVersion) >= parseFloat('0010000000000305')) //http://www17.real.com/realplayer/security/03162006_player/en/#details
                real_Ver = "10.0";
            else if(parseFloat(realVersion) >= parseFloat('0006000000071001'))
                real_Ver = "8.0";
            else
                real_Ver = "7.0";
        }
        else// if(is_win)
        {
            if(parseFloat(realVersion) >= parseFloat('0006000000080132'))
                real_Ver = "8.0";
            else
                real_Ver = "7.0";
        }
        /*if(real_Ver.split(".").length > 2)
            real_Ver = real_Ver.split(".")[2];
        else
            real_Ver = "8.0";
        */
    }
    else
    {
        if(real_found)
        {
            if(is_mac)
                real_Ver = "10.0";
            else
                real_Ver = "8.0";
        }
    }

var FlashVersion = "0";
var MSDetect = "false";
var flashinstalled = false
if (navigator.plugins && navigator.plugins.length)
{
  var x = navigator.plugins["Shockwave Flash"];
  if (x)
  {	  
	flashinstalled = true;
	if (x.description)
	{
		y = x.description;
		FlashVersion = y.charAt(y.indexOf('.')-1);
    }
  }
}
else if (navigator.mimeTypes && navigator.mimeTypes.length)
{
	x = navigator.mimeTypes['application/x-shockwave-flash'];
	/*if (x && x.enabledPlugin)
	    alert("Flash is installed")
	else
	    alert("Flash is not installed")
    */
}
else
	MSDetect = "true";

function constructConfigXML()
{
    var xmlConfigValue = document.getElementById(configXML).value;
    //phJavaEnabled
    xmlConfigValue = xmlConfigValue.replace("phJavaScriptEnabled","1");
    //phJavaEnabled
    xmlConfigValue = xmlConfigValue.replace("phJavaEnabled",((!is_java)?0:1));
    //phPlugin_MediaPlayerVerEx
    // xmlConfigValue = xmlConfigValue.replace("phPlugin_MediaPlayerVerEx",(is_WMPMajor));
    xmlConfigValue = xmlConfigValue.replace("phPlugin_MediaPlayerVerEx",(is_WMPMajor));
    //phPlugin_RealPlayerBuild
    //xmlConfigValue = xmlConfigValue.replace("phPlugin_RealPlayerBuild",(is_WMPMajor));
    xmlConfigValue = xmlConfigValue.replace("phPlugin_RealPlayerBuild",(real_Ver));
    //phServicePack
    xmlConfigValue = xmlConfigValue.replace("phServicePack","1"); //TODO: navigator.appMinorVersion
    //phDHTML
    xmlConfigValue = xmlConfigValue.replace("phDHTML",(is_getElementById?"1":"0"));
    //phColorDepth
    xmlConfigValue = xmlConfigValue.replace("phColorDepth",colorDepth);
    //phCookiesEnabled
    xmlConfigValue = xmlConfigValue.replace("phCookiesEnabled",((document.cookie.indexOf("TestCookie") != -1) ? "1" : "0"));
    //isVBScriptEnabled
    xmlConfigValue = xmlConfigValue.replace("phVBScriptEnabled",isVBScriptEnabled);
    //phWMPInstalled
    xmlConfigValue = xmlConfigValue.replace("phWMPInstalled",(is_WMP?"1":"0"));
    //phRealInstalled
    xmlConfigValue = xmlConfigValue.replace("phRealInstalled",(real_found?"1":"0"));

    //phPluginFlashVer
    xmlConfigValue = xmlConfigValue.replace("phPluginFlashVer",FlashVersion).replace("phPluginFlashVer",FlashVersion);

    getOSInfo();
    //phOSName
    xmlConfigValue = xmlConfigValue.replace("phOSName",OSName).replace("phOSName",OSName).replace("phOSName",OSName);
    //phOSVersion
    xmlConfigValue = xmlConfigValue.replace("phOSVersion",OSVersion).replace("phOSVersion",OSVersion).replace("phOSVersion",OSVersion);

    try
    {
        var req = new ActiveXObject("Microsoft.XMLHTTP")
        if(req)
            xmlConfigValue = xmlConfigValue.replace("phActiveXEnabled","1");
        else
            xmlConfigValue = xmlConfigValue.replace("phActiveXEnabled","0");
    }
    catch(e)
    {
        xmlConfigValue = xmlConfigValue.replace("phActiveXEnabled","0");
    }
    
    document.getElementById(configXML).value = escape(xmlConfigValue);
    var checkPlayers = checkPlayersInstalled();
    //document.forms[0].action = "CheckConfig.aspx";//Config_Validator_Page;
    document.forms[0].action = location.href;
    //"http://10.12.4.169/Webcast.Web.Player/CheckConfig.aspx?EventID=1229435&StreamID=677083&TIK={f0c2b77e-1c14-4f57-a41e-c214004bd5b9}&SID={dc4bf6dc-a16e-436c-8f46-0af621b7d41b}&move=true";
    document.forms[0].method = "post";
    document.forms[0].submit();
}

function checkPlayersInstalled()
{
    document.forms[0].WMPInstalled.value = is_WMP;
    document.forms[0].RealInstalled.value = real_found;
} //checkPlayersInstalled

function getOSInfo()
{
    // *** PLATFORM ***
    var major = parseInt(navigator.appVersion);
    var minor = parseFloat(navigator.appVersion);

    var ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
    var ie5 = (ie && (major == 4) && (agt.indexOf("msie 5.0") != -1) );

    var win   = ( (agt.indexOf("win") != -1) || (agt.indexOf("16bit") != -1) );
    var win95 = ((agt.indexOf("win95") != -1) || (agt.indexOf("windows 95") != -1));
    if(win95)
    {
        OSName = "win";
        OSVersion = "95";
    }
    
    var win16 = ((agt.indexOf("win16") != -1) || 
               (agt.indexOf("16bit") != -1) || (agt.indexOf("windows 3.1") != -1) || 
               (agt.indexOf("windows 16-bit") != -1) );  

    var win31 = ((agt.indexOf("windows 3.1") != -1) || (agt.indexOf("win16") != -1) ||
                    (agt.indexOf("windows 16-bit") != -1));
    if(win31)
    {
        OSName = "win";
        OSVersion = "3.1";
    }

    var win98 = ((agt.indexOf("win98") != -1) || (agt.indexOf("windows 98") != -1));
    if(win98)
    {
        OSName = "win";
        OSVersion = "98";
    }
    var winnt = ((agt.indexOf("winnt") != -1) || (agt.indexOf("windows nt") != -1));
    if(winnt)
    {
        OSName = "win";
        OSVersion = "NT";
    }

    var win32 = (win95 || winnt || win98 || 
                    ((major >= 4) && (navigator.platform == "Win32")) ||
                    (agt.indexOf("win32") != -1) || (agt.indexOf("32bit") != -1));

    var winme = ((agt.indexOf("win 9x 4.90") != -1));
    if(winme)
    {
        OSName = "win";
        OSVersion = "ME";
    }

    var win2k = ((agt.indexOf("windows nt 5.0") != -1) || (agt.indexOf("windows 2000") != -1));
    if(win2k)
    {
        OSName = "win";
        OSVersion = "2000";
    }
    var winxp = ((agt.indexOf("windows nt 5.1") != -1) || (agt.indexOf("windows xp") != -1));
    if(winxp)
    {
        OSName = "win";
        OSVersion = "XP";
    }
    var win2k3 = ((agt.indexOf("windows nt 5.2")!= -1) || (agt.indexOf("windows 2003") != -1));
    if(win2k3)
    {
        OSName = "win";
        OSVersion = "2003";
    }
    
    var os2   = ((agt.indexOf("os/2") != -1) || 
                    (navigator.appVersion.indexOf("OS/2") != -1) ||   
                    (agt.indexOf("ibm-webexplorer") != -1));
    if(os2)
    {
        OSName = "os";
        OSVersion = "2";
    }

    var mac    = (agt.indexOf("mac") != -1);
    var mac68k = (mac && ((agt.indexOf("68k") != -1) || 
                               (agt.indexOf("68000") != -1)));
    if(mac68k)
    {
        OSName = "mac";
        OSVersion = "68K";
    }

    var macppc = (mac && ((agt.indexOf("ppc") != -1) || 
                                (agt.indexOf("powerpc") != -1)));
    if(macppc)
    {
        OSName = "mac";
        OSVersion = "PPC";
    }
    
    var macos  = (mac && ((agt.indexOf("mac os") != -1) ||
                                (agt.indexOf("macos") != -1) ||
                                ie));
    var macos8 = (macos && ((agt.indexOf("os 8") != -1) ||
                                  (agt.indexOf("os8") != -1)));
    if(macos8)
    {
        OSName = "mac";
        OSVersion = "8";
    }

    var macos9 = ((mac && (ie5 && (agt.indexOf("msie 5.13") != -1))) ||
                   (macos && ((agt.indexOf("os 9") != -1) ||
                                   (agt.indexOf("os9") != -1))));
    if(macos9)
    {
        OSName = "mac";
        OSVersion = "9";
    }
    
    var macosx = (macos && ((agt.indexOf("os x") != -1) ||
                                  (agt.indexOf("osx") != -1)));
    if(macosx)
    {
        OSName = "mac";
        OSVersion = "OSX";
    }

    var sun   = (agt.indexOf("sunos") != -1);
    var sun4  = (agt.indexOf("sunos 4") != -1);
    if(sun4)
    {
        OSName = "sun";
        OSVersion = "4";
    }
    var sun5  = (agt.indexOf("sunos 5") != -1);
    if(sun5)
    {
        OSName = "sun";
        OSVersion = "5";
    }

    var suni86 = (sun && (agt.indexOf("i86") != -1));
    if(suni86)
    {
        OSName = "sun";
        OSVersion = "i86";
    }
    // SGI
    var irix  = (agt.indexOf("irix") != -1);
    var irix5 = (agt.indexOf("irix 5") != -1);
    if(irix5)
    {
        OSName = "irix";
        OSVersion = "5";
    }
    var irix6 = ((agt.indexOf("irix 6") != -1) || (agt.indexOf("irix6") != -1));
    if(irix5)
    {
        OSName = "irix";
        OSVersion = "6";
    }
    var hpux  = (agt.indexOf("hp-ux") != -1);
    var hpux9 = (hpux && (agt.indexOf("09.") != -1));
    if(hpux9)
    {
        OSName = "HPUX";
        OSVersion = "9";
    }

    var hpux10 = (hpux && (agt.indexOf("10.") != -1));
    if(hpux10)
    {
        OSName = "HPUX";
        OSVersion = "10";
    }
    // IBM
    var aix   = (agt.indexOf("aix") != -1);
    var aix1  = (agt.indexOf("aix 1") != -1);    
    if(aix1)
    {
        OSName = "aix";
        OSVersion = "1";
    }
    var aix2  = (agt.indexOf("aix 2") != -1);    
    if(aix2)
    {
        OSName = "aix";
        OSVersion = "2";
    }
    var aix3  = (agt.indexOf("aix 3") != -1);    
    if(aix3)
    {
        OSName = "aix";
        OSVersion = "3";
    }
    var aix4  = (agt.indexOf("aix 4") != -1);    
    if(aix4)
    {
        OSName = "aix";
        OSVersion = "4";
    }
    var linux = (agt.indexOf("inux") != -1);
    if(linux)
    {
        OSName = "linux";
        OSVersion = "";
    }
    var sco   = (agt.indexOf("sco") != -1) || (agt.indexOf("unix_sv") != -1);
    if(sco)
    {
        OSName = "linux";
        OSVersion = "sco";
    }
    var unixware = (agt.indexOf("unix_system_v") != -1); 
    if(unixware)
    {
        OSName = "unix";
        OSVersion = "unixware";
    }
    
    var mpras = (agt.indexOf("ncr") != -1); 
    if(mpras)
    {
        OSName = "ncr";
        OSVersion = "";
    }

    var reliant  = (agt.indexOf("reliantunix") != -1);
    if(mpras)
    {
        OSName = "ncr";
        OSVersion = "";
    }

    var dec   = ((agt.indexOf("dec") != -1) || (agt.indexOf("osf1") != -1) || 
                  (agt.indexOf("dec_alpha") != -1) || (agt.indexOf("alphaserver") != -1) || 
                  (agt.indexOf("ultrix") != -1) || (agt.indexOf("alphastation") != -1)); 
    if(dec)
    {
        OSName = "dec";
        OSVersion = "alpha";
    }

    var sinix = (agt.indexOf("sinix") != -1);
    if(sinix)
    {
        OSName = "sinix";
        OSVersion = "x";
    }
    var freebsd = (agt.indexOf("freebsd") != -1);
    if(freebsd)
    {
        OSName = "freebsd";
        OSVersion = "";
    }
    var bsd = (agt.indexOf("bsd") != -1);
    if(bsd)
    {
        OSName = "bsd";
        OSVersion = "";
    }
    /*var macos = (macos || (!linux && !bsd));
    if(macos)
    {
        OSName = "macos";
        OSVersion = "";
    }*/
    var unix  = ((agt.indexOf("x11") != -1) || sun || irix || hpux || 
                 sco ||unixware || mpras || reliant || 
                 dec || sinix || aix || linux || bsd || freebsd);
    if(unix)
    {
        OSName = "unix";
        OSVersion = "";
    }
    var vms   = ((agt.indexOf("vax") != -1) || (agt.indexOf("openvms") != -1));
    if(vms)
    {
        OSName = "vms";
        OSVersion = "";
    }
    //document.writeln(navigator.userAgent);
    //document.writeln("<br/><b>OS Name: </b>" + OSName);
    //document.writeln("<br/><b>OS Version: </b>" + OSVersion);
}

function PadDigits(n, totalDigits) 
{ 
    n = n.toString(); 
    var pd = ''; 
    if (totalDigits > n.length) 
    { 
        for (var cnt=0; cnt < (totalDigits-n.length); cnt++) 
        { 
            pd += '0'; 
        } 
    } 
    return pd + n.toString(); 
}

