function twitterCallback2(twitters) {
	var statusHTML = [];

	// 各種DEFAULT
	if(typeof twitpic_size == 'undefined'){ twitpic_size = 'mini'; }
	if(typeof plog_size == 'undefined'){ plog_size = 'thumb1'; }
	if(typeof twitvid_width == 'undefined'){ twitvid_width = '100'; }
	if(typeof img_prefix == 'undefined'){ img_prefix = ''; }
	if(typeof img_suffix == 'undefined'){ img_suffix = ''; }

	for (var i=0; i<twitters.length; i++){
		var username = twitters[i].user.screen_name;
		var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
			// TWITPIC の場合
			if(url.match(/\/twitpic.com\/([0-9a-zA-Z])/)){
				var img_url = url.replace(/http\:\/\/twitpic\.com\//, function(img_url){
					return 'http://twitpic.com/show/' + twitpic_size + '/';
				})
				return img_prefix + '<a href="'+url+'" target=_blank alt="twitpic"><img border=0 class="twitpic" src="'+img_url+'"></a>' + img_suffix;

			// PHOTO ROBOX の場合
			}else if(url.match(/\/photo.robox.org\/([_a-z0-9])/i)){
				var img_url = url.replace(/home\/([_a-z0-9]+)/ig, function(img_url){
					return 'photo/' + plog_size;
				});
				img_url = img_url + '.jpg';
				return img_prefix + '<a href="'+url+'" target=_blank alt="PHOTO ROBOX"><img border=0 class="twitpic" src="'+img_url+'"></a>' + img_suffix;

			// TWITVID の場合
			}else if(url.match(/\/twitvid.com\/([_a-z0-9])/i)){
				var img_url = url.replace(/twitvid.com/ig, 'images.twitvid.com');
				img_url = img_url + '.jpg';

				return img_prefix + '<a href="'+url+'" target=_blank><img border=0 class="twitpic" src="'+img_url+'" width=' + twitvid_width + '></a>' + img_suffix;
			}else{
				return '<a href="'+url+'" target=_blank alt="twitvid">'+url+'</a>';
			}
		}).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
			return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
		}).replace(/\B#([_a-z0-9]+)/ig, function(reply) {
			return  reply.charAt(0)+'<a href="http://twitter.com/#search?q=%23'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
		}
	);
    statusHTML.push('<li><span class="date-fmt">'+relative_time2(twitters[i].created_at)+'</span> <span>'+status+'</span></li>');
  }
  document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}

function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + 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);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}

function relative_time2(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + 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 (yy < 2000) { yy -= 100; }
  if (yy < 10) { yy = "0" + yy; }
  if (mm < 10) { mm = "0" + mm; }
  if (dd < 10) { dd = "0" + dd; }
  dy = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat")[dy];
  if (hh < 10) { hh = "0" + hh; }
  if (mi < 10) { mi = "0" + mi; }
  if (ss < 10) { ss = "0" + ss; }
//  return yy+"/"+mm+"/"+dd+"("+dy+") "+hh+":"+mi+":"+ss;
  return mm+"/"+dd+" "+hh+":"+mi;
}

function load_twit(account, count) {
	if(typeof count == 'undefined'){ count = 10; }
	var ele = document.createElement("script");
	ele.type = "text/javascript";
	ele.src = "http://twitter.com/statuses/user_timeline/" + account + ".json?callback=twitterCallback2&count=" + count;
	document.body.appendChild(ele);
}
