(function() {
    try {
        var minIEVersionSupported = 7; //TRIDENT Version
        var minFirefoxVersionSupported = 54;   
        var minChromeVersionSupported = 58;             
        var ua = navigator.userAgent;
        var isBrowserValid;
        
        /*if (isPhone()) {
            isBrowserValid = isMobileEdge() || isMobileChrome() || isiPhoneSafari();
            console.log("MOBILE->" + "isMobileEdge: " + isMobileEdge(), "isMobileChrome: " + isMobileChrome(), "isiPhoneSafari: " + isiPhoneSafari())
        } else {            
            isBrowserValid = isEdge() || isChrome() || isFirefox() || isIE();
            console.log("Desktop->" + "isEdge: " + isEdge(), "isChrome: " + isChrome(), "isFirefox: " + isFirefox(), "isIE: " + isIE());
        }*/       	
             
       if(isIE() === false){
            //Navigate to Browser not compatible error page  
            var tempLink = document.createElement('a');
            tempLink.href = "../apex/ISD_BrowserNotCompatible";
            window.location.href = tempLink.href;
        }
                
        function isEdge() {
            if (ua.indexOf('Edge') !== -1) console.log('Edge');
            return ua.indexOf('Edge') !== -1;
        }
        
        function isChrome() {
            if (/AppleWebKit\/[\d\.]+ \(KHTML, like Gecko\) Chrome\/[\d\.]+ Safari\/[\d\.]+$/.test(ua)) {                
                var versionNumber = ua.match(/Chrome\/\d+/);
                if (versionNumber.length !== 0) {
                    versionNumber = parseInt(versionNumber[0].match(/\d+/), 10);
                    if (versionNumber > minChromeVersionSupported) {                        
                        return true;
                    }
                }
            }
            return false;
        }
        function isFirefox() {
            if (/Gecko\/\d+ Firefox\/[\d\.]+/.test(ua)) {                
                var versionNumber = ua.match(/Firefox\/\d+/);
                if (versionNumber.length !== 0) {
                    versionNumber = parseInt(versionNumber[0].match(/\d+/), 10);
                    if (versionNumber >= minFirefoxVersionSupported) {                        
                        return true;
                    }
                }
            }
            return false;
        }
        function isIE() {
            //function to check if its IE browser is compatible
            if (ua.match(/Trident/) !== null) {                
                var versionNumber = ua.match(/Trident\/\d+/);
                if (versionNumber.length !== 0) {
                    versionNumber = parseInt(versionNumber[0].match(/\d+/), 10);
                    if (versionNumber >= minIEVersionSupported) {                        
                        return true;
                    } else 
                        return false;                    
                } else
                    return false;
            } else {
                return true;
            }       	
        }
        function isPhone() {
            if (ua.indexOf('Mobile') !== -1 || ua.indexOf('Phone') !== -1) console.log('Device is a phone');
            return (ua.indexOf('Mobile') !== -1 || ua.indexOf('Phone') !== -1);
    	}
        function isMobileEdge() {
            if (/Chrome\/[\d\.]+ Mobile Safari\/[\d\.]+ Edge\/[\d\.]+/.test(ua)) console.log('Phone Edge');
            return (/Chrome\/[\d\.]+ Mobile Safari\/[\d\.]+ Edge\/[\d\.]+/.test(ua));
        }
        function isMobileChrome() {   
            if (/Chrome\/[\d\.]+ Mobile Safari\/[\d\.]+/.test(ua)) {                
                var versionNumber = ua.match(/Chrome\/\d+/);
                if (versionNumber.length !== 0) {
                    versionNumber = parseInt(versionNumber[0].match(/\d+/), 10);
                    if (versionNumber >= minChromeVersionSupported) {                        
                        return true;
                    }
                }
            }
            return false;
    	}
        function isiPhoneSafari() {
            if (/Mobile\/[a-zA-Z0-9]* Safari\/[\d\.]+/.test(ua)) {
               return (/Mobile\/[a-zA-Z0-9]* Safari\/[\d\.]+/.test(ua));
            }
            return false;
        }
    }
    catch (ex) {
        console.log(ex);
    }
})();