/[colormatch]/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 3 - (show annotations)
Sat Oct 2 23:39:42 2004 UTC (19 years, 5 months ago) by dpavlin
File MIME type: application/javascript
File size: 2639 byte(s)
document.getElementById cache, show/hide news which are moved to bottom

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

  ViewVC Help
Powered by ViewVC 1.1.26