Browse Source

Merge pull request #436 from Manoz/fix/duplicate-code

[Enhancement] Duplicate code
Amauri CHAMPEAUX 5 years ago
parent
commit
de701ba421
1 changed files with 96 additions and 104 deletions
  1. 96 104
      tarteaucitron.js

+ 96 - 104
tarteaucitron.js

@@ -42,128 +42,37 @@ var tarteaucitron = {
             alreadyLaunch = 1;
             if (window.addEventListener) {
                 window.addEventListener("load", function () {
-                    tarteaucitron.load();
-                    tarteaucitron.fallback(['tarteaucitronOpenPanel'], function (elem) {
-                        elem.addEventListener("click", function (event) {
-                            tarteaucitron.userInterface.openPanel();
-                            event.preventDefault();
-                        }, false);
-                    }, true);
+                    tarteaucitron.initEvents.loadEvent(false);
                 }, false);
                 window.addEventListener("scroll", function () {
-                    var scrollPos = window.pageYOffset || document.documentElement.scrollTop,
-                        heightPosition;
-                    if (document.getElementById('tarteaucitronAlertBig') !== null && !tarteaucitron.highPrivacy) {
-                        if (document.getElementById('tarteaucitronAlertBig').style.display === 'block') {
-                            heightPosition = document.getElementById('tarteaucitronAlertBig').offsetHeight + 'px';
-
-                            if (scrollPos > (screen.height * 2)) {
-                                tarteaucitron.userInterface.respondAll(true);
-                            } else if (scrollPos > (screen.height / 2)) {
-                                document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '<strong>' + tarteaucitron.lang.alertBigScroll + '</strong> ' + tarteaucitron.lang.alertBig;
-                            }
-
-                            if (tarteaucitron.orientation === 'top') {
-                                document.getElementById('tarteaucitronPercentage').style.top = heightPosition;
-                            } else {
-                                document.getElementById('tarteaucitronPercentage').style.bottom = heightPosition;
-                            }
-                            document.getElementById('tarteaucitronPercentage').style.width = ((100 / (screen.height * 2)) * scrollPos) + '%';
-                        }
-                    }
+                    tarteaucitron.initEvents.scrollEvent();
                 }, false);
 
                 window.addEventListener("keydown", function (evt) {
-                    if (evt.keyCode === 27) {
-                        tarteaucitron.userInterface.closePanel();
-                    }
+                    tarteaucitron.initEvents.keydownEvent(false, evt);
                 }, false);
                 window.addEventListener("hashchange", function () {
-                    if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') {
-                        tarteaucitron.userInterface.openPanel();
-                    }
+                    tarteaucitron.initEvents.hashchangeEvent();
                 }, false);
                 window.addEventListener("resize", function () {
-                    if (document.getElementById('tarteaucitron') !== null) {
-                        if (document.getElementById('tarteaucitron').style.display === 'block') {
-                            tarteaucitron.userInterface.jsSizing('main');
-                        }
-                    }
-
-                    if (document.getElementById('tarteaucitronCookiesListContainer') !== null) {
-                        if (document.getElementById('tarteaucitronCookiesListContainer').style.display === 'block') {
-                            tarteaucitron.userInterface.jsSizing('cookie');
-                        }
-                    }
+                    tarteaucitron.initEvents.resizeEvent();
                 }, false);
             } else {
                 window.attachEvent("onload", function () {
-                    tarteaucitron.load();
-                    tarteaucitron.fallback(['tarteaucitronOpenPanel'], function (elem) {
-                        elem.attachEvent("onclick", function (event) {
-                            tarteaucitron.userInterface.openPanel();
-                            event.preventDefault();
-                        });
-                    }, true);
+                    tarteaucitron.initEvents.loadEvent(true);
                 });
                 window.attachEvent("onscroll", function () {
-                    var scrollPos = window.pageYOffset || document.documentElement.scrollTop,
-                        heightPosition;
-                    if (document.getElementById('tarteaucitronAlertBig') !== null && !tarteaucitron.highPrivacy) {
-                        if (document.getElementById('tarteaucitronAlertBig').style.display === 'block') {
-                            heightPosition = document.getElementById('tarteaucitronAlertBig').offsetHeight + 'px';
-
-                            if (scrollPos > (screen.height * 2)) {
-                                tarteaucitron.userInterface.respondAll(true);
-                            } else if (scrollPos > (screen.height / 2)) {
-                                document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '<strong>' + tarteaucitron.lang.alertBigScroll + '</strong> ' + tarteaucitron.lang.alertBig;
-                            }
-                            if (tarteaucitron.orientation === 'top') {
-                                document.getElementById('tarteaucitronPercentage').style.top = heightPosition;
-                            } else {
-                                document.getElementById('tarteaucitronPercentage').style.bottom = heightPosition;
-                            }
-                            document.getElementById('tarteaucitronPercentage').style.width = ((100 / (screen.height * 2)) * scrollPos) + '%';
-                        }
-                    }
+                    tarteaucitron.initEvents.scrollEvent();
                 });
                 window.attachEvent("onkeydown", function (evt) {
-                    if (evt.keyCode === 27) {
-                        tarteaucitron.userInterface.closePanel();
-                    }
-
-                    if ( evt.keyCode === 9 && focusableEls.indexOf(evt.target) >= 0) {
-                        if ( evt.shiftKey ) /* shift + tab */ {
-                            if (document.activeElement === firstFocusableEl) {
-                                lastFocusableEl.focus();
-                                evt.preventDefault();
-                            }
-                        } else /* tab */ {
-                            if (document.activeElement === lastFocusableEl) {
-                                firstFocusableEl.focus();
-                                evt.preventDefault();
-                            }
-                        }
-                    }
+                    tarteaucitron.initEvents.keydownEvent(true, evt);
 
                 });
                 window.attachEvent("onhashchange", function () {
-                    if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') {
-                        tarteaucitron.userInterface.openPanel();
-                    }
+                    tarteaucitron.initEvents.hashchangeEvent();
                 });
                 window.attachEvent("onresize", function () {
-                    if (document.getElementById('tarteaucitron') !== null) {
-                        if (document.getElementById('tarteaucitron').style.display === 'block') {
-                            tarteaucitron.userInterface.jsSizing('main');
-                        }
-                    }
-
-                    if (document.getElementById('tarteaucitronCookiesListContainer') !== null) {
-                        if (document.getElementById('tarteaucitronCookiesListContainer').style.display === 'block') {
-                            tarteaucitron.userInterface.jsSizing('cookie');
-                        }
-                    }
+                    tarteaucitron.initEvents.resizeEvent();
                 });
             }
 
