html5/markup/images/js dfn.js,NONE,1.1

Update of /sources/public/html5/markup/images/js
In directory hutz:/tmp/cvs-serv14032/js

Added Files:
	dfn.js 
Log Message:
new

--- NEW FILE: dfn.js ---
// dfn.js - makes <dfn> elements link back to all uses of the term.
// Modified from source at:
//   http://www.whatwg.org/specs/web-apps/current-work/dfn.js
// No copyright is asserted on that file nor on this modified version.

var dfnMapTarget = -1;
var dfnMapDone = 0;
var dfnMap = {};
document.addEventListener('DOMContentLoaded', function (event) {
  var links = [];
  dfnMapTarget = document.links.length;
  for (var i = 0; i < dfnMapTarget; i += 1)
    links[i] = document.links[i];
  var inc = 100;
  for (var i = 0; i < dfnMapTarget; i += inc) {
    setTimeout(function (j) {
      for (var k = j; k < j+inc && k < dfnMapTarget; k += 1) {
        if (links[k].href.indexOf('#') >= 0) {
          if (links[k].className != "no-backref" &&
              links[k].parentNode.className != "no-backref") {
            var s = links[k].href.substr(links[k].href.indexOf('#') + 1);
            if (!(s in dfnMap))
              dfnMap[s] = [];
            dfnMap[s].push(links[k]);
          }
        }
        dfnMapDone += 1;
      }
    }, 0, i);
  }
  document.body.className += " dfnEnabled";
}, false);

var dfnPanel;
var dfnUniqueId = 0;
var dfnTimeout;
document.addEventListener('click', dfnShow, false);
function dfnShow(event) {
  if (dfnTimeout) {
    clearTimeout(dfnTimeout);
    dfnTimeout = null;
  }
  if (dfnPanel) {
    dfnPanel.parentNode.removeChild(dfnPanel);
    dfnPanel = null;
  }
  if (dfnMapDone == dfnMapTarget) {
    var node = event.target;
    while (node && (node.nodeType != event.target.ELEMENT_NODE || node.tagName != "DFN"))
      node = node.parentNode;
    if (node) {
      var panel = document.createElement('div');
      panel.className = 'dfnPanel';
      var p = document.createElement('p');
      panel.appendChild(p);
      if (node.id in dfnMap || node.parentNode.id in dfnMap) {
        p.textContent = 'Referenced in:';
        var ul = document.createElement('ul');
        var lastHeader;
        var lastLi;
        var n;
        var sourceLinks = [];
        if (node.id in dfnMap)
          for (var i = 0; i < dfnMap[node.id].length; i += 1) {
            if (dfnMap[node.id][i].textContent != "#") {
              sourceLinks.push(dfnMap[node.id][i]);
            }
          }
        if (sourceLinks.length == 0)
          p.textContent = 'No references in this file.';
        if (node.parentNode.id in dfnMap)
          for (var i = 0; i < dfnMap[node.parentNode.id].length; i += 1)
            sourceLinks.push(dfnMap[node.parentNode.id][i]);
        for (var i = 0; i < sourceLinks.length; i += 1) {
          var link = sourceLinks[i];
          var header = dfnGetCaption(link);
          var a = document.createElement('a');
          if (!link.id)
            link.id = 'DYNAMICALLY_GENERATED_FRAGMENT_ID_DO_NOT_BOOKMARK-' + dfnUniqueId++;
          a.href = '#' + link.id;
          if (header != lastHeader) {
            lastHeader = header;
            n = 1;
            var li = document.createElement('li');
            var cloneHeader = header.cloneNode(true);
            while (cloneHeader.hasChildNodes())
              a.appendChild(cloneHeader.firstChild);
            lastLi = li;
            li.appendChild(a);
            ul.appendChild(li);
          } else {
            n += 1;
            a.appendChild(document.createTextNode('(' + n + ')'));
            lastLi.appendChild(document.createTextNode(' '));
            lastLi.appendChild(a);
          }
        }
        panel.appendChild(ul);
      } else {
        p.textContent = 'No references in this file.';
      }
      node.appendChild(panel);
      dfnPanel = panel;
    }
  } else {
    dfnTimeout = setTimeout(dfnShow, 250, event);
  }
}

function dfnGetCaption(link) {
  var node = link;
  while (node && node.getAttribute('class')!= "section") {
    node = node.parentNode;
    if (node.tagName == "DIV" && node.getAttribute('class') == "section") {
      return node.childNodes[1];
    }
  }
}

Received on Thursday, 4 March 2010 17:25:12 UTC