// JavaScript Document

// 読込みファイル「shopinfo_1(～_3).csv」※タイプ選択用変数「SELECT」により読み込みファイルを変動
// フィールド
//[0]店舗名、
//[1]店舗名（ひらがな読み）
//[2]エリアコード
//[3]店舗コード（旧）
//[4]店舗コード（新）←こちらを使用
//[5]情報データ

//--------------------------------------------------------
// お知らせタイプの選択
// 4: お盆時期、5: 年末年始、6: 社内行事
//--------------------------------------------------------
var SELECT = 4;

//--------------------------------------------------------
// お知らせ期間の開始日と終了日を設定
//--------------------------------------------------------
var sYear = 	2010;	// 表示開始「年」
var sMonth = 	7;		// 表示開始「月」
var sDate = 	1;		// 表示開始「日」
var eYear = 	2010;	// 表示オフ「年」
var eMonth = 	8;		// 表示オフ「月」
var eDate = 	31;		// 表示オフ「日」※指定した日に表示がオフになる

// お知らせデータ表示フラグ
//var displayFlag = true;

var shop = {};

//---[ 設定終了 ]-----------------------------------------

// お知らせ内容チェック用（URL末尾に「?mode=check」など適当なクエリがついていたらチェックモードとし、強制的に表示期間内とする）
var query = location.href.split('?')[1];
if (query) {
	sYear = 2000;	//過去の日付とすることで強制的に表示期間にする
}

// 読み込みCSVファイルの選定
var infoLoadPhp = './shopinfo.php?type=' + SELECT + '&start=2010-07-01&end=2010-08-31';

// お知らせ期間の判定
var today = (new Date()).getTime();
var startDay = (new Date(sYear, sMonth-1, sDate)).getTime();
var endDay = (new Date(eYear, eMonth-1, eDate)).getTime();

var displayFlag = ((startDay < today) && (today < endDay )) ? true : false;
//if (!displayFlag) { alert('公開期間外です'); } else { alert('公開期間中です');}

// 表示期間内は、initイベント登録して処理開始
if (displayFlag) {
	Event.observe(window, 'load', init);
}

//エリアコードとエリア名の設定
var AreaName = {
	'1':'関西',
	'2':'北海道・東北・北信越',
	'3':'関東',
	'4':'中部',
	'5':'中国・四国',
	'6':'九州',
	'7':'その他'
	};
	

//メッセージ文章の格納
var introMessage = Array();
introMessage[0] = '';
introMessage[4] = 'お盆時期の営業につきまして、臨時休業や営業時間の変則する店舗がございます。大変ご迷惑おかけいたしますがなにとぞご了承のほどお願い申し上げます。';
introMessage[5] = '年始の営業につきまして、休業や営業時間の変則する店舗がございます。大変ご迷惑おかけいたしますがなにとぞご了承のほどお願い申し上げます。';
introMessage[6] = '社内行事によりやむなく臨時休業や営業時間の変則する店舗がございます。お立ち寄りの際は下記の欄をご確認の上ご注意ください。大変ご迷惑おかけいたしますがなにとぞご了承のほどお願い申し上げます。';

shopInfoNormal = '通常通りの営業';

//-------------------------------------
// 初期処理
//-------------------------------------
function init(){
	
	Event.observe('area', 'change', areaSelect);
	Event.observe('shopname', 'keyup', shopSelect);
	Event.observe('shopname', 'change', shopSelect);
	Event.observe('infoSW', 'click', infoDisplaySW);
	
	$('indexInfo').style.display = 'block';
	
	var _btn = '　[<a href="javascript:return false;" id="infoSW2">-</a>]';	//テキストボタン生成
	$('INTRO').innerHTML = introMessage[SELECT] + _btn;
	Event.observe('infoSW2', 'click', infoDisplaySW);	//テキストボタンのイベント登録
	
	infoLoad();
}




//-------------------------------------
// 情報データのロード、展開
//-------------------------------------
function infoLoad(){
	
	//データファイル読込み
	new Ajax.Request(
		//infoCsvFile
		infoLoadPhp
		,
		{
			method: 'get'
			,
			parameters: 'cache=' +(new Date()).getTime()
			,
			//onComplete: function(httpObj){
			onSuccess: function(httpObj){
				// PHPからjson形式で受け取った文字列データをevalしてオブジェクト化
				shop = eval('('+httpObj.responseText+')');
				
				// オブジェクトの店舗ニュースデータを展開してHTML化、表示
				$('DISP').innerHTML = infoDisplay();
				$('DISP').style.display = 'block';
			}
		}
	);
	
	// ボタンSWのテキストを変更
	$('infoSW').value = $('infoSW2').innerHTML = 'お知らせ表示を消す';
}

//-------------------------------------
function infoDisplay(search){
	
	//初期設定
	var area = '';		//行展開時、どのエリアを展開しているか記録するための変数
	var HtmlLine = '';
	HtmlLine += '<table>';
	
	for (i in shop) {
		
		// 検索処理
		if (search != null) {
			//検索：店舗名テキスト検索（※非該当はループスキップして表示データに含ませない）
			if (search.shop && shop[i].name.indexOf(search.shop) <= -1) {continue;}
			
			//検索：エリア別表示（※非該当はループスキップして表示データに含ませない）
			if (search.area && shop[i].area != search.area) {continue;}
		}
		
		//エリアの区切り・エリアタイトル挿入
		if (shop[i].area != area) {
			//格納値を更新
			area = shop[i].area;
			//次エリアを展開する時点で、現在格納値と展開するエリア値が異なるため、この時点でエリアタイトルを表示する
			HtmlLine += '<tr><th colspan="2" class="areaname">' + AreaName[area] + '</th></tr>';
		}
		
		// 店舗名を整形（リンクを付ける。※一応、現在のところ店舗IDが30000より下で条件）
		var shopName = (Number(i) < 30000) ? '<a href="' + i + '.html">' + shop[i].name + '</a>' : shop[i].name;
		
		// trタグを組み立て
		HtmlLine += '<tr>';
		HtmlLine += '<td class="shopname">' + shopName + '</td>';
		HtmlLine += '<td class="shopinfo"><p>' + shop[i].news + '</p></td>';
		HtmlLine += '</tr>';
	}
	
	HtmlLine += '</table>';
	
	//生成したHTMLをチェック（内容がなければ完全に空欄にして返す）
	if(HtmlLine.indexOf('td') == false){ HtmlLine = ''; }
	
	return HtmlLine;
}


//-------------------------------------
// エリアフォーム選択時の処理
//-------------------------------------
function areaSelect(){
	// 検索用オブジェクトを生成
	var search = {};
	search.area = $('area').value;
	
	//店舗名フォーム側をリセット
	$('shopname').value = '';
	
	// 検索用オブジェクトを引数にデータ表示用関数をコール
	$('DISP').innerHTML = infoDisplay(search);
	
	// 検索時、表示オフになってたらこれを逆転させておく。
	if (displayFlag = !displayFlag) {
		$('DISP').style.display = 'block';
		$('infoSW').value = $('infoSW2').innerHTML = 'お知らせ表示を消す';
	}
}

//-------------------------------------
// 店舗名検索時の処理
//-------------------------------------
function shopSelect(){
	// 検索用オブジェクトを生成
	var search = {};
	search.shop = $('shopname').value;
	
	//エリア選択フォーム側をリセット
	$('area').selectedIndex = 0;
	
	// 検索用オブジェクトを引数にデータ表示用関数をコール
	$('DISP').innerHTML = infoDisplay(search);
	
	// 検索時、表示オフになってたらこれを逆転させておく。
	if (displayFlag = !displayFlag) {
		$('DISP').style.display = 'block';
		$('infoSW').value = $('infoSW2').innerHTML = 'お知らせ表示を消す';
	}
}

//-------------------------------------
// 情報表示のオフ
//-------------------------------------
function infoDisplaySW(){
	// 表示フラグを切替えて表示ON/OFF
	if(displayFlag = !displayFlag) {	//フラグがTRUEになるとき＝表示ON
		
		//データ表示用関数をコール、表示スタイルON
		$('DISP').innerHTML = infoDisplay();
		$('DISP').style.display = 'block';
		
		// ボタンSWのテキスト切替
		$('infoSW').value = $('infoSW2').innerHTML = 'お知らせ表示を消す';
		
		// フォーム入力値をリセット
		$('area').selectedIndex = 0;
		$('shopname').value = '';
		
	} else {	//表示OFF
		
		//データ表示領域を空白化、表示スタイルOFF
		$('DISP').innerHTML = '';
		$('DISP').style.display = 'none';
		
		// ボタンSWのテキスト切替
		$('infoSW').value = $('infoSW2').innerHTML = 'お知らせを表示';
		
		// フォーム入力値をリセット
		$('area').selectedIndex = 0;
		$('shopname').value = '';
	}
}