@@ -200,6 +109,89 @@ var tarteaucitron = {
             tarteaucitron.events.init();
         }
     },
+    "initEvents": {
+        "loadEvent": function (isOldBrowser) {
+            tarteaucitron.load();
+            tarteaucitron.fallback(['tarteaucitronOpenPanel'], function (elem) {
+                if (isOldBrowser) {
+                    elem.attachEvent("onclick", function (event) {
+                        tarteaucitron.userInterface.openPanel();
+                        event.preventDefault();
+                    });
+                } else {
+                    elem.addEventListener("click", function (event) {
+                        tarteaucitron.userInterface.openPanel();
+                        event.preventDefault();
+                    }, false);
+                }
+            }, true);
+        },
+        "keydownEvent": function (isOldBrowser, evt) {
+            if (evt.keyCode === 27) {
+                tarteaucitron.userInterface.closePanel();
+            }
+
+            if (isOldBrowser) {
+                if ( evt.keyCode === 9 && focusableEls.indexOf(evt.target) >= 0) {
+                    if ( evt.shiftKey ) /* shift + tab */ {
+                        if (document.activeElement === firstFocusableEl) {
+                            lastFocusableEl.focus();
+                            evt.preventDefault();
+                        }
+                    } else /* tab */ {
+                        if (document.activeElement === lastFocusableEl) {
+                            firstFocusableEl.focus();
+                            evt.preventDefault();
+                        }
+                    }
+                }
+            }
+        },
+        "hashchangeEvent": function () {
+            if (document.location.hash === tarteaucitron.hashtag && tarteaucitron.hashtag !== '') {
+                tarteaucitron.userInterface.openPanel();
+            }
+        },
+        "resizeEvent": function () {
+            var tacElem = document.getElementById('tarteaucitron');
+            var tacCookieContainer = document.getElementById('tarteaucitronCookiesListContainer');
+
+            if (tacElem && tacElem.style.display === 'block') {
+                tarteaucitron.userInterface.jsSizing('main');
+            }
+
+            if (tacCookieContainer && tacCookieContainer.style.display === 'block') {
+                tarteaucitron.userInterface.jsSizing('cookie');
+            }
+        },
+        "scrollEvent": function () {
+            var scrollPos = window.pageYOffset || document.documentElement.scrollTop;
+            var heightPosition;
+            var tacPercentage = document.getElementById('tarteaucitronPercentage');
+            var tacAlertBig = document.getElementById('tarteaucitronAlertBig');
+
+            if (tacAlertBig && !tarteaucitron.highPrivacy) {
+                if (tacAlertBig.style.display === 'block') {
+                    heightPosition = tacAlertBig.offsetHeight + 'px';
+
+                    if (scrollPos > (screen.height * 2)) {
+                        tarteaucitron.userInterface.respondAll(true);
+                    } else if (scrollPos > (screen.height / 2)) {
+                        document.getElementById('tarteaucitronDisclaimerAlert').innerHTML = '<strong>' + tarteaucitron.lang.alertBigScroll + '</strong> ' + tarteaucitron.lang.alertBig;
+                    }
+
+                    if (tacPercentage) {
+                        if (tarteaucitron.orientation === 'top') {
+                            tacPercentage.style.top = heightPosition;
+                        } else {
+                            tacPercentage.style.bottom = heightPosition;
+                        }
+                        tacPercentage.style.width = ((100 / (screen.height * 2)) * scrollPos) + '%';
+                    }
+                }
+            }
+        },
+    },
     "load": function () {
         "use strict";
         var cdn = tarteaucitron.cdn,
@@ -225,7 +217,7 @@ var tarteaucitron = {
                 "useExternalJs": false
             },
             params = tarteaucitron.parameters;
-                                                                                              
+
         // Don't show the middle bar if we are on the privacy policy page
         if (window.location.href == tarteaucitron.parameters.privacyUrl && tarteaucitron.parameters.orientation == "middle") {
             tarteaucitron.parameters.orientation = "bottom";
@@ -457,7 +449,7 @@ var tarteaucitron = {
                         document.body.appendChild(wrapper);*/
 
                         div.id = 'tarteaucitronRoot';
-                        if (tarteaucitron.parameters.bodyPosition === 'top') { 
+                        if (tarteaucitron.parameters.bodyPosition === 'top') {
                             // Prepend tarteaucitron: #tarteaucitronRoot first-child of the body for better accessibility
                             var bodyFirstChild = body.firstChild;
                             body.insertBefore(div, bodyFirstChild);
@@ -536,7 +528,7 @@ var tarteaucitron = {
                             html += '<div id="tarteaucitronPremium"></div>';
 
                             div.id = 'tarteaucitronRoot';
-                            if (tarteaucitron.parameters.bodyPosition === 'top') { 
+                            if (tarteaucitron.parameters.bodyPosition === 'top') {
                                 // Prepend tarteaucitron: #tarteaucitronRoot first-child of the body for better accessibility
                                 var bodyFirstChild = body.firstChild;
                                 body.insertBefore(div, bodyFirstChild);