﻿function retrieveGET() {	//getメソッドの内容を配列に格納する関数
 var getArr = new Array();
 var query = window.location.search.substring(1);
 var parms = query.split('&');
 for (var i=0; i<parms.length; i++) {
  var pos = parms[i].indexOf('=');
  if (pos > 0) {
   var key = parms[i].substring(0,pos);
   var val = parms[i].substring(pos+1);
   getArr[key] = val;
  }
 }
 return getArr;
}
function pupin(idname){	//説明文を表示
 	var obj=document.getElementById(idname);
 	obj.style.display = "block";
}
function pupout(idname){	//説明文を非表示
 	var obj=document.getElementById(idname);
 	obj.style.display = "none";
}
function setcss(){
	var cssElement = document.createElement("link");
	cssElement.setAttribute("rel", "stylesheet");
	cssElement.setAttribute("type", "text/css");
	cssElement.setAttribute("href", "homepage/decopac/decopac.css");
	document.documentElement.firstChild.appendChild(cssElement);
}
function addAnc(word,mode){	//リンクをweb-OPAC+モードへ書き換え
	var anc=document.getElementsByTagName('a');
	var len = anc.length;
	for(var i=0; i<len ; i++){
		var hre=anc[i].href;
		if(hre.indexOf('OPP1500')>=0&&hre.indexOf('WORD')==-1){
			if(hre.indexOf('?')>=0){
				hre +='&WORD='+word+'&DECOPAC='+mode;
			}else{
				hre +='?WORD='+word+'&DECOPAC='+mode;
			}
			anc[i].href=hre;
		}else if(hre.indexOf('OPP1400')>=0&&hre.indexOf('WORD')==-1){
			if(hre.indexOf('?')>=0){
				hre +='&WORD='+word+'&DECOPAC='+mode;
			}else{
				hre +='?WORD='+word+'&DECOPAC='+mode;
			}
			anc[i].href=hre;
		}
	}
}

function addForm(word,mode){		//フォームをweb-OPAC+モードへ書き換え
	var frm=document.getElementsByTagName('form');
	var len = frm.length;
	for(var i=0; i<len ; i++){
		var act=frm[i].action;
		if(act.indexOf('OPP9000')>=0&&act.indexOf('WORD')==-1){
			if(act.indexOf('OPP9000?')>=0){
				act +='&WORD='+word+'&DECOPAC='+mode;
			}else{
				act +='?WORD='+word+'&DECOPAC='+mode;
			}
			frm[i].action=act;
		}else if(act.indexOf('OPP1400')>=0&&act.indexOf('WORD')==-1){
			if(act.indexOf('OPP1400?')>=0){
				act +='&WORD='+word+'&DECOPAC='+mode;
			}else{
				act +='?WORD='+word+'&DECOPAC='+mode;
			}
			frm[i].action=act;
		}
	}
}

