/*
  (c)2008 http://www.myyakkyoku.com/
*/

function strf2(n) {
  return(n < 10 ? ('0' + n) : n);
}

function date_md(date) {
  return(
    strf2(date.getMonth() + 1) + '/' + strf2(date.getDate())
  );
}

function date_ymd(date) {
  return(
    date.getFullYear() + '/' + strf2(date.getMonth() + 1) +
    '/' + strf2(date.getDate())
  );
}

function date_mdhm(date) {
  return(
    strf2(date.getMonth() + 1) + '/' + strf2(date.getDate()) + ' ' +
    strf2(date.getHours()) + ':' + strf2(date.getMinutes())
  );
}

function diff_date_arr(dest) {
  var src = new Date();
  if ((src.getTime() - dest.getTime()) >= 0) {
    var r = dest;
    var c = src;
  } else {
    var r = src;
    var c = dest;
  }
  var ys = c.getFullYear() - r.getFullYear();
  var ms = c.getMonth() - r.getMonth();
  var ds = c.getDate() - r.getDate();
  if (ds < 0) {
    ms -= 1
    var month_first_day = new Date(src.getFullYear(), src.getMonth(), 1);
    var month_last_day = new Date();
    month_last_day.setTime(month_first_day.getTime() - 2000);
    ds += month_last_day.getDate();
  }
  if (ms < 0) {
    ys -= 1
    ms += 12
  }
  if (ys < 0 || ms < 0 || ds < 0) {
    return new Array(0, 0, 0);
  } else {
    return new Array(ys, ms, ds);
  }
}

function diff_date(dest) {
  var src = new Date();
  var suffix = '前';
  if (src.getTime() <= dest.getTime()) {
    suffix = '後';
  }

  var arr = diff_date_arr(dest);
  var ys = arr[0];
  var ms = arr[1];
  var ds = arr[2];

  if (ys == 0) {
    if (ms == 0) {
      if (ds == 0) {
        return('今日');
      }
      if (ds == 1) {
        return(suffix == '前' ? '昨日' : '明日');
      }
      if (ds < 7) {
        return(ds + '日' + suffix);
      } else {
        return(Math.round(ds / 7) + '週間' + suffix);
      }
    } else {
      return(ms + 'ヶ月' + suffix);
    }
  }
  if (ms == 0) {
    return(ys + '年' + suffix);
  } else {
    return (ys + '年' + ms + 'ヶ月' + suffix);
  }
}

function diff_date_value(dest, ext) {
  var src = new Date();
  var suffix = '前';
  if (src.getTime() <= dest.getTime()) {
    suffix = '後';
  }

  var arr = diff_date_arr(dest);
  var ys = arr[0];
  var ms = arr[1];
  var ds = arr[2];

  if (ys == 0) {
    if (ms == 0) {
      if (ds == 0) {
        return('<strong>今日' + ext + ' (' + date_md(dest) + ') </strong>');
      }
      if (ds == 1) {
        if (suffix == '前') {
          return('<strong>昨日' + ext + ' (' + date_md(dest) + ') </strong>');
        } else {
          return('<strong>明日' + ext + ' (' + date_md(dest) + ') </strong>');
        }
      }
      if (ds < 7) {
        return('<strong>' + ds + '日' + suffix + ext + ' (' + date_md(
          dest
        ) + ') ' + '</strong>');
      } else {
        return(Math.round(ds / 7) + '週間' + suffix + ext + ' (' + date_md(
          dest
        ) + ') ');
      }
    } else {
      return(ms + 'ヶ月' + suffix + ext + ' (' + date_ymd(dest) + ') ');
    }
  }
  if (ms == 0) {
    return(ys + '年' + suffix + ext + ' (' + date_ymd(dest) + ') ');
  } else {
    return (ys + '年' + ms + 'ヶ月' + suffix + ext + ' (' + date_ymd(
      dest
    ) + ') ');
  }
}

function diff_time(dest) {
  var src = new Date();
  var arr = diff_date_arr(dest);
  var diff_ms = src.getTime() - dest.getTime();
  var diff_min = Math.floor(Math.abs(diff_ms / 60000));

  // 12 * 60 == 720
  if (!(arr[0] == 0 && arr[1] == 0 && arr[2] == 0) && diff_min > 720) {
    return diff_date(dest);
  }

  var suffix = (diff_ms >= 0 ? '前' : '後');
  if (diff_min < 60) {
    return(diff_min + '分' + suffix);
  } else {
    return(Math.floor(diff_min / 60) + '時間' + suffix);
  }
}

