var center_marker = null;
var gmap = null;
var map_input = false;
var marker_max = 20;
var search_result = new Array();
var enable_search = true;
var base_url = "http://npo-medical.net/";
var open_csid = null;
var browser_type = 'IE';
var marker_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var marker_url = 'http://www.google.com/intl/ja_jp/mapfiles/markerA.png';
var marker_shadow = base_url+'image/shadow50.png';
var marker_transparent = base_url+'image/transparent.png';
var new_GMarker = null;

var item_1 = "<h4>診療科目</h4><div class='block' style='width:248px;'><img src='/image/1_1_off.gif' border='0' alt='内科'><img src='/image/1_2_off.gif' border='0' alt='小児科'><img src='/image/1_3_off.gif' border='0' alt='循環器科'><img src='/image/1_4_off.gif' border='0' alt='呼吸器科'><img src='/image/1_5_off.gif' border='0' alt='消化器科'><img src='/image/1_6_off.gif' border='0' alt='外科'><img src='/image/1_7_off.gif' border='0' alt='整形外科'><img src='/image/1_8_off.gif' border='0' alt='循環器外科'><img src='/image/1_9_off.gif' border='0' alt='呼吸器外科'><img src='/image/1_10_off.gif' border='0' alt='消化器外科'><img src='/image/1_11_off.gif' border='0' alt='心療内科'><img src='/image/1_12_off.gif' border='0' alt='神経内科'><img src='/image/1_13_off.gif' border='0' alt='神経科'><img src='/image/1_14_off.gif' border='0' alt='精神科'><img src='/image/1_15_off.gif' border='0' alt='胃腸科'><img src='/image/1_16_off.gif' border='0' alt='産婦人科'><img src='/image/1_17_off.gif' border='0' alt='産科'><img src='/image/1_18_off.gif' border='0' alt='婦人科'><img src='/image/1_19_off.gif' border='0' alt='リウマチ科'><img src='/image/1_20_off.gif' border='0' alt='リハビリテーション科'><img src='/image/1_21_off.gif' border='0' alt='眼科'><img src='/image/1_22_off.gif' border='0' alt='耳鼻咽喉科'><img src='/image/1_23_off.gif' border='0' alt='皮膚科'><img src='/image/1_24_off.gif' border='0' alt='泌尿器科'><img src='/image/1_25_off.gif' border='0' alt='形成外科'><img src='/image/1_26_off.gif' border='0' alt='脳神経外科'><img src='/image/1_27_off.gif' border='0' alt='脳外科'><img src='/image/1_28_off.gif' border='0' alt='心臓血管外科'><img src='/image/1_29_off.gif' border='0' alt='気管食道科'><img src='/image/1_30_off.gif' border='0' alt='肛門科'><img src='/image/1_31_off.gif' border='0' alt='アレルギー科'><img src='/image/1_32_off.gif' border='0' alt='放射線科'><img src='/image/1_33_off.gif' border='0' alt='麻酔科'><img src='/image/1_34_off.gif' border='0' alt='性病科'><img src='/image/1_35_off.gif' border='0' alt='美容外科'><img src='/image/1_51_off.gif' border='0' alt='歯科'><img src='/image/1_52_off.gif' border='0' alt='口腔外科'></div><h4>付帯</h4><div class='block' style='width:248px;'><img src='/image/1_36_off.gif' border='0' alt='駐車場'><img src='/image/1_37_off.gif' border='0' alt='バリアフリー対応'><img src='/image/1_38_off.gif' border='0' alt='点字サービス'><img src='/image/1_39_off.gif' border='0' alt='手話'><img src='/image/1_40_off.gif' border='0' alt='入院設備'><img src='/image/1_41_off.gif' border='0' alt='クレジット取り扱い'><img src='/image/1_42_off.gif' border='0' alt='女性医師'><img src='/image/1_43_off.gif' border='0' alt='日曜診療'><img src='/image/1_44_off.gif' border='0' alt='24時間診療'><img src='/image/1_45_off.gif' border='0' alt='往診・在宅診療'><img src='/image/1_46_off.gif' border='0' alt='予約'><img src='/image/1_47_off.gif' border='0' alt='外国語'><img src='/image/1_48_off.gif' border='0' alt='予防接種'><img src='/image/1_49_off.gif' border='0' alt='訪問看護'><img src='/image/1_53_off.gif' border='0' alt='小児特定疾患医療機関'></div>";
var item_3 = "<h4>診療科目</h4><div class='block' style='width:248px;'><img src='/image/3_1_off.gif' border='0' alt='一般歯科'><img src='/image/3_2_off.gif' border='0' alt='小児歯科'><img src='/image/3_3_off.gif' border='0' alt='口腔外科'><img src='/image/3_4_off.gif' border='0' alt='矯正歯科'></div><h4>治療項目</h4><div class='block' style='width:248px;'><img src='/image/3_5_off.gif' border='0' alt='歯周病治療'><img src='/image/3_6_off.gif' border='0' alt='レーザー治療'><img src='/image/3_7_off.gif' border='0' alt='予防歯科'><img src='/image/3_8_off.gif' border='0' alt='義歯・咬合'><img src='/image/3_9_off.gif' border='0' alt='無痛・笑気'><img src='/image/3_10_off.gif' border='0' alt='歯科相談'><img src='/image/3_11_off.gif' border='0' alt='クリーニング'><img src='/image/3_12_off.gif' border='0' alt='顎関節治療'><img src='/image/3_13_off.gif' border='0' alt='ホワイトニング'><img src='/image/3_14_off.gif' border='0' alt='インプラント'><img src='/image/3_15_off.gif' border='0' alt='口臭治療'><img src='/image/3_16_off.gif' border='0' alt='審美'><img src='/image/3_17_off.gif' border='0' alt='スポーツ歯科'></div><h4>付帯</h4><div class='block' style='width:248px;'><img src='/image/3_18_off.gif' border='0' alt='駐車場'><img src='/image/3_19_off.gif' border='0' alt='予約診療'><img src='/image/3_20_off.gif' border='0' alt='往診・在宅診療'><img src='/image/3_21_off.gif' border='0' alt='個室治療'><img src='/image/3_22_off.gif' border='0' alt='女性医師'><img src='/image/3_23_off.gif' border='0' alt='点字サービス'><img src='/image/3_24_off.gif' border='0' alt='手話'><img src='/image/3_25_off.gif' border='0' alt='バリアフリー対応'><img src='/image/3_26_off.gif' border='0' alt='日曜診療'><img src='/image/3_27_off.gif' border='0' alt='夜間診療(8:00以降)'><img src='/image/3_28_off.gif' border='0' alt='クレジット取り扱い'><img src='/image/3_29_off.gif' border='0' alt='外国語'></div>";

