
var jiwai_de_html_head = document.getElementsByTagName('head')[0];

/***************************** Load Template  ***************************************/
var css_template				= unescape('%2F%2A%20Ensure%20that%20our%20assumptions%20about%20the%20default%20browser%20colors%20are%20correct.%20%2A%2F%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20%7B%20color%3A%20%23000000%3B%20background-color%3A%20%23FFFFFF%3B%20%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20a%3Alink%20%7B%20color%3A%20%230000FF%3B%20%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20a%3Ahover%20%7B%20color%3A%20%230000FF%3B%20%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20a%3Aactive%20%7B%20color%3A%20%230000FF%3B%20%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20a%3Avisited%20%7B%20color%3A%20%23800080%3B%20%7D%0D%0A%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20BODY%20%7B%0D%0A%20%20margin%3A%204px%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV%23content%20%7B%0D%0A%20%20font%3A%2012px%20Arial%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV%23insert%20%7B%0D%0A%20%20display%3A%20none%3B%0D%0A%7D%0D%0A%0D%0A%2F%2A%20Two%20ways%20to%20do%20icons%20with%20these%20rules%3A%0D%0A%20%20%20%3Cimg%20class%3D%27icon%27%20src%3D%27%25userIconPath%25%27%3E%0D%0A%20%20%20%3Cdiv%20class%3D%27icon%27%3E%3Cdiv%20style%3D%27height%3A1px%3Bfilter%3Aprogid%3ADXImageTransform.Microsoft.AlphaImageLoader%28src%3D%22%25userIconPath%25%22%29%27%3E%3C%2Fdiv%3E%3C%2Fdiv%3E%0D%0A%2A%2F%0D%0A%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.chat%20%7B%0D%0A%20%20padding%3A%204px%202px%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.chat%20DIV.Nth%20%7B%0D%0A%20%20margin%3A%207px%200px%200px%200px%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.chat%20SPAN.salutation-o%20%7B%0D%0A%20%20display%3A%20block%3B%0D%0A%20%20font-weight%3A%20bold%3B%0D%0A%20%20margin%3A%200px%200px%201px%3B%0D%0A%20%20vertical-align%3Atext-top%3B%0D%0A%20%20padding-top%3A%201px%3B%0D%0A%20%20border-top%3A%202px%20solid%20black%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.chat%20SPAN.salutation-i%20%7B%0D%0A%20%20display%3A%20block%3B%0D%0A%20%20font-weight%3A%20bold%3B%0D%0A%20%20margin%3A%200px%200px%201px%3B%0D%0A%20%20vertical-align%3Atext-top%3B%0D%0A%20%20padding-top%3A%201px%3B%0D%0A%20%20border-top%3A%202px%20solid%20black%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.out%20%7B%0D%0A%20%20text-align%3A%20left%3B%0D%0A%20%20height%3A%201px%3B%0D%0A%7D%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.in%20%7B%0D%0A%20%20text-align%3A%20left%3B%0D%0A%20%20height%3A%201px%3B%0D%0A%7D%0D%0A%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.clear%20%7B%0D%0A%20%20clear%3A%20both%3B%0D%0A%20%20height%3A%201px%3B%0D%0A%20%20overflow%3A%20hidden%3B%0D%0A%7D%0D%0A%0D%0A%23JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298%20DIV.break%20%7B%0D%0A%20%20height%3A%201px%3B%0D%0A%20%20margin%3A%203px%200px%200px%200px%3B%0D%0A%20%20overflow%3A%20hidden%3B%0D%0A%7D%0D%0A');

var owner_content_template 		= unescape('%3Cdiv%20class%3D%27chat%20out%27%3E%0D%0A%20%3Cspan%20class%3D%27salutation-o%27%3E%25sender%25%26nbsp%3B%3C%2Fspan%3E%25message%25%0D%0A%20%3Cdiv%20id%3D%27insert%27%3E%3C%2Fdiv%3E%0D%0A%20%3Cdiv%20class%3D%27clear%27%3E%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0A%3Cdiv%20class%3D%27break%27%3E%3C%2Fdiv%3E%0D%0A');
var owner_next_content_template	= unescape('%3Cdiv%20class%3D%27Nth%27%3E%25message%25%3C%2Fdiv%3E%0D%0A%3Cdiv%20id%3D%27insert%27%3E%3C%2Fdiv%3E%0D%0A');

var other_content_template 		= unescape('%3Cdiv%20class%3D%27chat%20in%27%3E%0D%0A%20%3Cspan%20class%3D%27salutation-i%27%3E%25sender%25%26nbsp%3B%3C%2Fspan%3E%25message%25%0D%0A%20%3Cdiv%20id%3D%27insert%27%3E%3C%2Fdiv%3E%0D%0A%20%3Cdiv%20class%3D%27clear%27%3E%3C%2Fdiv%3E%0D%0A%3C%2Fdiv%3E%0D%0A%3Cdiv%20class%3D%27break%27%3E%3C%2Fdiv%3E');
var other_next_content_template	= unescape('%3Cdiv%20class%3D%27Nth%27%3E%25message%25%3C%2Fdiv%3E%0D%0A%3Cdiv%20id%3D%27insert%27%3E%3C%2Fdiv%3E%0D%0A%0D%0A');


