Remove some spaghetti

master
Vitaliy Filippov 2017-05-03 17:45:17 +03:00
parent a02fbbf2d2
commit b90d125e92
2 changed files with 29 additions and 36 deletions

View File

@ -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;
}
}
}
}
}

2
calendar.min.js vendored

File diff suppressed because one or more lines are too long