2 // JsHttpRequest class extensions.
4 JsHttpRequest.request= function(submit) {
5 var url = window.location.toString();
6 url = url.substring(0, url.indexOf('?'));
9 'POST '+url, // backend
10 this.formValues(submit),
12 // Function is called when an answer arrives.
13 function(result, errors) {
14 // Write errors to the debug div.
15 document.getElementById('msgbox').innerHTML = errors;
19 for(var i in result ) {
27 // debug(cmd+':'+property+':'+type+':'+id);
28 // seek element by id if there is no elemnt with given name
29 objElement = document.getElementsByName(id)[0] || document.getElementById(id);
31 eval("objElement."+property+"=data;");
32 } else if(cmd=='up') {
33 // if(!objElement) debug('No element "'+id+'"');
34 if (objElement.tagName == 'INPUT' || objElement.tagName == 'TEXTAREA')
35 objElement.value = data;
37 objElement.innerHTML = data; // selector, div, span etc
38 } else if(cmd=='di') { // disable/enable element
39 objElement.disabled = data;
40 } else if(cmd=='fc') { // set focus
42 } else if(cmd=='js') { // evaluate js code
44 } else if(cmd=='rd') { // client-side redirection
46 window.location = data;
48 errors = errors+'<br>Unknown ajax function: '+cmd;
54 //document.getElementById('msgbox').scrollIntoView(true);
55 // Restore focus if we've just lost focus because of DOM element refresh
59 false // do not disable caching
62 // returns input field values submitted when form button 'name' is pressed
64 JsHttpRequest.formValues = function(inp)
70 if (typeof(inp) == "string")
71 submitObj = document.getElementsByName(inp)[0];
75 objForm = submitObj.form;
79 var formElements = objForm.elements;
80 for( var i=0; i < formElements.length; i++)
82 var el = formElements[i];
83 if (!el.name) continue;
86 ((el.type == 'radio' || el.type == 'checkbox') && el.checked == false)
87 || (el.type == 'submit' && el.name!=submitObj.name))
89 if (el.disabled && el.disabled == true)
94 if(el.type=='select-multiple')
96 for (var j = 0; j < el.length; j++)
98 if (el.options[j].selected == true)
99 q[name] = el.options[j].value;
109 // this is to avoid caching problems
110 q['_random'] = Math.random()*1234567;
114 // User price formatting
116 function price_format(post, num, dec, label) {
117 //num = num.toString().replace(/\$|\,/g,'');
120 sign = (num == (num = Math.abs(num)));
122 decsize = Math.pow(10, dec);
123 num = Math.floor(num*decsize+0.50000000001);
125 num = Math.floor(num/decsize).toString();
126 for( i=cents.toString().length; i<dec; i++){
129 for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
130 num = num.substring(0,num.length-(4*i+3))+user.ts+
131 num.substring(num.length-(4*i+3));
132 num = ((sign)?'':'-') + num;
133 if(dec!=0) num = num + user.ds + cents;
135 document.getElementById(post).innerHTML = num;
137 document.getElementsByName(post)[0].value = num;
140 function get_amount(doc, label) {
142 var val = document.getElementById(doc).innerHTML;
144 var val = document.getElementsByName(doc)[0].value;
145 val = val.replace(new RegExp('\\'+user.ts, 'g'),'');
146 val = val.replace(new RegExp('\\'+user.ds, 'g'),'.');
151 if (window.history.length <= 1)
154 window.history.go(-1);
157 function setFocus(name, byId) {
161 name = _focus; // last focus set in onfocus handlers
162 else { // no current focus - set it from from hidden var (first page display)
163 var cur = document.getElementsByName('_focus')[0];
164 if(cur) name = cur.value;
168 el = document.getElementById(name);
170 el = document.getElementsByName(name)[0];
172 // The timeout is needed to prevent unpredictable behaviour on IE & Gecko.
173 // Using tmp var prevents crash on IE5
174 var tmp = function() {el.focus()};