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