/******************************************************************** * カレンダーによる日付入力スクリプト * * ( 下記スクリプトは改造も可能ですがまったくいじらずにそのままペース * トするだけでもご利用いただけるように書いてあります ) * * Syntax : wrtCalendar( formElementObject[,moveMonthFlg][,winOpenFlg] ) * 例 : wrtCalendar( this ) * * 使いたいINPUT入力タグにonFocus="wrtCalendar(this)"を ペーストし * ます。それぞれのタグに違う名前(NAME属性)を忘れずに付けておいてく * ださい。 * * Example :受付日: * * ------------------------------------------------------------------ * calendar.js Copyright(c)1999 Toshirou Takahashi tato@fureai.or.jp * Support http://www.fureai.or.jp/~tato/JS/BOOK/INDEX.HTM * ------------------------------------------------------------------ * 2004/7/9 修正:角田 桂一(http://www.h3.dion.ne.jp/~sakatsu/index.htm) * ・文字色を日曜(赤),土曜(青)に変更 * ・本日日付の強調をピンク背景から太字に変更(祝日強調の為) * ・前月/翌月部分の文字色をグレー化 * ・祝日をピンク背景で強調(祝日判定用ソースが必要です) * (http://www.h3.dion.ne.jp/~sakatsu/HolidayChk.js) */ var now = new Date() var absnow = now var Win=navigator.userAgent.indexOf('Win')!=-1 var Mac=navigator.userAgent.indexOf('Mac')!=-1 var X11=navigator.userAgent.indexOf('X11')!=-1 var Moz=navigator.userAgent.indexOf('Gecko')!=-1 var Opera=!!window.opera var MSIE=navigator.userAgent.indexOf('MSIE')!=-1 var winflg=1 function openCalendar(arg1) { wrtCalendar(arg1); } function wrtCalendar(oj,arg1,arg2){ if(MSIE) { // openCalendarLay(oj); // return; } if(Opera)return oj.blur() if(!arguments[1])arg1=0 if(!Moz) if(arguments[1]||arguments[1]==0)winflg=0 //-初期化 if(arg1==0)now = new Date() //-年月日取得 nowdate = now.getDate() nowmonth = now.getMonth() nowyear = now.getYear() //-月移動処理 if(nowmonth==11 && arg1 > 0){ //12月でarg1が+なら nowmonth = -1 + arg1 ; nowyear++ //月はarg1-1;1年加算 } else if(nowmonth==0 && arg1 < 0){ //1月でarg1が-なら nowmonth = 12 + arg1 ; nowyear-- //月はarg1+12;1年減算 } else { nowmonth += arg1 //2-11月なら月は+arg1 } //-2000年問題対応 if(nowyear<1900)nowyear=1900+nowyear //-現在月を確定 now = new Date(nowyear,nowmonth,1) //-YYYYMM作成 nowyyyymm=nowyear*100+nowmonth //-YYYY/MM作成 nowtitleyyyymm=nowyear+'/'+(nowmonth + 1) //-週設定 week = new Array('日','月','火','水','木','金','土'); //-カレンダー表示用サブウインドウオープン if(winflg){ var w=152 var h=156 //-calendar用OS別サイズ微調整 if(Moz) { w+=26 ; h+=40 } else if(Win){ w+=0 ; h+=0 } else if(Mac){ w+=8 ; h+=22 } else if(X11){ w+=5 ; h+=46 } var x=100 var y=20 if(document.all){ x=window.event.screenX+30 y=window.event.screenY-180 } else if (document.layers || document.getElementById){ x+=window.screenX y+=window.screenY } mkSubWin('','calendar',x,y,w,h) } //-カレンダー構築用基準日の取得 fstday = now //今月の1日 startday = fstday - ( fstday.getDay() * 1000*60*60*24 ) //最初の日曜日 startday = new Date(startday) //-カレンダー構築用HTML ddata = '' ddata += '\n' ddata += '' if(!Moz) ddata += '\n' ddata += 'Auto Input Calendar\n' ddata += '\n' ddata += '\n' ddata += '\n' ddata += '
\n' ddata += '\n' //-MONTH ddata += ' \n' ddata += ' \n' ddata += ' \n' // 曜日:日[赤],月~金[黒],土[青] (2004/7/9 角田桂一 修正) // Week ddata += ' \n' // Week(Sunday:Red) ddata += ' \n' // Week(Monday - Friday) for (i=1;i<6;i++){ ddata += ' \n' } // Week(Saturday:Blue) ddata += ' \n' ddata += ' \n' //-DATE for(j=0;j<6;j++){ ddata += ' \n' for(i=0;i<7;i++){ nextday = startday.getTime() + (i * 1000*60*60*24) wrtday = new Date(nextday) wrtdate = wrtday.getDate() wrtmonth= wrtday.getMonth() wrtyear = wrtday.getYear() if(wrtyear < 1900)wrtyear=1900 + wrtyear wrtyyyymm = wrtyear * 100 + wrtmonth wrtyyyymmdd= ''+wrtyear +'/'+ (wrtmonth+1) +'/'+wrtdate // 祝日名の取得(2004/7/9 角田桂一 追加) getholiday = '' wrtdateA = '\n' } else { ddata += wrtdateA } } ddata += ' \n' } ddata += ' \n' startday = new Date(nextday) startday = startday.getTime() + (1000*60*60*24) startday = new Date(startday) } //-mac用クローズボタン if(Mac){ ddata += ' \n' ddata += '
\n' ddata += nowtitleyyyymm ddata += ' \n' ddata += '\n' ddata += '\n' ddata += '
\n' ddata += ' \n' ddata += week[0] ddata += ' \n' ddata += ' \n' ddata += ' \n' ddata += week[i] ddata += ' \n' ddata += ' \n' ddata += ' \n' ddata += week[6] ddata += ' \n' ddata += '
\n' ddata += ' 0){ var vals = form_value.split("-"); dispYear = vals[0]; dispMonth = vals[1]-1; selectYear = vals[0]; selectMonth = vals[1]; selectDay = vals[2]; } outHtml(getCalendarTable()); //デフォルト表示位置 var window_calendar=document.getElementById("WINDOW_CALENDAR"); window_calendar.style.top = MOUSE_Y - (window_calendar.offsetHeight/2) + scrollTop();; window_calendar.style.left = MOUSE_X + 30 + scrollLeft(); MAX_ZINDEX++; window_calendar.style.zIndex = MAX_ZINDEX; setDragObject('WINDOW_CALENDAR'); dragOff(); } function closeCalendar(){ var window_calendar=document.getElementById("WINDOW_CALENDAR"); window_calendar.style.top = -1999 ; window_calendar.style.left = -1999; setDragObject('WINDOW_CALENDAR'); dragOff(); } function reloadCalendar(addMonth){ if (addMonth == 0){ dispYear = getYear(new Date()); dispMonth = new Date().getMonth(); } else { dispMonth = eval(dispMonth) + eval(addMonth); while(dispMonth<0 || dispMonth>11){ if (dispMonth>11){ dispMonth -= 12; dispYear++; } else if (dispMonth<0){ dispMonth += 12; dispYear--; } } } outHtml(getCalendarTable()); dragOff(); } function getCalendarTable(){ var now = new Date() now.setYear(dispYear); now.setMonth((dispMonth)); var absnow = new Date(); //-年月日取得 //nowmonth = now.getMonth() nowyear = getYear(now); nowmonth = dispMonth; //-YYYYMM作成 nowyyyymm=nowyear*100+nowmonth //-YYYY/MM作成 nowtitleyyyymm=nowyear+'/'+(nowmonth + 1) //-週設定 week = new Array('日','月','火','水','木','金','土'); //-カレンダー構築用基準日の取得 fstday = new Date(nowyear,nowmonth,1) //今月の1日 startday = fstday - ( fstday.getDay() * 1000*60*60*24 ) //最初の日曜日 startday = new Date(startday) //-カレンダー構築用HTML ddata = '' ddata += "
CALENDAR" ddata += "閉じる
" //ddata += '
' ddata += ' ' ddata += ' ' ddata += ' ' ddata += ' ' ddata += ' ' ddata += ' ' ddata += '
<<<<<>>>>>
' ddata += '\n' //-MONTH ddata += ' \n' ddata += ' ' ddata += ' \n' //-WEEK ddata += ' \n' for (i=0;i<7;i++){ if (week[i]=="日"){ ddata += ' \n' } else if (week[i]=="土"){ ddata += ' \n' } else { ddata += ' \n' } } ddata += ' \n' //-DATE for(j=0;j<6;j++){ ddata += ' \n' for(i=0;i<7;i++){ nextday = startday.getTime() + (i * 1000*60*60*24) wrtday = new Date(nextday) wrtdate = wrtday.getDate() wrtmonth= wrtday.getMonth() wrtyear = getYear(wrtday); wrtyyyymm = wrtyear * 100 + wrtmonth wrtyyyymmdd= ''+wrtyear +'-'+ (wrtmonth+1) +'-'+wrtdate var wrtdateA; wrtdateA = ""; var out_date = wrtyear + "-" + (wrtmonth+1) + "-" + wrtdate; wrtdateA += '' + wrtdate + '' //wrtdateA = '' + wrtdate + '' if(wrtyyyymm != nowyyyymm){ ddata += ' \n' } ddata += ' \n' startday = new Date(nextday) startday = startday.getTime() + (1000*60*60*24) startday = new Date(startday) } ddata += ' \n' ddata += ' \n' ddata += ' \n' ddata += '
' //ddata += nowtitleyyyymm ddata += ' ' ddata += ' ' ddata += '
' + week[i] + '' + week[i] + '' + week[i] + '
\n' ddata += wrtdateA } else if(wrtdate == absnow.getDate() && wrtmonth == absnow.getMonth() && getYear(wrtday) == getYear(absnow)){ ddata += ' ' + wrtdateA } else if(wrtdate == eval(selectDay) && (wrtmonth+1) == eval(selectMonth) && getYear(wrtday) == eval(selectYear)){ ddata += ' ' + wrtdateA } else { ddata += ' \n' ddata += wrtdateA } ddata += '
\n' ddata += ' \n' ddata += '
\n' //ddata += '\n' return ddata; } //年OptionHTML文字列取得 function selectYearOpthinHtml(year){ var rtn = ''; for (var y = eval(year)-20; y < eval(year)+20; y++){ if (year == y){ rtn += '' } else { rtn += '' } } return rtn; } //月OptionHTML文字列取得 function selectMonthOpthinHtml(month){ var rtn = ''; for (var m=1;m<13;m++){ if (eval(month) == m){ rtn += '' } else { rtn += '' } } return rtn; } function outHtml(html){ var window_calendar=document.getElementById("WINDOW_CALENDAR"); if (window_calendar == null){ generateWindowHtml(); window_calendar=document.getElementById("WINDOW_CALENDAR"); } window_calendar.innerHTML=""; window_calendar.innerHTML=html; } function generateWindowHtml(){ var window_calendar = document.createElement("div"); window_calendar.setAttribute("id","WINDOW_CALENDAR"); //window_calendar.onmousedown = windowClick; var body_eles =document.getElementsByTagName("body"); body_eles[0].appendChild(window_calendar); } function windowClick(){ setDragObject('WINDOW_CALENDAR'); } function scrollTop(){ myOP = (navigator.userAgent.indexOf("Opera",0) != -1)?1:0; //OP myN6 = document.getElementById; // N6 or IE myIE = document.all; // IE myN4 = document.layers; // N4 if (myOP){ // OP? return document.body.scrollTop; }else if (myIE){ // IE? return document.body.scrollTop; }else if (myN6){ // N6? //return window.pageYOffset; return 0; }else if (myN4){ // N4? return 0; } } function scrollLeft(){ myOP = (navigator.userAgent.indexOf("Opera",0) != -1)?1:0; //OP myN6 = document.getElementById; // N6 or IE myIE = document.all; // IE myN4 = document.layers; // N4 if (myOP){ // OP? return document.body.scrollLeft; }else if (myIE){ // IE? return document.body.scrollLeft; }else if (myN6){ // N6? //return window.pageXOffset; return 0; }else if (myN4){ // N4? return 0; } } function getYear(targetDate){ myOP = (navigator.userAgent.indexOf("Opera",0) != -1)?1:0; //OP myN6 = document.getElementById; // N6 or IE myIE = document.all; // IE myN4 = document.layers; // N4 if (myOP){ // OP? return targetDate.getYear() + 1900; }else if (myIE){ // IE? if (targetDate.getYear() <2000){ return targetDate.getYear() + 1900; } else { return targetDate.getYear() } }else if (myN6){ // N6? return targetDate.getYear() + 1900; }else if (myN4){ // N4? return targetDate.getYear() + 1900; } }