popupcal.js
来自「Java的框架」· JavaScript 代码 · 共 669 行 · 第 1/2 页
JS
669 行
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><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+pUCImgDir+"divider.gif' width=1></td>"
}
for (i=0; i<7; i++) {
sHTML += "<td width='27' align='right'><B>"+ dayName[i]+"</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:#FFDDDD;"
sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc
}
}
}
var regexp= /\"/g
sHint=sHint.replace(regexp,""")
dateMessage = "onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' 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=#909090>" + 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("cal_content").innerHTML = sHTML
document.getElementById("spanMonth").innerHTML = " " + monthName[monthSelected] + " <IMG id='changeMonth' SRC='"+pUCImgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
document.getElementById("spanYear").innerHTML = " " + yearSelected + " <IMG id='changeYear' SRC='"+pUCImgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
}
function popUpCalendarInit(ctl, ctl2, event) {
var leftpos=0
var toppos=0
// var leftpos = 0; //event.x + 5;
// var toppos = 0; //event.y;
if (!ns4)
{
if (!ie) {
if (yearNow < 1900)
yearNow += 1900;
}
crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar
shimobj=(dom)?document.getElementById("calShim").style : ie? document.all.calShim : document.calShim
shimMobj=(dom)?document.getElementById("calMShim").style : ie? document.all.calMShim : document.calMShim
hideCalendar()
crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth : document.selectMonth
crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear
monthConstructed=false;
yearConstructed=false;
if (showToday==1)
{
document.getElementById("lblToday").innerHTML = todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3) + " " + yearNow + "</a>"
}
sHTML1="<span id='spanLeft' style='border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'> <IMG id='changeLeft' SRC='"+pUCImgDir+"left1.gif' width=10 height=11 BORDER=0> </span> "
sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'> <IMG id='changeRight' SRC='"+pUCImgDir+"right1.gif' width=10 height=11 BORDER=0> </span> "
sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='popUpMonth()'></span> "
sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='popUpYear()'></span> "
document.getElementById("caption").innerHTML = sHTML1
bPageLoaded=true
}
// if (leftpos == null || leftpos == "") {
// leftpos = 0;
// }
// if (toppos == null || toppos == "") {
if (toppos != 0) {
toppos -= 15;
}
if (bPageLoaded)
{
if ( crossobj.visibility == "hidden" ) {
ctlToPlaceValue = ctl2
// dateFormat=format;
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)
{
// invalid date format
formatChar=""
}
}
}
}
// if (ctl2.length && ctl2.length < 3) {
// //invalid date field control;
// alert ("Invalid date control field passed in.");
// hideCalendar();
// return false;
// }
tokensChanged = 0
if ( formatChar != "" )
{
// use user's date
var aData;
if (ctl2.length) {
aData = new Array ();
for (i=0;i<ctl2.length;i++) {
aData[i] = ctl2[i].value;
}
}
else {
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 {
alert ("Invalid date format passed in.");
hideCalendar();
return false;
}
}
}
if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
{
dateSelected = dateNow
monthSelected = monthNow
yearSelected = yearNow
}
odateSelected=dateSelected
omonthSelected=monthSelected
oyearSelected=yearSelected
/* Commented by D.T.
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
*/
//Setting left and top of the calendar in a popUp window. Added by D.T.
crossobj.left = fixedX==-1 ? leftpos : fixedX;
crossobj.top = fixedY==-1 ? toppos : fixedY;
//added by BS
var eDocBody = document.body;
var nWindowLeftEdge = eDocBody.scrollLeft;
var nWindowTopEdge = eDocBody.scrollTop;
var nLeftPos = ( event.pageX || event.x + nWindowLeftEdge );
var nTopPos = ( event.pageY || event.y + nWindowTopEdge );
var nMinSpace = 5;
var nWindowWidth = ( window.innerWidth != null ) ? window.innerWidth : eDocBody.clientWidth;
var nWindowHeight = ( window.innerHeight != null ) ? window.innerHeight : eDocBody.clientHeight;
var nWindowRightEdge = ( nWindowLeftEdge + nWindowWidth ) - nMinSpace;
var nWindowBottomEdge = ( nWindowTopEdge + nWindowHeight ) - nMinSpace;
var nElementRightEdge = nLeftPos + 270;
var nElementBottomEdge = nTopPos + 215;
if( nElementRightEdge > nWindowRightEdge ) {
nLeftPos -= ( nElementRightEdge - nWindowRightEdge );
nLeftPos = Math.max( nMinSpace, nLeftPos );
}
if( nElementBottomEdge > nWindowBottomEdge ){
nTopPos -= ( nElementBottomEdge - nWindowBottomEdge );
nTopPos = Math.max( nMinSpace, nTopPos );
}
crossobj.left = nLeftPos + "px";
crossobj.top = nTopPos + "px";
if (ie) {
crossobj.top = event.y + "px";
}
//end of add by BS
shimobj.left = crossobj.left;
shimobj.top = crossobj.top;
shimobj.width = 270;
shimobj.height = 215;
constructCalendar (1, monthSelected, yearSelected);
crossobj.visibility=(dom||ie)? "visible" : "show"
shimobj.visibility=(dom||ie)? "visible" : "show"
}
else
{
hideCalendar()
if (ctlNow!=ctl) {popUpCalendarInit(ctl, ctl2, event)}
}
ctlNow = ctl
}
}
function popUpCalendar (event, txtfield, txtfield2, txtfield3) {
if (txtfield2 != null) {
if (txtfield3 == null) {
alert ("Invalid date control field passed in.");
return false;
}
txtfields = new Array();
txtfields[txtfields.length] = txtfield;
txtfields[txtfields.length] = txtfield2;
txtfields[txtfields.length] = txtfield3;
popUpCalendarInit(this, txtfields, event);
}
else {
popUpCalendarInit(this, txtfield, event);
}
}
function setPUCalDateFormate (format) {
dateFormat = format;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?