var map;
// 初期表示時の中心座標
var defaultCenter = gp(35.7097401, 140.226037);
// マーカーを管理する配列
var markers = new Array();

var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(40, 35);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 0);

function gp(x, y){
    return new GLatLng(x, y);
}

function load(id, ctr1, ctr2, ctr3, z){
    map = new GMap2($('#' + id)[0]);
    switch (ctr1) {
        case "L":
            map.addControl(new GLargeMapControl());
            break;
        case "S":
            map.addControl(new GSmallMapControl());
            break;
    }
    if (ctr2 == 1) {
        map.addControl(new GScaleControl())
    };
    if (ctr3 == 1) {
        map.addControl(new GMapTypeControl())
    };
    var zoom = (zoom == "") ? "13" : z;
    map.setCenter(defaultCenter, zoom);
}

function addMarker(lat, lng, bank, branch, address, bank_id){
    // マーカー画像の指定
	var icon = new GIcon(baseIcon);
	switch (bank_id) {
		case '0001':
			icon.image = "/images/gicon_mizuho.png";
			break;
		case '0005':
			icon.image = "/images/gicon_mufg.png";
			break;
		case '0009':
			icon.image = "/images/gicon_smbc.png";
			break;
		case '0010':
		case '0017':
			icon.image = "/images/gicon_resona.png";
			break;
	}
    var marker = new GMarker(new GPoint(lng, lat), icon);

    map.addOverlay(marker);
    markers.push(marker);

	GEvent.addListener(marker, "mouseover", function(){
		openInfoWindow(lat, lng, bank, branch, address, bank_id);
	});
}

function openInfoWindow(lat, lng, bank, branch, address, bank_id)
{
	switch (bank_id) {
		case '0001':
			url = 'http://www.mizuhobank.co.jp/';
			break;
		case '0005':
			url = 'http://www.bk.mufg.jp/';
			break;
		case '0009':
			url = 'http://www.smbc.co.jp/';
			break;
		case '0010':
			url = 'http://www.resona-gr.co.jp/resonabank/';
			break;
		case '0017':
			url = 'http://www.resona-gr.co.jp/saitamaresona/';
			break;
	}
	html = "<span class='bold'>" + bank + "</span><br /><a href='/branch/detail/" + bank + "/" + branch + "/'>" + branch + "</a><br />" + address;
	map.openInfoWindowHtml(new GLatLng(lat, lng), html, new GSize(0, -20));
}

function putMarkerRange(zlv){
    var gb;
    var first = 1;

    // マーカーが無ければ何もしない
    if (markers.length < 1) {
        return;
    }

    // 1個目の
    for (var index = 0; index < markers.length; index++) {
        var marker = markers[index];
        if (first) {
            gb = new GLatLngBounds(marker.getPoint(), marker.getPoint());
            first = 0;
        }
        else {
            var point = marker.getPoint();
            gb.extend(point);
        }
    }

    map.setCenter(gb.getCenter(), map.getBoundsZoomLevel(gb) + zlv);
}

function clearMarker(){
    // 配列で保持しているマーカーを順次削除
    while (markers.length > 0) {
        var m = markers.shift();
        // マーカーのイベントを削除
        GEvent.clearInstanceListeners(m);
        // マーカーを削除
        map.removeOverlay(m);
    }
}

$(window).unload(function(){
    GUnload();
});