// Google Mapsの初期化をする
function GMapsload(lat,lng,zoom) {
    if (GBrowserIsCompatible()) {
        if(lat==undefined){
            lat=35;
        }
        if(lng==undefined){
            lng=135;
        }
        if(zoom==undefined){
        	zoom=15;
        }
        gmap = new GMap2(document.getElementById("gmap"));
        gmap.enableContinuousZoom();
        gmap.enableDoubleClickZoom();
        gmap.setCenter(new GLatLng(lat, lng),zoom);
        gmap.addControl(new GLargeMapControl());
        gmap.addControl(new GMapTypeControl());
        gmap.addControl(new GScaleControl());
        gmap.disableScrollWheelZoom();
        get_browser_type();
        search_clinic();
        make_cur_url();
		setCenterMarker();

	    GEvent.addListener(gmap, "movestart", function(){
	    }
	    );
	    GEvent.addListener(gmap, "moveend", function(){
	    	if(enable_search){
		        search_clinic();
		        make_cur_url();
		    }
	    }
	    );
    }
}

function setCenterMarker(){
	var tmpLatLng = null;
	var new_GIcon = null;
	new_GIcon                  = new GIcon();
	new_GIcon.image            = "/image/center_cursor.png";
	new_GIcon.shadow           = "";
	new_GIcon.iconSize         = new GSize(31,31);
	new_GIcon.iconAnchor       = new GPoint(16,16);
	new_GIcon.infoWindowAnchor = new GPoint(16,0);
	new_GIcon.infoShadowAnchor = new GPoint(16,0);

	tmpLatLng = gmap.getCenter();
	if(new_GMarker!=null){
		gmap.removeOverlay(new_GMarker);
	}
//	document.forms[0].put_lat.value=tmpLatLng.lat();
//	document.forms[0].put_lng.value=tmpLatLng.lng();
	new_GMarker = new GMarker(gmap.getCenter(), {icon:new_GIcon});
	gmap.addOverlay(new_GMarker);
}