function so_ibs(divid){		//｢想-IMAGINE Book Search｣＆千葉県横断検索へのボタン表示
 var getArr=retrieveGET();
 if(getArr["WORD"]&&getArr["DECOPAC"]){
    if(getArr["P_WORD"]){
    	getArr["WORD"]=getArr["P_WORD"];//Web-OPACと違う検索語を使いたい場合には、P_WORDでPLUS用検索語を指示
    }
 	setcss();
 	addAnc(getArr["WORD"],getArr["DECOPAC"]);
 	addForm(getArr["WORD"],getArr["DECOPAC"]);
	var div = document.getElementById(divid);
 	var word = decodeURI(getArr["WORD"]);
 	word = word.replace(/　/g," ");
	var cill_w = word.split(" ");
	div.innerHTML ='<h2>外部サイトで['+word+']を検索</h2>';
	div.innerHTML +='*このページはjavascriptを使用しています。　　　<a href="#" onClick="pupin('+"'"+'sohelp'+"'"+')">使い方</a><br>';
	div.innerHTML +='<div id="sohelp"><b>Web-OPAC+について</b><br> Web-OPAC+は当図書館蔵書以外の情報を外部サイトによって提供するものです。<br>外部サイトの利用は、各サイトの指示に従って下さい。<br>外部サイトで得られた資料情報は、当図書館で提供をお約束するものではありませんが、<br>書名・出版社名などをメモして各館のカウンターまでお訊ね下さい。<br>可能な限り提供できるよう、ご協力いたします。<div style="text-align:center;"><a href="#" onClick="pupout('+"'"+'sohelp'+"'"+')">閉じる</a></div><br></div>';

	var soibs =  document.createElement("form");
	soibs.setAttribute('target','imagine');
	soibs.setAttribute('method','post');
	soibs.setAttribute('action','http://imagine.bookmap.info/imagine');
	soibs.innerHTML ='<input type="hidden" name="freetext" value="'+word+'">';
 	soibs.innerHTML +='<input type="submit" value="想-IMAGINE">';
 	soibs.innerHTML +='<br>連想検索で<br>広く本を探す';
 	div.appendChild(soibs);
 	
 	var priform =  document.createElement("form");
	priform.setAttribute('target','chibaill');
	priform.setAttribute('method','get');
	priform.setAttribute('action','http://www.library.pref.chiba.lg.jp/cgi-bin/ilisod/odplus.sh');
	priform.innerHTML='<input type="hidden" name="displayid" value="oudanmenu">';
 	priform.innerHTML+='<input type="hidden" name="command" value="oudantop">';
 	priform.innerHTML+='<input type="hidden" name="lang" value="japanese">';
 	priform.innerHTML+='<input type="hidden" name="U_CHARSET" value="utf-8">';
 	priform.innerHTML+='<input type="hidden" name="successtpl" value="od_oudanframe.html">';
 	priform.innerHTML+='<input type="hidden" name="errortpl" value="od_error.html">';
 	priform.innerHTML+='<input type="hidden" name="p_mode" value="4">';
 	priform.innerHTML+='<input type="hidden" name="g_mode" value="0">';
 	if(cill_w[0]){priform.innerHTML+='<input type="hidden" name="title1" value="'+cill_w[0]+'">';}
 	if(cill_w[1]){priform.innerHTML+='<input type="hidden" name="title2" value="'+cill_w[1]+'">';}
 	if(cill_w[2]){priform.innerHTML+='<input type="hidden" name="title3" value="'+cill_w[2]+'">';}
 	priform.innerHTML+='<input type="submit" value="横断検索(タイトル)">';
 	priform.innerHTML+='<br>県内の図書館<br>から本を探す';
 	div.appendChild(priform);
 	
 	var ndlnavi =  document.createElement("form");
 	ndlnavi.innerHTML='<input type="button" value="リサーチ・ナビ" onClick="window.open('+"'"+'http://rnavi.ndl.go.jp/ln-search/#'+word+"'"+','+"'"+'ndlnavi'+"'"+')">';
 	ndlnavi.innerHTML+='<br>国立国会図書館<br>で調べる';
 	div.appendChild(ndlnavi);
	
	var porta = document.createElement("form");
	var tmp = navigator.userAgent;
	if(tmp.indexOf ( "MSIE" ) != -1 || tmp.indexOf ( "Firefox" ) != -1){//ブラウザ毎にリンクを分ける
		porta.innerHTML ='<input type="button" value="Porta" onClick="window.open('+"'"+'http://porta.ndl.go.jp/cgi-bin/openurl.cgi?any='+getArr["WORD"]+"'"+')">';
	}else{
		porta.innerHTML ='<input type="button" value="Porta" onClick="window.open('+"'"+'http://porta.ndl.go.jp/servicedp/openurl?any='+getArr["WORD"]+"'"+')">';
	}
	porta.innerHTML +='<br>デジタルアーカイブ<br>を調べる';
	div.appendChild(porta);
	
 	var br=document.createElement("br")
 	div.appendChild(br);
 	if(getArr["DECOPAC"]=='news'&&window.location.pathname.indexOf('OPP1400')>=0){
 		addfrm(getArr["WORD"],getArr["DECOPAC"]);
 	}
 }
 ex_bib();	//書誌拡張
}


function addfrm(word,mode){	//web-OPAC+なんとか用にＩフレームを追加
 if(document.getElementById('plusframe')){
 	document.documentElement.removeChild(document.getElementById('plusframe'));
 }
 var d = document.createElement('div');
 d.innerHTML='<div style="border-left:0.3em solid #639; border-right:0.3em solid #639;margin-bottom:0.1em; text-align:center;"> <b>外部サイトの情報</b>　　　　　<a href="#" onClick="chgfrm('+"'"+mode+"','on')"+'"><small>閉じる</small>×</a></div>';
 d .setAttribute('id', 'plusframe');
 d.innerHTML +='<iframe src="homepage/decopac/plus.html?WORD='+word+'" frameborder="0"></iframe>';
 document.documentElement.lastChild.appendChild(d);
}
function chgfrm(frommode,tomode){	//閉じるを押された際Ｉフレームを消去し、各リンクをweb-OPAC+なんとかへ変更
	if(tomode='on'){
		var ifrm=document.getElementById('plusframe');
		ifrm.parentNode.removeChild(ifrm);
	}
	chgAnc(frommode,tomode);
	chgForm(frommode,tomode);
}
function chgAnc(from,to){	//リンクのweb-OPAC+モードを切換え
	var anc=document.getElementsByTagName('a');
	var len = anc.length;
	for(var i=0; i<len ; i++){
		var hre=anc[i].href;
		if(hre.indexOf('DECOPAC='+from)>=0){anc[i].href=hre.replace('DECOPAC='+from,'DECOPAC='+to);}
	}
}
function chgForm(from,to){	//formのweb-OPAC+モードを切換え
	var frm=document.getElementsByTagName('form');
	var len = frm.length;
	for(var i=0; i<len ; i++){
		var act=frm[i].action;
		if(act.indexOf('DECOPAC='+from)>=0){frm[i].action=act.replace('DECOPAC='+from,'DECOPAC='+to);}
	}
}
function ISBN13to10( isbn13 ){	//isbn13で与えられた文字列をISBNを10桁へ修正（10桁の場合はそのまま）
	isbn13=isbn13.replace(/(^\s+)|(\s+$)/g, "");
	isbn13 = isbn13.replace(/\r\n/g,'');
	isbn13 = isbn13.replace(/(\n|\r)/g, '');
    var base = isbn13.toString().split("-").join("");
	if(base.length==13){
		base=base.slice(3,-1);
	    var digit = 0;
	    for(var i=0; i<base .length; i++){
	        digit += Number(base.charAt(i)) * (10-i);
	    }
	    digit %= 11;
	    digit = 11-digit;
	    if(digit == 10){
	    	digit='X';
	    }else if(digit == 11){
	    	digit='0';
	    }
	    return base + digit.toString();
	}else if(base.length==10){
		return base;
	}else{
		return '0';
	}
}
function trimStr(word){
	word = word.replace(/(^\s+)|(\s+$)/g, "");
	word = word.replace(/\r\n/g,'');
	word = word.replace(/(\n|\r)/g, '');
	return word;
}

