You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

416 lines
12 KiB

3 years ago
YL.onReady(function () {
var lang = YL.static.lang === 'zh-cn' || YL.static.lang === 'zh-tw'?
{
Mon: '星期一',
MonShort: '一',
Tues: '星期二',
TuesShort: '二',
Wed: '星期三',
WedShort: '三',
Thur: '星期四',
ThurShort: '四',
Fri: '星期五',
FriShort: '五',
Sat: '星期六',
SatShort: '六',
Sun: '星期日',
SunShort: '日',
Jan: '1月',
Feb: '2月',
Mar: '3月',
Apr: '4月',
May: '5月',
June: '6月',
July: '7月',
Aug: '8月',
Sept: '9月',
Oct: '10月',
Nov: '11月',
Dec: '12月',
}:
{
Mon: 'Monday',
MonShort: 'Mon',
Tues: 'Tuesday',
TuesShort: 'Tues',
Wed: 'Wednesday',
WedShort: 'Wed',
Thur: 'Thursday',
ThurShort: 'Thur',
Fri: 'Friday',
FriShort: 'Fri',
Sat: 'Saturday',
SatShort: 'Sat',
Sun: 'Sunday',
SunShort: 'Sun',
Jan: 'Jan',
Feb: 'Feb',
Mar: 'Mar',
Apr: 'Apr',
May: 'May',
June: 'June',
July: 'July',
Aug: 'Aug',
Sept: 'Sept',
Oct: 'Oct',
Nov: 'Nov',
Dec: 'Dec',
};
var o_box_time = document.getElementById('_box_time');
var aDiv_time = o_box_time.getElementsByClassName('div-time');
var arrWeek = [lang.Sun, lang.Mon, lang.Tues, lang.Wed, lang.Thur, lang.Fri, lang.Sat];
var oCalendar = o_box_time.getElementsByClassName('calendar')[0];
var _aStrong = oCalendar.getElementsByTagName('strong');
var oDays = oCalendar.getElementsByClassName('_days')[0].getElementsByTagName('ul')[0];
var _oHeader = document.getElementsByClassName('_header')[0];
var _r_l = _oHeader.getElementsByTagName('span');
var _oYears_months = o_box_time.getElementsByClassName('_years_months')[0];
var _oYears_months_ul = _oYears_months.getElementsByTagName('ul')[0];
var _oNormal = o_box_time.getElementsByClassName('_normal')[0];
var _aLi_months = _oYears_months.getElementsByTagName('li');
var _delay_time = null;
var onOff = 0;
var _oTenYears = o_box_time.getElementsByClassName('_tenyears')[0];
var _oTenYears_ul = _oTenYears.firstElementChild;
var _oTenYears_lis = _oTenYears.getElementsByTagName('li');
var _nowDate = new Date();
var _setyear = _nowDate.getFullYear();
var _setmonth = _nowDate.getMonth();
var _setdate = _nowDate.getDate();
var _relYear = _setyear;
var _relMonth = _setmonth;
var _relDate = _setdate;
var _temp_ten = 0;
initDom();
showTime();
setInterval(showTime, 1000);
function showTime() {
var date = new Date();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var week = date.getDay();
var str;
str = toZero(h) + ':' + toZero(m) + ':' + toZero(s);
aDiv_time[0].innerHTML = str;
str = year + '/' + month + '/' + day + ',' + arrWeek[week];
aDiv_time[1].innerHTML = str;
}
aDiv_time[1].onclick = function () {
clearTimeout(_delay_time);
_setyear = _relYear;
_setmonth = _relMonth;
_setdate = _relDate;
showDate();
onOff = 0;
_oYears_months.style.display = 'none';
_oNormal.style.display = 'block';
_oTenYears.style.display = 'none';
for (var i = 0; i < _aLi_months.length; i++) {
_aLi_months[i].className = '';
}
_aLi_months[_setmonth].className = 'active';
};
var i;
for (i = 0; i < 3; i++) {
_aLi_months[_setmonth + i * 12].className = 'active';
}
for (i = 0; i < _aLi_months.length; i++) {
(function (n) {
_aLi_months[n].onclick = function () {
var i;
for (i = 0; i < _aLi_months.length; i++) {
_aLi_months[i].className = '';
}
_setmonth = n % 12;
for (i = 0; i < _aLi_months.length; i++) {
_aLi_months[i].className = '';
}
for (i = 0; i < 3; i++) {
_aLi_months[_setmonth + i * 12].className = 'active';
}
console.log(this.offsetLeft, this.offsetTop);
clearTimeout(_delay_time);
_delay_time = setTimeout(function () {
_aStrong[0].innerHTML = _setyear + '/' + (_setmonth + 1);
_oYears_months.style.display = 'none';
_oNormal.style.display = 'block';
_fn_block(_oNormal);
_oTenYears.style.display = 'none';
// document.title=onOff;
showDate();
onOff = 0;
}, 200);
}
})(i);
}
function _fn_block(ele) {
ele.style.transition = '0s';
ele.style.transform = 'scale(0.5)';
setTimeout(function () {
ele.style.transition = '0.3s';
ele.style.transform = 'scale(1)';
}, 10);
}
showDate();
function showDate() {
var str = '';
if (_setmonth === 0) {
str = _fn_layout(_setyear - 1, 11, _setdate) + _fn_layout(_setyear, _setmonth, _setdate) + _fn_layout(_setyear, _setmonth + 1, _setdate);
} else if (_setmonth === 11) {
str = _fn_layout(_setyear, _setmonth - 1, _setdate) + _fn_layout(_setyear, _setmonth, _setdate) + _fn_layout(_setyear + 1, 0, _setdate);
} else {
str = _fn_layout(_setyear, _setmonth - 1, _setdate) + _fn_layout(_setyear, _setmonth, _setdate) + _fn_layout(_setyear, _setmonth + 1, _setdate);
}
oDays.innerHTML = str;
_aStrong[0].innerHTML = _setyear + '/' + (_setmonth + 1);
}
function _fn_layout(_setyear, _setmonth, _setdate) {
if (_setyear === _relYear && _setmonth === _relMonth) {
_setdate = _relDate;
} else {
_setdate = 1;
}
var _oDate = new Date();
var _date;
_oDate.setDate(_setdate);
_oDate.setMonth(_setmonth);
_oDate.setFullYear(_setyear);
_date = new Date(_oDate);
_date.setDate(0);
var _prevDays = _date.getDate();
_date = new Date(_oDate);
_date.setDate(1);
var _week = _date.getDay();
_date = new Date(_oDate);
_date.setDate(1);
_date.setMonth(_setmonth + 1);
_date.setDate(0);
var _allDays = _date.getDate();
var str = '';
var num = 0;
var i;
if (_week === 0) {
_week = 7;
}
for (i = 0; i < _week; i++) {
str = '<li class="grey">' + (_prevDays - i) + '</li>' + str;
num++;
}
for (i = 0; i < _allDays; i++) {
if (i === _setdate - 1) {
str += '<li class="active">' + (i + 1) + '</li>';
} else {
str += '<li>' + (i + 1) + '</li>';
}
num++;
}
for (i = 0; i < 42 - num; i++) {
str += '<li class="grey">' + (i + 1) + '</li>';
}
return str;
}
_aStrong[0].onclick = function () {
clearTimeout(_delay_time);
if (onOff === 0) {
_aStrong[0].innerHTML = _setyear;
_oYears_months.style.display = 'block';
_fn_block(_oYears_months);
_oNormal.style.display = 'none';
_oTenYears.style.display = 'none';
} else if (onOff === 1) {
_temp_ten = 0;
_aStrong[0].innerHTML = Math.floor(_setyear / 10) * 10 + '-' + (Math.floor(_setyear / 10) * 10 + 9);
_oYears_months.style.display = 'none';
_oNormal.style.display = 'none';
_oTenYears.style.display = 'block';
_fn_block(_oTenYears);
} else if (onOff === 2) {
_aStrong[0].innerHTML = _setyear + '/' + (_setmonth + 1);
_oYears_months.style.display = 'none';
_oNormal.style.display = 'block';
_fn_block(_oNormal);
_oTenYears.style.display = 'none';
}
var i;
for (i = 0; i < _aLi_months.length; i++) {
_aLi_months[i].className = '';
}
for (i = 0; i < 3; i++) {
_aLi_months[_setmonth + i * 12].className = 'active';
}
if (onOff === 1) {
ten(_setyear);
}
if (onOff === 2) {
showDate();
}
onOff++;
onOff = onOff % 3;
};
function ten(_year) {
_oTenYears_ul.innerHTML = _layout_tenyear(_year - 10) + _layout_tenyear(_year) + _layout_tenyear(_year + 10);
for (var i = 0; i < _oTenYears_lis.length; i++) {
_oTenYears_lis[i].onclick = function () {
for (var i = 0; i < _oTenYears_lis.length; i++) {
_oTenYears_lis[i].className === 'active' && (_oTenYears_lis[i].className = '');
}
this.className = 'active';
_setyear = parseInt(this.innerHTML);
clearTimeout(_delay_time);
_delay_time = setTimeout(function () {
onOff = 1;
_aStrong[0].innerHTML = _setyear;
_oYears_months.style.display = 'block';
_fn_block(_oYears_months);
_oNormal.style.display = 'none';
_oTenYears.style.display = 'none';
}, 200);
}
}
}
_r_l[0].onclick = function () {
if (onOff === 0) {
_setmonth--;
if (_setmonth === -1) {
_setmonth = 11; //0-11
_setyear--;
}
showDate();
oDays.style.transition = '0s';
oDays.style.top = '-25.2rem';
setTimeout(function () {
oDays.style.transition = '0.5s';
oDays.style.top = '-12.6rem';
}, 10);
} else if (onOff === 1) {
_setyear--;
_oYears_months_ul.style.transition = '0s';
_oYears_months_ul.style.top = '-21.6rem';
setTimeout(function () {
_oYears_months_ul.style.transition = '0.5s';
_oYears_months_ul.style.top = '-10.8rem';
}, 10);
_aStrong[0].innerHTML = _setyear;
} else if (onOff === 2) {
_temp_ten--;
var _temp = _setyear + 10 * _temp_ten;
_aStrong[0].innerHTML = Math.floor(_temp / 10) * 10 + '-' + (Math.floor(_temp / 10) * 10 + 9);
ten(_temp);
_oTenYears_ul.style.transition = '0s';
_oTenYears_ul.style.top = '-21.6rem';
setTimeout(function () {
_oTenYears_ul.style.transition = '0.5s';
_oTenYears_ul.style.top = '-10.8rem';
}, 10);
}
};
_r_l[1].onclick = function () {
if (onOff === 0) {
_setmonth++;
if (_setmonth === 12) {
_setmonth = 0; //0-11
_setyear++;
}
showDate();
oDays.style.transition = '0s';
oDays.style.top = '0';
setTimeout(function () {
oDays.style.transition = '0.5s';
oDays.style.top = '-12.6rem';
}, 10);
} else if (onOff === 1) {
_setyear++;
_oYears_months_ul.style.transition = '0s';
_oYears_months_ul.style.top = '0';
setTimeout(function () {
_oYears_months_ul.style.transition = '0.5s';
_oYears_months_ul.style.top = '-10.8rem';
}, 10);
_aStrong[0].innerHTML = _setyear;
} else if (onOff === 2) {
_temp_ten++;
var _temp = _setyear + 10 * _temp_ten;
_aStrong[0].innerHTML = Math.floor(_temp / 10) * 10 + '-' + (Math.floor(_temp / 10) * 10 + 9);
ten(_temp);
_oTenYears_ul.style.transition = '0s';
_oTenYears_ul.style.top = '0';
setTimeout(function () {
_oTenYears_ul.style.transition = '0.5s';
_oTenYears_ul.style.top = '-10.8rem';
}, 10);
}
};
function toZero(num) {
return num < 10 ? '0' + num : '' + num;
}
function _layout_tenyear(_year) {
var str = '';
var num = Math.floor(_year / 10) * 10;
var start = num - 1;
var end = num + 10;
for (var i = 0; i < 12; i++) {
if ((start + i) === _setyear && (start + i) >= num && (start + i) < end) {
str += '<li class="active">' + (start + i) + '</li>';
} else if (i === 0 || i === 11) {
str += '<li class="grey">' + (start + i) + '</li>';
} else {
str += '<li>' + (start + i) + '</li>';
}
}
return str;
}
function initDom() {
var domWeek = o_box_time.getElementsByClassName('_week')[0];
var week = [lang.SunShort, lang.MonShort, lang.TuesShort, lang.WedShort, lang.ThurShort, lang.FriShort, lang.SatShort];
var months = [lang.Jan, lang.Feb, lang.Mar, lang.Apr, lang.May, lang.June, lang.July, lang.Aug, lang.Sept, lang.Oct, lang.Nov, lang.Dec];
week.forEach(function (t) {
var span = document.createElement('span');
span.innerHTML = t;
domWeek.appendChild(span);
});
var funcAddMonth = function () {
months.forEach(function (t) {
var li = document.createElement('li');
li.innerHTML = t;
_oYears_months_ul.appendChild(li);
});
};
funcAddMonth();
funcAddMonth();
funcAddMonth();
}
});