﻿//todo - add js failback to recommend which sl to install
function getSilverlightVersion() {
    try {
        var parts = Array("ver-major", "ver-minor", "ver-build", "ver-revision");

        //try firefox/non-IE version.
        var nav = navigator.plugins["Silverlight Plug-In"];
        if (nav) {
            for (var i = 0; i < 4; i++) {
                return nav.description;
            }
        } else {
            //try the IE one now.
            try {
                var control = new ActiveXObject('AgControl.AgControl');
                //the following would be faster with a binary search, but this is "fast enough" for now. 
                var vers = Array(1, 0, 0, 0);
                loopMatch(control, vers, 0, 1);
                loopMatch(control, vers, 1, 1);
                loopMatch(control, vers, 2, 10000);
                loopMatch(control, vers, 2, 1000);
                loopMatch(control, vers, 2, 100);
                loopMatch(control, vers, 2, 10);
                loopMatch(control, vers, 2, 1);
                loopMatch(control, vers, 3, 1);
                var version = "";
//                for (var i = 0; i < 4; i++) {
//                    version = version + vers[i].toString() + ".";
//                }
                //                return version.slice(0, -1);
                return vers.join(".");
            } catch (e) {
                return "Silverlight not installed.";
            }
        }
    }
    catch (e) {
        return "Silverlight detection error. " + e.message;
    }
}

function loopMatch(control, vers, idx, inc) {
    while(IsSupported(control, vers)){
        vers[idx]+=inc;
    }
    vers[idx] -= inc;
}

function IsSupported(control, ver){
    return control.isVersionSupported(ver[0]+ "."+ ver[1] + "." + ver[2] + "." + ver[3]);
}
