
var bestcsv;
var refcsv = new Array();
var newxml = new Array();
var ndlist = new Array();

ndlist=[["00.総記","01.読書","02.本","03.事典","04.雑記","05.逐次刊行物","06.団体","07.メディア","08.叢書","09.特殊資料"],
		["10.哲学","11.哲学各論","12.東洋思想","13.西洋哲学","14.心理学","15.倫理道徳","16.宗教","17.神道","18.仏教","19.キリスト教"],
		["20.地理・歴史","21.日本史","22.アジア史","23.西洋史","24.アフリカ史","25.北アメリカ史","26.南アメリカ史","27.オセアニア史","28.伝記","29.地理・旅行"],
		["30.社会科学","31.政治","32.法律","33.経済","34.財政","35.統計","36.社会","37.教育","38.風俗","39.軍事"],
		["40.科学","41.数学","42.物理","43.化学","44.天文","45.地学","46.生物","47.植物","48.動物","49.医学"],
		["50.工学","51.土木","52.建築","53.機械","54.電気","55.船舶","56.金属","57.化学工業","58.製造興業","59.生活科学"],
		["60.産業","61.農業","62.園芸","63.蚕糸業","64.畜産・ペット","65.林業","66.水産業","67.商業","68.交通","69.通信"],
		["70.芸術・芸能","71.彫刻","72.絵画・書道","73.版画","74.写真","75.工芸","76.音楽・舞踊","77.演劇・映画","78.スポーツ","79.娯楽"],
		["80.語学","81.日本語","82.アジアの言葉","83.英語","84.ドイツ語","85.フランス語","86.スペイン語","87.イタリア語","88.ロシア語","89.その他の言葉"],
		["90.文学","910.日本文学","911.詩歌","912.脚本","913.小説","914.エッセイ","915.日記・紀行","916.手記","918.作品集","92.東洋文学","93.西洋文学","E.絵本"]];

function createHttpRequest(){// XMLファイルを開くための関数
	if(window.ActiveXObject){
		try{
			return new ActiveXobject("Msxml2.XMLHTTP")
		}catch(e){
			try{
				return new ActiveXObject("Microsoft.XMLHTTP")
			}catch(e2){
				return null;
			}
		}
	}else if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}else{
		return null;
	}
}
function compareString(inputky,linetext){//検索キーをスペースで分解して、and検索を行い可否を返す
	if(inputky == ""){
		return false;
	}else{
		var s = inputky.replace(/　/g," ");
		var word = s.split(" ");
		var len = word.length;
		var ch=0;
		var ofs;
		for(var i = 0; i < len; i++){
			ofs = linetext.indexOf(word[i]);
			if(ofs == -1){
				return false;
			}
			ch ++;
		}
		if(ch == len){
			return true;
		}
		return false;
	}
}
function listEntries(booksInfo) {//本を表示するgba_searchのコールバック関数：表示先はidが[ISBN:+資料のISBN](ない時は出力しない)
  for (i in booksInfo) {
    // Create a DIV for each book
    var book = booksInfo[i];
    var thumbnailDiv = document.createElement("div");
    thumbnailDiv.className = "thumbnail";
    // Add a link to each books informtaion page
    var a = document.createElement("a");
    a.href = book.info_url;
    a.setAttribute("target","_blank");
  	if(imgflg=="true"){	//表紙画像表示フラグがtrueの時
    	var img = document.createElement("img");
    	img.src = book.thumbnail_url; 
    	img.setAttribute("border","0");
    	a.appendChild(img);
  	}
    var p = document.createElement("p");
    if(book.preview != "noview"&&imgflg=="false"){
    	p.style.paddingTop="0.5em";
    	p.style.paddingBottom="0.5em";
    	p.innerHTML ="preview<br>byGoogle";
    	var anc_class="preview";
    }else if(book.preview == "noview"&&imgflg=="false"){
        p.style.paddingTop="0.5em";
    	p.style.paddingBottom="0.5em";
    	p.innerHTML =" 概要有<br>byGoogle";
    	var anc_class="noview";
    }else if(book.preview != "noview"&&imgflg=="true"){
    	p.innerHTML ="byGoogle";
    	var anc_class="preview";
    }else{
    	p.innerHTML ="byGoogle";
    	var anc_class="noview";
    }
    p.style.margin = "0"; 
    a.appendChild(p); 
    a.className=anc_class;
    thumbnailDiv.appendChild(a);
	var divisbn = document.getElementById('ISBN:'+ book.bib_key);
	if (divisbn){
		var thumb=divisbn.getElementsByTagName("div");
		for(var j=0;j<thumb.length;j++){
			if(thumb[j].getAttribute('className')=='thumbnail'){
				thumb[j].parentNode.removeChild(thumb[j]);
			}else if(thumb[j].getAttribute('class')=='thumbnail'){
				thumb[j].parentNode.removeChild(thumb[j]);
			}
			
		}
		divisbn.insertBefore(thumbnailDiv,divisbn.childNodes[0]);
	}
  }
}