search_clinic = function(){
	tmp_center=gmap.getCenter();
	var request = GXmlHttp.create();
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
	        gmap.clearOverlays();
			search_result = new Array();
			for (var i = 0; i < markers.length; i++) {
				search_result[i] = new Array();
				search_result[i]['lat'] = parseFloat(markers[i].getAttribute("lat"));
				search_result[i]['lng'] = parseFloat(markers[i].getAttribute("lng"));
				search_result[i]['cname'] = markers[i].getAttribute("cname");
				search_result[i]['csid'] = markers[i].getAttribute("csid");
			}
			update_search_result(0);
		}
	}
	// put_kind value
	put_kind = 0;
	for(tmp_i = 0; tmp_i < document.forms[0].elements.length; tmp_i++){
		if(document.forms[0].elements[tmp_i].type=="radio" && document.forms[0].elements[tmp_i].name=="put_kind"){
			if(document.forms[0].elements[tmp_i].checked){
				put_kind=document.forms[0].elements[tmp_i].value;
				break;
			}
		}
	}

	// URL make
	search_url='/search/search_clinic.php?put_kind='+put_kind+'&put_lat='+tmp_center.lat()+'&put_lng='+tmp_center.lng()+'&put_zoom='+gmap.getZoom()+'&put_width='+document.getElementById('clinic_detail_body').style.left+'&put_height='+document.getElementById('clinic_detail_body').style.height;
	request.open('GET', search_url, true);
	request.send(null);
}

update_search_result = function(start_index){
	var search_subject='';
	var search_index='';
	if(search_result.length==0){
		tmp_html="マップ上に病院はありませんでした";
		document.getElementById("search-result").innerHTML=tmp_html;
		gmap.clearOverlays();
		setCenterMarker();
		return;
	}
	tmp_html="";
	tmp_count=0;
    i_max = marker_max + start_index;
    if(search_result.length < i_max){
    	i_max = search_result.length;
    }
	gmap.clearOverlays();
	setCenterMarker();

	for(var i = start_index; i < i_max; i++){
		var point = new GPoint(search_result[i]['lng'],search_result[i]['lat']);
		var newicon = new GIcon();

	　　newicon.image=marker_url.replace("markerA.png","marker"+marker_alphabet.substr(tmp_count,1)+".png");
	　　newicon.shadow=marker_shadow;
	　　newicon.iconSize = new GSize(20,34);
	　　newicon.shadowSize = new GSize(37,34);
	　　newicon.iconAnchor = new GPoint(1,38);
	　　newicon.infoWindowAnchor = new GPoint(10,10);
	　　newicon.transparent = marker_transparent;
		var marker = new GMarker(point,{title:search_result[i]['cname'], icon:newicon});
		
		marker.latlng = new GLatLng(search_result[i]['lat'],search_result[i]['lng']);
		marker.csid = parseInt(search_result[i]['csid']);
		GEvent.addListener(marker,"click",function(){
			enable_search = false;
			openDetail(this.csid, this.latlng.lat(), this.latlng.lng());
		}
		);
		gmap.addOverlay(marker);
		tmp_html+="<div id=\"marker_"+i+"\" onClick=\"openDetail('"+search_result[i]['csid']+"',"+search_result[i]['lat']+","+search_result[i]['lng']+");\" style=\"cursor:pointer\">["+marker_alphabet.substr(tmp_count,1)+"]" + search_result[i]['cname'] + "</div>";
		tmp_count++;
	}

	if(start_index > 0){
		if(start_index < marker_max){
			next_index = 0;
		}else{
			next_index = start_index - marker_max;
		}
		search_index+="<div id='button_prev' onClick=\"update_search_result("+next_index+");\" class=\"map_button\">[ ＜ ]</div>";
	}else{
		search_index+="<div id='button_prev' class=\"map_disable_button\">[ ＜ ]</div>";
	}
	if(search_result.length > i_max){
		search_index+="<div id='button_next' onClick=\"update_search_result("+i_max+");\" class=\"map_button\">[ ＞ ]</div>";
	}else{
		search_index+="<div id='button_next' class=\"map_disable_button\">[ ＞ ]</div>";
	}
	search_index+="<br />";
	search_subject="<span style='font-size: 150%; font-weight: bold;'>"+search_result.length+"</span>件見つかりました<br />";
	search_subject+="("+(start_index + 1)+"～"+i_max+"件目を表示)<br /><br />";
	document.getElementById("search-result").innerHTML=search_subject+search_index+tmp_html;
	return;
};

