1 function nav_init (time_begin, time_end)
6 all_images = document.getElementsByTagName ("img");
7 for (i = 0; i < all_images.length; i++)
9 if (all_images[i].className != "graph_image")
12 all_images[i].navTimeBegin = new Number (time_begin);
13 all_images[i].navTimeEnd = new Number (time_end);
15 all_images[i].navBaseURL = all_images[i].src.replace (/;(begin|end)=[^;]*/g, '');
17 if (all_images[i].addEventListener) /* Mozilla */
18 all_images[i].addEventListener ('DOMMouseScroll', nav_handle_wheel,
19 false /* == bubbling */);
20 all_images[i].onmousewheel = nav_handle_wheel;
26 function nav_image_repaint (img)
28 if (!img || !img.navBaseURL
29 || !img.navTimeBegin || !img.navTimeEnd)
32 img.src = img.navBaseURL + ";"
33 + "begin=" + img.navTimeBegin.toFixed (0) + ";"
34 + "end=" + img.navTimeEnd.toFixed (0);
35 } /* nav_image_repaint */
37 function nav_time_reset (img_id ,diff)
41 img = document.getElementById (img_id);
45 img.navTimeEnd = new Number ((new Date ()).getTime () / 1000);
46 img.navTimeBegin = new Number (img.navTimeEnd - diff);
48 nav_image_repaint (img);
53 function nav_time_change_obj (img, factor_begin, factor_end)
60 if (!img.navTimeEnd || !img.navTimeBegin)
63 diff = img.navTimeEnd - img.navTimeBegin;
65 /* Prevent zooming in if diff is less than five minutes */
66 if ((diff <= 300) && (factor_begin > 0.0) && (factor_end < 0.0))
69 img.navTimeBegin += (diff * factor_begin);
70 img.navTimeEnd += (diff * factor_end);
72 img.src = img.navBaseURL + ";"
73 + "begin=" + img.navTimeBegin.toFixed (0) + ";"
74 + "end=" + img.navTimeEnd.toFixed (0);
77 } /* nav_time_change */
79 function nav_time_change (img_id, factor_begin, factor_end)
87 all_images = document.getElementsByTagName ("img");
88 for (i = 0; i < all_images.length; i++)
90 if (all_images[i].className != "graph_image")
93 nav_time_change_obj (all_images[i], factor_begin, factor_end);
100 img = document.getElementById (img_id);
104 nav_time_change_obj (img, factor_begin, factor_end);
108 } /* nav_time_change */
110 function nav_move_earlier (img_id)
112 return (nav_time_change (img_id, -0.2, -0.2));
113 } /* nav_move_earlier */
115 function nav_move_later (img_id)
117 return (nav_time_change (img_id, +0.2, +0.2));
118 } /* nav_move_later */
120 function nav_zoom_in (img_id)
122 return (nav_time_change (img_id, +0.2, -0.2));
125 function nav_zoom_out (img_id)
127 return (nav_time_change (img_id, (-1.0 / 3.0), (1.0 / 3.0)));
130 function nav_recenter (e)
141 if (!img || (img.className != "graph_image")
142 || !img.navTimeBegin || !img.navTimeEnd)
145 width = img.width - 97;
148 if (!x || (x < 0) || (x > width))
152 if (!y || (y < 35) || (y > 135))
155 diff = img.navTimeEnd - img.navTimeBegin;
157 time_old_center = img.navTimeBegin + (diff / 2.0);
158 time_new_center = img.navTimeBegin + (x * diff / width);
160 img.navTimeBegin += (time_new_center - time_old_center);
161 img.navTimeEnd += (time_new_center - time_old_center);
164 function nav_handle_dblclick (e)
173 if (!img || (img.className != "graph_image")
174 || !img.navTimeBegin || !img.navTimeEnd)
178 nav_image_repaint (img);
180 // e.returnValue = false;
181 } /* nav_handle_dblclick */
183 /* Taken from <http://adomas.org/javascript-mouse-wheel/> */
184 function nav_handle_wheel (e)
194 if (!img || (img.className != "graph_image")
195 || !img.navTimeBegin || !img.navTimeEnd)
201 delta = e.wheelDelta;
203 delta = delta * (-1);
207 delta = e.detail * (-1);
215 nav_zoom_in (img.id);
217 nav_zoom_out (img.id);
219 if (e.preventDefault)
221 e.returnValue = false;
222 } /* function nav_handle_wheel */
224 /* vim: set sw=2 sts=2 et : */