//MAP処理
var map = null;
var initMsg = "<small>右の地図をクリックすると、この欄に駐車場一覧が表示されます。<br><br>この欄から駐車場名を選択すると、駐車場の位置が地図に表示されます。<br><br>吹き出しに表示される[駐車場詳細情報へ...]をクリックすると、駐車場詳細情報ページにリンクします。<br><br>右上部の【主な施設から検索 】【エリアから検索】で駐車場を絞って検索する事が出来ます。</small>";
var initMapMsg = "※地図をドラッグして動かすことが出来ます。";
var noGoogleMsg = "ご利用のブラウザではGoogleMapを表示できません。";
var noParkingMsg = "対象の駐車場情報は登録されていません。";
var marker = [];
var firstClk = false;

//------------------------------------------------------------------------------
//初期駐車情報リスト表示処理
//------------------------------------------------------------------------------
function initList() {
    createAllList();
    if (GBrowserIsCompatible()) {
        document.getElementById("point").innerHTML = initMapMsg;
    }else{
        document.getElementById("point").innerHTML = noGoogleMsg;
    }
}

//------------------------------------------------------------------------------
//HELP表示処理
//------------------------------------------------------------------------------
function helpList() {
    document.getElementById("list").innerHTML = "<img src='img/help-2.gif' /><br><br>" + initMsg;
    firstClk = false;
}

//------------------------------------------------------------------------------
//駐車場全て出力
//------------------------------------------------------------------------------
function createAllList() {
    var str = "";
    var i;
    
    for (i in parkingData) {
        if (parkingData[i].name == undefined) break;
        str += "<img src='img/" + parkingData[i].state + ".gif' widwh='25' height='25'/> "
        if (map != null){
            str += "<a href='javascript:parkingSelected(" + i + ")'>" + parkingData[i].name + "</a><br>";
        }else{
            if (parkingData[i].data3 != "") {
                str += "("+parkingData[i].data3+")";
            }
            str += "<a href='javascript:parkingSelectedLink(" + i + ")'>" + parkingData[i].name + "</a><br>";
        }
    }

    if (str == "") str = noParkingMsg;
    document.getElementById("list").innerHTML = str;
    firstClk = true;

}

//------------------------------------------------------------------------------
//駐車場一覧(エリア)
//------------------------------------------------------------------------------
function createListArea(areaid) {
    var str = "";
    var i;
    
    for (i in parkingData) {
        if (parkingData[i].name == undefined) break;
        if (parkingData[i].area == areaid) {
            str += "<img src='img/" + parkingData[i].state + ".gif' width='25' height='25' /> "
            if (map != null){
                str += "<a href='javascript:parkingSelected(" + i + ")'>" + parkingData[i].name + "</a><br>";
            }else{
                if (parkingData[i].data3 != "") {
                    str += "("+parkingData[i].data3+")";
                }
                str += "<a href='javascript:parkingSelectedLink(" + i + ")'>" + parkingData[i].name + "</a><br>";
            }
        }
    }

    if (str == "") str = noParkingMsg;
    document.getElementById("list").innerHTML = str;
    firstClk = true;
}

//------------------------------------------------------------------------------
//駐車場一覧(主な施設)
//------------------------------------------------------------------------------
function createListDest(parking) {
    var str = "";
    var strData;
    var i;
    var j;
    
    strData = parking.split(',');
    
    for (j in strData) {
        for (i in parkingData) {
            if (parkingData[i].name == undefined) break;
            if (parkingData[i].id == strData[j]) {
                str += "<img src='img/" + parkingData[i].state + ".gif' width='25' height='25' /> "
                if (map != null){
                    str += "<a href='javascript:parkingSelected(" + i + ")'>" + parkingData[i].name + "</a><br>";
                }else{
                    if (parkingData[i].data3 != "") {
                        str += "("+parkingData[i].data3+")";
                    }
                    str += "<a href='javascript:parkingSelectedLink(" + i + ")'>" + parkingData[i].name + "</a><br>";
                }
//                break;
            }
        }
    }
    
    if (str == "") str = noParkingMsg;
    document.getElementById("list").innerHTML = str;
    firstClk = true;
}

//------------------------------------------------------------------------------
//駐車場選択
//------------------------------------------------------------------------------
function parkingSelected(id) {
    if (map != null) pointById(id);
    //隠し項目データセット
    setDataHidden(id);
    null;
}
//------------------------------------------------------------------------------
//駐車場選択詳細情報遷移(GoogleMapの表示が出来ない場合)
//------------------------------------------------------------------------------
function parkingSelectedLink(id) {
    if (map != null) pointById(id);
    //隠し項目データセット
    setDataHidden(id);
    
    //駐車場詳細情報へ遷移する
    document.formHidden.submit()
    null;
}

