// ==UserScript==
// @name           UserRT
// @namespace      http://blog.makino-style.org
// @description    add "RT function" to twitter.com
// @include        http://twitter.com/*
// ==/UserScript==

// Check if jQuery's loaded
    function GM_wait() {
        if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { 
		$ = unsafeWindow.jQuery;
		//jQuery = unsafeWindow.jQuery.noConflict();
		letsJQuery(); }
    }
    GM_wait();
// All your GM code must be inside this function
    function letsJQuery() {
			$('body').dblclick(addUserRTLink);
    }
	

	//unsafeWindow.UserRT_onClick = addUserRTLink;
	function addUserRTLink(){
		$('#timeline > li').each(function(){
			var statusId = $(this).attr('id');
			var rtId = statusId +'RT';
			if($('#'+rtId).size()==0){
				var actionsHtmlNode = $('.actions-hover',$(this));
				var actionsHtml = $(actionsHtmlNode).html();
				actionsHtml += '<li id="'+ rtId +'">&nbsp;or&nbsp;<a href="javascript:UserRT_setUserRT('+ "'"+statusId+"'" +');">RT</a></li>';
				$(actionsHtmlNode).html(actionsHtml);
			}
		});
	}

	//unsafeWindowのnamespaceへマッピング
	unsafeWindow.UserRT_setUserRT = setUserRT;
	
	//ユーザRTの生成
	function setUserRT(statusId){
		var screenName = $('.tweet-url.screen-name',$('#'+statusId)).html();
		var entryContent = getEntryContent(statusId);
		//RT生成
		var rtText = 'RT @' + screenName + ': ' + entryContent;
		//140字抜きだし
		if(rtText.length>140){
			rtText=rtText.substr(0,140);	
		}
		$('#status').val(rtText);
		$("html").scrollTop(0);
	}
	
	function getEntryContent(statusId){
		var entryContent = '';
		$('.entry-content',$('#'+statusId)).contents().each(function(){
			//TextNode
			if(this.nodeType==3){
				entryContent += this.nodeValue;
			//ElementNode
			}else if(this.nodeType==1){
				entryContent += $(this).text();
			}
		});
		return entryContent;
	}


