var globalPath = '';

//swf
//var swfobject_path = '/banner/flash/flash.swf' + '?file_path=/banner/flash/root250x250.xml';
//swfobject.embedSWF(swfobject_path, 'swf_content', '230', '230', '8.0.0', '', {}, {wmode:'transparent'});

//GSA
var gsa = {};
if(!gsa.model) gsa.model = {};
if(!gsa.search) gsa.search = {};
gsa.model.PageDatas = new Array();
gsa.model.PageData = function(pageNo){
	this.pageNo = Number(pageNo);
	this.categoryDatas = new Array();
}
gsa.model.CategoryData = function(){
	this.title;
	this.keywords = new Array();
}
gsa.model.ItemData = function(){
	this.pageNo;
	this.type;
	this.categoryNo;
	this.displayWord;
	this.searchKeyword;
	this.keywordID; //全てを通しての通し場番号
}
gsa.model.AllKeywords = new Array();

gsa.search.KeywordSearch = function(){
	this.numOfDetailPage = 6;
	this.pageNo;
	this.currentPage;
	this.constructer();
}
gsa.search.KeywordSearch.prototypeClosure = function(){
	var PageDatas = gsa.model.PageDatas;
	var PageData = gsa.model.PageData;
	var CategoryData = gsa.model.CategoryData;
	var ItemData = gsa.model.ItemData;
	var AllKeywords = gsa.model.AllKeywords;
	
	return {
		constructer: function(){
			this.pageNo = this.getPageNo();
			$('#q').attr('value', ""); //ブラウザの「戻る」できた場合にリセット
			this.loadCSV();
		},
		getPageNo: function(){
			var path = location.pathname;
			if(path == globalPath + '/' || path == globalPath + '/index.html'){
				return 0;
			}else if(path.indexOf(globalPath + '/detail') != -1){
				return Number(path.substr((globalPath + '/detail/detail').length, 2));
			}else{
				return 0;
			}
		},
		loadCSV: function(){
			var self = this;
			var filename = globalPath + "/csv/search_key_" + (this.pageNo + 1)+".csv" + "?" + (new Date()).getTime();
			$.get(filename, {}, function(data){
				var dataTable = CSVData.parse(data);
				self.parseData(dataTable);
				self.init();
			});
		},
		parseData: function(dataTable){
			dataTable.shift(); //1行目は削除
			var i;
			var len = dataTable.length;
			var firstColumn;
			var rowData;
			var item;
			
			var categoryData;
			var currentPage = 0;
			var pageData = new PageData(currentPage);
			PageDatas.push(pageData);
			
			var keywordCount = 0;
			for(i = 0; i < len; i++)
			{
				rowData = dataTable[i];
				firstColumn = rowData[0];
				//各行の先頭でエラーチェック
				if(firstColumn == "" || firstColumn == " " || firstColumn == "　" || 
				   firstColumn == "\n" || firstColumn == "\r\n" || firstColumn == "\r"){
					continue;
				}
				
				item = new ItemData();
				item.pageNo = this.pageNo;
				item.type = rowData[0].substr(0, 1) == "t" ? "title" : "keyword";
				item.categoryNo = Number(rowData[0].substr(1));
				item.displayWord = rowData[1];
				item.searchKeyword = rowData[2];
				
				if(item.type == "title"){
					categoryData = new CategoryData();
					categoryData.title = item;
					pageData.categoryDatas.push(categoryData);
				}
				else{
					item.keywordID = keywordCount;
					AllKeywords.push(item);
					keywordCount++;
					categoryData.keywords.push(item);
				}
			}
		},
		init: function(){
			if(this.pageNo == 0){
				this.setIndexPage();
				this.registerIndexEvent();
			}else{
				this.setDetailPage();
				this.registerDetailEvent();
			}
			this.registerKeywordEvent();
			
			this.changePage(this.pageNo);
		},
		setIndexPage: function(){
			var pagedata = PageDatas[0];
			var i; var j;
			var len = pagedata.categoryDatas.length;
			var len2;
			var dl;
			var dds;
			var categorydata;
			for(i = 0; i < len; i ++){
				categorydata = pagedata.categoryDatas[i];
				len2 = categorydata.keywords.length;
				dds = "";
				for(j = 0; j < len2; j++){
					dds += '<dd id="keywordLink' + categorydata.keywords[j].keywordID + '">' + categorydata.keywords[j].displayWord + '</dd>';
				}
				dds += '<dd id="keywordMore' + Number(i) + '" class="keyword_more">…</dd>';
				dl = $('#search_page0_item' + i);
				dl.append(dds);
			}
		},
		setDetailPage: function(){
			var i; var j; var k;
			var categoryData;
			var targetDIV;
			var appendHTMLStr;
			var keyword;
			page = PageDatas[0];
			appendHTMLStr = '<table>';
			for(j = 0; j < page.categoryDatas.length; j++){
				categoryData = page.categoryDatas[j];
				appendHTMLStr += '<tr><th>' + categoryData.title.displayWord + '</th><td><dl>';
				for(k = 0; k < categoryData.keywords.length; k++){
					keyword = categoryData.keywords[k];
					appendHTMLStr += '<dd id="keywordLink' + keyword.keywordID + '">' + keyword.displayWord + '</dd>';
				}
				appendHTMLStr += '</dl></td></tr>';
			}
			appendHTMLStr += '</table>';
			targetDIV = $('#search_page' + this.pageNo);
			targetDIV.append(appendHTMLStr);
		},
		registerIndexEvent: function(){
			var self = this;
			var i;
			var menu;
			for(i = 0; i < this.numOfDetailPage; i++){
				menu = $('#search_page0_item' + i + ' dt');
				menu
				.mouseover(function(){
					$(this).attr('class', 'over');
				})
				.mouseout(function(){
					$(this).removeClass();
				})
				.bind('click', {num:Number(i + 1)}, function(e){
					location.href = globalPath + '/detail/detail0' + e.data.num + '.html';
				});
			}
			var more;
			for(i = 0; i < this.numOfDetailPage; i++){
				more = $('#keywordMore' + i);
				more
				.mouseover(function(){
					$(this).attr('class', 'keyword_more_over');
				})
				.mouseout(function(){
					$(this).attr('class', 'keyword_more');
				})
				.bind('click', {num:Number(i + 1)}, function(e){
					location.href = globalPath  + '/detail/detail0' + e.data.num + '.html';
				});
			}
		},
		registerDetailEvent: function(){
			var self = this;
			var i;

			var tab;
			for(i = 0; i < this.numOfDetailPage; i++){
				tab = $('#search_tab_menu' + (i + 1));
				var _num = Number(i + 1);
				tab
				.bind('mouseover', {num:_num}, function(e){
					if(self.currentPage != e.data.num){
						$(this).children('p').addClass('over');
					}
				})
				.bind('mouseout', {num:_num}, function(e){
					if(self.currentPage != e.data.num){
						$(this).children('p').removeClass();
					}
				})
				.bind('click', {num:_num}, function(e){
					if(e.data.num == self.pageNo){
						return;
					}
					location.href = globalPath + '/detail/detail0' + e.data.num + '.html';
				});
			}
		},
		registerKeywordEvent: function(){
			var self = this;
			var i;
			
			var keywordLink;
			var keywordData;
			for(i = 0; i < AllKeywords.length; i++){
				keywordLink = $('#keywordLink' + i);
				keywordLink
				.mouseover(function(){
					$(this).addClass('over');
				})
				.mouseout(function(){
					$(this).removeClass();
				})
				.bind('click', {num:Number(i + 1)}, function(e){
					keywordData = AllKeywords[e.data.num - 1];
					self.searchGSA(keywordData.searchKeyword);
				});
			}
		},
		searchGSA: function(queryKeyword){
			$('#q')
			.css('color', '#fff')
			.attr('value', queryKeyword);
			$('#free_search').trigger('submit');
		},
		changePage: function(pageNo){
			var i;
			var page;
			this.currentPage = pageNo;
			$('#search_page' + pageNo).show();
			var tabs = $('#search_tab');
			if(pageNo == 0){
				tabs.hide();
			}else{
				var tab;
				this.numOfDetailPage
				$('#search_tab_menu' + pageNo).children('p').addClass('active');
				tabs.show();
			}
		}
	}
}

$(function(){
	var KeywordSearch = gsa.search.KeywordSearch;
	KeywordSearch.prototype = KeywordSearch.prototypeClosure();
	KeywordSearch.prototypeClosure = null;
	var ks = new KeywordSearch();
});
