Checking conditions before allowing a play button to become visible
Just a few more minor things on top of jt0dd's excellent review.



Anonymous functions in JavaScript are awesome, but your program will be more readable if you give the main functions names and declare in advance. That way the main part of your program will become something like this:

if (!haveSilverlight) {
    $('.playbtn').hide();
    $('.videoposter').append('&lt;button class="installbtn" /&gt;');
    if (isNodeWebkit) {
        $('.installbtn').on('click', openExternalSilverlightDownloader);
    } else {
        $('.installbtn').on('click', openSilverlightDownloader);
        $(window).on('focus', setupInstallBtn);
    }
} else {
    $(window).on('focus', setupPlayBtn);
}


Easier to see the overall logic, no?



Don't write if statements this way:


if (something) {
     // ...
} else if (!something) {
     // ...
}



That's what else is for:

if (something) {
     // ...
} else {
     // ...
}




You don't need to evaluate boolean variables like this:


if (isEncoding == true) {
    // ...
}



You can do simply:

if (isEncoding) {
    // ...
}




On this line, you don't need the brackets, and I think the code would be more readable with the comment on the line before the assignment.


var isNodeWebkit = (typeof process == "object"); // check if using node app



Better this way:

// check if using node app
var isNodeWebkit = typeof process == "object";




Especially with long lines like this, definitely don't put comment after the statement, as it forces me to scroll right, which is not convenient. Even better, the a comment saying // setup download URL variable for a variable assignment is pointless, so it's better to just drop it.


var downloadURL = 'https://www.microsoft.com/getsilverlight/get-started/install/'; // setup download URL variable
var isEncoding = false; // setup isEncoding variable



These lines should have been just:

var downloadURL = 'https://www.microsoft.com/getsilverlight/get-started/install/';
var isEncoding = false;


Without comments, assignments are self-explanatory.