var startHour = 5; var endHour = 22; var formName = 'yoyakuform'; var dateInputName = 'sdate'; var dateViewId = 'tgtdate'; var dateViewFormat = 'yyyy年m月d日(ddd)'; var drowTagId = 'yoyaku'; var vacantStr = " "; var prtResStr = "△"; var reservStr = "×"; var outTmeStr = "−"; var outDayStr = "外"; var reserveList = getReserveList(); var roomList = getRoomList(); var reserveIndex = new Object(); /* ---------------------------------------------------------- */ // インデックス作成 /* ---------------------------------------------------------- */ for(var i=0; i endDay) day = endDay; var oDate = new Date(year, month, day); return oDate; } /* ---------------------------------------------------------- */ // yyyy/mm/dd形式の取得 // in: なし // out:yyyy/mm/dd形式(String) /* ---------------------------------------------------------- */ Date.prototype.yyyymmdd = function() { var year = this.getFullYear(); var month = this.getMonth()+1; var day = this.getDate(); if(month < 10) month = '0'+month; if(day < 10) day = '0'+day; return ''+year+'/'+month+'/'+day; } /* ---------------------------------------------------------- */ // フォーマット形式で取得 // in: フォーマット文字列 // out:フォーマット形式(String) /* ---------------------------------------------------------- */ Date.prototype.format = function(ifmt) { var oStr = ifmt; var weekstr = "日月火水木金土"; var year = this.getFullYear(); var month = this.getMonth()+1; var month1 = month; var day = this.getDate(); var day1 = day; var hour = this.getHours(); var hour1 = hour; var min = this.getMinutes(); var min1 = min; var sec = this.getSeconds(); var sec1 = sec; var week = this.getDay(); var week1 = weekstr.charAt(week); if(month < 10) month1 = '0'+month; if(day < 10) day1 = '0'+day; if(hour < 10) hour1 = '0'+hour; if(min < 10) min1 = '0'+min; if(sec < 10) sec1 = '0'+sec; oStr = oStr.replace(/yyyy/g, year); oStr = oStr.replace(/mm/g, month1); oStr = oStr.replace(/m/g, month); oStr = oStr.replace(/ddd/g, week1); oStr = oStr.replace(/dd/g, day1); oStr = oStr.replace(/d/g, day); oStr = oStr.replace(/hh/g, hour1); oStr = oStr.replace(/h/g, hour); oStr = oStr.replace(/mi/g, min1); oStr = oStr.replace(/ss/g, sec1); oStr = oStr.replace(/s/g, sec); return oStr; } /* ---------------------------------------------------------- */ // テーブル作成 /* ---------------------------------------------------------- */ function drow(mode, plus){ var errmsg = drow_html(mode, plus); if(errmsg != ""){ alert(errmsg); } } function drow_html(mode, plus){ // ----------------------------------------- // 日付の計算と設定 // ----------------------------------------- var obj = document.forms[formName].elements[dateInputName]; var targetDateStr = obj.value; var targetDate = new Date(); var today = new Date(); today = new Date(today.getFullYear(), today.getMonth(), today.getDate()); if(targetDateStr != ""){ targetDate = new Date(targetDateStr); } if(mode == 'd'){ targetDate = targetDate.addDay(plus); } else if(mode == 'w'){ targetDate = targetDate.addWeek(plus); } else if(mode == 'm'){ targetDate = targetDate.addMonth(plus); } else { targetDate = new Date(); } targetDateStr = targetDate.yyyymmdd(); if(targetDate.getTime() < today.getTime()){ return "過去の予約状況は表示できません。"; } obj.value = targetDateStr; document.getElementById(dateViewId).innerHTML = targetDate.format(dateViewFormat); // ----------------------------------------- // 施設一覧の設定 // ----------------------------------------- var reserve_list = new Array(); // データ構成 // 0〜47: 0時00分〜23時30分 // 48〜54: 施設情報 for(var i=0; i 1){ for(var h=0; h<48; h++) hour_info[h] = room_info.maxSurfaceNum; } else { for(var h=0; h<48; h++) hour_info[h] = vacantStr; } // 期間外の設定 if(reserveLimit.getTime() <= targetDate.getTime()){ for(var h=0; h<48; h++) hour_info[h] = outDayStr; } else { // 各時間後との処理 var wTime = new Date(targetDateStr+" "+"00:00:00"); for(var h=0; h<48; h++){ wTime.setTime(wTime.getTime()+30*60*1000); // 30分 // 時間外の設定 if(wTime.getTime() <= fromTimeCd.getTime() || toTimeCd.getTime() < wTime.getTime()){ hour_info[h] = outTmeStr; } } } var reserve_info= new Object(); reserve_info.room = room_info; reserve_info.hour = hour_info; reserve_list.push(reserve_info); } // ----------------------------------------- // 予約状況の設定 // ----------------------------------------- var reserveIndexList = reserveIndex[targetDateStr]; if(reserveIndex[targetDateStr] != undefined){ var reserveIndexList = reserveIndex[targetDateStr]; for(var i=0; i 1){ hour_info[h] -= reserveInfo.useSurfaceNum; } else { hour_info[h] = reservStr; } } } } reserve_list[i].hour = hour_info; reserve_list[i].room = room_info; } } } // ----------------------------------------- // 部分予約可能な数字を記号に変換 // ----------------------------------------- for(var i=0; i 1){ for(var h=0; h<48; h++){ if(!isNaN(hour_info[h])){ if(hour_info[h] < 1){ hour_info[h] = reservStr; } else if(hour_info[h] < room_info.maxSurfaceNum){ hour_info[h] = prtResStr; } else { hour_info[h] = vacantStr; } } } } reserve_list[i].hour = hour_info; } // ----------------------------------------- // HTMLの作成、表示 // ----------------------------------------- var timeHtml = ""; for(var h=startHour; h"+h+""; } var lastBulding = ""; var html = ""; html += "\n\n"; for(var i=0; i"+toHtml(room_info.buildingNm)+""+timeHtml+"\n"; } html += ""; if(room_info.hotelFlg == "1"){ html += ""; } else { for(var h=startHour * 2; h"; } } html += "\n"; lastBulding = room_info.buildingCd; } html += "\n"; html += "
 "+toHtml(room_info.roomNm)+""+toHtml(hour_info[startHour * 2])+"
\n"; html += "
    "; html += "
  • "+toHtml(vacantStr)+"予約可能
  • "; html += "
  • "+toHtml(prtResStr)+"一部予約可能
  • "; html += "
  • "+toHtml(reservStr)+"予約済み
  • "; html += "
  • "+toHtml(outTmeStr)+"利用時間外
  • "; html += "
  • "+toHtml(outDayStr)+"予約可能期間外
  • "; html += "
\n"; document.getElementById(drowTagId).innerHTML = html; return ""; } function toHtml(ch) { ch = ""+ch; ch = ch.replace(/&/g,"&"); ch = ch.replace(/"/g,"""); ch = ch.replace(//g,">"); ch = ch.replace(/ /g," ") ; return ch ; }