// global variables
var gLocalSearch;
var gYellowIcon;
var adrsctr;
var map;
var YMarker;
var oZoom;
var pophtml;
var gmarkers=[];
var lists=new Array();
var marker_index=0;
var alphabet=1;
var initDtl=0;
var alterDtl=0;
var lat;
var lng;
var stradius=0;
var currentInfoWindow = null; //最後に開いた情報ウィンドウを記憶



function initVoidReturn() {
	var felem = document.getElementsByTagName("input");
	for(var i=0; i<felem.length; i++){
		if(felem[i].type == 'text' || felem[i].type == 'password'){
			felem[i].onkeypress = function (event){
				return voidReturn(event);
			};
		}
	}
}
function voidReturn(e){
	if (!e) var e = window.event;
	if(e.keyCode == 13) return false;
}


createYMaker=function(map) {
	var iconSize = new google.maps.Size(20, 34);
	var iconShadowSize = new google.maps.Size(37, 34);
	var iconPosition = new google.maps.Point(0, 0);
	var iconHotSpotOffset = new google.maps.Point(10, 34);
	var infoWindowAnchor = new google.maps.Point(10, 4);
	var infoShadowAnchor = new google.maps.Point(18, 25);
	var iconImageUrl = "./img/GMapi/yellow_marker.png";
	var iconShadowUrl = "./img/GMapi/abc_marker_shadow.png";

	var markerImage = new google.maps.MarkerImage(iconImageUrl, iconSize, iconPosition, iconHotSpotOffset);
	var markerShadow = new google.maps.MarkerImage(iconShadowUrl, iconShadowSize, iconPosition, iconHotSpotOffset);

	var latlng=map.getCenter();
	var markerOptions = { 
		//title: title,
		icon: markerImage,
		shadow: markerShadow,
		position: latlng,
		map: map,
		draggable: true
	};
	var marker = new google.maps.Marker(markerOptions);

	var initHtml="<div class=\"infotxt\">この黄色マーカーを病院を探したいところに<br />移動してその付近で再検索します。</div>";
	var finalHtml="<div class=\"infotxt\">この位置を中心に再検索する場合はボタンを押してください。</div><div id=\"submit\"><a href=\"javascript:void(0);\" onclick=\"if(chkRedo()) document.retrybox.submit(); return false;\"><img src=\"./img/GMapi/search_btnS.jpg\" width=\"64\" height=\"30\" alt=\"再検索\" /></a></div>";
	var submitwindow = new google.maps.InfoWindow({
		content: initHtml,
		maxWidth: 300,
		disableAutoPan: false
	});
	google.maps.event.addListener(marker, 'dragend', function() {
		//var p = marker.position;
		//tgt_lat=p.lat();
		//tgt_lng=p.lng();
		submitwindow.setContent(finalHtml);
		submitwindow.open(map,marker);
	});
	google.maps.event.addListener(marker, 'click', function() {
		//var p = marker.position;
		//tgt_lat=p.lat();
		//tgt_lng=p.lng();
		submitwindow.setContent(finalHtml);
		submitwindow.open(map,marker);
	});
	return marker;
}



//	if( navigator.userAgent.match( "MSIE" )){ window.attachEvent( "onresize" , resizeMap()); }
//	else if( navigator.userAgent.match( "Safari" )){ window.onresize = resizeMap(); }
//	else { window.addEventListener( "resize" , resizeMap() , false ); }

mapZoomIn=function(lt,lg) {
var zoom_latlng=new google.maps.LatLng(lt,lg);
map.setZoom(map.getZoom()+1);
map.panTo(zoom_latlng);
}
mapZoomOut=function(lt,lg) {
var zoom_latlng=new google.maps.LatLng(lt,lg);
map.setZoom(map.getZoom()-1);
map.panTo(zoom_latlng);
}

// _dom : kind of DOM.
// IE4 = 1, IE5+ = 2, NN4 = 3, NN6+ = 4, others = 0
var _dom = document.all?(document.getElementById?2:1):(document.getElementById?4:(document.layers?3:0));

function getWindowWidth (){
	if(_dom==4 || _dom==3) return window.innerWidth;
	if(_dom==2 || _dom==1) return document.body.clientWidth;
	return 0;
}

function getDivWidth(div) {
	
	if(_dom==4 || _dom==2) return div.offsetWidth;
	if(_dom==1) return div.style.pixelWidth;
	if(_dom==3) return div.clip.width;
	return 0;
}



function chkLegacy() {
	if (typeof document.documentElement.style.maxHeight != "undefined") {
		// IE 7.0 以上 または Gecko などモダンブラウザ
	} else {
		// IE 6.0 以下 レガシーブラウザ
		if(window.confirm("お使いのブラウザは古いため、このページを表示できません。\n古いブラウザでも見られるページに切り替えますか？")) {
			var url=location.href;
			url=url.replace("searchNeighbors", "searchNeighbors_old");
			location.href=url;
		}
	}
}



function dispLoadingMap() {
	jQuery('#maploading').css('left',String(Math.round((jQuery('#map').width()) / 2)) +'px');
	setDispID('maploading',1);
}


