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

Contents of /trunk/hide.js

Parent Directory Parent Directory | Revision Log Revision Log


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

1 /*
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 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')
28 el.style.display = '';
29 else
30 el.style.display = 'none';
31
32 if (! dont_save) changed_display_ids[changed_display_pos++] = name;
33 }
34
35 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 }

  ViewVC Help
Powered by ViewVC 1.1.26