function ex_bib(){	//書誌拡張（書誌詳細画面でのみ動く
 if(window.location.pathname.indexOf('OPP1500')>=0){
 	var tr=document.getElementsByTagName('tr');
 	var lng=tr.length;
 	var label="";
 	for(var i=0; i<lng; i++){
 		var td=tr[i].getElementsByTagName('td');
 		if(td[0].getAttribute('bgcolor')=='#999999'){
 			if(td[0].innerHTML.indexOf('&nbsp;&nbsp;&nbsp;')>=0&&label.indexOf('タイトル')<0){
 				td[0].innerHTML=label;
 			}
 			if(td[0].innerHTML.indexOf('タイトル')>=0){
 				var tit=td[1];
 			}else if(td[0].innerHTML.indexOf('ＩＳＢＮ')>=0){
 				var isbn = td[1].innerHTML.replace(/<\/?[^>]+>/gi, "");
 				isbn = ISBN13to10(isbn);
 				if(isbn !='0'){
 					tit.innerHTML += '<br>　<small><a href="http://calil.jp/book/'+isbn+'" target="_calil">図書館検索サイト「カーリル」で確認</a>（外部サイト)</small>';
 				}
 			}else if(td[0].innerHTML.indexOf('分類番号')>=0){
 				var bunrui = td[1].innerHTML.replace(/<\/?[^>]+>/gi, "");
				bunrui = trimStr(bunrui);
 				bubrui=encodeURI(bunrui);
 				td[1].innerHTML +=' <a href="OPP1400?WORD='+bunrui+'&TERM=INDEX-5&SP_SEARCH=1&MENUNO=0&LISTCNT=20&ORDER=DESC&ORDER_ITEM=SORT4-F">≪このジャンルで検索≫</a>';
 			}else if(td[0].innerHTML.indexOf('叢書名')>=0){
 				var sosyo = td[1].innerHTML.replace(/<\/?[^>]+>/gi, "");
 				sosyo = trimStr(sosyo);
 				sosyo = encodeURI(sosyo);
 				td[1].innerHTML +=' <a href="OPP1400?WORD='+sosyo+'&TERM=INDEX-0&SP_SEARCH=1&MENUNO=0&LISTCNT=20&ORDER=DESC&ORDER_ITEM=SORT4-F&DECOPAC=on">≪この叢書で検索≫</a>';
 			}else if(td[0].innerHTML.indexOf('件名')>=0){
 				var kenmei = td[1].innerHTML.replace(/<\/?[^>]+>/gi, "");
 				kenmei = kenmei.replace("－", "　");
 				kenmei = trimStr(kenmei);
 				kenmei =encodeURI(kenmei);
 				td[1].innerHTML +=' <a href="OPP1400?WORD='+kenmei+'&TERM=INDEX-4&SP_SEARCH=1&MENUNO=0&LISTCNT=20&ORDER=DESC&ORDER_ITEM=SORT4-F&DECOPAC=on">≪この件名で検索≫</a>';
 			}
 			if(td[2]){
 				if(td[2].innerHTML.indexOf('興風')>=0){
 					td[2].innerHTML ='<a href="homepage/info/libkou.html">'+td[2].innerHTML+'</a>';
 				}else if(td[2].innerHTML.indexOf('南')>=0){
 					td[2].innerHTML ='<a href="homepage/info/libmina.html">'+td[2].innerHTML+'</a>';
				}else if(td[2].innerHTML.indexOf('北')>=0){
 					td[2].innerHTML ='<a href="homepage/info/libkita.html">'+td[2].innerHTML+'</a>';
 				}else if(td[2].innerHTML.indexOf('関宿')>=0){
 					td[2].innerHTML ='<a href="homepage/info/libseki.html">'+td[2].innerHTML+'</a>';
 				}
 			}
 			label=td[0].innerHTML;
 		}
 	}
 }
}
window.onload = function(){
	so_ibs('so_ibs');
}
