// ---------------------------------------------------------------- //
//  ajax で郵便番号検索を行う関数です。
// ---------------------------------------------------------------- //

var lastZip = "";

// ---------------------------------------------------------------- //
// 郵便番号（ユーザ）
// ---------------------------------------------------------------- //
function getAddress(mainfrm, action, f_post_number, f_prefecture_id, f_city, flg) {
    var jklform = new JKL.Form(mainfrm);
    var zip = jklform.getValue(f_post_number);
    zip = zip.replace(/^\s+|\s+$/g, "");
    var chk = zip.match(/^\d{3}-\d{4}$/);
    var flg2 = 0;
    if (zip.length >= 8 && flg == flg2 && chk) {
        flg2 = 1;
        lastZip = zip;
        var http1 = newXMLHttpRequest();
        if (!http1) return false;

        var url = action + '?prc=zip&cmd=zip_search&sid=' + escape(zip);
        // GET メソッド、URL 指定、非同期(=true)
        http1.open('GET', url, true);
        // 無名関数をハンドラとする
        http1.onreadystatechange = function () {
            handle_setAddress (http1, jklform, f_prefecture_id, f_city);
        };
        http1.send(null);
    }
    flg2 = 0;
    return true;
}

// ---------------------------------------------------------------- //
//  newXMLHttpRequest ---- XMLHttpRequest オブジェクトの生成
// ---------------------------------------------------------------- //

function newXMLHttpRequest () {
    if (typeof ActiveXObject!="undefined") {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } else if (typeof XMLHttpRequest!="undefined") {
        return new XMLHttpRequest();
    } else{
        return null;
    }
}

// ---------------------------------------------------------------- //
//  ajax 通信完了後に呼び出されるハンドラ
// ---------------------------------------------------------------- //
//  0 = uninitialized
//  1 = loading
//  2 = loaded
//  3 = interactive
//  4 = complete
// ---------------------------------------------------------------- //

var lastAddr = "";
function handle_setAddress(http1, jklform, f_prefecture_id, f_city) {

    if (http1.readyState == 4 && http1.status == 200) {
        var newPrefCD = "";
        var newCity   = "";

        var resXML = http1.responseXML;

        if (resXML.documentElement) {
            var pref_val = resXML.documentElement.getElementsByTagName('f_prefecture_id');
            var city_val = resXML.documentElement.getElementsByTagName('f_city')
            if (pref_val[0] != null) {
                newPrefCD  = pref_val[0].firstChild.data;
            }

            if (city_val[0] != null) {
                newCity = city_val[0].firstChild.data;
            }
        }
        // 都道府県をセットする
        jklform.setValue(f_prefecture_id, newPrefCD);
        // 市区町村番地をセットする
        jklform.setValue(f_city, newCity);
    }
}

// ---------------------------------------------------------------- //

