Code

Updated semantics
[gosa.git] / html / include / focus.js
1 var browserType;
3 if (document.layers) {browserType = "nn4"}
4 if (document.all) {browserType = "ie"}
5 if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko"}
7 netscape = "";
8 ver= navigator.appVersion; len = ver.length;
10 for (iln = 0; iln < len; iln++){
11   if (ver.charAt(iln) == "("){
12     break;
13   }
14 }
15 netscape= (ver.charAt(iln+1).toUpperCase() != "C");
18 /* Toggle checkbox that matches regex */
19 function chk_set_all(regex,value)
20 {
21         for (var i = 0; i < document.mainform.elements.length; i++) {
22                 var _id=document.mainform.elements[i].id;
23                 if(_id.match(regex)) {
24                         document.getElementById(_id).checked= value;
25                 }
26         }
27 }
30 function scrollDown() {
31   document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
32   timeout= setTimeout("scrollDown()", 500);
33 }
35 /* Scroll down the body frame */
36 function scrollDown2()
37 {
38     document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
39 }
42 /* Toggle checkbox that matches regex */
43 function acl_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 }
53 /* Toggle checkbox that matches regex */
54 function acl_toggle_all(regex)
55 {
56                                 for (var i = 0; i < document.mainform.elements.length; i++) {
57                                                                 var _id=document.mainform.elements[i].id;
58                                                                 if(_id.match(regex)) {
59                                                                                                 if (document.getElementById(_id).checked == true){
60                                                                                                                                 document.getElementById(_id).checked= false;
61                                                                                                 } else {
62                                                                                                                                 document.getElementById(_id).checked= true;
63                                                                                                 }
64                                                                 }
65                                 }
66 }
68 function keyPress(DnEvents) {
69   // determines whether Netscape or Internet Explorer
70   k = (netscape) ? DnEvents.keyCode : window.event.keyCode;
71   if (k == 13) { // enter key pressed
72                 if(typeof(nextfield)!='undefined') {
73                         if(nextfield == 'login') {
74           return true; // submit, we finished all fields
75         } else { // we are not done yet, send focus to next box
76         eval('document.mainform.' + nextfield + '.focus()');
77         return false;
78         }
79         } else {
80                         if(netscape) {
81                                 if(DnEvents.target.type == 'textarea') {
82                                         return true;
83                                 } else if (DnEvents.target.type != 'submit') {
84                                         // TAB
85                                         var thisfield = document.getElementById(DnEvents.target.id);
86                                         for (i = 0; i < document.forms[0].elements.length; i++) {
87                                                 if(document.forms[0].elements[i].id==thisfield.id) {
88                                                         // Last form element on page?
89                                                         if(i!=document.forms[0].elements.length-1) {
90                                                                 document.forms[0].elements[i+1].focus();
91                                                         }
92                                                 }
93                                         }
94                                         return false;
95                                 } else {
96                                         return true;
97                                 }
98                         // Check for konqueror
99                         } else if(document.clientWidth) {
100                                 // do nothing ATM
101                         } else {
102                                 if(window.event.srcElement.type == 'textarea') {
103                                         return true;
104                                 } else if (window.event.srcElement.type != 'submit') {
105                                         // TAB
106                                         var thisfield = document.getElementById(window.event.srcElement.id);
107                                         for (i = 0; i < document.forms[0].elements.length; i++) {
108                                                 if(document.forms[0].elements[i].id==thisfield.id) {
109                                                         // Last form element on page?
110                                                         if(i!=document.forms[0].elements.length-1) {
111                                                                 document.forms[0].elements[i+1].focus();
112                                                         }
113                                                 }
114                                         }
115                                         return false;
116                                 } else {
117                                         return true;
118                                 }
119                         }
120                 }
121         } else if (k==9) {
122                 // Tab key pressed
123                 if(netscape) {
124                         if(DnEvents.target.type == 'textarea') {
125                                 document.getElementById(DnEvents.target.id).value+="\t";
126                                 return false;
127                         }
128                 // Check for konqueror
129                 } else if(document.clientWidth) {
130                         // do nothing ATM
131                 } else {
132                         if(window.event.srcElement.type == 'textarea') {
133                                 document.getElementById(window.event.srcElement.id).value+="\t";
134                                 return false;
135                         }
136                 }
137         }
140 function changeState(myField) {
141         if(document.getElementById(myField) != null){
142           document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
143         }
146 function setHidden(str) {
147         type = document.getElementById(str).style.display;
148         if((type=='')||(type=='block')) {
149                 document.getElementById(str).style.display='none';
150         }else{
151                 document.getElementById(str).style.display='block';
152         }
154 function changeSelectState(triggerField, myField) {
155   if (document.getElementById(triggerField).value != 2){
156           document.getElementById(myField).disabled= true;
157   } else {
158           document.getElementById(myField).disabled= false;
159   }
162 function changeSubselectState(triggerField, myField) {
163   if (document.getElementById(triggerField).checked == true){
164           document.getElementById(myField).disabled= false;
165   } else {
166           document.getElementById(myField).disabled= true;
167   }
170 function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) {
171   if (
172         document.getElementById(firstTriggerField).checked == true &&
173         document.getElementById(secondTriggerField).checked == true){
174           document.getElementById(myField).disabled= false;
175   } else {
176           document.getElementById(myField).disabled= true;
177   }
180 <!-- Second field must be non-checked -->
181 function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) {
182   if (
183         document.getElementById(firstTriggerField).checked == true &&
184         document.getElementById(secondTriggerField).checked == false){
185           document.getElementById(myField).disabled= false;
186   } else {
187           document.getElementById(myField).disabled= true;
188   }
190 // work together to analyze keystrokes
191 if (netscape){
192   document.captureEvents(Event.KEYPRESS);
193         document.onkeypress= keyPress;
194 } else {
195         document.onkeydown= keyPress;
198 function hide(element) {
199   if (browserType == "gecko" )
200      document.poppedLayer = document.getElementById(element);
201   else if (browserType == "ie")
202      document.poppedLayer = document.all[element];
203   else
204      document.poppedLayer = document.layers[element];
205         document.poppedLayer.style.visibility = "hidden";
208 function show(element) {
209   if (browserType == "gecko" )
210      document.poppedLayer = document.getElementById(element);
211   else if (browserType == "ie")
212      document.poppedLayer = document.all[element];
213   else
214      document.poppedLayer = document.layers[element];
215   document.poppedLayer.style.visibility = "visible";
218 function toggle(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];
226   if (document.poppedLayer.style.visibility == "visible") {
227           hide (element);
228         } else {
229           show (element);
230         }
233 function popup(target, name) {
234         var mypopup= 
235                 window.open(
236                         target,
237                         name,
238                         "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes"
239                 );
240         mypopup.focus();
241         return false;
244 function js_check(form) {
245         form.javascript.value = 'true';
248 function divtoggle(element) {
249         var cell;
250         var cellname="tr_"+(element);
252         if (browserType == "gecko" ) {
253     document.poppedLayer = document.getElementById(element);
254                 cell= document.getElementById(cellname);
256           if (document.poppedLayer.style.visibility == "visible") {
257                   hide (element);
258                         cell.style.height="0px";
259                         document.poppedLayer.style.height="0px";
260                 } else {
261                   show (element);
262                         document.poppedLayer.style.height="";
263                         if(document.defaultView) {
264                                 cell.style.height=document.defaultView.getComputedStyle(document.poppedLayer,"").getPropertyValue('height');
265                         }
266                 }
267         } else if (browserType == "ie") {
268     document.poppedLayer = document.getElementById(element);
269                 cell= document.getElementById(cellname);
270           if (document.poppedLayer.style.visibility == "visible") {
271                   hide (element);
272                         cell.style.height="0px";
273                         document.poppedLayer.style.height="0px";
274                         document.poppedLayer.style.position="absolute";
275                 } else {
276                   show (element);
277                         cell.style.height="";
278                         document.poppedLayer.style.height="";
279                         document.poppedLayer.style.position="relative";
280                 }
281         }
284 window.onload = adjust;
285 window.onresize = adjust;
287 function adjust (e) {
288         adjust_height(e);
289         adjust_width(e);
292 // Automatic resize (height) of divlists
293 function adjust_height(e) {
294         if (!e) e=window.event;
295         if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
296                 var inner_height= window.innerHeight;
297                 var min_height= 450;
298                 var px_height= min_height;
299                 var suggested= px_height;
300         
301                 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
302                 if(document.defaultView) {
303                         var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
304         
305                         // Minimum height for divlist should be the bottom edge of the menu
306                         min_height= menu_height-197;
307                         suggested= min_height;
308                         if((inner_height-230)-suggested>0) {
309                                 suggested= inner_height-230;
310                         }
311                 
312                 // IE uses other height specifications
313                 } else if (browserType == "ie") {
314                         suggested= document.all.menucell.offsetHeight;
315                         offset= absTop(d_scrollbody);
316                         suggested-= offset;
317                         if((inner_height-230)-suggested>0) {
318                                 suggested= inner_height-230;
319                         }
320                 }
321                 document.getElementById("d_scrollbody").style.height=suggested+"px";
322         }
323         return true;
326 function absTop(e) {
327         return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop;
330 // Automatic resize (width) of divlists
331 function adjust_width(e) {
332         if (!e) e=window.event;
334         // Known to not work with IE
335         if(document.defaultView && document.getElementById("t_scrolltable")) {
336                 // Resize the div
337                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
338                 var width= parseInt(window.innerWidth);
340                 // Resize the body cells
341                 var diff= width-div_width-470;
342                 
343                 // window has been upscaled
344                 if(div_width+diff>=600) {
345                         document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
346                         document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
347         
348                         // Resize the Header cells (only the relative-width ones)
349                         document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
351                 // window has been downscaled, we must reset the div to 600px
352                 } else if (width < 930) {
353                         // Reset layout (set width to 600px)
354                         div_width=600;
355                         document.getElementById('d_scrollbody').style.width=div_width+"px";
356                         document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
357         
358                         // Resize the Header cells (only the relative-width ones)
359                         document.getElementById('t_scrollhead').style.width=div_width+"px";
360                 }
361         } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")) {
362                 // Resize the div
363                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
364                 var width= parseInt(window.innerWidth);
366                 // Resize the body cells
367                 var diff= width-div_width-470;
368                 
369                 // window has been upscaled
370                 if(div_width+diff>=600) {
371                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
372                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
373         
374                         // Resize the Header cells (only the relative-width ones)
375                         document.getElementById('t_scrollhead_onlywidth').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_onlywidth').style.width=div_width+"px";
382                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
383         
384                         // Resize the Header cells (only the relative-width ones)
385                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
386                 }
387         } else {
388                 // IE
390         }
393 // vim:ts=2:syntax