﻿
//////////////////////////////////////////////////////////////////
/// 初期設定
//////////////////////////////////////////////////////////////////

/*
初期設定
------------------------------------------------------------*/
//ブロック指定
var calBlockId="CALENDAR";
var calBlockInId="INNER03";
var calCheckOutId="DATE_CHOUT";

//テキストボックス指定
var dateInputId="DATE_INPUT";

//泊数select要素指定
var dateSelectId="DATE_NIGHT";

//フォーム指定
var searchFormName="search";

//カレンダー外枠ブロック指定
var calWrapId="CALENDAR_WRAP";

//入力できる日付の最終日
var endLimit=186;


/*カレンダークッキー項目名
--------------------------------------------------*/
var cookie_cal="calDate";
var cookie_cal02="calDuring";


/*
クッキー保存期限 ／ 単位 ： 時間
------------------------------------------------------------*/
var cookie_period_cal=24; //24時間


/*
処理内部初期設定
------------------------------------------------------------*/
//フェードインエフェクト速度 ／ slow,normal,fast
var calFadeSpeed="100";

var inpFlag=0;
var aCalDay=24*60*60*1000;

var topCalFlg = 0;


//////////////////////////////////////////////////////////////////
/// calendar
//////////////////////////////////////////////////////////////////

/*
出力
------------------------------------------------------------*/
var loadCalendar=function(vl,flag,topFlg){
	var idCont=document.getElementById(calBlockInId);
	var source=prodCal(vl,flag);
	idCont.innerHTML=source;
	checkInp();
	if(topFlg == 0 || topFlg == undefined){
		if(UAIE6) jQuery("#selRoom").fadeOut(calFadeSpeed);
		if(UAIE6) jQuery("#selGuest").fadeOut(calFadeSpeed);
		if(UAIE6) jQuery("#selType").fadeOut(calFadeSpeed);
		if(flag == 1 && document.URL.indexOf('Korean') == -1){
			if(UAIE6) jQuery("#DATE_NIGHT").fadeOut(calFadeSpeed);
		}
		if(flag == 1 && document.URL.indexOf('Korean') != -1){
			if(UAIE6) jQuery("#selSize").fadeOut(calFadeSpeed);
			if(UAIE6) jQuery("#mt").fadeOut(calFadeSpeed);
		}
	}else{
		if(UAIE6){
			topCalFlg = 1;
			openCalTop();
		}
	}
	
}

var loadCalCookie=function(){
	var cookDate02=getCookie(cookie_cal02);
	if(cookDate02){
		document.forms[searchFormName].elements[dateSelectId].selectedIndex=cookDate02;
	}
	var cookDate=getCookie(cookie_cal);
	if(cookDate){
		setInp(cookDate);
		ctrlSText(cookDate);
	}
}

/*
カレンダー生成
------------------------------------------------------------*/
var prodCal=function(vl,flag){
	var dateAll=new Date();
	dateAll=(vl)?new Date((vl+"").slice(0,4)+"/"+(vl+"").slice(4,(vl+"").length)+"/1"):dateAll;
	thisYear=dateAll.getFullYear();
	thisMonth=dateAll.getMonth();
	thisDate=dateAll.getDate();
	thisDay=dateAll.getDay();
	
	if(!((document.URL.indexOf('Traditional-Chinese') != -1) || (document.URL.indexOf('Simplified-Chinese') != -1)) && document.URL.indexOf('Korean') == -1){
		
	month=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	day=new Array("S","M","T","W","T","F","S");
	
	}else if(document.URL.indexOf('Korean') != -1){
		month=new Array("01","02","03","04","05","06","07","08","09","10","11","12");
		day=new Array("일","월","화","수","목","금","토");
	}else{
		
		month=new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
	day=new Array("日","一","二","三","四","五","六");
	
	}
	
	var dateStart=new Date(thisYear+"/"+(thisMonth+1)+"/1");
	var dateStartNext=(thisMonth>=11)?new Date((thisYear+1)+"/1/1"):new Date(thisYear+"/"+(thisMonth+2)+"/1");
	nextYear=dateStartNext.getFullYear();
	nextMonth=dateStartNext.getMonth();
	nextDate=dateStartNext.getDate();
	nextDay=dateStartNext.getDay();
	var dateStartPrev=(thisMonth<=0)?new Date((thisYear-1)+"/12/1"):new Date(thisYear+"/"+thisMonth+"/1");
	prevYear=dateStartPrev.getFullYear();
	prevMonth=dateStartPrev.getMonth();
	prevDate=dateStartPrev.getDate();
	prevDay=dateStartPrev.getDay();

	var source=prodCal01(vl);
	source+=prodCal02(vl,dateStart,flag);
	source+=prodCal03(vl,flag);
	return source;
}


