/*
 *
 * ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 *
 * 1. 使用方法
 *  enableSearchCompanyRoutesAjax()を実行する。
 *  その際、引数にハッシュデータを指定し初期設定を変更する
 *
 * 2. 使用例
 *  var setting = {
 *      'req_json' : 'data.json', // 必須
 *      'pref_pulldown_id' : '#pref',
 *      'route_pulldown_id' : '#cond1',
 *  }
 *  enableSearchCompanyRoutesAjax(setting);
 *
 * ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 *
 */


// 初期設定
search_company_ajax.r_req_json = '../../common/json/search_routes.php'; // リクエスト先JSON
search_company_ajax.r_pref_pulldown_id = '#addr01_0_2'; // 都道府県プルダウンのID
search_company_ajax.r_route_pulldown_id = '#route_0'; // 路線プルダウンのID
search_company_ajax.r_req_pref_label = 'addr01'; // リクエストする都道府県データラベル
search_company_ajax.r_req_route_label = 'cond'; // リクエストする条件データラベル
search_company_ajax.r_res_pref_value; // レスポンスされる都道府県データ
search_company_ajax.r_res_route_value; // レスポンスされる路線データ

/*
 * テンプレートファイルで実行する関数 引数に通信用JSONのパスなどを指定
 */
function enableSearchCompanyRoutesAjax(params) {

    // リクエスト先JSONのパスを格納
    if (params) {
        if (params['req_json']) {
            search_company_ajax.r_req_json = params['req_json'];
        }
        if (params['pref_pulldown_id']) {
            search_company_ajax.r_pref_pulldown_id = params['pref_pulldown_id'];
        }
        if (params['route_pulldown_id']) {
            search_company_ajax.r_route_pulldown_id = params['route_pulldown_id'];
        }
        if (params['req_pref_label']) {
            search_company_ajax.r_req_pref_label = params['req_pref_label'];
        }
        if (params['req_route_label']) {
            search_company_ajax.r_req_route_label = params['req_route_label'];
        }
        if (params['res_pref_value']) {
            search_company_ajax.r_res_pref_value = params['res_pref_value'];
        }
        if (params['res_route_value']) {
            search_company_ajax.r_res_route_value = params['res_route_value'];
        }

    }

    // リクエスト先JSONが指定されていたら
    if (search_company_ajax.r_req_json) {

        // 路線プルダウンを更新
        SearchCompanyAjax_ifUpdateRoutePulldown();



        // 各プルダウンにリスナーを追加
        $(search_company_ajax.r_pref_pulldown_id).change(function() {
            SearchCompanyAjax_ifUpdateRoutePulldown();
        });

    }

}

/*
 * 都道府県の値から条件1を更新する
 *
 * fn : コールバック関数
 */
function SearchCompanyAjax_ifUpdateRoutePulldown(fn) {

    // 都道府県プルダウンの選択済みvalueを習得
    var addr01val = $(search_company_ajax.r_pref_pulldown_id + ' option:selected').val();

    // 都道府県が選択されたら
    if (!addr01val) {

        // 条件1プルダウンのoptionをすべて削除してselectをdisableに
        SearchCompanyAjax_disablePulldown(search_company_ajax.r_route_pulldown_id);
    } else {

        // 更新用パラメータを準備
        var json_params = {};
        json_params[search_company_ajax.r_req_pref_label] = addr01val;

        // 路線プルダウンを更新
        var params = {};
        if (search_company_ajax.r_res_route_value) {
            params['selected'] = search_company_ajax.r_res_route_value;
            search_company_ajax.r_res_route_value = null;
        }
        SearchCompanyAjax_updatePulldown(search_company_ajax.r_req_json, search_company_ajax.r_route_pulldown_id, json_params, params, fn);
    }
}
