1
function adeiBusy(msg, module_name, module) {
5
function adeiGetErrorMessage(msg, module_name, module) {
6
if (typeof module_name == "undefined")
9
return "Error in '" + module_name + "': " + msg;
12
function adeiReportError(msg, module_name, module) {
13
alert(adeiGetErrorMessage(msg, module_name, module));
16
function adeiGetExceptionMessage(e, msg) {
18
if (msg) emsg = msg + ", " + translate("error: ");
19
else emsg = translate("Exception caught, error: ");
21
if (e.description) emsg += e.description;
22
else if (e.message) emsg += e.message;
23
else emsg += translate("Unknown error");
26
emsg += "(" + e.fileName;
27
if (e.lineNumber) emsg += ":" + e.lineNumber;
32
emsg += "\n\n" + e.stack;
38
function adeiReportException(e, msg, module_name, module) {
39
var emsg = adeiGetExceptionMessage(e, msg);
40
adeiReportError(emsg, module_name, module);
44
function adeiReplaceProp(props, prop, value) {
45
/* To be implemented */
48
7
function objectClone(obj, skip) {
49
8
if (typeof skip == "undefined") skip = new Array();
61
function urlConcatenate(base, extra) {
63
if (/\?/.exec(base)) return base + "&" + extra;
64
else return base + "?" + extra;
69
function urlAddProperty(base, name, value) {
70
if (/\?/.exec(base)) return base + "&" + name + "=" + value;
71
else return base + "?" + name + "=" + value;
74
function adeiDateFormat(d, range) {
75
var mydate = new Date(Math.floor(d)*1000);
76
if ((range)&&(range <= adei.cfg.subsecond_threshold)) {
77
var ds = d.toString();
78
var subsecs = ds.indexOf('.');
79
if (subsecs >= 0) return dateFormat(mydate) + '.' + ds.substr(subsecs + 1);
80
else return dateFormat(mydate);
81
} else return dateFormat(mydate);
84
function adeiDateReadableFormat(d, range) {
85
if ((range)&&(range <= adei.cfg.subsecond_threshold)) {
86
var mydate = new Date(Math.floor(d*1000));
88
var mydate = new Date(Math.floor(d)*1000);
91
// return mydate.toUTCString();
92
return mydate.format("isoFullDateTime", true);
95
function adeiDateParse(d) {
96
var subsecs = d.indexOf('.');
98
var res = Date.parse(d + " UTC");
100
res = serverGetResult(adei.GetToolService("parse_date", "timezone=UTC&date=" + d));
101
if (isNaN(res)) return "";
107
var dd = d.substr(0,subsecs);
108
if (dd.indexOf('.') < 0) {
109
var res = Date.parse(dd + " UTC");
111
res = serverGetResult(adei.GetToolService("parse_date", "timezone=UTC&date=" + d));
112
if (isNaN(res)) return "";
116
res = serverGetResult(adei.GetToolService("parse_date", "timezone=UTC&date=" + d));
117
if (isNaN(res)) return "";
121
return Math.floor(res / 1000) + '.' + d.substr(subsecs + 1);
124
function adeiMathPreciseSubstract(a, b) {
126
var astr = a.toString();
127
var bstr = b.toString();
129
var pos = astr.indexOf(".");
131
else ra = parseFloat("0." + astr.substr(pos + 1));
133
pos = bstr.indexOf(".");
135
else rb = parseFloat("0." + bstr.substr(pos + 1));
138
var ia = Math.floor(a);
139
var ib = Math.floor(b);
143
var rstr = (r+1).toString();
144
pos = rstr.indexOf('.');
145
return (ia - ib - 1).toString() + rstr.substr(pos);
147
var rstr = r.toString();
148
pos = rstr.indexOf('.');
149
return (ia - ib).toString() + rstr.substr(pos);
150
} else return ia - ib;
155
function adeiMathPreciseAdd(a, b) {
158
var astr = a.toString();
159
var bstr = b.toString();
161
var pos = astr.indexOf(".");
163
else ra = parseFloat("0." + astr.substr(pos + 1));
165
pos = bstr.indexOf(".");
167
else rb = parseFloat("0." + bstr.substr(pos + 1));
170
var ia = Math.floor(a);
171
var ib = Math.floor(b);
175
var rstr = r.toString();
176
pos = rstr.indexOf('.');
177
return (ia + ib + 1).toString() + rstr.substr(pos);
179
var rstr = r.toString();
180
pos = rstr.indexOf('.');
181
return (ia + ib).toString() + rstr.substr(pos);
182
} else return ia + ib + 1;
187
function translate(msg) {
190
if (!arguments || arguments.length < 2 || !RegExp) {
194
var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
195
var a = b = [], numSubstitutions = 0, numMatches = 0;
196
while (a = re.exec(str))
198
var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
199
var pPrecision = a[5], pType = a[6], rightPart = a[7];
209
if (numSubstitutions >= arguments.length)
211
alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
213
var param = arguments[numSubstitutions];
215
if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
216
else if (pPad) pad = pPad;
217
var justifyRight = true;
218
if (pJustify && pJustify === "-") justifyRight = false;
220
if (pMinLength) minLength = parseInt(pMinLength);
222
if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
224
if (pType == 'b') subst = parseInt(param).toString(2);
225
else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
226
else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
227
else if (pType == 'u') subst = Math.abs(param);
228
else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
229
else if (pType == 'o') subst = parseInt(param).toString(8);
230
else if (pType == 's') subst = param;
231
else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
232
else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
234
str = leftpart + subst + rightPart;
239
// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/
242
if (!arguments || arguments.length < 1 || !RegExp)
246
var str = arguments[0];
247
var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
248
var a = b = [], numSubstitutions = 0, numMatches = 0;
249
while (a = re.exec(str))
251
var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
252
var pPrecision = a[5], pType = a[6], rightPart = a[7];
254
//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);
264
if (numSubstitutions >= arguments.length)
266
alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
268
var param = arguments[numSubstitutions];
270
if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
271
else if (pPad) pad = pPad;
272
var justifyRight = true;
273
if (pJustify && pJustify === "-") justifyRight = false;
275
if (pMinLength) minLength = parseInt(pMinLength);
277
if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
279
if (pType == 'b') subst = parseInt(param).toString(2);
280
else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
281
else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
282
else if (pType == 'u') subst = Math.abs(param);
283
else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
284
else if (pType == 'o') subst = parseInt(param).toString(8);
285
else if (pType == 's') subst = param;
286
else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
287
else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
289
str = leftpart + subst + rightPart;