var MAX_HEIGHT = 376;
var def_duration = 500;
var fps = 50;
var mapData = {
	'nagoya': {
		'msg': '<span style="font-size:12px;color:#333333;"><b>アクアリング 名古屋本社オフィス</b><br />栄ミナミ平和ビル7階</span>',
		'lat': 35.165623,
		'lng': 136.904526
	},
	'tokyo': {
		'msg': '<span style="font-size:12px;color:#333333;"><b>\u30a2\u30af\u30a2\u30ea\u30f3\u30b0　\u6771\u4EAC\u30AA\u30D5\u30A3\u30B9</b><br />MINAMIAOYAMA STUDIO FLAT402</span>',
		'lat': 35.670005,
		'lng': 139.72644
	}
};
var maps = {};
var N_A = !!(document.layers || navigator.userAgent.indexOf('MSIE 5') >= 0);
addEventToElement(window, 'load', function () {
	if (N_A) {
		alert('Netscape 4.x および MSIE 5.x 以下では、地図は正常に表示されません。\nご了承ください。');
		return;
	}
	for (var tgt in mapData) {
		var data = mapData[tgt];
		var dist = document.getElementById("map-dist-" + tgt);
		if (!dist)	continue;
		var width = dist.parentNode.parentNode.clientWidth || dist.parentNode.parentNode.scrollWidth;
		dist.style.width = width + 'px';
		var map = maps[tgt] = new GMap2(dist);
		//地図の座標を取得
		map.setCenter(new GLatLng(data.lat, data.lng), 17);
		//パン移動とスライダーズームの使える大きなコントロール
		map.addControl(new GLargeMapControl());
		//マーカーを追加    
		var point  = new GLatLng(data.lat, data.lng);
		var marker = new GMarker(point);
		map.addOverlay(marker);
		//情報ウインドウ表示
		map.openInfoWindowHtml(map.getCenter(), data.msg);
	}
});
var mapStatus = { 'nagoya': 'closed', 'tokyo': 'closed' };
function toggleMap(link, tgt) {
	if (N_A) return false;
	if (!maps[tgt])	return true;
	if (mapStatus[tgt] != 'open' && mapStatus[tgt] != 'closed')	return true;
	var status = mapStatus[tgt];
	var el = maps[tgt].getContainer().parentNode;
	var start = (status == 'closed' ? 0 : MAX_HEIGHT );
	var end = MAX_HEIGHT - start;
	mapStatus[tgt] = (status == 'closed' ? 'opening' : 'closing' );
	animateHeight(el, start, end, {
		transition: (status == 'closed' ? 'elastic' : 'normal' ),
		duration: (status == 'closed' ? 1000 : 300 ),
		onComplete: function () {
			mapStatus[tgt] = (status == 'closed' ? 'open' : 'closed' );
			link.innerHTML = 'MAP' + (status == 'closed' ? ' [-]' : ' [+]' );
		}
	});
	return true;
}
var Transitions = {
	normal: function (p) {
		return Math.sin(p * Math.PI / 2);
	},
	elastic: function (p) {
		return 1 - Math.pow(2, -10 * p) * Math.cos(-20 * p * Math.PI / 3);
	}
}
function animateHeight(el, start, end, opts) {
	opts = opts || {};
	var duration = opts.duration || def_duration;
	var transition = Transitions[opts.transition] || Transitions['normal'];
	var MAX_COUNT = duration * fps / 1000;
	var INTERVAL = 1000 / fps;
	var count = 0;
	var time = new Date().getTime();
	el.style.display = 'block';
	(function () {
		var dtime = new Date().getTime() - time;
		if (dtime > duration || count >= MAX_COUNT) {
			el.style.height = end + 'px';
			if (opts.onComplete)	opts.onComplete();
		} else {
//			var delta = transition(count / MAX_COUNT);
			var delta = transition(dtime / duration);
			var height = start + delta * (end - start);
			el.style.height = Math.floor(height) + 'px';
			++count;
			setTimeout(arguments.callee, INTERVAL);
		}
	})();
}

