// global variables
var gLocalSearch;
var gYellowIcon;
var adrsctr;
var map;
var oMarker;
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;



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;
}



// Create "yellow" marker icon
function initOrginMaker() {
	gYellowIcon = new GIcon();
	gYellowIcon.image = "image/GMapi/yellow_marker.png";
	gYellowIcon.shadow = "image/GMapi/abc_marker_shadow.png";
	gYellowIcon.iconSize = new GSize(20, 34);
	gYellowIcon.shadowSize = new GSize(37, 34);
	gYellowIcon.iconAnchor = new GPoint(10, 34);
	gYellowIcon.infoWindowAnchor = new GPoint(10, 4);
}

//	if( navigator.userAgent.match( "MSIE" )){ window.attachEvent( "onresize" , resizeMap()); }
//	else if( navigator.userAgent.match( "Safari" )){ window.onresize = resizeMap(); }
//	else { window.addEventListener( "resize" , resizeMap() , false ); }

function mapZoomIn(elat,elng){
	var zm=map.getZoom();
//	map.setCenter(new GLatLng(elat,elng),zm);
	map.zoomIn();
//	map.enableContinuousZoom();
}

function mapZoomOut(elat,elng){
	var zm=map.getZoom();
//	map.setCenter(new GLatLng(elat,elng),zm);
	map.zoomOut();
//	map.enableContinuousZoom();
}

// _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 dispLoadingMap() {
	jQuery('#maploading').css('left',String(Math.round((jQuery('#map').width()) / 2)) +'px');
	setDispID('maploading',1);
}


function dispmap() {
	
	initOrginMaker();//検索起点マーカー表示

	map = new GMap(document.getElementById("map"));
//	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl3D());
	map.addControl(new GScaleControl());
	map.setCenter(new GLatLng(lat,lng), oZoom );
	
	oMarker = new GMarker( new GPoint(lng,lat),
		{draggable: true, icon: gYellowIcon, title: "マーカーを移動して再検索できます"
		});
	GEvent.addListener(oMarker, "dragstart", function() {
		map.closeInfoWindow();
	}); 
	GEvent.addListener(oMarker, "dragend", function() {
		oMarker.openInfoWindowHtml('<div style="width:200px; margin:0px auto;text-align:center; font-size:13px;">この位置を中心に再検索する場合はボタンを押してください<br /><input type="submit" class="sbmt" value="再検索" onclick="if(chkRedo()) document.retrybox.submit();" /></div>');
	}); 
	map.addOverlay( oMarker );
	
	var max_zoom=17;
	var msgpane_width=300;
	jQuery('#mapoverlay').width(msgpane_width+'px');
	
	GEvent.addListener( map , "zoom", 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 = oMarker.getPoint();
	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; font-size: 13px; line-height:1.2em; padding-bottom:2px;"><b><font color="#b05246">' +eList.name + '</font></b><br>' + eList.address + '<br><b><font color="#063056">TEL.</font></b> ' + eList.tel + '<br><b><font color="#063056">診療科目</font></b> ' + eList.domain;
	if(eList.url) {
		pophtml += '<br><b><font color="#063056">サイト</font></b> <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" border="1"></a>';
	}
		pophtml += '<br>';
	if(eList.hours || eList.key || eList.beds || eList.access || eList.park) {
		if(eList.hours) { 
			pophtml += '<b><font color="#063056">診療時間</font></b> ' + eList.hours + '<br>';
		}
		if(eList.key) { 
			pophtml += '<b><font color="#063056">特色</font></b> ' + eList.key + '<br>';
		}
		if(eList.beds) { 
			pophtml += '<b><font color="#063056">病床数</font></b> ' + eList.beds + '<br>';
		}
		if(eList.access) { 
			pophtml += '<b><font color="#063056">アクセス</font></b> ' + eList.access + '<br>';
		}
		if(eList.park) { 
			pophtml += '<b><font color="#063056">駐車場</font></b> ' + eList.park + '<br>';
		}
	}
	pophtml += '<div align="right"><a href="javascript:void(0)" onclick="mapZoomIn(' + eList.lat + ',' + eList.lng + '); popInfo(' + marker_index + ');"><img src="./image/GMapi/Gmarker_zoomin.gif" width="15" height="15" alt="zoom in" title="ズームイン" border="0"></a>　<a href="javascript:void(0)" onclick="mapZoomOut(' + eList.lat + ',' + eList.lng + '); popInfo(' + marker_index + ');"><img src="./image/GMapi/Gmarker_zoomout.gif" width="15" height="15" alt="zoom out" title="ズームアウト" border="0"></a>　<span class="gloss" onmouseover="gloss('+"'ストリートビュー'" + ')" onmouseout="nd()" onclick="dispStreetView(' + eList.lat + ',' + eList.lng + '); return false;"><img src="./image/GMapi/Gmarker_view.gif" border="0" alt="streetview"></span>　<a href="printGM.php?tbl=' + eList.tbl + '&srl=' + eList.serial + '" target="_blank"><img src="./image/GMapi/Gmarker_print.gif" border="0" alt="print&navi" title="印刷用ページを表示"></a></div>';
	pophtml +='</div>';

	addMarker(new GPoint(eList.lng,eList.lat),pophtml);
}

function addMarker(latlng,html) {
	var alphabetIcon = new GIcon();
	alphabetIcon.image = 'image/GMapi/abc_marker' + alphabet + '.png';
	alphabet++;
	alphabetIcon.shadow = 'image/GMapi/abc_marker_shadow.png';
	alphabetIcon.iconSize = new GSize(20,34);
	alphabetIcon.shadowSize = new GSize(37,34);
	alphabetIcon.iconAnchor = new GPoint(10,34);
	alphabetIcon.infoWindowAnchor = new GPoint(10,4);
	var marker = new GMarker(latlng,alphabetIcon);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	}); 
	gmarkers[marker_index++] = marker;

	//マーカーを地図上に配置
	map.addOverlay(marker);
}

function popInfo(index){ //吹き出しを表示する
	GEvent.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 dispStreetView(lat,lng) { 
	
	var layer_width=520;
	document.getElementById('streetview').style.width=String(layer_width)+'px';
	document.getElementById('streetview_ctrl').style.width=String(layer_width)+'px';
	var st_left=Math.round((document.getElementById('map').offsetWidth - layer_width )/ 2);
//	var stctrl_left = st_left + layer_width - 20;
	if(st_left<-15) st_left=15;
	var stctrl_left = st_left - 15;
	document.getElementById('streetview').style.left=String(st_left) +'px';
	document.getElementById('streetview_ctrl').style.left=String(stctrl_left) +'px';
	setDispID('streetview',1);
	
	var targetPoint  =  new GLatLng(lat, lng);
	panoramaOptions  = { latlng:targetPoint };
	tgtSV = new GStreetviewPanorama(document.getElementById('streetview'),panoramaOptions);
	GEvent.addListener(tgtSV, "error", handleNoFlash);
	
	setDispID('streetview_ctrl',1);
}

function handleNoFlash(errorCode) {
	setDispID('streetview_ctrl',0);//street view レイヤーを非表示に
	setDispID('streetview',0);//street view レイヤーを非表示に
	
	var layer_width=300;
	document.getElementById('mapoverlay').style.width=String(layer_width)+'px';
	document.getElementById('mapoverlay').style.left=String(Math.round((document.getElementById('map').offsetWidth - layer_width )/ 2)) +'px';
	
	setDispID('mapoverlay',0);
	if (errorCode == 600) {// 未対応エリアの時のエラーナンバー
		document.getElementById('mapoverlay').innerHTML = 'ストリートビュー未対応の地域です';
	}
	if (errorCode == 603) {//FLASH_UNAVAILABLE
		document.getElementById('mapoverlay').innerHTML = "Flashをインストールしてください";
	}
	setDispID('mapoverlay',1);
	setTimeout("setDispID('mapoverlay',0)",3000);
}





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');

