/********************************************************************
* カレンダーによる日付入力スクリプト
*
* ( 下記スクリプトは改造も可能ですがまったくいじらずにそのままペース
* トするだけでもご利用いただけるように書いてあります )
*
* 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'
ddata += '\n'
calendarwin.document.write(ddata)
calendarwin.document.close()
calendarwin.focus()
winflg=1
}
/********************************************************************
* 簡易サブウインドウ開き
* Syntax : mkSubWin(URL,winName,x,y,w,h)
* 例 : mkSubWin(winIndex,'test.htm','win0',100,200,150,300)
* ------------------------------------------------------------------
*/
var calendarwin;
function mkSubWin(URL,winName,x,y,w,h){
var para =""
+" left=" +x
+",screenX=" +x
+",top=" +y
+",screenY=" +y
+",toolbar=" +0
+",location=" +0
+",directories=" +0
+",status=" +0
+",menubar=" +0
+",scrollbars=" +0
+",resizable=" +1
+",innerWidth=" +w
+",innerHeight=" +h
+",width=" +w
+",height=" +h
calendarwin=window.open(URL,winName,para);
calendarwin.focus()
}
/*--/////////////ここまで///////////////////////////////////////--*/
var formElement
var dispYear;
var dispMonth;
var selectYear=0;
var selectMonth=0;
var selectDay=0;
function openCalendarLay(inFormElement){
formElement = inFormElement
writeCalendar()
}
function writeCalendar(){
freeDocumentOnmouse();
var now = new Date();
dispYear = getYear(now);
dispMonth = now.getMonth();
var form_value = formElement.value;
form_value = replaceAll(form_value,"/","-");
if (form_value.length>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 += '\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;
}
}