// オンライン書店メタ検索JavaScript集 ver0.10/改
// 制作：松本 要

// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼設定項目▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼設定項目▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

// デフォルトで検索に使う書店
var default_store = 'ama';

// bk1ブリーダーID
var bk1aid = 'p-kalessin01125';

// AmazonアソシエイトID
var amazon_associate = 'kanamenokobey-22';

// 表示する書店のリスト
// 空白で区切る。セパレータは"|"。セパレータの前後にも空白。
var seacrh_store_list = new Array();

	// [0] 検索窓で使うリスト
	seacrh_store_list[0] = 
    	'ama | bk1 yb 7y bp raku kino ju ehon | pb papy | gg';

	// [1] 検索リンクバーで使うリスト（ISBNでない場合）
	seacrh_store_list[1] =
    	'ama | bk1 yb 7y bp raku kino ju ehon | gg';

	// [2] 検索リンクバーで使うリスト（ISBNの場合）
	seacrh_store_list[2] =
    	'ama | bk1 yb 7y bp raku kino ju ehon';

	// [3] 右クリックで使うリスト（ISBNでない場合）
	seacrh_store_list[3] =
    	'ama | bk1 yb 7y bp raku kino ju ehon | pb papy | gg';

	// [4] 右クリックで使うリスト（ISBNの場合）
	seacrh_store_list[4] =
		'ama | bk1 yb 7y bp raku kino ju ehon';

// 右クリックポップアップ機能を使う
var popup_enabled = true;

	// URLにISBNらしき文字列が含まれているリンクを勝手に右クリック対応にする
	var isbn_autolink_url  = true;
	
	// 内容にISBNらしき文字列が含まれているリンクを勝手に右クリック対応にする
	var isbn_autolink_cts  = false;


// デバッグモード
var test_mode = false;

// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲設定項目▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
// ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲設定項目▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲



var obs_newid   = 0;

var search_type = new Array();
	search_type[0] = 'キーワード';
	search_type[1] = '書籍名';
	search_type[2] = '著者名';
	search_type[3] = 'ISBN';
	search_type[4] = '出版社名';