/*
カレンダー生成サブ関数１：ヘッダ
------------------------------------------------------------*/
var prodCal01=function(vl){
	source='<ul class="stepBtn clearFix">\n';
	var dateCurrent=new Date();
	var nowDateNum=Date.parse(new Date(dateCurrent.getFullYear()+'/'+eval(dateCurrent.getMonth()+1)+'/1'));
	var nextDateNum=Date.parse(new Date(nextYear+'/'+eval(nextMonth+1)+'/1'));
	if((nextDateNum-nowDateNum)/aCalDay>0){
		source+='<li class="stepLeft"><a href="javascript:void(0);" ';
		source+='onclick="loadCalendar('+prevYear+''+(prevMonth+1)+');">';
		source+='<img src="/common/images/main/item02_btn_prv.gif" alt="" width="11" height="14" /></a></li>\n';
	}else{
		source+='<li class="stepLeft"></li>\n';
	}
	if((nextDateNum-nowDateNum)/aCalDay<endLimit){
		source+='<li class="stepRight"><a href="javascript:void(0);" ';
		source+='onclick="loadCalendar('+nextYear+''+(nextMonth+1)+');">';
		source+='<img src="/common/images/main/item02_btn_fwd.gif" alt="" width="11" height="14" /></a></li>\n';
	}else{
		source+='<li class="stepRight"></li>\n';
	}
	source+='</ul>\n';

/*出力
--------------------------------------------------*/
	return source;
}

/*
カレンダー生成サブ関数２：当月
------------------------------------------------------------*/
var prodCal02=function(vl,dateStart,flag){
	var source='<div class="calendarLeft">\n';
	
	if(!((document.URL.indexOf('Traditional-Chinese') != -1) || (document.URL.indexOf('Simplified-Chinese') != -1)) && document.URL.indexOf('Korean') == -1){
		source+='<p class="month">'+month[thisMonth]+'&nbsp;'+thisYear+'</p>\n';
	}else if(document.URL.indexOf('Korean') != -1){
		source+='<p class="month">'+thisYear+'-'+month[thisMonth]+'</p>\n';
	}else{
		source+='<p class="month">'+thisYear+'年'+month[thisMonth]+'</p>\n';
	}
	
	source+='<table summary="calendar">\n<thead>\n<tr>\n';
	source+='<th>'+day[0]+'</th>\n<th>'+day[1]+'</th>\n<th>'+day[2]+'</th>\n<th>'+day[3]+'</th>\n<th>'+day[4]+'</th>\n<th>'+day[5]+'</th>\n<th>'+day[6]+'</th>\n';
	source+='</tr>\n</thead>\n<tbody>\n<tr>\n';
	var monthValue=(((thisMonth+1)+"").length==1)?"0"+(thisMonth+1):thisMonth+1;
	var j=0;
	var thisDateNum=Date.parse(new Date());
	for(var i=0;i<7;i++){
		if(dateStart.getDay()<=i){
			var nowDateNum=Date.parse(new Date(thisYear+'/'+eval(monthValue)+'/'+(j+1)));
			if(thisDateNum<nowDateNum+aCalDay&&nowDateNum+aCalDay<thisDateNum+(endLimit-document.forms[searchFormName].elements[dateSelectId].selectedIndex)*aCalDay){
				source+='<td><a href="javascript:void(0);" ';
				var dayValue=(((j+1)+"").length==1)?"0"+(j+1):j+1;
				source+='onclick="setInp(\''+monthValue+'/'+dayValue+'/'+thisYear+'\');';
				monthValueCo=(monthValue.length==2&&monthValue.charAt(0)==0)?monthValue.charAt(1):monthValue;
				dayValueCo=(dayValue.length==2&&dayValue.charAt(0)==0)?dayValue.charAt(1):dayValue;
				source+='ctrlSText(\''+thisYear+'/'+monthValueCo+'/'+dayValueCo+'\');';
				if(flag) source+='loadFacl();';
				source+='closeCalendar();">'+(j+1)+'</a></td>\n';
			}else{
				source+='<td>'+(j+1)+'</td>\n';
			}
			j++;
		}else source+='<td class="noDate">&nbsp;</td>\n';
	}
	source+='</tr>\n<tr>\n';
	var k=0;
	var maxDate=getMaxDate(thisMonth);
	for(var i=j;i<maxDate;i++){
		var nowDateNum=Date.parse(new Date(thisYear+'/'+eval(monthValue)+'/'+(i+1)));
		if(thisDateNum<nowDateNum+aCalDay&&nowDateNum+aCalDay<thisDateNum+(endLimit-document.forms[searchFormName].elements[dateSelectId].selectedIndex)*aCalDay){
			source+='<td><a href="javascript:void(0);" ';
			var dayValue=(((i+1)+"").length==1)?"0"+(i+1):i+1;
			source+='onclick="setInp(\''+monthValue+'/'+dayValue+'/'+thisYear+'\');';
			monthValueCo=(monthValue.length==2&&monthValue.charAt(0)==0)?monthValue.charAt(1):monthValue;
			dayValueCo=(dayValue.length==2&&dayValue.charAt(0)==0)?dayValue.charAt(1):dayValue;
			source+='ctrlSText(\''+thisYear+'/'+monthValueCo+'/'+dayValueCo+'\');';
			if(flag) source+='loadFacl();';
			source+='closeCalendar();">'+(i+1)+'</a></td>\n';
		}else{
			source+='<td>'+(i+1)+'</td>\n';
		}
		if((k+1)%7==0) source+='</tr>\n<tr>\n';
		k++;
	}
	while(k%7!=0){
		source+='<td class="noDate">&nbsp;</td>\n';
		k++;
	}
	source+='</tr>\n</tbody>\n</table>\n</div>\n';

/*出力
--------------------------------------------------*/
	return source;
}

