Javascript changes related to ui_lists.inc
[fa-stable.git] / js / inserts.js
1
2 var _focus;
3
4 function debug(msg) {
5     document.getElementById('msgbox').innerHTML=
6         document.getElementById('msgbox').innerHTML+'<br>'+msg
7 }
8
9 function progbar(container) {
10     container.innerHTML= "<center><img src='"+
11         user.theme+"images/progressbar1.gif' /> "+
12         user.loadtxt+"</center>";
13 }
14
15 function save_focus(e) {
16 //  document.getElementsByName('_focus')[0].value = e.name;
17   _focus = e.name||e.id;
18   var h = document.getElementById('hints');
19   if (h) {
20         h.style.display = e.title && e.title.length ? 'inline' : 'none';
21         h.innerHTML = e.title ? e.title : '';
22   }
23 }
24
25 function _expand(tabobj) {
26
27   var ul = tabobj.parentNode.parentNode;
28   var alltabs=ul.getElementsByTagName("input");
29   var frm = tabobj.form;
30
31   if (ul.getAttribute("rel")){
32         for (var i=0; i<alltabs.length; i++){
33           alltabs[i].className = "ajaxbutton"  //deselect all tabs
34         }
35         tabobj.className = "current";
36         JsHttpRequest.request(tabobj.name)
37   }
38 }
39
40 //interface for selecting a tab (plus expand corresponding content)
41 function expandtab(tabcontentid, tabnumber) {
42   var tabs = document.getElementById(tabcontentid);
43  _expand(tabs.getElementsByTagName("input")[tabnumber]);
44 }
45
46 function _set_combo_input(e) {
47                   e.onblur=function() { 
48 //                      if(!this.back) {
49                           var but_name = this.name.substring(0, this.name.length-4)+'button';
50                           var button = document.getElementsByName(but_name)[0];
51                           var select = document.getElementsByName(this.getAttribute('rel'))[0];
52                           save_focus(select);
53 //              this.style.display='none';
54                           if(button) { // if *_button set submit search request
55                             JsHttpRequest.request(but_name);
56                           }
57                           return false;
58 //                      }
59                 };
60                 e.onkeyup = function(ev) {
61                         var select = document.getElementsByName(this.getAttribute('rel'))[0];
62                         if(select && select.selectedIndex>=0) {
63                           var len = select.length;
64                           var byid = this.className=='combo';
65                           var ac = this.value.toUpperCase();
66                           select.options[select.selectedIndex].selected = false;
67                           for (i = 0; i < len; i++) {
68                                 var txt = byid ? select.options[i].value : select.options[i].text;
69                                 if (txt.toUpperCase().indexOf(ac) >= 0) {
70                                   select.options[i].selected = true;
71                                   break;
72                                 }
73                           }
74                         }
75                   };
76                 e.onkeydown = function(ev) { 
77                         ev = ev||window.event;
78                         key = ev.keyCode||ev.which;
79                         if(key == 13) {
80                           this.blur();
81                           return false;
82                         }
83 //          this.back = ev.shiftKey; // save shift state for onblur handler
84                   }
85 }
86
87 function _update_box(s) {
88         var byid = s.className=='combo';
89         var rel = s.getAttribute('rel');
90         var box = document.getElementsByName(rel)[0];
91                 if(box && s.selectedIndex>=0) {
92                           var opt = s.options[s.selectedIndex];
93                           if (opt.value != 0) {
94                                 if(box) box.value = byid ? opt.value : opt.text;
95                           }
96                 }
97 }
98
99 function _set_combo_select(e) {
100                 e.onchange = function() {
101                         var s = this;
102                         
103                         if(s.className=='combo')
104                             _update_box(s);
105                         if(s.selectedIndex>=0) {
106                                  var sname = '_'+s.name+'_update';
107                                  var update = document.getElementsByName(sname)[0];
108                                  if(update) {
109                                             JsHttpRequest.request(sname);
110                                 } 
111                         }
112                         return true;
113                 }
114 //              e.onblur = function() {
115 //                      if (this.className == 'combo')
116 //                        _update_box(this);
117 //              },
118                 e.onkeydown = function(event) {
119                     event = event||window.event;
120 //                  this.back = event.shiftKey; // save shift state for onblur handler
121                     key = event.keyCode||event.which;
122                     var box = document.getElementsByName(this.getAttribute('rel'))[0];
123                     if (box && key == 32 && this.className == 'combo2') {
124                             this.style.display = 'none';
125                             box.style.display = 'inline';
126                                 box.value='';
127   // Konq does not like short syntax for nonstd attr
128 //                              this.setAttribute('back', 'true');
129 //                          this.back=true;
130                                 setFocus(box.name);
131                             return false;
132                          }
133                 }
134 }               
135
136 /*
137  Behaviour definitions
138 */
139 var inserts = {
140         'input': function(e) {
141                 if(e.onfocus==undefined) {
142                         e.onfocus = function() {
143                             save_focus(this);
144                         };
145                 }
146                 if (e.className == 'combo' || e.className == 'combo2') {
147                                 _set_combo_input(e);
148                 }
149         },
150         'input.combo_submit,input.combo_select,input.combo2': 
151         function(e) {
152             // this hides search button for js enabled browsers
153             e.style.display = 'none';
154         },
155         'input.ajaxsubmit,input.editbutton,input.navibutton': 
156         function(e) {
157             e.onclick = function() {
158                 JsHttpRequest.request(this.name);
159                 return false;
160             }
161         },
162     '.amount': function(e) {
163                 if(e.onblur==undefined) {
164                   var dec = e.getAttribute("dec");
165                   e.onblur = function() {
166                         price_format(this.name, get_amount(this.name), dec);
167                   };
168                 }
169         },
170         'select': function(e) {
171                 if(e.onfocus==undefined) {
172                         e.onfocus = function() {
173                             save_focus(this);
174                         };
175                         e.onkeydown = function(event) { 
176                           event = event||window.event;
177                           this.back = event.shiftKey; // save shift state for onblur handler
178                           this.lastkey = event.keyCode; 
179                         };
180                   var c = e.className;
181                   if (c == 'combo' || c == 'combo2')
182                         _set_combo_select(e);
183                 }
184         },
185         'textarea,a': function(e) {
186                 if(e.onfocus==undefined) {
187                         e.onfocus = function() {
188                             save_focus(this);
189                         };
190                 }
191         },
192         'ul.ajaxtabs':  function(ul) {
193             var ulist=ul.getElementsByTagName("li");
194             for (var x=0; x<ulist.length; x++){ //loop through each LI e
195                 var ulistlink=ulist[x].getElementsByTagName("input")[0];
196                 if(ulistlink.onclick==undefined) {
197 // ?  var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
198                     var url = ulistlink.form.action
199                     ulistlink.onclick=function(){
200                         _expand(this);
201                         return false;
202                     }
203                 }
204             }
205         }
206 /* TODO
207         'a.date_picker':  function(e) {
208             // this un-hides data picker for js enabled browsers
209             e.href = date_picker(this.getAttribute('rel'));
210             e.style.display = '';
211             e.tabindex = -1; // skip in tabbing order
212         }
213 */
214 };
215
216 Behaviour.register(inserts);
217
218 Behaviour.addLoadEvent(setFocus);