$(document).ready(function() {
    $("#zip_search_button_id").click(function() {
        // 郵便番号の取得
        zip_value = $("#post").val();

        var ret = zip_value.match(/^\d{3}-\d{4}$|^\d{7}$/); 
        if (!ret) {
            alert('郵便番号検索は7桁の郵便番号のみ利用できます。');
            return false;
        }

        // Ajax通信
        $.getJSON(
            "/zip_search.php",
            {
                zip: zip_value
            },
            function(data, status) {
                if (status == 'success') {
                    if (data.resultNumber == 1) {
                        $("#prefectural_selector_id").val(data.resultData[0].prefectural_id);
                        $("#address_id").focus();
                        $("#address_id").val(data.resultData[0].municipality + data.resultData[0].address);
                    }
                    else {
                        $('.address_list').remove();
                        $('#dialog').dialog('open');

                        if (data.resultNumber == 0) {
                            $('#address_list_table').append(
                                  '<tr class="address_list">'
                                + '<td colspan="2" class="address_list_no">'
                                + '該当する住所が見つかりませんでした。'
                                + '</td>'
                                + '</tr>'
                            );
                        }
                        else if (data.resultNumber > 1) {
                            $.each(data.resultData, function(index, item) {
                                $('#address_list_table').append(
                                      '<tr class="address_list">'
                                    + '<td class="table_indent10">'
                                    + item.prefectural + item.municipality + item.address
                                    + '</td>'
                                    + '<td class="address_list_button">'
                                    + '<input type="button" name="select" id="address_select_id-' + index + '" class="address_select" value="選択" />'
                                    + '</td>'
                                    + '</tr>'
                                );
                            });
                            $("#address_list_table tr:even").addClass("even");
                            $("#address_list_table tr:odd").addClass("odd");
                            $(".address_select").click(function() {
                                var id = $(this).attr('id').split('-');
                                $("#prefectural_selector_id").val(data.resultData[id[1]].prefectural_id);
                                $("#address_id").focus();
                                $("#address_id").val(data.resultData[id[1]].municipality + data.resultData[id[1]].address);
                                $("#dialog").dialog('close');
                            });
                        }
                    }
                }
            }
        );
    });

    $("body").append(
          '<div id="dialog" title="郵便番号検索結果">'
        + '<p id="address_list_message">'
        + '以下の住所より選択してください。'
        + '</p>'
        + '<table id="address_list_table">'
        + '<tr>'
        + '<th class="address_list_name">住所</th>'
        + '<th class="address_list_button">選択</th>'
        + '</tr>'
        + '</table>'
        + '</div>'
    );

    $("#dialog").dialog({
        bgiframe: true,
        autoOpen: false,
        height: 400,
        width: 600,
        modal: true,
        buttons: {
            'キャンセル': function() {
                $(this).dialog('close');
            }
        }
    });
});
