📄 popcalendar.js
字号:
// written by Tan Ling Wee on 2 Dec 2001// last updated 20 June 2003// email : fuushikaden@yahoo.com//// Modified to use the MyFaces lib resourcesvar jscalendarFixedX = -1 // x position (-1 if to appear below control)var jscalendarFixedY = -1 // y position (-1 if to appear below control)var jscalendarStartAt = 1 // 0 - sunday ; 1 - mondayvar jscalendarShowWeekNumber = 1 // 0 - don't show; 1 - showvar jscalendarShowToday = 1 // 0 - don't show; 1 - showvar jscalendarImgDir = "jscalendar/jscalendar-DB/" // directory for images ... e.g. var jscalendarImgDir="/img/"var jscalendarThemePrefix = "jscalendar-DB"var jscalendarGotoString = "Go To Current Month"var jscalendarTodayString = "Today is"var jscalendarWeekString = "Wk"var jscalendarScrollLeftMessage = "Click to scroll to previous month. Hold mouse button to scroll automatically."var jscalendarScrollRightMessage = "Click to scroll to next month. Hold mouse button to scroll automatically."var jscalendarSelectMonthMessage = "Click to select a month."var jscalendarSelectYearMessage = "Click to select a year."var jscalendarSelectDateMessage = "Select [date] as date." // do not replace [date], it will be replaced by date.var jscalendarCrossobj, jscalendarCrossMonthObj, jscalendarCrossYearObj, jscalendarMonthSelected, jscalendarYearSelected, jscalendarDateSelected, jscalendarOmonthSelected, jscalendarOyearSelected, jscalendarOdateSelected, jscalendarMonthConstructed, jscalendarYearConstructed, jscalendarIntervalID1, jscalendarIntervalID2, jscalendarTimeoutID1, jscalendarTimeoutID2, jscalendarCtlToPlaceValue, jscalendarCtlNow, jscalendarDateFormat, jscalendarNStartingYearvar jscalendarBPageLoaded=falsevar jscalendarIe=document.allvar jscalendarDom=document.getElementByIdvar jscalendarNs4=document.layersvar jscalendarToday = new Date()var jscalendarDateNow = jscalendarToday.getDate()var jscalendarMonthNow = jscalendarToday.getMonth()var jscalendarYearNow = jscalendarToday.getYear()var jscalendarImgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")var jscalendarImg = new Array()var jscalendarBShow = false;var jscalendarMyFacesCtlType = "x:inputCalendar";var jscalendarMyFacesInputDateClientId;function jscalendarSetImageDirectory(dir){ // For MyFaces only jscalendarImgDir = dir;}/* hides <select> and <applet> objects (for IE only) */function jscalendarHideElement( elmID, overDiv ){ if( jscalendarIe ){ for( i = 0; i < document.all.tags( elmID ).length; i++ ){ obj = document.all.tags( elmID )[i]; if( !obj || !obj.offsetParent ) continue; // Find the element's offsetTop and offsetLeft relative to the BODY tag. 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"; } }}/** unhides <select> and <applet> objects (for IE only)*/function jscalendarShowElement( elmID ){ if( jscalendarIe ){ for( i = 0; i < document.all.tags( elmID ).length; i++ ){ obj = document.all.tags( elmID )[i]; if( !obj || !obj.offsetParent ) continue; obj.style.visibility = ""; } }}function jscalendarHolidayRec (d, m, y, desc){ this.d = d; this.m = m; this.y = y; this.desc = desc;}var jscalendarHolidaysCounter = 0;var jscalendarHolidays = new Array();function jscalendarAddHoliday (d, m, y, desc){ jscalendarHolidays[jscalendarHolidaysCounter++] = new jscalendarHolidayRec ( d, m, y, desc );}if (jscalendarDom){ for (i=0;i<jscalendarImgsrc.length;i++){ jscalendarImg[i] = new Image; jscalendarImg[i].src = jscalendarImgDir + jscalendarImgsrc[i]; } document.write ("<div onclick='jscalendarBShow=true' id='calendar' class='"+jscalendarThemePrefix+"-div-style'><table width="+((jscalendarShowWeekNumber==1)?250:220)+" class='"+jscalendarThemePrefix+"-table-style'><tr class='"+jscalendarThemePrefix+"-title-background-style'><td><table width='"+((jscalendarShowWeekNumber==1)?248:218)+"'><tr><td class='"+jscalendarThemePrefix+"-title-style'><span id='caption'></span></td><td align=right><a href='javascript:jscalendarHideCalendar()'><span id='jscalendarCloseButton'></span></a></td></tr></table></td></tr><tr><td class='"+jscalendarThemePrefix+"-body-style'><span id='content'></span></td></tr>") if (jscalendarShowToday==1) document.write ("<tr class='"+jscalendarThemePrefix+"-today-style'><td class='"+jscalendarThemePrefix+"-today-lbl-style'><span id='lblToday'></span></td></tr>") document.write ("</table></div><div id='selectMonth' class='"+jscalendarThemePrefix+"-div-style'></div><div id='selectYear' class='"+jscalendarThemePrefix+"-div-style'></div>");}var jscalendarMonthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December");var jscalendarMonthName2 = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");var jscalendarDayName = jscalendarStartAt==0 ? new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat") : new Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");function jscalendarSwapImage(srcImg, destImg){ if (jscalendarIe) document.getElementById(srcImg).setAttribute("src",jscalendarImgDir + destImg);}function jscalendarInit(){ if (!jscalendarNs4){ if (!jscalendarIe) jscalendarYearNow += 1900; jscalendarCrossobj=(jscalendarDom) ? document.getElementById("calendar").style : jscalendarIe ? document.all.calendar : document.calendar; jscalendarHideCalendar(); jscalendarCrossMonthObj=(jscalendarDom) ? document.getElementById("selectMonth").style : jscalendarIe ? document.all.selectMonth : document.selectMonth; jscalendarCrossYearObj=(jscalendarDom) ? document.getElementById("selectYear").style : jscalendarIe ? document.all.jscalendarSelectYear : document.jscalendarSelectYear; jscalendarMonthConstructed=false; jscalendarYearConstructed=false; if (jscalendarShowToday==1) document.getElementById("lblToday").innerHTML = jscalendarTodayString + " <a onmousemove='window.status=\""+jscalendarGotoString+"\"' onmouseout='window.status=\"\"' title='"+jscalendarGotoString+"' class='"+jscalendarThemePrefix+"-today-style' href='javascript:jscalendarMonthSelected=jscalendarMonthNow;jscalendarYearSelected=jscalendarYearNow;jscalendarConstructCalendar();'>"+jscalendarDayName[(jscalendarToday.getDay()-jscalendarStartAt==-1)?6:(jscalendarToday.getDay()-jscalendarStartAt)]+", " + jscalendarDateNow + " " + jscalendarMonthName[jscalendarMonthNow].substring(0,3) + " " + jscalendarYearNow + "</a>"; var sHTML1 ="<span id='spanLeft' class='"+jscalendarThemePrefix+"-title-control-normal-style' onmouseover='jscalendarSwapImage(\"changeLeft\",\"left2.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-select-style\"; window.status=\""+jscalendarScrollLeftMessage+"\"' onclick='javascript:jscalendarDecMonth()' onmouseout='clearInterval(jscalendarIntervalID1);jscalendarSwapImage(\"changeLeft\",\"left1.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-normal-style\"; window.status=\"\"' onmousedown='clearTimeout(jscalendarTimeoutID1);jscalendarTimeoutID1=setTimeout(\"jscalendarStartDecMonth()\",500)' onmouseup='clearTimeout(jscalendarTimeoutID1);clearInterval(jscalendarIntervalID1)'> <IMG id='changeLeft' SRC='"+jscalendarImgDir+"left1.gif' width=10 height=11 BORDER=0> </span> " sHTML1+="<span id='spanRight' class='"+jscalendarThemePrefix+"-title-control-normal-style' onmouseover='jscalendarSwapImage(\"changeRight\",\"right2.gif\");this.className=\""+jscalendarThemePrefix+"-title-control-select-style\"; window.status=\""+jscalendarScrollRightMessage+"\"' onmouseout='clearInterval(jscalendarIntervalID1);jscalendarSwapImage(\"changeRight\",\"right1.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-normal-style\"; window.status=\"\"' onclick='jscalendarIncMonth()' onmousedown='clearTimeout(jscalendarTimeoutID1);jscalendarTimeoutID1=setTimeout(\"jscalendarStartIncMonth()\",500)' onmouseup='clearTimeout(jscalendarTimeoutID1);clearInterval(jscalendarIntervalID1)'> <IMG id='changeRight' SRC='"+jscalendarImgDir+"right1.gif' width=10 height=11 BORDER=0> </span> " sHTML1+="<span id='spanMonth' class='"+jscalendarThemePrefix+"-title-control-normal-style' onmouseover='jscalendarSwapImage(\"changeMonth\",\"drop2.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-select-style\"; window.status=\""+jscalendarSelectMonthMessage+"\"' onmouseout='jscalendarSwapImage(\"changeMonth\",\"drop1.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-normal-style\"; window.status=\"\"' onclick='jscalendarPopUpMonth()'></span> " sHTML1+="<span id='spanYear' class='"+jscalendarThemePrefix+"-title-control-normal-style' onmouseover='jscalendarSwapImage(\"changeYear\",\"drop2.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-select-style\"; window.status=\""+jscalendarSelectYearMessage+"\"' onmouseout='jscalendarSwapImage(\"changeYear\",\"drop1.gif\"); this.className=\""+jscalendarThemePrefix+"-title-control-normal-style\"; window.status=\"\"' onclick='jscalendarPopUpYear()'></span> " document.getElementById("caption").innerHTML = sHTML1; jscalendarBPageLoaded = true; }}function jscalendarHideCalendar(){ jscalendarCrossobj.visibility="hidden" if (jscalendarCrossMonthObj != null){jscalendarCrossMonthObj.visibility="hidden"} if (jscalendarCrossYearObj != null){jscalendarCrossYearObj.visibility="hidden"} jscalendarShowElement( 'SELECT' ); jscalendarShowElement( 'APPLET' );}function jscalendarPadZero(num){ return (num < 10)? '0' + num : num ;}function jscalendarConstructDate(d,m,y){ var sTmp = jscalendarDateFormat sTmp = sTmp.replace ("dd","<e>") sTmp = sTmp.replace ("d","<d>") sTmp = sTmp.replace ("<e>",jscalendarPadZero(d)) sTmp = sTmp.replace ("<d>",d) sTmp = sTmp.replace ("mmmm","<p>") sTmp = sTmp.replace ("MMMM","<p>") sTmp = sTmp.replace ("mmm","<o>") sTmp = sTmp.replace ("MMM","<o>") sTmp = sTmp.replace ("mm","<n>") sTmp = sTmp.replace ("MM","<n>") sTmp = sTmp.replace ("m","<m>") sTmp = sTmp.replace ("M","<m>") sTmp = sTmp.replace ("<m>",m+1) sTmp = sTmp.replace ("<n>",jscalendarPadZero(m+1)) sTmp = sTmp.replace ("<o>",jscalendarMonthName[m]) sTmp = sTmp.replace ("<p>",jscalendarMonthName2[m]) sTmp = sTmp.replace ("yyyy",y) return sTmp.replace ("yy",jscalendarPadZero(y%100))}function jscalendarCloseCalendar() { jscalendarHideCalendar(); if( jscalendarMyFacesCtlType!="x:inputDate" ) jscalendarCtlToPlaceValue.value = jscalendarConstructDate(jscalendarDateSelected,jscalendarMonthSelected,jscalendarYearSelected) else{ document.getElementById(jscalendarMyFacesInputDateClientId+".day").value = jscalendarDateSelected; document.getElementById(jscalendarMyFacesInputDateClientId+".month").value = jscalendarMonthSelected+1; document.getElementById(jscalendarMyFacesInputDateClientId+".year").value = jscalendarYearSelected; }}/*** Month Pulldown ***/function jscalendarStartDecMonth(){ jscalendarIntervalID1=setInterval("jscalendarDecMonth()",80);}function jscalendarStartIncMonth(){ jscalendarIntervalID1=setInterval("jscalendarIncMonth()",80);}function jscalendarIncMonth(){ jscalendarMonthSelected++; if (jscalendarMonthSelected>11) { jscalendarMonthSelected=0; jscalendarYearSelected++; } jscalendarConstructCalendar();}function jscalendarDecMonth () { jscalendarMonthSelected-- if (jscalendarMonthSelected<0) { jscalendarMonthSelected=11 jscalendarYearSelected-- } jscalendarConstructCalendar()}function jscalendarConstructMonth(){ jscalendarPopDownYear(); if (!jscalendarMonthConstructed) { var sHTML = ""; for (i=0; i<12; i++) { var sName = jscalendarMonthName[i]; if (i==jscalendarMonthSelected) sName = "<b>" + sName + "</b>"; sHTML += "<tr><td id='m" + i + "' onmouseover='this.className=\""+jscalendarThemePrefix+"-dropdown-select-style\"' onmouseout='this.className=\""+jscalendarThemePrefix+"-dropdown-normal-style\"' onclick='jscalendarMonthConstructed=false;jscalendarMonthSelected=" + i + ";jscalendarConstructCalendar();jscalendarPopDownMonth();event.cancelBubble=true'> " + sName + " </td></tr>"; } document.getElementById("selectMonth").innerHTML = "<table width='70' class='"+jscalendarThemePrefix+"-dropdown-style' cellspacing=0 onmouseover='clearTimeout(jscalendarTimeoutID1)' onmouseout='clearTimeout(jscalendarTimeoutID1);jscalendarTimeoutID1=setTimeout(\"jscalendarPopDownMonth()\",100);event.cancelBubble=true'>" + sHTML + "</table>"; jscalendarMonthConstructed=true; }}function jscalendarPopUpMonth() { jscalendarConstructMonth() jscalendarCrossMonthObj.visibility = (jscalendarDom||jscalendarIe)? "visible" : "show" jscalendarCrossMonthObj.left = parseInt(jscalendarCrossobj.left) + 50 + "px"; jscalendarCrossMonthObj.top = parseInt(jscalendarCrossobj.top) + 26 + "px"; jscalendarHideElement( 'SELECT', document.getElementById("selectMonth") ); jscalendarHideElement( 'APPLET', document.getElementById("selectMonth") );}function jscalendarPopDownMonth() { jscalendarCrossMonthObj.visibility= "hidden"}/*** Year Pulldown ***/function jscalendarIncYear() { for (i=0; i<7; i++){ newYear = (i+jscalendarNStartingYear)+1 if (newYear==jscalendarYearSelected) { txtYear = " <B>" + newYear + "</B> " } else { txtYear = " " + newYear + " " } document.getElementById("y"+i).innerHTML = txtYear } jscalendarNStartingYear++; jscalendarBShow=true;}function jscalendarDecYear() { for (i=0; i<7; i++){ newYear = (i+jscalendarNStartingYear)-1 if (newYear==jscalendarYearSelected) { txtYear = " <B>" + newYear + "</B> " } else { txtYear = " " + newYear + " " } document.getElementById("y"+i).innerHTML = txtYear } jscalendarNStartingYear--; jscalendarBShow=true;}function jscalendarSelectYear(nYear) { jscalendarYearSelected=parseInt(nYear+jscalendarNStartingYear); jscalendarYearConstructed=false; jscalendarConstructCalendar(); jscalendarPopDownYear();}function jscalendarConstructYear() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -