/**
 *  リストの絞り込み検索を行うため、パラメータを付けて自分にリダイレクトする。
 *  selectタグのonChangeイベントハンドラなどに以下のように指定する。
 *  onChange="refineSearch(this.form);"
 *  クエリパラメータとして付与されるのは、
 *  ・テキストボックス
 *  ・セレクトボックス
 *  ・ラジオボタン
 *  ・チェックボックス
 *  のコントロールの値のみ。
 *
 *  @author Masanori Hayashi
 *
 *  @param form formオブジェクト。
 */
function refineSearch(form) {
    var query_string = "?";
    for(i=0; i < form.elements.length; i++){
        if (form.elements[i].name && form.elements[i].value){
            if (   form.elements[i].type == 'text' 
                || form.elements[i].type == 'select-one'
                || form.elements[i].type == 'checkbox'
                || form.elements[i].type == 'radio'){
                query_string = query_string 
                             + form.elements[i].name + "="
                             + encodeURI(form.elements[i].value) + "&";
            }
        }
    }
    query_string = query_string.substr(0, query_string.length - 1);
    var redirect_url = location.protocol + "//" 
                     + location.host 
                     + location.pathname 
                     + query_string;
    location.href = redirect_url;
}
/**
 *  セレクトボックスで選択された選択肢に設定されたURLへリダイレクトする
 *  selectタグのonChangeイベントハンドラなどに以下のように指定する。
 *  onChange="refineSearch(this);"
 *
 *  @author Masanori Hayashi
 *
 *  @param select selectオブジェクト。
 */
function redirectTo(select){
    if (select.value){
        location.href = select.value;
    }
}
