Automatic first field focus on page start, preserved focus sequence
[fa-stable.git] / js / inserts.js
1 /*
2  Behaviour definitions
3 */
4 var inserts = {
5     '.amount': function(element) {
6                 if(element.onblur==undefined) {
7                   var dec = element.getAttribute("dec");
8                   element.onblur = function() {
9                         price_format(this.name, get_amount(this.name), dec);
10                   };
11                 }
12         },
13         'select': function(element) {
14                 if(element.onfocus==undefined) {
15                         element.onfocus = function() {
16                                 document.getElementsByName('_focus')[0].value = element.name;
17                         };
18                 }
19         },
20         'input': function(element) {
21                 if(element.onfocus==undefined) {
22                         element.onfocus = function() {
23                                 document.getElementsByName('_focus')[0].value = element.name;
24                         };
25                 }
26         
27         },
28         'input.submit': function(element) {
29                 element.onfocus = function() {} // we do not want to change focus on submit
30         },
31         // combo: text input and related selector in next <TD> cell
32         'input.combo': function(element) {
33           if(element.onkeydown==undefined) {
34                   element.onkeydown=function(event) { 
35                         if (event.keyCode==13) event.keyCode=9;
36                   };
37                   element.onkeyup = function() {
38                         var select = document.getElementsByName(this.getAttribute('rel'))[0];
39                         var len = select.length;
40                         var ac = this.value;
41                         var txt;
42                         select.options[select.selectedIndex].selected = false;
43                         for (i = 0; i < len; i++) {
44 //                        txt = select.options[i].text;
45                           txt = select.options[i].value;
46                           if (txt.indexOf(ac) == 0) {
47                                 select.options[i].selected = true;
48                                 break;
49                           }
50                         }
51                   };
52                   if(element.onblur==undefined) {  // onblur can be set to submit(); here
53                         element.onblur = function() {
54                           var select = document.getElementsByName(this.getAttribute('rel'))[0];
55                           if (this.value != "")
56                                 this.value = select.options[select.selectedIndex].value;
57 //                                      myForm.$next_name.focus();
58                           return true;
59                         };
60                   }
61                 }
62         },
63         'select.combo': function(element) {
64                 if(element.onchange==undefined) { 
65                           element.onchange = function() {
66                           var input = document.getElementsByName(this.getAttribute('rel'))[0];
67                                 input.value = this.options[this.selectedIndex].value;
68 //                              myForm.$next_name.focus();
69                                 return true;
70                           };
71                 }
72         }
73
74 };
75
76 Behaviour.register(inserts);
77
78 function setFocus(name, byId) {
79   if(byId)
80         input = document.getElementById(name).focus();
81   else
82         input = document.getElementsByName(name)[0].focus();
83 }
84
85 Behaviour.addLoadEvent(function() {
86     var inp = document.getElementsByName('_focus')[0];
87 if(inp!=null) {
88   setFocus(inp.value, 0);
89 } else {
90 }
91 }
92 );
93