//------------------------------------------------------------------------------
//エリアから検索
//------------------------------------------------------------------------------
function areaSelected(id) {

    var i;
    
    //主な施設コンボ初期化
    document.formDest.menu1.selectedIndex = 0;

    for (i in areaData) {
        if (areaData[i].id == id) {

            if (map != null) pointByPanZoom(areaData[i].lat, areaData[i].lng, areaData[i].name, areaData[i].zoom);

            createListArea(areaData[i].id);
        }
    }

}

//------------------------------------------------------------------------------
//主な施設切替処理
//------------------------------------------------------------------------------
function destSelect(targ,selObj,restore){
  if (selObj.options[selObj.selectedIndex].value == "all") {
    eval(targ+".location='javascript:allSelected();'");
  } else {
    eval(targ+".location='javascript:destSelected(\"" + selObj.options[selObj.selectedIndex].value + "\")'");
  }
  
  if (restore) selObj.selectedIndex=0;
}

//------------------------------------------------------------------------------
//主な施設から検索
//------------------------------------------------------------------------------
function destSelected(id) {
    var i;

    //☆マーク削除
    if (document.formHidden.h_dest_no.value != "") {
        if (GBrowserIsCompatible()) {
            map.removeOverlay(marker[document.formHidden.h_dest_no.value]);
        }
    }
    
    for (i in destData) {
        if (destData[i].id == id) {
            document.formHidden.h_dest_no.value = i;
            if (map != null) pointByPanZoom(destData[i].lat, destData[i].lng, destData[i].name, destData[i].zoom);
            //☆マーク配置
            if (GBrowserIsCompatible()) {
                map.addOverlay(marker[i]);
            }
            createListDest(destData[i].parking);
        }
    }
}

//------------------------------------------------------------------------------
//主な施設の初期処理
//------------------------------------------------------------------------------
function initDest() {
    var i;
    for (i in destData) {
        var w_marker = new GMarker(new GPoint(destData[i].lng, destData[i].lat), createDestIcon('hosi'));
        marker[i] = w_marker;
    }
}

//------------------------------------------------------------------------------
//全ての駐車場
//------------------------------------------------------------------------------
function allSelected() {
    if (GBrowserIsCompatible()) {
        map.setCenter(new GLatLng(initParam.lat, initParam.lng), Number(initParam.zoom));
    }
    createAllList();
    document.getElementById("parkinginfo").innerHTML = "駐車場一覧";

}

//------------------------------------------------------------------------------
//GoogleMap初期処理
//------------------------------------------------------------------------------
function initMap() {
    if (!GBrowserIsCompatible()) {
        document.getElementById("map").innerHTML = "<img src='img/kitakyu-map.gif' />";
        return;
    }
    createMarkers();
    createMap();
}

//------------------------------------------------------------------------------
//GoogleMapクリエイト
//------------------------------------------------------------------------------
function createMap() {
    //GoogleMapクリエイト
    map = new GMap2(document.getElementById("map"));
    
    //初期位置・初期縮尺設定
    map.setCenter(new GLatLng(initParam.lat, initParam.lng), Number(initParam.zoom));
    
    //縮尺コントロール設定（large/small/zoom）
    if (initParam.control == "large") map.addControl(new GLargeMapControl());
    else if (initParam.control == "small") map.addControl(new GSmallMapControl());
    else if (initParam.control == "zoom") map.addControl(new GSmallZoomControl());
    
    //地図・衛星写真・両方設定(true/false)
    if (initParam.type == "true") map.addControl(new GMapTypeControl());
    
    //スケール設定(true/false)
    if (initParam.scale == "true") map.addControl(new GScaleControl());
    
    //ビュー設定(true/false)
    if (initParam.view == "true") map.addControl(new GOverviewMapControl());
    
    //マウスドラッグ設定(true/false)
    if (initParam.drag == "false") map.disableDragging();
    
    //駐車場情報ウィンドウ設定(true/false)
    if (initParam.name != undefined) createInitInfoWindow(initParam);
    
    //マウスホイールズーム設定(true/false)
    if (initParam.wheel == "true") {
        if (navigator.userAgent.match("Safari")) document.getElementById("map").onmousewheel = mouseWheelZoom;
        else if (navigator.userAgent.match("Gecko")) document.getElementById("map").addEventListener("DOMMouseScroll", mouseWheelZoom, false);
        else document.getElementById("map").attachEvent("onmousewheel", mouseWheelZoom);
    }
    
//--マウスクリックイベント(緯度・経度取得)
GEvent.addListener(map, "click", function(overlay, point){
    if (firstClk == false) {
        firstClk = true;
        createAllList();
    }

//経度・緯度出力処理
//    if (point != undefined) {
//        var lat = point.lat();
//        var lng = point.lng();
//        var str = "緯度 "+ lat + "／" + "経度 " + lng;
//        document.getElementById("point").innerHTML=str;
//    }
});

    plotAll();
}

