﻿var COL_HOUSENO         = "HOUSENO";        //物件No
var COL_HOUSENAM        = "HOUSENAM";       //物件名略
var COL_PRICE           = "PRICE";          //価格
var COL_ROOMDTL         = "ROOMDTL";        //間取詳細
var COL_TIKUNEN         = "TIKUNEN"         //築年数
var COL_VOLUME          = "VOLUME"          //容積
//var COL_RATIO           = "RATIO"           //建ぺい率
var COL_LAT             = "LAT";            //緯度
var COL_LNG             = "LNG";            //経度
var COL_MAPCENTERNO     = "MAPCENTERNO";    //マップ中心No
var COL_MAPCENTERNAM    = "MAPCENTERNAM";   //マップ中心名称
var COL_ZOOMLEVEL       = "ZOOMLEVEL";      //ズームレベル
var COL_SEEKPRICENO     = "SEEKPRICENO";    //検索価格No
var COL_PRICE           = "PRICE";            //価格
var COL_SEEKPRICENAM    = "SEEKPRICENAM";    //検索価格名称
var COL_ROOMNO          = "ROOMNO";            //間取りNo
var COL_ROOMNAM         = "ROOMNAM";        //間取り名称
var COL_TYPENO          = "TYPENO";            //物件種別No
var COL_TYPENAM         = "TYPENAM";        //物件種別名称
var COL_TRANSE          = "TRANSE";         //交通機関
var COL_ADDRESS1        = "ADDRESS1";       //住所１
var COL_YEARS           = "YEARS";          //築年数
var COL_SUNSHINY        = "SUNSHINY";       //主な採光面
var COL_PARKING         = "PARKING";        //駐車場
var COL_TERRAIN         = "TERRAIN";        //地勢
var COL_DELIVERY        = "DELIVERY";       //引渡
var COL_NOWSTATE        = "NOWSTATE";       //現況
var COL_STAIR           = "STAIR";          //所在階
var COL_STAIRS          = "STAIRS";         //階数
var COL_HOUSES          = "HOUSES";         //総戸数
var COL_EQUIPMENT       = "EQUIPMENT";      //設備
var COL_REMARKS         = "REMARKS";        //備考
var COL_REPAIR          = "REPAIR";         //修繕積立金
var COL_MANAGEFEE       = "MANAGEFEE";      //管理費
var COL_MANAGE          = "MANAGE";         //管理
var COL_STRUCT          = "STRUCT";         //構造
var COL_RANGE           = "RANGE";          //建ぺい率
var COL_DISTRICT        = "DISTRICT";       //用途地域
var COL_REGEDATETIME    = "REGEDATETIME";   //登録日
var COL_TIEMLIMIT       = "TIEMLIMIT";      //有効期限
var COL_ROOMNAM         = "ROOMNAM";        //間取り名称
var COL_TYPENAM         = "TYPENAM";        //物件種別名称
var COL_LANDAREA        = "LANDAREA";       //土地の広さ
var COL_BLDGAREA        = "BLDGAREA";       //建物の広さ

var MONEY_UNIT          = "万円"            //金額の単位
var MONEY_UNIT_AMOUNT   = 10000             //金額の単位額
var gMap;                            //GMap2オブジェクト
var gHouseMarker = new Array();        //物件マーカー
var gCenterMarker = new Array();    //中心点マーカー
var gList = new Array();            //全てのリスト
var gHouseIconClick = false;        //物件アイコンクリックフラグ

//====================================================================================
//概要　　：　ロード時（イベント）
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
window.onload = function () {
    if (GBrowserIsCompatible()) {
        gMap = new GMap2(document.getElementById("map"));
        GEvent.addListener(gMap, "moveend", function(){ gMap_moveend(); });
        //GEvent.addListener(gMap, "dragend", function(){ gMap_moveend(); });
        GEvent.addListener(gMap, "zoomend", function(oldLevel, newLevel){ gMap_zoomend(oldLevel, newLevel); });

        gMap.addControl(new GSmallMapControl());     //ズーム・移動用コントロール追加
        gMap.addControl(new GScaleControl());        //スケールコントロール追加
        gMap.disableDoubleClickZoom();

        gMap.setCenter(new GLatLng(34.39743771962903, 132.475483417511), 10, G_NORMAL_MAP);    //実行エラー回避

        //マップ中心
        mapcenter();
        
        //検索条件設定
        SetHouseIcon(true);
    }
};

