﻿var BrowserDetect = {
    init: function() {
        this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
        this.version = this.searchVersion(navigator.userAgent) ||
		this.searchVersion(navigator.appVersion) ||
		"an unknown version";
    },
    searchString: function(data) {
        for (var i = 0; i < data.length; i++) {
            var dataString = data[i].string;
            var dataProp = data[i].prop;
            this.versionSearchString = data[i].versionSearch || data[i].identity;
            if (dataString) {
                if (dataString.indexOf(data[i].subString) != -1)
                    return data[i].identity;
            }
            else
                if (dataProp)
                return data[i].identity;
        }
    },
    searchVersion: function(dataString) {
        var index = dataString.indexOf(this.versionSearchString);
        if (index == -1)
            return;
        return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
    },
    dataBrowser: [{
        string: navigator.userAgent,
        subString: "Chrome",
        identity: "Chrome"
    },
	{
	    string: navigator.vendor,
	    subString: "Apple",
	    identity: "Safari"
	}, {
	    prop: window.opera,
	    identity: "Opera"
	}, {
	    string: navigator.userAgent,
	    subString: "Flock",
	    identity: "Flock"
	}, {
	    string: navigator.userAgent,
	    subString: "Firefox",
	    identity: "Firefox"
	}, {
	    string: navigator.userAgent,
	    subString: "MSIE",
	    identity: "IExplorer",
	    versionSearch: "MSIE"
}]
};
var BrowserCompatible = {
    check: function() {
        BrowserDetect.init();
        if ((this.useBlackList && this.unCompatibleBrowsers[BrowserDetect.browser] && BrowserDetect.version <= this.unCompatibleBrowsers[BrowserDetect.browser]) ||
		    (!this.useBlackList && (BrowserDetect.version < this.compatibleBrowsers[BrowserDetect.browser] || !this.compatibleBrowsers[BrowserDetect.browser]))) {
            if (!this.readCookie('browsercheck_dontShowAgain'))
                this.showWarning();
        }
    },
    getStyle: function(el, styleProp) {
        var x = el;
        if (x.currentStyle)
            var y = x.currentStyle[styleProp];
        else
            if (window.getComputedStyle)
            var y = document.defaultView.getComputedStyle(x, null).getPropertyValue(styleProp);
        return y;
    },
    cookieNamePrefix: "TAInvest_",
    createCookie: function(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = ";expires=" + date.toGMTString();
        }
        else
            var expires = "";
        document.cookie = BrowserCompatible.cookieNamePrefix + name + "=" + value + expires + ";path=/";
    },
    readCookie: function(name) {
        var nameEQ = BrowserCompatible.cookieNamePrefix + name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ')
                c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0)
                return c.substring(nameEQ.length, c.length);
        }
        return null;
    },

    eraseCookie: function(name) {
        this.createCookie(name, "", -1);
    },
    showWarning: function() {
        if (!this.lang) {
            this.lang = navigator.language || navigator.browserLanguage;
            if (!this.langTranslations[this.lang]) this.lang = "en";
        }
        var bg = document.createElement("div");
        bg.id = "browsercheck_bg";
        bg.style["background"] = "#fff";
        bg.style["filter"] = "alpha(opacity=70)";
        bg.style["-moz-opacity"] = "0.70";
        bg.style["opacity"] = "0.7";
        bg.style["position"] = "fixed";
        if (BrowserDetect.browser == "IExplorer" && BrowserDetect.version < 7)
            bg.style["position"] = "absolute";
        bg.style["z-index"] = "9998";
        bg.style["top"] = "0";
        bg.style["left"] = "0";
        bg.style["height"] = (screen.availHeight + 300) + "px";
        bg.style["width"] = (screen.availWidth + 300) + "px";

        var warning_html = "";
        if (this.allowCancel)
            warning_html += '<a href="javascript:BrowserCompatible.cancel()" style="background:url(' + this.images['cancel'] + ') no-repeat; height:15px; width:16px; position:absolute; right:10px; top:7px;" title="' + this.langTranslations[this.lang]['cancel'] + '"></a>';
        warning_html += '<div id="browsercheck_title" style="font-family:arial; font-size:24px; color:#000; margin:15px;">' + this.langTranslations[this.lang]['title'] + '</div>';
        warning_html += '<div id="browsercheck_description" style="font-family:arial; font-size:12px; color:#707070; margin:15px;">' + this.langTranslations[this.lang]['description'] + '</div>';
        warning_html += '<div id="browsercheck_recomendation" style="font-family:arial; font-size:12px; color:#707070; margin:15px;">' + this.langTranslations[this.lang]['recomendation'] + '</div>';
        for (var i = 0; i < this.offeredBrowsers.length; i++) {
            warning_html += '<a href="' + this.browsersList[this.offeredBrowsers[i]].link + '" style="height:60px; width:165px; display:block; float:left; margin:15px; text-decoration:none; background: url(' + this.browsersList[this.offeredBrowsers[i]].image + ') no-repeat;" target="_blank"> </a>';

        }
        warning_html += '<br/><br/>'
        warning_html += '<a href="javascript:BrowserCompatible.cancel();" class="form-submit2">' + this.langTranslations[this.lang]['remindMeLater'] + '</a>';
        if (this.allowToHide)
            warning_html += '<div style="clear:both;font-family:arial; font-size:12px; color:#707070; padding:7px 15px;"><label><input type="checkbox" id="browsercheck_dontShowAgain" onclick="BrowserCompatible.dontShowAgain()" />' + this.langTranslations[this.lang]['dontShowAgain'] + '</label></div>';
        warning_html += '<br/><br/><br/>'
        var warning = document.createElement("div");
        warning.id = "browsercheck_warning";
        warning.style["background"] = "url(" + this.images['background'] + ") no-repeat";
        warning.style["padding"] = "2px";
        warning.style["width"] = "600px";
        warning.style["height"] = "400px";
        warning.style["position"] = "fixed";
        if (BrowserDetect.browser == "IExplorer" && BrowserDetect.version < 7)
            warning.style["position"] = "absolute";
        warning.style["z-index"] = "9999";
        warning.style["top"] = ((window.innerHeight || document.body.parentNode.offsetHeight) - 400) / 2 + "px";
        warning.style["left"] = ((window.innerWidth || document.body.parentNode.offsetWidth) - 600) / 2 + "px";
        warning.innerHTML = warning_html;

        this.old_overflow_style = this.getStyle(document.body.parentNode, "overflow") || this.getStyle(document.body, "overflow");
        if (BrowserDetect.browser == "Opera" && this.old_overflow_style == "visible")
            this.old_overflow_style = "auto";
        document.body.parentNode.style["overflow"] = "hidden";
        document.body.style["overflow"] = "hidden";

        document.body.appendChild(bg);
        document.body.appendChild(warning);

        if (window.addEventListener) {
            window.addEventListener('resize', this.warningPosition, false);
        }
        else {
            window.attachEvent('onresize', this.warningPosition);
        }
        var allVisibleInputs = $("select:visible");
        $(allVisibleInputs).each(function() {
            $(this).attr("ThisWasVisible", "true");
            $(this).hide();
        });
    },
    warningPosition: function() {
        var warning = document.getElementById('browsercheck_warning');
        warning.style["top"] = ((window.innerHeight || document.body.parentNode.offsetHeight) - 400) / 2 + "px";
        warning.style["left"] = ((window.innerWidth || document.body.parentNode.offsetWidth) - 600) / 2 + "px";
    },
    allowCancelAndHide: true,
    dontShowAgain: function() {
        var inpDontShowAgain;
        var browsercheck_dontShowAgain = document.getElementById('browsercheck_dontShowAgain');
        if (browsercheck_dontShowAgain) {
            inpDontShowAgain = browsercheck_dontShowAgain.checked;
        }
        else {
            inpDontShowAgain = BrowserCompatible.allowCancelAndHide;
        }
        var dontShowAgain = this.readCookie('browsercheck_dontShowAgain');
        if (inpDontShowAgain) {
            this.createCookie('browsercheck_dontShowAgain', 'on', this.cookiesExpire);
        }
        else {
            this.eraseCookie('browsercheck_dontShowAgain');
        }
    },
    cancel: function() {
        var bg = document.getElementById('browsercheck_bg');
        var warning = document.getElementById('browsercheck_warning');
        bg.parentNode.removeChild(bg);
        warning.parentNode.removeChild(warning);
        document.body.parentNode.style["overflow"] = this.old_overflow_style;
        if (BrowserDetect.browser != "IExplorer")
            document.body.style["overflow"] = this.old_overflow_style;
        document.onresize = this.resize_function;
        if (BrowserCompatible.allowCancelAndHide) {
            BrowserCompatible.dontShowAgain();
        }
        $("[ThisWasVisible=true]").show();
        if (window.removeEventListener) {
            window.removeEventListener('resize', this.warningPosition, false);
        }
        else {
            window.detachEvent('onresize', this.warningPosition);
        }
    },
    old_overflow_style: "",
    resize_function: null,
    allowCancel: true,
    allowToHide: false,
    cookiesExpire: 1,
    images: {
        'background': "/invest/site_images/BrowserCompatibility/background_browser.gif",
        'cancel': "/invest/site_images/BrowserCompatibility/close-button.png"
    },
    useBlackList: true,
    compatibleBrowsers: {
        "Opera": 9.25,
        "Firefox": 2,
        "IExplorer": 7,
        "Safari": 525.17,
        "Flock": 1.1,
        "Chrome": 1
    },
    unCompatibleBrowsers: {
        "IExplorer": 6
    },
    offeredBrowsers: ["IExplorer", "Firefox", "Chrome", "Safari", "Opera", "Flock"],
    browsersList: {
        "Chrome": {
            "image": "/invest/site_images/BrowserCompatibility/chrome.gif",
            "link": "http://www.google.com/chrome/"
        },
        "Opera": {
            "image": "/invest/site_images/BrowserCompatibility/opera.gif",
            "link": "http://www.opera.com/products/desktop/"
        },
        "Firefox": {
            "image": "/invest/site_images/BrowserCompatibility/firefox.gif",
            "link": "http://www.mozilla-europe.org/"
        },
        "IExplorer": {
            "image": "/invest/site_images/BrowserCompatibility/iexplorer.gif",
            "link": "http://www.microsoft.com/windows/internet-explorer/download-ie.aspx"
        },
        "Safari": {
            "image": "/invest/site_images/BrowserCompatibility/safari.gif",
            "link": "http://www.apple.com/safari/"
        },
        "Flock": {
            "image": "/invest/site_images/BrowserCompatibility/flock.gif",
            "link": "http://www.flock.com/"
        }
    },
    lang: "",
    langTranslations: {
        "en": {
            "title": "Obsolete browser",
            "description": "Your browser is obsolete, which means it does not contain all of the necessary functions for the correct working of many current web sites. Modern web sites are created to be convenient and effective for you and, together with improvement of web sites themselves, browsers continue to improve. In addition, older browsers have many security glitches which can be maliciously abused to steal personal and financial information; therefore by upgrading your web browser you not only benefit from an enhanced web experience, but ensure that your private data is better protected.",
            "recomendation": "We recommend using the latest version of one of the following browsers. All are free, quick to install and won't cost you anything.",
            "cancel": "Close this warning",
            "dontShowAgain": "Don't show this warning again",
            "remindMeLater": "Remind me later"
        },
        "fr": {
            "title": "Votre navigateur est obsolète",
            "description": "Votre navigateur internet est trop ancien et ne vous permet pas d'utiliser le site de Test-Achats invest de manière optimale.",
            "recomendation": "Nous vous recommandons d'installer une version plus récente d'un des navigateurs ci-dessous.<br/>Cela ne prend que quelques minutes, améliore votre navigation sur Internet et en plus, c’est gratuit !",
            "cancel": "Fermer cet avertissement",
            "dontShowAgain": "Ne plus montrer cet avertissement",
            "remindMeLater": "Me le rappeler plus tard"
        },
        "nl": {
            "title": "Uw browser is verouderd",
            "description": "Uw internetbrowser is verouderd en laat niet toe de website van Test-Aankoop invest optimaal te gebruiken.",
            "recomendation": "Wij raden u aan een meer recente versie van één van de volgende browsers te installeren.<br/>Het vergt slechts enkele minuten, het verbetert uw internetnavigatie en bovendien is het gratis !",
            "cancel": "Sluit deze waarschuwing",
            "dontShowAgain": "Toon deze waarschuwing niet opnieuw",
            "remindMeLater": "Herinner er mij later nog eens aan"
        }
    }
}
