/************************************************************************************************* * file_name・: popcalender.js * make_name : joo dong hyun・(conversion) * file_content・: date calculate and popup date value import * Useing Document : JavaScript SRC Include * * **************************************************************************************************/ var fixedX = -1 // x position (-1 if to appear below control) var fixedY = -1 // y position (-1 if to appear below control) var startAt = 0 // 0 - sunday ; 1 - monday var showWeekNumber = 0 // 0 - don't show; 1 - show var showToday = 1 // 0 - don't show; 1 - show var imgDir = "./datepicker/" var gotoString = "今日の日付位置に行く" var todayString = "今日は" var weekString = "Wk" var scrollLeftMessage = "以前月に行くこと.マウスを押していれば連続的に移ります." var scrollRightMessage = "次の月に行くこと.マウスを押していれば連続的に移ります." var selectMonthMessage = "月選択すること." var selectYearMessage = "年度選択すること." var selectDateMessage = "日付選択すること." var crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue1,ctlToPlaceValue2,ctlToPlaceValue3, ctlNow, dateFormat, nStartingYear var bPageLoaded = false var ie = document.all var dom = document.getElementById var ns4 = document.layers var today = new Date() var dateNow = today.getDate() var monthNow = today.getMonth() var yearNow = today.getYear() var imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif") var img = new Array() var bShow = false; /* hides and objects (for IE only) */ function showElement( elmID ) { if( ie ) { 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 HolidayRec (d, m, y, desc) { this.d = d this.m = m this.y = y this.desc = desc } var HolidaysCounter = 0 var Holidays = new Array() function addHoliday (d, m, y, desc) { Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc ) } if (dom) { for ( i = 0 ; i < imgsrc.length ; i++ ) { img[i] = new Image img[i].src = imgDir + imgsrc[i] } document.write ("
") if (showToday==1) { document.write ("") } document.write ("
Close the Calendar
"); } var monthName = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月") var monthName2 = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC") if (startAt==0) { dayName = new Array ("日","月","火","数","首","金","土") } else { dayName = new Array ("月","火","数","首","金","土","日") } function swapImage(srcImg, destImg) { if (ie) { document.getElementById(srcImg).setAttribute("src",imgDir + destImg) } } function init() { if ( ! ns4) { if ( ! ie) { yearNow += 1900 } crossobj = (dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar 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 + " "+ yearNow + "ウ・" + monthName[monthNow].substring(0,3) + " " + dateNow + "タマ " + dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)] + "ソ菎マ " + "" } sHTML1= "   " sHTML1+=" " sHTML1+=" " sHTML1+="   " document.getElementById("caption").innerHTML = sHTML1 bPageLoaded=true } } function hideCalendar() { crossobj.visibility = "hidden" if (crossMonthObj != null) { crossMonthObj.visibility = "hidden" } if (crossYearObj != null) { crossYearObj.visibility = "hidden" } showElement( 'SELECT' ); showElement( 'APPLET' ); } function padZero(num) { return (num < 10)? '0' + num : num ; } function constructDate(d,m,y) { sTmp = dateFormat sTmp = sTmp.replace ("dd", "") sTmp = sTmp.replace ("d", "") sTmp = sTmp.replace ("", padZero(d)) sTmp = sTmp.replace ("", d) sTmp = sTmp.replace ("mmm", "") sTmp = sTmp.replace ("mm", "") sTmp = sTmp.replace ("m", "") sTmp = sTmp.replace ("", m+1) sTmp = sTmp.replace ("", padZero(m+1)) sTmp = sTmp.replace ("", monthName2[m]) sTmp = sTmp.replace ("yyyy",y) return sTmp.replace ("yy", padZero(y%100)) } function closeCalendar() { var sTmp hideCalendar(); var aaa = constructDate(dateSelected,monthSelected,yearSelected); bbb = aaa.split("-") ctlToPlaceValue1.value = bbb[0]; ctlToPlaceValue2.value = bbb[1]; ctlToPlaceValue3.value = bbb[2]; } /*** Month Pulldown ***/ function StartDecMonth() { intervalID1=setInterval("decMonth()",80) } function StartIncMonth() { intervalID1=setInterval("incMonth()",80) } function incMonth() { monthSelected++ if ( monthSelected > 11 ) { monthSelected = 0 yearSelected++ } constructCalendar() } function decMonth() { monthSelected-- if ( monthSelected < 0 ) { monthSelected = 11 yearSelected-- } constructCalendar() } function constructMonth() { popDownYear() if ( ! monthConstructed ) { sHTML = "" for ( i = 0 ; i < 12 ; i++ ) { sName = monthName[i]; if ( i == monthSelected ) { sName = "" + sName + "" } sHTML += " " + sName + " " } document.getElementById("selectMonth").innerHTML = "" + sHTML + "" monthConstructed = true } } function popUpMonth() { constructMonth() crossMonthObj.visibility = (dom||ie)? "visible" : "show" crossMonthObj.left = parseInt(crossobj.left) + 50 crossMonthObj.top = parseInt(crossobj.top) + 26 hideElement( 'SELECT', document.getElementById("selectMonth") ); hideElement( 'APPLET', document.getElementById("selectMonth") ); } function popDownMonth() { crossMonthObj.visibility = "hidden" } /*** Year Pulldown ***/ function incYear() { for ( i = 0 ; i < 7 ; i++ ) { newYear = ( i + nStartingYear ) + 1 if ( newYear == yearSelected ) { txtYear = " " + newYear + " " } else { txtYear = " " + newYear + " " } document.getElementById("y"+i).innerHTML = txtYear } nStartingYear ++; bShow = true } function decYear() { for ( i = 0 ; i < 7 ; i++ ) { newYear = ( i + nStartingYear ) - 1 if ( newYear == yearSelected ) { txtYear = " " + newYear + " " } else { txtYear = " " + newYear + " " } document.getElementById("y"+i).innerHTML = txtYear } nStartingYear --; bShow = true } function selectYear(nYear) { yearSelected = parseInt(nYear + nStartingYear); yearConstructed = false; constructCalendar(); popDownYear(); } function constructYear() { popDownMonth() sHTML = "" if (!yearConstructed) { sHTML = "-" j = 0 nStartingYear = yearSelected - 3 for ( i = (yearSelected - 3) ; i <= (yearSelected + 3) ; i++) { sName = i; if ( i == yearSelected ) { sName = "" + sName + "" } sHTML += " " + sName + " " j ++; } sHTML += "+" document.getElementById("selectYear").innerHTML = "" + sHTML + "" yearConstructed = true } } function popDownYear() { clearInterval(intervalID1) clearTimeout(timeoutID1) clearInterval(intervalID2) clearTimeout(timeoutID2) crossYearObj.visibility= "hidden" } function popUpYear() { var leftOffset 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 } /*** calendar ***/ function WeekNbr(today) { Year = takeYear(today); Month = today.getMonth(); Day = today.getDate(); now = Date.UTC( Year, Month, Day+1, 0, 0, 0 ); var Firstday = new Date(); Firstday.setYear(Year); Firstday.setMonth(0); Firstday.setDate(1); then = Date.UTC( Year, 0, 1, 0, 0, 0 ); var Compensation = Firstday.getDay(); if (Compensation > 3) Compensation -= 4; else Compensation += 3; NumberOfWeek = Math.round((((now-then)/86400000)+Compensation)/7); return NumberOfWeek; } function takeYear(theDate) { x = theDate.getYear(); var y = x % 100; y += (y < 38) ? 2000 : 1900; return y; } function constructCalendar () { var dateMessage var startDate = new Date (yearSelected,monthSelected,1) var endDate = new Date (yearSelected,monthSelected+1,1); endDate = new Date (endDate - (24*60*60*1000)); numDaysInMonth = endDate.getDate() datePointer = 0 dayPointer = startDate.getDay() - startAt if ( dayPointer < 0 ) { dayPointer = 6 } sHTML = "" if ( showWeekNumber == 1 ) { sHTML += "" } for ( i = 0 ; i < 7 ; i++) { sHTML += "" } sHTML +="" if ( showWeekNumber == 1 ) { sHTML += "" } for ( var i = 1 ; i <= dayPointer ; i++ ) { sHTML += "" } for ( datePointer = 1 ; datePointer <= numDaysInMonth ; datePointer++ ) { dayPointer++; sHTML += "" if ( ( showWeekNumber == 1 ) && ( datePointer < numDaysInMonth ) ) { sHTML += "" } } } document.getElementById("content").innerHTML = sHTML document.getElementById("spanMonth").innerHTML = " " + monthName[monthSelected] + " " document.getElementById("spanYear").innerHTML = " " + yearSelected + " " } function popUpCalendar(ctl, ctl2,ctl3,ctl4, format) { var leftpos=0 var toppos=0 if (bPageLoaded) { if ( crossobj.visibility == "hidden" ) { ctlToPlaceValue1 = ctl2 ctlToPlaceValue2 = ctl3 ctlToPlaceValue3 = ctl4 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 ) { // invalid date format formatChar="" } } } } tokensChanged = 0 if ( formatChar != "" ) { // use user's date 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 ++ } } } } } 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 -10 : fixedX crossobj.top = fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 -20 : fixedY constructCalendar (1, monthSelected, yearSelected); crossobj.visibility=(dom||ie)? "visible" : "show" hideElement( 'SELECT', document.getElementById("calendar") ); hideElement( 'APPLET', document.getElementById("calendar") ); bShow = true; } } else { init() popUpCalendar(ctl, ctl2, format) } } 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 }
" + weekString + ""+ dayName[i]+"
" + WeekNbr(startDate) + "  " var sStyle = "normal-day-style"; //regular day if ( ( datePointer == dateNow ) && ( monthSelected == monthNow ) && ( yearSelected == yearNow ) ) //today { sStyle = "current-day-style"; } else if (dayPointer % 7 == (startAt * -1) +1) //end-of-the-week day { sStyle = "end-of-weekday-style"; } //selected day if ( ( datePointer == odateSelected ) && ( monthSelected == omonthSelected ) && ( yearSelected == oyearSelected ) ) { sStyle += " selected-day-style"; } 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 += " holiday-style"; 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=\"\"' " sHTML += " " + datePointer + " " sHTML += "" if ( ( dayPointer + startAt ) % 7 == startAt) { sHTML += "
" + ( WeekNbr(new Date(yearSelected,monthSelected,datePointer+1)) ) + "