var store_name = new Array();
	store_name[0] = new Array();
		store_name[0][ 0] = 'bk1';
		store_name[0][ 1] = 'ama';
		store_name[0][ 2] = 'asa';
		store_name[0][ 3] = 'ehon';
		store_name[0][ 4] = 'ju';
		store_name[0][ 5] = 'kino';
		store_name[0][ 6] = 'pb';
		store_name[0][ 7] = 'gg';
		store_name[0][ 8] = 'es';
		store_name[0][ 9] = 'papy';
		store_name[0][10] = 'raku';
		store_name[0][11] = 'yb';
		store_name[0][12] = 'wcp';
		store_name[0][13] = 'bmap';
		store_name[0][14] = 'bk1jp';
		store_name[0][15] = '7y';
		store_name[0][16] = 'bp';

	store_name[1] = new Array();
		store_name[1]['bk1' ] = 'オンライン書店 bk1';
		store_name[1]['ama' ] = 'Amazon.co.jp';
		store_name[1]['asa' ] = '旭屋書店 netdirect';
		store_name[1]['ehon'] = 'e-hon';
		store_name[1]['ju'  ] = 'ジュンク堂書店';
		store_name[1]['kino'] = '紀伊國屋 BOOK/WEB';
		store_name[1]['pb'  ] = '電子文庫パブリ';
		store_name[1]['gg'  ] = 'サーチエンジン Google';
		store_name[1]['es'  ] = 'eS!Books';
		store_name[1]['papy'] = '電子書店パピレス';
		store_name[1]['raku'] = '楽天ブックス';
		store_name[1]['yb'  ] = 'Yahoo!ブックス';
		store_name[1]['wcp' ] = 'NII Webcat Plus';
		store_name[1]['bmap'] = 'blogmap';
		store_name[1]['bk1jp']= 'bk1.jp';
		store_name[1]['7y']   = 'セブンアンドワイ';
		store_name[1]['bp']   = 'オンライン書店 boople.com';

	store_name[2] = new Array();
		store_name[2]['bk1' ] = 'bk1';
		store_name[2]['ama' ] = 'Amazon';
		store_name[2]['asa' ] = '旭屋書店';
		store_name[2]['ehon'] = 'e-hon';
		store_name[2]['ju'  ] = 'ジュンク';
		store_name[2]['kino'] = '紀伊國屋';
		store_name[2]['pb'  ] = 'パブリ';
		store_name[2]['gg'  ] = 'Google';
		store_name[2]['es'  ] = 'eS!Books';
		store_name[2]['papy'] = 'パピレス';
		store_name[2]['raku'] = '楽天';
		store_name[2]['yb'  ] = 'Yahoo!';
		store_name[2]['wcp' ] = 'Webcat+';
		store_name[2]['bmap'] = 'blogmap';
		store_name[2]['bk1jp']= 'bk1.jp';
		store_name[2]['7y']   = '7&Y';
		store_name[2]['bp']   = 'boople';

	store_name[3] = new Array();
		store_name[3]['bk1' ] = 'bk';
		store_name[3]['ama' ] = 'Az';
		store_name[3]['asa' ] = '旭';
		store_name[3]['ehon'] = 'eh';
		store_name[3]['ju'  ] = '淳';
		store_name[3]['kino'] = '紀';
		store_name[3]['pb'  ] = 'pb';
		store_name[3]['gg'  ] = 'Gg';
		store_name[3]['es'  ] = 'eS';
		store_name[3]['papy'] = 'pp';
		store_name[3]['raku'] = '楽';
		store_name[3]['yb'  ] = 'Ya';
		store_name[3]['wcp' ] = 'wp';
		store_name[3]['bmap'] = 'bm';
		store_name[3]['bk1jp']= 'bj';
		store_name[3]['7y']   = '7y';
		store_name[3]['bp']   = 'bp';

	store_name[4] = new Array();
		store_name[4]['bk1' ] = 'http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=2512206&pid=877458113&vc_url=http://www.bk1.jp/?partnerid=02vc01';
		if (amazon_associate!='') {
			store_name[4]['ama' ] = 'http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&location=http%3A%2F%2Fwww.amazon.co.jp%2F&tag='+ amazon_associate +'&linkCode=ur2&camp=247&creative=1211';
		} else {
			store_name[4]['ama' ] = 'http://www.amazon.co.jp/';
		}
		store_name[4]['asa' ] = 'http://www.netdirect.co.jp/';
		store_name[4]['ehon'] = 'http://www.e-hon.ne.jp/';
		store_name[4]['ju'  ] = 'http://www.junkudo.co.jp';
		store_name[4]['kino'] = 'http://bookweb.kinokuniya.co.jp';
		store_name[4]['pb'  ] = 'http://www.paburi.com/paburi/Default.asp';
		store_name[4]['gg'  ] = 'http://www.google.com';
		store_name[4]['es'  ] = 'http://www.esbooks.co.jp';
		store_name[4]['papy'] = 'http://www.papy.co.jp/';
		store_name[4]['raku'] = 'http://books.rakuten.co.jp/';
		store_name[4]['yb'  ] = 'http://books.yahoo.co.jp/';
		store_name[4]['wcp' ] = 'http://webcatplus.nii.ac.jp/';
		store_name[4]['bmap'] = 'http://bm.ishinao.net/';
		store_name[4]['bk1jp']= 'http://www.bk1.jp/';
		store_name[4]['7y']   = 'http://www.7andy.jp/';
		store_name[4]['bp']   = 'http://www.boople.com/';