debug_text = function(){
	document.forms[0].debug_zoom.value=gmap.getZoom();
	tmp_center = gmap.getCenter();
	document.forms[0].debug_lat.value=tmp_center.lat();
	document.forms[0].debug_lng.value=tmp_center.lng();
};

make_cur_url = function(){
	tmp_GLatLng = gmap.getCenter();
	tmp_zoom = gmap.getZoom();
	document.forms[0].cur_url.value=base_url+"p.php/57/?put_zoom="+tmp_zoom+"&put_lat="+tmp_GLatLng.lat()+"&put_lng="+tmp_GLatLng.lng();
	return true;
}

// お気に入りに追加
addFavorite = function(url,title){
	if(window.sidebar){
		window.sidebar.addPanel(title, url,"");
	}else if(window.external){
		if(window.external.AddFavorite(url,title)){
			alert("お気に入りに追加が完了しました");
		}
	}else{
		alert("Opera Safariではお気に入りに追加できません");
	}
}

// グレーアウトの後のコールバック関数
openDetailCallback = function(){
	document.getElementById('clinic_detail').style.display = 'block';
	document.getElementById('clinic_item').innerHTML = '';
	document.getElementById('cmail').innerHTML="";
	document.getElementById('curl').innerHTML="";
	document.getElementById('cimg').innerHTML="<img src=\"/clinicimage.php?i=\" border=\"0\">";

	var detail_request = GXmlHttp.create();
	detail_request.onreadystatechange = function() {
		if (detail_request.readyState == 4) {
			var xmlDoc = detail_request.responseXML;
			var clinics = xmlDoc.documentElement.getElementsByTagName("clinic");
			var cnames = xmlDoc.documentElement.getElementsByTagName("cname");
			var caddrs = xmlDoc.documentElement.getElementsByTagName("caddr");
			var cposts = xmlDoc.documentElement.getElementsByTagName("cpost");
			var cphons = xmlDoc.documentElement.getElementsByTagName("cphon");
			var curls = xmlDoc.documentElement.getElementsByTagName("curl");
			var cmails = xmlDoc.documentElement.getElementsByTagName("cmail");
			var tantous = xmlDoc.documentElement.getElementsByTagName("tantou");
			var kanas = xmlDoc.documentElement.getElementsByTagName("kana");
			var gakuis = xmlDoc.documentElement.getElementsByTagName("gakui");
			var bdays = xmlDoc.documentElement.getElementsByTagName("bday");
			var schools = xmlDoc.documentElement.getElementsByTagName("school");
			var staff1s = xmlDoc.documentElement.getElementsByTagName("staff1");
			var staff2s = xmlDoc.documentElement.getElementsByTagName("staff2");
			var staff3s = xmlDoc.documentElement.getElementsByTagName("staff3");
			var staff4s = xmlDoc.documentElement.getElementsByTagName("staff4");
			var staff5s = xmlDoc.documentElement.getElementsByTagName("staff5");
			var amtime_1s = xmlDoc.documentElement.getElementsByTagName("amtime_1");
			var pmtime_1s = xmlDoc.documentElement.getElementsByTagName("pmtime_1");
			var amtime_2s = xmlDoc.documentElement.getElementsByTagName("amtime_2");
			var pmtime_2s = xmlDoc.documentElement.getElementsByTagName("pmtime_2");
			var holidays = xmlDoc.documentElement.getElementsByTagName("holiday");
			var messes = xmlDoc.documentElement.getElementsByTagName("messe");
			var accesses = xmlDoc.documentElement.getElementsByTagName("access");
			var photos = xmlDoc.documentElement.getElementsByTagName("photo");
			var kinds = xmlDoc.documentElement.getElementsByTagName("kind");
			var ds = xmlDoc.documentElement.getElementsByTagName("d");
			var citynames = xmlDoc.documentElement.getElementsByTagName("cityname");
			var townnames = xmlDoc.documentElement.getElementsByTagName("townname");

			if(photos[0].firstChild.nodeValue=="　"){
			}else{
				document.getElementById('cimg').innerHTML="<img src=\"/clinicimage.php?i="+photos[0].firstChild.nodeValue+"\" border=\"0\">";
			}
			document.getElementById('cname').innerHTML=cnames[0].firstChild.nodeValue;
			document.getElementById('caddr').innerHTML=citynames[0].firstChild.nodeValue + townnames[0].firstChild.nodeValue + caddrs[0].firstChild.nodeValue;
			document.getElementById('cpost').innerHTML=cposts[0].firstChild.nodeValue;
			document.getElementById('cphon').innerHTML=cphons[0].firstChild.nodeValue;
			document.getElementById('tantou').innerHTML=tantous[0].firstChild.nodeValue;
			document.getElementById('kana').innerHTML=kanas[0].firstChild.nodeValue;
			document.getElementById('gakui').innerHTML=gakuis[0].firstChild.nodeValue;
			document.getElementById('bday').innerHTML=bdays[0].firstChild.nodeValue;
			schools_str=schools[0].firstChild.nodeValue;
			document.getElementById('school').innerHTML=schools_str.replace("/\r/","<br>");
			staff_elements="";
			if(staff1s[0].firstChild.nodeValue!="0"){
				staff_elements+="<li>歯科医師<span style='margin-left:5px;'>"+staff1s[0].firstChild.nodeValue+"名</span></li>";
			}
			if(staff2s[0].firstChild.nodeValue!="0"){
				staff_elements+="<li>歯科衛生士<span style='margin-left:5px;'>"+staff2s[0].firstChild.nodeValue+"名</span></li>";
			}
			if(staff3s[0].firstChild.nodeValue!="0"){
				staff_elements+="<li>歯科助手<span style='margin-left:5px;'>"+staff3s[0].firstChild.nodeValue+"名</span></li>";
			}
			if(staff4s[0].firstChild.nodeValue!="0"){
				staff_elements+="<li>歯科技工士<span style='margin-left:5px;'>"+staff4s[0].firstChild.nodeValue+"名</span></li>";
			}
			if(staff5s[0].firstChild.nodeValue!="0"){
				staff_elements+="<li>その他<span style='margin-left:5px;'>"+staff5s[0].firstChild.nodeValue+"名</span></li>";
			}
			if(staff_elements!=""){
				staff_elements="<ul class='linklist'>"+staff_elements+"</ul>";
			}
			document.getElementById('staff').innerHTML=staff_elements;
			document.getElementById('amtime_1').innerHTML=amtime_1s[0].firstChild.nodeValue;
			document.getElementById('pmtime_1').innerHTML=pmtime_1s[0].firstChild.nodeValue;
			document.getElementById('amtime_2').innerHTML=amtime_2s[0].firstChild.nodeValue;
			document.getElementById('pmtime_2').innerHTML=pmtime_2s[0].firstChild.nodeValue;
			document.getElementById('holiday').innerHTML=holidays[0].firstChild.nodeValue;
			document.getElementById('messe').innerHTML=messes[0].firstChild.nodeValue;
			document.getElementById('access').innerHTML=accesses[0].firstChild.nodeValue;

			if(cmails[0].firstChild.nodeValue!="　"){
				document.getElementById('cmail').innerHTML="<span style='margin:5px;'><a href='mailto:"+cmails[0].firstChild.nodeValue+"' target='_blank'><img src='/image/mailto.gif' border='0'></a></span>";
			}
			if(curls[0].firstChild.nodeValue!="　"){
				document.getElementById('curl').innerHTML="<span style='margin:5px;'><a href='"+curls[0].firstChild.nodeValue+"' target='_blank'><img src='/image/hp.gif' border='0'></a></span>";
			}

			prefix_img='';
			switch(kinds[0].firstChild.nodeValue){
			case '0':
				prefix_img='1';
				tmp_item=item_1;
				break;
			case '1':
				prefix_img='1';
				tmp_item=item_1;
				break;
			case '2':
				prefix_img='1';
				tmp_item=item_1;
				break;
			case '3':
				prefix_img='3';
				tmp_item=item_3;
				break;
			}
			d_str = ds[0].firstChild.nodeValue;
			d_array = d_str.split(',');
			for(tmp_i in d_array){
				tmp_item=tmp_item.replace(prefix_img+'_'+d_array[tmp_i]+'_off',prefix_img+'_'+d_array[tmp_i]+'_on');
			}
			document.getElementById('clinic_item').innerHTML=tmp_item;
		}
	}
	detail_request.open('GET','/search/detail_clinic.php?put_csid='+open_csid,true);
	detail_request.send(null);
};

// 医院の詳細を開く
openDetail = function(csid,lat,lng){
	enable_search = false;
	open_csid = csid;
	gmap.setCenter(new GLatLng(lat,lng),17);
	setCenterMarker();
	Glayer.fadeIn(null, {duration: 500, callback: openDetailCallback});
	Glayer.fadeIn().onclick = function(){document.getElementById('clinic_detail').style.display='none'; Glayer.fadeOut(); enable_search = true};
	tmp_width = getInnerWidth();
	tmp_height = getInnerHeight();
	tmp_top = getScrollTop();
	document.getElementById('clinic_detail').style.top=(tmp_top+10)+'px';
	document.getElementById('clinic_detail').style.left=((tmp_width-600)/2)+'px';
	document.getElementById('clinic_detail_body').style.height=(tmp_height-40)+'px';
	return;
};

// 指定されたメールアドレスにメールを送信する
send_url_mail = function(){
	var send_request = GXmlHttp.create();
	send_request.onreadystatechange = function() {
		if (send_request.readyState == 4) {
			var xmlDoc = send_request.responseXML;
			var results = xmlDoc.documentElement.getElementsByTagName("result");
			var npoids = xmlDoc.documentElement.getElementsByTagName("npoid");
			var ids = xmlDoc.documentElement.getElementsByTagName("id");
			if(results[0].firstChild.nodeValue=='ok'){
				alert('送信が完了しました');
			}else{
				alert('送信に失敗しました');
			}
		}
	};
	tmp_GLatLng=gmap.getCenter();
	tmp_zoom=gmap.getZoom();
	send_url="/search/send_email.php?put_zoom="+tmp_zoom+"&put_lat="+tmp_GLatLng.lat()+"&put_lng="+tmp_GLatLng.lng()+"&id="+document.forms[0].npoid.value+"&email="+document.forms[0].cur_email.value;
	send_request.open('GET',send_url,true);
	send_request.send(null);
};

