/*
 *
 * ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 *
 * 1. 使用用途/方法
 *  検索プルダウンをAjax化します。
 *  このファイルはsearch_company_conds_ajax.js等よりも前に読み込んでください。
 *
 * ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 *
 */



/*
 * テンプレートファイルからのデータ受け取り用オブジェクト
 */
var search_company_ajax = new Object();


/*
 * プルダウンメニューを有効/無効にする
 *
 * target : 対象のプルダウンID
 */
function SearchCompanyAjax_enablePulldown(target) {
    $(target).removeAttr('disabled');
}
function SearchCompanyAjax_disablePulldown(target) {
    $(target).empty();
    $(target).attr({ disabled : 'disabled' });
}


/*
 * JSONを読み込む
 *
 * json_path : リクエスト先JSON
 * target    : 対象のプルダウンID
 * params    : 送信ハッシュ
 * ingore_id : 除外するoption value
 */
function SearchCompanyAjax_updatePulldown(json_path, target, json_params, params, fn) {

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

        if (!params) {
            params['ingore_value'] = null;
            params['selected'] = null;
        }

        // 対象プルダウンのoptionをすべて削除してselectをdisableに
        SearchCompanyAjax_disablePulldown(target);
        $(target).append('<option value="">読み込み中...</option>');

        // JSONの取得を試みる
        $.getJSON(json_path, json_params, function(json) {

            /*
             * JSONの取得が完了したら以下を実行
             */

            // 読み込み中を解除
            $(target).empty();
            SearchCompanyAjax_enablePulldown(target);

            // selectに追加するoptionを生成
            $option_entries = new Array();
            $.each(json,function(i){
                if (i != params['ingore_value']) {
                    $option_entries.push('<option value="' + i + '">' + this + '</option>');
                }
            });

            if ($option_entries.length > 0) {
                // selectにoptionを追加
                $(target).append('<option value=""></option>');
                $(target).append($option_entries.join());

                if (!($.browser.msie && $.browser.version < 7)) {
                    if (params['selected']) {
                        SearchCompanyAjax_setSelected(target, params['selected']);
                    }
                }
            }

            // コールバック関数を実行
            if (fn) {
                fn();
            }
        });
    }
}

/*
 * プルダウンの選択状態を検索後のページで維持する
 *
 * target : 対象のプルダウンID
 * value  : 選択しておくoptionのvalue
 */
function SearchCompanyAjax_setSelected(target, value) {
    $(target + ' option[value="' + value + '"]').attr({ selected : 'selected' });
}
