var calendarAreaClass = function(){ //ブラウザ判定 var isWin9X = (navigator.appVersion.toLowerCase().indexOf('windows 98')+1); var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1?1:0); var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera')+1?1:0); var isSafari = (navigator.appVersion.toLowerCase().indexOf('safari')+1?1:0); var isFirefox = (navigator.userAgent.toLowerCase().indexOf('firefox')+1?1:0); var isKonqueror = (navigator.userAgent.toLowerCase().indexOf('Konqueror')+1?1:0); if (isOpera) isIE = false; var getUrl = ""; //カレンダーリクエスト送信先 var thisYear = false; //年オブジェクト var thisMonth = false; //月オブジェクト var thisDay = false; //日オブジェクト var thisNumber = false; //カレンダー番号 var thisStartdate = ""; var thisBtn = false; //カレンダー呼び出しボタン var thisArea = false; //カレンダー表示親エリア var thisBody = false; //カレンダー表示エリア var thisBack = false; //カレンダー表示エリア背景(透過防止のiframe) var thisText = false; //カレンダー選択中の日付エリア var response = ""; //初期設定 this.init = function (url,number,startdate){ getUrl = url; thisNumber = number; thisYear = document.getElementById("year"+thisNumber); thisMonth = document.getElementById("month"+thisNumber); thisDay = document.getElementById("day"+thisNumber); thisArea = document.getElementById("calendarArea"+thisNumber); thisStartdate = startdate; if(thisArea){ //カレンダー表示エリア設定 thisArea.innerHTML = '
'; thisBody = document.getElementById("calendarAreaBody"+thisNumber); thisText = document.getElementById("date"+thisNumber); calendarShow("",true); }else{ return false; } } //カレンダー呼び出し(リクエスト送信) function calendarShow(dateText,show){ var year = null; var month = null; var day = null; var allElements = document.getElementsByTagName("*"); if(dateText.indexOf("-") > -1){ var dates = dateText.split("-"); year = dates[0]; month = dates[1]; day = dates[2]; }else{ year = thisYear.value; month = thisMonth.value; day = thisDay.value; } var sendparam = "&start_date=" + thisStartdate + "&elm_no=" + thisNumber + "&year=" + year + "&month=" + month + "&day=" + day + '&select=' + thisYear.value + '-' + thisMonth.value + '-' + thisDay.value; //リクエスト送信 getResponsebody(setResponse,sendparam,'POST',getUrl,false,"calendarAreaBody"); } //カレンダー呼び出し(カレンダー情報受信) function setResponse(res,id){ response = res.responseText; if(response.length > 0){ thisBody.innerHTML = response; //選択可能日のAタグ var enableBtn = document.getElementsByName("calendar_enable"+thisNumber); for(var i = 0;i < enableBtn.length;i++){ enableBtn[i].onclick = function(){setCalendarDate(this.className,this.title)}; } if(document.getElementById("calendar_prev"+thisNumber)){ document.getElementById("calendar_prev"+thisNumber).onclick = function(){calendarShow(this.className,true)}; } if(document.getElementById("calendar_today"+thisNumber)){ document.getElementById("calendar_today"+thisNumber).onclick = function(){calendarShow(this.className,true)}; } if(document.getElementById("calendar_next"+thisNumber)){ document.getElementById("calendar_next"+thisNumber).onclick = function(){calendarShow(this.className,true)}; } } } //日付代入 function setCalendarDate(dateText,dateTitle){ if(dateText.indexOf("-") > -1){ var dates = dateText.split("-"); var dates_title = dateTitle.split("-"); }else{ return false; } var before_date = document.getElementById(thisYear.value + '-' + thisMonth.value + '-' + thisDay.value+'-'+thisNumber); var after_date = document.getElementById(dateText+'-'+thisNumber); if(before_date && before_date.getAttribute('class_bk')){ before_date.className = before_date.getAttribute('class_bk'); } after_date.setAttribute('class_bk',after_date.className); after_date.className = 'calendar_area_td_selected'; thisYear.value = dates[0]; thisMonth.value = dates[1]; thisDay.value = dates[2]; thisYear.title = dates_title[0]; thisMonth.title = dates_title[1]; thisDay.title = dates_title[2]; thisText.innerHTML = dates[0]+'年'+dates[1]+'月'+dates[2]+'日'; } //カレンダーを閉じる function calendarHide(){ thisArea.style.display = "none"; } function getResponsebody(callback,data,method,fileURL,async ,id){ var oj = null; //XMLHttpRequestオブジェクト生成 if(window.ActiveXObject){ try{ oj = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e){ try{ oj = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e2){ oj = null; } } }else if(window.XMLHttpRequest){ oj = new XMLHttpRequest(); }else{ oj = null; } if( oj == null ){ return null; } //Konquerorはonloadが不安定 if(isOpera || isSafari || isFirefox){ oj.onload = function () { callback(oj,id) } }else{ oj.onreadystatechange = function () { if (oj.readyState == 4){ callback(oj,id); } } } if(isFirefox){ oj.overrideMimeType("text/plain; charset=shift_jis"); } oj.open( method,fileURL,async); if(method == 'POST'){ if(!isOpera){ oj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } } oj.send(data); } }