/[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 20 by dpavlin, Mon Sep 13 13:33:12 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    var debug_on = true;
13    function debug(text) {
14            if (debug_on) debug_on = confirm(text);
15    }
16    
17    function element_id(id) {
18            if (id_cache[id]) {
19                    //debug("from cache "+id+" == "+id_cache[id]);
20                    return id_cache[id];
21            } else {
22                    var el = self.document.getElementById(id);
23                    //debug("getElementById("+id+") == "+el);
24                    if (el) {
25                            id_cache[id] = el;
26                            return el;
27                    }
28                    //} else debug("can't find element "+id);
29            }
30            return null;
31    }
32    
33    function toggle_display(name,dont_save) {
34            var el = element_id(name);
35            if (el) {
36                    //debug("toggle "+name+" == "+el.id+" current: '"+el.style.display+"'");
37    
38                  if (el.style.display=='none')                  if (el.style.display=='none')
39                          el.style.display = '';                          el.style.display = '';
40                  else                  else
41                          el.style.display = 'none';                          el.style.display = 'none';
42    
43                    if (! dont_save) changed_display_ids[changed_display_pos++] = name;
44            }
45    
46            return false;
47    }
48    
49    function default_display() {
50            if (changed_display_pos == 0) return null;
51    
52            for (var i = 0; i < changed_display_pos; i++) {
53                    toggle_display( changed_display_ids[i], 1 );
54            }
55            changed_display_pos = 0;
56            return false;
57    }
58    
59    function back_display() {
60            if (changed_display_pos == 0) {
61                    alert("can't go back in history");
62                    return;
63            }
64            toggle_display( changed_display_ids[--changed_display_pos], 1 );
65    }
66    
67    function forward_display() {
68            if (changed_display_pos == changed_display_ids.length) {
69                    alert("can't go forward in history");
70                    return;
71          }          }
72    
73            toggle_display( changed_display_ids[changed_display_pos++], 1 );
74    }
75    
76    function reset_changed() {
77            changed_display_ids.length = 0;
78            changed_display_pos = 0;
79    }
80    
81    function set_display(name,display) {
82            var el = element_id(name);
83    
84            if (el) el.style.display = display
85            else alert("can't set_display("+name+","+display+")");
86    
87          return false;          return false;
88  }  }
89    
90    function show_display(show) {
91            for (var i = 0; i < show.length; i++) {
92                    set_display(show[i],'');
93            }
94            reset_changed();
95    }
96    
97    function hide_display(hide) {
98            for (var i = 0; i < hide.length; i++) {
99                    set_display(hide[i],'none');
100            }
101            reset_changed();
102    }
103    
104    function show_hide_display(show,hide) {
105            show_display(show);
106            hide_display(hide);
107    }
108    
109    function outline_display(name) {
110    
111            var el = element_id(name);
112    
113            if (el) {
114                    el.style.backgroundColor = "#e0e0e0";
115                    el.style.border = "1px dashed #c0c0c0";
116    
117                    if (el.style.display=='none') toggle_display(el.id);
118    
119                    // recursivly show elements to root
120                    while (el.parentNode) {
121                            el=el.parentNode;
122                            if (el.style && el.style.display=='none') toggle_display(el.id);
123                    }
124            }
125    }

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

  ViewVC Help
Powered by ViewVC 1.1.26