function obs_pageinit() {
	doc = window.document;
	if (doc.all==null) {return false} 
		else if (doc.all.obsmetasrchkywd!=null) {return false}
	doc.open();
	// ポップアップ用スタイルシート
	if (popup_enabled) {
		doc.writeln('<link rel="stylesheet" href="'+obs_path()+'ppmnu.css" type="text/css" />');
		doc.writeln('<style>');	
		doc.writeln('body { behavior : url('+obs_path()+'ppmnu.htc) }');	
		doc.writeln('span.obslinkbar {behavior:url('+obs_path()+'obslnbar.htc)}');
		doc.writeln('span.obsautolink{behavior:url('+obs_path()+'obsalink.htc)}');
		doc.writeln('</style>');	
	}
	
	// データ中継用隠しフィールドを作る
	doc.writeln('<input type="hidden" id="obsmetasrchkywd"   value="" />');
	doc.writeln('<input type="hidden" id="obsmetasrchstore"  value="" />');
	doc.writeln('<input type="hidden" id="obsmetasrchtype"   value="" />');
	doc.writeln('<input type="hidden" id="obsmetasrchbk1aid" value="" />');
	doc.writeln('<input type="hidden" id="obsmetasrchamazon" value="" />');
	// ポップアップメニュー用隠しブロックを作る
	doc.writeln('<div id="hiddenpopupmenu" style="visibility:hidden;">');
	doc.writeln('<span></span>');
	doc.writeln('</div>');
	doc.close();
	doc.all.obsmetasrchbk1aid.value = bk1aid;
	doc.all.obsmetasrchamazon.value = amazon_associate;
}
// 初期化実行
obs_pageinit();

// 書店コードから書店名取得
function obs_get_storename(code,stp) {
	str = '';
	lv  = eval(stp);
	str = store_name[lv][code];
	if (str!=null) {
		return str;
	} else {
		return '';
	}
}

// 書店コードが存在するか確認
function obs_code_exists(code) {
	flg = false;
	for (var i=0; i<store_name[0].length; i++) {
		if (store_name[0][i]==code) {
			flg = true;
		}
	}
	return flg;
}


// このファイルがある場所を適当に取得
function obs_path() {
	doc  = window.document;
	path = '';
	for (var i=0; i < doc.all.length; i++) {
		elm = doc.all[i];
		if (elm.tagName.match(/script/i)) {
			if (elm.src.indexOf('obslib.js')!=-1) {
				path = elm.src.replace(/obslib\.js/,'');
				return path;
			}
		}
	}
}

// 検索関数（内部用）
function obs_metasrch_execute( mt_kywd, mt_type, mt_store ) {
	doc = window.document;
	// 検索語が空白の場合、書店のホームページを開く
	if ((mt_kywd=='')&&(obs_code_exists(mt_store))) {
		window.open(obs_get_storename(mt_store,4));
		return false;
	}
	// 検索語中の余計な文字を除去
	mt_kywd = mt_kywd.replace(/[「」『』〈〉《》【】<>‘’“”（）\(\)\[\]〔〕]/g,' ');
	mt_kywd = mt_kywd.replace(/(^[ ]+)|([ ]+$)/g,'');	
	// データ中継用隠しフィールドに値を入れる
	doc.all['obsmetasrchkywd' ].value = mt_kywd;
	doc.all['obsmetasrchstore'].value = mt_store;
	doc.all['obsmetasrchtype' ].value = mt_type;
	// 文字コードに応じた検索用ページを開く
	switch (mt_store) {
		case 'bk1'	: code = 'utf8';	break; // bk1
		case 'ama'	: code = 'utf8';	break; // Amazon
		case 'asa'	: code = 'sjis';	break; // 旭屋
		case 'ehon'	: code = 'sjis';	break; // e-hon
		case 'ju'		: code = 'sjis';	break; // ジュンク堂
		case 'kino'	: code = 'sjis';	break; // 紀伊國屋
		case 'pb'		: code = 'sjis';	break; // 電子文庫パブリ
		case 'gg'		: code = 'sjis';	break; // Google
		case 'es'		: code = 'euc' ;	break; // eS!Books
		case 'papy'	: code = 'euc' ;	break; // 電子書店パピレス
		case 'raku'	: code = 'euc' ;	break; // 楽天ブックス
		case 'yb'		: code = 'euc' ;	break; // Yahoo!ブックス
		case 'wcp'	: code = 'euc' ;	break; // NII Webcat Plus
		case 'bmap'	: code = 'euc' ;	break; // blogmap
		case 'bk1jp': code = 'euc' ;	break; // bk1jp
		case '7y'   : code = 'euc' ;	break; // セブンアンドワイ
		case 'bp'   : code = 'sjis';	break; // boople
		default     : code = '';	
	}
	if (test_mode) {
		alert('語句：'+mt_kywd+'\n種別：'+search_type[mt_type]+'\n書店：'+store_name[1][mt_store]);
	} else {
		switch (code) {
			case 'sjis'	: window.open( obs_path() + 'frm_sjis.htm'); break;
			case 'euc'	: window.open( obs_path() + 'frm_euc.htm' ); break;
			case 'utf8'	: window.open( obs_path() + 'frm_utf8.htm'); break;
		}
	}	
}

