4 function ajax_request_callback(req)
6 if (req.readyState == 4 && req.status == 200) {
7 var data = json_parse(req.responseText);
9 if (typeof data.error == 'string') {
10 if (typeof data.errormsg == 'string')
13 error('Fehler im AJAX-Backend');
14 alert("Fehler im AJAX-Backend:\n" + data.error);
15 } else if (req.oncomplete)
20 function ajax_request(func,params,oncomplete)
22 var req = new XMLHttpRequest();
25 var params = 'func=' + func + '&' + params;
26 req.open ("POST", 'ajax/ajax.php');
27 req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
28 req.setRequestHeader("Content-length", params.length);
29 req.setRequestHeader("Connection", "close");
30 req.onreadystatechange = function() { ajax_request_callback(req); }
31 if (typeof oncomplete == 'function')
32 req.oncomplete = oncomplete;
38 var status = document.getElementById('status');
41 status.innerHTML = msg;
42 status.className = 'status_ok';
47 var status = document.getElementById('status');
50 status.innerHTML = msg;
51 status.className = 'status_error';
54 function set_value(id, value)
56 var obj = document.getElementById(id);
59 if (obj.nodeName.toLowerCase() == 'input'
60 && obj.type.toLowerCase() == 'checkbox')
61 if (value) obj.checked = true;
62 else obj.checked = false;
63 else if (obj.nodeName.toLowerCase() == 'input'
64 || obj.nodeName.toLowerCase() == 'textarea')
66 else if (obj.nodeName.toLowerCase() == 'span')
67 obj.innerHTML = value;
68 else if (obj.nodeName.toLowerCase() == 'select')
69 for (var i=0; i < obj.options.length; i++)
70 if (obj.options[i].value == value)
71 obj.selectedIndex = i;
74 function setvar(obj, name, callback, status)
76 if (!obj.options[obj.selectedIndex].value.length)
79 value = obj.options[obj.selectedIndex].value;
81 var source = document.getElementById('source');
83 if (!source) return false;
85 var parms = 'source=' + source.innerHTML + '&name=' + name + '&value=' + value;
87 ajax_request('setvar', parms, callback);
89 if (typeof status == 'function')
90 status(obj,value,obj.options[obj.selectedIndex].innerHTML);
98 var form = document.getElementById('form_edit');
102 for (var i=0; i<form.children.length; i++)
103 if (form.children[i].tagName.toLowerCase() == 'input'
104 && form.children[i].type.toLowerCase() == 'password')
105 form.children[i].value = '';
108 function save_callback(data)
110 info('Datensatz gespeichert');
114 function delete_callback(data)
116 info('Datensatz gelöscht');
120 function form_save(obj)
123 ajax_request('save', Form.serialize(obj.form), save_callback);
127 function form_insert(obj)
130 ajax_request('insert', Form.serialize(obj.form), save_callback);
134 function form_delete(obj)
136 var id = document.getElementById('edit_id');
137 var source = document.getElementById('edit_source');
139 var params = 'id='+id.value + '&source='+source.value;
140 ajax_request('delete', params, delete_callback);
147 function details_callback(data)
150 set_value('detail_'+id, data[id]);
153 function fetch_callback(data)
156 set_value('edit_'+id, data[id]);
158 var status = document.getElementById('form_status');
159 status.innerHTML = 'Geändert: ' + data.sys_edit + ' von ' + data.sys_user;
165 function gridDrillDown(e)
167 if (e.originalTarget && e.originalTarget.target && e.originalTarget.target == '_top')
170 var id = 0; // Column 0 contains ID
171 var row = grid.edit.drillDown(e,0,0);
172 var cell = grid.columns[id].cell(row);
174 var value = cell.innerHTML;
176 if (document.getElementById('details')) {
177 var params = 'source=' + grid.tableId.substr(5) + '&id=' + value;
178 ajax_request('details', params, details_callback);
181 if (document.getElementById('form_edit')) {
182 var params = 'source=' + grid.tableId.substr(5) + '&id=' + value;
183 ajax_request('fetch', params, fetch_callback);
187 /* Update an existing grid
189 * grid is a live grid
190 * filter is the array index of the $table_filters array in mskdef
191 * value is the value applied to the filter
193 function grid_update(grid, filter, value)
195 if (grid === undefined)
198 if (filter !== undefined && filter !== false)
199 grid.buffer.options.requestParameters = ['w'+filter+'=' + value];
201 grid.buffer.setTotalRows(0);
202 grid.buffer.foundRowCount = false;
204 grid.ClearSelection();
206 if (grid.bookmark) grid.bookmark.innerHTML=" ";
208 grid.buffer.fetch(-1);
211 var calendars = new Array();
212 function calendar_callback(value)
214 this.input.value = value;
217 function calendar(name,event)
219 var input = document.getElementById(name);
222 if (calendars[name] == undefined) {
223 calendars[name] = new Rico.CalendarControl('calendar_'+name,
225 dateFmt: 'dd.mm.yyyy',
227 calendars[name].atLoad();
228 calendars[name].returnValue = calendar_callback;
229 RicoUtil.positionCtlOverIcon(calendars[name].container,input);
230 calendars[name].open(input.value);
231 calendars[name].input = input;
233 if (Element.visible(calendars[name].container))
234 calendars[name].close();
236 calendars[name].open(input.value);