var _min_max;

Event.observe(
              window,
              'load',
              function ()
              {
                // このウィンドウにフォーカス。
                window.focus();

                if ($('behold'))
                  {
                    Element.hide('behold');
                    $('behold').ondblclick = function() { this.innerHTML = ''; new Effect.BlindUp(this, {duration: 0.5}); };
                  }

                // // アクティブなメニューを設定。
                // var _indexes;
                // if ($('content')) { _indexes = $('content').className.split('_'); }
                // else { _indexes = [3,0]; }
                //
                // if (_indexes[0])
                //   {
                //     removeOtherSubMenu(_indexes[0]);
                //
                //     if ($('mainMenu'+_indexes[0]))
                //       { $('mainMenu'+_indexes[0]).className += 'active'; }
                //
                //     if ($('subMenu'+_indexes[1]))
                //       { $('subMenu'+_indexes[1]).className += 'active'; }
                //   }
                //
                // // フォームにチケットを設定。
                // var _forms = document.forms;
                // for (var i_form = 0; i_form < _forms.length; i_form++)
                //   {
                //     if (_forms[i_form].id)
                //       {
                //         var _submit_onclicks = document.getElementsByClassName(_forms[i_form].id);
                //         for (var j = 0; j < _submit_onclicks.length; j++)
                //           {
                //             _submit_onclicks[j]._form_to_submit = _forms[i_form];
                //             _submit_onclicks[j].onclick = function()
                //             {
                //               // alert('click');
                //               setTickets();
                //               this._form_to_submit.submit();
                //             };
                //           }
                //       }
                //
                //     _forms[i_form].onsubmit = function()
                //     {
                //       // alert('submit');
                //       setTickets();
                //     }
                //   }
                //
                // // 戻るボタンを設定。
                // var _backs = document.getElementsByClassName('back');
                // for (var j = 0; j < _backs.length; j++)
                //   {
                //     _backs[j].onclick = function() { window.history.back(); };
                //   }
                //
                // // 閉じるボタンを設定。
                // if ($('close'))
                //   {
                //     $('close').onclick = function() { window.close(); };
                //   }
                //
                // // 確認ダイアログ表示 / 非表示。
                // var _show_button = document.getElementsByClassName('show_button');
                // var _hide_button = document.getElementsByClassName('hide_button');
                // for (var j = 0; j < _show_button.length; j++)
                //   {
                //     _show_button[j].onclick = function()
                //     {
                //       if ($(this.id + '_show_hide_box'))
                //         {
                //           Element.show(this.id + '_show_hide_box');
                //         }
                //     };
                //   }
                // for (var j = 0; j < _hide_button.length; j++)
                //   {
                //     _hide_button[j].onclick = function()
                //     {
                //       if ($(this.id + '_show_hide_box'))
                //         {
                //           Element.hide(this.id + '_show_hide_box');
                //         }
                //     };
                //   }

                // トグルを設定。
                var _toggle_button = document.getElementsByClassName('toggle_button');
                for (var j = 0; j < _toggle_button.length; j++)
                  {
                    _toggle_button[j].onclick = function()
                    {
                      if($(this.id + '_toggle_box'))
                        {
                          Element.toggle(this.id + '_toggle_box');
                        }
                    };
                  }

                // // プロパゲータを設定。( checked の値を、伝播させる)
                // var _propagator = document.getElementsByClassName('propagator');
                // for (var j = 0; j < _propagator.length; j++)
                //   {
                //     _propagator[j].onclick = function()
                //     {
                //       var _propagatee = document.getElementsByClassName(this.title);
                //       for (var k = 0; k < _propagatee.length; k++)
                //         {
                //           // alert(_propagatee[k].checked);
                //           _propagatee[k].checked = this.checked;
                //         }
                //     };
                //   }

                // // text utils 設定。
                // var _text_utils = document.getElementsByClassName('text_utils');
                // for (var j = 0; j < _text_utils.length; j++)
                //   {
                //     _text_utils[j].onclick = function()
                //     {
                //       window.open(
                //                   './_text_utils.html',
                //                   'text_utils',
                //                   'width=450,height=450,menubar=no,toolbar=no,location=no,scrollbars=yes,resizable=yes'
                //                   );
                //     }
                //   }

                // ログインIDのプロンプト。
                if ($('my_profile-name_now'))
                  {
                    $('my_profile-name_now').user_value = '';

                    $('my_profile-name_now').onfocus = function()
                    {
                      this.value = this.user_value;
                    };
                    $('my_profile-name_now').onblur = function()
                    {
                      this.user_value = this.value;
                    };
                  }

                // パスワードのプロンプト。および入力支援。
                var _field_password = document.getElementsByClassName('field_password');
                var _monitor = $A([]);
                var _dimension = $A([]);
                var _position = $A([]);
                for (var j = 0; j < _field_password.length; j++)
                  {
                    _monitor[j] = document.createElement('div');
                    _dimension[j] = Element.getDimensions(_field_password[j]);
                    _position[j] = getPosition(_field_password[j]);
                    var _style =
                      {
                        display: 'none',
                        position: 'absolute',
                        left: _position[j].x + 'px',
                        top: (_position[j].y + _dimension[j].height) + 'px',
                        margin: '0',
                        padding: '0',
                        width: _dimension[j].width + 'px',
                        height: _dimension[j].height + 'px',
                        border: '1px #000000 solid',
                        fontFamily: 'monospace',
                        fontSize: '14px',
                        color: '#cccccc',
                        backgroundColor: '#e0ffe0',
                        verticalAlign: 'middle'
                      };
                    Element.setStyle(_monitor[j], _style);

                    document.body.appendChild(_monitor[j]);

                    _field_password[j]._password_monitor = _monitor[j];

                    _field_password[j].onfocus = function()
                    {
                      this._password_monitor.innerHTML = this.value;
                      this.select();
                      Element.show(this._password_monitor);
                    };
                    _field_password[j].onkeyup = function()
                    {
                      this._password_monitor.innerHTML = this.value;
                    };
                    _field_password[j].onblur = function()
                    {
                      Element.hide(this._password_monitor);
                    };
                  }
              }
             );

// IE で (min|max)-(width|height)
if (navigator.userAgent.indexOf('MSIE') >= 0)
{
  Event.observe(
                window,
                'load',
                function ()
                {
                  _min_max = document.getElementsByClassName('min_max');
                  for (var j = 0; j < _min_max.length; j++)
                    {
                      _min_max[j]._height_original = Element.getHeight(_min_max[j]);// _min_max[j].style.height;
                    }
                  _resize_min_max(_min_max);
                }
               );

  Event.observe(
                window,
                'resize',
                function() { _resize_min_max(_min_max); }
               );

  function _resize_min_max(_min_max)
  {
    for (var j = 0; j < _min_max.length; j++)
      {
        _min_max[j].style.height = _min_max[j]._height_original + 12;

        var _height = Element.getHeight(_min_max[j]);

        if ($(_min_max[j].id + '_min'))
          {
            var _height_min = Element.getHeight(_min_max[j].id + '_min');
            if (_height < _height_min) { _min_max[j].style.height = _height_min; }
          }

        if ($(_min_max[j].id + '_max'))
          {
            var _height_max = Element.getHeight(_min_max[j].id + '_max');
            if (_height > _height_max) { _min_max[j].style.height = _height_max; }
          }
      }
  }
}

function doALERT(_alert)
{
  var __alert;

  if (
      'string' == typeof(_alert)
      || 'undefined' == typeof(_alert)
     ) { __alert[0] = _alert; }
  else { __alert = $A(_alert).toArray(); }

  if (__alert[0])
    {
      // console.log(__alert.inspect());

      $('behold').innerHTML = '<ol><li>' + __alert.join('</li><li>') + '</li></ol><hr />' + $('behold').innerHTML;
      if (!Element.visible('behold')) { new Effect.BlindDown('behold', {duration: 1}); }
    }
}

function getPosition(element)
{
  var _offset = Position.cumulativeOffset(element);

  return {x: _offset[0], y: _offset[1]};
}

function removeOtherSubMenu(_category_number)
{
  for (var i0 = 1; i0 <= 4; i0++)
    {
      if (
          $('adminCategory' + i0 + 'subMenu')
          && (i0 != _category_number)
          )
        { Element.remove('adminCategory' + i0 + 'subMenu'); }
    }
}

// second 秒で url へジャンプ。
function _topRefresh(url,second)
{
  if (!second) { second = 1; }
  setTimeout("window.top.location.href = '"+url+"';",(1000 * second));
}

// cookie から特定の変数を取得する。
function getVarFromCookie(var_name)
{
  var _pattern_match = new RegExp(var_name + '=([^;]+)','');
  var _cookie_list = document.cookie.match(_pattern_match);

  if (_cookie_list)
    {
      if (typeof(_cookie_list[1]) != 'undefined')
        {
          // alert(var_name + ': ' + _cookie_list[1]);
          return _cookie_list[1];
        }
      else
        {
          return ;
        }
    }
}

// フォームにチケットを設定。
function setTickets()
{
  var _tickets = document.getElementsByClassName('_ticket_');
  var S_SID = getVarFromCookie('S_SID');

  for (var i_ticket = 0; i_ticket < _tickets.length; i_ticket++)
    {
      _tickets[i_ticket].value = S_SID;
    }
}

function makePager(_function_name,_page_number,_parentElement)
{
  var _pagers = document.getElementsByClassName('pager',_parentElement);
  for (var i_pager in _pagers)
    {
      var _pagers_prev_in_this_group = document.getElementsByClassName(_pagers[i_pager].title + '_prev',_parentElement);
      for (var i_pager_prev_in_this_group in _pagers_prev_in_this_group)
        {
          setPager(_function_name, (_page_number - 1), _pagers_prev_in_this_group[i_pager_prev_in_this_group]);
        }

      var _pagers_next_in_this_group = document.getElementsByClassName(_pagers[i_pager].title + '_next',_parentElement);
      for (var i_pager_next_in_this_group in _pagers_next_in_this_group)
        {
          setPager(_function_name, (_page_number + 1), _pagers_next_in_this_group[i_pager_next_in_this_group]);
        }
    }
}

function setPager(_function_name,_page_number,_object)
{
  if (_object)
    {
      _object.function_name = _function_name;
      _object.page_number = _page_number;
      _object.onclick = function() { this.function_name(this.page_number); };
    }
}

function setLocationHash(query)
{
  var query;
  if (!query) { query = $('my_query-query').value; }

  if (query)
    {
      var query_encoded = encodeURI(query);
      document.location.hash = '#' + query_encoded;
    }
}

function getLocationHash()
{
  var _url_list = [];

  var _pattern_match = new RegExp('^([^#]+)(#([^#]+))?$','');
  _url_list = location.href.match(_pattern_match);

  if ('undefined' != typeof(_url_list[3]))
    { return decodeURI(_url_list[3]); }
}