// アクティブ要素の内容テキストを取得
function obs_getactivetext() {
	str = window.document.activeElement.innerText;
	if (str==null) { str = '';}
	return str;
}

// キーワードにISBNが含まれるかどうか判定
function kywd_is_isbn( mt_kywd ) {
	if (mt_kywd.match(/(^|[^0-9])(978-[0-9]-[0-9][0-9-][0-9-][0-9-][0-9-][0-9-][0-9-][0-9-][0-9]-[0-9])([^0-9]|$)/)) {
		return true;
	} else if (mt_kywd.match(/(^|[^0-9])(978[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])([^0-9]|$)/)) {
		return true;
	} else if (mt_kywd.match(/(^|[^0-9])([0-9]-[0-9][0-9-][0-9-][0-9-][0-9-][0-9-][0-9-][0-9-][0-9]-[0-9Xx])([^0-9Xx]|$)/)) {
		return true;
	} else if (mt_kywd.match(/(^|[^0-9])([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9Xx])([^0-9Xx]|$)/)) {
		return true;
	} else {
		return false;
	}
}


// ISBNの検証
function isbnv(isbn0) {
	isbn0 = isbn0.replace(/-/g,'');
	if (isbn0.match(/([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9X])/)){
		var sum = 0;
		for (var i=0; i<9; i++ ) {
			sum += (10-i) * Number(isbn0.charAt(i));
		}
		if (isbn0.charAt(9)=='X') {
			checkdigit = 10;
		} else {
			checkdigit = Number(isbn0.charAt(9));
		}
		sum += checkdigit;
		if ((sum % 11)==0) {
			return true;
		}
	}
	return false;
}

// ISBNハイフン補完
function isbnh(isbn0) {
	if (isbn0.match(/([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9X])/)){
		isbn0 = RegExp.$1;
		var n = new Array();
		for (var i=0; i<10; i++ ) { n[i] = isbn0.charAt(i)}
		pub = Number(n[1])*10 + Number(n[2]);
		if ( pub<20 ) {  
			isbn=n[0]+'-'+n[1]+n[2]+'-'+n[3]+n[4]+n[5]+n[6]+n[7]+n[8]+'-'+n[9];
		} else 
		if ( pub<70 ) {
			isbn=n[0]+'-'+n[1]+n[2]+n[3]+'-'+n[4]+n[5]+n[6]+n[7]+n[8]+'-'+n[9];
		} else 
		if ( pub<85 ) {
			isbn=n[0]+'-'+n[1]+n[2]+n[3]+n[4]+'-'+n[5]+n[6]+n[7]+n[8]+'-'+n[9];
		} else 
		if ( pub<90 ) {
			isbn=n[0]+'-'+n[1]+n[2]+n[3]+n[4]+n[5]+'-'+n[6]+n[7]+n[8]+'-'+n[9];
		} else 
		if ( pub<95 ) {
			isbn=n[0]+'-'+n[1]+n[2]+n[3]+n[4]+n[5]+n[6]+'-'+n[7]+n[8]+'-'+n[9];
		}
		else {
			isbn=n[0]+'-'+n[1]+n[2]+n[3]+n[4]+n[5]+n[6]+n[8]+'-'+n[7]+'-'+n[9];
		}
		return isbn;
	} else {
		return isbn0;
	}
}