//メモリリークを防ぐ
window.onunload = GUnload;

//====================================================================================
//概要　　：　マップ移動時（イベント）
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
function gMap_moveend() {
    var latlng;
    latlng = gMap.getCenter();
    document.getElementById("lat").value = latlng.lat();
    document.getElementById("lng").value = latlng.lng();
    
    var rect = gMap.getBounds();
    latlng = rect.getNorthEast();
    document.getElementById("latne").value = latlng.lat();
    document.getElementById("lngne").value = latlng.lng();
    latlng = rect.getSouthWest();
    document.getElementById("latsw").value = latlng.lat();
    document.getElementById("lngsw").value = latlng.lng();
    
    if (gHouseIconClick == true) {
        //検索条件設定
        SetHouseIcon(false);
    } else {
        SetHouseIcon(true);
    }
    gHouseIconClick = false;
}

//====================================================================================
//概要　　：　ズーム処理終了時（イベント）
//引数　　：　oldLevel
//　　　　　　newLevel
//戻り値　：　なし
//====================================================================================
function gMap_zoomend(oldLevel, newLevel) {
    //レベル17以上の場合、ズームインを無効にする
    if (newLevel >= 17) {
        gMap.setZoom(oldLevel);
    }
}

//====================================================================================
//概要　　：　マーカーを作成する
//引数　　：　point   ･･･ 位置オブジェクト
//　　　　　　html    ･･･ ポップアップHTML
//　　　　　　HouseNo ･･･ 物件番号
//            TypeNam ･･･ 物件種別名
//戻り値　：　なし
//====================================================================================
function createMarker(point, html, HouseNo, TypeNam) {
    var customMarkerObj;
    var marker;
    var ImageURL;

    customMarkerObj = new GIcon();
    switch (TypeNam) {
        //土地、中古、新築、マンション、その他
        case "土地":
            ImageURL = "Images/mapicon_tochi.gif"
            break;
        case "中古":
            ImageURL = "Images/mapicon_kodate.gif"
            break;
        case "新築":
            ImageURL = "Images/mapicon_kodate.gif"
            break;
        case "マンション":
            ImageURL = "Images/mapicon_mantion.gif"
            break;
        default:
            ImageURL = "Images/logo.png"
    }
    customMarkerObj.image = ImageURL;
    customMarkerObj.iconSize = new GSize(40,40);
    customMarkerObj.iconAnchor = new GPoint(15,15);
    customMarkerObj.infoWindowAnchor = new GPoint(15, 15);

    marker = new GMarker(point, customMarkerObj);
            
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml(html);
        gHouseIconClick = true;
    });

    return marker;
}

//====================================================================================
//概要　　：　リンクからマーカーインフォ表示
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
function nameclick(number) {
    GEvent.trigger(gHouseMarker[number], 'click');
}

//====================================================================================
//概要　　：　検索ボタン押下時
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
function SearchHouse(){
    SetHouseIcon(true);
}

