/*  ============================================================

初期設定

============================================================ */

//  == 読み込む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();