// 汎用検索関数
// 引数なしの場合：アクティブな要素の内容をデフォルト書店でキーワード検索
function obsms( mt_data1, mt_data2, mt_data3 ) {
	doc = window.document;
	mt_kywd  = '';
	mt_store = default_store;
	mt_type	 = '0';
	if (mt_data1 == null) {
		mt_kywd = obs_getactivetext();
		obs_metasrch_execute( mt_kywd, mt_type, mt_store );
	} else {
		if (mt_data2 == null) {
			obsms_1( mt_data1 );
		} else {
			if (mt_data3 == null) {
				obsms_2( mt_data1, mt_data2 );
			} else {
				obsms_3( mt_data1, mt_data2, mt_data3 )
			}
		}
	}
}

// 引数１個の場合 検索語句 or 書店コード or 検索種別
function obsms_1( mt_data1 ) {
	doc = window.document;
	mt_kywd  = '';
	mt_store = default_store;
	mt_type	 = '0';
	if (mt_data1.match(/^[01234]$/)) {
		mt_type = mt_data1;
		mt_kywd = obs_getactivetext();
	} else {
		if (obs_code_exists(mt_data1)) {
			mt_store = mt_data1;
			mt_kywd  = obs_getactivetext();
		} else {
			mt_kywd  = mt_data1;
		}
	}
	obs_metasrch_execute( mt_kywd, mt_type, mt_store );
}

// 引数２個の場合 検索語句 / 検索種別 / 書店コード 
function obsms_2( mt_data1, mt_data2 ) {
	doc = window.document;
	mt_kywd  = '';
	mt_store = default_store;
	mt_type	 = '0';
	if (obs_code_exists(mt_data2)) {
		mt_store = mt_data2;
		if (mt_data1.match(/^[01234]$/)) {
			mt_type  = mt_data1;
			mt_kywd  = obs_getactivetext();
		} else {
			mt_kywd  = mt_data1;
		}
	} else {
		mt_kywd  = mt_data1;
		mt_type  = mt_data2;
	}
	obs_metasrch_execute( mt_kywd, mt_type, mt_store );
}

// 引数３個の場合 検索語句 , 検索種別 , 書店コード
function obsms_3( mt_data1, mt_data2, mt_data3) {
	obs_metasrch_execute( mt_data1, mt_data2, mt_data3 );
}

// bk1検索式検索
function obs_bk1exp(mt_kywd) {
	window.document.all['obsmetasrchkywd' ].value = mt_kywd;
	window.document.all['obsmetasrchstore'].value = 'bk1exp';
	window.open( obs_path() + 'frm_sjis.htm')
}

// bk1bibid
function obs_bk1bibid(bibid) {
	newwin = window.open('http://www.bk1.co.jp/product/'+bibid+'/'+bk1aid+'/');
}


// ポップアップ無し検索
function obsms_n(mt_data1,mt_data2,mt_data3) {
	if (mt_data1 == null) {
		mt_kywd = obs_getactivetext();
	}	
	obsms(mt_data1,mt_data2,mt_data3)
}

// 検索窓の自動挿入

function obs_insert_srchbox(text_size,typelist,slc_type,insBR) {
	str = '';
	str = obs_generate_srchbox(text_size,typelist,slc_type,insBR);
	document.open();
	document.write(str);
	document.close;
}

// 検索窓オプション生成
function obs_generate_srchoptions(str,text_size,id_text,id_type) {
	if (text_size==null) { text_size = 48 }
	if (str==null) { str='' }
	str += '<input type="text" value="" size="'+ text_size +'" id="'+id_text+'"  style="width:198px" /> ';
	if (true) {
		str += '<select size="1" value="0" id="'+id_type+'">';
		str += '<option value="0">キーワード</option>';
		str += '<option value="1">書籍名</option>';
		str += '<option value="2">著者名</option>';
		str += '<option value="4">出版社名</option>';
		str += '<option value="3">ISBN</option>';
		str += '</select><br />';
	} else {
		str += '<input type="hidden" value="0" id="'+id_type+'" />';
	}
	return str;
}

