Remove some spaghetti
parent
a02fbbf2d2
commit
b90d125e92
63
calendar.js
63
calendar.js
|
@ -5,7 +5,7 @@
|
||||||
* Original: http://www.openjs.com/scripts/ui/calendar/
|
* Original: http://www.openjs.com/scripts/ui/calendar/
|
||||||
* Modified: http://svn.yourcmc.ru/viewvc.py/vitaphoto/js/{util.js,calendar.js,calendar.css}
|
* Modified: http://svn.yourcmc.ru/viewvc.py/vitaphoto/js/{util.js,calendar.js,calendar.css}
|
||||||
* (uses addListener() and getOffset() from util.js)
|
* (uses addListener() and getOffset() from util.js)
|
||||||
* Version: 2015-05-03
|
* Version: 2017-05-03
|
||||||
* License: MIT-like, http://www.openjs.com/license.php
|
* License: MIT-like, http://www.openjs.com/license.php
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
|
@ -14,7 +14,8 @@
|
||||||
* Calendar.set("date");
|
* Calendar.set("date");
|
||||||
* </script>
|
* </script>
|
||||||
*/
|
*/
|
||||||
var Calendar = {
|
if (!window.Calendar) {
|
||||||
|
window.Calendar = {
|
||||||
// Configuration:
|
// Configuration:
|
||||||
month_names: ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],
|
month_names: ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],
|
||||||
close_label: 'Закрыть',
|
close_label: 'Закрыть',
|
||||||
|
@ -47,13 +48,12 @@ var Calendar = {
|
||||||
|
|
||||||
/// Called when the user clicks on a date in the calendar.
|
/// Called when the user clicks on a date in the calendar.
|
||||||
selectDate:function(year,month,day) {
|
selectDate:function(year,month,day) {
|
||||||
var ths = _calendar_active_instance;
|
var i = this.opt["input"];
|
||||||
var i = ths.opt["input"];
|
|
||||||
var t = i.value.split(/\s+/, 2)[1]||'';
|
var t = i.value.split(/\s+/, 2)[1]||'';
|
||||||
if (t)
|
if (t)
|
||||||
t = ' '+t;
|
t = ' '+t;
|
||||||
i.value = (ths.format == 'Y-m-d' ? year + '-' + month + '-' + day : day + '.' + month + '.' + year) + t;
|
i.value = (this.format == 'Y-m-d' ? year + '-' + month + '-' + day : day + '.' + month + '.' + year) + t;
|
||||||
ths.hideCalendar();
|
this.hideCalendar();
|
||||||
},
|
},
|
||||||
|
|
||||||
showMonths:function(year, month) {
|
showMonths:function(year, month) {
|
||||||
|
@ -249,31 +249,11 @@ var Calendar = {
|
||||||
|
|
||||||
this.makeCalendar(this.selected.getFullYear(), this.selected.getMonth());
|
this.makeCalendar(this.selected.getFullYear(), this.selected.getMonth());
|
||||||
document.getElementById(this.opt['calendar']).style.display = "block";
|
document.getElementById(this.opt['calendar']).style.display = "block";
|
||||||
_calendar_active_instance = this;
|
|
||||||
|
|
||||||
if (!Calendar.addedListener) {
|
|
||||||
addListener(div, "mousedown", function(ev) {
|
|
||||||
ev = ev || window.event;
|
|
||||||
if (ev.stopPropagation)
|
|
||||||
ev.stopPropagation();
|
|
||||||
else
|
|
||||||
ev.cancelBubble = true;
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
addListener(document, "mousedown", function() { Calendar.hideCalendar(); });
|
|
||||||
Calendar.addedListener = true;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Hides the currently show calendar.
|
/// Hides the currently show calendar.
|
||||||
hideCalendar: function(instance) {
|
hideCalendar: function() {
|
||||||
var active_calendar_id = "";
|
document.getElementById(this.opt['calendar']).style.display = "none";
|
||||||
if(instance) active_calendar_id = instance.opt['calendar'];
|
|
||||||
else if(!_calendar_active_instance) return;
|
|
||||||
else active_calendar_id = _calendar_active_instance.opt['calendar'];
|
|
||||||
|
|
||||||
if(active_calendar_id) document.getElementById(active_calendar_id).style.display = "none";
|
|
||||||
_calendar_active_instance = null;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/// Setup a text input box to be a calendar box.
|
/// Setup a text input box to be a calendar box.
|
||||||
|
@ -283,13 +263,12 @@ var Calendar = {
|
||||||
if (!input_or_id)
|
if (!input_or_id)
|
||||||
return; // If the input field is not there, exit.
|
return; // If the input field is not there, exit.
|
||||||
|
|
||||||
if (!this.opt['calendar'])
|
if (!Calendar.opt['calendar'] || !document.getElementById(Calendar.opt['calendar']))
|
||||||
this.init();
|
Calendar.init();
|
||||||
|
|
||||||
var ths = this;
|
|
||||||
addListener(input_or_id, 'focus', function(ev) {
|
addListener(input_or_id, 'focus', function(ev) {
|
||||||
ths.opt['input'] = this;
|
Calendar.opt['input'] = this;
|
||||||
ths.showCalendar();
|
Calendar.showCalendar();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -297,12 +276,26 @@ var Calendar = {
|
||||||
init: function() {
|
init: function() {
|
||||||
if(!this.opt['calendar'] || !document.getElementById(this.opt['calendar'])) {
|
if(!this.opt['calendar'] || !document.getElementById(this.opt['calendar'])) {
|
||||||
var div = document.createElement('div');
|
var div = document.createElement('div');
|
||||||
if(!this.opt['calendar']) this.opt['calendar'] = 'calender_div_'+ Math.round(Math.random() * 100);
|
if(!this.opt['calendar'])
|
||||||
|
this.opt['calendar'] = 'calender_div_'+ Math.round(Math.random() * 100);
|
||||||
|
|
||||||
div.setAttribute('id',this.opt['calendar']);
|
div.setAttribute('id',this.opt['calendar']);
|
||||||
div.className="calendar-box";
|
div.className="calendar-box";
|
||||||
|
addListener(div, "mousedown", function(ev) {
|
||||||
|
ev = ev || window.event;
|
||||||
|
if (ev.stopPropagation)
|
||||||
|
ev.stopPropagation();
|
||||||
|
else
|
||||||
|
ev.cancelBubble = true;
|
||||||
|
return true;
|
||||||
|
});
|
||||||
document.getElementsByTagName("body")[0].insertBefore(div,document.getElementsByTagName("body")[0].firstChild);
|
document.getElementsByTagName("body")[0].insertBefore(div,document.getElementsByTagName("body")[0].firstChild);
|
||||||
|
|
||||||
|
if (!Calendar.addedListener) {
|
||||||
|
addListener(document, "mousedown", function() { Calendar.hideCalendar(); });
|
||||||
|
Calendar.addedListener = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue