1 var browserType;
2 var firefoxType;
4 if (document.layers) {browserType = "nn4"}
5 if (document.all) {browserType = "ie"}
6 if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko"}
7 if (browserType=="gecko" && window.navigator.userAgent.toLowerCase().match("firefox\/2")) {firefoxType= "firefox2"}
8 else {firefoxType= "firefox"};
10 netscape = "";
11 ver= navigator.appVersion; len = ver.length;
13 for (iln = 0; iln < len; iln++){
14 if (ver.charAt(iln) == "("){
15 break;
16 }
17 }
18 netscape= (ver.charAt(iln+1).toUpperCase() != "C");
21 /* Toggle checkbox that matches regex */
22 function chk_set_all(regex,value)
23 {
24 for (var i = 0; i < document.mainform.elements.length; i++) {
25 var _id=document.mainform.elements[i].id;
26 if(_id.match(regex)) {
27 document.getElementById(_id).checked= value;
28 }
29 }
30 }
33 function toggle_all_(regex,state_object)
34 {
35 state = document.getElementById(state_object).checked;
36 chk_set_all(regex, state);
37 }
40 function scrollDown() {
41 document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
42 timeout= setTimeout("scrollDown()", 500);
43 }
45 /* Scroll down the body frame */
46 function scrollDown2()
47 {
48 document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
49 }
52 /* Toggle checkbox that matches regex */
53 function acl_set_all(regex,value)
54 {
55 for (var i = 0; i < document.mainform.elements.length; i++) {
56 var _id=document.mainform.elements[i].id;
57 if(_id.match(regex)) {
58 document.getElementById(_id).checked= value;
59 }
60 }
61 }
63 /* Toggle checkbox that matches regex */
64 function acl_toggle_all(regex)
65 {
66 for (var i = 0; i < document.mainform.elements.length; i++) {
67 var _id=document.mainform.elements[i].id;
68 if(_id.match(regex)) {
69 if (document.getElementById(_id).checked == true){
70 document.getElementById(_id).checked= false;
71 } else {
72 document.getElementById(_id).checked= true;
73 }
74 }
75 }
76 }
79 var enable_keyPress = true;
80 function keyPress(DnEvents) {
82 /* We are forced to skip this Keyboard input filtering
83 * (enable_keyPress was set to false in the HTML content)
84 */
85 if(!enable_keyPress) return;
87 // determines whether Netscape or Internet Explorer
88 k = (netscape) ? DnEvents.keyCode : window.event.keyCode;
89 if (k == 13) { // enter key pressed
90 if(typeof(nextfield)!='undefined') {
91 if(nextfield == 'login') {
92 return true; // submit, we finished all fields
93 } else { // we are not done yet, send focus to next box
94 eval('document.mainform.' + nextfield + '.focus()');
95 return false;
96 }
97 } else {
98 if(netscape) {
99 if(DnEvents.target.type == 'textarea') {
100 return true;
101 } else if (DnEvents.target.type != 'submit') {
102 // TAB
103 var thisfield = document.getElementById(DnEvents.target.id);
104 for (i = 0; i < document.forms[0].elements.length; i++) {
105 if(document.forms[0].elements[i].id==thisfield.id) {
106 // Last form element on page?
107 if(i!=document.forms[0].elements.length-1) {
108 document.forms[0].elements[i+1].focus();
109 }
110 }
111 }
112 return false;
113 } else {
114 return true;
115 }
116 // Check for konqueror
117 } else if(document.clientWidth) {
118 // do nothing ATM
119 } else {
120 if(window.event.srcElement.type == 'textarea') {
121 return true;
122 } else if (window.event.srcElement.type != 'submit') {
123 // TAB
124 var thisfield = document.getElementById(window.event.srcElement.id);
125 for (i = 0; i < document.forms[0].elements.length; i++) {
126 if(document.forms[0].elements[i].id==thisfield.id) {
127 // Last form element on page?
128 if(i!=document.forms[0].elements.length-1) {
129 document.forms[0].elements[i+1].focus();
130 }
131 }
132 }
133 return false;
134 } else {
135 return true;
136 }
137 }
138 }
139 } else if (k==9) {
140 // Tab key pressed
141 if(netscape) {
142 if(DnEvents.target.type == 'textarea') {
143 document.getElementById(DnEvents.target.id).value+="\t";
144 return false;
145 }
146 // Check for konqueror
147 } else if(document.clientWidth) {
148 // do nothing ATM
149 } else {
150 if(window.event.srcElement.type == 'textarea') {
151 document.getElementById(window.event.srcElement.id).value+="\t";
152 return false;
153 }
154 }
155 }
156 }
158 function changeState(myField) {
159 if(document.getElementById(myField) != null){
160 document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
161 }
162 }
164 function setHidden(str) {
165 type = document.getElementById(str).style.display;
166 if((type=='')||(type=='block')) {
167 document.getElementById(str).style.display='none';
168 }else{
169 document.getElementById(str).style.display='block';
170 }
171 }
172 function changeSelectState(triggerField, myField) {
173 if (document.getElementById(triggerField).value != 2){
174 document.getElementById(myField).disabled= true;
175 } else {
176 document.getElementById(myField).disabled= false;
177 }
178 }
180 function changeSubselectState(triggerField, myField) {
181 if (document.getElementById(triggerField).checked == true){
182 document.getElementById(myField).disabled= false;
183 } else {
184 document.getElementById(myField).disabled= true;
185 }
186 }
188 function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) {
189 if (
190 document.getElementById(firstTriggerField).checked == true &&
191 document.getElementById(secondTriggerField).checked == true){
192 document.getElementById(myField).disabled= false;
193 } else {
194 document.getElementById(myField).disabled= true;
195 }
196 }
198 <!-- Second field must be non-checked -->
199 function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) {
200 if (
201 document.getElementById(firstTriggerField).checked == true &&
202 document.getElementById(secondTriggerField).checked == false){
203 document.getElementById(myField).disabled= false;
204 } else {
205 document.getElementById(myField).disabled= true;
206 }
207 }
208 // work together to analyze keystrokes
209 if (netscape){
210 if(firefoxType== "firefox") {
211 window.captureEvents(Event.KEYPRESS);
212 }
213 window.onkeypress= keyPress;
214 } else {
215 document.onkeydown= keyPress;
216 }
218 function hide(element) {
219 if (browserType == "gecko" )
220 document.poppedLayer = document.getElementById(element);
221 else if (browserType == "ie")
222 document.poppedLayer = document.all[element];
223 else
224 document.poppedLayer = document.layers[element];
225 document.poppedLayer.style.visibility = "hidden";
226 }
228 function show(element) {
229 if (browserType == "gecko" )
230 document.poppedLayer = document.getElementById(element);
231 else if (browserType == "ie")
232 document.poppedLayer = document.all[element];
233 else
234 document.poppedLayer = document.layers[element];
235 document.poppedLayer.style.visibility = "visible";
236 }
238 function toggle(element) {
239 if (browserType == "gecko" )
240 document.poppedLayer = document.getElementById(element);
241 else if (browserType == "ie")
242 document.poppedLayer = document.all[element];
243 else
244 document.poppedLayer = document.layers[element];
246 if (document.poppedLayer.style.visibility == "visible") {
247 hide (element);
248 } else {
249 show (element);
250 }
251 }
253 function popup(target, name) {
254 var mypopup=
255 window.open(
256 target,
257 name,
258 "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes"
259 );
260 mypopup.focus();
261 return false;
262 }
264 function js_check(form) {
265 form.javascript.value = 'true';
266 }
268 function divtoggle(element) {
269 var cell;
270 var cellname="tr_"+(element);
272 if (browserType == "gecko" ) {
273 document.poppedLayer = document.getElementById(element);
274 cell= document.getElementById(cellname);
276 if (document.poppedLayer.style.visibility == "visible") {
277 hide (element);
278 cell.style.height="0px";
279 document.poppedLayer.style.height="0px";
280 } else {
281 show (element);
282 document.poppedLayer.style.height="";
283 if(document.defaultView) {
284 cell.style.height=document.defaultView.getComputedStyle(document.poppedLayer,"").getPropertyValue('height');
285 }
286 }
287 } else if (browserType == "ie") {
288 document.poppedLayer = document.getElementById(element);
289 cell= document.getElementById(cellname);
290 if (document.poppedLayer.style.visibility == "visible") {
291 hide (element);
292 cell.style.height="0px";
293 document.poppedLayer.style.height="0px";
294 document.poppedLayer.style.position="absolute";
295 } else {
296 show (element);
297 cell.style.height="";
298 document.poppedLayer.style.height="";
299 document.poppedLayer.style.position="relative";
300 }
301 }
302 }
304 function adjust (e) {
305 adjust_height(e);
306 adjust_width(e);
307 }
309 // Automatic resize (height) of divlists
310 function adjust_height(e) {
311 if (!e) e=window.event;
312 if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
313 var inner_height= window.innerHeight;
314 var min_height= 450;
315 var px_height= min_height;
316 var suggested= px_height;
318 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
319 if(document.defaultView) {
320 var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
322 // Minimum height for divlist should be the bottom edge of the menu
323 min_height= menu_height-197;
324 suggested= min_height;
325 if((inner_height-230)-suggested>0) {
326 suggested= inner_height-230;
327 }
329 // IE uses other height specifications
330 } else if (browserType == "ie") {
331 suggested= document.all.menucell.offsetHeight;
332 offset= absTop(d_scrollbody);
333 suggested-= offset;
334 if((inner_height-230)-suggested>0) {
335 suggested= inner_height-230;
336 }
337 }
339 /* Reduce height if a list footer is set */
340 if(document.getElementById("t_scrollfoot")){
341 suggested = suggested -20;
342 }
344 document.getElementById("d_scrollbody").style.height=suggested+"px";
345 }
346 return true;
347 }
349 function absTop(e) {
350 return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop;
351 }
353 // Automatic resize (width) of divlists
354 function adjust_width(e)
355 {
357 /* Get event ... it seems to be unused here ...*/
358 if (!e) {
359 e=window.event;
360 }
362 // Known to not work with IE
363 if(document.defaultView && document.getElementById("t_scrolltable")) {
365 // Get current width of divlist
366 var div_width = parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
368 // Get window width
369 var width= parseInt(window.innerWidth);
371 // Resize the body cells, 470 represents the info box and the navigation part
372 var diff= width - div_width - 470;
374 // window has been upscaled
375 if(div_width+diff>=600) {
376 document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
377 document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
379 // Resize the Header cells (only the relative-width ones)
380 document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
382 // window has been downscaled, we must reset the div to 600px
383 } else if (width < 930) {
384 // Reset layout (set width to 600px)
385 div_width=600;
386 document.getElementById('d_scrollbody').style.width=div_width+"px";
387 document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
389 // Resize the Header cells (only the relative-width ones)
390 document.getElementById('t_scrollhead').style.width=div_width+"px";
391 }
392 } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")){
393 // Resize the div
394 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
395 var width= parseInt(window.innerWidth);
397 // Resize the body cells
398 var diff= width-div_width-200;
400 // window has been upscaled
401 if(div_width+diff>=600) {
402 if(document.getElementById('d_scrollbody_onlywidth')){
403 document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
404 }
405 document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
407 // Resize the Header cells (only the relative-width ones)
408 document.getElementById('t_scrollhead_onlywidth').style.width=div_width+diff+"px";
410 // window has been downscaled, we must reset the div to 600px
411 } else if (width < 930) {
412 // Reset layout (set width to 600px)
413 div_width=600;
414 if(document.getElementById('d_scrollbody_onlywidth')){
415 document.getElementById('d_scrollbody_onlywidth').style.width=div_width+"px";
416 }
417 document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
419 // Resize the Header cells (only the relative-width ones)
420 document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
421 }
422 } else {
423 // IE
425 }
426 }
429 /* Set focus to first valid input field
430 avoid IExplorer warning about hidding or disabled fields
431 */
432 function focus_field()
433 {
434 var i = 0;
435 var e = 0;
436 var found = false;
437 var element_name = "";
438 var element =null;
440 while(focus_field.arguments[i] && !found){
442 var tmp = document.getElementsByName(focus_field.arguments[i]);
443 for(e = 0 ; e < tmp.length ; e ++ ){
445 if(tmp[e].disabled != true && tmp[e].type != "none" && tmp[e].type != "hidden" ){
446 found = true;
447 element = tmp[e];
448 }
449 }
450 i++;
451 }
453 if(element && found){
454 element.blur();
455 element.focus();
456 }
457 }
460 /* This function pops up messages from message queue
461 All messages are hidden in html output (style='display:none;').
462 This function makes single messages visible till there are no more dialogs queued.
464 hidden inputs:
465 current_msg_dialogs - Currently visible dialog
466 closed_msg_dialogs - IDs of already closed dialogs
467 pending_msg_dialogs - Queued dialog IDs.
468 */
469 function next_msg_dialog()
470 {
471 var s_pending = "";
472 var a_pending = new Array();
473 var i_id = 0;
474 var i = 0;
475 var tmp = "";
476 var ele = null;
477 var ele2 = null;
478 var cur_id = "";
480 if(document.getElementById('current_msg_dialogs')){
481 cur_id = document.getElementById('current_msg_dialogs').value;
482 if(cur_id != ""){
483 ele = document.getElementById('e_layer' + cur_id);
484 ele.onmousemove = "";
485 hide('e_layer' + cur_id);
486 document.getElementById('closed_msg_dialogs').value += "," + cur_id;
487 document.getElementById('current_msg_dialogs').value= "";
488 }
489 }
491 if(document.getElementById('pending_msg_dialogs')){
492 s_pending = document.getElementById('pending_msg_dialogs').value;
493 a_pending = s_pending.split(",");
494 if(a_pending.length){
495 i_id = a_pending.pop();
496 for (i = 0 ; i < a_pending.length; ++i){
497 tmp = tmp + a_pending[i] + ',';
498 }
499 tmp = tmp.replace(/,$/g,"");
500 if(i_id != ""){
501 ele = document.getElementById('e_layer' + i_id);
502 ele3 = document.getElementById('e_layerTitle' + i_id);
503 ele.style.display= 'block' ;
504 document.getElementById('pending_msg_dialogs').value= tmp;
505 document.getElementById('current_msg_dialogs').value= i_id;
506 ele2 = document.getElementById('e_layer2') ;
507 ele3.onmousedown = start_move_div_by_cursor;
508 ele2.onmouseup = stop_move_div_by_cursor;
509 ele2.onmousemove = move_div_by_cursor;
510 }else{
511 ele2 = document.getElementById('e_layer2') ;
512 ele2.style.display ="none";
513 }
514 }
515 }
516 }
519 /* Drag & drop for message dialogs */
520 var enable_move_div_by_cursor = false; // Indicates wheter the div movement is enabled or not
521 var mouse_x_on_div = 0; //
522 var mouse_y_on_div = 0;
523 var div_offset_x = 0;
524 var div_offset_y = 0;
526 /* Activates msg_dialog drag & drop
527 * This function is called when clicking on a displayed msg_dialog
528 */
529 function start_move_div_by_cursor(e)
530 {
531 var x = 0;
532 var y = 0;
533 var cur_id = 0;
534 var dialog = null;
535 var event = null;
537 /* Get current msg_dialog position
538 */
539 cur_id = document.getElementById('current_msg_dialogs').value;
540 if(cur_id != ""){
541 dialog = document.getElementById('e_layer' + cur_id);
542 x = dialog.style.left;
543 y = dialog.style.top;
544 x = x.replace(/[^0-9]/g,"");
545 y = y.replace(/[^0-9]/g,"");
546 if(!y) y = 1;
547 if(!x) x = 1;
548 }
550 /* Get mouse position within msg_dialog
551 */
552 if(window.event){
553 event = window.event;
554 if(event.offsetX){
555 div_offset_x = event.clientX -x;
556 div_offset_y = event.clientY -y;
557 enable_move_div_by_cursor = true;
558 }
559 }else if(e){
560 event = e;
561 if(event.layerX){
562 div_offset_x = event.screenX -x;
563 div_offset_y = event.screenY -y;
564 enable_move_div_by_cursor = true;
565 }
566 }
567 }
570 /* Deactivate msg_dialog movement
571 */
572 function stop_move_div_by_cursor()
573 {
574 mouse_x_on_div = 0;
575 mouse_y_on_div = 0;
576 div_offset_x = 0;
577 div_offset_y = 0;
578 enable_move_div_by_cursor = false;
579 }
582 /* Move msg_dialog with cursor */
583 function move_div_by_cursor(e)
584 {
585 var event = false;
586 var mouse_pos_x = 0;
587 var mouse_pos_y = 0;
588 var cur_div_x = 0;
589 var cur_div_y = 0;
590 var cur_id = 0;
591 var dialog = null;
594 if(undefined !== enable_move_div_by_cursor && enable_move_div_by_cursor == true){
596 if(document.getElementById('current_msg_dialogs')){
598 /* Get mouse position on screen
599 */
600 if(window.event){
601 event = window.event;
602 mouse_pos_x =event.clientX;
603 mouse_pos_y =event.clientY;
604 }else if (e){
605 event = e;
606 mouse_pos_x =event.screenX;
607 mouse_pos_y =event.screenY;
608 }else{
609 return;
610 }
612 /* Get id of current msg_dialog */
613 cur_id = document.getElementById('current_msg_dialogs').value;
614 if(cur_id != ""){
615 dialog = document.getElementById('e_layer' + cur_id);
617 /* Calculate new position */
618 cur_div_x = mouse_pos_x - div_offset_x;
619 cur_div_y = mouse_pos_y - div_offset_y;
621 /* Ensure that dialog can't be moved out of screen */
622 if(cur_div_x < 0 ) cur_div_x = 0
623 if(cur_div_y < 0 ) cur_div_y = 0
625 /* Assign new values */
626 dialog.style.left = (cur_div_x ) + "px";
627 dialog.style.top = (cur_div_y ) + "px";
628 }
629 }
630 }
631 }
633 function send_menu_action(str)
634 {
635 if(str != "" && str != "#"){
636 if(document.getElementById('menu_action')){
637 document.getElementById('menu_action').value=str;
638 document.mainform.submit();
639 }
640 }
641 }
643 // vim:ts=2:syntax