//====================================================================================
//概要　　：　物件アイコンを設定する
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
function SetHouseIcon(IconReShow){
    var request = GXmlHttp.create();    //Requestオブジェクト
    request.onreadystatechange = function() {
        var xmlDoc;        //responseXML
        var markers;    //documentElement(markers)
        var point;        //GPoint
        var html;        //表示するHTML
        var marker;        //marker
        var i;          //カウンタ
        var houseno;    //物件No
        var name;       //名前
        var price       //価格
        var roomdtl;    //間取詳細
        var tikunen;    //築年数
        var LandArea;   //土地の広さ
        var BldgArea;   //建物の広さ
        var roomnam;    //間取り名称
        var typenam;    //物件種別名称
        
        if (request.readyState == 4) {
            if (IconReShow == true) {
                gMap.clearOverlays();   //マップアイコン削除
            }

            try{
                xmlDoc = request.responseXML;
            } catch(e) {
                xmlDoc = null;
            }
            if (xmlDoc.documentElement != null) {
                markers = xmlDoc.documentElement.getElementsByTagName("data");

                gList = new Array();

                for (i = 0; i < markers.length; i++) {
                    with(markers[i]){
                        houseno = getAttribute(COL_HOUSENO);
                        point   = new GLatLng(parseFloat(getAttribute(COL_LAT)), parseFloat(getAttribute(COL_LNG)));
                        name    = getAttribute(COL_HOUSENAM);
                        price   = getAttribute(COL_PRICE) / MONEY_UNIT_AMOUNT;      //価格
                        roomdtl = getAttribute(COL_ROOMDTL);    //間取詳細
                        tikunen = getAttribute(COL_TIKUNEN);    //築年数
                        LandArea= getAttribute(COL_LANDAREA);   //土地の広さ
                        BldgArea= getAttribute(COL_BLDGAREA);   //建物の広さ
                        roomnam = getAttribute(COL_ROOMNAM);    //間取り名称
                        typenam = getAttribute(COL_TYPENAM);    //物件種別名称
                    }
                    
                    if (IconReShow == true) { 
                        html = '<table class="pop">'
                             + '<tr><th class="pop" colspan="2"><b id="small">' + name + '</b></th></tr>'          /*名前*/
                             + '<tr><th class="pop">価格</th><td class="pop">' + getValueTani(price, MONEY_UNIT) + '</td></tr>'        /*価格*/
                             + '<tr><th class="pop">間取</th><td class="pop">' + roomnam + '</td></tr>'          /*間取*/
                             + '<tr><th class="pop">間取詳細</th><td class="pop">' + roomdtl + '</td></tr>'          /*間取詳細*/
                             + '<tr><th class="pop">築年数</th><td class="pop">' + getValueTani(tikunen, '年') + '</td></tr>'      /*築年数*/
                             + '<tr><th class="pop">土地面積</th><td class="pop">' + getValueTani(LandArea, '平米') + '</td></tr>'     /*土地面積*/
                             + '<tr><th class="pop">建物面積</th><td class="pop">' + getValueTani(BldgArea, '平米') + '</td></tr>'      /*建物面積*/
//                             + '<tr><th class="pop">写真（外観）：</th><td class="pop">' + '' + '</td></tr>'       /*写真（外観）*/
                             + '</table>';
                        marker = createMarker(point, html, houseno, typenam);
                        gMap.addOverlay(marker);
                        gHouseMarker[houseno] = marker;
                    }

                    gList[i] = '<tr>'
//                            + '<td ><input type="checkbox"></td>'    /*チェック*/
                            + '<td style="width:350px"><a href="javascript: void(0);" onclick="javascript: nameclick(' + houseno + ')";>' + name + '</a></td>'
                            + '<td style="width:100px">' + typenam + '</td>'            /*物件種別名称*/
                            + '<td style="width:100px">' + roomnam + '</td>'            /*間取り*/
                            + '<td style="width:147px;text-align:right">' + price   + MONEY_UNIT + '</td>'        /*価格*/
                            + '</tr>'
                }
                //物件一覧の描画
                html = '<div class="dataGridContent">'
                     + '  <table cellpadding="0" cellspacing="0" class="scrolltablestyle">'
                     + '    <thead cellpadding="0" cellspacing="0">'
                     + '      <tr class="scrolltablestyle">'
                     + '        <th style="width:350px">名称</th>'
                     + '        <th style="width:100px">種別</th>'
                     + '        <th style="width:100px">間取</th>'
                     + '        <th style="width:147px">価格</th>'
                     + '      </tr>'
                     + '    </thead>'
                     + '    <tbody>'

                for(i = 0; i < markers.length; i++) {
                    html = html + gList[i];
                }
                html = html + '</tbody></table></div>';
                document.getElementById("result").innerHTML = html;
                
                if (markers.length <= 0) {
                    //データがない場合は、検索結果
                    document.getElementById('result').innerHTML = "指定した条件で物件が見つかりません。";
                }
            }
            else{
                //データがない場合は、検索結果
                document.getElementById('result').innerHTML = "指定した条件で物件が見つかりません。";
            }
        }
    }

    var latne = document.forms[0].elements["latne"].value;
    var lngne = document.forms[0].elements["lngne"].value;
    var latsw = document.forms[0].elements["latsw"].value;
    var lngsw = document.forms[0].elements["lngsw"].value;
    var price1 = document.forms[0].elements["cmbPrice1"].value;
    var price2 = document.forms[0].elements["cmbPrice2"].value;
    var BldgArea1 = document.forms[0].elements["cmbBldgArea1"].value;
    var BldgArea2 = document.forms[0].elements["cmbBldgArea2"].value;
    var LandArea1 = document.forms[0].elements["cmbLandArea1"].value;
    var LandArea2 = document.forms[0].elements["cmbLandArea2"].value;
    
    var cnt = 0;
    var hometype = "";
    var ctrlname = "";
    for (cnt=0; cnt<=100; cnt++) {
        ctrlname = "chkHomeType_" + cnt;
        if (document.forms[0].elements[ctrlname] != null) {
            if (document.forms[0].elements[ctrlname].checked == true) {
                if (hometype != "") {
                    hometype += ",";
                }
                hometype += cnt;
            }
        }
    }

    var madori = "";
    for (cnt=0; cnt<=100; cnt++) {
        ctrlname = "chkMadori_" + cnt;
        if (document.forms[0].elements[ctrlname] != null) {
            if (document.forms[0].elements[ctrlname].checked == true) {
                if (madori != "") {
                    madori += ",";
                }
                madori += document.forms[0].elements[ctrlname].value;
            }
        }
    }
    var param = "latne="   + latne
              + "&lngne="  + lngne
              + "&latsw="  + latsw
              + "&lngsw="  + lngsw
              + "&price1=" + price1
              + "&price2=" + price2
              + "&hometype=" + hometype
              + "&madori=" + madori
              + "&bldgarea1=" + BldgArea1
              + "&bldgarea2=" + BldgArea2
              + "&landarea1=" + LandArea1
              + "&landarea2=" + LandArea2;
    request.open("GET", "./Services/gethousehed.aspx?" + param, true);   //IE用にパラメータを渡す
    request.send(param);                                        //fire fox用にパラメータを渡す
//    document.getElementById("debug").innerHTML = param;
}

