/**
 * sdekisugi.js
 *
 * @author Moshimo System Team
 * @copyright Moshimo Co., Ltd.
 * @package Mds
 * @version $Id$
 */

/**
 * Äļ¤Į¤­¤š¤Ž¤¯¤&#58007;Î´ÆĄĻ¯Ĩō§š
 *
 * @author Moshimo System Team
 * @package Mds
 * @access public
 */
var Mds_SDekisugi = Class.create(
  {

    // {{{ switchArticleImage
    /**
     * žĻÉĘ˛đÃĄĻÚ¤ĄĻØ¤¨
     *
     * @param String _target_rel ĀÚ¤ĄĻØ¤¨ÂĐžŨ¤Î˛đÃĄĻ×ÁĮ¤Î rel Â°Ā­¤ÎÃÍ
     * @param Integer _number ÃÖ´š¤š¤ĄĻđÃĄĻÎĨ¤Ĩ&#58008;ĮĨÃĨ¯Ĩš
     */
    switchArticleImage: function(_target_rel, _number) {
      var article_image = $(this).up('div.d-picture').down('img[rel="' + _target_rel + '"]');
      article_image.writeAttribute(
        'src',
        article_image.readAttribute('src').sub(/\d\/([smrl]\.jpg)$/, _number + '/#{1}')
      );
    },
    // }}}

    // {{{ decode
    /**
     * °Åšė´ŊēŅ¤ß¤ÎĮÛÎ&#58007;Ģ¤ōĖ¸ģĐ&#58007;&#57856;ĄĻĩ¤š¤ĄĻ     *
     * @param Array _string_list °Åšė´ŊēŅ¤ÎĮÛÎĄĻ     * @return String ĘŖšî´Ŋ¤ˇ¤ŋŋ&#58226;Íģ˛žČĘ¸ģĐĄĻ     */
    decode: function(_string_list) {
      var _strings = "";
      var _strings_object = {
        _strings: _strings
      };
      $A(_string_list).each(
        function(_char_list, _char_index) {
          var _string = "&#x";
          var _char = "";
          var _char_object = {
            _char: _char,
            _char_index: _char_index
          };
          _char_list.each(
            function(_byte, _byte_index) {
              this._char += (_byte - (this._char_index % 7)).toPaddedString(2, 16).toUpperCase();
            },
            _char_object
          );
          _string += _char_object._char;
          _string += ";";
          this._strings += _string;
        },
        _strings_object
      );
      return _strings_object._strings;
    },
    // }}}

    // {{{ decodeAll
    /**
     * Á´¤Æ¤Î°Åšė´ŊēŅ¤ßÍ×ÁĮ¤&#57820;ĮĨŗĄŧĨÉ¤š¤ĄĻ     */
    decodeAll: function() {
      $$('.dc-escaped').each(
        function(_escaped_element) {
          var _string_list = _escaped_element.readAttribute('rel').evalJSON();
          _escaped_element.update(this.decode(_string_list));
        },
        this
      );
    },
    // }}}

    // {{{ initialize
    /**
     * ĨŗĨ&#58008;šĨČĨō§¯Ĩŋ
     */
    initialize: function() {
    }
    // }}}

  }
);

var sdekisugi = new Mds_SDekisugi;

Event.observe(
  window,
  'load',
  function() {
    sdekisugi.decodeAll.bind(sdekisugi)();
  }
);

