Greasy Fork is available in English.

MangaToshokan Enhancer

MangaToshokan enhancer

// ==UserScript==
// @name           MangaToshokan Enhancer
// @namespace      mangatoshokan_helpers
// @description    MangaToshokan enhancer
// @include        http://www.mangatoshokan.com/upload_manga*
// @include        http://www.doujintoshokan.com/upload_manga*
// @require        https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @require        https://cdnjs.cloudflare.com/ajax/libs/chosen/1.1.0/chosen.jquery.min.js
// @version        1.0.2
// ==/UserScript==


var allTr = $('table[width="500"] tbody tr');
allTr.each(function(i){
	idString = 'up' + i;
	$(this).addClass(idString);
});

// $('.up0 select').addClass("chzn-select");
$('.up4 select').addClass("chzn-select");
$('.up5 select').addClass("chzn-select");
$('.up9 input').attr("id", "delay_amt");

$('head').append("<link href='http://harvesthq.github.com/chosen/chosen/chosen.css' type='text/css' rel='stylesheet'>");

// $(".chzn-select").chosen();

$('.up6 select').after(' <a class="quality" id="quality1">LQ</a> <a class="quality" id="quality2">MQ</a> <a class="quality" id="quality3">MHQ</a> <a class="quality" id="quality4">HQ</a>');

$('#delay_amt').after(' <a class="delay" id="delay12">12</a> <a class="delay" id="delay24">24</a> <a class="delay" id="delay48">48</a> <a class="delay" id="delay72">72</a>');


// =========== Style ============

GM_addStyle(""
	+".up2 input { width: 450px;}"
	+".up12 input { width: 450px;}"
	+".up12 small { display:none;}"
	+".up13 input { width: 450px;}"
	+".quality, .delay {cursor:pointer;}"
	+"input[type='text']:focus { background: #ffC; border-color: #ff1; color: #0d0d0d;}"
	// +".chzn-select { width: 450px;}"
);

// ====== Helper Functions =======

$("a#quality1").click(function() {
	document.getElementsByName('quality')[0].value = 1;
	return false;
});
$("a#quality2").click(function() {
	document.getElementsByName('quality')[0].value = 2;
	return false;
});
$("a#quality3").click(function() {
	document.getElementsByName('quality')[0].value = 3;
	return false;
});
$("a#quality4").click(function() {
	document.getElementsByName('quality')[0].value = 4;
	return false;
});

$("a#delay12").click(function() {
	document.getElementById('delay_amt').value = 12;
	return false;
});
$("a#delay24").click(function() {
	document.getElementById('delay_amt').value = 24;
	return false;
});
$("a#delay48").click(function() {
	document.getElementById('delay_amt').value = 48;
	return false;
});
$("a#delay72").click(function() {
	document.getElementById('delay_amt').value = 72;
	return false;
});

// ====== Start Helper Functions =======
// GM_addStyle if not available
if (typeof GM_addStyle === 'undefined')
  GM_addStyle = function(css) {
    var head = document.getElementsByTagName('head')[0], style = create('style', {});
    if (!head) {return}
    style.type = 'text/css';
    try {style.innerHTML = css}
    catch(x) {style.innerText = css}
    head.appendChild(style);
};
// Inject a script into the page
function addScript(js) {
  var body = document.body, script = create('script', {});
    if (!body) {return}
    script.type = 'text/javascript';
    try {script.innerHTML = js}
    catch(x) {script.innerText = js}
    body.appendChild(script);
};
// Smart XPath Function
function $x(x, t, r) {
    if (t && t.tagName)
        var h = r, r = t, t = h;
    var d = r ? r.ownerDocument || r : r = document, p;
    switch (t) {
    case XPathResult.NUMBER_TYPE:
        p = 'numberValue';
        break;
    case XPathResult.STRING_TYPE:
        p = 'stringValue';
        break;
    case XPathResult.BOOLEAN_TYPE:
        p = 'booleanValue';
        break;
    case XPathResult.ANY_UNORDERED_NODE_TYPE:
    case XPathResult.FIRST_ORDERED_NODE_TYPE:
        p = 'singleNodeValue';
        break;
    default:
        return d.evaluate(x, r, null, t || XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    }
    return d.evaluate(x, r, null, t, null)[p];
};
// Optional shortcut functions I like
function $x1(x, r) { return $x(x, XPathResult.FIRST_ORDERED_NODE_TYPE , r) }
function $xb(x, r) { return $x(x, XPathResult.BOOLEAN_TYPE, r) }
// A robust and universal forEach
function forEach(lst, cb) {
    if(!lst)
        return;
    if (lst.snapshotItem)
        for (var i = 0, len = lst.snapshotLength; i < len; ++i)
            cb(lst.snapshotItem(i), i, lst);
    else if (lst.iterateNext) {
        var item, next = lst.iterateNext;
        while (item = next())
            cb(item, lst);
    } else if (typeof lst.length != 'undefined')
        for (var i = 0, len = lst.length; i < len; ++i)
            cb(lst[i], i, lst);
    else if (typeof lst == "object")
        for (var i in lst)
            cb(lst[i], i, lst);
};
// Insert an element after another
function insertAfter(node, after) { after.parentNode.insertBefore(node, after.nextSibling);}
// A really cool element creation funtion by avg and JoeSimmons, and modified by me
function create() {
    switch(arguments.length) {
        case 1:
            var A = document.createTextNode(arguments[0]);
	    break;
        default:
            var A = document.createElement(arguments[0]),
                B = arguments[1];
            for (var b in B) {
	        if (b.indexOf("on") == 0)
		    A.addEventListener(b.substring(2), B[b], false);
		else if (",style,accesskey,id,name,src,href,which".indexOf("," +
                         b.toLowerCase()) != -1)
		    A.setAttribute(b, B[b]);
		else
		    A[b] = B[b];
            }
            for(var i = 2, len = arguments.length; i < len; ++i)
	        A.appendChild(arguments[i]);
    }
    return A;
};
// Remove an element
function remove(element1) { element1.parentNode.removeChild(element1); }
// Get element by id
function $i(element2) { return document.getElementById(element2); }
// Get elements by classname
function $c(element3, root) { return (root||document).getElementsByClassName(element3); }
function xhr(url, callback, data) {
    GM_xmlhttpRequest({
          method: (data) ? 'POST' : 'GET',
	  url: url,
	  headers: {
	  'User-agent': window.navigator.userAgent,
	  'Content-type': (data) ? 'application/x-www-form-urlencoded' : null
	  },
	  data: (data) ? data : null,
	  onload: function(res) { if (res.status == 200) callback(res.responseText); }
      });
};
// Add a new class to an element
function addClass(el,cls) {
    if (!el.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')))
        el.className += " "+cls;
};
// Remove a particular class from an element
function removeClass(el,cls) {
    if (el.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'))) {
        var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
        el.className = el.className.replace(reg,' ');
    }
};
// Turn text into a document and pass it to a callback function
function makeDoc(txt, cb) {
  var dt = document.implementation.createDocumentType("html",
        "-//W3C//DTD HTML 4.01 Transitional//EN", "http://www.w3.org/TR/html4/loose.dtd"),
      doc = document.implementation.createDocument('', '', dt),
      html = doc.createElement('html');

  html.innerHTML = txt;
  doc.appendChild(html);
  cb(doc);
};
// ======== End Helper Functions =========