function dispmap() {
	
	var mapdiv = jQuery("#map").get(0);
	// マップ表示
	var point = new google.maps.LatLng(lat,lng);
	var options = {
		zoom: oZoom,
		center: point,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scaleControl: true,
		navigationControl:true,
		navigationControlOptions : {
			style : google.maps.NavigationControlStyle.SMALL,
			position : google.maps.ControlPosition.TOP_LEFT
		},
		scrollwheel: false
	};
	map = new google.maps.Map(mapdiv,options);

	YMarker = createYMaker(map);//検索起点マーカー表示

	
	var max_zoom=19;
	var msgpane_width=300;
	jQuery('#mapoverlay').width(msgpane_width+'px');
	
	google.maps.event.addListener( map , "zoom_changed", function() {
		setDispID('mapoverlay',0);
		if(map.getZoom() > max_zoom) {
			map.setZoom(max_zoom);
			jQuery('#mapoverlay').text('これ以上、地図をズームインできません');
			jQuery('#mapoverlay').css('left',String(Math.round((jQuery('#map').width() - msgpane_width )/ 2)) +'px');
			setDispID('mapoverlay',1);
			setTimeout("setDispID('mapoverlay',0)",3000);
		}
	}
	);
	
	for (var ii=0 ; ii<lists.length ; ii++) {
		addBalloonMarker(lists[ii]);
	}
	
	setDispID('maploading',0);//erase loading gif
}



function chkRedo() {
	var pnt = YMarker.position;
	var curlat = pnt.lat();
	var curlng = pnt.lng();
	var finalDtl = parseInt(jQuery("#op").val());
	
//	var setDtl=0;
//	if(jQuery("#retrybox #dd").val()||jQuery("#retrybox #hh").val()||jQuery("#retrybox #mm").val()||jQuery("#retrybox #ftr").val()||jQuery("#retrybox #fw").val()) setDtl=1;
	
	if(!stradius) {
		if(curlat==lat && curlng==lng) {
			if((!alterDtl && finalDtl)||(!initDtl && !finalDtl)) {
				alert('黄色いマーカーをドラッグ&ドロップで移動してから再検索してください');
				return false;
			}
		}
	}
	jQuery("#lat","#retrybox").val(curlat);
	jQuery("#lng","#retrybox").val(curlng);
	if(!finalDtl) {
		jQuery("#fw","#retrybox").val("");
		jQuery("#ftr","#retrybox").val("");
		jQuery("#dd","#retrybox").val("");
		jQuery("#hh","#retrybox").val("");
		jQuery("#mm","#retrybox").val("");
	}
	return true;
}


//put each data into array
function markerLists(name,domain,tbl,address,tel,hours,key,beds,access,park,url,serial,lat,lng,md) {
	this.name=name;
	this.domain=domain;
	this.tbl=tbl;
	this.address=address;
	this.tel=tel;
	this.hours=hours;
	this.key=key;
	this.beds=beds;
	this.access=access;
	this.park=park;
	this.url=url;
	this.serial=serial;
	this.lat=lat;
	this.lng=lng;
	this.mindoc=md;
}

//add marker with balloon
function addBalloonMarker(eList) {
	var pophtml;

	pophtml='<div style="width:300px; margin:5px; line-height:1.5em; padding:0;"><div style="font-weight:bold; font-size:90%; color:#36454F;">' +eList.name + '</div><div style="font-size:75%">' + eList.address + '<br /><span style="color:#808080;">TEL.</span> ' + eList.tel + '<br /><span style="color:#808080;">診療科目</span> ' + eList.domain;
	if(eList.url) {
		pophtml += '<br /><span style="color:#808080;">サイト</span> <a href="' + eList.url + '" target="_blank">' + eList.url + '</a><br />';
		pophtml += '<a href="' + eList.url + '" target="_blank"><img src="http://www.10man-doc.co.jp/screenshot/' + eList.serial + '.jpg" class="forehead" /></a>';
	}
		pophtml += '<br />';
	if(eList.hours || eList.key || eList.beds || eList.access || eList.park) {
		if(eList.hours) { 
			pophtml += '<span style="color:#808080;">診療時間</span> ' + eList.hours + '<br />';
		}
		if(eList.key) { 
			pophtml += '<span style="color:#808080;">特色</span> ' + eList.key + '<br />';
		}
		if(eList.beds) { 
			pophtml += '<span style="color:#808080;">病床数</span> ' + eList.beds + '<br />';
		}
		if(eList.access) { 
			pophtml += '<span style="color:#808080;">アクセス</span> ' + eList.access + '<br />';
		}
		if(eList.park) { 
			pophtml += '<span style="color:#808080;">駐車場</span> ' + eList.park;
		}
	}
	pophtml +='</div>';
	pophtml += '<div style="width:280px; margin:0; padding:0; text-align:right;"><a href="javascript:void(0)" onclick="mapZoomIn(' + eList.lat + ',' + eList.lng + '); popInfo(' + marker_index + ');"><img src="./img/GMapi/Gmarker_zoomin.gif" width="15" height="15" alt="zoom in" title="ズームイン" /></a>　<a href="javascript:void(0)" onclick="mapZoomOut(' + eList.lat + ',' + eList.lng + '); popInfo(' + marker_index + ');"><img src="./img/GMapi/Gmarker_zoomout.gif" width="15" height="15" alt="zoom out" title="ズームアウト" /></a>　<a href="printGM.php?tbl=' + eList.tbl + '&srl=' + eList.serial + '" target="_blank"><img src="./img/GMapi/Gmarker_print.gif" alt="print&navi" title="印刷用ページを表示" /></a>　' + "<a href=\"javascript:void(0)\" onclick=\"saveMylist('" + eList.tbl + "','" + eList.serial + "'); location.href='./mylist.php'; return false;\"><img src=\"./img/GMapi/Gmarker_mylist.gif\" alt=\"add to mylist\" title=\"マイリストに追加する\" /></a></div>";
	pophtml +='</div>';
	
	addGMarker(new google.maps.LatLng(eList.lat,eList.lng),pophtml);
//	addGMarker(new GPoint(eList.lng,eList.lat),pophtml);
}

