﻿var hminfoData;				// ハザードマップ情報データを格納する。
var oldaddress = '';		// 処理済の住所名。
var oldzipcode = '';		// 処理済の郵便番号。
var hazardCodeNow = '0';	// 現在のハザードマップコード。
var NoAddress = '<ul><li>該当する住所はありません。</li></ul>';

// 初期化処理。
$(function(){
	$('#candidate').empty();
});

// ハザードマップ情報データを読み込みます。
function loadHmInfoData(hazardCode)
{
	hazardCodeNow = hazardCode;
	
	$.get('../uty/hminfo/' + hazardCode + '.txt',function(data){
		hminfoData = data.split('\n');
		searchAddress(true);
	});
}

// 郵便番号データを読み込みます。
function loadZipData(filename)
{
	$.get(filename, function(data){
			parseZipData(data);
	});
}

// 郵便番号から検索します。
function searchZipCode(redo)
{
	var zipcode = toFigure($('#txtZipCode').val());
	
	if (redo == false && oldzipcode == $('#txtZipCode').val()) return;
	
	var n = zipcode.substring(0,3);
	
	if (n.length < 3)
	{
		$('#candidate').empty();
		oldzipcode = '';
		return;
	}
	
	loadZipData('../uty/zipinfo/'+n+'.txt');
	oldzipcode = $('#txtZipCode').val();
}

// 住所から検索します。
function searchAddress(redo)
{
	var address = $('#txtAddress').val();
	
	//if (redo) alert(address);
	
	if (redo == false && oldaddress == address) return;
	
	if (address == '')
	{
		$('#candidate').empty();
		oldaddress = '';
		return;
	}
	
	parseAddress(address);
	oldaddress = address;
}

// 指定した郵便番号の住所一覧を表示します。
function parseZipData(zipData)
{
	var list = zipData.split('\n');
	var zipcode = toFigure($('#txtZipCode').val());
	var cities = new Array();
	var candidate = '<ul>';
	
	for (var i = 0; i < list.length; i++)
	{
		var item = list[i].split('\t');
		if (item[0].indexOf(zipcode) > -1)
		{
			var flag = false;
			var citiesName = item[2].replace('\r',''); //.substr(0,item[2].length-1);
			for (var j = 0; j < cities.length; j++)
			{
				if (cities[j] == citiesName)
				{
					flag = true;
					break;
				}
			}
			if (flag == false) cities.push(citiesName);
		}
	}
	
	for (var i = 0; i < cities.length; i++)
	{
		var citiesCode = getCitiesCode(cities[i]);
		candidate += '<li><a href="javascript:showHazardMapInfo(' + citiesCode + ', true);" title="' + cities[i] + '">&raquo;&nbsp;' + cities[i] + '</a></li>';
	}
	
	$('#candidate').html((candidate == '<ul>') ? NoAddress : candidate + '</ul>');
}

// 指定した住所を含む住所一覧を表示します。
function parseAddress(address)
{
	var candidate = $('<ul></ul>');
	
	for (var i = 0; i < hminfoData.length; i++)
	{
		if (hminfoData[i].indexOf(address) > -1)
		{
			var item = hminfoData[i].split('\t');
			var li = $('<li><a href="javascript:showHazardMapInfo(' + item[0] + ', true);" title="' + item[1] + item[2] + '">&raquo;&nbsp;' + item[1] + item[2] + '</a></li>');
			li.mouseover(function(no){ return function(){ showHazardMapInfo(no); } }(item[0]));
			candidate.append(li);
		}
	}
	$('#candidate').html(candidate.children().is('li') ? candidate : NoAddress);
}

// 市町村名から市町村コードを取得します。
function getCitiesCode(citiesName)
{
	for (var i = 0; i < hminfoData.length; i++)
	{
		var item = hminfoData[i].split('\t');
		if (item[2] == citiesName) return item[0];
	}
	return 0;
}

// 市町村コードからハザードマップ情報を取得します。
function getHazardMapInfo(citiesCode)
{
	for (var i = 0; i < hminfoData.length; i++)
	{
		var item = hminfoData[i].split('\t');
		if (item[0] == citiesCode)
		{
			var hminfo = {
				'citiesCode': item[0].replace('\r',''),
				'prefName': item[1].replace('\r',''),
				'citiesName': item[2].replace('\r',''),
				'charge': item[3].replace('\r',''),
				'address': item[4].replace('\r',''),
				'tel': item[5].replace('\r',''),
				'url': item[6].replace('\r','')}
			return hminfo;
		}
	}
	return null;
}

// ハザードマップ情報を表示します。
function showHazardMapInfo(citiesCode, urlOpen)
{
	if (citiesCode == 0)
	{
		$('#hazardinfo').html('<ul><li>ハザードマップ情報はありません。</li></ul>');
		return;
	}
	
	var hminfo = getHazardMapInfo(citiesCode);
	
	if (hminfo == undefined)
	{
		$('#hazardinfo').html('<ul><li>ハザードマップ情報はありません。</li></ul>');
		return;
	}
	
	var html = '<ul>';
	
	html += '<li style="font-size:1.2em;font-weight:bold;">' + hminfo.prefName + hminfo.citiesName + '</li>';
	html += '<li style="margin-bottom:0.5em;">' + hminfo.charge + '</li>';
	html += '<li>' + hminfo.address + '</li>';
	html += '<li style="margin-bottom:0.5em;">TEL:' + hminfo.tel + '</li>';
	
	if (hminfo.url == undefined || hminfo.url.substr(0,4) != 'http') {
		html += '<li>公開URLはありません</li>';
	} else {
		html += '<li class="openinglink"><a href="' + hminfo.url + '" title="' + hminfo.prefName + hminfo.citiesName + 'の公開URLを開く" onclick="return openWin(\'' + hminfo.url + '\');" onkeypress="return openWin(\'' + hminfo.url + '\');">&raquo;&nbsp;公開URLを開く</a></li>';
		if (urlOpen) openWin(hminfo.url);
	}
	
	html += '</ul>';
	
	$('#hazardinfo').html(html);
}

