3 function cbi_d_add(field
, dep
, next
) {
4 var obj
= document
.getElementById(field
);
7 for (var i
=0; i
<cbi_d
.length
; i
++) {
8 if (cbi_d
[i
].id
== field
) {
17 "parent": obj
.parentNode
.id
,
27 function cbi_d_checkvalue(target
, ref
) {
28 var t
= document
.getElementById(target
);
36 if (t
.type
== "checkbox") {
37 value
= t
.checked
? value
: "";
44 function cbi_d_check(deps
) {
45 for (var i
=0; i
<deps
.length
; i
++) {
47 for (var j
in deps
[i
]) {
48 istat
= (istat
&& cbi_d_checkvalue(j
, deps
[i
][j
]))
56 function cbi_d_update() {
58 for (var i
=0; i
<cbi_d
.length
; i
++) {
60 var next
= document
.getElementById(entry
.next
)
61 var node
= document
.getElementById(entry
.id
)
62 var parent
= document
.getElementById(entry
.parent
)
64 if (node
&& node
.parentNode
&& !cbi_d_check(entry
.deps
)) {
65 node
.parentNode
.removeChild(node
);
66 state
= (state
|| !node
.parentNode
)
67 } else if ((!node
|| !node
.parentNode
) && cbi_d_check(entry
.deps
)) {
69 parent
.appendChild(entry
.node
);
71 next
.parentNode
.insertBefore(entry
.node
, next
);
73 state
= (state
|| (node
&& node
.parentNode
))
81 function cbi_bind(obj
, type
, callback
, mode
) {
82 if (typeof mode
== "undefined") {
85 if (!obj
.addEventListener
) {
86 ieCallback = function(){
88 if (!e
.target
&& e
.srcElement
) {
89 e
.target
= e
.srcElement
;
91 e
.target
['_eCB' + type
+ callback
] = callback
;
92 e
.target
['_eCB' + type
+ callback
](e
);
93 e
.target
['_eCB' + type
+ callback
] = null;
95 obj
.attachEvent('on' + type
, ieCallback
);
97 obj
.addEventListener(type
, callback
, mode
);
102 function cbi_combobox(id
, values
, def
, man
) {
103 var selid
= "cbi.combobox." + id
;
104 if (document
.getElementById(selid
)) {
108 var obj
= document
.getElementById(id
)
109 var sel
= document
.createElement("select");
111 sel
.className
= 'cbi-input-select';
112 if (obj
.nextSibling
) {
113 obj
.parentNode
.insertBefore(sel
, obj
.nextSibling
);
115 obj
.parentNode
.appendChild(sel
);
118 if (!values
[obj
.value
]) {
119 if (obj
.value
== "") {
120 var optdef
= document
.createElement("option");
122 optdef
.appendChild(document
.createTextNode(def
));
123 sel
.appendChild(optdef
);
125 var opt
= document
.createElement("option");
126 opt
.value
= obj
.value
;
127 opt
.selected
= "selected";
128 opt
.appendChild(document
.createTextNode(obj
.value
));
129 sel
.appendChild(opt
);
133 for (var i
in values
) {
134 var opt
= document
.createElement("option");
137 if (obj
.value
== i
) {
138 opt
.selected
= "selected";
141 opt
.appendChild(document
.createTextNode(values
[i
]));
142 sel
.appendChild(opt
);
145 var optman
= document
.createElement("option");
147 optman
.appendChild(document
.createTextNode(man
));
148 sel
.appendChild(optman
);
150 obj
.style
.display
= "none";
152 cbi_bind(sel
, "change", function() {
153 if (sel
.selectedIndex
== sel
.options
.length
- 1) {
154 obj
.style
.display
= "inline";
155 sel
.parentNode
.removeChild(sel
);
158 obj
.value
= sel
.options
[sel
.selectedIndex
].value
;
163 function cbi_combobox_init(id
, values
, def
, man
) {
164 var obj
= document
.getElementById(id
);
165 cbi_bind(obj
, "blur", function() {
166 cbi_combobox(id
, values
, def
, man
)
168 cbi_combobox(id
, values
, def
, man
);