//検索エンジンのアドレス、相対パスで書くこと
cgi = '../cgi-bin/libsearch.cgi';

//図書館リスト　[緯度, 経度, 名称, 識別ID, 分類（public/univ）]
library = [
	[34.675883, 135.805338, '奈良県', 'prefnara', 'public'],

	[34.696453, 135.708564, '生駒市', 'ikoma', 'public'],
	[34.600996, 135.694172, '三郷町', 'sango','public'],
	[34.594857, 135.706029, '王寺町', 'oji','public'],
	[34.596827, 135.738149, '斑鳩町', 'ikaruga','public'],
	[34.580324, 135.722617, '河合町', 'kawai','public'],
	[34.553073, 135.735874, '広陵町', 'koryo','public'],
	[34.516393, 135.740335, '大和高田市', 'yamatotakada','public'],
	[34.510885, 135.706845, '葛城市', 'katsuragi','public'],
	[34.463994, 135.739971, '御所市', 'gose','public'],
	[34.389623, 135.789655, '大淀町', 'oyodo','public'],
	[34.351496, 135.693166, '五條市', 'gojo','public'],

[34.679957, 135.831358, '奈良市', 'citynara', 'public'],
	[34.652050, 135.782361, '大和郡山市', 'yamatokoriyama', 'public'],
	[34.596347, 135.836476, '天理市', 'tenri','public'],
	[34.584418, 135.774975, '川西町', 'kawanishi','public'],
	[34.557364, 135.802382, '田原本町', 'tawaramoto','public'],
	[34.500422, 135.796409, '橿原市', 'kashihara','public'],
	[34.506285, 135.851750, '桜井市', 'sakurai','public'],
	[34.532161, 135.957433, '宇陀市', 'uda','public'],
//	[34.367128, 135.790656, '下市町', 'shimoichi','public'],
	[34.333697, 135.958498, '川上村', 'kawakami','public'],

	[34.732095, 135.732841,'奈良先端科技大','naist','univ'],
	[34.714278, 135.784484, '奈良大学', 'nara-u','univ'],
	[34.688043, 135.820903, '奈良県立大学', 'narapu','univ'],
	[34.687496, 135.827944,'奈良女子大学','nara-wu','univ'],
	[34.674531, 135.840950, '奈良教育大学', 'nara-edu','univ'],
	[34.686052, 135.722394,'帝塚山大学','tezukayama-u','univ'],
	[34.672118, 135.733227,'近畿大学農学部','nara-kindai','univ'],
	[34.594686, 135.846278, '天理大学','tenri-u','univ'],
	[34.595700, 135.679157, '奈良産業大学', 'nara-su','univ'],
	[34.546976, 135.722912, '畿央大学', 'kio','univ'],
	[34.503668, 135.793507, '奈良県立医大','naramed-u','univ'],
	[34.647219, 135.758462,'奈良工業高専','nara-k','univ'],
	[34.691689, 135.788127,'奈良文化財研究所','nabunken','univ']
];

//変数
zcb = 1000;

//検索結果のロード・表示
function display(url) {
	var req = GXmlHttp.create();
	req.open('GET', url);
	req.onreadystatechange = function() {
		if(req.readyState==4 && req.status==200) {
			document.getElementById('info').innerHTML = req.responseText;
		}
	}
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
	req.send('');
}

