PageRenderTime 39ms CodeModel.GetById 16ms app.highlight 19ms RepoModel.GetById 1ms app.codeStats 0ms

/apidocs/epydoc.js

http://echo-nest-remix.googlecode.com/
JavaScript | 293 lines | 249 code | 17 blank | 27 comment | 84 complexity | 98b84160a551d0307d142dff4ac77084 MD5 | raw file
  1function toggle_private() {
  2        // Search for any private/public links on this page.  Store
  3        // their old text in "cmd," so we will know what action to
  4        // take; and change their text to the opposite action.
  5        var cmd = "?";
  6        var elts = document.getElementsByTagName("a");
  7        for(var i=0; i<elts.length; i++) {
  8          if (elts[i].className == "privatelink") {
  9            cmd = elts[i].innerHTML;
 10            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
 11                                    "hide&nbsp;private":"show&nbsp;private");
 12          }
 13        }
 14        // Update all DIVs containing private objects.
 15        var elts = document.getElementsByTagName("div");
 16        for(var i=0; i<elts.length; i++) {
 17          if (elts[i].className == "private") {
 18            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
 19          }
 20          else if (elts[i].className == "public") {
 21            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
 22          }
 23        }
 24        // Update all table rows containing private objects.  Note, we
 25        // use "" instead of "block" becaue IE & firefox disagree on what
 26        // this should be (block vs table-row), and "" just gives the
 27        // default for both browsers.
 28        var elts = document.getElementsByTagName("tr");
 29        for(var i=0; i<elts.length; i++) {
 30          if (elts[i].className == "private") {
 31            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
 32          }
 33        }
 34        // Update all list items containing private objects.
 35        var elts = document.getElementsByTagName("li");
 36        for(var i=0; i<elts.length; i++) {
 37          if (elts[i].className == "private") {
 38            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
 39                                        "none":"");
 40          }
 41        }
 42        // Update all list items containing private objects.
 43        var elts = document.getElementsByTagName("ul");
 44        for(var i=0; i<elts.length; i++) {
 45          if (elts[i].className == "private") {
 46            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
 47          }
 48        }
 49        // Set a cookie to remember the current option.
 50        document.cookie = "EpydocPrivate="+cmd;
 51      }
 52function show_private() {
 53        var elts = document.getElementsByTagName("a");
 54        for(var i=0; i<elts.length; i++) {
 55          if (elts[i].className == "privatelink") {
 56            cmd = elts[i].innerHTML;
 57            if (cmd && cmd.substr(0,4)=="show")
 58                toggle_private();
 59          }
 60        }
 61      }
 62function getCookie(name) {
 63        var dc = document.cookie;
 64        var prefix = name + "=";
 65        var begin = dc.indexOf("; " + prefix);
 66        if (begin == -1) {
 67          begin = dc.indexOf(prefix);
 68          if (begin != 0) return null;
 69        } else
 70        { begin += 2; }
 71        var end = document.cookie.indexOf(";", begin);
 72        if (end == -1)
 73        { end = dc.length; }
 74        return unescape(dc.substring(begin + prefix.length, end));
 75      }
 76function setFrame(url1, url2) {
 77          parent.frames[1].location.href = url1;
 78          parent.frames[2].location.href = url2;
 79      }
 80function checkCookie() {
 81        var cmd=getCookie("EpydocPrivate");
 82        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
 83            toggle_private();
 84      }
 85function toggleCallGraph(id) {
 86        var elt = document.getElementById(id);
 87        if (elt.style.display == "none")
 88            elt.style.display = "block";
 89        else
 90            elt.style.display = "none";
 91      }
 92function expand(id) {
 93  var elt = document.getElementById(id+"-expanded");
 94  if (elt) elt.style.display = "block";
 95  var elt = document.getElementById(id+"-expanded-linenums");
 96  if (elt) elt.style.display = "block";
 97  var elt = document.getElementById(id+"-collapsed");
 98  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
 99  var elt = document.getElementById(id+"-collapsed-linenums");
100  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
101  var elt = document.getElementById(id+"-toggle");
102  if (elt) { elt.innerHTML = "-"; }
103}
104
105function collapse(id) {
106  var elt = document.getElementById(id+"-expanded");
107  if (elt) elt.style.display = "none";
108  var elt = document.getElementById(id+"-expanded-linenums");
109  if (elt) elt.style.display = "none";
110  var elt = document.getElementById(id+"-collapsed-linenums");
111  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
112  var elt = document.getElementById(id+"-toggle");
113  if (elt) { elt.innerHTML = "+"; }
114  var elt = document.getElementById(id+"-collapsed");
115  if (elt) {
116    elt.style.display = "block";
117    
118    var indent = elt.getAttribute("indent");
119    var pad = elt.getAttribute("pad");
120    var s = "<tt class='py-lineno'>";
121    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
122    s += "</tt>";
123    s += "&nbsp;&nbsp;<tt class='py-line'>";
124    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
125    s += "<a href='#' onclick='expand(\"" + id;
126    s += "\");return false'>...</a></tt><br />";
127    elt.innerHTML = s;
128  }
129}
130
131function toggle(id) {
132  elt = document.getElementById(id+"-toggle");
133  if (elt.innerHTML == "-")
134      collapse(id); 
135  else
136      expand(id);
137  return false;
138}
139
140function highlight(id) {
141  var elt = document.getElementById(id+"-def");
142  if (elt) elt.className = "py-highlight-hdr";
143  var elt = document.getElementById(id+"-expanded");
144  if (elt) elt.className = "py-highlight";
145  var elt = document.getElementById(id+"-collapsed");
146  if (elt) elt.className = "py-highlight";
147}
148
149function num_lines(s) {
150  var n = 1;
151  var pos = s.indexOf("\n");
152  while ( pos > 0) {
153    n += 1;
154    pos = s.indexOf("\n", pos+1);
155  }
156  return n;
157}
158
159// Collapse all blocks that mave more than `min_lines` lines.
160function collapse_all(min_lines) {
161  var elts = document.getElementsByTagName("div");
162  for (var i=0; i<elts.length; i++) {
163    var elt = elts[i];
164    var split = elt.id.indexOf("-");
165    if (split > 0)
166      if (elt.id.substring(split, elt.id.length) == "-expanded")
167        if (num_lines(elt.innerHTML) > min_lines)
168          collapse(elt.id.substring(0, split));
169  }
170}
171
172function expandto(href) {
173  var start = href.indexOf("#")+1;
174  if (start != 0 && start != href.length) {
175    if (href.substring(start, href.length) != "-") {
176      collapse_all(4);
177      pos = href.indexOf(".", start);
178      while (pos != -1) {
179        var id = href.substring(start, pos);
180        expand(id);
181        pos = href.indexOf(".", pos+1);
182      }
183      var id = href.substring(start, href.length);
184      expand(id);
185      highlight(id);
186    }
187  }
188}
189
190function kill_doclink(id) {
191  var parent = document.getElementById(id);
192  parent.removeChild(parent.childNodes.item(0));
193}
194function auto_kill_doclink(ev) {
195  if (!ev) var ev = window.event;
196  if (!this.contains(ev.toElement)) {
197    var parent = document.getElementById(this.parentID);
198    parent.removeChild(parent.childNodes.item(0));
199  }
200}
201
202function doclink(id, name, targets_id) {
203  var elt = document.getElementById(id);
204
205  // If we already opened the box, then destroy it.
206  // (This case should never occur, but leave it in just in case.)
207  if (elt.childNodes.length > 1) {
208    elt.removeChild(elt.childNodes.item(0));
209  }
210  else {
211    // The outer box: relative + inline positioning.
212    var box1 = document.createElement("div");
213    box1.style.position = "relative";
214    box1.style.display = "inline";
215    box1.style.top = 0;
216    box1.style.left = 0;
217  
218    // A shadow for fun
219    var shadow = document.createElement("div");
220    shadow.style.position = "absolute";
221    shadow.style.left = "-1.3em";
222    shadow.style.top = "-1.3em";
223    shadow.style.background = "#404040";
224    
225    // The inner box: absolute positioning.
226    var box2 = document.createElement("div");
227    box2.style.position = "relative";
228    box2.style.border = "1px solid #a0a0a0";
229    box2.style.left = "-.2em";
230    box2.style.top = "-.2em";
231    box2.style.background = "white";
232    box2.style.padding = ".3em .4em .3em .4em";
233    box2.style.fontStyle = "normal";
234    box2.onmouseout=auto_kill_doclink;
235    box2.parentID = id;
236
237    // Get the targets
238    var targets_elt = document.getElementById(targets_id);
239    var targets = targets_elt.getAttribute("targets");
240    var links = "";
241    target_list = targets.split(",");
242    for (var i=0; i<target_list.length; i++) {
243        var target = target_list[i].split("=");
244        links += "<li><a href='" + target[1] + 
245               "' style='text-decoration:none'>" +
246               target[0] + "</a></li>";
247    }
248  
249    // Put it all together.
250    elt.insertBefore(box1, elt.childNodes.item(0));
251    //box1.appendChild(box2);
252    box1.appendChild(shadow);
253    shadow.appendChild(box2);
254    box2.innerHTML =
255        "Which <b>"+name+"</b> do you want to see documentation for?" +
256        "<ul style='margin-bottom: 0;'>" +
257        links + 
258        "<li><a href='#' style='text-decoration:none' " +
259        "onclick='kill_doclink(\""+id+"\");return false;'>"+
260        "<i>None of the above</i></a></li></ul>";
261  }
262  return false;
263}
264
265function get_anchor() {
266          var href = location.href;
267          var start = href.indexOf("#")+1;
268          if ((start != 0) && (start != href.length))
269              return href.substring(start, href.length);
270      }
271function redirect_url(dottedName) {
272          // Scan through each element of the "pages" list, and check
273          // if "name" matches with any of them.
274          for (var i=0; i<pages.length; i++) {
275
276              // Each page has the form "<pagename>-m" or "<pagename>-c";
277              // extract the <pagename> portion & compare it to dottedName.
278              var pagename = pages[i].substring(0, pages[i].length-2);
279              if (pagename == dottedName.substring(0,pagename.length)) {
280
281                  // We've found a page that matches `dottedName`;
282                  // construct its URL, using leftover `dottedName`
283                  // content to form an anchor.
284                  var pagetype = pages[i].charAt(pages[i].length-1);
285                  var url = pagename + ((pagetype=="m")?"-module.html":
286                                                        "-class.html");
287                  if (dottedName.length > pagename.length)
288                      url += "#" + dottedName.substring(pagename.length+1,
289                                                        dottedName.length);
290                  return url;
291              }
292          }
293      }