/*###############################################################################*/
/*
/*全ページ共通　汎用js
/*
/*###############################################################################*/

/*初期設定
*******************************************************************************/
//値初期化
//var dbg = 0;
var showingFloat = null;
var timeoutId = 0;
var adjn = 0;
var errMsg = "";
var loadingArr = new Array();//ローディング保持用(一括削除のため)
//プリロードする画像リスト
var preloadImagesList = new Array();
preloadImagesList = ['./common_image/loading.gif'];

/*定数
*******************************************************************************/
kuriNum = 5;//繰り上げする間隔(60分未満で指定)
monthNum = 5;//月プルダウンの選択肢の数
//初期状態の緯度経度
MAP_DEFAULT_LAT = 35.084;
MAP_DEFAULT_LNG = 137.1578;
MAP_DEFAULT_SCALE = 50000;
//使用しないtotalRouteNum=4;//一度に表示するルート候補数
STYLE_COLOR_C1 = '#5b4';//電車バス基本色
STYLE_COLOR_C2 = '#7c3';//マイカー基本色
STYLE_COLOR_C3 = '#aae800';//施設タウン基本色
STYLE_COLOR_C4 = '#ffe300';//市内ルート基本色
STYLE_COLOR_C3_CELL1 = '#eff7d5';//施設タウンテーブルセル奇数
STYLE_COLOR_C3_CELL2 = '#fff';//施設タウンテーブルセル偶数
STYLE_COLOR_CELL1 = '#dfe9f9';//無所属テーブルセル奇数
STYLE_COLOR_CELL2 = '#fff';//無所属テーブルセル偶数
SIZE_PLOT_WIDTH = 26;//マッププロット画像幅
SIZE_PLOT_HEIGHT = 26;//マッププロット画像高さ
SIZE_PLOT_P_WIDTH = 30;//マップ駐車場プロット画像幅
SIZE_PLOT_P_HEIGHT = 24;//マップ駐車場プロット画像高さ
//ページ判別コード
PAGE_INDEX="index";
PAGE_ROUTE="route";
PAGE_PARKRIDE = "pr";
PAGE_PARKING = "p";
PAGE_KANKO = "kanko";
PAGE_TRAIN_BUS = "train-bus";
PAGE_WEATHER = "weather";
PAGE_WEATHER_ORIGIN = "weather-origin";
//検索方法取得用Cookie
SRCH_COOKIE_KEY = "srch_param";
//ルート検索Cookie
RT_COOKIE_KEY = "rt_setting";
RT_COOKIE_KEY_FROM_NAME = "rt_fnm";
RT_COOKIE_KEY_FROM_X = "rt_fx";
RT_COOKIE_KEY_FROM_Y = "rt_fy";
RT_COOKIE_KEY_TO_NAME = "rt_tnm";
RT_COOKIE_KEY_TO_X = "rt_tx";
RT_COOKIE_KEY_TO_Y = "rt_ty";
RT_COOKIE_KEY_CODE = "rt_code";
RT_COOKIE_KEY_FOCUS = "rt_focus";//フォーカス維持用
//のりかえ運賃検索Cookie
PT_COOKIE_KEY = "pt_setting";
PT_COOKIE_KEY_FROM_NAME = "pt_fnm";
PT_COOKIE_KEY_FROM_X = "pt_fx";
PT_COOKIE_KEY_FROM_Y = "pt_fy";
PT_COOKIE_KEY_TO_NAME = "pt_tnm";
PT_COOKIE_KEY_TO_X = "pt_tx";
PT_COOKIE_KEY_TO_Y = "pt_ty";
PT_COOKIE_KEY_CODE = "pt_code";
PT_COOKIE_KEY_DEFAULT = "pt_default";//検索方法初期設定用
PT_COOKIE_VALUE_DEFAULT_MAP = 1;//検索方法初期設定用
PT_COOKIE_VALUE_DEFAULT_MAP_TRAIN = 2;//検索方法初期設定用
PT_COOKIE_VALUE_DEFAULT_INITIAL = 3;//検索方法初期設定用
PT_COOKIE_VALUE_DEFAULT_ROSEN = 4;//検索方法初期設定用
PT_COOKIE_KEY_FOCUS = "pt_focus";//フォーカス維持用
//駐車場満空情報Cookie
P_COOKIE_KEY_DEFAULT = "p_default";
P_COOKIE_VALUE_DEFAULT_NORMAL = 1;
P_COOKIE_VALUE_DEFAULT_RINJI = 2;
//お知らせCookie
INFO_COOKIE_KEY_DEFAULT = "info_default";
//施設タウン情報Cookie
KANKO_COOKIE_KEY_DETAIL_DEFAULT = "kanko_detail_default";
KANKO_COOKIE_VALUE_DETAIL_DEFAULT_NORMAL = 1;
KANKO_COOKIE_VALUE_DETAIL_DEFAULT_MAP = 2;


/*画像のプリロード　汎用関数
*******************************************************************************/
function preload(image){
	if(image instanceof Array){
		var len = image.length;
		for(var i = 0; i < len; i++){
			var obj = "preload"+i;
			document.obj = new Image();
			document.obj.src = image.shift();
		}
	}else{
		var obj = "preload";
		document.obj = new Image();
		document.obj.src = image;
	}
}
preload(preloadImagesList);


/*swf書き出し
*******************************************************************************/
function loadSwf(src, id, tgt, width, height){
	if(!tgt)return;
var rand = Math.floor( Math.random() * 10 ) + 1;
	tgt.innerHTML = '<object'
		+ ' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"'
		+ ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"'
		+ ' id="' + id + '"'
		+ ' width="' + width + '"'
		+ ' height="' + height + '"'
		+ ' align="middle"'
		+ '>'
		+ '<param name="allowScriptAccess" value="always" />'
		+ '<param name="movie" value="' + src + '?' + rand + '" />'
		+ '<param name="menu" value="false" />'
		+ '<param name="quality" value="high" />'
		+ '<param name="bgcolor" value="#ffffff" />'
		+ '<embed'
		+ ' src="' + src + '?' + rand + '"'
		+ ' id="' + id + '"'
		+ ' name="' + id + '"'
		+ ' allowScriptAccess="always"'
		+ ' menu="false"'
		+ ' quality="high"'
		+ ' bgcolor="#ffffff"'
		+ ' width="' + width + '"'
		+ ' height="' + height + '"'
		+ ' align="middle"'
		+ ' type="application/x-shockwave-flash"'
		+ ' pluginspage="http://www.macromedia.com/go/getflashplayer"'
		+ ' />'
		+ '</object></div>';
}

/*マップ調整　汎用関数
*******************************************************************************/
function adj(){
	adjn += 0.000001;
////console.log(adjn);
	return adjn;
}

/*###############################################################################*/
/*
/*日付　汎用関数
/*
/*###############################################################################*/
//日付取得
dtObj=new Date;
nY=dtObj.getFullYear();
nM=dtObj.getMonth()+1;
nD=dtObj.getDate();
nH=dtObj.getHours();
nMin=dtObj.getMinutes();

//日付繰り上げ計算
mY=nY;
mM=nM;
mD=nD;
mH=nH;
mMin=nMin;
mMin=(mMin-(mMin%kuriNum))+kuriNum;//繰り上げ
if(mMin>=60){mH++;mMin-=60;}
if(mH>=24){mD++;mH-=24;}
if(
     (  ((mM==1)||(mM==3)||(mM==5)||(mM==7)||(mM==8)||(mM==10)||(mM==12))  &&  (mD>31)  )||
     (  ((mM==4)||(mM==6)||(mM==9)||(mM==11))  &&  (mD>30)  )||
     (  ((mM==2)  &&  (mD>29)  &&  (nY%4==0))  )||
     (  ((mM==2)  &&  (mD>28)  &&  (nY%4!=0))  )
   ){mM++;mD=1;}
if(mM>12){mY++;mM=1;}

/*###############################################################################*/
/*
/*プロットアイコンURL生成　汎用関数
/*    カテゴリIDを渡すとマップ用プロットアイコンのURLに変換
/*###############################################################################*/
//num:カテゴリID
function convertPlotUrl(num){
	return "./common_image/map_c_"+ (num ? num : "blank") + ".gif";
}


/*###############################################################################*/
/*
/*URLに自動リンク付加　汎用関数
/*
/*###############################################################################*/
//str:文字列
function addLinkTags(str){
	var regObj = new RegExp("s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+","g");
	var r = str.match(regObj);
	if(r){
		var len = r.length;
		for (var i = 0; i < len; i++) str = str.replace(r[i], "<a href=\"" + r[i] + "\" target=\"_blank\">" + r[i] + "</a>");
	}
	return str;
}

/*###############################################################################*/
/*
/*タブ切り替え　汎用関数
/*
/*###############################################################################*/
//tgtName:切り替える先のIDから数字をとった部分　tgtNum:対象IDの数字　maxNum:全ての対象の数
function changeTab(tgtName,tgtTabName,tgtNum,maxNum){
	for(var i=1;i<=maxNum;i++){
		//引数tgtNameがなければ表示非表示切り替えはなし
		//display方式に変更if(tgtName)document.getElementById(tgtName+i).style.visibility=(i==tgtNum)?'visible':'hidden';
		if(tgtName)document.getElementById(tgtName+i).style.display=(i==tgtNum)?'block':'none';
		var t=$(tgtTabName+i);
		t.style.backgroundPosition=(i==tgtNum)?'0 0':'0 -40px';
		t.style.cursor=(i==tgtNum)?'default':'pointer';
		t.style.color=(i==tgtNum)?'#444':'#666';
		t.style.marginTop=(i==tgtNum)?'0':'2px';
		t.now=(i==tgtNum)?true:false;
	}
}
function onMouseTab(tgt){
	tgt.style.marginTop=tgt.now?'0':'0';
}
function onMouseOutTab(tgt){
	tgt.style.marginTop=tgt.now?'0':'2px';
}

/*###############################################################################*/
/*
/*交通障害情報　汎用関数
/*
/*###############################################################################*/
//運行情報読み込み
function showTrafficAlert(){
	var myUrl= "/trafficInfo/xmlData/traffic.xml";
	new Ajax.Request(
		myUrl, {
			method:'get',
			onSuccess:showTrafficAlertSuc
		});
}
function showTrafficAlertSuc(httpObj){
	var xmlData = httpObj.responseXML;
	var trafficData = new Traffic();
	trafficData.init(xmlData);
	if(!trafficData.hasInfo)return;
	var titleStr = trafficData.getTitle();
	var dateStr = trafficData.getDate();
	var buff = "<div id=\"g-trafficAlert\" class=\"hM tC\">"
	         + "<p>"
	         + "<span class=\"tM tB\" style=\"color:#f54;\">" + titleStr + "</span>"
	         + "<span class=\"tS\" style=\"color:#f54;\">（" + dateStr + "）</span>"
	         + "<span class=\"tM g-arrowLink\" style=\"margin-left:1em;\">詳しくは<a href=\"./index.html\">こちら</a></span>"
	         + "</p>"
	         + "</div>";
	new Insertion.After('g-pankuzu', buff);//prototype.js
}

/*###############################################################################*/
/*
/*Cookie汎用関数
/*
/*###############################################################################*/



/*検索方法取得用Cookie
*******************************************************************************/
//SRCH_COOKIE_KEYをキーとし、各値を"|"で連結したものをひとつの値として持つ
//idx: [0]nm(検索名)  [1]v(パラメータの値)


//市内ルート検索＋ : busmap, initial, list, clickmap, addr
//それ以外         : p, pr, kanko
//引数fromTo: 0 → From, 1 → To
function setSrchParamCookie(nm, v, fromTo){
	var a = getCommonCookie(SRCH_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 3 || s[0] != nm)s = new Array(3);
	if(fromTo == 1){
		setCommonCookie(SRCH_COOKIE_KEY, nm + "|" + (s[1] || "") + "|" + v);//Toの値を記録
	}else if(fromTo == 0){
		setCommonCookie(SRCH_COOKIE_KEY, nm + "|" + v + "|" + (s[2] || ""));//Fromの値を記録
	}else{
		setCommonCookie(SRCH_COOKIE_KEY, nm + "|" + v + "|");//fromまたはtoの指定なし
	}
}
//取得
function getSrchParamCookie(){
	var a = getCommonCookie(SRCH_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 2 && s.length != 3)return "";
	return s;//[検索名, パラメータの値 (, パラメータの値)]を返す
}
//入れ替え
function swapSrchParamCookie(){
	var a = getCommonCookie(SRCH_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 3)return;
	setCommonCookie(SRCH_COOKIE_KEY, s[0] + "|" + (s[2] || "") + "|" + (s[1] || ""));
}
//消去
function clearSrchParamCookie(){
	setCommonCookie(SRCH_COOKIE_KEY, "");
}

/*市内ルート検索右上状態表示
*******************************************************************************/
//HTMLの<body>内にはタグを特に追加せず、onload時にこの関数を実行するだけで表示する
function showRtCondition(){
	var ckFNm = getRtCookieFromName();
	var ckFX = getRtCookieFromX();
	var ckTNm = getRtCookieToName();
	var ckTX = getRtCookieToX();
	if(!ckFNm && !ckTNm){
		//cookieの値が空の場合
		if($('g-rtCondition')){
			//g-rtConditionがある場合
			$('g-rtCondition').parentNode.removeChild($('g-rtCondition'));
		}else{
			//g-rtConditionがない場合
		}
	}else{
		
		//cookieの値が空ではない場合
		var buff = '<div id="g-rtCdTtl"><a href="./c_search.html">のりかえ＆運賃検索＋</a>の検索条件</div>'
		         + '<img id="g-rtCdSIcn" class="g-sprite g-spSearchMiniS" src="./common_image/trans.gif" alt="出発地" />'
		         + (ckFNm ? (ckFX ? "" : '<img id="g-rtCdSDiv" class="g-sprite ' + (ckFNm.indexOf("／駅") < 0 ? 'g-spSearchFromToDivBus' : 'g-spSearchFromToDivTrain') + '" src="./common_image/trans.gif" alt="' + (ckFNm.indexOf("／駅") < 0 ? 'バス停' : '駅') + '" />') + '<div id="g-rtCdSName">' + ckFNm.split("／駅")[0] + '</div>' : '<div id="g-rtCdSName" class="tGrA">未選択</div>')
		         + '<img id="g-rtCdGIcn" class="g-sprite g-spSearchMiniG" src="./common_image/trans.gif" alt="目的地" />'
		         + (ckTNm ? (ckTX ? "" : '<img id="g-rtCdGDiv" class="g-sprite ' + (ckTNm.indexOf("／駅") < 0 ? 'g-spSearchFromToDivBus' : 'g-spSearchFromToDivTrain') + '" src="./common_image/trans.gif" alt="' + (ckTNm.indexOf("／駅") < 0 ? 'バス停' : '駅') + '" />') + '<div id="g-rtCdGName">' + ckTNm.split("／駅")[0] + '</div>' : '<div id="g-rtCdGName" class="tGrA">未選択</div>');
		if($('g-rtCondition')){
			$('g-rtCondition').innerHTML = buff;
		}else{
			//g-rtConditionがなければ生成
			$('g-pankuzu').innerHTML += "<div id=\"g-rtCondition\">" + buff + "</div>";
		}
	}
}



/*#############################################################################################################################
//統合にともない廃止、最終的に問題なければ削除
/*のりかえ運賃検索Cookie
******************************************************************************
//PT_COOKIE_KEYをキーとし、各値を"|"で連結したものをひとつの値として持つ
//idx: [0]fmn  [1]fx  [2]fy  [3]tmn  [4]tx  [5]ty  [6]code

//cookie設定(cookie取得→分解→項目の値を追加→連結→cookie設定)
function setPtCookie(idx, v){
	var a = getCommonCookie(PT_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 7)s = new Array(7);
	s[idx] = v;
	setCommonCookie(PT_COOKIE_KEY, s.join("|"));
//console.log("setPtCookie>>>>>[idx:" + idx + "]\n設定する値(v):" + v + "\n取得した配列(a):" + a + "\nsetCommonCookieしたs.join('|'):" + s.join("|"));
}
//cookie取得(cookie取得→分解→idnにより値を取得)
function getPtCookie(idx){
	var a = getCommonCookie(PT_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 7)return "";
//console.log("getPtCookie>>>>>[idx:" + idx + "]\n取得した配列(a):" + a + "\n返す値(return s[idx]):" + s[idx]);
	return s[idx];
}
//項目ごとのcookie設定
function setPtCookieFromName(v){setPtCookie(0, encodeCookie(v));}
function setPtCookieFromX(v)   {setPtCookie(1, v);}
function setPtCookieFromY(v)   {setPtCookie(2, v);}
function setPtCookieToName(v)  {setPtCookie(3, encodeCookie(v));}
function setPtCookieToX(v)     {setPtCookie(4, v);}
function setPtCookieToY(v)     {setPtCookie(5, v);}
function setPtCookieCode(v)    {setPtCookie(6, v);}
//項目ごとのCookie取得
function getPtCookieFromName() {return decodeCookie(getPtCookie(0));}
function getPtCookieFromX()    {return getPtCookie(1);}
function getPtCookieFromY()    {return getPtCookie(2);}
function getPtCookieToName()   {return decodeCookie(getPtCookie(3));}
function getPtCookieToX()      {return getPtCookie(4);}
function getPtCookieToY()      {return getPtCookie(5);}
function getPtCookieCode()     {return getPtCookie(6);}
//まとめてcookie設定
function setPtCookieFrom(nm, x, y, code){
//console.log(">>>>>>>>>>>>>>>setPtCookieFrom>>>>>>>>>>>>>>>>>"+nm+", "+x+", "+y+", "+code);
	setPtCookieFromName(nm);
	setPtCookieFromX(x);
	setPtCookieFromY(y);
	setPtCookieCode(code);
}
function setPtCookieTo(nm, x, y, code){
//console.log(">>>>>>>>>>>>>>>setPtCookieTo>>>>>>>>>>>>>>>>>"+nm+", "+x+", "+y+", "+code);
	setPtCookieToName(nm);
	setPtCookieToX(x);
	setPtCookieToY(y);
	setPtCookieCode(code);
}
function setPtCookieAll(fnm, fx, fy, tnm, tx, ty, code){
//console.log(">>>>>>>>>>>>>>>setPtCookieAll>>>>>>>>>>>>>>>>>"+fnm+", "+fx+", "+fy+", "+tnm+", "+tx+", "+ty+", "+code);
	setPtCookieFrom(fnm, fx, fy, code);
	setPtCookieTo(tnm, tx, ty, code);
}
//cookie削除
function clearPtCookie(){
//console.log(">>>>>>>>>>>>>>>clearPtCookie>>>>>>>>>>>>>>>>>");
	setCommonCookie(PT_COOKIE_KEY, "");
}
#############################################################################################################################*/





/*のりかえ＆運賃検索＋　Cookie制御
*******************************************************************************/
//RT_COOKIE_KEYをキーとし、各値を"|"で連結したものをひとつの値として持つ
//idx: [0]fmn  [1]fx  [2]fy  [3]tmn  [4]tx  [5]ty  [6]code