// 検索窓ソース生成
function obs_generate_srchbox(text_size,typelist,slc_type,insBR) {
	str = '';
	if (insBR    ==null) { insBR     =  0 }
	id_text  = 'metasrchboxtext';  // obs_getnewid();
	id_type  = 'metasrchboxtype';  // obs_getnewid();
	id_store = 'metasrchboxstore'; // obs_getnewid();

	str += '<script language="javascript">';
	str += 'function '+ id_text +'submit() {';
	str += 'obsms(document.all.'+id_text+'.value,document.all.'+id_type+'.value,document.all.'+id_store+'.value);';
	str += 'return false';
	str += '}';
	str += '</script>';
	str += '<form action="" onsubmit="obsms(document.all.'+id_text+'.value,document.all.'+id_type+'.value,document.all.'+id_store+'.value);return false">';
	str += '<p class="formarea">';
	str += '<span id="kywdarea">';
	str =  obs_generate_srchoptions(str,text_size,id_text,id_type);
	str += '</span>';
	if (slc_type=='buttons') {
		str += '<input type="hidden" value="'+default_store+'" id="'+id_store+'" /> ';
		stlist = seacrh_store_list[0].split(' ');
		for (var i=0; i<stlist.length; i++) {
			if (obs_code_exists(stlist[i])) {
				if (stlist[i]=='ama') {
					str += '<input type="button" value="Amazon.co.jpで検索" style="width:198px; margin-top:2px; margin-bottom:2px" onclick="obsms(document.all.'+id_text+'.value,document.all.'+id_type+'.value,\''+stlist[i]+'\')" title="'+obs_get_storename(stlist[i],1)+'"/><br />';
				} else {
					str += '<input type="button" value="'+obs_get_storename(stlist[i],3)+'" style="width:22px" onclick="obsms(document.all.'+id_text+'.value,document.all.'+id_type+'.value,\''+stlist[i]+'\')" title="'+obs_get_storename(stlist[i],1)+'"/>';
				}
			} else {
				str += ' ';
			}
		}
		
		
	} else {
		if (obs_code_exists(slc_type)) {
			str += '<input type="hidden" value="'+slc_type+'" id="'+id_store+'" />'
			str += '<input type="button" value="'+obs_get_storename(slc_type,2)+'" onclick="'+id_text+'submit()" />';
		} else {
			stlist = seacrh_store_list[0].split(' ');
			str += '<select size="1" value="'+default_store+'" id="'+id_store+'">';
			for (var i=0; i<stlist.length; i++) {
				if (obs_code_exists(stlist[i])) {
					if (stlist[i]==default_store) {
						str += '<option value="'+stlist[i]+'" selected>'+obs_get_storename(stlist[i],2)+'</option>'
					} else {
						str += '<option value="'+stlist[i]+'">'+obs_get_storename(stlist[i],2)+'</option>'
					}
				} else {
					str += '<option value="">-</option>'
				}
			}
			str += '</select>';
			if ((insBR % 8)>3) { str += '<BR>'}
			if (slc_type==null) { slc_type = '検索'}
			str += '<input type="button" value="'+slc_type+'" onclick="'+id_text+'submit()" />';
		}
	}
	str += '</p></form>';
	return str;
}

function obs_getnewid() {
	newidstr = 'obsmslibid' + obs_newid;
	obs_newid++;
	return newidstr;
}

