function twitterDo(data) {
	$('#blockTwitter').twitter({
		account:'proactiv_jp'
	}, data);
}
(function ($) {
	/**
	 * $ is an alias to jQuery object
	 *
	 */
	$.fn.twitter = function(settings, data) {
		// 引数の上書き設定。使用度低、E
		settings = jQuery.extend({
			url : 'http://twitter.com/',
			interval : 6000
		},settings);

		// 単体での使用を想定してぁEため忁E一つ、E
		var jQueryMatchedObj = this;
	
		//インターバルタイマEID。定期実行管琁E
		var timerId;

		//現在のアクチEブEリスチED。E期値は-1
		var nowId = -1;
		
		//最初E表示を判別するためのフラグ
		var firstFlg = true;
		
		//表示リストE長さ。取得したツイチEーチEEタのlengthで判別
		var listLength = data.length;
		
		//リストE元HTMLを保存するためE変数
		var defaultList = '';
		
		//リストにマウスが乗ってぁEかEフラグ
		var mouceOn = false;
		
		//表示リストが短ぁE合E、ループしなぁEEで、それEフラグ
		var loop = true;

		/**
		 * 初期化設宁E
		 *
		 * @return boolean false
		 */
		function _initialize() {
			_start(jQueryMatchedObj, data);
			return false;
		}

		/**
		 * メインの処琁E
		 *
		 * @param object jQueryMatchedObj The jQuery object with all elements matched
		 */
		function _start(jQueryMatchedObj, data) {
            data.reverse();
			//HTML作E
			var baseHtml = '<p class="A">つぶめE twitter</p>';
			baseHtml += "<p class=\"B\"><a href=\"#\" onclick=\"javascript:window.open('/proactiv/js_twitter/index.html', 'twitterPopup', ' left=0,top=0, width=580, height=770, status=0, scrollbars=1, menubar=0, location=0, toolbar=0, resizable=1');return false;\">参加方法など詳しくはコチラ</a></p>";
			baseHtml += '<p class="C"><a href="' + settings.url + settings.account + '" target="_blank">' + settings.account + '</a></p>';
			baseHtml += '<div class="D"><ul id="twitterBody">';
			
			//チEチEーチEEタをE琁E
			for (i=0;i<data.length;i++) {
				//チEチEーチEEタの時間を表示方式に整形
				tmp = data[i].created_at.split(' ');
				createdAt = new Date(tmp[1] + ' ' + tmp[2] +',' + tmp[5] + ' ' + tmp[3]);
				createdAt.setHours(createdAt.getHours() + 9);
				today = new Date();
				diff = today - createdAt;
				diffDay = Math.floor(diff / 86400000);
				diffHour = Math.floor(diff / 3600000);
				diffMinutes = Math.floor(diff / 60000);
				diffSeconds = Math.floor(diff / 1000);
				var createdAtStr = '';
				if (diffDay > 0 ) {
					createdAtStr = diffDay + ' days ago';
				} else if (diffHour > 0 ) {
					createdAtStr = diffHour + ' Hours ago';
				} else if (diffMinutes > 0 ) {
					createdAtStr = diffMinutes + ' Minutes ago';
				} else if (diffSeconds > 0 ) {
					createdAtStr = diffSeconds + ' Seconds ago';
				} else {
					createdAtStr = createdAt;
				}

				//リスチETMLの允E作E
				defaultList += '<li style="display:none;">';
				defaultList += data[i].text.replace(/(http:\/\/[\x21-\x7e]+)/gi, "<a href='$1' target=\"_blank\">$1</a>");
				defaultList += '<span class="D_A"><a target="_blank" href="' + settings.url + settings.account + '/status/' + data[i].id  + '">' + createdAtStr + '</a>';
				defaultList += '<a target="_blank" style="display:none;" href="' + settings.url + '?status=@' + settings.account + '%20&amp;in_reply_to_status_id=' + data[i].id + '&in_reply_to=' + settings.account + '" class="D_B">reply</a></span>';
				defaultList += '<div class="D_C" >---------------------------------</div>';
				defaultList += '</li>';
			}
			baseHtml += '</ul><div class="D_D"></div></div>';	
			baseHtml += '<p class="E"><a href="' + settings.url + '" target="_blank">twitter</a></p>';

			//HTMLを追加
			jQueryMatchedObj.append(baseHtml);

			//リスチETMLを追加
			$('#twitterBody').append(defaultList);

			//リストE高さを調べるために一旦表示(ブラウザ表示はされなぁE
			$('#twitterBody li').show();

			//リストE高さを計箁E
			h = 0;
			for (i=0;i<listLength;i++) {
				h += $('#twitterBody li:eq(' + i + ')').attr('offsetHeight');
			}

			//リストにオンマウスイベントを設宁E
			$('#twitterBody').hover(function () {
				mouceOn = true;
			},
			function () {
				mouceOn = false;
			});

			//高さによってループするかしなぁEフラグを設宁E
			if (h > $('#' + jQueryMatchedObj.attr("id") + ' .D').attr('offsetHeight')) {
				//ループする場合EリスチETMLめE倍にする、E
				$('#twitterBody').append(defaultList);
			} else {
				loop = false;
			}

			//高さの計算が終わったEで、Eび非表示
			$('#twitterBody li').hide();

			//最初EE件を表示
			_listAnimation();

			//定期実行をセチE
			timerId = setInterval(_listAnimation, settings.interval);
		}
		/**
		 * アニメーション処琁E
		 */
		function _listAnimation() {
			//マウスが乗ってぁE場合E処琁EしなぁEE
			if (mouceOn) {
				return false;
			}
			
			// nowId更新処琁E
			if ($('#twitterBody li:eq(' + (nowId + 1) + ')').length > 0) {
				//ループ３つ目まではそEまま加箁E
				nowId++;
			} else {
				//ループしなぁE合EそEまま終亁E
				if (!loop) {
					return false;
				}

				//ループ終点に来たら番号を戻ぁE
				nowId = nowId - listLength +1;

				//リストE非表示領域の半Eを削除
				$('#twitterBody li:lt(' + listLength + ')').remove();

				//新たにリスト追加
				$('#twitterBody').append(defaultList);
			}
			
			//リストにマウスオンした場合に「reply」リンクを表示する
			$('#twitterBody li').hover(
				function () {
					$('.D_B', this).show()
				},
				function() {
					$('.D_B', this).hide()
				}
			);
			
			//初めの一つだった場吁E
			if (firstFlg) {
				//一つ目はリストEセパレータを削除
				$('#twitterBody li:eq(' + nowId + ') .D_C').remove();
				
				//フェードイン
				_fadeIn(nowId);
				
				//初めてフラグをオチE
				firstFlg = false;
				
				//処琁E終亁E
				return false;
			} else {
				//高さを調べるために一旦表示
				$('#twitterBody li:eq(' + nowId + ')').show();
				
				//表示予定EリストE高さを取征E
				h = $('#twitterBody li:eq(' + nowId + ')').attr('offsetHeight');
					
				if (!h) {
					var test = $('#twitterBody li:eq(' + nowId + ')');
					alert(test.length)
					return false;
				}

				//高さを調べたEで、Eび非表示
				$('#twitterBody li:eq(' + nowId + ')').hide();
				
				//表示予定より前のリストに対して、下に下がるアニメーションを追加する
				ltlen = $('#twitterBody li:lt(' + nowId + ')').length;
				for (i=0;i<ltlen;i++) {
					//要素を一つずつ処琁E
					element = $($('#twitterBody li:lt(' + nowId + ')')[i]);

					//現在のcss:topを取征E
					oldTop = element.css('top').replace('px', '');
					if (!oldTop || isNaN(oldTop)) {
						oldTop = 0;
					} else {
						oldTop = Math.floor(oldTop.replace('px', ''));
					}

					//新しいcss:topを計箁E
					newtTop = h + oldTop;
//					alert('newtTop'+newtTop+'; h'+h+'; oldTop'+oldTop);
					//リストE最後と途中で処琁E刁E刁E
					if (ltlen - 1 == i) {
						//最後E場合E、表示予定Eリストをフェードインする処琁E追加
						element.animate({ 
							top: newtTop + 'px'
						}, 500 ,function () {
							_fadeIn(nowId);
						});
					} else {
						//途中の場合E下に動かすだぁE
						element.animate({ 
							top: newtTop + 'px'
						}, 500 );
					}
				}
			}
		}
		/**
		 * フェードイン
		 */
		function _fadeIn(id) {
			//IE系だと斁Eをフェードすると荒れたりするので、E
			//同色の背景をフェードアウトすめE

			//同色の背景を表示
			$('.D_D', jQueryMatchedObj).show();

			//表示予定Eリストを表示(まだ見えなぁE
			$('#twitterBody li:eq(' + id + ')').show();

			//表示予定EリストE高さを取征E
			h = $('#twitterBody li:eq(' + id + ')').attr('offsetHeight');

			//表示予定EリストE高さと合わせる
			$('.D_D', jQueryMatchedObj).css({'height':h+'px'});

			//同色の背景をフェードアウトしてリストを表示
			$('.D_D', jQueryMatchedObj).fadeOut();
		}
		// Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once
		return _initialize();
	};
})(jQuery);