//================================================
// apply_twemoji.js
// Author: @iihoshi
//================================================

(function ($, jn) {

	var my_filename = 'apply_twemoji.js';

	// プラグイン情報 ここから
	// プラグイン情報の初期化
	if (!jn.pluginInfo)
		jn.pluginInfo = {};
	// プラグイン情報本体
	jn.pluginInfo[my_filename.split('.')[0]] = {
		'name' : {
			'ja' : 'Twitter 絵文字表示',
			'en' : 'Show Twitter Emoji'
		},
		'author' : {
			'en' : '@iihoshi'
		},
		'version' : '1.0.0',
		'file' : my_filename,
		'language' : ['en', 'ja'],
		'last_update' : "2017/1/29",
		'update_timezone' : '9',
		'jnVersion' : '4.3.1.0',
		'description' : {
			'ja' : 'twemoji を利用して絵文字を画像で表示します。',
			'en' : 'Shows emojis as images by using twemoji.'
		},
		'updateinfo' : 'http://www.colorless-sight.jp/archives/JanetterPluginUpdateInfo.txt'
	};
	// プラグイン情報ここまで

	if ((_Janetter_Window_Type != "main") && (_Janetter_Window_Type != "profile"))
		return;

	// See: http://api.jquery.com/jQuery.getScript/#entry-examples
	$.cachedScript = function(url, options) {
		options = $.extend( options || {}, {
			dataType: "script",
			cache: true,
			url: url
		});
		return $.ajax(options);
	};

	$.fn.extend({
		applyTwemoji: function() {
			twemoji.parse(this[0]);
			this.find("img.emoji").css({
				float: 'none',
				height: '1em',
				width: '1em',
				margin: '0 .05em 0 .1em',
				verticalAlign: '-0.1em'
			});
			return this;
		}
	});

	function setup() {
		var generate = jn.tweetController.prototype.generate;
		jn.tweetController.prototype.generate = function(conversation) {
			return generate.apply(this, arguments).applyTwemoji();
		};

		var generateReply = jn.generateReply;
		jn.generateReply = function(item, is_default) {
			return generateReply.apply(this, arguments).applyTwemoji();
		};
	}

	$.cachedScript("https://twemoji.maxcdn.com/2/twemoji.min.js?2.2.3").then(
		function(script, textStatus, jqxhr) {
			console.log(my_filename + ": " + textStatus);
			setup();
		},
		function(jqxhr, textStatus, errorThrown) {
			console.log(my_filename + ": " + errorThrown);
		});

})(jQuery, janet);

@@ -1091,16 +1091,16 @@
 pe: 
-%22
+'
 script
-%22
+'
 ,%0A%09%09
@@ -1206,16 +1206,43 @@
 ion() %7B%0A
+%09%09%09this.each(function() %7B%0A%09
 %09%09%09twemo
@@ -1258,28 +1258,23 @@
 this
-%5B0%5D
 );%0A%09%09%09
-this
+%7D)
 .find(
-%22
+'
 img.
@@ -1278,17 +1278,17 @@
 mg.emoji
-%22
+'
 ).css(%7B%0A
@@ -1454,16 +1454,94 @@
 tup() %7B%0A
+%09%09if (_Janetter_Window_Type == %22main%22)%0A%09%09%09jn.get$Timelines().applyTwemoji();%0A%0A
 %09%09var ge
@@ -1953,17 +1953,17 @@
 .3%22)
-.then(%0A%09%09
+%0A%09%09.done(
 func
@@ -2060,20 +2060,26 @@
 p();%0A%09%09%7D
-,
+)
 %0A%09%09
+.fail(
 function

Apply to the timelines rendered before calling setup()