var n_uA = navigator.userAgent;
var versionSplitter = ".";

var os = new Object();
if(n_uA.indexOf("Windows") != -1) {
    os.name = "Windows";
    os.version = formatVersionNum(getSubstring(n_uA, "Windows NT", ";"));
} else if(n_uA.indexOf("like Mac") != -1) {
    os.name = "iOS";
    os.version = formatVersionNum(getSubstring(n_uA, "OS", ";"));
} else if(n_uA.indexOf("Mac") != -1) {
    os.name = "Mac OS";
    os.version = formatVersionNum(getSubstring(n_uA, "Mac OS", ";"));
} else {
    os.name = "other";
    os.version = null;
}

var browser = new Object();
if(n_uA.indexOf("MSIE") != -1) {
    browser.name = "IE";
    browser.version = formatVersionNum(getSubstring(n_uA, "MSIE", ";"));
} else if(n_uA.indexOf("Firefox") != -1) {
    browser.name = "Firefox";
    browser.version = formatVersionNum(getSubstring(n_uA, "Firefox", " "));
} else if(n_uA.indexOf("Chrome") != -1) {
    browser.name = "Chrome";
    browser.version = formatVersionNum(getSubstring(n_uA, "Chrome", " "));
} else if(n_uA.indexOf("Safari") != -1) {
    browser.name = "Safari";
    browser.version = formatVersionNum(getSubstring(n_uA, "Version", " "));
}

var display = new Object();
if(Math.abs(window.orientation) == 90) {
    display.height = screen.width;
    display.width = screen.height;
} else {
    display.height = screen.height;
    display.width = screen.width;
}

function getSubstring(s, fs, bs) {
    var fi = s.indexOf(fs) + fs.length + 1;
    if(fi == -1) return;
    var bi = s.indexOf(bs, fi) != -1 ? s.indexOf(bs, fi) : s.length;
    return s.substring(fi, bi);
}
function formatVersionNum(s) {
    return s.toString().replace(/[^0-9._-]/g, "").replace(/[._-]/g, versionSplitter);
}
function versionPass(version, requiredVersion) {
    var cva = formatVersionNum(version).split(versionSplitter);
    var mva = formatVersionNum(requiredVersion).split(versionSplitter);
    for(i in cva) {
        var cvNum = parseInt(cva[i]), mvNum = parseInt(mva[i]);
        if(cvNum.toString() == "NaN") cvNum = 0;
        if(mvNum.toString() == "NaN") mvNum = 0;
        if(mvNum > cvNum) {
            return false;
        } else if(cvNum > mvNum) {
            return true;
        }
    }
    return true;
}