//====================================================================================
//概要　　：　マップ中心点のHTML表示
//引数　　：　なし
//戻り値　：　なし
//====================================================================================
function mapcenter(){
    var name;
    var reg;
    var xmlDoc;        //responseXML
    var markers;    //documentElement(markers)

    var request = GXmlHttp.create();    //Requestオブジェクト
    request.onreadystatechange = function() {
        var xmlDoc;        //responseXML
        var rows;        //documentElement("data")
        var html;        //表示するHTML
        var lat;        //緯度
        var lng;        //経度
        var i;          //カウンタ
        var name;       //名前
        var mapcenterno;    //マップ中心No
        var zoomlevel   //ズームレベル
        
        if (request.readyState == 4) {
            document.getElementById('mapcenter').innerHTML = "";
            
            try{
                xmlDoc = request.responseXML;
            } catch(e) {
                xmlDoc = null;
            }
            if (xmlDoc.documentElement != null) {
                rows = xmlDoc.documentElement.getElementsByTagName("data");
                
                html = ""
                for (i = 0; i < rows.length; i++) {
                    with(rows[i]){
                        mapcenterno = getAttribute(COL_MAPCENTERNO);            //マップ中心名称
                        name        = getAttribute(COL_MAPCENTERNAM);           //マップ中心名称
                        lat         = parseFloat(getAttribute(COL_LAT));        //緯度
                        lng         = parseFloat(getAttribute(COL_LNG));        //経度  
                        zoomlevel   = parseFloat(getAttribute(COL_ZOOMLEVEL));  //ズームレベル
                    }
                    
                    if (mapcenterno == "0"){
                        //初期表示の中心位置を設定
                        gMap.setCenter(new GLatLng(lat, lng), zoomlevel);    //中心位置を指定
                    }

                    html += "<a href='javascript: void(0);' onclick='javascript: centerclick(" + lat + "," + lng + "," + zoomlevel + ");'>" + name + "</a> ";
                }
                document.getElementById("mapcenter").innerHTML = html;
            }
        }
    }

    request.open("GET", "./Services/getmapcenter.aspx", true);
    request.send(null);
}
//====================================================================================
//概要　　：　マップの中心位置を移動する
//引数　　：　lat       ･･･ 緯度
//　　　　　　lng       ･･･ 経度
//　　　　　　zoomLevel ･･･ ズームレベル
//戻り値　：　なし
//====================================================================================
function centerclick(lat, lng, zoomLevel){
    gMap.setCenter(new GLatLng(lat, lng), zoomLevel);        //中心位置を指定
}