window.onunload = GUnload;
window.onload = function() {

//チェックボックスの表示
	for (var i = 0; i < library.length; i++){
		if(library[i][4] == 'public' && i <= 11){
			document.getElementById('public').getElementsByTagName('div')[0].innerHTML += ('<input type = "checkbox" id="' + library[i][3] + '" name="' + library[i][3] + '">' + library[i][2] + '<br>');
		} else if(library[i][4] == 'public' && i >= 12){
			document.getElementById('public').getElementsByTagName('div')[1].innerHTML += ('<input type = "checkbox" id="' + library[i][3] + '" name="' + library[i][3] + '">' + library[i][2] + '<br>');
		} else if(library[i][4] == 'univ'){
			document.getElementById('univ').getElementsByTagName('div')[0].innerHTML += ('<input type = "checkbox" id="' + library[i][3] + '" name=" '+ library[i][3] + '">' + library[i][2] + '<br>');
		}
	}

	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
		map.setCenter(new GLatLng(34.595, 135.679), 10);
		map.addControl(new GSmallMapControl()); 
//		map.enableScrollWheelZoom();
		
//オートズーム＆センタリング
		function map_center() {
			var center_x;
			var center_y;
			var x_max = 135.679;
			var x_min = 135.957;
			var y_max = 34.334;
			var y_min = 34.732;
			var center_m = 10;
			for(i = 0; i < library.length; i++){
				if (document.getElementById(library[i][3]).checked) {
					x_max = Math.max(x_max,library[i][1]);
					y_max = Math.max(y_max,library[i][0]);
					x_min = Math.min(x_min,library[i][1]);
					y_min = Math.min(y_min,library[i][0]);
					x = x_max - x_min;
					y = y_max - y_min;
					center_v = Math.max(x,y);
					for(center_m = 14; center_v > 0.03; center_m--){
						center_v /= 2;
					}
				}
			}
		
			center_x = (x_max + x_min)/2;
			center_y = (y_max + y_min)/2;
			map.setCenter(new GLatLng(center_y,center_x), center_m);
		}
		map_center();

//マーカー（アイコン）の初期化
		gm = new Array(library.length);
		for (var i = 0; i < library.length; i++){
			var icon = new GIcon();
			if(library[i][4] == "public"){
				icon.image = "public.gif";
			} else if(library[i][4] == "univ"){
				icon.image = "univ.gif";
			}
			icon.iconSize = new GSize(25,32);
			icon.iconAnchor = new GPoint(13,16);
			var loc = new GLatLng(library[i][0], library[i][1]);
			gm[i] = new GMarker(loc, icon);
		}
		
		function gmad() {
			for(var i = 0; i < library.length; i++){
				if (document.getElementById(library[i][3]).checked) {
					map.addOverlay(gm[i]);
				} else {
					map.removeOverlay(gm[i]);
				}
			}
		}

		//チェックボックス、テキストフィールドのクリア・全チェック
		document.getElementById('reset_public').onclick = function() { 
			for (var i = 0; i < library.length; i++) {
				if (library[i][4] == "public") {
					document.getElementById(library[i][3]).checked = false;
				}
			}
			document.getElementById('text').value = "";
			map_center();
			gmad();
			map.clearOverlays();
		}
		document.getElementById('reset_univ').onclick = function() { 
			for (var i = 0; i < library.length; i++) {
				if (library[i][4] == "univ") {
					document.getElementById(library[i][3]).checked = false;
				}
			}
			document.getElementById('text').value = "";
			map_center();
			gmad();
			map.clearOverlays();
		}
		document.getElementById('all_public').onclick = function() { 
			for (var i = 0; i < library.length; i++) {
				if (library[i][4] == "public") {
					document.getElementById(library[i][3]).checked = true;
				}
			}
			map_center();
			gmad();
			map.clearOverlays();
		}
		document.getElementById('all_univ').onclick = function() { 
			for (var i = 0; i < library.length; i++) {
				if (library[i][4] == "univ") {
					document.getElementById(library[i][3]).checked = true;
				}
			}
			map_center();
			gmad();
			map.clearOverlays();
		}

		document.getElementById('public').onclick = function(){
			map.clearOverlays();
			map_center(map);
			gmad();
		}
		document.getElementById('univ').onclick = function(){
			map.clearOverlays();
			map_center(map);
			gmad();
		}

//検索ワード送信＆結果受信
		function search(i) {
			var req = GXmlHttp.create();
			var query = cgi + '?lib=' + library[i][3] + '&q=' + encodeURI(document.getElementById('text').value);
			query += ('&time=' + (new Date).getTime()); //AJAXリクエストをキャッシュしないためのダミー
			req.open('GET', query);
			req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
			req.send('');
			req.onreadystatechange = function() {
					if(req.readyState==4) {
//デバッグ用出力
//alert(req.responseText);
//document.getElementById('info').innerHTML = req.responseText;
					var resxml = GXml.parse(req.responseText);
					if(resxml.getElementsByTagName('num')[0].firstChild.nodeValue == 0){
						document.getElementById(library[i][3]+'_bln').innerHTML = library[i][2] + '<br>該当図書なし';
					} else {
						document.getElementById(library[i][3]+'_bln').innerHTML = library[i][2] + '<br><a href="#result">' + resxml.getElementsByTagName('num')[0].firstChild.nodeValue + '件</a>';
						document.getElementById(library[i][3]+'_bln').onclick = function() {
							display(resxml.getElementsByTagName('url')[0].firstChild.nodeValue);
						}
						document.getElementById(library[i][3]+'_bln').onmouseover = function() {
							zcb++;
							this.style.zIndex = zcb;
						}
					}
				}
			}
		}

		cus = new Array(library.length);
		function infowindow(i){
			function custombox() { }
			custombox.prototype = new GOverlay();
			custombox.prototype.initialize = function() {
				cus[i] = document.createElement('div');
				cus[i].className = 'custombox';
				cus[i].id = library[i][3] + '_bln';
				cus[i].innerHTML = library[i][2] + "<br>検索中…";   
			}

			custombox.prototype.remove = function() {
				this._cus.parentNode.removeChild(this._cus);
			}

			custombox.prototype.redraw = function(force) {
				var marker_pixls = map.fromLatLngToDivPixel(new GLatLng(library[i][0],library[i][1])); 
				var x = marker_pixls.x ; 
				var y = marker_pixls.y ; 
				openWindowXY(marker_pixls.x, marker_pixls.y); 
			  
				function openWindowXY(x, y){ 
					cus[i].style.display = "block";
					zcb++;
					cus[i].style.zIndex = zcb; 
					cus[i].style.postion = "absolute"; 
					cus[i].style.top = y + "px"; 
					cus[i].style.left = x + "px"; 
				}
				this._cus = map.getPane(G_MAP_FLOAT_PANE).appendChild(cus[i]);
			}
			customInfoWindow = new custombox();
			map.addOverlay(customInfoWindow);
		}

		document.getElementById('submit').onclick = function() {
			map.clearOverlays();
			gmad();
			for (i = 0; i < library.length; i++) {
				if (document.getElementById(library[i][3]).checked) {
					infowindow(i);
					search(i);
				}
			}
		}

	}
}