/**
 * プルダウン切替時に自動的に「切替」ボタンをsubmitさせるJavaScript
 * 前提条件
 *  - プルダウンのパラメータ名が「i_XXXX_id」（XXXXは任意）
 *  - プルダウン切替時にSubmitするボタン名が「XXXX」を含む（XXXXは任意）
 *  - プルダウンのonchangeイベントに関数を設定するところから処理するので
 *    HTMLソース上にイベントを設定する必要はない
 */
var s = new AutoSubmit;

window.onload = function() {
   s.set();
}

function AutoSubmit() {
   this.skip  = [];
   this.prefix = 'i_';
   this.sufix  = '_id';

   this.set = function() {
      for (var i = 0; i < document.forms.length; i++) {
         for (var f = 0; f < document.forms[i].length; f++) {
            var elm = document.forms[i][f];
            if(!this._checkSkip(elm)) continue;
            ofst = elm.name.indexOf(this.prefix);
            if (ofst != -1){
                 start = ofst + this.prefix.length;
                 end   = elm.name.indexOf(this.sufix , start);
                 value = elm.name.substring(start,end);
            }else{
                continue;
            }
            for (var g = 0; g < document.forms[i].length; g++){
                if( document.forms[i][g].type == 'submit' &&
                    document.forms[i][g].name.match(value) ){
                    var btn = document.forms[i][g];
                    this._setSubmit(elm, btn, document.forms[i]);
                }
            }
         }
      }
   }

   this._checkSkip = function(elm) {
      if(elm.type != 'select-one') {
          return false;
      }
      for(var i in this.skip) {
         if(elm.name == this.skip[i]) return false;
      }
      return true;
   }

    this._setSubmit = function(elm, btn, form) { 
        var event = function() {
            var celm  = document.createElement('input');
            celm.type = 'hidden';
            celm.name = btn.name;
            form.appendChild(celm);
            form.submit();
        };

        if(window.opera) {
            elm.onchange = event; 
        } else if(elm.addEventListener) {
            elm.addEventListener('change', event, true); 
        } else {
            elm.attachEvent('onchange', event); 
        }
    }
}

