/[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

Annotation of /trunk/hide.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 18 - (hide annotations)
Mon Sep 13 11:01:22 2004 UTC (19 years, 7 months ago) by dpavlin
File MIME type: application/javascript
File size: 2262 byte(s)
fixes and improvement. Now it (should) be 100% correct

1 dpavlin 16 /*
2     simple yet powerful implementation of show/hide effect
3     with history navigation (back/forward/default)
4    
5     Dobrica Pavlinusic <dpavlin@rot13.org> 2004-09-12
6     */
7    
8 dpavlin 15 var changed_display_ids = [];
9     var changed_display_pos = 0;
10 dpavlin 16 var id_cache = [];
11 dpavlin 15
12 dpavlin 16 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 dpavlin 15 function toggle_display(name,dont_save) {
25 dpavlin 16 var el = element_id(name);
26 dpavlin 14 if (el) {
27 dpavlin 13 if (el.style.display=='none')
28     el.style.display = '';
29     else
30     el.style.display = 'none';
31 dpavlin 15
32     if (! dont_save) changed_display_ids[changed_display_pos++] = name;
33 dpavlin 13 }
34    
35     return false;
36     }
37 dpavlin 14
38 dpavlin 16 function default_display() {
39 dpavlin 18 if (changed_display_pos == 0) return;
40    
41     for (var i = 0; i < changed_display_pos; i++) {
42 dpavlin 15 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 dpavlin 16 function reset_changed() {
66     changed_display_ids.length = 0;
67     changed_display_pos = 0;
68     }
69 dpavlin 15
70 dpavlin 14 function set_display(name,display) {
71 dpavlin 16 var el = element_id(name);
72 dpavlin 14
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 dpavlin 16 reset_changed();
84 dpavlin 14 }
85    
86     function hide_display(hide) {
87     for (var i = 0; i < hide.length; i++) {
88     set_display(hide[i],'none');
89     }
90 dpavlin 16 reset_changed();
91 dpavlin 14 }
92    
93     function show_hide_display(show,hide) {
94     show_display(show);
95     hide_display(hide);
96     }
97 dpavlin 17
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 dpavlin 18 if (el.style && el.style.display=='none') toggle_display(el.id);
112 dpavlin 17 }
113     }
114     }

  ViewVC Help
Powered by ViewVC 1.1.26