//cookie設定(cookie取得→分解→項目の値を追加→連結→cookie設定)
function setRtCookie(idx, v){
	var a = getCommonCookie(RT_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 7)s = new Array(7);
	s[idx] = v;
	setCommonCookie(RT_COOKIE_KEY, s.join("|"));
}
//cookie取得(cookie取得→分解→idnにより値を取得)
function getRtCookie(idx){
	var a = getCommonCookie(RT_COOKIE_KEY) || "";
	var s = new Array();
	s = a.split("|");
	if(s.length != 7)return "";
	return s[idx];
}
//項目ごとのcookie設定
function setRtCookieFromName(v){setRtCookie(0, encodeCookie(v));}
function setRtCookieFromX(v)   {setRtCookie(1, v);}
function setRtCookieFromY(v)   {setRtCookie(2, v);}
function setRtCookieToName(v)  {setRtCookie(3, encodeCookie(v));}
function setRtCookieToX(v)     {setRtCookie(4, v);}
function setRtCookieToY(v)     {setRtCookie(5, v);}
function setRtCookieCode(v)    {setRtCookie(6, v);}
//項目ごとのCookie取得
function getRtCookieFromName() {return decodeCookie(getRtCookie(0));}
function getRtCookieFromX()    {return getRtCookie(1);}
function getRtCookieFromY()    {return getRtCookie(2);}
function getRtCookieToName()   {return decodeCookie(getRtCookie(3));}
function getRtCookieToX()      {return getRtCookie(4);}
function getRtCookieToY()      {return getRtCookie(5);}
function getRtCookieCode()     {return getRtCookie(6);}
//まとめてcookie設定
function setRtCookieFrom(nm, x, y, code){
	var isOverWrite = !!getRtCookieFromX() || !!getRtCookieFromName();
	var isSearchable = !!getRtCookieToX() || !!getRtCookieToName();
	var isEmptyBoth = !getRtCookieToX() && !getRtCookieToName() && !getRtCookieFromX() && !getRtCookieFromName();
	setRtCookieFromName(nm);
	setRtCookieFromX(x);
	setRtCookieFromY(y);
	setRtCookieCode(code);
	setSrchParamCookie('route', code, 0);//選択方法を記録
	showRtCondition();
	if((code != "busmap") && (code != "initial") && (code != "list") && (code != "clickmap") && (code != "addr")){
		//のりかえ＆運賃検索＋での設定時はアラート表示しない
		var mb = isOverWrite ? "出発地を「" + nm + "」に変更しました。" : "「" + nm + "」を出発地に設定しました。";
		mb += isEmptyBoth ? "\n\n画面の右上で現在の検索条件が確認できます。" : "";
		if(isSearchable){
			//検索可能になったら追加文を表示
			if(confirm(mb + "\nこの条件でルート検索を行うために「のりかえ＆運賃検索＋」に移動しますか？")){
				
				//ページ遷移動線取得用パラメータ
				var logParam = "";
				if(code == PAGE_KANKO){
					logParam = "?michiRouteParam=city_rou";
				}else if(code == PAGE_PARKING){
					logParam = "?michiRouteParam=prk_rou";
				}
				location.href = "./c_search.html" + logParam;
				return;
			}else{
				return;
			}
		}
		alert(mb);
	}
}
function setRtCookieTo(nm, x, y, code){
	var isOverWrite = !!getRtCookieToX() || !!getRtCookieToName();
	var isSearchable = !!getRtCookieFromX() || !!getRtCookieFromName();
	var isEmptyBoth = !getRtCookieToX() && !getRtCookieToName() && !getRtCookieFromX() && !getRtCookieFromName();
	setRtCookieToName(nm);
	setRtCookieToX(x);
	setRtCookieToY(y);
	setRtCookieCode(code);
	setSrchParamCookie('route', code, 1);//選択方法を記録
	showRtCondition();
	if((code != "busmap") && (code != "initial") && (code != "list") && (code != "clickmap") && (code != "addr")){
		//のりかえ＆運賃検索＋での設定時はアラート表示しない
		var mb = isOverWrite ? "目的地を「" + nm + "」に変更しました。" : "「" + nm + "」を目的地に設定しました。";
		mb += isEmptyBoth ? "\n\n画面の右上から現在の検索条件が確認できます。" : "";
		if(isSearchable){
			//検索可能になったら追加文を表示
			if(confirm(mb + "\nこの条件でルート検索を行うために「のりかえ＆運賃検索＋」に移動しますか？")){
				
				//ページ遷移動線取得用パラメータ
				var logParam = "";
				if(code == PAGE_KANKO){
					logParam = "?michiRouteParam=city_rou";
				}else if(code == PAGE_PARKING){
					logParam = "?michiRouteParam=prk_rou";
				}
				location.href = "./c_search.html" + logParam;
				return;
			}else{
				return;
			}
		}
		alert(mb);
	}
}
function setRtCookieAll(fnm, fx, fy, tnm, tx, ty, code){
	setRtCookieFromName(fnm);
	setRtCookieFromX(fx);
	setRtCookieFromY(fy);
	setRtCookieToName(tnm);
	setRtCookieToX(tx);
	setRtCookieToY(ty);
	setRtCookieCode(code);
	showRtCondition();
}
function clearRtCookie(){
	setCommonCookie(RT_COOKIE_KEY, "");
	showRtCondition();
}
/*Cookie設定・Cookie取得　汎用関数
*******************************************************************************/
//Cookie取得
function getCommonCookie(key){
	var tmp1, tmp2, xx1, xx2, xx3, rt;
	tmp1 = " " + document.cookie + ";";
	xx1 = xx2 = 0;
	len = tmp1.length;
	while (xx1 < len) {
		xx2 = tmp1.indexOf(";", xx1);
		tmp2 = tmp1.substring(xx1 + 1, xx2);
		xx3 = tmp2.indexOf("=");
		if (tmp2.substring(0, xx3) == key) {
			rt = tmp2.substring(xx3 + 1, xx2 - xx1 - 1);
			return(rt);
		}
		xx1 = xx2 + 1;
	}
	return("");
}
//Cookie設定
function setCommonCookie(key, str, path, exp) {
	var buff;
	buff = key + "=" + str + "; " + (path ? 'path=' + path + ';' : '') + (exp ? 'expires=' + exp + ';' : '');
	document.cookie = buff;
}
//UTF-8デコード
function decodeCookie(str){
	var s0, i, j, s, ss, u, n, f;
	s0 = "";
	for (i = 0; i < str.length; i++){
		s = str.charAt(i);
		if (s == "+"){
			s0 += " ";
		} else {
			if (s != "%"){
				s0 += s;
			}else{
				u = 0;
				f = 1;
				while (true) {
					ss = "";
					for (j = 0; j < 2; j++ ) {
						sss = str.charAt(++i);
						if (((sss >= "0") && (sss <= "9")) || ((sss >= "a") && (sss <= "f"))  || ((sss >= "A") && (sss <= "F"))) {
							ss += sss;
						} else {
							--i; break;
						}
					}
					n = parseInt(ss, 16);
					if (n <= 0x7f){u = n; f = 1;}
					if ((n >= 0xc0) && (n <= 0xdf)){u = n & 0x1f; f = 2;}
					if ((n >= 0xe0) && (n <= 0xef)){u = n & 0x0f; f = 3;}
					if ((n >= 0xf0) && (n <= 0xf7)){u = n & 0x07; f = 4;}
					if ((n >= 0x80) && (n <= 0xbf)){u = (u << 6) + (n & 0x3f); --f;}
					if (f <= 1){break;}
					if (str.charAt(i + 1) == "%"){
						i++ ;
					}else{
						break;
					}
				}
				s0 += String.fromCharCode(u);
			}
		}
	}
	return s0;
}
//UTF-8エンコード
function encodeCookie(str){
	var s0, i, s, u;
	s0 = "";
	for (i = 0; i < str.length; i++){
		s = str.charAt(i);
		u = str.charCodeAt(i);
		if (s == " "){
			s0 += "+";
		}else{
			if ( u == 0x2a || u == 0x2d || u == 0x2e || u == 0x5f || ((u >= 0x30) && (u <= 0x39)) || ((u >= 0x41) && (u <= 0x5a)) || ((u >= 0x61) && (u <= 0x7a))){
				s0 = s0 + s;
			}else{
				if((u >= 0x0) && (u <= 0x7f)){
					s = "0"+u.toString(16);
					s0 += "%"+ s.substr(s.length-2);
				}else if(u > 0x1fffff){
					s0 += "%" + (oxf0 + ((u & 0x1c0000) >> 18)).toString(16);
					s0 += "%" + (0x80 + ((u & 0x3f000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}else if(u > 0x7ff){
					s0 += "%" + (0xe0 + ((u & 0xf000) >> 12)).toString(16);
					s0 += "%" + (0x80 + ((u & 0xfc0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}else{
					s0 += "%" + (0xc0 + ((u & 0x7c0) >> 6)).toString(16);
					s0 += "%" + (0x80 + (u & 0x3f)).toString(16);
				}
			}
		}
	}
	return s0;
}

/*###############################################################################*/
/*
/*カテゴリボタン汎用関数
/*
/*###############################################################################*/
//カテゴリボタンをセット
//isMulti:複数選択可能不可能のブーリアン値　hasMenu:サブメニューの有無のブーリアン値　（menuElementName:サブメニューdiv要素のIDの共通部分）
function setCButton(isMulti, hasMenu){
	for(var i = 1; i <= 9; i++){
		initCButton(i, 9, isMulti, hasMenu, "cb", "cbSubList");
		Event.observe("cb"+i, "mouseover", onMouseCButton);
		Event.observe("cb"+i, "mouseout", onMouseOutCButton);//common_category.jsで動的に付加
		Event.observe("cb"+i, "click", onClickCButton);//common_category.jsで動的に付加
		Event.observe("cbSubList"+i, "mouseover", onMouseSubList);
		Event.observe("cbSubList"+i, "mouseout", onMouseOutSubList);
		Event.observe("cbSubList"+i, "click", onClickSubList);
	}
}
//カテゴリボタンを初期化
function initCButton(no, totalNo, isMulti, hasMenu, btnIdString, menuIdString){
	var t = $(btnIdString + no);
	t.no = no;//連番の設定
	t.totalNo = totalNo;//総数の設定
	t.idString = btnIdString;//ID共通文字列の設定
	t.style.backgroundPosition = '0 -68px';//背景位置の初期化
	t.on = false;//選択状態の初期化
	t.subOn = false;//選択状態の初期化
	t.enabled = true;//アクティブ状態の初期化(common_category.jsで変更されることがある)
	t.isMulti = isMulti ? true : false;//複数選択の可否
	t.hasMenu = hasMenu ? true : false;//サブメニューの有無
	t.gotMenu = false;//中カテゴリ取得済みフラグ
	t.menuElementName = menuIdString + no;//サブメニュー要素IDを設定
}
/************カテゴリボタンイベント発生時************/
//カテゴリボタンオンマウス
function onMouseCButton(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	if(t.hasMenu){
		//メニュー表示
		hideSpace(t.menuElementName, true);
	}
	t.style.backgroundPosition = t.on ? '-53px 0' : t.subOn ? '-53px -34px' : '-53px -68px' ;
}
//カテゴリボタンマウスアウト
function onMouseOutCButton(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	if(t.hasMenu){
		//メニュー消去
		hideSpace(t.menuElementName, false, 400);
	}
	t.style.backgroundPosition = t.on ? '0 0' : t.subOn ? '0 -34px' : '0 -68px';
}
//カテゴリボタンクリック
function onClickCButton(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	t.isMulti ? changeCButton(t) : changeOneCButton(t, t.idString, t.totalNo);//複数選択の可否で分岐
	hideSpace(t.menuElementName, false);
}
/************サブメニューイベント発生時************/
//サブメニューオンマウス
function onMouseSubList(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	/*onmouseoverの対象が変わるたび(A→UL→Aなど)にeventは発生*/
	if (t.tagName != "A") return;//処理をaタグonmouseover時のみに限定
	hideSpace(t.parentNode.parentNode.parentNode.id, true);
}
//サブメニューマウスアウト
function onMouseOutSubList(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	/*onmouseoverの対象が変わるたび(A→UL→Aなど)にeventは発生*/
	if (t.tagName != "A") return;//処理をaタグonmouseover時のみに限定
	hideSpace(t.parentNode.parentNode.parentNode.id, false, 400);
}
//サブメニュークリック
function onClickSubList(e){
	var t = e.target ? e.target: window.event.srcElement;//ブラウザで分岐
	var tname = t.tagName;
	if(tname!="A")return;
	var b = e.target
		? t.parentNode.parentNode.parentNode.parentNode.childNodes[1]/*for FF*/
		: t.parentNode.parentNode.parentNode.parentNode.childNodes[0]/*for IE*/;//ボタンのDIVオブジェクト取得
	b.isMulti ? changeSubCButton(b) : changeSubOneCButton(b, b.idString, b.totalNo);//複数選択の可否で分岐
	hideSpace(b.menuElementName, false);
}
/************カテゴリボタン状態変化************/
//カテゴリボタン選択（複数選択）
//tgt:選択対象のdivオブジェクト
function changeCButton(tgt){
	if(tgt.on){
		tgt.style.backgroundPosition = '0 -68px';
		tgt.on = false;
		tgt.subOn = false;
	}else{
		tgt.style.backgroundPosition = '0 0';
		tgt.on = true;
		tgt.subOn = false;
	}
}
//カテゴリボタン半選択（複数選択）
//tgt:選択対象のdivオブジェクト
function changeSubCButton(tgt){
	if(tgt.on){
		tgt.style.backgroundPosition = '0 -34px';
		tgt.on = false;
		tgt.subOn = true;
	}else if(tgt.subOn){
		tgt.style.backgroundPosition = '0 -34px';
		tgt.on = false;
		tgt.subOn = true;
	}else{
		tgt.style.backgroundPosition = '0 -34px';
		tgt.on = false;
		tgt.subOn = true;
	}
}
//カテゴリボタン選択（単数選択）
//tgt:選択対象のdivオブジェクト　id:IDの共通部分　allNum:全要素数
function changeOneCButton(tgt, id, allNum){
	clearCButton(id, allNum);
	tgt.style.backgroundPosition = '0 0';
	tgt.on = true;
	tgt.subOn = false;
}
//カテゴリボタン半選択（単数選択）
//tgtNum:選択対象のID連番　id:ボタンのIDの共通部分　allNum:全要素数
function changeSubOneCButton(tgt, id, allNum){
	clearCButton(id, allNum);
	tgt.style.backgroundPosition = '0 -34px';
	tgt.on = false;
	tgt.subOn = true;
}
//カテゴリボタン選択全解除
//id:IDの共通部分　allNum:全要素数
function clearCButton(id, allNum){
	for(var i=1; i<=allNum; i++){
		var t = $(id + i);
		if(t.enabled){
			t.style.backgroundPosition = '0 -68px';
			t.style.cursor = 'pointer';
		}else{
			t.style.backgroundPosition = '0 -102px';
			t.style.cursor = 'default';
		}
		t.on = false;
		t.subOn = false;
	}
}
/*###############################################################################*/
/*
/*element表示非表示切り替え　汎用関数
/*
/*###############################################################################*/
/*単純表示・非表示切り替え
*******************************************************************************/
//tgt:表示するElement
function showElem(tgt){
	$(tgt).style.display='block';
}
//tgt:隠すElement
function hideElem(tgt){
	$(tgt).style.display='none';
}
//tgt:表示または隠すElement, act:ブーリアン値(true:表示する, false:隠す)
function switchElem(tgt,act){
	$(tgt).style.display= act ? 'block' : 'none';
}
/*プルダウンメニュー的表示非表示切り替え
*******************************************************************************/
//tgt:表示または隠すElement, act:ブーリアン値(true:表示する, false:隠す), timeout:実行を遅らせる場合それまでのミリ秒
function hideSpace(tgt,act,timeout){
	var t = $(tgt);
	if(timeout){
		timeoutId=
		act?		setTimeout(function(){showSpaceGo(t)},timeout):
		(act==false)?	setTimeout(function(){hideSpaceGo(t)},timeout):
		!act?		setTimeout(function(){(t.style.display == 'none')?showSpaceGo(t):hideSpaceGo(t)},timeout):null;
	}else{
		act?		showSpaceGo(t):
		(act==false)?	hideSpaceGo(t):
		!act?		(t.style.display == 'none')?showSpaceGo(t):hideSpaceGo(t):1;
	}
}
function hideSpaceGo(t){
	t.style.display = 'none';
	showingFloat = null;
}
function showSpaceGo(t){
	if(showingFloat){
		showingFloat.style.display = 'none';
		showingFloat = null;
	}
	if(timeoutId){
		clearTimeout(timeoutId);
		timeoutId = 0;
	}
	t.style.display = '';
	showingFloat = t;
}

/*###############################################################################*/
/*
/*イベント背景表示
/*
/*###############################################################################*/
function printEventBg(){
	var m = nM;
	$('event').style.backgroundImage='url(common_image/bg_event_'+((m<10)?"0"+m:m)+'.gif)';
}
/*###############################################################################*/
/*
/*出発／到着時刻指定フォーム生成
/*
/*###############################################################################*/
/*----divに値を挿入----*/
function setDateDiv(){
	//日付をdivにセット
	$('fmM').innerHTML=mY+"月"+mM;
	$('fmD').innerHTML=mD;
	$('fmH').innerHTML=mH;
	$('fmMin').innerHTML=((mMin<10)?"0"+mMin:mMin);
}
/*----プルダウンの値を生成・選択----*/
function setDateForm(formID, yearAndMonthID, yearAndMonthSlctValue, dayID, daySlctValue, hourID, hourSlctValue, minuteID, minuteSlctValue){
//引数で各div要素のidとあらかじめ選択したい文字列(現在時を表示する場合はnull)を渡す
	if(!document.createElement)return;
	/*
	var slctYM = null;
	var slctD = null;
	var slctH = null;
	var slctMin = null;
	var fm = document[formID];
	*/

	//各selectの生成
	var htmlYearMonth = "<select name=\"" + yearAndMonthID + "\" id=\"" + yearAndMonthID + "\">";
	var htmlDay = "<select name=\"" + dayID + "\" id=\"" + dayID + "\">";
	var htmlHour = "<select name=\"" + hourID + "\" id=\"" + hourID + "\">";
	var htmlMinute = "<select name=\"" + minuteID + "\" id=\"" + minuteID + "\">";
	//月のプルダウン生成
	//value値は年+","+月
	var mmY = mY;
	var mmM = mM;
	for(var i=0;i<monthNum;i++){
		var v = mmY + "," + mmM;
		htmlYearMonth += "<option"
					+ " value=\"" + v + "\""
					+ ((v == (yearAndMonthSlctValue == null ? 0 : yearAndMonthSlctValue)) ? " selected=\"selected\"" : "")
					+ ">"
					+ mmY + "年" + mmM
					+ "</option>";
		if(++mmM>12){mmY++;mmM=1;}
		/*
		var opt = document.createElement("option");
		opt.value = mY+","+mM;
		if(opt.value == yearAndMonthSlctValue)slctYM = i;
		var str = document.createTextNode(mY+"年"+mM);
		opt.appendChild(str);
		fm[yearAndMonthID].appendChild(opt);
		if(++mM>12){mY++;mM=1;}
		*/
	}
	//日のプルダウン生成
	//value値は数値(1桁でもゼロ追加なし)
	for(var i=0;i<31;i++){
		htmlDay += "<option"
					+ " value=\"" + (i + 1) + "\""
					+ (((i + 1) == (daySlctValue == null ? mD : daySlctValue)) ? " selected=\"selected\"" : "")
					+ ">"
					+ (i + 1)
					+ "</option>";
		/*
		var opt = document.createElement("option");
		opt.value = i + 1;
		if(opt.value == daySlctValue)slctD = i;
		var str = document.createTextNode(i + 1);
		opt.appendChild(str);
		fm[dayID].appendChild(opt);
		*/
	}
	//時のプルダウン生成
	//value値は数値(1桁でもゼロ追加なし)

	for(var i=0;i<=23;i++){
		htmlHour += "<option"
					+ " value=\"" + i + "\""
					+ ((i == (hourSlctValue == null ? mH : hourSlctValue)) ? " selected=\"selected\"" : "")
					+ ">"
					+ i
					+ "</option>";
		/*
		var opt = document.createElement("option");
		opt.value = i;
		if(opt.value == hourSlctValue)slctH = i;
		var str = document.createTextNode(i);
		opt.appendChild(str);
		fm[hourID].appendChild(opt);
		*/
	}
	//分のプルダウン生成
	//value値は数値(1桁でもゼロ追加なし)
	var num=Math.floor(60/kuriNum);
	var cntMin=0;
	for(var i=0;i<num;i++){
		htmlMinute += "<option"
					+ " value=\"" + cntMin + "\""
					+ ((cntMin == (minuteSlctValue == null ? mMin : minuteSlctValue)) ? " selected=\"selected\"" : "")
					+ ">"
					+ (cntMin < 10 ? "0" + cntMin : cntMin)
					+ "</option>";
		cntMin += kuriNum;
		/*
		var opt2 = document.createElement("option");
		opt2.value = cntMin;
		if(opt2.value == minuteSlctValue)slctMin = i;
		var str = document.createTextNode((cntMin<10 ? "0"+cntMin : cntMin));
		opt2.appendChild(str);
		fm[minuteID].appendChild(opt2);
		*/
	}
	htmlYearMonth += "</select>月";
	htmlDay += "</select>日";
	htmlHour += "</select>時";
	htmlMinute += "</select>分に";
	$('insertYearMonth').innerHTML = htmlYearMonth;
	$('insertDay').innerHTML = htmlDay;
	$('insertHour').innerHTML = htmlHour;
	$('insertMinute').innerHTML = htmlMinute;

	/*
	//$('panelSubmit').innerHTML = slctYM+", "+slctD+", "+slctH+", "+slctMin+"<br />"+mM+", "+mD+", "+mH+", "+mMin;
	fm[yearAndMonthID].selectedIndex = (slctYM == null ? 0 : slctYM);
	fm[dayID].selectedIndex = (slctD == null ? mD-1 : slctD);
	fm[hourID].selectedIndex = (slctH == null ? mH : slctH);
	fm[minuteID].selectedIndex = (slctMin == null ? mMin/kuriNum : slctMin);

	//fm.dayID.selectedIndex=nD-1;
	//fm.hourID.selectedIndex=nH;
	//fm.minuteID.selectedIndex=((60/kuriNum)==(((nMin-(nMin%kuriNum))+kuriNum)/kuriNum))?0:(((nMin-(nMin%kuriNum))+kuriNum)/kuriNum);
	*/
}

/*###############################################################################*/
/*
/*ローディングの表示　汎用関数
/*
/*###############################################################################*/
/*ローディング表示・非表示
*******************************************************************************/
//tgtElem:ローディング状態にしたいElementのid, type:ブーリアン値(true:開始, false:解除)
function showLoading(tgtElem, type){
	//alert("テスト中:showLoading:"+tgtElem+", "+type)
	var t =$(tgtElem);
	tp = t.parentNode;
	if(type){
		//ローディング開始
		loadingArr.push(tgtElem);//ローディング中保持配列に追加
//console.log("loadingArr追加:"+loadingArr);
		if(t.style.height){
			var ldObj = document.createElement("div");
			t.style.position = "relative";
			t.style.overflow = "hidden";

			ldObj.id = tgtElem + "_ld";
			ldObj.style.position = "relative";
			ldObj.style.overflow = "visible";
			ldObj.style.left = "50%";
			ldObj.style.top = /*t.style.minHeight ? t.offsetHeight / 2 + "px" : */"50%";
			ldObj.style.width = "0";
			ldObj.style.height = /*t.style.minHeight ? t.offsetHeight + "px" : */"0";
			ldObj.style.margin = "0";
			ldObj.style.padding = "0";
			ldObj.style.zIndex = "2";

			var ldIMgObj = document.createElement("div");
			ldIMgObj.id = tgtElem + "_ldi";
			ldIMgObj.style.position = "absolute";
			ldIMgObj.style.left = "-480px";
			ldIMgObj.style.top = "-480px";
			ldIMgObj.style.width = "960px";
			ldIMgObj.style.height = "960px";
			ldIMgObj.style.margin = "0";
			ldIMgObj.style.padding = "0";
			ldIMgObj.style.background = "#fff url(./common_image/loading.gif) no-repeat center";

			t.appendChild(ldObj);
			ldObj.appendChild(ldIMgObj);
		}else{
			//width, heightが指定されていない場合
			var td = Element.getDimensions(t);//prototype.js
			var th = td.height;
			var tw = td.width;
			var ldObj = document.createElement("div");
			ldObj.id = tgtElem + "_ld";
			if(th < 70){
				//表示される領域の実際のheightが0px(設定なし)から70pxの場合
				ldObj.style.width = tw + "px";
				ldObj.style.height = "70px";
				t.style.minHeight = "70px";//IE6では無視され内容が入れば自動拡張、ほかでは適用され内容が入れば自動拡張される
			}else{
				ldObj.style.width = tw + "px";
				ldObj.style.height = th + "px";
			}
			ldObj.style.background = "#fff url(./common_image/loading.gif) no-repeat center";
			t.appendChild(ldObj);
		}
//alert("loading>>>>>    h.offsetWidth:"+h.offsetWidth+", h.offsetHeight:"+h.offsetHeight+", ldObj.offsetWidth:"+ldObj.offsetWidth+", ldObj.offsetHeight:"+ldObj.offsetHeight);
////console.log("loading:appendChild>>>>>    h.offsetWidth:"+h.offsetWidth +", h.offsetHeight:"+h.offsetHeight);
	}else{
		//ローディング解除
		var alen = loadingArr.length;
		for(var i = 0; i < alen; i++){
			if(loadingArr[i] == tgtElem)loadingArr.splice(i, 1);//ローディング中保持配列から削除
		}
//console.log("loadingArr削除:"+loadingArr);
		if(!$(tgtElem + "_ld"))return;
		t.style.position = "";
		t.style.overflow = "";
		t.removeChild($(tgtElem + "_ld"));
////console.log("loading:removeChild>>>>>    id:" + hideElem + "_ld");
	}
}
/*ローディング一括解除
*******************************************************************************/
function clearAllLoading(){
//console.log(">>>>>>>>>>>>>>>>clearAllLoading>>>>>>>>>>>>>>>>");
//alert("clearAllLoading");
	var alen = loadingArr.length;
	for(var i = 0; i < alen; i++){
		showLoading(loadingArr[i], false);
	}
}

/*###############################################################################*/
/*
/*カレンダーの表示　汎用関数
/*
/*###############################################################################*/
var shukuFlag;//祝日フラグ
var furikaeFlag;//振り替えフラグ

//parentPage:カレンダーを表示するページの種別(リンクの表示を変更)　tgtY:表示したい年　tgtM:表示したい月
function showCalendar(parentPage, tgtY, tgtM){
	//月の大小
	var maxDate = new Array();
	maxDate = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

	//カレンダー用の日時設定
	var cY = (tgtY && tgtM) ? tgtY : nY;
	var cM = (tgtY && tgtM) ? tgtM : nM;
	var cD = (tgtY && tgtM) ? 1 : nD;
	if ((cY % 4 == 0 && cY % 100 != 0) || cY % 400 == 0) maxDate[1]++;

	//設定した日時でDateオブジェクト生成
	var d = new Date(cY, cM-1, cD);
	//1日の曜日取得
	d.setDate(1);
	//alert(d);
	var dayFirst = d.getDay();
	//alert("dayFirst:"+dayFirst);//dbg

	//前の月を計算
	if(cM==1){
		prvY=cY-1;
		prvM=12;
	}else{
		prvY=cY;
		prvM=cM-1;
	}
	//次の月を計算
	if(cM==12){
		nxtY=cY+1;
		nxtM=1;
	}else{
		nxtY=cY;
		nxtM=cM+1;
	}
	var dayCnt = 1;//日にち初期化
	var buff = "";//書き出し初期化
	var buffLinks = "";//書き出し初期化
	var flag = dayFirst ? 0 : 1;//フラグ初期化(日曜日から始まる週の対処つき)
	var maxDateThisMonth = maxDate[cM-1];//現在月の最大日
	var maxWeekThisMonth = Math.ceil((dayFirst + maxDateThisMonth) / 7);//現在月の最大行
	//buff += "<a href=\"javascript:void(0);\" onclick=\"showCalendar(" + parentPage + ", " + prvY + ", " + prvM + ");return false;\">前の月</a> | <a href=\"javascript:void(0);\" onclick=\"showCalendar(" + parentPage + ");return false;\">今月</a> | <a href=\"javascript:void(0);\" onclick=\"showCalendar(" + parentPage + ", " + nxtY + ", " + nxtM + ");return false;\">次の月</a>";
	buff += "<img id=\"calendarHeader\" src=\"./common_image/calendar_header.gif\" width=\"200\" height=\"12\" alt=\"\" />\n";
	buff += "<table id=\"calendar\" class=\"tM\">\n";
	for (var i=1; i<=maxWeekThisMonth; i++){
		buff += "<tr>";
		for (var j=0; j<7; j++){
			//0=日曜日、6=土曜日
			if(flag==0){
				//日付開始到達前
				buff += "<td class=\"" + checkDayType(j) + "\">　</td>";
				if(j+1 == dayFirst)flag++;
			}else if(flag==1){
				//日付開始到達後
				
				buff += "<td class=\"" + checkDayType(j,cY,cM,dayCnt) + "\">" + dayCnt + "</td>";
				dayCnt == maxDateThisMonth ? flag++ : dayCnt++;
			}else{
				//日付終了後
				buff += "<td class=\"" + checkDayType(j) + "\">　</td>";
			}
		}
		buff += "</tr>";
	}
	buff += "\n</table>\n";
	//カレンダー書き出し
	$('calendarArea').innerHTML = buff;
	//カレンダーオプション枠書き出し(該当idがあれば書き出し)
	var t;
	(t=$('calendarYearText')) ? t.innerHTML = cY : t = null;
	(t=$('calendarMonthText')) ? t.innerHTML = cM : t = null;
	(t=$('calendarLink')) ? t.innerHTML = "<a href=\""
				+ EVENT_SEARCH_URL
				+ stringUtils.getUrlParam(EVENT_YEAR, cY)
				+ stringUtils.getUrlParam(EVENT_MONTH, cM)
				+ stringUtils.getUrlParam(BEHAVIOR, 0)
				+ "\" class=\"g-arrowLink\">今月のイベント</a>"
				+ "<a href=\""
				+ EVENT_SEARCH_URL
				+ stringUtils.getUrlParam(EVENT_YEAR, nxtY)
				+ stringUtils.getUrlParam(EVENT_MONTH, nxtM)
				+ stringUtils.getUrlParam(BEHAVIOR, 0)
				+ "\" class=\"g-arrowLink\">来月のイベント</a>" : t = null;
}

//日付の種別を判定
function checkDayType(day, y, m, d){
	//返す値　sun:日曜, sat:土曜, shuku:祝日, furi:振替休日, today:本日
	//祝日設定は2007年以降に対応
	//過去は2007年4月まで表示できるようにする

	var type = (day == 0) ? "sun" : (day == 6) ? "sat" : "nml";
	if(!(y||m||d))return type;
	//祝日との照合
	var shukuFlag = checkShukujitsu(day, y, m, d);
	//祝日と祝日に挟まれる平日は国民の休日
	if ((!shukuFlag) && (checkShukujitsu(((day-1)<0) ? 6 : day - 1, y, m, d-1)) && (checkShukujitsu(((day+1)>6) ? 0 : day + 1, y, m, d+1))){
		shukuFlag = true;
	}
	//祝日・振り替え処理
	if(shukuFlag){
		shukuFlag=false;
		if(furikaeFlag){
			type="shuku";
			furikaeFlag=true;
		}else if(day==0){
			type="shuku";
			furikaeFlag=true;
		}else{
			type="shuku";
		}
	}else{
		if(furikaeFlag){
			type="furi";
			furikaeFlag=false;
		}
	}
	//本日の処理
	type += ((y==nY)&&(m==nM)&&(d==nD)) ? "today" : "";
	return type;
}

//祝日の判定
function checkShukujitsu(day, y, m, d){
	var shukai = Math.ceil(d/7);//第ｎ週の曜日か
	//祝日との照合
	switch(m){
		case 1:if(
				(d==1)||			//元日
				((day==1)&&(shukai==2))		//成人の日
			){return true}break;
		case 2:if
				(d==11)				//建国記念の日
			{return true}break;
		case 3:if
				(d==(Math.floor(20.8431 + 0.242194 * (y - 1980))-Math.floor((y - 1980) / 4)))//春分の日
			{return true}break;
		case 4:if
				(d==29)				//昭和の日
			{return true}break;
		case 5:if(
				(d==3)||			//憲法記念日
				(d==4)||			//みどりの日
				(d==5)				//こどもの日
			){return true}break;
		case 7:if
				((day==1)&&(shukai==3))		//海の日
			{return true}break;
		case 9:if(
				(d==(Math.floor(23.2488 + 0.242194 * (y - 1980)) - Math.floor((y - 1980) / 4)))||//秋分の日
				((day==1)&&(shukai==3))		//敬老の日
			){return true}break;
		case 10:if
				((day==1)&&(shukai==2))		//体育の日
			{return true}break;
		case 11:if(
				(d==3)||			//文化の日
				(d==23)				//勤労感謝の日
			){return true}break;
		case 12:if
				(d==23)				//天皇誕生日
			{return true}break;
	}
	return false;
}

/*###############################################################################*/
/*
/*エラー表示
/*
/*###############################################################################*/

/*ローディングエラー（流し込むべきHTML要素がある場合に使用）
*******************************************************************************/
//tgtElem:メッセージを挿入する要素, httpObj:httpオブジェクト, msg:表示するメッセージ
function showLoadingErr(tgtElem, httpObj, msg){
	clearAllLoading();//ローディング全解除
//	$('g-head').innerHTML = "";
//	$('g-head').innerHTML += "showLoadingErr>>>>エラー表示テスト中："+tgtElem+", "+httpObj.status;
	showLoading(tgtElem, false)
	var code = httpObj.status;
	if(msg){
		var msg = msg + "（コード：" + code + "）";
	}else{
		var msg = "データが取得できません。（コード：" + code + "）";
	}
	//msg += "<br />※※※　エラー文表示テスト中　※※※";
	var t =$(tgtElem);
	tp = t.parentNode;
	var tagname = "div";
	if(t.nodeName == "UL")tagname = "li";
	var ldObj = document.createElement(tagname);
	ldObj.id = tgtElem + "_err";
	ldObj.className = "tGr tS";
	ldObj.style.background = "#fff";
	ldObj.style.textAlign = "center";
	ldObj.style.marginTop = "8px";
	ldObj.innerHTML = msg;
	t.appendChild(ldObj);
	//alert("テスト中："+$(tgtElem + "_err"))
}

/*ローディングエラー（アラートで表示する場合）
*******************************************************************************/
//httpObj:httpオブジェクト, msg:表示するメッセージ
function alertLoadingErr(httpObj, msg){
	clearAllLoading();//ローディング全解除
	var code = httpObj.status;
	alert(msg ? msg + "\n（コード：" + code + "）" : "データが取得できません。\n（コード：" + code + "）");
}

/*エラーアラート
*******************************************************************************/
//msg:表示するメッセージ
function alertErr(msg){
	alert(msg ? msg : "正しくページが取得できませんでした。");
}

/**/
