| 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; |
| } |
| } |
| } |