/*
カレンダー生成サブ関数３：次月
------------------------------------------------------------*/
var prodCal03=function(vl,flag){
	source='<div class="calendarRight">\n';
	
	if(!((document.URL.indexOf('Traditional-Chinese') != -1) || (document.URL.indexOf('Simplified-Chinese') != -1)) && document.URL.indexOf('Korean') == -1){
		source+='<p class="month">'+month[nextMonth]+'&nbsp;'+nextYear+'</p>\n';
	}else if(document.URL.indexOf('Korean') != -1){
		source+='<p class="month">'+nextYear+'-'+month[nextMonth]+'</p>\n';
	}else{
		source+='<p class="month">'+nextYear+'年'+month[nextMonth]+'</p>\n';
	}
	
	source+='<table summary="calendar">\n<thead>\n<tr>\n';
	source+='<th>'+day[0]+'</th>\n<th>'+day[1]+'</th>\n<th>'+day[2]+'</th>\n<th>'+day[3]+'</th>\n<th>'+day[4]+'</th>\n<th>'+day[5]+'</th>\n<th>'+day[6]+'</th>\n';
	source+='</tr>\n</thead>\n<tbody>\n<tr>\n';
	var monthValue=(((nextMonth+1)+"").length==1)?"0"+(nextMonth+1):nextMonth+1;
	var j=0;
	var thisDateNum=Date.parse(new Date());
	for(var i=0;i<7;i++){
		if(nextDay<=i){
			var nowDateNum=Date.parse(new Date(nextYear+'/'+eval(monthValue)+'/'+(j+1)));
			if(thisDateNum<nowDateNum+aCalDay&&nowDateNum+aCalDay<thisDateNum+(endLimit-document.forms[searchFormName].elements[dateSelectId].selectedIndex)*aCalDay){
				source+='<td><a href="javascript:void(0);" ';
				var dayValue=(((j+1)+"").length==1)?"0"+(j+1):j+1;
				source+='onclick="setInp(\''+monthValue+'/'+dayValue+'/'+nextYear+'\');';
				monthValueCo=(monthValue.length==2&&monthValue.charAt(0)==0)?monthValue.charAt(1):monthValue;
				dayValueCo=(dayValue.length==2&&dayValue.charAt(0)==0)?dayValue.charAt(1):dayValue;
				source+='ctrlSText(\''+nextYear+'/'+monthValueCo+'/'+dayValueCo+'\');';
				if(flag) source+='loadFacl();';
				source+='closeCalendar();">'+(j+1)+'</a></td>\n';
			}else{
				source+='<td>'+(j+1)+'</td>\n';
			}
			j++;
		}else source+='<td class="noDate">&nbsp;</td>\n';
	}
	source+='</tr><tr>\n';
	var k=0;
	var maxDate=getMaxDate(nextMonth);
	for(var i=j;i<maxDate;i++){
		var nowDateNum=Date.parse(new Date(nextYear+'/'+eval(monthValue)+'/'+(i+1)));
		if(thisDateNum<nowDateNum+aCalDay&&nowDateNum+aCalDay<thisDateNum+(endLimit-document.forms[searchFormName].elements[dateSelectId].selectedIndex)*aCalDay){
			source+='<td><a href="javascript:void(0);" ';
			var dayValue=(((i+1)+"").length==1)?"0"+(i+1):i+1;
			source+='onclick="setInp(\''+monthValue+'/'+dayValue+'/'+nextYear+'\');';
			monthValueCo=(monthValue.length==2&&monthValue.charAt(0)==0)?monthValue.charAt(1):monthValue;
			dayValueCo=(dayValue.length==2&&dayValue.charAt(0)==0)?dayValue.charAt(1):dayValue;
			source+='ctrlSText(\''+nextYear+'/'+monthValueCo+'/'+dayValueCo+'\');';
			if(flag) source+='loadFacl();';
			source+='closeCalendar();">'+(i+1)+'</a></td>\n';
		}else{
			source+='<td>'+(i+1)+'</td>\n';
		}
		if((k+1)%7==0) source+='</tr>\n<tr>\n';
		k++;
	}
	while(k%7!=0){
		source+='<td class="noDate">&nbsp;</td>\n';
		k++;
	}
	source+='</tr></tbody>\n</table>\n</div>\n';

/*出力
--------------------------------------------------*/
	return source;
}


