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) {
16 for(var i in result ) {
23 // debug(cmd+':'+property+':'+type+':'+id);
24 // seek element by id if there is no elemnt with given name
25 objElement = document.getElementsByName(id)[0] || document.getElementById(id);
27 eval("objElement."+property+"=data;");
28 } else if(cmd=='up') {
29 // if(!objElement) debug('No element "'+id+'"');
30 if (objElement.tagName == 'INPUT' || objElement.tagName == 'TEXTAREA')
31 objElement.value = data;
33 objElement.innerHTML = data; // selector, div, span etc
34 } else if(cmd=='di') { // disable/enable element
35 objElement.disabled = data;
36 } else if(cmd=='fc') { // set focus
38 } else if(cmd=='js') { // evaluate js code
40 } else if(cmd=='rd') { // client-side redirection
42 window.location = data;
44 errors = errors+'<br>Unknown ajax function: '+cmd;
47 // Write errors to the debug div.
48 document.getElementById('msgbox').innerHTML = errors;
53 //document.getElementById('msgbox').scrollIntoView(true);
54 // Restore focus if we've just lost focus because of DOM element refresh
58 false // do not disable caching
61 // returns input field values submitted when form button 'name' is pressed
63 JsHttpRequest.formValues = function(inp)
69 if (typeof(inp) == "string")
70 submitObj = document.getElementsByName(inp)[0];
74 objForm = submitObj.form;
78 var formElements = objForm.elements;
79 for( var i=0; i < formElements.length; i++)
81 var el = formElements[i];
82 if (!el.name) continue;
85 ((el.type == 'radio' || el.type == 'checkbox') && el.checked == false)
86 || (el.type == 'submit' && el.name!=submitObj.name))
88 if (el.disabled && el.disabled == true)
93 if(el.type=='select-multiple')
95 for (var j = 0; j < el.length; j++)
97 if (el.options[j].selected == true)
98 q[name] = el.options[j].value;
108 // this is to avoid caching problems
109 q['_random'] = Math.random()*1234567;
113 // User price formatting
115 function price_format(post, num, dec, label) {
116 //num = num.toString().replace(/\$|\,/g,'');
119 sign = (num == (num = Math.abs(num)));
121 decsize = Math.pow(10, dec);
122 num = Math.floor(num*decsize+0.50000000001);
124 num = Math.floor(num/decsize).toString();
125 for( i=cents.toString().length; i<dec; i++){
128 for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
129 num = num.substring(0,num.length-(4*i+3))+user.ts+
130 num.substring(num.length-(4*i+3));
131 num = ((sign)?'':'-') + num;
132 if(dec!=0) num = num + user.ds + cents;
134 document.getElementById(post).innerHTML = num;
136 document.getElementsByName(post)[0].value = num;
139 function get_amount(doc, label) {
141 var val = document.getElementById(doc).innerHTML;
143 var val = document.getElementsByName(doc)[0].value;
144 val = val.replace(new RegExp('\\'+user.ts, 'g'),'');
145 val = val.replace(new RegExp('\\'+user.ds, 'g'),'.');
150 if (window.history.length <= 1)
153 window.history.go(-1);
156 function setFocus(name, byId) {
160 name = _focus; // last focus set in onfocus handlers
161 else { // no current focus - set it from from hidden var (first page display)
162 var cur = document.getElementsByName('_focus')[0];
163 if(cur) name = cur.value;
167 el = document.getElementById(name);
169 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()};