/**
 *
 * @param title
 * 文字サイズに応じてCSSファイルを切り替える
 *
 * 11.07.22 ･あづみのブログの文字数制限 特殊文字を考慮する
 * 11.02.25 ･新規作成
 */
var blog_comment;

function setActiveStyleSheet(size)
  {
    var C_BLOG_COMMENT_LEN_S = 170;  // 文字サイズ:小の制限数
    var C_BLOG_COMMENT_LEN_M = 100;  // 文字サイズ:中の制限数
    var C_BLOG_COMMENT_LEN_L = 35;   // 文字サイズ:大の制限数
    var comment;
    var limit;
    var result;
    var pos;
    var i;

    // 文字サイズに応じてCSSを切り替える
    $('link').each
      (
        function()
          {
            if ($(this).attr('rel').indexOf("alternate stylesheet") != -1 &&
                $(this).attr('title'))
              {
                this.disabled = true;
                if ($(this).attr('title') == size)
                  { this.disabled = false; }
              }
          }
      )

    // 文字サイズに応じてあづみのブログの表示文字数を制限する
    // トップページ(id=blog_commentがあるページ)のみ実行する
    if ($('#blog_comment').size() > 0)
      {
        if (blog_comment == undefined)
          {
            blog_comment = $('#blog_comment').html();
            blog_comment = blog_comment.replace(/(^\s+)|(\s+$)/g, '');
          }

        if (size == 'Large')
          { limit = C_BLOG_COMMENT_LEN_L; }
        else if (size == 'Small')
          { limit = C_BLOG_COMMENT_LEN_S; }
        else
          { limit = C_BLOG_COMMENT_LEN_M; }

        // 文字数の制限数を特殊文字を考慮した値に修正する
        result = blog_comment.match(/&[a-zA-Z0-9]+;/g);
        if (result != undefined)
          {
            for (i = 0; i < result.length; i++)
              {
                pos = blog_comment.indexOf(result[i], (i > 0 ? pos + result[i-1].length : 0));
                if (pos >= limit)
                  { break; }

                limit += result[i].length - 1;
              }
          }

        // 文字数制限を越した時は ... を付加する
        // 付加した ... は制限数に含めない(含めてしまうと末尾に特殊文字がある時の処理が複雑になる)
        comment = blog_comment;
        if (comment.length > limit)
          { comment = comment.substr(0, limit) + '...'; }

        $('#blog_comment').html(comment);
      }
  }

function getActiveStyleSheet()
  {
    var a;
    var i;

    for(i=0; (a = document.getElementsByTagName("link")[i]); i++)
      {
        if (a.getAttribute("rel").indexOf("alternate stylesheet") != -1 &&
            a.getAttribute("title")                                     &&
            ! a.disabled)
          { return a.getAttribute("title"); }
      }

    return null;
  }

function createCookie(name, value, days)
  {
    if (days)
      {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
      }
    else
      { expires = ""; }

    document.cookie = name+"="+value+expires+"; path=/";
  }

function readCookie(name)
  {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
  
    for (var i=0; i < ca.length; i++)
      {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0)
          { return c.substring(nameEQ.length,c.length); }
      }

    return null;
  }

// ページロード時の処理を定義
// cookieに保存されている文字サイズを取得
// 文字サイズに応じてCSSを 有効/無効 に設定する
$(
  function()
    {
      var cookie = readCookie("style");
      var size = cookie ? cookie : null;
      setActiveStyleSheet(size);
    }
);

// unload時の処理を定義
// 有効な文字サイズをcookieに保存
$(window).unload
  (
    function()
      {
        var title = getActiveStyleSheet();
        createCookie("style", title, 365);
      }
  );