function diff_time_value(dest, ext){
  var src = new Date();
  var arr = diff_date_arr(dest);
  var diff_ms = src.getTime() - dest.getTime();
  var diff_min = Math.floor(Math.abs(diff_ms / 60000));
  var suffix = (diff_ms >= 0 ? '前' : '後');

  // 12 * 60 == 720
  if (!(arr[0] == 0 && arr[1] == 0 && arr[2] == 0) && diff_min > 720) {
    var ys = arr[0];
    var ms = arr[1];
    var ds = arr[2];

    if (ys == 0) {
      if (ms == 0) {
        if (ds == 0) {
          return('<strong>今日' + ext + ' (' + date_mdhm(dest) + ') </strong>');
        }
        if (ds == 1) {
          if (suffix == '前') {
            return('<strong>昨日' + ext + ' (' + date_mdhm(dest) + ') </strong>');
          } else {
            return('<strong>明日' + ext + ' (' + date_mdhm(dest) + ') </strong>');
          }
        }
        if (ds < 7) {
          return('<strong>' + ds + '日' + suffix + ext + ' (' + date_mdhm(
            dest
          ) + ') ' + '</strong>');
        } else {
          return(Math.round(ds / 7) + '週間' + suffix + ext + ' (' + date_md(
            dest
          ) + ') ');
        }
      } else {
        return(ms + 'ヶ月' + suffix + ext + ' (' + date_ymd(dest) + ') ');
      }
    }
    if (ms == 0) {
      return(ys + '年' + suffix + ext + ' (' + date_ymd(dest) + ') ');
    } else {
      return (ys + '年' + ms + 'ヶ月' + suffix + ext + ' (' + date_ymd(
        dest
      ) + ') ');
    }
  }

  if (diff_min < 60) {
    return('<strong>' + diff_min + '分' + suffix + ext + ' (' +  date_mdhm(
      dest
    ) + ') </strong>');
  } else {
    return(
      '<strong>' + Math.floor(
        diff_min / 60
      ) + '時間' + suffix + ext + ' (' + date_mdhm(dest) + ') </strong>'
    );
  }
}

//Open New Window
function OpnWin(url,winName,w,h){
  newWin = window.open(url,winName,"toolbar=no,location=no,directories=no,status=yes,scrollbars=yes,resizable=no,width="+w+",height="+h);
  if(navigator.appName.indexOf("Netscape",0) != -1){
    newWin.focus();
  }
}

function sort_gps(keys, vals, shows, hides) {
  for (i = 0; i < keys.length; i++) {
    key = keys[i];
    val = vals[i];
    key.innerHTML = val;
  }
  shows.each(
    function(elem) {
      Element.show(elem);
    }
  );
  hides.each(
    function(elem) {
      Element.hide(elem);
    }
  );
}

function portal_update_time(year, month, day, hour, min, sec) {
  document.write('<span id="portal_update_time">');
  document.write(diff_time_value(new Date(year, month, day, hour, min, sec), '更新'));
  document.write('</span>');
}

function gp_update_time(year, month, day, hour, min, sec) {
  document.write('<p class="gp_update_time">');
  document.write(diff_time_value(new Date(year, month, day, hour, min, sec), '更新'));
  document.write('</p>');
}

function bookmark_icon(referer_url, referer_html) {
  document.write('<p id="head_bookmark">');
  document.write('  ブックマークする:');
  document.write('  <a href="http://bookmarks.yahoo.co.jp/bookmarklet/showpopup?u=' + referer_url + '&t=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://i.yimg.jp/images/sicons/ybm16.gif" width="16" height="16" alt="Yahoo!ブックマークに登録" /></a>');
  document.write('  <a href="http://b.hatena.ne.jp/append?' + referer_html + '" target="_blank"><img src="http://b.hatena.ne.jp/images/append.gif" width="16" height="16" alt="はてなブックマークに登録" /></a>');
  document.write('  <a href="http://www.google.com/bookmarks/mark?op=edit&bkmk=' + referer_url + '&title=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://www.google.co.jp/favicon.ico" width="16" height="16" alt="Google Bookmarks に登録" /></a>');
  document.write('  <a href="http://clip.livedoor.com/redirect?link=' + referer_url + '&title=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_16_b.gif" width="16" height="16" alt="ライブドアクリップに登録" /></a>');
  document.write('</p>');
}

function bookmark_txt(referer_url, referer_html) {
  document.write('<p class="go_bookmark">このページを');
  document.write('  <a href="http://bookmarks.yahoo.co.jp/bookmarklet/showpopup?u=' + referer_url + '&t=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://i.yimg.jp/images/sicons/ybm16.gif" width="16" height="16" alt="Yahoo!ブックマークに登録" /> Yahoo!ブックマーク</a>');
  document.write('  <a href="http://b.hatena.ne.jp/append?' + referer_html + '" target="_blank"><img src="http://b.hatena.ne.jp/images/append.gif" width="16" height="16" alt="はてなブックマークに登録" /> はてなブックマーク</a>');
  document.write('  <a href="http://www.google.com/bookmarks/mark?op=edit&bkmk=' + referer_url + '&title=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://www.google.co.jp/favicon.ico" width="16" height="16" alt="Google Bookmarks に登録" /> Google Bookmarks</a>');
  document.write('  <a href="http://clip.livedoor.com/redirect?link=' + referer_url + '&title=' + encodeURIComponent(document.title) + '" target="_blank"><img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_16_b.gif" width="16" height="16" alt="ライブドアクリップに登録" /> ライブドアクリップ</a>');
  document.write('  にそれぞれ登録できます。</p>');
}
