Home | History | Annotate | Download | only in javascript
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 function addToPage(html) {
      6   var div = document.createElement('div');
      7   div.innerHTML = html;
      8   document.getElementById('content').appendChild(div);
      9 }
     10 
     11 function showLoadingIndicator(isLastPage) {
     12   document.getElementById('loadingIndicator').className =
     13       isLastPage ? 'hidden' : 'visible';
     14   updateLoadingIndicator(isLastPage);
     15 }
     16 
     17 // Maps JS Font Family to CSS class and then changes body class name.
     18 // CSS classes must agree with distilledpage.css.
     19 function useFontFamily(fontFamily) {
     20   var cssClass;
     21   if (fontFamily == "serif") {
     22     cssClass = "serif";
     23   } else if (fontFamily == "monospace") {
     24     cssClass = "monospace";
     25   } else {
     26     cssClass = "sans-serif";
     27   }
     28   // Relies on the classname order of the body being Theme class, then Font
     29   // Family class.
     30   var themeClass = document.body.className.split(" ")[0];
     31   document.body.className = themeClass + " " + cssClass;
     32 }
     33 
     34 // Maps JS theme to CSS class and then changes body class name.
     35 // CSS classes must agree with distilledpage.css.
     36 function useTheme(theme) {
     37   var cssClass;
     38   if (theme == "sepia") {
     39     cssClass = "sepia";
     40   } else if (theme == "dark") {
     41     cssClass = "dark";
     42   } else {
     43     cssClass = "light";
     44   }
     45   // Relies on the classname order of the body being Theme class, then Font
     46   // Family class.
     47   var fontFamilyClass = document.body.className.split(" ")[1];
     48   document.body.className = cssClass + " " + fontFamilyClass;
     49 }
     50 
     51 var updateLoadingIndicator = function() {
     52   var colors = ["red", "yellow", "green", "blue"];
     53   return function(isLastPage) {
     54     if (!isLastPage && typeof this.colorShuffle == "undefined") {
     55       var loader = document.getElementById("loader");
     56       if (loader) {
     57         var colorIndex = -1;
     58         this.colorShuffle = setInterval(function() {
     59           colorIndex = (colorIndex + 1) % colors.length;
     60           loader.className = colors[colorIndex];
     61         }, 600);
     62       }
     63     } else if (isLastPage && typeof this.colorShuffle != "undefined") {
     64       clearInterval(this.colorShuffle);
     65     }
     66   };
     67 }();
     68 
     69 // Add a listener to the "View Original" link to report opt-outs.
     70 document.getElementById('showOriginal').addEventListener('click', function(e) {
     71   var img = document.createElement('img');
     72   img.src = "/vieworiginal";
     73   img.style.display = "none";
     74   document.body.appendChild(img);
     75 }, true);
     76 
     77