/*
１ヶ月の日数取得
------------------------------------------------------------*/
var getMaxDate=function(mon){
	arrMaxDate=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var maxDate=arrMaxDate[mon];
/*うるう年
--------------------------------------------------*/
	if(maxDate==28&&(thisYear%4==0&&thisYear%100!=0||thisYear%400==0)) maxDate=29;
/*出力
--------------------------------------------------*/
	return maxDate;
}


//////////////////////////////////////////////////////////////////
/// calendar close
//////////////////////////////////////////////////////////////////
var closeCalendar=function(){
	jQuery('#'+calWrapId).fadeOut(calFadeSpeed);
	
	if(topCalFlg != 1){
		if(UAIE6) jQuery("#selRoom").fadeIn(calFadeSpeed);
		if(UAIE6) jQuery("#selGuest").fadeIn(calFadeSpeed);
		if(UAIE6) jQuery("#selType").fadeIn(calFadeSpeed);
		if(UAIE6) jQuery("#DATE_NIGHT").fadeIn(calFadeSpeed);
		if(UAIE6) jQuery("#selSize").fadeIn(calFadeSpeed);
		if(UAIE6) jQuery("#mt").fadeIn(calFadeSpeed);
	}else{
		if(UAIE6){
			topCalFlg = 0;
			closeCalTop();
		}
	}

	if(document.forms[searchFormName].elements[dateInputId].value==""){
		setInp("mm/dd/yyyy");
		inpFlag=0;
	}

	jQuery(document).unbind('click');
	jQuery('#CALENDAR_WRAP').unbind('click');
	jQuery('#DATE_INPUT').unbind('click');
}


//////////////////////////////////////////////////////////////////
/// form 初期値
//////////////////////////////////////////////////////////////////
var initInp=function(){
	var dateAll=new Date();
	thisYear=dateAll.getFullYear();
	thisMonth=dateAll.getMonth()+1;
	thisDate=dateAll.getDate();
	thisMonth=((thisMonth+"").length==1)?"0"+thisMonth:thisMonth;
	thisDate=((thisDate+"").length==1)?"0"+thisDate:thisDate;
	setInp(thisMonth+"/"+thisDate+"/"+thisYear);
}
var checkInp=function(){
	if(document.forms[searchFormName].elements[dateInputId].value=="mm/dd/yyyy"&&inpFlag==0) setInp("");
	inpFlag=1;
}


//////////////////////////////////////////////////////////////////
/// form
//////////////////////////////////////////////////////////////////
var setInp=function(vl){
	document.forms[searchFormName].elements[dateInputId].value=vl;
	setCookiePre(cookie_cal,escape(vl),cookie_period_cal);
}


//////////////////////////////////////////////////////////////////
/// text更新
//////////////////////////////////////////////////////////////////
var ctrlSText=function(vl){
	if(vl) var date=new Date(vl);
	else if(document.forms[searchFormName].elements[dateInputId].value){
		var dateInp=document.forms[searchFormName].elements[dateInputId].value;
		dateYear=dateInp.slice(6,10);
		dateMonth=dateInp.slice(0,2);
		dateDay=dateInp.slice(3,5);
		dateMonth=(dateMonth.length==2&&dateMonth.charAt(0)==0)?dateMonth.charAt(1):dateMonth;
		dateDay=(dateDay.length==2&&dateDay.charAt(0)==0)?dateDay.charAt(1):dateDay;
		var date=new Date(dateYear+"/"+dateMonth+"/"+dateDay);
	}
	var selVl=document.forms[searchFormName].elements[dateSelectId].selectedIndex;
	setCookiePre(cookie_cal02,escape(selVl),cookie_period_cal);
	selVl=(selVl+1)*24*60*60*1000;
	date.setTime(date.getTime()+selVl);
	thisYear=date.getFullYear();
	thisMonth=date.getMonth()+1;
	thisDate=date.getDate();
	thisMonth=((thisMonth+"").length==1)?"0"+thisMonth:thisMonth;
	thisDate=((thisDate+"").length==1)?"0"+thisDate:thisDate;
	if(thisMonth) setText(calCheckOutId,thisMonth+"/"+thisDate+"/"+thisYear);
}
var setText=function(id,text){
	document.getElementById(id).innerHTML=text;
}

//////////////////////////////////////////////////////////////////
/// 汎用
//////////////////////////////////////////////////////////////////



function calEvent(e, reg){
	if(reg == 'cal' || reg=='calInput'){
		e.stopPropagation();
	}else{
		closeCalendar();
		jQuery(document).unbind('click');
		jQuery('#CALENDAR_WRAP').unbind('click');
		jQuery('#DATE_INPUT').unbind('click');
	}
}

function calCloseCheck(){
	jQuery(document).unbind('click');
	jQuery('#CALENDAR_WRAP').unbind('click');
	jQuery('#DATE_INPUT').unbind('click');
  jQuery(document).click(function(event){
		calEvent(event, 'doc')
	});
	jQuery('#CALENDAR_WRAP').click(function(event){
		calEvent(event, 'cal')
		
	});
	jQuery('#DATE_INPUT').click(function(event){
		calEvent(event, 'calInput')
		
	});
	
}


function openCalTop(){
	var VarUsrAgt=navigator.userAgent.toLowerCase();
	var vuaMsie6=VarUsrAgt.indexOf("msie 6")!=-1;
	if(vuaMsie6==false) return;
	var tagSelect=document.getElementsByTagName('select');
	if(tagSelect==null) return;
	for(var i=0;i<tagSelect.length;i++){
		if((tagSelect[i].name == "sn") || (tagSelect[i].name == "rn") || (tagSelect[i].name == "pn") || (tagSelect[i].name == "hotelType") || (tagSelect[i].name == "prfrom") || (tagSelect[i].name == "prto") || (tagSelect[i].name == "rs")){
			tagSelect[i].style.display="none";
		}
	}
}

function closeCalTop(){
	var VarUsrAgt=navigator.userAgent.toLowerCase();
	var vuaMsie6=VarUsrAgt.indexOf("msie 6")!=-1;
	if(vuaMsie6==false) return;
	var tagSelect=document.getElementsByTagName('select');
	if(tagSelect==null) return;
	for(var i=0;i<tagSelect.length;i++){
		if((tagSelect[i].name == "sn") || (tagSelect[i].name == "rn") || (tagSelect[i].name == "pn") || (tagSelect[i].name == "hotelType") || (tagSelect[i].name == "prfrom") || (tagSelect[i].name == "prto") || (tagSelect[i].name == "rs")){
			tagSelect[i].style.display="inline";
		}
	}
}


var overLimit=function(){
	var dateThis=new Date();
	thisYear=dateThis.getFullYear();
	thisMonth=dateThis.getMonth()+1;
	thisDate=dateThis.getDate();
	dateArr=new Array();
	for(var i=0;i<endLimit;i++){
		var date=distanceDate(thisYear,thisMonth,thisDate,i);
		year=date.getFullYear();
		month=date.getMonth()+1;
		date=date.getDate();
		dateArr.push(month+"/"+date+"/"+year);
		dateArr.push(plusZero(month)+"/"+plusZero(date)+"/"+year);
	}
	return dateArr;
}
var distanceDate=function(year,month,day,addDays){
	var dt=new Date(year,month-1,day);
	var baseSec=dt.getTime();
	var addSec=addDays*86400000;
	var targetSec=baseSec+addSec;
	dt.setTime(targetSec);
	return dt;
}



