📄 popcalendar.js
字号:
constructCalendar(); popDownYear(); } function constructYear() { popDownMonth(); sHTML = ''; if (!yearConstructed) { sHTML = '<tr><td align="center" style="cursor:pointer" onmousedown="clearInterval(intervalID1);intervalID1=setInterval(\'decYear()\',30)" onmouseup="clearInterval(intervalID1)"><font color="#000066">-</font></td></tr>'; j = 0; nStartingYear = yearSelected - 3; for ( i = (yearSelected-3); i <= (yearSelected+3); i++ ) { sName = i; if (i == yearSelected) sName = '<b>' + sName + '</b>'; sHTML += '<tr><td id="y' + j + '" style="cursor:pointer" onclick="selectYear('+j+');event.cancelBubble=true"><font color="#000066"> ' + sName + ' </font></td></tr>'; j++; } sHTML += '<tr><td align="center" style="cursor:pointer" onmousedown="clearInterval(intervalID2);intervalID2=setInterval(\'incYear()\',30)" onmouseup="clearInterval(intervalID2)"><font color="#000066">+</font></td></tr>'; document.getElementById('selectYear').innerHTML = '<table width="44" cellspacing="0" bgcolor="#f0f0f0" style="font-family:ms shell dlg;font-size:12px;border:1px solid #a0a0a0;" >' + sHTML + '</table>'; yearConstructed = true; } } function popDownYear() { clearInterval(intervalID1); clearTimeout(timeoutID1); clearInterval(intervalID2); clearTimeout(timeoutID2); crossYearObj.visibility= 'hidden'; visYear = 0; } function popUpYear() { var leftOffset if (visYear==1) { popDownYear(); visYear--; } else { constructYear(); crossYearObj.visibility = (dom||ie) ? 'visible' : 'show'; leftOffset = parseInt(crossobj.left) + document.getElementById('spanYear').offsetLeft; if (ie) leftOffset += 6; crossYearObj.left = leftOffset; crossYearObj.top = parseInt(crossobj.top) + 26; visYear++; } } /*** calendar ***/ function WeekNbr(n) { // Algorithm used: // From Klaus Tondering's Calendar document (The Authority/Guru) // http://www.tondering.dk/claus/calendar.html // a = (14-month) / 12 // y = year + 4800 - a // m = month + 12a - 3 // J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045 // d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461 // L = d4 / 1460 // d1 = ((d4 - L) mod 365) + L // WeekNumber = d1 / 7 + 1 year = n.getFullYear(); month = n.getMonth() + 1; if (startAt == 0) { day = n.getDate() + 1; } else { day = n.getDate(); } a = Math.floor((14-month) / 12); y = year + 4800 - a; m = month + 12 * a - 3; b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400); J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045; d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461; L = Math.floor(d4 / 1460); d1 = ((d4 - L) % 365) + L; week = Math.floor(d1/7) + 1; return week; } function constructCalendar () { var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31); var dateMessage; var startDate = new Date (yearSelected,monthSelected,1); var endDate; if (monthSelected==1) { endDate = new Date (yearSelected,monthSelected+1,1); endDate = new Date (endDate - (24*60*60*1000)); numDaysInMonth = endDate.getDate(); } else { numDaysInMonth = aNumDays[monthSelected]; } datePointer = 0; dayPointer = startDate.getDay() - startAt; if (dayPointer<0) dayPointer = 6; sHTML = '<table border="0" style="font-family:verdana;font-size:12px;"><tr>'; if (showWeekNumber == 1) { sHTML += '<td width="27"><b>' + weekString[language] + '</b></td><td width="1" rowspan="7" bgcolor="#d0d0d0" style="padding:0px"><img src="'+imgDir+'divider.gif" width="1"></td>'; } for (i = 0; i<7; i++) { sHTML += '<td width="27" align="right"><b><font color="#000066">' + dayName[language][i] + '</font></b></td>'; } sHTML += '</tr><tr>'; if (showWeekNumber == 1) { sHTML += '<td align="right">' + WeekNbr(startDate) + ' </td>'; } for ( var i=1; i<=dayPointer;i++ ) { sHTML += '<td> </td>'; } for ( datePointer=1; datePointer <= numDaysInMonth; datePointer++ ) { dayPointer++; sHTML += '<td align="right">'; sStyle=styleAnchor; if ((datePointer == odateSelected) && (monthSelected == omonthSelected) && (yearSelected == oyearSelected)) { sStyle+=styleLightBorder } sHint = ''; for (k = 0;k < HolidaysCounter; k++) { if ((parseInt(Holidays[k].d) == datePointer)&&(parseInt(Holidays[k].m) == (monthSelected+1))) { if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0))) { sStyle+= 'background-color:#fdd;'; sHint += sHint=="" ? Holidays[k].desc : "\n"+Holidays[k].desc; } } } sHint = sHint.replace('/\"/g', '"'); dateMessage = 'onmousemove="window.status=\''+selectDateMessage[language].replace('[date]',constructDate(datePointer,monthSelected,yearSelected, timeNow))+'\'" onmouseout="window.status=\'\'" '; if (enablePast == 0 && ((yearSelected < yearNow) || (monthSelected < monthNow) && (yearSelected == yearNow) || (datePointer < dateNow) && (monthSelected == monthNow) && (yearSelected == yearNow))) { //selDayAction = ''; selDayAction = 'href="javascript:dateSelected=' + datePointer + ';closeCalendar();"'; isPast = 1; } else { selDayAction = 'href="javascript:dateSelected=' + datePointer + ';closeCalendar();"'; isPast = 0; } if ((datePointer == dateNow) && (monthSelected == monthNow) && (yearSelected == yearNow)) { ///// today sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"><font color=#ff0000> " + datePointer + "</font> </a></b>"; } else if (dayPointer % 7 == (startAt * -1)+1) { ///// SI ES DOMINGO if (isPast==1) sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#909090>" + datePointer + "</font> </a>"; else sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#54A6E2>" + datePointer + "</font> </a>"; } else if ((dayPointer % 7 == (startAt * -1)+7 && startAt==1) || (dayPointer % 7 == startAt && startAt==0)) { ///// SI ES SABADO if (isPast==1) sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#909090>" + datePointer + "</font> </a>"; else sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#54A6E2>" + datePointer + "</font> </a>"; } else { ///// CUALQUIER OTRO DIA if (isPast==1) sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#909090>" + datePointer + "</font> </a>"; else sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' "+selDayAction+"> <font color=#000066>" + datePointer + "</font> </a>"; } sHTML += ''; if ((dayPointer+startAt) % 7 == startAt) { sHTML += '</tr><tr>'; if ((showWeekNumber == 1) && (datePointer < numDaysInMonth)) { sHTML += '<td align="right">' + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + ' </td>'; } } } document.getElementById('content').innerHTML = sHTML document.getElementById('spanMonth').innerHTML = ' ' + monthName[language][monthSelected] + ' <img id="changeMonth" src="'+imgDir+'pcaldrop1.gif" width="12" height="10" border="0">' document.getElementById('spanYear').innerHTML = ' ' + yearSelected + ' <img id="changeYear" src="'+imgDir+'pcaldrop1.gif" width="12" height="10" border="0">'; } function showCalendar(ctl, ctl2, format, lang, past, fx, fy) { if (lang != null && lang != '') language = lang; if (past != null) enablePast = past; else enablePast = 0; if (fx != null) fixedX = fx; else fixedX = -1; if (fy != null) fixedY = fy; else fixedY = -1; if (showToday == 1) { document.getElementById('lblToday').innerHTML = '<font color="#000066">' + todayString[language] + ' <a onmousemove="window.status=\''+gotoString[language]+'\'" onmouseout="window.status=\'\'" title="'+gotoString[language]+'" style="'+styleAnchor+'" href="javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();">'+weekString[language]+dayName[language][(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+','+yearNow+'年'+ monthName[language][monthNow].substring(0,3)+dateNow+'日</a></font>'; } popUpCalendar(ctl, ctl2, format); } function popUpCalendar(ctl, ctl2, format) { var leftpos = 0; var toppos = 0; if (bPageLoaded) { if (crossobj.visibility == 'hidden') { ctlToPlaceValue = ctl2; dateFormat = format; formatChar = ' '; aFormat = dateFormat.split(formatChar); if (aFormat.length < 3) { formatChar = '/'; aFormat = dateFormat.split(formatChar); if (aFormat.length < 3) { formatChar = '.'; aFormat = dateFormat.split(formatChar); if (aFormat.length < 3) { formatChar = '-'; aFormat = dateFormat.split(formatChar); if (aFormat.length < 3) { formatChar = ''; // invalid date format } } } } tokensChanged = 0; if (formatChar != "") { aData = ctl2.value.split(formatChar); // use user's date for (i=0; i<3; i++) { if ((aFormat[i] == "d") || (aFormat[i] == "dd")) { dateSelected = parseInt(aData[i], 10); tokensChanged++; } else if ((aFormat[i] == "m") || (aFormat[i] == "mm")) { monthSelected = parseInt(aData[i], 10) - 1; tokensChanged++; } else if (aFormat[i] == "yyyy") { yearSelected = parseInt(aData[i], 10); tokensChanged++; } else if (aFormat[i] == "mmm") { for (j=0; j<12; j++) { if (aData[i] == monthName[language][j]) { monthSelected=j; tokensChanged++; } } } else if (aFormat[i] == "mmmm") { for (j=0; j<12; j++) { if (aData[i] == monthName2[language][j]) { monthSelected = j; tokensChanged++; } } } } } if ((tokensChanged != 3) || isNaN(dateSelected) || isNaN(monthSelected) || isNaN(yearSelected)) { dateSelected = dateNow; monthSelected = monthNow; yearSelected = yearNow; } odateSelected = dateSelected; omonthSelected = monthSelected; oyearSelected = yearSelected; aTag = ctl; do { aTag = aTag.offsetParent; leftpos += aTag.offsetLeft; toppos += aTag.offsetTop; } while (aTag.tagName != 'BODY'); crossobj.left = (fixedX == -1) ? ctl.offsetLeft + leftpos : fixedX; crossobj.top = (fixedY == -1) ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY; constructCalendar (1, monthSelected, yearSelected); crossobj.visibility = (dom||ie) ? "visible" : "show"; hideElement('SELECT', document.getElementById('calendar')); hideElement('APPLET', document.getElementById('calendar')); bShow = true; } else { hideCalendar(); if (ctlNow!=ctl) popUpCalendar(ctl, ctl2, format); } ctlNow = ctl; } } document.onkeypress = function hidecal1 () { if (event.keyCode == 27) hideCalendar(); } document.onclick = function hidecal2 () { if (!bShow) hideCalendar(); bShow = false; } /* if(ie) { init(); } else { window.onload = init; } */ if (document.all){ window.attachEvent('onload',init)}else{ window.addEventListener('load',init,false);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -