  var StaticApp = {

    defaultWord : function (obj, msg) {
      if (obj.value == msg) {
        obj.value = '';
      }
      obj.style.color = '#000';
    },

    ajaxExecute : function (b) {
      var buf = b.value;
      if (!b.disabled) {
        b.disabled = true;
        b.value = "データを送信中です。";
        new Ajax.Request(b.form.action,
          {
            asynchronous:true,
            evalScripts:true,
            parameters:Form.serialize(b.form),
            onComplete:function(request){b.disabled = false; b.value = buf;}
          }
        );
      }
    },

    execute : function (b, action, text) {
      var buf = b.value;
      if (!b.disabled) {
        b.disabled = true;
        if (text) {
          b.value = text;
        } else {
          b.value = "データを送信中です。";
        }
        if (action) {
          b.form.action = action;
        }
        b.form.submit();
      }
    },

    resetForm : function (id) {
      $$('.textbox').each(function(element) {
        element.value = "";
      });
      $$('.pulldown').each(function(element) {
        element.selectedIndex = 0;
      });
      $$('.checkbox').each(function(element) {
        element.checked = false;
      });
      $$('.radio').each(function(element) {
        element.checked = false;
      });
    },

    allCheck : function (checked, targets_name) {
      $A(document.getElementsByName(targets_name)).each(function(element) {
        element.checked = checked;
      });
    },

    allRadioSet : function (value, targetsClassName) {
      $$('.' + targetsClassName).each(function(element) {
        if (value == 999) {
          element.checked = false;
        } else if (element.value == value) {
          element.checked = true;
        }
      });
    },

    allPulldownSet : function (value, targetsClassName) {
      var i;
      $$('.' + targetsClassName).each(function(element) {
        for (i = 0; i < element.options.length; i++) {
          if (value == element.options[i].value) {
            element.selectedIndex = i;
          }
        }
      });
    },

    resetMultiPulldown : function (pulldownName) {
      $A($(pulldownName).options).each(function(element) {
        element.selected = false;
      })
    },

    resizeTextarea : function (ev, defaultHeight) {
      var textarea = ev.target || ev.srcElement;
      var value = textarea.value;
      var lines = 1;
      for (var i = 0, l = value.length; i < l; i++){
        if (value.charAt(i) == '\n') lines++;
      }
      Element.setStyle(textarea, {'height': lines * 11 + defaultHeight +'px'});
    },

    lastZip : '',
    addressSearch : function (form, has_railway, zip, prefecture, city, town, address) {
      zipcode = zip.value.gsub(/([^0-9]|-)/, '');
      if (zipcode.length == 7 && zipcode != this.lastZip) {
        this.lastZip = zipcode;
        new Ajax.Request('/utility/address_search',
          {
             method:'get',
             asynchronous:true,
             evalScripts:true,
             parameters:'form=' + form.id + '&has_railway=' + has_railway + '&zip=' + zipcode + '&prefecture=' + prefecture.id + '&city=' + city.id + '&town=' + town.id+ '&address=' + address.id
          }
        )
      }
    }
  }

  var Transport = {

    railwayLineSearch : function (form, prefecture_id) {

      $A($('railway_line').options).each(function(element) {
        $(form).railway_line.options[0] = null;
      })
      $A($('station').options).each(function(element) {
        $(form).station.options[0] = null;
      })

      new Ajax.Request('/utility/railway_line_search',
        {
           method:'get',
           asynchronous:true,
           evalScripts:true,
           parameters:'prefecture_id=' + prefecture_id,
           onSuccess:function (http) {
             var data = eval(http.responseText);
             for(var i = 0; i < data.length; i++){
               $('railway_line').options[i] = new Option(data[i].station.line_name, data[i].station.line_cd);
             }
           }
        }
      )
      this.stationSearch(form, $('railway_line'));
    },

    stationSearch : function (form, railway_line) {
      $A($('station').options).each(function(element) {
        $(form).station.options[0] = null;
      })

      new Ajax.Request('/utility/station_search',
        {
           method:'get',
           asynchronous:true,
           evalScripts:true,
           parameters:'line_cd=' + railway_line.value,
           onSuccess:function (http) {
            var data = eval(http.responseText);
            for(var i = 0; i < data.length; i++){
              $('station').options[i] = new Option(data[i].station.station_name, data[i].station.id);
            }
          }
        }
      )
    },

    stationCount : 0,
    stations : [],

    setStation : function () {
      if ( this.stations.indexOf($F('station')) > -1) {
        return;
      }
      $('transport_station_id_' + this.stationCount).value = $F('station');
      $('station' + this.stationCount).value = $('railway_line').options[$('railway_line').options.selectedIndex].text + " " +  $('station').options[$('station').options.selectedIndex].text;
      $('transport_comment_' + this.stationCount).select();
      this.stationCount++;
      this.stations.push($F('station'));
      if (this.stationCount > 4) {
        $('station_set').disable();
      }
      if (this.stationCount > 0) {
        $('station_remove').enable();
      }
    },

    removeStation : function () {

      $('transport_station_id_' + (this.stationCount - 1)).clear();
      $('station' + (this.stationCount - 1)).clear();
      $('transport_comment_' + (this.stationCount - 1)).clear();
      this.stationCount--;
      this.stations.pop();
      if (this.stationCount < 5 && $F('railway_line')) {
        $('station_set').enable();
      }
      if (this.stationCount == 0) {
        $('station_remove').disable();
      }
    }
  }

  var AutoRuby = {

    convFlag : 1,    //モードフラグ 0:ひらがな 1:カタカナ
    baseVal  : [],

    setRuby : function (nameId,rubyId) {
      var newVal = $(nameId).value;
      if (typeof(this.baseVal[nameId]) == "undefined") {
        this.baseVal[nameId] = $(nameId).value;
      }
      if (this.baseVal[nameId] == newVal){return;}
      if (newVal == "") {
        $(rubyId).value="";
        this.baseVal[nameId] = "";
        return;
      }

      var addVal = newVal;
      for(var i=this.baseVal[nameId].length; i>=0; i--) {
        if (newVal.substr(0,i) == this.baseVal[nameId].substr(0,i)) {
          addVal = newVal.substr(i);break;
        }
      }
      this.baseVal[nameId] = newVal;
      var addruby = addVal.replace( /[^ 　ぁあ-んァー]/g, "" );
      if (addruby == ""){return;}
      if(this.convFlag){addruby = this.convKana(addruby);}
      $(rubyId).value += addruby;
    },

    convKana : function (val){
      var c, a = [];
      for(var i=val.length-1;0<=i;i--){
        c = val.charCodeAt(i);
        a[i] = (0x3041 <= c && c <= 0x3096) ? c + 0x0060 : c;
      }
      return String.fromCharCode.apply(null, a);
    }
  }