function addGMarker(latlng,html) {
	var iconSize = new google.maps.Size(20, 34);
	var iconShadowSize = new google.maps.Size(37, 34);
	var iconPosition = new google.maps.Point(0, 0);
	var iconHotSpotOffset = new google.maps.Point(10, 34);
	var infoWindowAnchor = new google.maps.Point(10, 4);
	var infoShadowAnchor = new google.maps.Point(18, 25);
	var iconImageUrl = "./img/GMapi/abc_marker" + alphabet + ".png";
	alphabet++;
	var iconShadowUrl = "./img/GMapi/abc_marker_shadow.png";


//console.log(iconImageUrl);


	var markerImage = new google.maps.MarkerImage(iconImageUrl, iconSize, iconPosition, iconHotSpotOffset);
	var markerShadow = new google.maps.MarkerImage(iconShadowUrl, iconShadowSize, iconPosition, iconHotSpotOffset);

	var markerOptions = { 
		//title: title,
		icon: markerImage,
		shadow: markerShadow,
		position: latlng,
		map: map,
	};
	var marker = new google.maps.Marker(markerOptions);

	//情報ウィンドウ描画
	var infoWindow = new google.maps.InfoWindow({
		content: html,
		maxWidth: 380,
		disableAutoPan: false
	});
	//マーカーをクリックした場合
	google.maps.event.addListener(marker, 'click', function() {
		if (currentInfoWindow) {
			currentInfoWindow.close();
		}
		currentInfoWindow = infoWindow;
		infoWindow.open(map,marker);
	});

	gmarkers[marker_index++] = marker;
}

function popInfo(index){ //吹き出しを表示する
	google.maps.event.trigger(gmarkers[index], "click");
}

function changeList(dlistw,ddisp) {
	var padw=5;
	var sww=dlistw+padw;
	//var winw=getWindowWidth();
	jQuery('#mapinfo').css('marginRight','-' + sww + 'px');
	jQuery('#map').css('marginRight',sww + 'px');
	jQuery('#warningmsg').css('marginRight',sww + 'px');
	jQuery('#listinfo').css('width',dlistw + 'px');
	if(ddisp) {
		setDispID('dlist',1);
		setDispID('slist',0);
		setDispID('ctrlpanel',0);
	} else {
		setDispID('dlist',0);
		setDispID('slist',1);
		setDispID('ctrlpanel',1);
	}
// -	map.checkResize();//Map再描画
}

function setDispID(id,type) {
	jQuery('#'+id).css('display',type ? 'block' : 'none');
}


function setftrPD() { 
	if(jQuery('#ftr','#retrybox')[0].selectedIndex != 0) jQuery('#fw','#retrybox').val("");

}
function resetftrPD() { 
	if(jQuery('#fw','#retrybox').val()) jQuery('#ftr','#retrybox').val("");
}

function dispSearchDtl() {
	var msg="[検索オプション追加]";
	var sts=parseInt(jQuery("#op").val()); //somehow needed to cast
	
	if(sts) msg="[検索オプション削除]";
	jQuery("#searchdtl").css('display',sts ? 'block' : 'none');
	jQuery("#searchbox .optxt").text(msg);
}

function slideToggleSearchDtl() {
	var msg="[検索オプション削除]";
	var sts=parseInt(jQuery("#op").val()); //somehow needed to cast
	
	if(sts && jQuery('#dmn','#retrybox')[0].selectedIndex == 0 && !jQuery('#dmn','#retrybox').val()) {
		alert('診療科目を選んでください');
		return false;
	}
	if(sts) msg="[検索オプション追加]";
	jQuery("#op").val(1-sts);
	jQuery("#searchdtl").slideToggle(500);
	jQuery("#searchbox .optxt").text(msg);
}

function alterSearchDtl() { 
	alterDtl=1;
}




function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

MM_preloadImages('./image/to_pagetop_f2.gif');

