📄 calendar.js
字号:
/* SOURCE FILE: CalendarPopup.js */
function CalendarPopup(){var c;if(arguments.length>0){c = new PopupWindow(arguments[0]);}else{c = new PopupWindow();c.setSize(150,175);}c.offsetX = 0;c.offsetY = 20;c.autoHide();c.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");c.monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");c.dayHeaders = new Array("S","M","T","W","T","F","S");c.returnFunction = "CalendarPopup_tmpReturnFunction";c.returnMonthFunction = "CalendarPopup_tmpReturnMonthFunction";c.returnQuarterFunction = "CalendarPopup_tmpReturnQuarterFunction";c.returnYearFunction = "CalendarPopup_tmpReturnYearFunction";c.weekStartDay = 0;c.isShowYearNavigation = false;c.displayType = "date";c.disabledWeekDays = new Object();c.disabledDatesExpression = "";c.yearSelectStartOffset = 2;c.currentDate = null;c.todayText="Today";window.CalendarPopup_targetInput = null;window.CalendarPopup_dateFormat = "mm/dd/yyyy";c.setReturnFunction = CalendarPopup_setReturnFunction;c.setReturnMonthFunction = CalendarPopup_setReturnMonthFunction;c.setReturnQuarterFunction = CalendarPopup_setReturnQuarterFunction;c.setReturnYearFunction = CalendarPopup_setReturnYearFunction;c.setMonthNames = CalendarPopup_setMonthNames;c.setMonthAbbreviations = CalendarPopup_setMonthAbbreviations;c.setDayHeaders = CalendarPopup_setDayHeaders;c.setWeekStartDay = CalendarPopup_setWeekStartDay;c.setDisplayType = CalendarPopup_setDisplayType;c.setDisabledWeekDays = CalendarPopup_setDisabledWeekDays;c.addDisabledDates = CalendarPopup_addDisabledDates;c.setYearSelectStartOffset = CalendarPopup_setYearSelectStartOffset;c.setTodayText = CalendarPopup_setTodayText;c.showYearNavigation = CalendarPopup_showYearNavigation;c.showCalendar = CalendarPopup_showCalendar;c.hideCalendar = CalendarPopup_hideCalendar;c.getStyles = CalendarPopup_getStyles;c.refreshCalendar = CalendarPopup_refreshCalendar;c.getCalendar = CalendarPopup_getCalendar;c.select = CalendarPopup_select;return c;}
function CalendarPopup_tmpReturnFunction(y,m,d){if(window.CalendarPopup_targetInput!=null){var dt = new Date(y,m-1,d,0,0,0);window.CalendarPopup_targetInput.value = formatDate(dt,window.CalendarPopup_dateFormat);}else{alert('Use setReturnFunction() to define which function will get the clicked results!');}}
function CalendarPopup_tmpReturnMonthFunction(y,m){alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , month='+m);}
function CalendarPopup_tmpReturnQuarterFunction(y,q){alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , quarter='+q);}
function CalendarPopup_tmpReturnYearFunction(y){alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year='+y);}
function CalendarPopup_setReturnFunction(name){this.returnFunction = name;}
function CalendarPopup_setReturnMonthFunction(name){this.returnMonthFunction = name;}
function CalendarPopup_setReturnQuarterFunction(name){this.returnQuarterFunction = name;}
function CalendarPopup_setReturnYearFunction(name){this.returnYearFunction = name;}
function CalendarPopup_setMonthNames(){for(var i=0;i<arguments.length;i++){this.monthNames[i] = arguments[i];}}
function CalendarPopup_setMonthAbbreviations(){for(var i=0;i<arguments.length;i++){this.monthAbbreviations[i] = arguments[i];}}
function CalendarPopup_setDayHeaders(){for(var i=0;i<arguments.length;i++){this.dayHeaders[i] = arguments[i];}}
function CalendarPopup_setWeekStartDay(day){this.weekStartDay = day;}
function CalendarPopup_showYearNavigation(){this.isShowYearNavigation = true;}
function CalendarPopup_setDisplayType(type){if(type!="date"&&type!="week-end"&&type!="month"&&type!="quarter"&&type!="year"){alert("Invalid display type! Must be one of: date,week-end,month,quarter,year");return false;}this.displayType=type;}
function CalendarPopup_setYearSelectStartOffset(num){this.yearSelectStartOffset=num;}
function CalendarPopup_setDisabledWeekDays(){this.disabledWeekDays = new Object();for(var i=0;i<arguments.length;i++){this.disabledWeekDays[arguments[i]] = true;}}
function CalendarPopup_addDisabledDates(start, end){if(arguments.length==1){end=start;}if(start==null && end==null){return;}if(this.disabledDatesExpression!=""){this.disabledDatesExpression+= "||";}if(start!=null){start = parseDate(start);start=""+start.getFullYear()+LZ(start.getMonth()+1)+LZ(start.getDate());}if(end!=null){end=parseDate(end);end=""+end.getFullYear()+LZ(end.getMonth()+1)+LZ(end.getDate());}if(start==null){this.disabledDatesExpression+="(ds<="+end+")";}else if(end ==null){this.disabledDatesExpression+="(ds>="+start+")";}else{this.disabledDatesExpression+="(ds>="+start+"&&ds<="+end+")";}}
function CalendarPopup_setTodayText(text){this.todayText = text;}
function CalendarPopup_hideCalendar(){if(arguments.length > 0){window.popupWindowObjects[arguments[0]].hidePopup();}else{this.hidePopup();}}
function CalendarPopup_refreshCalendar(index){var calObject = window.popupWindowObjects[index];if(arguments.length>1){calObject.populate(calObject.getCalendar(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));}else{calObject.populate(calObject.getCalendar());}calObject.refresh();}
function CalendarPopup_showCalendar(anchorname){if(arguments.length>1){if(arguments[1]==null||arguments[1]==""){this.currentDate=new Date();}else{this.currentDate=new Date(parseDate(arguments[1]));}}this.populate(this.getCalendar());this.showPopup(anchorname);}
function CalendarPopup_select(inputobj, linkname, format){var selectedDate=(arguments.length>3)?arguments[3]:null;if(!window.getDateFromFormat){alert("calendar.select: To use this method you must also include 'date.js' for date formatting");return;}if(this.displayType!="date"&&this.displayType!="week-end"){alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'");return;}if(inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea"){alert("calendar.select: Input object passed is not a valid form input object");window.CalendarPopup_targetInput=null;return;}window.CalendarPopup_targetInput = inputobj;this.currentDate=null;var time=0;if(selectedDate!=null){time = getDateFromFormat(selectedDate,format)}else if(inputobj.value!=""){time = getDateFromFormat(inputobj.value,format);}if(selectedDate!=null || inputobj.value!=""){if(time==0){this.currentDate=null;}else{this.currentDate=new Date(time);}}window.CalendarPopup_dateFormat = format;this.showCalendar(linkname);}
function CalendarPopup_getStyles(){var result = "";result += "<style type=\"text/css\">\n";result += "table.cal{background:white;color:black}\n";result += "table.cal a{font-weight:normal !important}\n";result += "td.cal,td.calday,td.calmonth,td.caltoday,a.textlink,.disabledtextlink{font-family:arial;font-size:8pt}\n";result += "td.calday{border:solid 1px #C0C0C0;border-width:0px 0px 1px 0px;}\n";result += "td.calmonth{text-align:right;}\n";result += "td.caltoday{text-align:right;color:white;background-color:#C0C0C0;border:solid 1px blue;}\n";result += "td.textlink{border:solid 1px #C0C0C0;border-width:1px 0px 0px 0px;}\n";result += "a.textlink{height:20px;color:black;}\n";result += ".disabledtextlink{height:20px;color:#808080;}\n";result += "a.cal{text-decoration:none;color:#000000;}\n";result += "a.calthismonth{text-decoration:none;color:#000000;}\n";result += "a.calothermonth{text-decoration:none;color:#808080;}\n";result += ".calnotclickable{color:#808080;}\n";result += ".disabled{color:#D0D0D0;text-decoration:line-through;}\n";result += "</style>\n";return result;}
function CalendarPopup_getCalendar(){var now = new Date();if(this.type == "WINDOW"){var windowref = "window.opener.";}else{var windowref = "";}var result = "";if(this.type == "WINDOW"){result += "<HTML><HEAD><TITLE>Calendar</TITLE>"+this.getStyles()+"</HEAD><BODY MARGINWIDTH=0 MARGINHEIGHT=0 TOPMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0>\n";result += '<CENTER><TABLE WIDTH=100% BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n';}else{result += '<TABLE CLASS="cal" WIDTH=144 BORDER=1 BORDERWIDTH=1 BORDERCOLOR="#808080" CELLSPACING=0 CELLPADDING=1>\n';result += '<TR><TD ALIGN=CENTER>\n';result += '<CENTER>\n';}var t144="<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";if(this.displayType=="date" || this.displayType=="week-end"){if(this.currentDate==null){this.currentDate = now;}if(arguments.length > 0){var month = arguments[0];}else{var month = this.currentDate.getMonth()+1;}if(arguments.length > 1){var year = arguments[1];}else{var year = this.currentDate.getFullYear();}var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);if( ((year%4 == 0)&&(year%100 != 0) ) ||(year%400 == 0) ){daysinmonth[2] = 29;}var current_month = new Date(year,month-1,1);var display_year = year;var display_month = month;var display_date = 1;var weekday= current_month.getDay();var offset = 0;if(weekday >= this.weekStartDay){offset = weekday - this.weekStartDay;}else{offset = 7-this.weekStartDay+weekday;}if(offset > 0){display_month--;if(display_month < 1){display_month = 12;display_year--;}display_date = daysinmonth[display_month]-offset+1;}var next_month = month+1;var next_month_year = year;if(next_month > 12){next_month=1;next_month_year++;}var last_month = month-1;var last_month_year = year;if(last_month < 1){last_month=12;last_month_year--;}var date_class;if(this.type!="WINDOW"){result += t144;}result += '<TR BGCOLOR="#C0C0C0">\n';var refresh = 'javascript:'+windowref+'CalendarPopup_refreshCalendar';var td = '<TD BGCOLOR="#C0C0C0" CLASS="cal" ALIGN=CENTER VALIGN=MIDDLE WIDTH=';if(this.isShowYearNavigation){result += td+'10><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+last_month+','+last_month_year+');"><</A></B></TD>';result += td+'58>'+this.monthNames[month-1]+'</TD>';result += td+'10><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+next_month+','+next_month_year+');">></A></B></TD>';result += td+'10> </TD>';result += td+'10><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+month+','+(year-1)+');"><</A></B></TD>';result += td+'36>'+year+'</TD>';result += td+'10><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+month+','+(year+1)+');">></A></B></TD>';}else{result += td+'22><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+last_month+','+last_month_year+');"><<</A></B></TD>\n';result += td+'100>'+this.monthNames[month-1]+' '+year+'</TD>\n';result += td+'22><B><A CLASS="cal" HREF="'+refresh+'('+this.index+','+next_month+','+next_month_year+');">>></A></B></TD>\n';}result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n';result += '<TR>\n';var td = ' <TD CLASS="calday" ALIGN=RIGHT WIDTH=14%>';for(var j=0;j<7;j++){result += td+this.dayHeaders[(this.weekStartDay+j)%7]+'</TD>\n';}result += '</TR>\n';for(var row=1;row<=6;row++){result += '<TR>\n';for(var col=1;col<=7;col++){if(display_month == month){date_class = "calthismonth";}else{date_class = "calothermonth";}if((display_month == this.currentDate.getMonth()+1) &&(display_date==this.currentDate.getDate()) &&(display_year==this.currentDate.getFullYear())){td_class="caltoday";}else{td_class="calmonth";}var disabled=false;if(this.disabledDatesExpression!=""){var ds=""+display_year+LZ(display_month)+LZ(display_date);eval("disabled=("+this.disabledDatesExpression+")");}if(disabled || this.disabledWeekDays[col-1]){date_class=(disabled)?"disabled":"calnotclickable";result += ' <TD CLASS="'+td_class+'"><SPAN CLASS="'+date_class+'">'+display_date+'</SPAN></TD>\n';}else{var selected_date = display_date;var selected_month = display_month;var selected_year = display_year;if(this.displayType=="week-end"){var d = new Date(selected_year,selected_month-1,selected_date,0,0,0,0);d.setDate(d.getDate() +(7-col));selected_year = d.getYear();if(selected_year < 1000){selected_year += 1900;}selected_month = d.getMonth()+1;selected_date = d.getDate();}result += ' <TD CLASS="'+td_class+'"><A HREF="javascript:'+windowref+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+display_date+'</A></TD>\n';}display_date++;if(display_date > daysinmonth[display_month]){display_date=1;display_month++;}if(display_month > 12){display_month=1;display_year++;}}result += '</TR>';}var current_weekday = now.getDay() - this.weekStartDay;if(current_weekday < 0){current_weekday += 7;}result += '<TR>\n';result += ' <TD COLSPAN=7 ALIGN=CENTER CLASS="textlink">\n';if(this.disabledWeekDays[current_weekday+1]){result += ' <SPAN CLASS="disabledtextlink">'+this.todayText+'</SPAN>\n';}else{result += ' <A CLASS="textlink" HREF="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');">'+this.todayText+'</A>\n';}result += ' <BR>\n';result += ' </TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="month" || this.displayType=="quarter" || this.displayType=="year"){if(arguments.length > 0){var year = arguments[0];}else{if(this.displayType=="year"){var year = now.getFullYear()-this.yearSelectStartOffset;}else{var year = now.getFullYear();}}if(this.displayType!="year" && this.isShowYearNavigation){result += t144;result += '<TR BGCOLOR="#C0C0C0">\n';result += ' <TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=22 ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+(year-1)+');"><<</A></B></TD>\n';result += ' <TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=100 ALIGN=CENTER>'+year+'</TD>\n';result += ' <TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=22 ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+(year+1)+');">>></A></B></TD>\n';result += '</TR></TABLE>\n';}}if(this.displayType=="month"){result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<4;i++){result += '<TR>';for(var j=0;j<3;j++){var monthindex =((i*3)+j);result += '<TD WIDTH=33% ALIGN=CENTER><A CLASS="textlink" HREF="javascript:'+windowref+this.returnMonthFunction+'('+year+','+(monthindex+1)+');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+this.monthAbbreviations[monthindex]+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="quarter"){result += '<BR><TABLE WIDTH=120 BORDER=1 CELLSPACING=0 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<2;i++){result += '<TR>';for(var j=0;j<2;j++){var quarter =((i*2)+j+1);result += '<TD WIDTH=50% ALIGN=CENTER><BR><A CLASS="textlink" HREF="javascript:'+windowref+this.returnQuarterFunction+'('+year+','+quarter+');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">Q'+quarter+'</A><BR><BR></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="year"){var yearColumnSize = 4;result += t144;result += '<TR BGCOLOR="#C0C0C0">\n';result += ' <TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=50% ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+(year-(yearColumnSize*2))+');"><<</A></B></TD>\n';result += ' <TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=50% ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+(year+(yearColumnSize*2))+');">>></A></B></TD>\n';result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<yearColumnSize;i++){for(var j=0;j<2;j++){var currentyear = year+(j*yearColumnSize)+i;result += '<TD WIDTH=50% ALIGN=CENTER><A CLASS="textlink" HREF="javascript:'+windowref+this.returnYearFunction+'('+currentyear+');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+currentyear+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.type == "WINDOW"){result += "</BODY></HTML>\n";}return result;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -