var g_f_flg   = 0;
var g_cal_flg = 0;
var g_prm_1   = 0;
var g_prm_2   = 0;
var g_prm_3   = 0;
var g_prm_4   = 0;
var g_flg     = 0;
function setDateParam(theYY,theMM,theDD){
//	document.forms[0].elements['yyyy'].value = theYY;
//	document.forms[0].elements['mm'].value = theMM;
//	document.forms[0].elements['dd'].value = theDD;

	bsSetDateParam(theYY,theMM,theDD,g_prm_1,g_prm_2,g_flg);//SetDate.js
	showHide('cal');
}

function createCalendar(theVTime) {
	var zOut = "";
	var theTime = new Date(now_year,  now_month-1, now_day);
	theVTime.setDate(1);
	var theVYY = theVTime.getFullYear();
	var theVMM = theVTime.getMonth() +1;
	var theDofW = theVTime.getDay();
	var nextMonth = new Date(theVYY, theVMM,1);
	zOut = '<table class="calenderArea">\n';
	zOut += '<th colspan="7" align="center" style="text-align:center;">' + theVYY + '年' + theVMM + '月</th>\n';
	zOut += '<tr><td class="sunday">日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td>';
	zOut += '<td class="sutarday">土</td></tr>\n';

	zOut += '<tr style="text-align:center;">';
	for (i=1; i<theDofW+1; i++) {
		 zOut += '<td></td>';
	}
	for (i=1; theVTime<nextMonth; i++) {
		zOut += retDayLink(theTime,theVTime,nextMonth,i);
		theVTime.setDate(i+1);
	}
	for(j=theVTime.getDay();j<=6;j++) { zOut += '<td></td>'; }

	zOut += '</tr>\n';
	zOut += '</table>';
	return zOut;
}

function createCalendar2(theVTime) {
	var theTime = new Date(now_year,  now_month-1, now_day);
	var theVYY = theVTime.getFullYear();
	var theVMM = theVTime.getMonth() +1;
	var theDofW = theVTime.getDay();
	var nextMonth = new Date(theVYY, theVMM,1);
	var ua = navigator.userAgent;
	//座標設定はIE8においてはFireFox系列の処理を通す必要がある為、ここはIE7までの対応
	//if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 || ua.indexOf("MSIE 7") >= 0 || ua.indexOf("MSIE 8") >= 0 ){
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 || ua.indexOf("MSIE 7") >= 0){
		var zOut = '<div id="CAL_POP" style="position:absolute; top:' + g_prm_3 + 'px; left:' + g_prm_4 + 'px; z-index:2">\n'
	} else {
		//var NN_top  = eval(g_prm_3) ;
		//var NN_left = eval(g_prm_4) + 530;
		var NN_top  = eval(g_prm_3) - 18;
		var NN_left = 0;
		if(g_prm_4<=-500){ NN_top=22; NN_left=g_prm_4; if(ua.indexOf("MSIE 8") >= 0){ NN_left=-356; } }	//宿泊部分の対策用
		var zOut = '<div id="CAL_POP" style="position:absolute; top:' + NN_top + 'px; left:' + NN_left + 'px; z-index:2">\n'
	}
	zOut += '<table class="cal_tbl"><tr><th colspan="2" id="calender_caption">\n';
	zOut += '<em>- 出発日を選択してください</em><span><a href="javascript:showHide(\'cal\');"><img src="http://kokunai.tour.ne.jp/shared/images/bt_close.gif" width="60" height="17" border="0" alt="閉じる" style="vertical-align:top;"></a></span>';
	zOut += '</th></tr>';

	zOut += '<tr><th class="array" style="text-align:left; padding:2px 0px 2px 5px;">';
	if(theTime.getFullYear() < theVYY
		|| theTime.getMonth() < theVTime.getMonth()){
		zOut += '<a href=\"javascript:createPreMonth(' + theVYY + ',' + theVMM + ');\">&lt;&lt;前の月へ</a>'
	}else{
		zOut += '&nbsp;';
	}	
	zOut += '</th>\n';

	var year_max = theTime.getFullYear() + 1;
	if(year_max == theVYY && (theTime.getMonth() == theVTime.getMonth()+2) ) {
		zOut += '<th class="array" style="text-align:right; width:50%; padding:2px 5px 2px 0;">&nbsp;</th></tr>';
	}else{
		zOut += '<th class="array" style="text-align:right; width:50%; padding:2px 5px 2px 0;"><a href=\"javascript:createNextMonth(' + theVYY + ',' + theVMM + ');\">次の月へ&gt;&gt;</a></th></tr>';
	}

	zOut += '<tr><td height="80" valign="top">\n';
	zOut += createCalendar(theVTime) + '</td><td height="80" valign="top">';
	zOut += createCalendar(nextMonth) + '</td></tr>';

	zOut += '</table>'
	zOut += '</div>'

	return zOut;
	
}
function createNextMonth(yy,mm){
	nextMonth = new Date(yy, mm, 1)
	var str1 = createCalendar2(nextMonth);

	var ua = navigator.userAgent;
	//IE6までのバグ対応処理の為、IE7以降は処理が不要 -> コメントアウト
	//if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 || ua.indexOf("MSIE 7") >= 0 || ua.indexOf("MSIE 8") >= 0 ){
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		var width_f  = document.getElementById('cal').style.width;
		var height_f = document.getElementById('cal').style.height;
		var top_f    = eval( g_prm_3 + "-" + 0 );
		//var left_f   = eval( g_prm_4 + "+" + 360 );
		var left_f   = eval( g_prm_4 + "+" + 199 );
		if(left_f<=-300){ left_f=-358; }	//宿泊部分の対策用
		str1 += '<div id="cal_iframe" style="position:absolute;z-index:1;top:' + top_f + 'px;left:' + left_f + 'px;">';
		str1 += '<iframe id="cal_iframe_main" src="http://fs.tour.ne.jp/shared/script/calendar_frame.html" frameborder=0 scrolling=no width='+width_f+' height='+height_f+'></iframe>';
		str1 += '</div>\n';
	}
	document.getElementById('cal').innerHTML = str1;

	//IE6までのバグ対応処理　※表示した後じゃないとoffsetWidthとoffsetHeightの値は取れない！
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		chgObj = document.getElementById('cal_iframe_main');
		//chgObj.width=document.getElementById('CAL_POP').offsetWidth;	//横幅は画面いっぱいになってしまうため最低量を指定or指定無し
		chgObj.height=document.getElementById('CAL_POP').offsetHeight;
	}
}
function createPreMonth(yy,mm){
	preMonth = new Date(yy, mm - 2, 1)
	var str2 = createCalendar2(preMonth);

	var ua = navigator.userAgent;
	//IE6までのバグ対応処理の為、IE7以降は処理が不要 -> コメントアウト
	//if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 || ua.indexOf("MSIE 7") >= 0 || ua.indexOf("MSIE 8") >= 0 ){
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		var width_f  = document.getElementById('cal').style.width;
		var height_f = document.getElementById('cal').style.height;
		var top_f    = eval( g_prm_3 + "-" + 0 );
		//var left_f   = eval( g_prm_4 + "+" + 360 );
		var left_f   = eval( g_prm_4 + "+" + 199 );
		if(left_f<=-300){ left_f=-358; }	//宿泊部分の対策用
		str2 += '<div id="cal_iframe" style="position:absolute;z-index:1;top:' + top_f + 'px;left:' + left_f + 'px;">';
		str2 += '<iframe id="cal_iframe_main" src="http://fs.tour.ne.jp/shared/script/calendar_frame.html" frameborder=0 scrolling=no width='+width_f+' height='+height_f+'></iframe>';
		str2 += '</div>\n';
	}
	document.getElementById('cal').innerHTML = str2;

	//IE6までのバグ対応処理　※表示した後じゃないとoffsetWidthとoffsetHeightの値は取れない！
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		chgObj = document.getElementById('cal_iframe_main');
		//chgObj.width=document.getElementById('CAL_POP').offsetWidth;	//横幅は画面いっぱいになってしまうため最低量を指定or指定無し
		chgObj.height=document.getElementById('CAL_POP').offsetHeight;
	}
}

function retDayLink(theTime,	//現在日時
					theVTime,	//現在表示日時
					nextMonth,	//現在表示日時の次の月
					i)		//日にち
{
	var ret ="";
	var anc ="";
	if((theTime.getMonth() >= theVTime.getMonth()) 
		&& (theTime.getFullYear() == theVTime.getFullYear()) ){
		if(i < theTime.getDate() ){
			ret = "<td class='disable'>" + i + "</td>";
			if(theVTime.getDay()==6) {
				ret += '</tr>\n<tr style="text-align:center;">';
			}
			return ret;
		}
	}
	flg_n=0; //日,祝
	var wday = theVTime.getDay();
	var month = theVTime.getMonth() + 1;
	var year = theVTime.getYear();

	//祝日は毎年変更する
    switch(month){
      case 1:
        if(i == 1 || ( Math.ceil(i/7) == 2 && wday == 1) ){
          flg_n++;
        }break;
      case 2:
        if(i == 11){
          flg_n++;
        }break;
      case 3:
        if(i == 20){	//春分の日は変わる
          flg_n++;
        }break;
      case 4:
        if(i == 29){
          flg_n++;
        }break;
      case 5:
        if( i== 3 || i == 4 || i == 5 ){
          flg_n++;
        }break;
      case 7:
        if( Math.ceil(i / 7) == 3 && wday == 1 ){
          flg_n++;
        }break;
      case 9:
        if(i == 23 || (Math.ceil(i / 7) == 3 && wday == 1) || (year == 2009 && i == 22)){	//秋分の日は変わる  //2009年9月22日のみ国民の休日あり
          flg_n++;
        }break;
      case 10:
        if(Math.ceil(i / 7) == 2 && wday == 1){
          flg_n++;
        }break;
      case 11:
        if(i == 3 || i == 23){
          flg_n++;
        }break;
      case 12:
        if(i == 23){
          flg_n++;
        }break;
    }
	anc = "<a href=javascript:setDateParam('" + theVTime.getFullYear() + "','" + (theVTime.getMonth() + 1) +"','" + i + "','" + g_prm_1 + "','" + g_prm_2 + "');>" + i + "</a></td>";
    if(g_f_flg == 1){
		ret += '<td class="sunday">' + anc;
		g_f_flg = 0;
	}else if (wday==0 || flg_n == 1){
		ret += '<td class="sunday">' + anc;
	}else if (wday<6)
		ret += '<td>' + anc;
	else if(wday==6) {
		ret += '<td class="sutarday">' + anc;
	}
    if (wday==0 && flg_n == 1){
	    g_f_flg = 1;
    }
	if(wday == 6){
		ret += '</tr>\n<tr style="text-align:center;">';
	}
	return ret;
}
function viewCalendar(prm1,prm2,prm3,prm4,flg) {
	
	//ブラウザチェック
	if(document.getElemetById || document.style){ return; }

	g_prm_1 = prm1;	// 年月設定先名
	g_prm_2 = prm2;	// 日設定先名
	g_prm_3 = prm3;	// 表示位置(top:)
	g_prm_4 = prm4;	// 表示位置(left:)
	g_flg   = flg;	// データフラグ(1:YYYYMM 2:MM)

	var theTime2 = new Date();
	var str = createCalendar2(theTime2);

	var ua = navigator.userAgent;
	//IE6までのバグ対応処理の為、IE7以降は処理が不要 -> コメントアウト
	//if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0 || ua.indexOf("MSIE 7") >= 0 || ua.indexOf("MSIE 8") >= 0 ){
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		var width_f  = document.getElementById('cal').style.width;
		var height_f = document.getElementById('cal').style.height;
		var top_f    = eval( g_prm_3 + "-" + 0 );
		//var left_f   = eval( g_prm_4 + "+" + 360 );
		var left_f   = eval( g_prm_4 + "+" + 199 );
		if(left_f<=-300){ left_f=-358; }	//宿泊部分の対策用
		str += '<div id="cal_iframe" style="position:absolute;z-index:1;top:' + top_f + 'px;left:' + left_f + 'px;">';
		str += '<iframe id="cal_iframe_main" src="http://fs.tour.ne.jp/shared/script/calendar_frame.html" frameborder=0 scrolling=no width='+width_f+' height='+height_f+'></iframe>';
		str += '</div>\n'
	}
	document.getElementById('cal').innerHTML = str;

	showHide('cal');

	//IE6までのバグ対応処理　※表示した後じゃないとoffsetWidthとoffsetHeightの値は取れない！
	if( ua.indexOf("MSIE 5.5") >= 0 || ua.indexOf("MSIE 6") >= 0){
		chgObj = document.getElementById('cal_iframe_main');
		//chgObj.width=document.getElementById('CAL_POP').offsetWidth;	//横幅は画面いっぱいになってしまうため最低量を指定or指定無し
		chgObj.height=document.getElementById('CAL_POP').offsetHeight;
	}
//	window.document.onclick = function () { onClickEvt(); };
	startEvent('window.document','click','onClickEvt');
}

function hideCalendar() {
	var disp = document.getElementById('cal').style.display;
	if(disp == "block"){
		document.getElementById('cal').style.display = "none";
	}
}

function showHide(id){
	var disp = document.getElementById(id).style.display;
	if(disp == "block"){
		document.getElementById(id).style.display = "none";
	}else{
		document.getElementById(id).style.display = "block";
	}
}
function onClickEvt() {
	if(g_cal_flg ==1){
		hideCalendar();
	}
	g_cal_flg =1;
}

function onClickCalArea() {
	g_cal_flg=0;
}

//画面全体のonClickイベントを取得
//window.document.onclick = onClickEvt;

//--イベント開始関数 
function startEvent(ojNameStr,eventTypeNameStr,funcNameStr){
	if(document.layers) {
		//n4用
		eval(ojNameStr+".captureEvents(Event."+ eventTypeNameStr.toUpperCase() + ")");
	} else {
		//n4,m1,n7,e4,e5,e6,o6,o7,s1,k3用
		eval(ojNameStr+".on"+eventTypeNameStr+"="+ funcNameStr);
	}
}
