aboutsummaryrefslogtreecommitdiffstats
path: root/data/lib/jumpNextBug.js
blob: f21f76a5f53136d9c9a33834f9e5c138a68d243c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// Released under the MIT/X11 license
// http://www.opensource.org/licenses/mit-license.php
/*global isInList */

(function createRelationElements() {
  "use strict";
  var relation = {}, key = null;
  var linkLabels = [
      "First", "Last", "Prev", "Next"
    ];
  var labelToRelation = {
    "First" : {
      rel : "start"
    },
    "Last" : {
      rel : "last"
    },
    "Prev" : {
      rel : "prev"
    },
    "Next" : {
      rel : "next"
    }
  };
  var nextRE = new RegExp("Next", "i");

  function createLinkRel(rel, href) {
    var newLinkElement = document.createElement("link");
    newLinkElement.setAttribute("rel", rel);
    newLinkElement.setAttribute("href", href);
    document.getElementsByTagName("head")[0]
      .appendChild(newLinkElement);
  }

  var aNavigElements = document
      .querySelectorAll("#bugzilla-body .navigation a");
  Array.forEach(aNavigElements, function (elem) {
    var labelText = elem.textContent.trim();
    if (isInList(labelText, linkLabels)) {
      labelToRelation[labelText].href = elem
        .getAttribute("href");

      if (nextRE.test(labelText)) {
        elem.setAttribute("accesskey", "n");
        elem.innerHTML = "<u>N</u>ext";
      }
    }
  });

  for (key in labelToRelation) {
    if (labelToRelation.hasOwnProperty(key)) {
      relation = labelToRelation[key];
      if (relation.href) {
        createLinkRel(relation.rel, relation.href);
      }
    }
  }
}());