twitter_ex

twitter enhanced

// ==UserScript==
// @name        twitter_ex
// @description  twitter enhanced
// @namespace   http://userscripts.org/users/
// @match     https://twitter.com/*
// @match     https://www.twitter.com/*
// @version     0.4
// @grant	none
// ==/UserScript==


HTMLDocument.prototype.createElementHTML=function (content)
{
	var mock=this.createElement("div");
	mock.innerHTML=content;
	return mock.firstChild;
}

HTMLElement.prototype.observe=function (func)
{
	var ts=this;
	var trigger={
		timer : null,
		callback : func,
		ontrig : function(){
			var t=this;
			if (!t.timer)
			{
				t.timer=setTimeout(function(){
					clearTimeout(t.timer);
					t.timer=null;
					t.callback();
				}, 300, false);
			}
		},
	};
	var obs=new (window.MutationObserver||window.WebKitMutationObserver)(trigger.ontrig.bind(trigger));
	window.addEventListener("unload", function(event){
		obs.disconnect();
	});
	obs.observe(ts, {attributes: true, childList: true, subtree: true});
}

HTMLElement.prototype.removeSelf=function()
{
	this.parentNode.removeChild(this);
}


function new_topbar()
{
	var glbnav=document.querySelector("ul#global-actions");
	if (glbnav)
	{
		var html_fav='<li id="global-nav-fav" data-global-action="fav"> <a data-original-title="" class="js-nav js-tooltip js-dynamic-tooltip" data-placement="bottom" href="/i/likes" data-nav="favorites"> <span class="text">Favorites</span> </a> </li>';
		var html_adv_search='<li id="global-nav-advsearch" data-global-action="advsearch"> <a data-original-title="" class="js-nav js-tooltip js-dynamic-tooltip" data-placement="bottom" href="/search-advanced" data-nav="advsearch"> <span class="text">Advanced Search</span> </a> </li>';
		glbnav.appendChild(document.createElementHTML(html_fav));
		glbnav.appendChild(document.createElementHTML(html_adv_search));
	}
	var mmt=document.querySelector(".js-moments-tab");
	if (mmt) mmt.removeSelf();
}

function unshort_links()
{
	Array.prototype.forEach.call(document.querySelectorAll('a[data-expanded-url]'), function (link){
		link.href=link.getAttribute('data-expanded-url');
		link.removeAttribute("data-expanded-url");
	});
}



new_topbar();
unshort_links();
document.body.observe(unshort_links);