var request = null;
var selYear = ( new Date ).getFullYear();
var selMonth = ( new Date ).getMonth() +1;
function getCalData( date ) {
if( !request ) {
try {
request = new XMLHttpRequest();
if( !request ) throw false;
}
catch( e ) {
request = new ActiveXObject( 'Msxml2.XMLHTTP' );
if( !request ) request = new ActiveXObject( 'Microsoft.XMLHTTP' );
}
}
var url = "";
var p ="";
if(date) p= 'year=' + date.split( '-' )[0] + '&month=' + date.split( '-' )[1];
else p = "";
var template = '/default';
if(template)
{
url = '/chtml/hospital/reservation_calender.php?template=' + template + '&'+ p ;
}
else
{
url = '/chtml/hospital/reservation_calender.php?'+p ;
}
request.open( "GET" , url, true );
request.onreadystatechange = setCalData;
request.send(null);
}
// 예약자리스트 레이어
function reservationList(year, month, day) {
// 기능추가전 사용자들은 동작안함.
if (!document.getElementById('order_list')) return;
if (year != undefined) {
var orderListLayer = document.getElementById('order_list');
orderListLayer.style.left=document.body.scrollLeft + event.clientX + 10;
orderListLayer.style.top=document.body.scrollTop + event.clientY + 10;
if( !request ) {
try {
request = new XMLHttpRequest();
if( !request ) throw false;
}
catch( e ) {
request = new ActiveXObject( 'Msxml2.XMLHTTP' );
if( !request ) request = new ActiveXObject( 'Microsoft.XMLHTTP' );
}
}
var url = "";
var p ="";
p= 'year=' + year + '&month=' + month + '&day=' + day;
var template = '/default';
if(template)
{
url = '/chtml/hospital/reservation_list.php?template=' + template + '&'+ p ;
}
else
{
url = '/chtml/hospital/reservation_list.php?'+p ;
}
request.open( "GET" , url, true );
request.onreadystatechange = viewReservationLayer;
request.send(null);
}else {
document.getElementById( 'order_list' ).style.display = 'none';
}
}
function viewReservationLayer() {
if( !request ) return;
if( ( request.readyState == 4 ) && ( request.status == 200 ) ) {
var orderList = request.responseText;
var orderListLayer = document.getElementById( 'order_list' );
orderListLayer.innerHTML = orderList;
orderListLayer.style.display='block';
}
}
function setCalData() {
if( !request ) return;
var query = '';
var regexStep = /&?step=([^=^&^\?]+)?/;
var regexDate = /&?date=([^=^&^\?]+)?/;
if( location.search ) query = location.search.split( '?' )[1];
query = query.replace( regexStep , '' ).replace( regexDate , '' );
if( ( request.readyState == 4 ) && ( request.status == 200 ) ) {
var txt = request.responseText;
if( !txt ) return;
var txtData = txt.split( "\n" );
var calData = new Array;
for( var i = 0 ; i < txtData.length ; i++ ) {
calData[ i ] = txtData[ i ].split( ' ' );
}
/*
txtData는 42개의 배열로 이루어져 있으며 구성내용은 다음과 같다. (날짜는 3일이라고 가정)
날짜가 없을 때 : 0 0
날짜가 있고 오늘보다 이전날짜이며 예약가능상태 : 0 3 0/1200
날짜가 있고 오늘을 포함한 미래이며 예약불가능상태 (예약불가원인=인원초과) : 0 3 0/0
날짜가 있고 오늘을 포함한 미래이며 예약불가능상태 (예약불가원인=휴일설정) : 0 3
날짜가 있고 오늘을 포함한 미래이며 예약가능상태 : 1 3 0/1200
날짜가 있고 오늘을 포함한 미래이며 예약가능상태이고 공휴일 : 1 3 0/1200 1
날짜가 있고 오늘을 포함한 미래이며 예약가능상태이고 공휴일이 아닐때 : 1 3 0/1200 0
*/
document.getElementById( 'calendarYM' ).innerHTML = selYear + '년 ' + selMonth + '월';
var isCurYM = ( ( new Date ).getFullYear() == selYear ) && ( ( ( new Date ).getMonth() +1 ) == selMonth );
var curD = ( new Date ).getDate();
var tb = document.getElementById( 'calendarDisplay' );
var useLogin = ( tb.getAttribute( 'login' ) != 'X' );
var isLogin = ( tb.getAttribute( 'login' ) == 'Y' );
for( var i = 1 , dataCnt = 0 ; i < tb.rows.length ; i++ ) {
for( var j = 0 , order = 0 , quantity = 0 , msg = '' ; j < tb.rows[ i ].cells.length ; j++ ) {
var data = calData[ dataCnt++ ];
if( data[ 2 ] ) {
order = parseInt( data[ 2 ].split( '/' )[0] );
quantity = parseInt( data[ 2 ].split( '/' )[ 1 ] );
msg = '예예약하기
';
}
// 날짜가 있고 예약가능 상태
if( ( data[ 1 ] > 0 ) && ( data[ 0 ] == 1 ) ) {
//var func = function() { location.href = '?' + ( query ? query : '' ) + '&step=order&date=' + selYear + '-' + selMonth + '-' + this.firstChild.nodeValue; };
//tb.rows[ i ].cells[ j ].onclick = ( useLogin ? ( isLogin ? func : ( function() { alert( '로그인이 필요합니다' ); } ) ) : func );
//tb.rows[ i ].cells[ j ].style.cursor = 'hand';
}
// 날짜가 있고 예약불가능 상태
else {
tb.rows[ i ].cells[ j ].onclick = function() {};
tb.rows[ i ].cells[ j ].style.cursor = 'normal';
msg = '';
}
if( isCurYM && ( curD == data[ 1 ] ) ) {
tb.rows[ i ].cells[ j ].setAttribute( 'prevClassName' , tb.rows[ i ].cells[ j ].className );
tb.rows[ i ].cells[ j ].className = 'm_today';
}
else if( tb.rows[ i ].cells[ j ].className == 'm_today' ) {
tb.rows[ i ].cells[ j ].className = tb.rows[ i ].cells[ j ].getAttribute( 'prevClassName' );
tb.rows[ i ].cells[ j ].removeAttribute( 'prevClassName' );
}
// 공휴일 표시 - 백수환 2009-09-15
if (data[3] == 1) {
tb.rows[ i ].cells[ j ].setAttribute( 'prevPageClassName' , tb.rows[ i ].cells[ j ].className );
tb.rows[ i ].cells[ j ].className = tb.rows[ i ].cells[ j ].className + ' holiday';
}else if(tb.rows[ i ].cells[ j ].className == tb.rows[ i ].cells[ j ].getAttribute('prevPageClassName') + ' holiday') {
tb.rows[ i ].cells[ j ].className = tb.rows[ i ].cells[ j ].getAttribute( 'prevPageClassName' );
tb.rows[ i ].cells[ j ].removeAttribute( 'prevPageClassName' );
}
if (order > 0) {
msg = msg + '완예약내역
';
}
// 날짜가 있을 때 날짜를 출력, 날짜가 없을때는 빈칸
tb.rows[ i ].cells[ j ].innerHTML = ( ( data[ 1 ] > 0 ) ? ( data[ 1 ] + ( data[ 2 ] ? ( '
' + msg ) : '' ) ) : '' );
}
}
}
}
function nextMonth() {
if( selMonth > 11 ) { selYear += 1; selMonth = 0; }
selMonth += 1;
getCalData( selYear + '-' + selMonth );
}
function prevMonth() {
if( selMonth < 2 ) { selYear -= 1; selMonth = 13; }
selMonth -= 1;
getCalData( selYear + '-' + selMonth );
}
function start() {
getCalData( selYear + '-' + selMonth );
}
if( window.attachEvent ) window.attachEvent( 'onload' , start );
else window.addEventListener( 'load' , start , false );