//------------------------------------------------------------------------------
//GoogleMapマーカー作成
//------------------------------------------------------------------------------
function createMarkers() {
    var i;
    for (i in parkingData) {
        if (parkingData[i].name == undefined) break;
        parkingData[i].marker = new GMarker(new GLatLng(parkingData[i].lat, parkingData[i].lng), createParkingIcon(parkingData[i].state));
    }
}

//------------------------------------------------------------------------------
//駐車場満空アイコン作成
//------------------------------------------------------------------------------
function createParkingIcon(code){
    var icon = new GIcon();
    icon.image = "img/" +code+"_1.gif";
//    icon.shadow = "img/state2_kage.gif";
    icon.iconSize = new GSize(25, 40);
//    icon.shadowSize = new GSize(20, 20);
    icon.iconAnchor = new GPoint(12,40); 
    icon.infoWindowAnchor = new GPoint(10,10);
    return icon;
}

//------------------------------------------------------------------------------
//主な施設アイコン作成
//------------------------------------------------------------------------------
function createDestIcon(code){
    var icon = new GIcon();
    
    icon.image = "img/" +code+".gif";
    //icon.shadow = "img/shadow.png";
    icon.iconSize = new GSize(24, 67);
    //icon.shadowSize = new GSize(37, 34);
    icon.iconAnchor = new GPoint(12,67); 
    icon.infoWindowAnchor = new GPoint(10,10);
    return icon;
}

//------------------------------------------------------------------------------
//吹き出し初期処理
//------------------------------------------------------------------------------
function createInitInfoWindow(obj){
    var html = createInfoWindowHtml(obj);
    if (html != null) map.openInfoWindowHtml(new GLatLng(obj.lat, obj.lng), html);
}

//------------------------------------------------------------------------------
//吹き出しHTML作成
//------------------------------------------------------------------------------
function createInfoWindowHtml(obj){
    if (obj.name != undefined) {
        var html = "<div style='width:230px'><b>" + obj.name + "</b><br>";
        
        html += "<a href='#' onClick='document.formHidden.submit()'>[ 駐車場詳細情報へ... ]</a><br>";
        if (obj.data2 != ""){
          html += "<a href='#' onClick='document.formHidden.submit()'><img src='../pswb/img/" + obj.data2 + ".jpg' border='0'></a>";
        }
        return html + "</div>";
    }
    return null;
}

//------------------------------------------------------------------------------
//満空アイコン配置（全て）
//------------------------------------------------------------------------------
function plotAll() {
    if (GBrowserIsCompatible()) {
        map.clearOverlays();
    }
    var i;
    for (i in parkingData) {
        
        if (parkingData[i].name == undefined) break;
        plotCommon(i);
    }
}

//------------------------------------------------------------------------------
//満空アイコン配置（内部処理）
//------------------------------------------------------------------------------
function plotCommon(id) {
    if (GBrowserIsCompatible()) {
        map.addOverlay(parkingData[id].marker);
    }
    var html = createInfoWindowHtml(parkingData[id]);
    GEvent.addListener(parkingData[id].marker, "click", function() {
        this.openInfoWindowHtml(html);
        //隠し項目データセット
        setDataHidden(id);
    });
}

//------------------------------------------------------------------------------
//該当駐車場への移動・吹き出し出力処理
//------------------------------------------------------------------------------
function pointById(id) {
    if (GBrowserIsCompatible()) {
        map.panTo(new GLatLng(parkingData[id].lat, parkingData[id].lng));
    }
    parkingData[id].marker.openInfoWindowHtml(createInfoWindowHtml(parkingData[id]));
}

//------------------------------------------------------------------------------
//該当エリアへの移動処理
//------------------------------------------------------------------------------
function pointByPanZoom(lat, lng, name, zoom) {
    if (GBrowserIsCompatible()) {
        map.setCenter(new GLatLng(lat, lng), Number(zoom));
    }
    document.getElementById("parkinginfo").innerHTML = name + "周辺駐車場一覧";
}

//------------------------------------------------------------------------------
//縮尺変更マウスホイール処理
//------------------------------------------------------------------------------
function mouseWheelZoom(event) {
    var delta = event.wheelDelta;
    if (navigator.userAgent.match("MSIE") || navigator.userAgent.match("Safari")) {
        delta = event.wheelDelta;
        event.returnValue = false;
    } else {
        delta = event.detail * -1;
        event.preventDefault();
    }
    if (GBrowserIsCompatible()) {
        map.setZoom(map.getZoom() + (delta > 0 ? 1 : -1));
    }
}

//------------------------------------------------------------------------------
//GoogleMapクリア処理
//------------------------------------------------------------------------------
function clearMap() {
    if (map != null) GUnload();
}

