summaryrefslogtreecommitdiff
path: root/data/js/dateselector.js
diff options
context:
space:
mode:
Diffstat (limited to 'data/js/dateselector.js')
-rw-r--r--data/js/dateselector.js84
1 files changed, 0 insertions, 84 deletions
diff --git a/data/js/dateselector.js b/data/js/dateselector.js
deleted file mode 100644
index ed96ab8a..00000000
--- a/data/js/dateselector.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Date selector widget for the 'release date'-style dates, with support for
- * TBA and unknown month or day. Usage:
- *
- * <input type="hidden" class="dateinput" .. />
- *
- * Will add a date selector to the HTML at that place, and automatically
- * read/write the value of the hidden field. Alternative usage:
- *
- * var obj = dateLoad(ref, serfunc);
- *
- * If 'ref' is set, it will behave as above with 'ref' being the input object.
- * Otherwise it will return the widget object. The setfunc, if set, will be
- * called whenever the date widget is focussed or its value is changed.
- *
- * The object returned by dateLoad() can be used as follows:
- * obj.date_val: Always contains the currently selected date.
- * obj.dateSet(val): Change the selected date
- */
-function load(obj, serfunc) {
- var i;
- var selops = {style: 'width: 70px', onfocus:serfunc, onchange: serialize, tabIndex: 10};
-
- var year = tag('select', selops,
- tag('option', {value:0}, '-year-'),
- tag('option', {value:9999}, 'TBA')
- );
- for(i=(new Date()).getFullYear()+5; i>=1980; i--)
- year.appendChild(tag('option', {value: i}, i));
-
- var month = tag('select', selops,
- tag('option', {value:99}, '-month-')
- );
- for(i=1; i<=12; i++)
- month.appendChild(tag('option', {value: i}, i));
-
- var day = tag('select', selops,
- tag('option', {value:99}, '-day-')
- );
- for(i=1; i<=31; i++)
- day.appendChild(tag('option', {value: i}, i));
-
- var div = tag('div', {
- date_obj: obj,
- date_serfunc: serfunc,
- date_val: obj ? obj.value : 0
- }, year, month, day);
- div.dateSet = function(v){ set(div, v) };
-
- set(div, div.date_val);
- return obj ? obj.parentNode.insertBefore(div, obj) : div;
-}
-
-function set(div, val) {
- val = +val || 0;
- val = [ Math.floor(val/10000), Math.floor(val/100)%100, val%100 ];
- if(val[1] == 0) val[1] = 99;
- if(val[2] == 0) val[2] = 99;
- var l = byName(div, 'select');
- for(var i=0; i<l.length; i++)
- for(var j=0; j<l[i].options.length; j++)
- l[i].options[j].selected = l[i].options[j].value == val[i];
- serialize(div, true);
-}
-
-function serialize(div, nonotify) {
- div = div.dateSet ? div : this.parentNode;
- var sel = byName(div, 'select');
- var val = [
- sel[0].options[sel[0].selectedIndex].value*1,
- sel[1].options[sel[1].selectedIndex].value*1,
- sel[2].options[sel[2].selectedIndex].value*1
- ];
- div.date_val = val[0] == 0 ? 0 : val[0] == 9999 ? 99999999 : val[0]*10000+val[1]*100+(val[1]==99?99:val[2]);
- if(div.date_obj)
- div.date_obj.value = div.date_val;
- if(!nonotify && div.date_serfunc)
- div.date_serfunc(div);
-}
-
-var l = byClass('input', 'dateinput');
-for(var i=0; i<l.length; i++)
- load(l[i]);
-
-window.dateLoad = load;