var $narrowdownMap=function(){};

$narrowdownMap.geocoder;
$narrowdownMap.map;
$narrowdownMap.marker;
$narrowdownMap.infowindow;
$narrowdownMap.def_lat='35.65861';
$narrowdownMap.def_lng='139.745447';
$narrowdownMap.lat=0;
$narrowdownMap.lng=0;
$narrowdownMap.mapInitialized=false; // 地図を初期化したか？
$narrowdownMap.mapLoaded=false; // 地図を表示したか？




$narrowdownMap.setupCondition=function() {
	if($(":selected","#NDmap_pref").val().length==0) {
		$("#NDmap_city").val('');
		$("#NDmap_city").attr('disabled','true');
		$('input[name="NDmap_domain_how"]:radio').attr('disabled','true');
		$("span#NDmap_domain_how_field").css('color','#cdcdcd');
		$("#NDmap_domain").attr('disabled','true');
		$("#NDmap #usher").html("都道府県を選んでください。");
	} else if($(":selected","#NDmap_city").val().length==0) {
		$("#NDmap_city").attr('disabled','');
		$('input[name="NDmap_domain_how"]:radio').attr('disabled','true');
		$("span#NDmap_domain_how_field").css('color','#cdcdcd');
		$("#NDmap_domain").attr('disabled','true');
		$("#NDmap #usher").html("市名(区名)を選んでください。");
	} else if($(":selected","#NDmap_domain").val().length==0) {
		$('input[name="NDmap_domain_how"]:radio').attr('disabled','');
		$("span#NDmap_domain_how_field").css('color','#121212');
		$("#NDmap_domain").attr('disabled','');
		$("#NDmap #usher").html("診療科目(部位症状)を選んでください。<div class=\"short brwn\" style=\"text-align:center;\">診療科目と部位症状はボタンで切り替わります。</div>");
	}

	// 診療科目(部位症状)を一度選択操作したら、その後他のプルダウンを変更しても診療科目(部位症状)をdisableにしない
	if($(":selected","#NDmap_domain").val().length != "") {
		$('input[name="NDmap_domain_how"]:radio').attr('disabled','');
		$("span#NDmap_domain_how_field").css('color','#121212');
		$("#NDmap_domain").attr('disabled','');
	}
}


$narrowdownMap.initMap=function(mapId) {
	
	if(this.mapInitialized) return;
	
	// Google maps API ver3.0
	this.geocoder = new google.maps.Geocoder();
	var point = new google.maps.LatLng(this.def_lat, this.def_lng);

	var options = {
		zoom: 4,
		center: point,
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scaleControl: true,
		scrollwheel: false
	};

	this.map = new google.maps.Map($(mapId).get(0), options);
//	$narrowdownMap.marker = this.createYMaker(this.map,point);
//	$narrowdownMap.map.setCenter(point);

	this.marker = this.createYMaker(this.map,point);
	var initHtml="<div class=\"infotxt\">黄色ﾏｰｶｰを探したいところに移動して<br />検索するボタンを押してください。</div><div id=\"submit\"><a href=\"javascript:void(0);\" onclick=\"$narrowdownMap.submit(); return false;\"><img src=\"./img/GMapi/search_btnS.jpg\" width=\"64\" height=\"30\" alt=\"検索する\" /></a></div>";
	var finalHtml="<div class=\"infotxt\">この場所でよろしければ<br />検索するボタンを押してください。</div><div id=\"submit\"><a href=\"javascript:void(0);\" onclick=\"$narrowdownMap.submit(); return false;\"><img src=\"./img/GMapi/search_btnS.jpg\" width=\"64\" height=\"30\" alt=\"検索する\" /></a></div>";
	this.infowindow = new google.maps.InfoWindow({
		content: initHtml,
		maxWidth: 300,
		disableAutoPan: false
	});
	google.maps.event.addListener(this.marker, 'dragend', function() {
		var p = $narrowdownMap.marker.position; // inside event listeners, you need to declare absolute 'jQuery object name' instead of 'this'.
		$narrowdownMap.lat=p.lat();
		$narrowdownMap.lng=p.lng();
		$narrowdownMap.infowindow.setContent(finalHtml);
		$narrowdownMap.infowindow.open($narrowdownMap.map,$narrowdownMap.marker);
	});
	google.maps.event.addListener(this.marker, 'click', function() {
		var p = $narrowdownMap.marker.position; // inside event listeners, you need to declare absolute 'jQuery object name' instead of 'this'.
		$narrowdownMap.lat=p.lat();
		$narrowdownMap.lng=p.lng();
		$narrowdownMap.infowindow.setContent(finalHtml);
		$narrowdownMap.infowindow.open($narrowdownMap.map,$narrowdownMap.marker);
	});
	this.mapInitialized=true;
}

$narrowdownMap.dispMap=function() {
	var address;
	var prefroman=$(":selected","#NDmap_pref").val();
	var citycode=$(":selected","#NDmap_city").val();
	var domain=$(":selected","#NDmap_domain").val();
//	var directstring=$("#NDmap_direct").val();

	if(prefroman.length==0 || citycode.length==0 || domain.length==0) {
		return;
	}
	address=$(':selected','#NDmap_pref').text()+$(':selected','#NDmap_city').text();
	
	// Google maps API ver3.0
	this.geocoder.geocode({ 'address': address, 'country':"ja" }, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {

//if(typeof(console)!=="undefined" && typeof(console.log)!=="undefined") console.log(results[0].types[0]+"　"+results[0].address_components[0].long_name+"　"+results[0].address_components[0].locality );

			var point=results[0].geometry.location;
			$narrowdownMap.map.setZoom(14);
			$narrowdownMap.map.setCenter(point);// inside any functions other than '$narrowdownMap', you need to declare absolute 'jQuery object name' instead of 'this'.
			$narrowdownMap.marker.setPosition(point);
			var p = $narrowdownMap.marker.position;
			$narrowdownMap.lat=p.lat();
			$narrowdownMap.lng=p.lng();
			$narrowdownMap.infowindow.open($narrowdownMap.map,$narrowdownMap.marker);

			$narrowdownMap.mapLoaded=true;
			$("#NDmap #usher").html("病院を探したい場所に<img src=\"img/GMapi/mm_20_yellow.gif\" />をドラッグして移動し、<br />検索するボタンを押してください。");
			$('#Gmap #loading').hide();
			$.scrollTo("#NDmap #usher", {duration: 800, axis:"y" });
		} else {
			alert('住所から場所を特定できませんでした。');
			$narrowdownMap.mapLoaded=false;
		}
	});
}

$narrowdownMap.createYMaker=function(map,latlng) {
	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 markerOptions = { 
		//title: title,
		icon: markerImage,
		shadow: markerShadow,
		position: latlng,
		map: map,
		draggable: true
	}
	var marker = new google.maps.Marker(markerOptions);
	return marker;
}

$narrowdownMap.submit=function() {
	var prefname=$(":selected","#NDmap_pref").text();
	var cityname=$(":selected","#NDmap_city").text();
	var ccd=$(":selected","#NDmap_city").val();
	var dcd=$(":selected","#NDmap_domain").val();
	if(prefname.length==0) {
		alert('都道府県名を指定してください');
		return;
	} else if(cityname.length==0) {
		alert('市名(区名)を指定してください');
		return;
	} else if(dcd.length==0) {
		alert('診療科目(部位症状)を指定してください');
		return;
	} else if(!this.lat || !this.lng) {
		alert('マーカー位置が設定されていません');
		return;
	}
	
if(typeof(console)!=="undefined" && typeof(console.log)!=="undefined") console.log('http://search.10man-doc.co.jp/searchNeighbors.php?ccd='+ccd+'&dmn='+dcd+'&nxt=0&lat='+this.lat+'&lng='+this.lng+'&pref='+encodeURIComponent(prefname)+'&city='+encodeURIComponent(cityname));

	this.saveCookie();
	
	parent.location.href='http://search.10man-doc.co.jp/searchNeighbors.php?ccd='+ccd+'&dmn='+dcd+'&nxt=0&lat='+this.lat+'&lng='+this.lng+'&pref='+encodeURIComponent(prefname)+'&city='+encodeURIComponent(cityname);
}

$narrowdownMap.saveCookie=function() {
	$.cookie('_10mandoc_tab','NDmap',{expires:1});
	var cookie_data="";
	var val=$(":selected","#NDmap_pref").text();
	cookie_data=val; // 都道府県名
	var sel = document.getElementById("NDmap_pref");
	cookie_data=cookie_data+":"+sel.selectedIndex; // 都道府県select要素番号（0〜
	val=$(":selected","#NDmap_city").text();
	cookie_data=cookie_data+":"+val; // 市区郡名
	sel = document.getElementById("NDmap_city");
	cookie_data=cookie_data+":"+sel.selectedIndex; // 市区郡名select要素番号（0〜
	var how = $(':radio[name="NDmap_domain_how"]:checked').val();
	cookie_data=cookie_data+":"+how; // 診療科目or部位症状 radio value
	sel = document.getElementById("NDmap_domain");
	cookie_data=cookie_data+":"+sel.selectedIndex; // 診療科目or部位症状select要素番号（0〜
	$.cookie('_10mandoc_para',cookie_data,{expires:1});
}
$narrowdownMap.loadCookie=function() {
	var cookie_string=$.cookie('_10mandoc_para');
	var cookie_data = cookie_string.split(":");

//	alert(cookie_data[0]+":"+cookie_data[1]+":"+cookie_data[2]+":"+cookie_data[3]+":"+cookie_data[4]+":"+cookie_data[5]);

	var sel = document.getElementById("NDmap_pref");
	sel.options[cookie_data[1]].selected = true;
	var prefroman=$(":selected","#NDmap_pref").val();
	loadCities(prefroman,'NDmap_city');
	sel = document.getElementById("NDmap_city");
	sel.options[cookie_data[3]].selected = true;
	$(':radio[name="NDmap_domain_how"]').val([cookie_data[4]]);
	loadDomain('NDmap_domain_how','NDmap_domain');
	sel = document.getElementById("NDmap_domain");
	sel.options[cookie_data[5]].selected = true;

	$("#NDmap_city").attr('disabled','');
	$('input[name="NDmap_domain_how"]:radio').attr('disabled','');
	$("span#NDmap_domain_how_field").css('color','#121212');
	$("#NDmap_domain").attr('disabled','');
	$("#NDmap #usher").html("病院を探したい場所に<img src=\"img/GMapi/mm_20_yellow.gif\" />をドラッグして移動し、<br />検索するボタンを押してください。");
}

