function relative_time_now(time_value) {
  time_values = time_value.split(" ");
  time_value = time_values[1]+" "+time_values[2]+", "+time_values[5]+" "+time_values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset()*60);
  var dt = new Date();
  dt.setTime(dt.getTime() - (delta*1000));
  yy = dt.getYear();
  mm = dt.getMonth() + 1;
  dd = dt.getDate();
  dy = dt.getDay();
  hh = dt.getHours();
  mi = dt.getMinutes();
  ss = dt.getSeconds();
  if (yy < 2000) { yy += 1900; }
  if (mm < 10) { mm = "0" + mm; }
  if (dd < 10) { dd = "0" + dd; }
  dy = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sst")[dy];
  if (hh < 10) { hh = "0" + hh; }
  if (mi < 10) { mi = "0" + mi; }
  if (ss < 10) { ss = "0" + ss; }

  return yy+"/"+mm+"/"+dd+"("+dy+") ";

}
function relative_time_back(time_value) {
  var values = time_value.split(" ");
  //time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  time_value = values[3] + "/" + values[2] + "/" + values[1] + " " + values[4];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = Math.floor((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return '(0分前)';
  } else if(delta < (60*60)) {
    return '(' + (parseInt(delta / 60)).toString() + '分前)';
  } else if(delta < (120*60)) {
    return '(約1時間前)';
  } else if(delta < (24*60*60)) {
    return '(約' + (Math.floor(delta / 3600)).toString() + '時間前)';
  } else if(delta < (48*60*60)) {
    return '(約1日前)';
  } else {
    return '(約' + (Math.floor(delta / 86400)).toString() + '日前)';
  }
}