//====================================================================================
//概要　　：　物件詳細表示
//引数　　：　HouseNo ･･･ 物件番号
//戻り値　：　なし
//====================================================================================
function housedtl(HouseNo){
    var reg;
    var xmlDoc;        //responseXML
    var markers;    //documentElement(markers)

    var request = GXmlHttp.create();    //Requestオブジェクト
    request.onreadystatechange = function() {
        var xmlDoc;            //responseXML
        var rows;            //documentElement("data")
        var html;            //表示するHTML
        var i;              //カウンタ
        var houseno;        //物件No
        var transe;         //交通機関
        var address1;       //住所１
        var roomdtl;        //間取詳細
        var price;          //価格
        var years;          //築年数
        var sunshiny;       //主な採光面
        var parking;        //駐車場
        var terrain;        //地勢
        var delivery;       //引渡
        var nowstate;       //現況
        var stair;          //所在階
        var stairs;         //階数
        var houses;         //総戸数
        var equipment;      //設備
        var remarks;        //備考
        var repair;         //修繕積立金
        var managefee;      //管理費
        var manage;         //管理
        var struct;         //構造
        var range;          //建ぺい率
        var volume;         //容積率
        var district;       //用途地域
        var regedatetime;   //登録日
        var tiemlimit;      //有効期限
        
        if (request.readyState == 4) {
            xmlDoc = request.responseXML;
            rows = xmlDoc.documentElement.getElementsByTagName("data");
            
            html = ""
            for (i = 0; i < rows.length; i++) {
                with(rows[i]){
                    houseno     = getAttribute(COL_HOUSENO)         //物件No
                    transe      = getAttribute(COL_TRANSE)          //交通機関
                    address1    = getAttribute(COL_ADDRESS1)        //住所１
                    roomdtl     = getAttribute(COL_ROOMDTL)         //間取詳細
                    price       = getAttribute(COL_PRICE)           //価格
                    years       = getAttribute(COL_YEARS)           //築年数
                    sunshiny    = getAttribute(COL_SUNSHINY)        //主な採光面
                    parking     = getAttribute(COL_PARKING)         //駐車場
                    terrain     = getAttribute(COL_TERRAIN)         //地勢
                    delivery    = getAttribute(COL_DELIVERY)        //引渡
                    nowstate    = getAttribute(COL_NOWSTATE)        //現況
                    stair       = getAttribute(COL_STAIR)           //所在階
                    stairs      = getAttribute(COL_STAIRS)          //階数
                    houses      = getAttribute(COL_HOUSES)          //総戸数
                    equipment   = getAttribute(COL_EQUIPMENT)       //設備
                    remarks     = getAttribute(COL_REMARKS)         //備考
                    repair      = getAttribute(COL_REPAIR)          //修繕積立金
                    managefee   = getAttribute(COL_MANAGEFEE)       //管理費
                    manage      = getAttribute(COL_MANAGE)          //管理
                    struct      = getAttribute(COL_STRUCT)          //構造
                    range       = getAttribute(COL_RANGE)           //建ぺい率
                    volume      = getAttribute(COL_VOLUME)          //容積率
                    district    = getAttribute(COL_DISTRICT)        //用途地域
                    regedatetime= getAttribute(COL_REGEDATETIME)    //登録日
                    tiemlimit   = getAttribute(COL_TIEMLIMIT)       //有効期限
                }
                
                html += "<table class='lne' style='width:100%'>";
                html += "<tr><th class='lne'>交通機関  </th><td class='lne' colspan=5>" + transe       + "</td></tr>";
                html += "<tr><th class='lne'>住所      </th><td class='lne' colspan=5>" + address1     + "</td></tr>";
                html += "<tr><th class='lne'>間取詳細  </th><td class='lne' colspan=5>" + roomdtl      + "</td></tr>";
                html += "<tr><th class='lne'>価格      </th><td class='lne'>"           + price        + "</td>";
                html +=     "<th class='lne'>築年数    </th><td class='lne'>"           + years        + "</td>";
                html +=     "<th class='lne'>主な採光面</th><td class='lne'>"           + sunshiny     + "</td></tr>";
                html += "<tr><th class='lne'>駐車場    </th><td class='lne'>"           + parking      + "</td>";
                html +=     "<th class='lne'>地勢      </th><td class='lne'>"           + terrain      + "</td>";
                html +=     "<th class='lne'>引渡／現況</th><td class='lne'>"           + delivery + "／" + nowstate + "</td></tr>";
                html += "<tr><th class='lne'>所在階    </th><td class='lne'>"           + stair        + "</td>";
                html +=     "<th class='lne'>階数      </th><td class='lne'>"           + stairs       + "</td>";
                html +=     "<th class='lne'>総戸数    </th><td class='lne'>"           + houses       + "</td></tr>";
                html += "<tr><th class='lne'>設備      </th><td class='lne' colspan=5>" + equipment    + "</td></tr>";
                html += "<tr><th class='lne'>備考      </th><td class='lne' colspan=5>" + remarks      + "</td></tr>";
                html += "<tr><th class='lne'>修繕積立金</th><td class='lne'>"           + repair       + "</td>";
                html +=     "<th class='lne'>管理費    </th><td class='lne'>"           + managefee    + "</td>";
                html +=     "<th class='lne'>管理      </th><td class='lne'>"           + manage       + "</td></tr>";
                html += "<tr><th class='lne'>構造      </th><td class='lne'>"           + struct       + "</td>";
                html +=     "<th class='lne'>建ぺい率  </th><td class='lne'>"           + range        + "</td>";
                html +=     "<th class='lne'>容積率    </th><td class='lne'>"           + volume       + "</td></tr>";
                html += "<tr><th class='lne'>用途地域  </th><td class='lne'>"           + district     + "</td>";
                html +=     "<th class='lne'>登録日    </th><td class='lne'>"           + regedatetime + "</td>";
                html +=     "<th class='lne'>有効期限  </th><td class='lne'>"           + tiemlimit    + "</td></tr>";
                html += "</table>";
            }
            document.getElementById("divDtl").innerHTML = html;
        }
    }

    request.open("GET", "./Services/gethousedtl.aspx?houseno="+HouseNo, true);
    request.send(null);
}

//====================================================================================
//概要　　：　指定した要素の表示・非表示を切り替える
//引数　　：　Id ･･･ 要素名
//戻り値　：　なし
//====================================================================================
function setVisible(Id)
{
    var display;
    
    if (document.getElementById(Id).style.display == "none") {
        display = "block";
    }
    else {
        display = "none"
    }
    
    document.getElementById(Id).style.display = display;

}

//====================================================================================
//概要　　：　単位付文字列を返す
//引数　　：　Value
//　　　　：　Tani
//戻り値　：　単位付文字列
//====================================================================================
function getValueTani(Value, Tani)
{
    if (Value == "") {
        return "";
    } else {
        return Value + Tani;
    }
}