/*  ============================================================
初期設定
============================================================ */
//  == 読み込むXMLファイル 設定 ==========
var xmlFile = "shop_excel.xml";


// == 読み込み時のタブリンクセット設定 ==========
// 0 : 店舗別　100 : 都道府県別
var tabSetNoDefault = 0;

//  == ページ読み込み時の絞り込みタブリンク設定 ==========
var tabName = '東急ハンズ';
var clickNo = 0;


// == 絞り込みの処理タイプ設定 ==========
//	      Type:A　ヒットした行だけ表示する
//	      Type:B　ヒットした行のスタイルを変更
var typeFlag = "A";

//       ヒットしたワードのスタイルを変更
//	      0 : OFF
//	      1 : ON
var hitFlag = 0;

// == リスト テーブル表示設定 ==========
//	      0 : タブリンクに関わらず全ての項目を表示
//	      1 : 絞り込み項目名をタイトル表示し、テーブルは非表示にする
var titleFlag = 1;

//	      セル項目の見出し表示
//	      0 : 見出しなし
//	      1 : 見出しあり
var theadFlag = 1;



/*  ============================================================
Ajax : リスト生成
============================================================ */
// == その他変数定義
var tabDefault = tabName;
var tabNoDefault = 0;


//  == 描画 : xStart に描画開始セルの項目番号を設定する ==========
function findXMLFile(xStart,yStart){

// 検索キーワード
var findName = $F('itemName');

// シート定義
var sheetName = 'Sheet1';

// シートがあるか判定
var wsObj = getWorkSheet(xmlObj,sheetName);
// シートの列数を取得
var x = getWorkSheetColCount(wsObj)+1;
// シートの行数を取得
var y = getWorkSheetRowCount(wsObj);


// 出力する内容を生成
var txt = '';

// 拡張 : タブ名称を見出しとして表示
if(titleFlag == 1){
txt += '<div class="title">' + tabName + '</div>';
}

txt += '<table class="sortable">';
for (h=yStart; h<y; h++){


// == 拡張 : セル項目名を表示 ==========
if(h == yStart && theadFlag ==1){
txt += '<tr id="thead">';
for (var w=xStart; w<x; w++){
var n = getCellData(xmlObj,sheetName,w,h);
// 表示したくない見出しセルを非表示
if(n == "施設名"||n == "取り扱い商品アイコン"){n = '&nbsp;'}

// 現在のタブリンクで不要な th を非表示 
if(titleFlag == 1){
if( clickNo >= 0 && clickNo < 100){
if(w == 1){ /*店舗名のセル列*/
txt += '';
} else {
txt += '<th>' + n +'</th>';
}
}
else if( clickNo >= 100){
if(w == 3){ /*都道府県のセル列*/
txt += '';
} else {
txt += '<th>' + n +'</th>';
}
}
else if( clickNo < 0){
txt += '<th>' + n +'</th>';
}
else {
txt += '<th>' + n +'</th>';
}
} if(titleFlag == 0) {
txt += '<th>' + n +'</th>';
}

}
txt += '</tr>';
}


// タブ絞り込み
for (var w=0; w<x; w++){
var cellText = getCellData(xmlObj,sheetName,w,h);
if(cellText.match(tabName)){

// == Type:A　ヒットした行だけ表示する ======================
if(typeFlag == "A" && h>yStart){
// 検索
for (var w=0; w<x; w++){
var cellText = getCellData(xmlObj,sheetName,w,h);
if(cellText.match(findName)){

// 描画
txt += '<tr>';
for (var w=xStart; w<x; w++){
var n = getCellData(xmlObj,sheetName,w,h);
// 特定の文字列を空白に変換
if(n == "('д')"){n = '&nbsp;'}
// 特定の文字列を他の表記に変換
if(n == "[F]"){n = '<img src="img/shop_mark_f.gif" alt="[F]" />'}
if(n == "[D]"){n = '<img src="img/shop_mark_d.gif" alt="[D]" />'}
if(n == "[N]"){n = '<img src="img/shop_mark_n.gif" alt="[D]" />'}
if(n == "[ND]"){n = '<img src="img/shop_mark_nd.gif" alt="[D]" />'}
//タブ絞り込み名称と同じセルを表示しない
if(n == tabName && titleFlag == 1){
txt += '';
}


// 拡張 : 検索ワードのスタイルを変更
else if(n.match(findName) && findName !== '' && hitFlag == 1) {
var hitWord = '<span>' + findName + '</span>';
var nNew = '';
nSplit = n.split(findName);
for(var i=0;i<nSplit.length;i++){
if(i !==nSplit.length-1){
nNew += nSplit[i]+hitWord;
}else{
nNew += nSplit[i];
}
}
// 拡張 : td にノード番号付きclass を割り振る 
txt += '<td class="cell' + w +'">' + nNew + '</td>';
//txt += '<td>' + nNew + '</td>';
}


else {
// 拡張 : td にノード番号付きclass を割り振る 
txt += '<td class="cell' + w +'">' +n + '</td>';
//txt += '<td>' + n + '</td>';
}
} 
txt += '</tr>';
}
}

}

// == Type:B　ヒットした行のスタイルを変更 ======================
if(typeFlag == "B" && h > yStart){
// 描画
txt += '<tr';
// 検索でヒットした行のスタイルを変更
for (var w=0; w<x; w++){
var cellText = getCellData(xmlObj,sheetName,w,h);
if(cellText.match(findName) && findName !== ''){
txt += ' class="hit"';
}
}
txt += '>';
for (var w=xStart; w<x; w++){
var n = getCellData(xmlObj,sheetName,w,h);
// 特定の文字列を空白に変換
if(n == "('д')"){n = '&nbsp;'}
// 特定の文字列を他の表記に変換
if(n == "[F]"){n = '<img src="img/shop_mark_f.gif" alt="[F]" />'}
if(n == "[D]"){n = '<img src="img/shop_mark_D.gif" alt="[D]" />'}
if(n == "[N]"){n = '<img src="img/shop_mark_n.gif" alt="[D]" />'}
if(n == "[ND]"){n = '<img src="img/shop_mark_nd.gif" alt="[D]" />'}
//タブ絞り込み名称と同じセルを表示しない
if(n == tabName && titleFlag == 1){
txt += '';
}

// 拡張 : 検索ワードのスタイルを変更
else if(n.match(findName) && findName !== '' && hitFlag == 1) {
var hitWord = '<span>' + findName + '</span>';
var nNew = '';
nSplit = n.split(findName);
for(var i=0;i<nSplit.length;i++){
if(i !==nSplit.length-1){
nNew += nSplit[i]+hitWord;
}else{
nNew += nSplit[i];
}
}
// 拡張 : td にノード番号付きclass を割り振る 
txt += '<td class="cell' + w +'">' + nNew + '</td>';
//txt += '<td>' + nNew + '</td>';
}


else {
// 拡張 : td にノード番号付きclass を割り振る 
txt += '<td class="cell' + w +'">' +n + '</td>';
//txt += '<td>' +n + '</td>';
}
} 
txt += '</tr>';

}
// ============================================


}
}
}

txt += '</table>';

// == id 'result' に出力 ==========
// 表示する内容がない場合、メッセージを表示
var searchTd = txt.indexOf('td');
if(searchTd == -1){
txt = '<div class="error">登録されている情報はありません。</div>';
} 
// 描画
$('result').innerHTML = txt;
}



/*  ============================================================
リスト表示コントロール
============================================================ */
// == リストきりかえ ==========
function switchList(no){
//押されたタブリンクナンバーを記憶
clickNo = no;
// 押されたタブリンクのリストを再描画
var tabLabel = list[no];
tabName = tabLabel;
findXMLFile(0,1);



// タブリンク現在位置表示
if(no < 100){
var preTab = 0;
} else {
preTab = 100;
}
createTabLink(preTab);
}


// == 絞り込み解除 ==========
function listClearNarrowing(){
$('itemName').value = '';
findXMLFile(0,1);
}


// == ページ読み込み時の状態に戻す ==========
function listClear(){
tabName = tabDefault;
$('itemName').value = '';
findXMLFile(0,1);
//タブリンクを初期位置に戻す
clickNo = 0;
//タブリンクセットを初期位置に戻す
createTabLink(0);
listClearNarrowing();
}


// == 全て表示 ==========
function listAll(){
//タブリンクを全てアクティブに
clickNo = -1;

tabName = '';
$('itemName').value = '';
findXMLFile(0,1);

//タブリンクセットを初期位置に戻す
createTabLink(0);
}

/*  ============================================================
タブリンクセット描画
============================================================ */
function createTabLinkSet(tabSetNo){
var linkset = '<ul>';

// リンクセット リスト描画
function writeTabSet(presentSetNo){
if(list_set[n] !== undefined){

// 通常のリンク
if(n !== presentSetNo){
linkset += '<li><a href="javascript:createTabLink(' + n + ');">' + list_set[n] + '</a></li>';
// 現在位置表示
} else if(n == presentSetNo) {
linkset += '<li class="present">' + list_set[n]  + '</li>';
}
}
}

// 描画
for(var n=0; n<=list_set.length;n++){
writeTabSet(tabSetNo);
}

linkset += '</ul>';
$('tablinkset').innerHTML = linkset;
var nowTabSetNo = tabSetNo;
}


/*  ============================================================
タブリンク描画
============================================================ */
function createTabLink(tabNo){
// タブリンクセット描画
createTabLinkSet(tabNo);


var links = '<ul>';

// リンクリスト描画
function writeTab(presentNo){
if(list[n] !== undefined){

// 通常のリンク
if(n !== presentNo){
links += '<li><a href="javascript:switchList(' + n + ');">' + list[n] + '</a></li>';

// 現在位置表示
} else if(n == presentNo) {
links += '<li class="present">' + list[n]  + '</li>';
}

}
}

if(tabNo < 100){
for(var n=tabNo; n<100;n++){
writeTab(clickNo);
}
} else {
for(n=100; n<list.length;n++){
writeTab(clickNo);
}
}

links += '</ul>';
$('tablinks').innerHTML = links;
}



/*  ============================================================
ページ読み込み時に実行
============================================================ */

// == 読み込むXML定義とキャッシュ ==========
function dataCache(){
// 読み込むXMLを定義
var filename =  xmlFile + '?cache='+(new Date()).getTime();
new Ajax.Request(filename, {method: 'get', 
onComplete: function(httpObj){
 // 取得したXMLデータを変数に格納
 xmlObj = httpObj.responseXML;
 findXMLFile(0,1);

 //タブリンク表示
 createTabLink(tabNoDefault);
 createTabLinkSet(tabSetNoDefault);

 //ローディングを閉じる
 $('loading').style.display='none';
 //絞り込みを表示
 $('narrowing').style.display='block';
 }});
}

dataCache();



