| function toggle_private() { | |
| // Search for any private/public links on this page. Store | |
| // their old text in "cmd," so we will know what action to | |
| // take; and change their text to the opposite action. | |
| var cmd = "?"; | |
| var elts = document.getElementsByTagName("a"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "privatelink") { | |
| cmd = elts[i].innerHTML; | |
| elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")? | |
| "hide private":"show private"); | |
| } | |
| } | |
| // Update all DIVs containing private objects. | |
| var elts = document.getElementsByTagName("div"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "private") { | |
| elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); | |
| } | |
| else if (elts[i].className == "public") { | |
| elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none"); | |
| } | |
| } | |
| // Update all table rows containing private objects. Note, we | |
| // use "" instead of "block" becaue IE & firefox disagree on what | |
| // this should be (block vs table-row), and "" just gives the | |
| // default for both browsers. | |
| var elts = document.getElementsByTagName("tr"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "private") { | |
| elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":""); | |
| } | |
| } | |
| // Update all list items containing private objects. | |
| var elts = document.getElementsByTagName("li"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "private") { | |
| elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")? | |
| "none":""); | |
| } | |
| } | |
| // Update all list items containing private objects. | |
| var elts = document.getElementsByTagName("ul"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "private") { | |
| elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block"); | |
| } | |
| } | |
| // Set a cookie to remember the current option. | |
| document.cookie = "EpydocPrivate="+cmd; | |
| } | |
| function show_private() { | |
| var elts = document.getElementsByTagName("a"); | |
| for(var i=0; i<elts.length; i++) { | |
| if (elts[i].className == "privatelink") { | |
| cmd = elts[i].innerHTML; | |
| if (cmd && cmd.substr(0,4)=="show") | |
| toggle_private(); | |
| } | |
| } | |
| } | |
| function getCookie(name) { | |
| var dc = document.cookie; | |
| var prefix = name + "="; | |
| var begin = dc.indexOf("; " + prefix); | |
| if (begin == -1) { | |
| begin = dc.indexOf(prefix); | |
| if (begin != 0) return null; | |
| } else | |
| { begin += 2; } | |
| var end = document.cookie.indexOf(";", begin); | |
| if (end == -1) | |
| { end = dc.length; } | |
| return unescape(dc.substring(begin + prefix.length, end)); | |
| } | |
| function setFrame(url1, url2) { | |
| parent.frames[1].location.href = url1; | |
| parent.frames[2].location.href = url2; | |
| } | |
| function checkCookie() { | |
| var cmd=getCookie("EpydocPrivate"); | |
| if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0) | |
| toggle_private(); | |
| } | |
| function toggleCallGraph(id) { | |
| var elt = document.getElementById(id); | |
| if (elt.style.display == "none") | |
| elt.style.display = "block"; | |
| else | |
| elt.style.display = "none"; | |
| } | |
| function expand(id) { | |
| var elt = document.getElementById(id+"-expanded"); | |
| if (elt) elt.style.display = "block"; | |
| var elt = document.getElementById(id+"-expanded-linenums"); | |
| if (elt) elt.style.display = "block"; | |
| var elt = document.getElementById(id+"-collapsed"); | |
| if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } | |
| var elt = document.getElementById(id+"-collapsed-linenums"); | |
| if (elt) { elt.innerHTML = ""; elt.style.display = "none"; } | |
| var elt = document.getElementById(id+"-toggle"); | |
| if (elt) { elt.innerHTML = "-"; } | |
| } | |
| function collapse(id) { | |
| var elt = document.getElementById(id+"-expanded"); | |
| if (elt) elt.style.display = "none"; | |
| var elt = document.getElementById(id+"-expanded-linenums"); | |
| if (elt) elt.style.display = "none"; | |
| var elt = document.getElementById(id+"-collapsed-linenums"); | |
| if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; } | |
| var elt = document.getElementById(id+"-toggle"); | |
| if (elt) { elt.innerHTML = "+"; } | |
| var elt = document.getElementById(id+"-collapsed"); | |
| if (elt) { | |
| elt.style.display = "block"; | |
| var indent = elt.getAttribute("indent"); | |
| var pad = elt.getAttribute("pad"); | |
| var s = "<tt class='py-lineno'>"; | |
| for (var i=0; i<pad.length; i++) { s += " " } | |
| s += "</tt>"; | |
| s += " <tt class='py-line'>"; | |
| for (var i=0; i<indent.length; i++) { s += " " } | |
| s += "<a href='#' onclick='expand(\"" + id; | |
| s += "\");return false'>...</a></tt><br />"; | |
| elt.innerHTML = s; | |
| } | |
| } | |
| function toggle(id) { | |
| elt = document.getElementById(id+"-toggle"); | |
| if (elt.innerHTML == "-") | |
| collapse(id); | |
| else | |
| expand(id); | |
| return false; | |
| } | |
| function highlight(id) { | |
| var elt = document.getElementById(id+"-def"); | |
| if (elt) elt.className = "py-highlight-hdr"; | |
| var elt = document.getElementById(id+"-expanded"); | |
| if (elt) elt.className = "py-highlight"; | |
| var elt = document.getElementById(id+"-collapsed"); | |
| if (elt) elt.className = "py-highlight"; | |
| } | |
| function num_lines(s) { | |
| var n = 1; | |
| var pos = s.indexOf("\n"); | |
| while ( pos > 0) { | |
| n += 1; | |
| pos = s.indexOf("\n", pos+1); | |
| } | |
| return n; | |
| } | |
| // Collapse all blocks that mave more than `min_lines` lines. | |
| function collapse_all(min_lines) { | |
| var elts = document.getElementsByTagName("div"); | |
| for (var i=0; i<elts.length; i++) { | |
| var elt = elts[i]; | |
| var split = elt.id.indexOf("-"); | |
| if (split > 0) | |
| if (elt.id.substring(split, elt.id.length) == "-expanded") | |
| if (num_lines(elt.innerHTML) > min_lines) | |
| collapse(elt.id.substring(0, split)); | |
| } | |
| } | |
| function expandto(href) { | |
| var start = href.indexOf("#")+1; | |
| if (start != 0 && start != href.length) { | |
| if (href.substring(start, href.length) != "-") { | |
| collapse_all(4); | |
| pos = href.indexOf(".", start); | |
| while (pos != -1) { | |
| var id = href.substring(start, pos); | |
| expand(id); | |
| pos = href.indexOf(".", pos+1); | |
| } | |
| var id = href.substring(start, href.length); | |
| expand(id); | |
| highlight(id); | |
| } | |
| } | |
| } | |
| function kill_doclink(id) { | |
| var parent = document.getElementById(id); | |
| parent.removeChild(parent.childNodes.item(0)); | |
| } | |
| function auto_kill_doclink(ev) { | |
| if (!ev) var ev = window.event; | |
| if (!this.contains(ev.toElement)) { | |
| var parent = document.getElementById(this.parentID); | |
| parent.removeChild(parent.childNodes.item(0)); | |
| } | |
| } | |
| function doclink(id, name, targets_id) { | |
| var elt = document.getElementById(id); | |
| // If we already opened the box, then destroy it. | |
| // (This case should never occur, but leave it in just in case.) | |
| if (elt.childNodes.length > 1) { | |
| elt.removeChild(elt.childNodes.item(0)); | |
| } | |
| else { | |
| // The outer box: relative + inline positioning. | |
| var box1 = document.createElement("div"); | |
| box1.style.position = "relative"; | |
| box1.style.display = "inline"; | |
| box1.style.top = 0; | |
| box1.style.left = 0; | |
| // A shadow for fun | |
| var shadow = document.createElement("div"); | |
| shadow.style.position = "absolute"; | |
| shadow.style.left = "-1.3em"; | |
| shadow.style.top = "-1.3em"; | |
| shadow.style.background = "#404040"; | |
| // The inner box: absolute positioning. | |
| var box2 = document.createElement("div"); | |
| box2.style.position = "relative"; | |
| box2.style.border = "1px solid #a0a0a0"; | |
| box2.style.left = "-.2em"; | |
| box2.style.top = "-.2em"; | |
| box2.style.background = "white"; | |
| box2.style.padding = ".3em .4em .3em .4em"; | |
| box2.style.fontStyle = "normal"; | |
| box2.onmouseout=auto_kill_doclink; | |
| box2.parentID = id; | |
| // Get the targets | |
| var targets_elt = document.getElementById(targets_id); | |
| var targets = targets_elt.getAttribute("targets"); | |
| var links = ""; | |
| target_list = targets.split(","); | |
| for (var i=0; i<target_list.length; i++) { | |
| var target = target_list[i].split("="); | |
| links += "<li><a href='" + target[1] + | |
| "' style='text-decoration:none'>" + | |
| target[0] + "</a></li>"; | |
| } | |
| // Put it all together. | |
| elt.insertBefore(box1, elt.childNodes.item(0)); | |
| //box1.appendChild(box2); | |
| box1.appendChild(shadow); | |
| shadow.appendChild(box2); | |
| box2.innerHTML = | |
| "Which <b>"+name+"</b> do you want to see documentation for?" + | |
| "<ul style='margin-bottom: 0;'>" + | |
| links + | |
| "<li><a href='#' style='text-decoration:none' " + | |
| "onclick='kill_doclink(\""+id+"\");return false;'>"+ | |
| "<i>None of the above</i></a></li></ul>"; | |
| } | |
| return false; | |
| } | |
| function get_anchor() { | |
| var href = location.href; | |
| var start = href.indexOf("#")+1; | |
| if ((start != 0) && (start != href.length)) | |
| return href.substring(start, href.length); | |
| } | |
| function redirect_url(dottedName) { | |
| // Scan through each element of the "pages" list, and check | |
| // if "name" matches with any of them. | |
| for (var i=0; i<pages.length; i++) { | |
| // Each page has the form "<pagename>-m" or "<pagename>-c"; | |
| // extract the <pagename> portion & compare it to dottedName. | |
| var pagename = pages[i].substring(0, pages[i].length-2); | |
| if (pagename == dottedName.substring(0,pagename.length)) { | |
| // We've found a page that matches `dottedName`; | |
| // construct its URL, using leftover `dottedName` | |
| // content to form an anchor. | |
| var pagetype = pages[i].charAt(pages[i].length-1); | |
| var url = pagename + ((pagetype=="m")?"-module.html": | |
| "-class.html"); | |
| if (dottedName.length > pagename.length) | |
| url += "#" + dottedName.substring(pagename.length+1, | |
| dottedName.length); | |
| return url; | |
| } | |
| } | |
| } |