Nickel / tumblr.com Extra blog buttons

// ==UserScript==
// @name        tumblr.com Extra blog buttons
// @description Add extra navigation buttons to the upper left corner of tumblr blogs
// @icon        http://38.media.tumblr.com/avatar_fee7ff3e9d6a_48.png
// @version     0.1.3
// @license     GNU General Public License v3
// @copyright   2014, Nickel
// @oujs:author Nickel
// @grant       GM_addStyle
// @include     *://*.tumblr.com/*
// @exclude     *://*.tumblr.com/archive*
// @exclude     *://*.tumblr.com/image*
// @exclude     *://www.tumblr.com/*
// ==/UserScript==

/* TODO
var foo = document.getElementById("tumblr_controls");
window.getComputedStyle(foo, null).width
*/


(function(){

// don't run in frames
if( frameElement ){ return; }

// don't run without tumblr elements
if( ! document.getElementById('tumblr_controls') ){ return; }

// fallback (Chrome lacks GM functions)
if( typeof GM_addStyle != 'function' ) {
	function GM_addStyle(css) {
		var head, style;
		head = document.getElementsByTagName('head')[0];
		if( !head ){ return; }
		style = document.createElement('style');
		style.type = 'text/css';
		style.innerHTML = css;
		head.appendChild(style);
	}
}

// origin
var origin = document.createElement("div");
origin.id = "userscript-extra-buttons";
document.body.appendChild(origin);

GM_addStyle("#userscript-extra-buttons {position:fixed; width:160px; height:20px; top:4px; left:5px; z-index:2147483647;}");
GM_addStyle("#userscript-extra-buttons a {display:block; float:left; margin-right:3px; width:21px; height:100%; border-radius:2px; outline:0;}");

var splitUrl=window.location.href.split("/");
var blogname = window.location.host.split(".")[0];

// add dash button (TODO: check if following/own blog)
if ( splitUrl[3] == "post" ) {
	var pid = splitUrl[4];
	pid = Number(pid)+1;

	var elm = document.createElement("a");
	elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/posts/nipple.png) repeat-x #222; width:28px;" );
	elm.href = "http://www.tumblr.com/dashboard/1000/" + pid + "?lite";
	elm.title = "Locate on Dashboard";
	origin.appendChild( elm );
}

// add liked-by button	(TODO: check if main blog)
var elm = document.createElement("a");
elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/iframe_like_alpha.png) no-repeat #222;" );
elm.href = "http://www.tumblr.com/liked/by/" + blogname;
elm.title = "Liked by " + blogname;
origin.appendChild( elm );

// add archive button
var elm = document.createElement("a");
//elm.setAttribute( "style", "background:url(http://assets.tumblr.com/themes/redux/button-archive.png) no-repeat #222;" );
elm.setAttribute( "style", "background:url(http://static.tumblr.com/vr9xgox/VT4nf8tvk/button-archive.png) no-repeat #222;" );
elm.href = "http://" + blogname + ".tumblr.com/archive";
elm.title = "Blog Archive";
origin.appendChild( elm );

// add Home Button
var elm = document.createElement("a");
elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/iframe_dashboard_alpha.png) no-repeat #222;" );
elm.href = "http://" + blogname + ".tumblr.com";
elm.title = "Blog Home";
origin.appendChild( elm );

// add prev/next page buttons
var page = -1;
var lastPage = 1000;	// TODO

if( splitUrl[splitUrl.length-2] == "page" ){
	page = Number(splitUrl[splitUrl.length-1]);
}
else if( splitUrl[3] == "" || splitUrl[3] == "tagged" || splitUrl[3] == "search" ){
	page = 1;
}

if( page > 1 ){
	var elm = document.createElement("a");
	elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/dashboard_controls_arrow_left.png) 50% no-repeat #222;" );
	elm.href = window.location.href.replace( /\/$/, "" ).replace( /\/page\/[0-9]+$/, "" ) + "/page/" + (page-1);
	elm.title = "prev page";
	origin.appendChild( elm );
}

if( page > -1 && page < lastPage ){
	var elm = document.createElement("a");
	elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/dashboard_controls_arrow_right.png) 50% no-repeat #222;" );
	elm.href = window.location.href.replace( /\/$/, "" ).replace( /\/page\/[0-9]+$/, "" ) + "/page/" + (page+1);
	elm.title = "next page";
	origin.appendChild( elm );

	var elm = document.createElement("a");
	elm.setAttribute( "style", "background:url(http://assets.tumblr.com/images/dashboard_controls_arrow_first_page.png) 50% no-repeat #222; width:24px; transform:scaleX(-1);" );
	elm.href = window.location.href.replace( /\/$/, "" ).replace( /\/page\/[0-9]+$/, "" ) + "/page/" + (page+10); //TODO: lastPage
	elm.title = "jump ahead 10 pages";
	origin.appendChild( elm );
}

})();