Code

Updated server service.
[gosa.git] / html / include / focus.js
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         }
150 function changeState(myField) {
151         if(document.getElementById(myField) != null){
152           document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
153         }
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         }
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   }
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   }
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   }
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   }
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;
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";
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";
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         }
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;
256 function js_check(form) {
257         form.javascript.value = 'true';
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         }
296 window.onload = adjust;
297 window.onresize = adjust;
299 function adjust (e) {
300         adjust_height(e);
301         adjust_width(e);
304 // Automatic resize (height) of divlists
305 function adjust_height(e) {
306         if (!e) e=window.event;
307         if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
308                 var inner_height= window.innerHeight;
309                 var min_height= 450;
310                 var px_height= min_height;
311                 var suggested= px_height;
312         
313                 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
314                 if(document.defaultView) {
315                         var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
316         
317                         // Minimum height for divlist should be the bottom edge of the menu
318                         min_height= menu_height-197;
319                         suggested= min_height;
320                         if((inner_height-230)-suggested>0) {
321                                 suggested= inner_height-230;
322                         }
323                 
324                 // IE uses other height specifications
325                 } else if (browserType == "ie") {
326                         suggested= document.all.menucell.offsetHeight;
327                         offset= absTop(d_scrollbody);
328                         suggested-= offset;
329                         if((inner_height-230)-suggested>0) {
330                                 suggested= inner_height-230;
331                         }
332                 }
334                 /* Reduce height if a list footer is set */
335                 if(document.getElementById("t_scrollfoot")){
336                         suggested = suggested -20;
337                 }
339                 document.getElementById("d_scrollbody").style.height=suggested+"px";
340         }
341         return true;
344 function absTop(e) {
345         return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop;
348 // Automatic resize (width) of divlists
349 function adjust_width(e) 
351         
352         /* Get event ... it seems to be unused here ...*/
353         if (!e) {
354                 e=window.event;
355         }
357         // Known to not work with IE
358         if(document.defaultView && document.getElementById("t_scrolltable")) {
360                 // Get current width of divlist 
361                 var div_width   =       parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
362         
363                 // Get window width
364                 var width= parseInt(window.innerWidth);
366                 // Resize the body cells, 470 represents the info box and the navigation part 
367                 var diff= width -       div_width       -       470;
368                 
369                 // window has been upscaled
370                 if(div_width+diff>=600) {
371                         document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
372                         document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
373         
374                         // Resize the Header cells (only the relative-width ones)
375                         document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
377                 // window has been downscaled, we must reset the div to 600px
378                 } else if (width < 930) {
379                         // Reset layout (set width to 600px)
380                         div_width=600;
381                         document.getElementById('d_scrollbody').style.width=div_width+"px";
382                         document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
383         
384                         // Resize the Header cells (only the relative-width ones)
385                         document.getElementById('t_scrollhead').style.width=div_width+"px";
386                 }
387         } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")) {
388                 // Resize the div
389                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
390                 var width= parseInt(window.innerWidth);
392                 // Resize the body cells
393                 var diff= width-div_width-200;
394                 
395                 // window has been upscaled
396                 if(div_width+diff>=600) {
397                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
398                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
399         
400                         // Resize the Header cells (only the relative-width ones)
401                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+diff+"px";
403                 // window has been downscaled, we must reset the div to 600px
404                 } else if (width < 930) {
405                         // Reset layout (set width to 600px)
406                         div_width=600;
407                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+"px";
408                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
409         
410                         // Resize the Header cells (only the relative-width ones)
411                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
412                 }
413         } else {
414                 // IE
416         }
420 /* Set focus to first valid input field
421     avoid IExplorer warning about hidding or disabled fields
422 */
423 function focus_field()
425     var i     = 0;
426     var e     = 0;
427     var found = false;
428     var element_name = "";
429     var element =null;
431     while(focus_field.arguments[i] && !found){
433         var tmp = document.getElementsByName(focus_field.arguments[i]);
434         for(e = 0 ; e < tmp.length ; e ++ ){
436             if(tmp[e].disabled != true &&  tmp[e].type != "none" && tmp[e].type != "hidden" ){
437                 found = true;
438                 element = tmp[e];
439             }
440         }
441         i++;
442     }
444     if(element && found){
445         element.blur();
446         element.focus();
447     }
451 // vim:ts=2:syntax