var gadget_css = document.createElement("style");
gadget_css.setAttribute("type", "text/css");

if(gadget_css.styleSheet){// IE
	gadget_css.styleSheet.cssText = css_template;
} else {// w3c
	gadget_css.innerHTML = css_template;
}

jiwai_de_html_head.appendChild(gadget_css);


/***************************** Template Loaded ***************************************/

jiwai_de_gadget 				= document.getElementById("JiWai_de__gadget_timeline_user_3_Swiss_gb2312_49298")

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);

	if(delta < 60) {
		return '就在刚才'
	} else if(delta < (60*60)) {
		return (parseInt(delta / 60)).toString() + ' 分钟前';
	} else if(delta < (24*60*60)) {
		return (parseInt(delta / 3600)).toString() + ' 小时前';
	}

	return (parseInt(delta / 86400)).toString() + ' 天前';
}

function jiwai_de_get_message_html(status)
{
	var status_html = status.text.replace(/(http:\/\/)([^\/ ]+)([^\s]*)/, "<a href='$1$2$3' target='_blank'>$1$2/...</a>");
	return status_html
			+ " <a href='" + status.user.profile_url + "statuses/" + status.id + "' target='_blank'><small>" 
			+ relative_time(status.created_at)
			+ "</small></a>";
}

function jiwai_de_get_picture_url(status)
{
	return status.user.profile_image_url;
}

function jiwai_de_get_picture_html(status)
{
	return "<a href='" + status.user.profile_url+ "' target='_blank'>"
			+ "<img class='icon' border='0' alt='" + status.user.screen_name + "' src='" + status.user.profile_image_url  + "' />";
			+ "</a>";
}
  

function jiwai_de_get_user_html(status)
{
	return "<a href='" + status.user.profile_url + "' target='_blank'>"
			+ status.user.screen_name
			+ "</a>";
}


function jiwai_de_callback(statuses)
{

	if ( 0>=statuses.length )
		return;

	var statuses_html = "\n";

	for ( n=0; n<statuses.length; n++ )
	{
		var status_html; // 每个 status
		var status_next_html; // 同一个用户的 next status
		var message_html // 所有 status 的 html;

		// 这条更新是用户自己的
		if ( 49298==statuses[n].user.id )
		{
			status_html		= owner_content_template.replace(/%sender%/i	, jiwai_de_get_user_html(statuses[n]));
			status_html		= status_html.replace(/%userIconPath%/i		, jiwai_de_get_picture_html(statuses[n]));
			status_html		= status_html.replace(/%userIconUrl%/i		, jiwai_de_get_picture_url(statuses[n]));
			status_html		= status_html.replace(/%message%/i			, jiwai_de_get_message_html(statuses[n]));

			// 检查下一个(n+1) statuses 中的用户，是不是和当前用户(n)是同一人。如果是，则合并。
			while ( (n+1)<statuses.length && statuses[n+1].user.id==statuses[n].user.id )
			{
				status_next_html	= owner_next_content_template.replace(/%message%/i	,jiwai_de_get_message_html(statuses[n+1]));
				status_next_html	= status_next_html.replace(/%sender%/i				,jiwai_de_get_user_html(statuses[n+1]));
				status_html			= status_html.replace(/<div id=['"]insert['"]><\/div>/i, status_next_html);
				n++;
			}

			statuses_html 	+= status_html;
		}
		// 这条更新是用户的好友的
		else
		{
			status_html	= other_content_template.replace(/%sender%/i, jiwai_de_get_user_html(statuses[n]));
			status_html	= status_html.replace(/%userIconPath%/i 	, jiwai_de_get_picture_html(statuses[n]));
			status_html	= status_html.replace(/%userIconUrl%/i 		, jiwai_de_get_picture_url(statuses[n]));
			status_html	= status_html.replace(/%message%/i			, jiwai_de_get_message_html(statuses[n]));

			// 检查下一个(n+1) statuses 中的用户，是不是和当前用户(n)是同一人。如果是，则合并。
			while ( (n+1)<statuses.length && statuses[n+1].user.id==statuses[n].user.id )
			{
				status_next_html	= other_next_content_template.replace(/%message%/i, jiwai_de_get_message_html(statuses[n+1]));
				status_next_html	= status_next_html.replace(/%sender%/i				,jiwai_de_get_user_html(statuses[n+1]));
				status_html			= status_html.replace(/<div id=['"]insert['"]><\/div>/i, status_next_html);
				n++;
			}

			statuses_html += status_html;
		}
	}


	statuses_div 			= document.createElement('div');
	statuses_div.innerHTML 	= statuses_html;
	
	jiwai_de_gadget.appendChild(statuses_div);

}


// 加载 JSON 格式的用户数据，并传入回调，耶！
gadget_data_js 		= document.createElement("script");
gadget_data_js.src	= 'http://api.jiwai.de/statuses/user_timeline/49298.json?count=3&thumb=48&callback=jiwai_de_callback';

jiwai_de_html_head.appendChild(gadget_data_js);
