Code

Updated toggle functions
[gosa.git] / html / include / focus.js
1 var browserType;
2 var timeout;
4 if (document.layers) {browserType = "nn4"}
5 if (document.all) {browserType = "ie"}
6 if (window.navigator.userAgent.toLowerCase().match("gecko")) {browserType= "gecko"}
8 netscape = "";
9 ver= navigator.appVersion; len = ver.length;
11 for (iln = 0; iln < len; iln++){
12   if (ver.charAt(iln) == "("){
13     break;
14   }
15 }
16 netscape= (ver.charAt(iln+1).toUpperCase() != "C");
19 /* Toggle checkbox that matches regex */
20 function chk_set_all(regex,value)
21 {
22                                 for (var i = 0; i < document.mainform.elements.length; i++) {
23                                                                 var _id=document.mainform.elements[i].id;
24                                                                 if(_id.match(regex)) {
25                                                                                                 document.getElementById(_id).checked= value;
26                                                                 }
27                                 }
28 }
31 function scrollDown() {
32         document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
33         timeout= setTimeout("scrollDown()", 500);
34 }
36 /* Scroll down the body frame */
37 function scrollDown2() 
38 {
39                 document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight;
40 }
43 function keyPress(DnEvents) {
44   // determines whether Netscape or Internet Explorer
45   k = (netscape) ? DnEvents.keyCode : window.event.keyCode;
46   if (k == 13) { // enter key pressed
47                 if(typeof(nextfield)!='undefined') {
48                         if(nextfield == 'login') {
49           return true; // submit, we finished all fields
50         } else { // we are not done yet, send focus to next box
51         eval('document.mainform.' + nextfield + '.focus()');
52         return false;
53         }
54         } else {
55                         if(netscape) {
56                                 if(DnEvents.target.type == 'textarea') {
57                                         return true;
58                                 } else if (DnEvents.target.type != 'submit') {
59                                         // TAB
60                                         var thisfield = document.getElementById(DnEvents.target.id);
61                                         for (i = 0; i < document.forms[0].elements.length; i++) {
62                                                 if(document.forms[0].elements[i].id==thisfield.id) {
63                                                         // Last form element on page?
64                                                         if(i!=document.forms[0].elements.length-1) {
65                                                                 document.forms[0].elements[i+1].focus();
66                                                         }
67                                                 }
68                                         }
69                                         return false;
70                                 } else {
71                                         return true;
72                                 }
73                         // Check for konqueror
74                         } else if(document.clientWidth) {
75                                 // do nothing ATM
76                         } else {
77                                 if(window.event.srcElement.type == 'textarea') {
78                                         return true;
79                                 } else if (window.event.srcElement.type != 'submit') {
80                                         // TAB
81                                         var thisfield = document.getElementById(window.event.srcElement.id);
82                                         for (i = 0; i < document.forms[0].elements.length; i++) {
83                                                 if(document.forms[0].elements[i].id==thisfield.id) {
84                                                         // Last form element on page?
85                                                         if(i!=document.forms[0].elements.length-1) {
86                                                                 document.forms[0].elements[i+1].focus();
87                                                         }
88                                                 }
89                                         }
90                                         return false;
91                                 } else {
92                                         return true;
93                                 }
94                         }
95                 }
96         } else if (k==9) {
97                 // Tab key pressed
98                 if(netscape) {
99                         if(DnEvents.target.type == 'textarea') {
100                                 document.getElementById(DnEvents.target.id).value+="\t";
101                                 return false;
102                         }
103                 // Check for konqueror
104                 } else if(document.clientWidth) {
105                         // do nothing ATM
106                 } else {
107                         if(window.event.srcElement.type == 'textarea') {
108                                 document.getElementById(window.event.srcElement.id).value+="\t";
109                                 return false;
110                         }
111                 }
112         }
115 function changeState(myField) {
116         if(document.getElementById(myField) != null){
117           document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
118         }
121 function setHidden(str) {
122         type = document.getElementById(str).style.display;
123         if((type=='')||(type=='block')) {
124                 document.getElementById(str).style.display='none';
125         }else{
126                 document.getElementById(str).style.display='block';
127         }
129 function changeSelectState(triggerField, myField) {
130   if (document.getElementById(triggerField).value != 2){
131           document.getElementById(myField).disabled= true;
132   } else {
133           document.getElementById(myField).disabled= false;
134   }
137 function changeSubselectState(triggerField, myField) {
138   if (document.getElementById(triggerField).checked == true){
139           document.getElementById(myField).disabled= false;
140   } else {
141           document.getElementById(myField).disabled= true;
142   }
145 function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) {
146   if (
147         document.getElementById(firstTriggerField).checked == true &&
148         document.getElementById(secondTriggerField).checked == true){
149           document.getElementById(myField).disabled= false;
150   } else {
151           document.getElementById(myField).disabled= true;
152   }
155 <!-- Second field must be non-checked -->
156 function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) {
157   if (
158         document.getElementById(firstTriggerField).checked == true &&
159         document.getElementById(secondTriggerField).checked == false){
160           document.getElementById(myField).disabled= false;
161   } else {
162           document.getElementById(myField).disabled= true;
163   }
165 // work together to analyze keystrokes
166 if (netscape){
167   document.captureEvents(Event.KEYPRESS);
168         document.onkeypress= keyPress;
169 } else {
170         document.onkeydown= keyPress;
173 function hide(element) {
174   if (browserType == "gecko" )
175      document.poppedLayer = document.getElementById(element);
176   else if (browserType == "ie")
177      document.poppedLayer = document.all[element];
178   else
179      document.poppedLayer = document.layers[element];
180         document.poppedLayer.style.visibility = "hidden";
183 function show(element) {
184   if (browserType == "gecko" )
185      document.poppedLayer = document.getElementById(element);
186   else if (browserType == "ie")
187      document.poppedLayer = document.all[element];
188   else
189      document.poppedLayer = document.layers[element];
190   document.poppedLayer.style.visibility = "visible";
193 function toggle(element) {
194   if (browserType == "gecko" )
195      document.poppedLayer = document.getElementById(element);
196   else if (browserType == "ie")
197      document.poppedLayer = document.all[element];
198   else
199      document.poppedLayer = document.layers[element];
201   if (document.poppedLayer.style.visibility == "visible") {
202           hide (element);
203         } else {
204           show (element);
205         }
208 function popup(target, name) {
209         var mypopup= 
210                 window.open(
211                         target,
212                         name,
213                         "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes"
214                 );
215         mypopup.focus();
216         return false;
219 function js_check(form) {
220         form.javascript.value = 'true';
223 window.onload = adjust;
224 window.onresize = adjust;
226 function adjust (e) {
227         adjust_height(e);
228         adjust_width(e);
231 // Automatic resize (height) of divlists
232 function adjust_height(e) {
233         if (!e) e=window.event;
234         if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
235                 var inner_height= window.innerHeight;
236                 var min_height= 450;
237                 var px_height= min_height;
238                 var suggested= px_height;
239         
240                 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
241                 if(document.defaultView) {
242                         var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
243         
244                         // Minimum height for divlist should be the bottom edge of the menu
245                         min_height= menu_height-197;
246                         suggested= min_height;
247                         if((inner_height-230)-suggested>0) {
248                                 suggested= inner_height-230;
249                         }
250         
251                 } else if(px_height >= 450) {
252                                 suggested= px_height-230;
253                 }
254                 document.getElementById("d_scrollbody").style.height=suggested+"px";
255         }
256         return true;
259 // Automatic resize (width) of divlists
260 function adjust_width(e) {
261         if (!e) e=window.event;
263         // Known to not work with IE
264         if(document.defaultView && document.getElementById("t_scrolltable")) {
265                 // Resize the div
266                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
267                 var width= parseInt(window.innerWidth);
269                 // Resize the body cells
270                 var diff= width-div_width-470;
271                 
272                 // window has been upscaled
273                 if(div_width+diff>=600) {
274                         document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
275                         document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
276         
277                         // Resize the Header cells (only the relative-width ones)
278                         document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
280                 // window has been downscaled, we must reset the div to 600px
281                 } else if (width < 930) {
282                         // Reset layout (set width to 600px)
283                         div_width=600;
284                         document.getElementById('d_scrollbody').style.width=div_width+"px";
285                         document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
286         
287                         // Resize the Header cells (only the relative-width ones)
288                         document.getElementById('t_scrollhead').style.width=div_width+"px";
289                 }
290         } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")) {
291                 // Resize the div
292                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
293                 var width= parseInt(window.innerWidth);
295                 // Resize the body cells
296                 var diff= width-div_width-470;
297                 
298                 // window has been upscaled
299                 if(div_width+diff>=600) {
300                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
301                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
302         
303                         // Resize the Header cells (only the relative-width ones)
304                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+diff+"px";
306                 // window has been downscaled, we must reset the div to 600px
307                 } else if (width < 930) {
308                         // Reset layout (set width to 600px)
309                         div_width=600;
310                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+"px";
311                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
312         
313                         // Resize the Header cells (only the relative-width ones)
314                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
315                 }
316         } else {
317                 // IE
319         }
322 // vim:ts=2:syntax