/*!-------------------------------------------------------------------- JAVASCRIPT "Outdated Browser" Version: 1.1.2 - 2015 author: Burocratik website: http://www.burocratik.com * @preserve -----------------------------------------------------------------------*/ var outdatedBrowser = function(options) { //Variable definition (before ajax) var outdated = document.getElementById("outdated"); // Default settings this.defaultOpts = { bgColor: '#f25648', color: '#ffffff', lowerThan: 'transform', languagePath: '../outdatedbrowser/lang/en.html' } if (options) { //assign css3 property or js property to IE browser version if (options.lowerThan == 'IE8' || options.lowerThan == 'borderSpacing') { options.lowerThan = 'borderSpacing'; } else if (options.lowerThan == 'IE9' || options.lowerThan == 'boxShadow') { options.lowerThan = 'boxShadow'; } else if (options.lowerThan == 'IE10' || options.lowerThan == 'transform' || options.lowerThan == '' || typeof options.lowerThan === "undefined") { options.lowerThan = 'transform'; } else if (options.lowerThan == 'IE11' || options.lowerThan == 'borderImage') { options.lowerThan = 'borderImage'; } else if (options.lowerThan == 'Edge' || options.lowerThan == 'js:Promise') { options.lowerThan = 'js:Promise'; } //all properties this.defaultOpts.bgColor = options.bgColor; this.defaultOpts.color = options.color; this.defaultOpts.lowerThan = options.lowerThan; this.defaultOpts.languagePath = options.languagePath; bkgColor = this.defaultOpts.bgColor; txtColor = this.defaultOpts.color; cssProp = this.defaultOpts.lowerThan; languagePath = this.defaultOpts.languagePath; } else { bkgColor = this.defaultOpts.bgColor; txtColor = this.defaultOpts.color; cssProp = this.defaultOpts.lowerThan; languagePath = this.defaultOpts.languagePath; } //end if options //Define opacity and fadeIn/fadeOut functions var done = true; function function_opacity(opacity_value) { outdated.style.opacity = opacity_value / 100; outdated.style.filter = 'alpha(opacity=' + opacity_value + ')'; } // function function_fade_out(opacity_value) { // function_opacity(opacity_value); // if (opacity_value == 1) { // outdated.style.display = 'none'; // done = true; // } // } function function_fade_in(opacity_value) { function_opacity(opacity_value); if (opacity_value == 1) { outdated.style.display = 'block'; } if (opacity_value == 100) { done = true; } } //check if element has a particular class // function hasClass(element, cls) { // return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1; // } var supports = ( function() { var div = document.createElement('div'); var vendors = 'Khtml Ms O Moz Webkit'.split(' '); var len = vendors.length; return function(prop) { if (prop in div.style) return true; prop = prop.replace(/^[a-z]/, function(val) { return val.toUpperCase(); }); while (len--) { if (vendors[len] + prop in div.style) { return true; } } return false; }; } )(); var validBrowser = false; // browser check by js props if(/^js:+/g.test(cssProp)) { var jsProp = cssProp.split(':')[1]; if(!jsProp) return; switch (jsProp) { case 'Promise': validBrowser = window.Promise !== undefined && window.Promise !== null && Object.prototype.toString.call(window.Promise.resolve()) === '[object Promise]'; break; default: validBrowser = false; } } else { // check by css3 property (transform=default) validBrowser = supports('' + cssProp + ''); } if (!validBrowser) { if (done && outdated.style.opacity !== '1') { done = false; for (var i = 1; i <= 100; i++) { setTimeout((function (x) { return function () { function_fade_in(x); }; })(i), i * 8); } } } else { return; } //end if //Check AJAX Options: if languagePath == '' > use no Ajax way, html is needed inside
if (languagePath === ' ' || languagePath.length == 0) { startStylesAndEvents(); } else { grabFile(languagePath); } //events and colors function startStylesAndEvents() { var btnClose = document.getElementById("btnCloseUpdateBrowser"); var btnUpdate = document.getElementById("btnUpdateBrowser"); //check settings attributes outdated.style.backgroundColor = bkgColor; //way too hard to put !important on IE6 outdated.style.color = txtColor; outdated.children[0].style.color = txtColor; outdated.children[1].style.color = txtColor; //check settings attributes btnUpdate.style.color = txtColor; // btnUpdate.style.borderColor = txtColor; if (btnUpdate.style.borderColor) { btnUpdate.style.borderColor = txtColor; } btnClose.style.color = txtColor; //close button btnClose.onmousedown = function() { outdated.style.display = 'none'; return false; }; //Override the update button color to match the background color btnUpdate.onmouseover = function() { this.style.color = bkgColor; this.style.backgroundColor = txtColor; }; btnUpdate.onmouseout = function() { this.style.color = txtColor; this.style.backgroundColor = bkgColor; }; } //end styles and events // IF AJAX with request ERROR > insert english default var ajaxEnglishDefault = '
Your browser is out-of-date!
' + '

Update your browser to view this website correctly. Update my browser now

' + '

×

'; //** AJAX FUNCTIONS - Bulletproof Ajax by Jeremy Keith ** function getHTTPObject() { var xhr = false; if (window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch ( e ) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch ( e ) { xhr = false; } } } return xhr; }//end function function grabFile(file) { var request = getHTTPObject(); if (request) { request.onreadystatechange = function() { displayResponse(request); }; request.open("GET", file, true); request.send(null); } return false; } //end grabFile function displayResponse(request) { var insertContentHere = document.getElementById("outdated"); if (request.readyState == 4) { if (request.status == 200 || request.status == 304) { insertContentHere.innerHTML = request.responseText; } else { insertContentHere.innerHTML = ajaxEnglishDefault; } startStylesAndEvents(); } return false; }//end displayResponse ////////END of outdatedBrowser function };