function obs_extractvalues(data) {
	data.match(/\(([^)]*)\)/);
	if (RegExp.$1.replace(/ /g,'')=='') {
		return null;
	} else {
		str = RegExp.$1.split(',');
		for (var i=0; i<str.length; i++) {
			str[i] = str[i].replace(/(^[ ]+)|([ ]+$)|['"]/g,'')
		}
		return str;
	}
}

function obs_oncontext() {
	var elm = event.srcElement;
	mt_kywd = '';
	mt_type = '0';

	if ((event.ctrlKey!=true)&&((elm.tagName=="IMG")||(elm.tagName=="img"))) {
		if ((elm.parentElement.tagName=="A")||(elm.parentElement.tagName=="a")){
			elm = elm.parentElement;
		}
	}

	if ((event.ctrlKey!=true)&&((elm.tagName=="A")||(elm.tagName=="a"))) {
		if (elm.parentElement.id == 'hiddenpopupmenu') {
			elm.click();
			return false;
		} else {
			url = ''+ConvertObsLink(elm);
			if (url.indexOf('javascript:obsms(')!=-1) {
				var srchitems = obs_extractvalues(url);
				if (srchitems==null) {
					mt_kywd = elm.innerText;
				} else {
					if (srchitems[0].match(/^[01234]$/)) {
						mt_type = srchitems[0];
						mt_kywd = elm.innerText;
					} else {
						if (obs_code_exists(srchitems[0])) {
							mt_kywd  = elm.innerText;
						} else {
							mt_kywd  = srchitems[0];
							if (mt_kywd.match(/(bibid=|accd=|BKID=|\/product\/)/)&&kywd_is_isbn(elm.innerText)) {
								mt_kywd += ';'+elm.innerText;
							} else if (mt_kywd.match(/^(auid=...............)$/)) {
								mt_kywd += ';'+elm.innerText.replace(/ |　|\n|\r|▽|〔著〕|原作|原案|著$/g,'');
							}
							if (srchitems[1]!=null) {
								if (srchitems[1].match(/^[01234]$/)) {
									mt_type = srchitems[1];
								}
							}
						}
					}
				}
				obs_popup(mt_kywd,mt_type);
				return false;
			} else if (url.indexOf('javascript:obsms_n')!=-1) {
				elm.click();
				return false;
			} else if (url.indexOf('javascript:obs_bk1exp')!=-1) {
				elm.click();
				return false;
			} else if ((url.indexOf("/main/")!=-1)&&(elm.className.indexOf('int')==-1)&&(url.indexOf("index.html")==-1)) {
				obs_popup(elm.innerText,'0',url);
				return false;
			}
		}
	} else {
		obs_hide();
	}
}

function obs_pageclicked() {
	obs_hide();
	window.status = '';
}

function obs_popup(mt_kywd,mt_type,orurl) {
	window.status = '通常の右クリックメニューは、Ctrl+右クリックで開きます。';
	obs_SetMenuItem(mt_kywd,mt_type,orurl);
	sty = window.document.all.hiddenpopupmenu.style;
	bdy = window.document.body;
	elm = window.document.documentElement
	px = elm.scrollLeft + event.x;
	py = elm.scrollTop  + event.y;
	wx = elm.clientWidth;
	wy = elm.clientHeight;
	if ((px + window.document.all.hiddenpopupmenu.clientWidth + 5)>wx) {
		px -= window.document.all.hiddenpopupmenu.clientWidth + 5;
	}
	if ((event.y + window.document.all.hiddenpopupmenu.clientHeight + 5) > wy) {
		py -= window.document.all.hiddenpopupmenu.clientHeight + 5 - (wy - event.y);
	}
	sty.top  = py;
	sty.left = px;
	sty.visibility = "visible";
	return false;
}

function obs_hide() {
	window.document.all.hiddenpopupmenu.style.visibility = "hidden";
	window.document.all.hiddenpopupmenu.style.top  = "0px";
	window.document.all.hiddenpopupmenu.style.left = "0px";
	window.document.all.hiddenpopupmenu.innerHTML  = '';
}

function obs_SetMenuItem(mt_kywd,mt_type,orurl) {
	var str = '<p>';

	if (orurl!=null) {
		if (orurl.indexOf('/main/')!=-1) {
//			str += '<a href="'+orurl+'" class="int">本棚と床とダンボール</a>';
			if (orurl.indexOf('#')!=-1) {
				mt_type = '1';
			} else {
				mt_type = '2';
			}
		} else {
//			str += '<a href="'+orurl+'">このリンク先を開く</a>';
		}
//		str += '<span class="hr"></span>';
	}

	str = AddItem(str,mt_kywd,mt_type);
	window.document.all.hiddenpopupmenu.innerHTML = str;
}

function AddItem(str,mt_kywd,mt_type) {
	if (kywd_is_isbn( mt_kywd )) {
		stlist = seacrh_store_list[4].split(' ');
	} else {
		stlist = seacrh_store_list[3].split(' ');
	}
	for (var i=0; i<stlist.length; i++) {
		if (obs_code_exists(stlist[i])) {
			str += '<a href="javascript:obsms_n(\''+mt_kywd+'\',\''+mt_type+'\',\''+stlist[i]+'\')">'+obs_get_storename(stlist[i],1)+'</a>';
		} if (stlist[i]=='|') {
			str += '<span class="hr"></span>';
		}
	}
	return str+'</p>';
}

// title属性書き換え
function obs_mousemove() {
	elm = event.srcElement;
	doc = window.docment;
	cur_store = obs_get_storename(default_store,1);
	linktitle = '';
	if (((elm.tagName=="a")||(elm.tagName=="A"))&&(elm.parentElement.id!='hiddenpopupmenu')){
		url = ConvertObsLink(elm);
		if (url.indexOf('javascript:obsms(')!=-1){
			var srchitems = obs_extractvalues(url);
			if (srchitems!=null) {
				for (var i=0; i<srchitems.length; i++) {
					if (obs_code_exists(srchitems[i])) {
						cur_store = obs_get_storename(srchitems[i],1);
					}
				}
			}
			linktitle = cur_store + 'で検索';
			if (url.indexOf('javascript:obsms(')!=-1){
				linktitle += '\n - 右クリックでメタ検索\n'
					           + ' - 通常のメニューはCtrl+右クリック';
			}
			elm.title =  linktitle;
		} else if ((url.indexOf("/main/")!=-1)&&(elm.className.indexOf('int')==-1)&&(url.indexOf("index.html")==-1)) {
			elm.title = '作品紹介\n'
					  + ' - 右クリックでオンライン書店メタ検索\n'
					  + ' - 通常のメニューはCtrl+右クリック';
		} else if (url.indexOf('javascript:obs_bk1exp(')!=-1){
			elm.title =  'オンライン書店 bk1で検索';
		}
	}

	if (((elm.tagName=="img")||(elm.tagName=="IMG"))&&((elm.parentElement.tagName=="a")||(elm.parentElement.tagName=="A"))) {
		elmp = elm.parentElement;
		url = ConvertObsLink(elmp);
		if (url.indexOf('javascript:obsms(')!=-1){
			elm.title = elm.alt + "\n"
			  + ' - 右クリックでオンライン書店メタ検索\n'
			  + ' - 通常のメニューはCtrl+右クリック';
		}
	}
}

function ConvertObsLink(elm) {
	str = '';
	url = elm.href;
	cln = elm.className;
	if ((url.indexOf('javascript')==-1)&&(cln.indexOf('obss')!=-1)&&((cln.indexOf('noextend')==-1))) {
		if (cln.indexOf('obss')!=-1) {
			mt_kywd  = '';
			mt_type  = '';
			mt_store = '';
			if (cln.indexOf('ky')!=-1)   { mt_type = '0' }
			if (cln.indexOf('ti')!=-1)   { mt_type = '1' }
			if (cln.indexOf('au')!=-1)   { mt_type = '2' }
			if (cln.indexOf('isbn')!=-1) {
				mt_type = '3';
				mt_kywd = url;
			}
			if (cln.indexOf('pb')!=-1)   { mt_type = '4' }
			if (cln.indexOf('bk1')!=-1)  { mt_store = 'bk1'}
			if (cln.indexOf('ama')!=-1)  { mt_store = 'ama'}
			if (cln.indexOf('asa')!=-1)  { mt_store = 'asa'}
			if (cln.indexOf('es')!=-1)   { mt_store = 'es' }
			if (cln.indexOf('raku')!=-1) { mt_store = 'raku'}
// 			if (url.indexOf('http://www.bk1.co.jp/product/')!=-1) { mt_kywd = elm.href }
			if (mt_kywd!='')  { str='\''+mt_kywd+'\'' }
			if (mt_type!='')  { if (str=='') {str='\''+mt_type+'\'' } else {str+=',\''+mt_type+'\'' }}
			if (mt_store!='') { if (str=='') {str='\''+mt_store+'\''} else {str+=',\''+mt_store+'\''}}
			str = 'javascript:obsms('+str+')';
		}
	} else {
		str = ''+url;
	}
	return str;
}