function gba_search(isbn) {//ISBNを引数にして、idが[ISBN:+資料のISBN]のところに表示するための関数
  var scriptElement = document.createElement("script");
  scriptElement.setAttribute("id", "jsonScript");
  scriptElement.setAttribute("src","http://books.google.com/books?bibkeys=" + isbn + "&jscmd=viewapi&callback=listEntries");
  scriptElement.setAttribute("type", "text/javascript");
  // make the request to Google booksearch
  document.documentElement.firstChild.appendChild(scriptElement);
}
function dispLst(div,bestZ,age){//書誌情報表示関数
	var desc="";
	var lidiv = document.createElement("div");
	var thumb = document.createElement("div");
	thumb.className="thumbnail";
    var p = document.createElement("p");
	p.innerHTML ="該当無<br>　";
	p.style.margin = "0";
   	p.style.paddingTop="0.5em";
    p.style.paddingBottom="0.5em";
	thumb.style.width="3.8em";
	thumb.appendChild(p);
	lidiv.appendChild(thumb);
	var link = document.createElement("a");
	link.setAttribute("target","_blank");
	link.innerHTML='<img src=\"opac.gif\" border=\"0\" style=\"height:1em;\" alt="OPACで検索">';
	link.setAttribute('href',ancmat+bestZ[7]);
	var isbn=bestZ[6];
	var desc="";
	if(age==-1){	//リンクを作らない
		if(bestZ[1]){
			desc +='分類:'+bestZ[1]+'　';
		}
		if(bestZ[3]){
			desc +='/著者:'+bestZ[3]+'　';
		}
		if(bestZ[4]){
			desc +='<br>　出版:'+bestZ[4]+'　';
		}
		if(bestZ[5]){
			desc +='/刊年:'+bestZ[5];	
		}
	}else{
		if(bestZ[1]){
			desc +='分類:<a href="#" onClick="mkList('+age+',\'ndc\',\''+bestZ[1]+'\')">'+bestZ[1]+'</a>　';
		}
		if(bestZ[3]){
			var autUrl=encodeURI(bestZ[3]);
			desc +='/著者:<a href="#" onClick="mkList('+age+',\'aut\',\''+bestZ[3]+'\')">'+bestZ[3]+'</a> <a href=\"'+anclistbef+autUrl+anclistaft+'\" target=\"_blank\"><img src=\"opac.gif\" border=\"0\" style=\"height:1em;\" alt="OPACで検索"></a>';
		}
		if(bestZ[4]){
			desc +='<br>　出版:<a href="#" onClick="mkList('+age+',\'pub\',\''+bestZ[4]+'\')">'+bestZ[4]+'</a>　';
		}
		if(bestZ[5]){
			desc +='/刊年:<a href="#" onClick="mkList('+age+',\'yar\',\''+bestZ[5]+'\')">'+bestZ[5];	
		}
	}
	desc +='<br>';
	lidiv.appendChild(link);
	if(bestZ[0]>0){
		lidiv.innerHTML += '<b>' + bestZ[2] + '</b>';
		if(contName){
			lidiv.innerHTML +=contName + bestZ[0]+'件<br>　' + desc;
		}else{
			lidiv.innerHTML +='　貸出数:'+bestZ[0]+'件<br>　' + desc;
		}
	}else{
		lidiv.innerHTML += '<b>' + bestZ[2] +'</b><br>'+desc;
	}
	if(isbn){
		isbn = isbn.replace(/^\s+|\s+$/g, "");
		lidiv.setAttribute('id','ISBN:' + isbn);
	}
	document.getElementById(div).appendChild(lidiv);
	if(isbn){
		gba_search(isbn);
	}
}

function refList(getArr){	//レファレンスと新刊の表示
//	alert(refcsv.length);
 if(refcsv.length>=0||newfile){
	var div_n="reffer_list";
	var div=document.getElementById(div_n);
	var i=0; 
	var word="";
	div.innerHTML="";
	if(getArr["ndc"]){
		var ar_ndc=getArr["ndc"].split(".");
		var ndc=ar_ndc[0];
		word='分類:'+ar_ndc[0];
	}else if(getArr["pub"]){
		word = decodeURI(getArr["pub"]);
	}else if(getArr["aut"]){
		word = decodeURI(getArr["aut"]);
	}else if(getArr["yar"]){
		word = '刊年:'+getArr["yar"];
	}else if(getArr["s_word"]){
		word=getArr["s_word"];
	}else if(getArr["age"]=='1'){
		var ar_ndc = new Array();
		ar_ndc[0]='9'+'';
		word='分類:'+ar_ndc[0];
		getArr["ndc"]=ar_ndc[0];
		var ndc=ar_ndc[0];
	}
// 	alert(word);
	//ここからレファレンス表示
	if(refcsv.length>=0){
		var maxlng=refcsv.length;
		for (var j = 0; j < maxlng; j++) {
			var cells = refcsv[j];
			cells[1]=cells[1]+"";
			if(getArr["ndc"]){
 				if(ndc=="93" && cells[1] >= "930" && cells[1] <= "999"){
 					i++;
 					if(i==1){div.innerHTML="<h2>同分野の"+reflabel+"</h2>";}
					dispLst(div_n,cells,-1);
 				}else if(cells[1].indexOf(ndc)==0){
 					i++;
 					if(i==1){div.innerHTML="<h2>同分野の"+reflabel+"</h2>";}
					dispLst(div_n,cells,-1);
				}
			}else if(getArr["yar"]){
				if(cells[5]==getArr["yar"]){
					i++;
					if(i==1){div.innerHTML="<h2>"+word+"の"+reflabel+"</h2>";}
					dispLst(div_n,cells,-1);
				}
			}else if(word!=""){
				var line=cells.join();
 				if(compareString(word,line)){
					 i++;
 					if(i==1){div.innerHTML="<h2>"+word+"の"+reflabel+"</h2>";}
					dispLst(div_n,cells,-1);
				}
			}else{
				i++;
				if(i==1){div.innerHTML="<h2>"+reflabel+"</h2>";}
				dispLst(div_n,cells,-1);
			}
			
			if(i==reffMax){break;}
		}
	}
	if(i>0){div.innerHTML +='<div></div>';}
	//ここから新着ＲＳＳ表示
	if(newfile!=""){
		var refcnt=i;
  		var node = newxml.getElementsByTagName('item');
  		if(!node.length){
// 			alert(newfile+'を確認してください');
  		}else{
  			var l=0;
  			maxlng=node.length
			for(i=0; i<maxlng; i++){ //検索対象ノードを順番に表示
				var desc="";
				var lidiv = document.createElement("div");
				var thumb = document.createElement("div");
				thumb.className="thumbnail";
		    	var p = document.createElement("p");
				p.innerHTML ="該当無<br>　";
				p.style.margin = "0";
		    	p.style.paddingTop="0.5em";
		    	p.style.paddingBottom="0.5em";
				thumb.style.width="3.8em";
				thumb.appendChild(p);
				lidiv.appendChild(thumb);
				var link = document.createElement("a");
				link.setAttribute("target","_blank");
				var isbn="";
				for(var j=0; j<node[i].childNodes.length; j++){
					if(node[i].childNodes[j].hasChildNodes()){
						if(node[i].childNodes[j].nodeName=='title'){
							link.innerHTML='<img src=\"opac.gif\" border=\"0\" style=\"height:1em;\" alt=\"OPACで検索\">';
							var tit=node[i].childNodes[j].childNodes[0].nodeValue;
							link.appendChild(document.createTextNode(tit));
						}else if(node[i].childNodes[j].nodeName=='link'){
							link.setAttribute('href',node[i].childNodes[j].childNodes[0].nodeValue);
						}else if(node[i].childNodes[j].nodeName=='guid'){
							var isbn=node[i].childNodes[j].childNodes[0].nodeValue;
						}else if(node[i].childNodes[j].nodeName=='pubDate'){
							var pubd=node[i].childNodes[j].childNodes[0].nodeValue;
						}else if(node[i].childNodes[j].nodeName=='#text'){
							//	何もしない//
						}else{
							for(var k=0; k<node[i].childNodes[j].childNodes.length; k++){
								desc +=node[i].childNodes[j].childNodes[k].nodeValue+'<br>';
							}
						}
					}
				}
				if(getArr["s_word"]){
					if(compareString(getArr["s_word"],desc+tit)){
						lidiv.appendChild(link);
						lidiv.innerHTML += '<br>　' + desc.replace('/出版社','<br>　出版社');
						if(isbn){
							lidiv.setAttribute('id','ISBN:' + isbn);
						}
						l++;
						if(l==1){div.innerHTML +='<h2>新着資料 '+word+'</h2>';}
						div.appendChild(lidiv);
						if(isbn){gba_search(isbn);}
						if(l==newMax){break;}
					}
				}else if(desc.indexOf(word)>=0||word==""){
					lidiv.appendChild(link);
					lidiv.innerHTML += '<br>　' + desc.replace('/出版社','<br>　出版社');
					if(isbn){
						lidiv.setAttribute('id','ISBN:' + isbn);
					}
					l++;
					if(l==1){div.innerHTML +='<h2>新着資料 '+word+'</h2>';}
					div.appendChild(lidiv);
					if(isbn){gba_search(isbn);}
					if(l==newMax){break;}
				}
			}
		}
	}
	if(l==0&&refcnt==0){
		div.style.display = 'none';
	}else{
		div.style.display = 'block';
	}
 }
}
function s_subform(age){
	var frm = document.getElementById("s_form");
	mkList(age,'s_word',frm.elements[0].value);
}
function mkList(age,nam,val){
 var div='best_list';
 var l_div=document.getElementById('t_list');
 var getArr = new Array();
 getArr[nam] = val+"";
 getArr["age"] = age;
//画面の初期化
 document.getElementById(div).innerHTML="";
 l_div.innerHTML="";
 var jsonScript = document.getElementById("jsonScript");
 if (jsonScript) {
   jsonScript.parentNode.removeChild(jsonScript);
 }
//画面の初期化　ここまで
	l_div.innerHTML +='<form id="s_form" style="text-align:center;" onSubmit="s_subform(\''+age+'\')"><input type="text" size="15" name="s_word" value="キーワード検索"><input type="submit" value="検索"></form>';
//画面ボタン表示
 for(var i=0;i<filelist.length;i++){//文学年齢ボタン
 	if(typeof reffile == 'string'){
		if(i==age){
			l_div.innerHTML +='<a href="#" onClick="loadbestcsv('+i+')" class="selected" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}else{
			l_div.innerHTML +='<a href="#" onClick="loadbestcsv('+i+')" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}
	}else{
		if(i==age){
			l_div.innerHTML +='<a href="#" onClick="mkrefcsv(\''+reffile[i]+'\');loadbestcsv('+i+');" class="selected" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}else{
			l_div.innerHTML +='<a href="#" onClick="mkrefcsv(\''+reffile[i]+'\');loadbestcsv('+i+');" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}
	}
 }
 l_div.innerHTML +='<br clear="all"><hr>';
 if(filelist[age][2]=="F"){	//文学書のジャンル表示
  var nd_st=10;
  var nd_max=10;
  var janl=9;
 }else if(filelist[age][2]=="T"){	//年齢別（全部）のジャンル表示
  var nd_st=0;
  var nd_max=10;
 }else{		//実用（初期値）のジャンル表示
  var nd_st=0;
  var nd_max=9;
  var janl=-1;
 }

 if(getArr["ndc"]){
 	janl=getArr["ndc"].charAt(0);
 	if(janl=='E'){janl='9';}
 }
 for(i=nd_st;i<nd_max;i++){//ジャンルボタン表示
	if(janl==i){
		l_div.innerHTML +='<a href="#" onClick="mkList('+age+',\'ndc\',\''+i+'\')" class="selected" style=\"width:'+(ndlist[i][0].length+0.5)+'em;\">'+ndlist[i][0]+'</a>';
	}else{
		l_div.innerHTML +='<a href="#" onClick="mkList('+age+',\'ndc\',\''+i+'\')" style=\"width:'+(ndlist[i][0].length+0.5)+'em;\">'+ndlist[i][0]+'</a>';
	}
 }
 l_div.innerHTML +='<br clear="all">';
 if(janl>=0){	//サブジャンルボタン表示
 	for(i=0;i<ndlist[janl].length;i++){
 		var ndc= ndlist[janl][i].split(".");
 		if(getArr["ndc"]&&ndc[0]==getArr["ndc"].substr(0,2)){
 			l_div.innerHTML +='<a href="#" onClick="mkList('+age+',\'ndc\',\''+ndc[0]+'\')" class="selected" style=\"width:'+(ndlist[janl][i].length+0.5)+'em;\">'+ndlist[janl][i]+'</a>';
	 	}else{
	 		l_div.innerHTML +='<a href="#" onClick="mkList('+age+',\'ndc\',\''+ndc[0]+'\')" style=\"width:'+(ndlist[janl][i].length+0.5)+'em;\">'+ndlist[janl][i]+'</a>';
	 	}
	 }
 }
 //ボタン表示ここまで

 var i=0; //ヒット件数を初期化
 var mxlng=bestcsv.length;
 for (var j = 0; j < mxlng; j++) {
 	var cells=bestcsv[j];
 	cells[1]=cells[1]+"";
  	if(getArr["ndc"]){	//引数が分類番号(ndc)の時は前方一致
 		if(getArr["ndc"]=="93" && cells[1] >= "930" && cells[1] <= "999"){
 			i++;
			dispLst(div,cells,age);
		}else if(cells[1].indexOf(getArr["ndc"])==0){
 			i++;
			dispLst(div,cells,age);
		}
 	}else if(getArr["aut"]){	//引数が責任表示(aut)は完全一致
 		if(cells[3]==getArr["aut"]){
 			i++;
			dispLst(div,cells,age);
		}
  	}else if(getArr["pub"]){	//引数が責任表示(pub)は完全一致
 		if(cells[4]==getArr["pub"]){
 			i++;
			dispLst(div,cells,age);
		}
 	}else if(getArr["yar"]){	//引数が刊年の時はそのまま完全一致
 		if(cells[5]==getArr["yar"]){
 			i++;
			dispLst(div,cells,age);
		}
 	}else if(getArr["s_word"]){
 		var line=cells.join();
 		if(compareString(getArr["s_word"],line)){
 			i++;
			dispLst(div,cells,age);
 		}
	}else{
 		i++;
		dispLst(div,cells,age);
 	}
  	if(i==listMax){break;}
 }
 //csv->配列処理ここまで
 document.getElementById(div).innerHTML +='<div></div>';
 refList(getArr);
}

function loadbestcsv(age){
	bestcsv = new Array();
	var filename=filelist[age][0];
	var httpobj = createHttpRequest(); //検索対象のファイルを開く
	sendArr=new Array;
    httpobj.open("GET",filename,false);
    httpobj.send(null);
    var csvdoc = httpobj.responseText;
  	var lines = csvdoc.split('\n');
  	var mxlng=lines.length;
  	for (var j = 0; j < mxlng; j++) {
  		lines[j]=lines[j].replace(/"/g,'');
    	var cells = lines[j].split(",");
  		bestcsv.push(cells);
	}
	mkList(age,"none","null");
}
function mkrefcsv(filename){
//	alert(filename);
	refcsv = new Array();
	var httpobj = createHttpRequest(); //検索対象のファイルを開く
    httpobj.open("GET",filename,false);
    httpobj.send(null);
    var csvdoc = httpobj.responseText;
  	var lines = csvdoc.split('\n');
  	var mxlgn=lines.length
  	for (var j = 0; j < mxlgn; j++) {
  		lines[j]=lines[j].replace(/"/g,'');
    	var cells = lines[j].split(",");
  		refcsv.push(cells);
	}
}
function loadcsv(){	//onload関数
 	var l_div=document.getElementById('t_list');
	if(typeof reffile == 'string'){
		mkrefcsv(reffile);
	}
	if(newfile!=""){
		var httpobj = createHttpRequest(); //検索対象のファイルを開く
		httpobj.open("GET",newfile,false);
  		httpobj.send(null);
  		newxml = httpobj.responseXML;
  		if (typeof(newxml.normalize) != "undefined") {
			 newxml.normalize();
//			alert('normalize');
		}
	}
	for(var i=0;i<filelist.length;i++){//文学年齢ボタン
		if(typeof reffile == 'string'){
			l_div.innerHTML +='<a href="#" onClick="loadbestcsv('+i+')" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}else{
			l_div.innerHTML +='<a href="#" onClick="mkrefcsv(\''+reffile[i]+'\');loadbestcsv('+i+');" style=\"width:'+(filelist[i][1].length+0.5)+'em;\">'+filelist[i][1]+'</a>';
		}
	}
}
window.onload = function(){loadcsv()}

