﻿function clientValid(bCheckOS, bCheckMG, bCheckDRM, bFlyout, bClientControl){
    
	var sSuffix = "";
	if (bFlyout == true)
	    sSuffix = "_Flyout";
    try{
	setDivVisible("divNoAjax" + sSuffix, false);
	setDivVisible("divNotXP" + sSuffix, false);
	setDivVisible("divMaxDevices" + sSuffix, false);
	setDivVisible("divNotWMP10" + sSuffix, false);
	setDivVisible("divNotIE" + sSuffix, false);
	setDivVisible("divBadDRM" + sSuffix, false);
	setDivVisible("divNonIndiv" + sSuffix, false);
	setDivVisible("divNoClientControl" + sSuffix, false);
	}
	catch(e){}
	var bContinue = true;
	
	if (bContinue && bCheckOS)
		if (getBrowserInfo().CompatibilityLevel == 0){	
			setDivVisible("divNotIE" + sSuffix, true);
			ajaxLogIt("ClientValidator.js::clientValid()", "Player failed browser UI compatibility check", true);
			bContinue = false;
		}
	// Check for multiple machine logins to same account
	if (bContinue && bCheckMG){
        var res = MusicGremlinPublic.Common.AjaxUserProxy.isActiveLoginSession(1);
	    if (res.error != null){
			setDivVisible("divMultiLogin" + sSuffix, true);
			ajaxLogIt("ClientValidator.js::clientValid()", "Call to MusicGremlinPublic.Common.AjaxUserProxy.isActiveLoginSession failed. " + e.error.ErrorDescription , true);
	        bContinue = false;
	    }
	    else if(res.value == false){
			setDivVisible("divMultiLogin" + sSuffix, true);
			ajaxLogIt("ClientValidator.js::clientValid()", "Newer active session detected.", true);
	        bContinue = false;
	    }
	}
	
	if (bClientControl == null)
	    bClientControl = false;
	
	// Check for WMP10 if ActiveX based browser but allow other browsers to continue without check	
	if (getBrowserInfo().CompatibilityLevel == 3){
	    if (bContinue && bCheckOS && getBrowserInfo().PluginType == 1)
            if (!isWMP10()){	//check for wmp10
	            setDivVisible("divNotWMP10" + sSuffix, true);
	            ajaxLogIt("ClientValidator.js::clientValid()", "Player failed WMP 10 check", true);
	            bContinue = false;
            }
            
	    if ((bContinue && bCheckOS) || bClientControl){
            try
            {
                if (!checkForClientControl(false)){
                    if (getBrowserInfo().PluginType > 0){
                        setDivVisible("divNoClientControl" + sSuffix, true);
                        showInstallerWindow();
                    }
	                bContinue = false;
                }
            }
            catch(e)
            {
                // The only way checkForClientControl can receive and error is if the user
                // clicks cancel to the Vista elevation prompt.  In this case, the popup (if any)
                // should simply be closed and processing should continue as normal
                bContinue = false;
                if (self.opener)
                    self.close();
            }
        }
	    // Do WMP10 Check for Mozilla based browsers AFTER client control check
	    if (bContinue && bCheckOS && getBrowserInfo().PluginType == 2)
            if (!isWMP10()){	//check for wmp10
	            setDivVisible("divNotWMP10" + sSuffix, true);
	            ajaxLogIt("ClientValidator.js::clientValid()", "Player failed WMP 10 check", true);
	            bContinue = false;
            }
        // Check for version difference
        if (bContinue && bCheckMG){
            bContinue = isCurrentVersion();
            if (!bContinue){
              setDivVisible("divNoClientControl" + sSuffix, true);
	          showInstallerWindow();
            }
        }
        if (bContinue && bCheckMG){
            var dlmgr = loadDownloadManager();
            if (dlmgr){
                var html = getDeviceErrorPage(dlmgr.GetDeviceToken(), true);
                if (html != ""){
                    var divHelp = document.getElementById("divMaxDevices" + sSuffix);
                    divHelp.innerHTML = html;
                    setDivVisible("divMaxDevices" + sSuffix, true);
                    bContinue = false;
                }
            }
        }
            
        if (bContinue && bCheckDRM){
		    if (!checkDRM()){ //check drm component
			    setDivVisible("divBadDRM" + sSuffix, true);
			    ajaxLogIt("NowPlaying.js::init", "Player failed DRM check", true);
			    bContinue = false;
		    }
	    }
	    if (bContinue && bCheckDRM){
		    if (!isIndiv()){ //check for indiv
			    setDivVisible("divNonIndiv" + sSuffix, true);
			    ajaxLogIt("NowPlaying.js::init", "Player failed indiv check", true);
			    bContinue = false;
		    }
        }
    }
    return bContinue;
}

function individualizePlayer_onclick(){
	try{
		if (individualizePlayer()){  //call common function in common.js
			alert ("Your player has successfully been updated.  Please close your browser to complete this upgrade.");
			window.location.reload();
			//init();					//try to reinit
		}
		else{ //error occurred from the control
			jsError("Login.Script::individualizePlayer_onclick", "An error occurred attempting to update your Windows Media Player", true);
			window.close();
		}
	}
	catch(e){  //unhandled
		jsError("Login.Script::individualizePlayer_onclick", e.message, true);
		window.close();
	}
}
