📄 calendar.js
字号:
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:10px;'><tr>";
if(showWeekNumber==1) {
sHTML += "<td width=27 align='right'><b> W</b></td>"
sHTML += "<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>"+ dayName[i]+"</B></td>";
if (i == 0)
sHTML += "<td width='40' align='right' bgcolor='#D2FFFF'>"+ dayName[i]+"</td>";
else
sHTML += "<td width='27' align='right' bgcolor='#D2FFFF'>"+ dayName[i]+"</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:#FFDDDD;";
sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc;
}
}
}
var regexp= /\"/g;
sHint=sHint.replace(regexp,""");
/////////////// 朝楼 急琶矫 ==> 付快胶啊 朝楼 困肺 艾阑锭 ///////////////////////////////
dateMessage = "title='指向日期: "+ yearSelected + " " + monthName[monthSelected] +" " + datePointer + "日"+"' onmousemove='window.status=\"指向日期: "+ yearSelected + " " + monthName[monthSelected] +" " + datePointer + "日"+"\"' onmouseout='window.status=\"\"' ";
if((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow)) { // 泅犁 坷疵 朝楼
sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#ff0000> " + datePointer + "</font> </a></b>";
} else
if(dayPointer % 7 == (startAt * -1)+1) { // 老夸老 老锭
sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'> <font color=red>" + datePointer + "</font> </a>";
} else {
sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'> " + datePointer + " </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[monthSelected] +
"<a href='javascript:popUpMonth()' style='text-decoration:none'><font face='webdings' size=3 color=#330099>6</font></a>";
document.getElementById("spanYear").innerHTML = " " + yearSelected + " " +
"<a href='javascript:popUpYear()' style='text-decoration:none'><font face='webdings' size=3 color=#330099>6</font></a>";
}
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="";
}
}
}
}
tokensChanged = '0';
if(formatChar != "") {
aData = ctl2.value.split(formatChar);
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[j]) {
monthSelected=j;
tokensChanged++;
}
}
} else
if(aFormat[i]=="mmmm") {
for(j=0; j<12; j++) {
if (aData[i]==monthName2[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 = ctl2;
do {
aTag = aTag.offsetParent;
leftpos += aTag.offsetLeft;
toppos += aTag.offsetTop;
} while(aTag.tagName!="BODY");
crossobj.left = fixedX==-1 ? ctl2.offsetLeft + leftpos : fixedX;
crossobj.top = fixedY==-1 ? ctl2.offsetTop + toppos + ctl2.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;
}
var layerQueue = new Array();
var layerIndex = -1;
function hideElement(elmID, overDiv) {
if(ie) {
for(i = 0; i < document.getElementsByTagName(elmID).length; i++) {
obj = document.getElementsByTagName( elmID )[i];
if(!obj || !obj.offsetParent) {
continue;
}
objLeft = obj.offsetLeft;
objTop = obj.offsetTop;
objParent = obj.offsetParent;
while(objParent.tagName.toUpperCase() != "BODY") {
objLeft += objParent.offsetLeft;
objTop += objParent.offsetTop;
objParent = objParent.offsetParent;
}
objHeight = obj.offsetHeight;
objWidth = obj.offsetWidth;
if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
else if( overDiv.offsetTop >= ( objTop + objHeight ));
else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
else {
obj.style.visibility = "hidden";
}
}
}
}
function showElement(elmID) {
if(ie) {
for(i = 0; i < document.getElementsByTagName( elmID ).length; i++) {
obj = document.getElementsByTagName( elmID )[i];
if(!obj || !obj.offsetParent) {
continue;
}
obj.style.visibility = "";
}
}
}
function lw_createLayer(layerName, top_pos, left_pos, width, height, bgcolor, bordercolor, z_index) {
document.write("<div onClick='event.cancelBubble=true' id='"+layerName+"' style='z-index:" + z_index + ";position:absolute;top:"+top_pos+";left:"+left_pos+";visibility:hidden;'><table bgcolor='"+bgcolor+"' style='border-width:1px;border-style:solid;border-color:" + bordercolor + "' cellpadding=2 cellspacing=0 width=0><tr><td valign=top width='"+width+"' height='"+height+"'><span id='"+layerName+"_content'></span></td></tr></table></div>");
}
function lw_getObj(objName) {
return (dom)?document.getElementById(objName).style:ie?eval("document.all."+objName) :eval("document."+objName);
}
function lw_showLayer(layerName) {
found=false;
for(i=0;i<=layerIndex;i++) {
if (layerQueue[i]==layerName) {
found=true;
}
}
if ((lw_getObj(layerName).visibility!="visible")&&(lw_getObj(layerName).visibility!="show")) {
lw_getObj(layerName).visibility = (dom||ie)?"visible":"show";
layerQueue[++layerIndex] = layerName;
hideElement('SELECT', document.getElementById(layerName));
hideElement('APPLET', document.getElementById(layerName));
}
}
function lw_hideLayer() {
showElement('SELECT', document.getElementById(layerQueue[layerIndex]));
showElement('APPLET', document.getElementById(layerQueue[layerIndex]));
lw_getObj(layerQueue[layerIndex--]).visibility = "hidden";
}
function lw_hideLayerName(layerName) {
var i;
var tmpQueue=new Array();
var newIndex=-1;
showElement('SELECT', document.getElementById(layerName));
showElement('APPLET', document.getElementById(layerName));
lw_getObj(layerName).visibility = "hidden";
for(i=0;i<=layerIndex;i++) {
if((layerQueue[i]!="")&&(layerQueue[i]!=layerName)) {
tmpQueue [++newIndex] = layerQueue[i];
hideElement('SELECT', document.getElementById(layerQueue[i]));
hideElement('APPLET', document.getElementById(layerQueue[i]));
}
}
layerQueue = tmpQueue;
layerIndex = newIndex;
}
function lw_closeAllLayers() {
while(layerIndex >= 0) {
lw_hideLayer();
}
}
function lw_closeLastLayer() {
if(layerIndex >= 0) {
while ((lw_getObj(layerQueue[layerIndex]).visibility!="visible") && (layerIndex>0)) {
layerIndex--;
}
lw_hideLayer();
}
}
function lw_escLayer(e) {
if(navigator.appName=="Netscape") {
var keyCode = e.keyCode?e.keyCode:e.which?e.which:e.charCode;
if((keyCode==27)||(keyCode==1)) {
lw_closeLastLayer();
}
} else
if((event.keyCode==0)||(event.keyCode==27)) {
lw_closeLastLayer();
}
}
var lw_leftpos = 0;
var lw_toppos = 0;
var lw_width = 0;
var lw_height = 0;
function lw_calcpos(obj) {
lw_leftpos=0;
lw_toppos=0;
lw_width = obj.offsetWidth;
lw_height = obj.offsetHeight;
var aTag = obj;
do {
lw_leftpos += aTag.offsetLeft;
lw_toppos += aTag.offsetTop;
aTag = aTag.offsetParent;
} while(aTag.tagName!="BODY");
}
document.onkeypress = lw_escLayer;
document.onclick = lw_closeAllLayers;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -