+}
+
+var _w;
+
+function callEditor(key) {
+ var el = document.getElementsByName(editors[key][1])[0];
+ if(_w) _w.close(); // this is really necessary to have window on top in FF2 :/
+ var left = (screen.width - editors[key][2]) / 2;
+ var top = (screen.height - editors[key][3]) / 2;
+ _w = open(editors[key][0]+el.value+'&popup=1',
+ "edit","scrollbars=yes,resizable=0,width="+editors[key][2]+",height="+editors[key][3]+",left="+left+",top="+top+",screenX="+left+",screenY="+top);
+ if (_w.opener == null)
+ _w.opener = self;
+ editors._call = key; // store call point for passBack
+ _w.focus();
+}
+
+function passBack(value) {
+ var o = opener;
+ if(value != false) {
+ var back = o.editors[o.editors._call]; // form input bindings
+ var to = o.document.getElementsByName(back[1])[0];
+ if (to) {
+ if (to[0] != undefined)
+ to[0].value = value; // ugly hack to set selector to any value
+ to.value = value;
+ // update page after item selection
+ o.JsHttpRequest.request('_'+to.name+'_update', to.form);
+ o.setFocus(to.name);
+ }
+ }
+ close();
+}
+
+/*
+ Normalize date format using previous input value to guess missing date elements.
+ Helps fast date input field change with only single or double numbers (for day or day-and-month fragments)
+*/
+function fix_date(date, last)
+{
+ var dat = last.split(user.datesep);
+ var cur = date.split(user.datesep);
+ var day, month, year;
+
+// TODO: user.date as default?
+// TODO: user.datesys
+ if (date == "" || date == last) // should we return an empty date or should we return last?
+ return date;
+ if (user.datefmt == 0 || user.datefmt == 3) // set defaults
+ {
+ day = dat[1]; month = dat[0]; year = dat[2];
+ } else if (user.datefmt == 1 || user.datefmt == 4){
+ day = dat[0]; month = dat[1]; year = dat[2];
+ } else {
+ day = dat[2]; month = dat[1]; year = dat[0];
+ }
+ if (cur[1] != undefined && cur[1] != "") // day or month entered, could be string 3
+ {
+ if (user.datefmt == 0 || user.datefmt == 3 || ((user.datefmt == 2 || user.datefmt == 5) && (cur[2] == undefined || cur[2] == "")))
+ day = cur[1];
+ else
+ month = cur[1];
+ }
+ if (cur[0] != undefined && cur[0] != "") // day or month entered. could be string 3
+ {
+ if (cur[1] == undefined || cur[1] == "")
+ day = cur[0];
+ else if (user.datefmt == 0 || user.datefmt == 3 || ((user.datefmt == 2 || user.datefmt == 5) && (cur[2] == undefined || cur[2] == "")))
+ month = cur[0];
+ else if (user.datefmt == 2 || user.datefmt == 5)
+ year = cur[0];
+ else
+ day = cur[0];
+ }
+ if (cur[2] != undefined && cur[2] != "") // year,
+ {
+ if (user.datefmt == 2 || user.datefmt == 5)
+ day = cur[2];
+ else
+ year = cur[2];
+ }
+ if (user.datefmt<3) {
+ if (day<10) day = '0'+parseInt(day, 10);
+ if (month<10) month = '0'+parseInt(month, 10);
+ }
+ if (year<100) year = year<60 ? (2000+parseInt(year,10)) : (1900+parseInt(year,10));
+
+// console.info(day,month,year)
+ if (user.datefmt == 0 || user.datefmt==3)
+ return month+user.datesep+day+user.datesep+year;
+ if (user.datefmt == 1 || user.datefmt==4)
+ return day+user.datesep+month+user.datesep+year;
+ return year+user.datesep+month+user.datesep+day;
+}