- From: Michael Smith via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 11 Nov 2010 02:34:23 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec In directory hutz:/tmp/cvs-serv29062 Added Files: dfn.js styler.js toc.js Log Message: new --- NEW FILE: toc.js --- function filterToc(toc, callback) { var li = toc.firstChild; var allmatched = true; while (li) { if (li.nodeType == Node.ELEMENT_NODE) { var id = li.firstChild.hash.substr(1); var target = document.getElementById(id); var matched = false; while (target && !matched && target != document.body) { if (target.className == 'impl') matched = true; else target = target.parentNode; } if (matched) { li.className = 'impl'; } else { allmatched = false; var ol = li.getElementsByTagName('ol')[0]; if (ol) filterToc(ol); } } li = li.nextSibling; } if (allmatched) toc.className += ' impl'; } function initToc() { var ols = document.getElementsByTagName('ol'); var toc; for (var index = 0; index < ols.length; index += 1) { if (ols[index].className == 'toc') { toc = ols[index]; break; } } if (!toc) throw "Failed to find TOC"; // filter 'impl' bits filterToc(toc); if (toc.getElementsByTagName('ol').length < 10) return; // don't bother generating minitoc if there's not much to minify // generate short toc once it's done var newtoc = document.createElement('ol'); newtoc.className = 'brief toc'; var li = toc.firstChild; var id = 1; while (li) { if (li.nodeType == Node.ELEMENT_NODE) { var newli = document.createElement('li'); newli.className = li.className; var newa = li.firstChild.cloneNode(true); li.id = 'auto-toc-' + id; newa.href = '#auto-toc-' + id; newli.appendChild(newa); newtoc.appendChild(newli); id += 1; } li = li.nextSibling; } var scrollPos = scrollY; var originalTop = toc.offsetTop; toc.parentNode.insertBefore(newtoc, toc); var h3 = document.createElement('h3'); h3.textContent = 'Full table of contents'; toc.parentNode.insertBefore(h3, toc); if (scrollPos >= originalTop) scrollTo(scrollX, scrollPos + (toc.offsetTop - originalTop)); } // setup var tocTimer = new Date(); initToc(); if (getCookie('profile') == '1') document.getElementsByTagName('h2')[0].textContent += '; toc.js: ' + (new Date() - tocTimer) + 'ms'; --- NEW FILE: dfn.js --- // dfn.js // makes <dfn> elements link back to all uses of the term // no copyright is asserted on this file var dfnTimer = new Date(); var dfnMapTarget = -1; var dfnMapDone = false; var dfnMap = {}; function initDfn() { var links = []; dfnMapTarget = document.links.length; for (var i = 0; i < dfnMapTarget; i += 1) links[i] = document.links[i]; var k = 0; var n = 0; var initDfnInternal = function () { n += 1; var start = new Date(); while (k < dfnMapTarget) { if (links[k].hash.length > 1) { if (links[k].className != "no-backref" && links[k].parentNode.className != "no-backref") { var s = links[k].hash.substr(1); if (!(s in dfnMap)) dfnMap[s] = []; dfnMap[s].push(links[k]); } } k += 1; if (new Date() - start > 1000) { setTimeout(initDfnInternal, 10000); return; } } dfnMapDone = true; document.body.className += " dfnEnabled"; if (getCookie('profile') == '1') document.getElementsByTagName('h2')[0].textContent += '; dfn.js: ' + (new Date() - dfnTimer) + 'ms to do ' + dfnMapTarget + ' links in ' + n + ' loops'; } initDfnInternal(); } 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) { 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'; if (node.id) { var permalinkP = document.createElement('p'); var permalinkA = document.createElement('a'); permalinkA.href = '#' + node.id; permalinkA.textContent = '#' + node.id; permalinkP.appendChild(permalinkA); panel.appendChild(permalinkP); } 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) sourceLinks.push(dfnMap[node.id][i]); 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 = 'dfnReturnLink-' + 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) { if (node.nodeType == node.ELEMENT_NODE && node.tagName.match(/^H[1-6]$/)) { return node; } else if (!node.previousSibling) { node = node.parentNode; } else { node = node.previousSibling; if (node.nodeType == node.ELEMENT_NODE && node.className == "impl") { node = node.lastChild; } } } return null; } // setup (disabled for multipage copy) if (document.getElementById('head')) initDfn(); --- NEW FILE: styler.js --- function setStyleLink(link, style) { document.getElementById(link).disabled = link != style; if (link == style) document.getElementById(link + '-radio').checked = true; } function setStyle(style) { var date = new Date(); date.setFullYear(date.getFullYear() + 1); document.cookie = 'style=' + encodeURIComponent(style) + '; expires=' + date.toGMTString() + '; path=/'; setStyleLink('complete', style); setStyleLink('author', style); setStyleLink('highlight', style); } function initStyler() { var configUI = document.getElementById('configUI'); var stylesUI = document.createElement('p'); stylesUI.innerHTML = '<label><input type=radio name=styles id=complete-radio value=complete onchange=setStyle(value)> Normal view</label>' + '<label><input type=radio name=styles id=author-radio value=author onchange=setStyle(value)> Web dev view</label>' + '<label><input type=radio name=styles id=highlight-radio value=highlight onchange=setStyle(value)> Implementor view</label>' ; configUI.appendChild(stylesUI); // reset the style for webkit... XXX setStyleLink('complete', ''); setStyleLink('author', ''); setStyleLink('highlight', ''); // put the style back to whatever the user last selected var style = getCookie('style'); if (style != 'complete' && style != 'author' && style != 'highlight') style = 'complete'; setStyle(style); var hashChecker = function () { if (style != 'author') return; var s = document.location.hash.substr(1); if (s.length <= 0) return; var e = document.getElementById(s); if (!e) return; while (e && (e != document.body)) { if (getComputedStyle(e, '').display == 'none') { var path = location.pathname; var file = path.substr(path.lastIndexOf('/')+1); showAlert('The link you followed is only available in the complete version of the specification:', file + '?style=highlight#' + s); return; } e = e.parentNode; } }; window.addEventListener('hashchange', hashChecker, false); hashChecker(); } var stylerTimer = new Date(); initStyler(); if (getCookie('profile') == '1') document.getElementsByTagName('h2')[0].textContent += '; styler.js: ' + (new Date() - stylerTimer) + 'ms';
Received on Thursday, 11 November 2010 02:34:26 UTC