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 }
78 function keyPress(DnEvents) {
79 // determines whether Netscape or Internet Explorer
80 k = (netscape) ? DnEvents.keyCode : window.event.keyCode;
81 if (k == 13) { // enter key pressed
82 if(typeof(nextfield)!='undefined') {
83 if(nextfield == 'login') {
84 return true; // submit, we finished all fields
85 } else { // we are not done yet, send focus to next box
86 eval('document.mainform.' + nextfield + '.focus()');
87 return false;
88 }
89 } else {
90 if(netscape) {
91 if(DnEvents.target.type == 'textarea') {
92 return true;
93 } else if (DnEvents.target.type != 'submit') {
94 // TAB
95 var thisfield = document.getElementById(DnEvents.target.id);
96 for (i = 0; i < document.forms[0].elements.length; i++) {
97 if(document.forms[0].elements[i].id==thisfield.id) {
98 // Last form element on page?
99 if(i!=document.forms[0].elements.length-1) {
100 document.forms[0].elements[i+1].focus();
101 }
102 }
103 }
104 return false;
105 } else {
106 return true;
107 }
108 // Check for konqueror
109 } else if(document.clientWidth) {
110 // do nothing ATM
111 } else {
112 if(window.event.srcElement.type == 'textarea') {
113 return true;
114 } else if (window.event.srcElement.type != 'submit') {
115 // TAB
116 var thisfield = document.getElementById(window.event.srcElement.id);
117 for (i = 0; i < document.forms[0].elements.length; i++) {
118 if(document.forms[0].elements[i].id==thisfield.id) {
119 // Last form element on page?
120 if(i!=document.forms[0].elements.length-1) {
121 document.forms[0].elements[i+1].focus();
122 }
123 }
124 }
125 return false;
126 } else {
127 return true;
128 }
129 }
130 }
131 } else if (k==9) {
132 // Tab key pressed
133 if(netscape) {
134 if(DnEvents.target.type == 'textarea') {
135 document.getElementById(DnEvents.target.id).value+="\t";
136 return false;
137 }
138 // Check for konqueror
139 } else if(document.clientWidth) {
140 // do nothing ATM
141 } else {
142 if(window.event.srcElement.type == 'textarea') {
143 document.getElementById(window.event.srcElement.id).value+="\t";
144 return false;
145 }
146 }
147 }
148 }
150 function changeState(myField) {
151 if(document.getElementById(myField) != null){
152 document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
153 }
154 }
156 function setHidden(str) {
157 type = document.getElementById(str).style.display;
158 if((type=='')||(type=='block')) {
159 document.getElementById(str).style.display='none';
160 }else{
161 document.getElementById(str).style.display='block';
162 }
163 }
164 function changeSelectState(triggerField, myField) {
165 if (document.getElementById(triggerField).value != 2){
166 document.getElementById(myField).disabled= true;
167 } else {
168 document.getElementById(myField).disabled= false;
169 }
170 }
172 function changeSubselectState(triggerField, myField) {
173 if (document.getElementById(triggerField).checked == true){
174 document.getElementById(myField).disabled= false;
175 } else {
176 document.getElementById(myField).disabled= true;
177 }
178 }
180 function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) {
181 if (
182 document.getElementById(firstTriggerField).checked == true &&
183 document.getElementById(secondTriggerField).checked == true){
184 document.getElementById(myField).disabled= false;
185 } else {
186 document.getElementById(myField).disabled= true;
187 }
188 }
190 <!-- Second field must be non-checked -->
191 function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) {
192 if (
193 document.getElementById(firstTriggerField).checked == true &&
194 document.getElementById(secondTriggerField).checked == false){
195 document.getElementById(myField).disabled= false;
196 } else {
197 document.getElementById(myField).disabled= true;
198 }
199 }
200 // work together to analyze keystrokes
201 if (netscape){
202 if(firefoxType== "firefox") {
203 window.captureEvents(Event.KEYPRESS);
204 }
205 window.onkeypress= keyPress;
206 } else {
207 document.onkeydown= keyPress;
208 }
210 function hide(element) {
211 if (browserType == "gecko" )
212 document.poppedLayer = document.getElementById(element);
213 else if (browserType == "ie")
214 document.poppedLayer = document.all[element];
215 else
216 document.poppedLayer = document.layers[element];
217 document.poppedLayer.style.visibility = "hidden";
218 }
220 function show(element) {
221 if (browserType == "gecko" )
222 document.poppedLayer = document.getElementById(element);
223 else if (browserType == "ie")
224 document.poppedLayer = document.all[element];
225 else
226 document.poppedLayer = document.layers[element];
227 document.poppedLayer.style.visibility = "visible";
228 }
230 function toggle(element) {
231 if (browserType == "gecko" )
232 document.poppedLayer = document.getElementById(element);
233 else if (browserType == "ie")
234 document.poppedLayer = document.all[element];
235 else
236 document.poppedLayer = document.layers[element];
238 if (document.poppedLayer.style.visibility == "visible") {
239 hide (element);
240 } else {
241 show (element);
242 }
243 }
245 function popup(target, name) {
246 var mypopup=
247 window.open(
248 target,
249 name,
250 "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes"
251 );
252 mypopup.focus();
253 return false;
254 }
256 function js_check(form) {
257 form.javascript.value = 'true';
258 }
260 function divtoggle(element) {
261 var cell;
262 var cellname="tr_"+(element);
264 if (browserType == "gecko" ) {
265 document.poppedLayer = document.getElementById(element);
266 cell= document.getElementById(cellname);
268 if (document.poppedLayer.style.visibility == "visible") {
269 hide (element);
270 cell.style.height="0px";
271 document.poppedLayer.style.height="0px";
272 } else {
273 show (element);
274 document.poppedLayer.style.height="";
275 if(document.defaultView) {
276 cell.style.height=document.defaultView.getComputedStyle(document.poppedLayer,"").getPropertyValue('height');
277 }
278 }
279 } else if (browserType == "ie") {
280 document.poppedLayer = document.getElementById(element);
281 cell= document.getElementById(cellname);
282 if (document.poppedLayer.style.visibility == "visible") {
283 hide (element);
284 cell.style.height="0px";
285 document.poppedLayer.style.height="0px";
286 document.poppedLayer.style.position="absolute";
287 } else {
288 show (element);
289 cell.style.height="";
290 document.poppedLayer.style.height="";
291 document.poppedLayer.style.position="relative";
292 }
293 }
294 }
296 function adjust (e) {
297 adjust_height(e);
298 adjust_width(e);
299 }
301 // Automatic resize (height) of divlists
302 function adjust_height(e) {
303 if (!e) e=window.event;
304 if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
305 var inner_height= window.innerHeight;
306 var min_height= 450;
307 var px_height= min_height;
308 var suggested= px_height;
310 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
311 if(document.defaultView) {
312 var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
314 // Minimum height for divlist should be the bottom edge of the menu
315 min_height= menu_height-197;
316 suggested= min_height;
317 if((inner_height-230)-suggested>0) {
318 suggested= inner_height-230;
319 }
321 // IE uses other height specifications
322 } else if (browserType == "ie") {
323 suggested= document.all.menucell.offsetHeight;
324 offset= absTop(d_scrollbody);
325 suggested-= offset;
326 if((inner_height-230)-suggested>0) {
327 suggested= inner_height-230;
328 }
329 }
331 /* Reduce height if a list footer is set */
332 if(document.getElementById("t_scrollfoot")){
333 suggested = suggested -20;
334 }
336 document.getElementById("d_scrollbody").style.height=suggested+"px";
337 }
338 return true;
339 }
341 function absTop(e) {
342 return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop;
343 }
345 // Automatic resize (width) of divlists
346 function adjust_width(e)
347 {
349 /* Get event ... it seems to be unused here ...*/
350 if (!e) {
351 e=window.event;
352 }
354 // Known to not work with IE
355 if(document.defaultView && document.getElementById("t_scrolltable")) {
357 // Get current width of divlist
358 var div_width = parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
360 // Get window width
361 var width= parseInt(window.innerWidth);
363 // Resize the body cells, 470 represents the info box and the navigation part
364 var diff= width - div_width - 470;
366 // window has been upscaled
367 if(div_width+diff>=600) {
368 document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
369 document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
371 // Resize the Header cells (only the relative-width ones)
372 document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
374 // window has been downscaled, we must reset the div to 600px
375 } else if (width < 930) {
376 // Reset layout (set width to 600px)
377 div_width=600;
378 document.getElementById('d_scrollbody').style.width=div_width+"px";
379 document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
381 // Resize the Header cells (only the relative-width ones)
382 document.getElementById('t_scrollhead').style.width=div_width+"px";
383 }
384 } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")){
385 // Resize the div
386 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
387 var width= parseInt(window.innerWidth);
389 // Resize the body cells
390 var diff= width-div_width-200;
392 // window has been upscaled
393 if(div_width+diff>=600) {
394 if(document.getElementById('d_scrollbody_onlywidth')){
395 document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
396 }
397 document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
399 // Resize the Header cells (only the relative-width ones)
400 document.getElementById('t_scrollhead_onlywidth').style.width=div_width+diff+"px";
402 // window has been downscaled, we must reset the div to 600px
403 } else if (width < 930) {
404 // Reset layout (set width to 600px)
405 div_width=600;
406 if(document.getElementById('d_scrollbody_onlywidth')){
407 document.getElementById('d_scrollbody_onlywidth').style.width=div_width+"px";
408 }
409 document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
411 // Resize the Header cells (only the relative-width ones)
412 document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
413 }
414 } else {
415 // IE
417 }
418 }
421 /* Set focus to first valid input field
422 avoid IExplorer warning about hidding or disabled fields
423 */
424 function focus_field()
425 {
426 var i = 0;
427 var e = 0;
428 var found = false;
429 var element_name = "";
430 var element =null;
432 while(focus_field.arguments[i] && !found){
434 var tmp = document.getElementsByName(focus_field.arguments[i]);
435 for(e = 0 ; e < tmp.length ; e ++ ){
437 if(tmp[e].disabled != true && tmp[e].type != "none" && tmp[e].type != "hidden" ){
438 found = true;
439 element = tmp[e];
440 }
441 }
442 i++;
443 }
445 if(element && found){
446 element.blur();
447 element.focus();
448 }
449 }
452 /* This function pops up messages from message queue
453 All messages are hidden in html output (style='display:none;').
454 This function makes single messages visible till there are no more dialogs queued.
456 hidden inputs:
457 current_msg_dialogs - Currently visible dialog
458 closed_msg_dialogs - IDs of already closed dialogs
459 pending_msg_dialogs - Queued dialog IDs.
460 */
461 function next_msg_dialog()
462 {
463 var s_pending = "";
464 var a_pending = new Array();
465 var i_id = 0;
466 var i = 0;
467 var tmp = "";
468 var ele = null;
469 var ele2 = null;
470 var cur_id = "";
472 if(document.getElementById('current_msg_dialogs')){
473 cur_id = document.getElementById('current_msg_dialogs').value;
474 if(cur_id != ""){
475 ele = document.getElementById('e_layer' + cur_id);
476 ele.onmousemove = "";
477 hide('e_layer' + cur_id);
478 document.getElementById('closed_msg_dialogs').value += "," + cur_id;
479 document.getElementById('current_msg_dialogs').value= "";
480 }
481 }
483 if(document.getElementById('pending_msg_dialogs')){
484 s_pending = document.getElementById('pending_msg_dialogs').value;
485 a_pending = s_pending.split(",");
486 if(a_pending.length){
487 i_id = a_pending.pop();
488 for (i = 0 ; i < a_pending.length; ++i){
489 tmp = tmp + a_pending[i] + ',';
490 }
491 tmp = tmp.replace(/,$/g,"");
492 if(i_id != ""){
493 ele = document.getElementById('e_layer' + i_id);
494 ele3 = document.getElementById('e_layerTitle' + i_id);
495 ele.style.display= 'block' ;
496 document.getElementById('pending_msg_dialogs').value= tmp;
497 document.getElementById('current_msg_dialogs').value= i_id;
498 ele2 = document.getElementById('e_layer2') ;
499 ele3.onmousedown = start_move_div_by_cursor;
500 ele2.onmouseup = stop_move_div_by_cursor;
501 ele2.onmousemove = move_div_by_cursor;
502 }else{
503 ele2 = document.getElementById('e_layer2') ;
504 ele2.style.display ="none";
505 }
506 }
507 }
508 }
511 /* Drag & drop for message dialogs */
512 var enable_move_div_by_cursor = false; // Indicates wheter the div movement is enabled or not
513 var mouse_x_on_div = 0; //
514 var mouse_y_on_div = 0;
515 var div_offset_x = 0;
516 var div_offset_y = 0;
518 /* Activates msg_dialog drag & drop
519 * This function is called when clicking on a displayed msg_dialog
520 */
521 function start_move_div_by_cursor(e)
522 {
523 var x = 0;
524 var y = 0;
525 var cur_id = 0;
526 var dialog = null;
527 var event = null;
529 /* Get current msg_dialog position
530 */
531 cur_id = document.getElementById('current_msg_dialogs').value;
532 if(cur_id != ""){
533 dialog = document.getElementById('e_layer' + cur_id);
534 x = dialog.style.left;
535 y = dialog.style.top;
536 x = x.replace(/[^0-9]/g,"");
537 y = y.replace(/[^0-9]/g,"");
538 if(!y) y = 1;
539 if(!x) x = 1;
540 }
542 /* Get mouse position within msg_dialog
543 */
544 if(window.event){
545 event = window.event;
546 if(event.offsetX){
547 div_offset_x = event.clientX -x;
548 div_offset_y = event.clientY -y;
549 enable_move_div_by_cursor = true;
550 }
551 }else if(e){
552 event = e;
553 if(event.layerX){
554 div_offset_x = event.screenX -x;
555 div_offset_y = event.screenY -y;
556 enable_move_div_by_cursor = true;
557 }
558 }
559 }
562 /* Deactivate msg_dialog movement
563 */
564 function stop_move_div_by_cursor()
565 {
566 mouse_x_on_div = 0;
567 mouse_y_on_div = 0;
568 div_offset_x = 0;
569 div_offset_y = 0;
570 enable_move_div_by_cursor = false;
571 }
574 /* Move msg_dialog with cursor */
575 function move_div_by_cursor(e)
576 {
577 var event = false;
578 var mouse_pos_x = 0;
579 var mouse_pos_y = 0;
580 var cur_div_x = 0;
581 var cur_div_y = 0;
582 var cur_id = 0;
583 var dialog = null;
586 if(undefined !== enable_move_div_by_cursor && enable_move_div_by_cursor == true){
588 if(document.getElementById('current_msg_dialogs')){
590 /* Get mouse position on screen
591 */
592 if(window.event){
593 event = window.event;
594 mouse_pos_x =event.clientX;
595 mouse_pos_y =event.clientY;
596 }else if (e){
597 event = e;
598 mouse_pos_x =event.screenX;
599 mouse_pos_y =event.screenY;
600 }else{
601 return;
602 }
604 /* Get id of current msg_dialog */
605 cur_id = document.getElementById('current_msg_dialogs').value;
606 if(cur_id != ""){
607 dialog = document.getElementById('e_layer' + cur_id);
609 /* Calculate new position */
610 cur_div_x = mouse_pos_x - div_offset_x;
611 cur_div_y = mouse_pos_y - div_offset_y;
613 /* Ensure that dialog can't be moved out of screen */
614 if(cur_div_x < 0 ) cur_div_x = 0
615 if(cur_div_y < 0 ) cur_div_y = 0
617 /* Assign new values */
618 dialog.style.left = (cur_div_x ) + "px";
619 dialog.style.top = (cur_div_y ) + "px";
620 }
621 }
622 }
623 }
625 function send_menu_action(str)
626 {
627 if(str != "" && str != "#"){
628 if(document.getElementById('menu_action')){
629 document.getElementById('menu_action').value=str;
630 document.mainform.submit();
631 }
632 }
633 }
635 // vim:ts=2:syntax