/[bfilter]/trunk/hide.js
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/hide.js

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 13 by dpavlin, Sat Sep 11 19:26:41 2004 UTC revision 18 by dpavlin, Mon Sep 13 11:01:22 2004 UTC
# Line 1  Line 1 
1  function hide_show(name)  /*
2  {          simple yet powerful implementation of show/hide effect
3          var el = eval("document.getElementById('"+name+"')");          with history navigation (back/forward/default)
4          if (el)  
5          {          Dobrica Pavlinusic <dpavlin@rot13.org> 2004-09-12
6    */
7    
8    var changed_display_ids = [];
9    var changed_display_pos = 0;
10    var id_cache = [];
11    
12    function element_id(id) {
13            if (id_cache[id]) {
14                    return id_cache[id];
15            } else {
16                    var el = document.getElementById(id);
17                    if (el) {
18                            id_cache[id] = el;
19                            return el;
20                    }
21            }
22    }
23    
24    function toggle_display(name,dont_save) {
25            var el = element_id(name);
26            if (el) {
27                  if (el.style.display=='none')                  if (el.style.display=='none')
28                          el.style.display = '';                          el.style.display = '';
29                  else                  else
30                          el.style.display = 'none';                          el.style.display = 'none';
31    
32                    if (! dont_save) changed_display_ids[changed_display_pos++] = name;
33          }          }
34    
35          return false;          return false;
36  }  }
37    
38    function default_display() {
39            if (changed_display_pos == 0) return;
40    
41            for (var i = 0; i < changed_display_pos; i++) {
42                    toggle_display( changed_display_ids[i], 1 );
43            }
44            changed_display_pos = 0;
45            return false;
46    }
47    
48    function back_display() {
49            if (changed_display_pos == 0) {
50                    alert("can't go back in history");
51                    return;
52            }
53            toggle_display( changed_display_ids[--changed_display_pos], 1 );
54    }
55    
56    function forward_display() {
57            if (changed_display_pos == changed_display_ids.length) {
58                    alert("can't go forward in history");
59                    return;
60            }
61    
62            toggle_display( changed_display_ids[changed_display_pos++], 1 );
63    }
64    
65    function reset_changed() {
66            changed_display_ids.length = 0;
67            changed_display_pos = 0;
68    }
69    
70    function set_display(name,display) {
71            var el = element_id(name);
72    
73            if (el) el.style.display = display
74            else alert("can't set_display("+name+","+display+")");
75    
76            return false;
77    }
78    
79    function show_display(show) {
80            for (var i = 0; i < show.length; i++) {
81                    set_display(show[i],'');
82            }
83            reset_changed();
84    }
85    
86    function hide_display(hide) {
87            for (var i = 0; i < hide.length; i++) {
88                    set_display(hide[i],'none');
89            }
90            reset_changed();
91    }
92    
93    function show_hide_display(show,hide) {
94            show_display(show);
95            hide_display(hide);
96    }
97    
98    function outline_display(name) {
99    
100            var el = element_id(name);
101    
102            if (el) {
103                    el.style.background = "#e0e0e0";
104                    el.style.border = "1px dashed #c0c0c0";
105    
106                    if (el.style.display=='none') toggle_display(el.id);
107    
108                    // recursivly show elements to root
109                    while (el.parentNode) {
110                            var el=el.parentNode;
111                            if (el.style && el.style.display=='none') toggle_display(el.id);
112                    }
113            }
114    }

Legend:
Removed from v.13  
changed lines
  Added in v.18

  ViewVC Help
Powered by ViewVC 1.1.26