| OLD | NEW | 
|---|
| 1 (function(){ | 1 (function() | 
|  | 2 { | 
| 2   document.addEventListener("DOMContentLoaded", function() | 3   document.addEventListener("DOMContentLoaded", function() | 
| 3   { | 4   { | 
| 4 | 5 | 
| 5     /************************************************************************** | 6     /************************************************************************** | 
| 6      * General | 7      * General | 
| 7      **************************************************************************/ | 8      **************************************************************************/ | 
| 8 | 9 | 
| 9     // Change html class name from "no-js" to "js" | 10     // Change html class name from "no-js" to "js" | 
| 10     document.documentElement.className = "js"; | 11     document.documentElement.className = "js"; | 
| 11 | 12 | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 48     { | 49     { | 
| 49       // setTimeout to allow document.activeElement | 50       // setTimeout to allow document.activeElement | 
| 50       // to move to newly focused element | 51       // to move to newly focused element | 
| 51       setTimeout(function() | 52       setTimeout(function() | 
| 52       { | 53       { | 
| 53         var newFocus = document.activeElement; | 54         var newFocus = document.activeElement; | 
| 54 | 55 | 
| 55         if (newFocus | 56         if (newFocus | 
| 56               .classList.contains("custom-select-selected") || | 57               .classList.contains("custom-select-selected") || | 
| 57             newFocus | 58             newFocus | 
|  | 59               .classList.contains("custom-select-option") || | 
|  | 60             newFocus | 
| 58               .parentElement | 61               .parentElement | 
| 59               .classList.contains("custom-select-option")) | 62               .classList.contains("custom-select-option")) | 
| 60         { | 63         { | 
| 61           return; | 64           return; | 
| 62         } | 65         } | 
| 63 | 66 | 
| 64         this.close(); | 67         this.close(); | 
| 65 | 68 | 
| 66       }.bind(this), 1); | 69       }.bind(this), 1); | 
| 67     } | 70     } | 
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 217 | 220 | 
| 218       this.toggleSection(event.target); | 221       this.toggleSection(event.target); | 
| 219     } | 222     } | 
| 220 | 223 | 
| 221     var productTopicsAccordion = document.getElementById('product-topics-accordi
     on'); | 224     var productTopicsAccordion = document.getElementById('product-topics-accordi
     on'); | 
| 222     if (productTopicsAccordion) | 225     if (productTopicsAccordion) | 
| 223     { | 226     { | 
| 224       new Accordion(productTopicsAccordion); | 227       new Accordion(productTopicsAccordion); | 
| 225     } | 228     } | 
| 226 | 229 | 
|  | 230     /************************************************************************** | 
|  | 231      * BrowserSelect | 
|  | 232      **************************************************************************/ | 
|  | 233 | 
|  | 234     function BrowserSelect(select) | 
|  | 235     { | 
|  | 236       this.select = select; | 
|  | 237       CustomSelect.apply(this, [this.select]); | 
|  | 238 | 
|  | 239       this.BROWSER_STORAGE_KEY = "BROWSER"; | 
|  | 240       this.BROWSER_AUTODETECTED_STORAGE_KEY = "BROWSER_AUTODETECTED"; | 
|  | 241       this.SUPPORTED_BROWSERS = ["chrome", "opera", "samsungBrowser", | 
|  | 242                                  "yandexbrowser", "maxthon", "msie", | 
|  | 243                                  "msedge", "firefox", "ios", "safari"]; | 
|  | 244       this.DEFAULT_BROWSER = "chrome"; | 
|  | 245 | 
|  | 246       this.select | 
|  | 247         .addEventListener("click", this._onClickOrKeyDown.bind(this), false); | 
|  | 248 | 
|  | 249       this.select | 
|  | 250         .addEventListener("keydown", this._onClickOrKeyDown.bind(this), false); | 
|  | 251 | 
|  | 252       var storedBrowser = localStorage.getItem(this.BROWSER_STORAGE_KEY); | 
|  | 253       if (storedBrowser) this.selectOption(storedBrowser); | 
|  | 254       else this.detectBrowser(); | 
|  | 255     } | 
|  | 256 | 
|  | 257     BrowserSelect.prototype = Object.create(CustomSelect.prototype); | 
|  | 258     BrowserSelect.prototype.constructor = BrowserSelect; | 
|  | 259 | 
|  | 260     BrowserSelect.prototype.detectBrowser = function() | 
|  | 261     { | 
|  | 262       for (var i = 0; i < this.SUPPORTED_BROWSERS.length; i++) | 
|  | 263       { | 
|  | 264         var supportedBrowser = this.SUPPORTED_BROWSERS[i]; | 
|  | 265         if (bowser[supportedBrowser]) | 
|  | 266         { | 
|  | 267           localStorage.setItem(this.BROWSER_AUTODETECTED_STORAGE_KEY, "true"); | 
|  | 268           return this.selectOption(supportedBrowser); | 
|  | 269         } | 
|  | 270       } | 
|  | 271 | 
|  | 272       this.selectOption(this.DEFAULT_BROWSER); | 
|  | 273     }; | 
|  | 274 | 
|  | 275     BrowserSelect.prototype.selectOption = function(browser) | 
|  | 276     { | 
|  | 277       localStorage.setItem(this.BROWSER_STORAGE_KEY, browser); | 
|  | 278 | 
|  | 279       // Change body class | 
|  | 280       var bodyClassList = Array.prototype.slice.call(document.body.classList); | 
|  | 281       for (var i = 0; i < bodyClassList.length; i++) | 
|  | 282       { | 
|  | 283         if (bodyClassList[i].indexOf('ua-') > -1) | 
|  | 284         { | 
|  | 285           document.body.classList.remove(bodyClassList[i]); | 
|  | 286         } | 
|  | 287       } | 
|  | 288       document.body.classList.add("ua-" + browser); | 
|  | 289 | 
|  | 290       // Check selected option | 
|  | 291       var selectedItem = this.select | 
|  | 292                              .querySelector("[data-value='" + browser + "']"); | 
|  | 293       selectedItem.setAttribute("aria-checked", "true"); | 
|  | 294 | 
|  | 295       // Set selected option | 
|  | 296       var selectedOption = selectedItem.innerHTML; | 
|  | 297 | 
|  | 298       if (localStorage.getItem(this.BROWSER_AUTODETECTED_STORAGE_KEY)) | 
|  | 299       { | 
|  | 300         var autodetected = document | 
|  | 301                               .getElementById('browser-select-autodetected') | 
|  | 302                               .innerHTML; | 
|  | 303         selectedOption += "<span class='muted'>(" + autodetected + ")</span>"; | 
|  | 304       } | 
|  | 305 | 
|  | 306       this.select | 
|  | 307           .querySelector(".custom-select-selected") | 
|  | 308           .innerHTML = selectedOption; | 
|  | 309     }; | 
|  | 310 | 
|  | 311     BrowserSelect.prototype._onClickOrKeyDown = function(event) | 
|  | 312     { | 
|  | 313       if (!event.target.classList.contains("custom-select-option")) return; | 
|  | 314 | 
|  | 315       var IS_ENTER_KEY = event.key == "Enter" || event.keyCode == 13; | 
|  | 316       if (event.keyCode && !IS_ENTER_KEY) return; | 
|  | 317 | 
|  | 318       localStorage.removeItem(this.BROWSER_AUTODETECTED_STORAGE_KEY); | 
|  | 319 | 
|  | 320       // Uncheck previously checked option | 
|  | 321       this.select | 
|  | 322           .querySelector("[aria-checked='true']") | 
|  | 323           .setAttribute("aria-checked", "false"); | 
|  | 324 | 
|  | 325       this.selectOption(event.target.getAttribute("data-value")); | 
|  | 326 | 
|  | 327       this.close(); | 
|  | 328     }; | 
|  | 329 | 
|  | 330     var browserSelect = document.getElementById("browser-select"); | 
|  | 331     if (browserSelect) | 
|  | 332     { | 
|  | 333       new BrowserSelect(browserSelect); | 
|  | 334     } | 
|  | 335 | 
| 227   }, false); | 336   }, false); | 
| 228 }()); | 337 }()); | 
| OLD | NEW | 
|---|