// ページのスクロール横位置を特定する
getScrollLeft = function(){
	var tmp_left = 0;
	switch(browser_type){
	case "GK":
	case "NN":
		tmp_left = window.pageXOffset;
		break;
	case "IE":
		tmp_left = document.body.scrollLeft;
		break;
	case "NO":
		break;
	}
	return tmp_left;
};

// ページのスクロール縦位置を特定する
getScrollTop = function(){
	var tmp_top = 0;
	switch(browser_type){
	case "GK":
	case "NN":
		tmp_top = window.pageYOffset;
		break;
	case "IE":
		tmp_top = document.body.scrollTop;
		break;
	case "NO":
		break;
	}
	return tmp_top;
};

getInnerWidth = function(){
	var tmp_width = 0;
	switch(browser_type){
	case "GK":
	case "NN":
		tmp_width=innerWidth;
	case "IE":
		tmp_width=document.body.clientWidth;
	case "NO":
		break;
	}
	return tmp_width;
};

getInnerHeight = function(){
	var tmp_height = 0;
	switch(browser_type){
	case "GK":
	case "NN":
		tmp_height=innerHeight;
	case "IE":
		tmp_height=document.body.clientHeight;
	case "NO":
		break;
	}
	return tmp_height;
};

get_browser_type = function(){
	if(document.layers){
		browser_type = "NN";
	}else if(document.all){
		browser_type = "IE";
	}else if(document.getElementById){
		browser_type = "GK";
	}else{
		browser_type = "NO";
	}
	return;
};