Code

Added check for firefox2 (js function captureEvents deprecated/not needed).
[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                                 alert("login");
85           return true; // submit, we finished all fields
86         } else { // we are not done yet, send focus to next box
87         eval('document.mainform.' + nextfield + '.focus()');
88         return false;
89         }
90         } else {
91                         if(netscape) {
92                                 if(DnEvents.target.type == 'textarea') {
93                                         return true;
94                                 } else if (DnEvents.target.type != 'submit') {
95                                         // TAB
96                                         var thisfield = document.getElementById(DnEvents.target.id);
97                                         for (i = 0; i < document.forms[0].elements.length; i++) {
98                                                 if(document.forms[0].elements[i].id==thisfield.id) {
99                                                         // Last form element on page?
100                                                         if(i!=document.forms[0].elements.length-1) {
101                                                                 document.forms[0].elements[i+1].focus();
102                                                         }
103                                                 }
104                                         }
105                                         return false;
106                                 } else {
107                                         return true;
108                                 }
109                         // Check for konqueror
110                         } else if(document.clientWidth) {
111                                 // do nothing ATM
112                         } else {
113                                 if(window.event.srcElement.type == 'textarea') {
114                                         return true;
115                                 } else if (window.event.srcElement.type != 'submit') {
116                                         // TAB
117                                         var thisfield = document.getElementById(window.event.srcElement.id);
118                                         for (i = 0; i < document.forms[0].elements.length; i++) {
119                                                 if(document.forms[0].elements[i].id==thisfield.id) {
120                                                         // Last form element on page?
121                                                         if(i!=document.forms[0].elements.length-1) {
122                                                                 document.forms[0].elements[i+1].focus();
123                                                         }
124                                                 }
125                                         }
126                                         return false;
127                                 } else {
128                                         return true;
129                                 }
130                         }
131                 }
132         } else if (k==9) {
133                 // Tab key pressed
134                 if(netscape) {
135                         if(DnEvents.target.type == 'textarea') {
136                                 document.getElementById(DnEvents.target.id).value+="\t";
137                                 return false;
138                         }
139                 // Check for konqueror
140                 } else if(document.clientWidth) {
141                         // do nothing ATM
142                 } else {
143                         if(window.event.srcElement.type == 'textarea') {
144                                 document.getElementById(window.event.srcElement.id).value+="\t";
145                                 return false;
146                         }
147                 }
148         }
151 function changeState(myField) {
152         if(document.getElementById(myField) != null){
153           document.getElementById(myField).disabled=(document.getElementById(myField).disabled)?false:true;
154         }
157 function setHidden(str) {
158         type = document.getElementById(str).style.display;
159         if((type=='')||(type=='block')) {
160                 document.getElementById(str).style.display='none';
161         }else{
162                 document.getElementById(str).style.display='block';
163         }
165 function changeSelectState(triggerField, myField) {
166   if (document.getElementById(triggerField).value != 2){
167           document.getElementById(myField).disabled= true;
168   } else {
169           document.getElementById(myField).disabled= false;
170   }
173 function changeSubselectState(triggerField, myField) {
174   if (document.getElementById(triggerField).checked == true){
175           document.getElementById(myField).disabled= false;
176   } else {
177           document.getElementById(myField).disabled= true;
178   }
181 function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) {
182   if (
183         document.getElementById(firstTriggerField).checked == true &&
184         document.getElementById(secondTriggerField).checked == true){
185           document.getElementById(myField).disabled= false;
186   } else {
187           document.getElementById(myField).disabled= true;
188   }
191 <!-- Second field must be non-checked -->
192 function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) {
193   if (
194         document.getElementById(firstTriggerField).checked == true &&
195         document.getElementById(secondTriggerField).checked == false){
196           document.getElementById(myField).disabled= false;
197   } else {
198           document.getElementById(myField).disabled= true;
199   }
201 // work together to analyze keystrokes
202 if (netscape){
203   if(firefoxType== "firefox") {
204                 window.captureEvents(Event.KEYPRESS);
205         }
206         window.onkeypress= keyPress;
207 } else {
208         document.onkeydown= keyPress;
211 function hide(element) {
212   if (browserType == "gecko" )
213      document.poppedLayer = document.getElementById(element);
214   else if (browserType == "ie")
215      document.poppedLayer = document.all[element];
216   else
217      document.poppedLayer = document.layers[element];
218         document.poppedLayer.style.visibility = "hidden";
221 function show(element) {
222   if (browserType == "gecko" )
223      document.poppedLayer = document.getElementById(element);
224   else if (browserType == "ie")
225      document.poppedLayer = document.all[element];
226   else
227      document.poppedLayer = document.layers[element];
228   document.poppedLayer.style.visibility = "visible";
231 function toggle(element) {
232   if (browserType == "gecko" )
233      document.poppedLayer = document.getElementById(element);
234   else if (browserType == "ie")
235      document.poppedLayer = document.all[element];
236   else
237      document.poppedLayer = document.layers[element];
239   if (document.poppedLayer.style.visibility == "visible") {
240           hide (element);
241         } else {
242           show (element);
243         }
246 function popup(target, name) {
247         var mypopup= 
248                 window.open(
249                         target,
250                         name,
251                         "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes"
252                 );
253         mypopup.focus();
254         return false;
257 function js_check(form) {
258         form.javascript.value = 'true';
261 function divtoggle(element) {
262         var cell;
263         var cellname="tr_"+(element);
265         if (browserType == "gecko" ) {
266     document.poppedLayer = document.getElementById(element);
267                 cell= document.getElementById(cellname);
269           if (document.poppedLayer.style.visibility == "visible") {
270                   hide (element);
271                         cell.style.height="0px";
272                         document.poppedLayer.style.height="0px";
273                 } else {
274                   show (element);
275                         document.poppedLayer.style.height="";
276                         if(document.defaultView) {
277                                 cell.style.height=document.defaultView.getComputedStyle(document.poppedLayer,"").getPropertyValue('height');
278                         }
279                 }
280         } else if (browserType == "ie") {
281     document.poppedLayer = document.getElementById(element);
282                 cell= document.getElementById(cellname);
283           if (document.poppedLayer.style.visibility == "visible") {
284                   hide (element);
285                         cell.style.height="0px";
286                         document.poppedLayer.style.height="0px";
287                         document.poppedLayer.style.position="absolute";
288                 } else {
289                   show (element);
290                         cell.style.height="";
291                         document.poppedLayer.style.height="";
292                         document.poppedLayer.style.position="relative";
293                 }
294         }
297 window.onload = adjust;
298 window.onresize = adjust;
300 function adjust (e) {
301         adjust_height(e);
302         adjust_width(e);
305 // Automatic resize (height) of divlists
306 function adjust_height(e) {
307         if (!e) e=window.event;
308         if (document.getElementById("menucell") && document.getElementById("d_scrollbody")) {
309                 var inner_height= window.innerHeight;
310                 var min_height= 450;
311                 var px_height= min_height;
312                 var suggested= px_height;
313         
314                 // document.defaultView allows access to the rendered size of elements and should be supported by modern browsers
315                 if(document.defaultView) {
316                         var menu_height=parseInt(document.defaultView.getComputedStyle(document.getElementById("menucell"),"").getPropertyValue('height'));
317         
318                         // Minimum height for divlist should be the bottom edge of the menu
319                         min_height= menu_height-197;
320                         suggested= min_height;
321                         if((inner_height-230)-suggested>0) {
322                                 suggested= inner_height-230;
323                         }
324                 
325                 // IE uses other height specifications
326                 } else if (browserType == "ie") {
327                         suggested= document.all.menucell.offsetHeight;
328                         offset= absTop(d_scrollbody);
329                         suggested-= offset;
330                         if((inner_height-230)-suggested>0) {
331                                 suggested= inner_height-230;
332                         }
333                 }
334                 document.getElementById("d_scrollbody").style.height=suggested+"px";
335         }
336         return true;
339 function absTop(e) {
340         return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop;
343 // Automatic resize (width) of divlists
344 function adjust_width(e) {
345         if (!e) e=window.event;
347         // Known to not work with IE
348         if(document.defaultView && document.getElementById("t_scrolltable")) {
349                 // Resize the div
350                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable"),"").getPropertyValue('width'));
351                 var width= parseInt(window.innerWidth);
353                 // Resize the body cells
354                 var diff= width-div_width-470;
355                 
356                 // window has been upscaled
357                 if(div_width+diff>=600) {
358                         document.getElementById('d_scrollbody').style.width=div_width+diff+"px";
359                         document.getElementById('t_scrollbody').style.width=(div_width-19)+diff+"px";
360         
361                         // Resize the Header cells (only the relative-width ones)
362                         document.getElementById('t_scrollhead').style.width=div_width+diff+"px";
364                 // window has been downscaled, we must reset the div to 600px
365                 } else if (width < 930) {
366                         // Reset layout (set width to 600px)
367                         div_width=600;
368                         document.getElementById('d_scrollbody').style.width=div_width+"px";
369                         document.getElementById('t_scrollbody').style.width=(div_width-19)+"px";
370         
371                         // Resize the Header cells (only the relative-width ones)
372                         document.getElementById('t_scrollhead').style.width=div_width+"px";
373                 }
374         } else if(document.defaultView && document.getElementById("t_scrolltable_onlywidth")) {
375                 // Resize the div
376                 var div_width=parseInt(document.defaultView.getComputedStyle(document.getElementById("t_scrolltable_onlywidth"),"").getPropertyValue('width'));
377                 var width= parseInt(window.innerWidth);
379                 // Resize the body cells
380                 var diff= width-div_width-470;
381                 
382                 // window has been upscaled
383                 if(div_width+diff>=600) {
384                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+diff+"px";
385                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+diff+"px";
386         
387                         // Resize the Header cells (only the relative-width ones)
388                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+diff+"px";
390                 // window has been downscaled, we must reset the div to 600px
391                 } else if (width < 930) {
392                         // Reset layout (set width to 600px)
393                         div_width=600;
394                         document.getElementById('d_scrollbody_onlywidth').style.width=div_width+"px";
395                         document.getElementById('t_scrollbody_onlywidth').style.width=(div_width-19)+"px";
396         
397                         // Resize the Header cells (only the relative-width ones)
398                         document.getElementById('t_scrollhead_onlywidth').style.width=div_width+"px";
399                 }
400         } else {
401                 // IE
403         }
406 // vim:ts=2:syntax