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/
|
||||
* Modified: http://svn.yourcmc.ru/viewvc.py/vitaphoto/js/{util.js,calendar.js,calendar.css}
|
||||
* (uses addListener() and getOffset() from util.js)
|
||||
* Version: 2015-05-03
|
||||
* Version: 2017-05-03
|
||||
* License: MIT-like, http://www.openjs.com/license.php
|
||||
*
|
||||
* Example:
|
||||
|
@ -14,7 +14,8 @@
|
|||
* Calendar.set("date");
|
||||
* </script>
|
||||
*/
|
||||
var Calendar = {
|
||||
if (!window.Calendar) {
|
||||
window.Calendar = {
|
||||
// Configuration:
|
||||
month_names: ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],
|
||||
close_label: 'Закрыть',
|
||||
|
@ -47,13 +48,12 @@ var Calendar = {
|
|||
|
||||
/// Called when the user clicks on a date in the calendar.
|
||||
selectDate:function(year,month,day) {
|
||||
var ths = _calendar_active_instance;
|
||||
var i = ths.opt["input"];
|
||||
var i = this.opt["input"];
|
||||
var t = i.value.split(/\s+/, 2)[1]||'';
|
||||
if (t)
|
||||
t = ' '+t;
|
||||
i.value = (ths.format == 'Y-m-d' ? year + '-' + month + '-' + day : day + '.' + month + '.' + year) + t;
|
||||
ths.hideCalendar();
|
||||
i.value = (this.format == 'Y-m-d' ? year + '-' + month + '-' + day : day + '.' + month + '.' + year) + t;
|
||||
this.hideCalendar();
|
||||
},
|
||||
|
||||
showMonths:function(year, month) {
|
||||
|
@ -249,31 +249,11 @@ var Calendar = {
|
|||
|
||||
this.makeCalendar(this.selected.getFullYear(), this.selected.getMonth());
|
||||
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.
|
||||
hideCalendar: function(instance) {
|
||||
var active_calendar_id = "";
|
||||
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;
|
||||
hideCalendar: function() {
|
||||
document.getElementById(this.opt['calendar']).style.display = "none";
|
||||
},
|
||||
|
||||
/// Setup a text input box to be a calendar box.
|
||||
|
@ -283,13 +263,12 @@ var Calendar = {
|
|||
if (!input_or_id)
|
||||
return; // If the input field is not there, exit.
|
||||
|
||||
if (!this.opt['calendar'])
|
||||
this.init();
|
||||
if (!Calendar.opt['calendar'] || !document.getElementById(Calendar.opt['calendar']))
|
||||
Calendar.init();
|
||||
|
||||
var ths = this;
|
||||
addListener(input_or_id, 'focus', function(ev) {
|
||||
ths.opt['input'] = this;
|
||||
ths.showCalendar();
|
||||
Calendar.opt['input'] = this;
|
||||
Calendar.showCalendar();
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -297,12 +276,26 @@ var Calendar = {
|
|||
init: function() {
|
||||
if(!this.opt['calendar'] || !document.getElementById(this.opt['calendar'])) {
|
||||
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.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);
|
||||
|
||||
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