Greasy Fork is available in English.

General: Requester ID

Displays the Requester ID in the dashboard and HIT search.

// ==UserScript==
// @name          General: Requester ID
// @description   Displays the Requester ID in the dashboard and HIT search.
// @include       https://www.mturk.com/mturk/statusdetail*
// @include       http://*.mturk.com/*
// @include       https://*.mturk.com/*
// @version       1
// @namespace https://greasyfork.org/users/6438
// ==/UserScript==

function getFirstRequesterAnchor(str) {
    var ra = getRequesterAnchors();
    for (var i = 0; i < ra.length; i++) {
        if (ra[i].href.match(str)) {
            return ra[i];
        }
    }
    return null;
}

function insertAttrsHTML(n,requesterID) {
    var parent = n.parentNode;
	if (parent!=null) {
		var stuff = "<br />";
		stuff += requesterID;
		parent.innerHTML = parent.innerHTML + stuff;
		
	} 
}

function parseAndInsert(n,k) {
	var requesterID = requesterIds[k];
	insertAttrsHTML(n, requesterID);
}

function getRequesterAnchors() {
    var anchors = document.getElementsByTagName("a");
    var requesterAnchors = new Array;
    for (var i = 0; i < anchors.length; i++) {
		var href = anchors[i].getAttribute('href');
        if (href!=null) {
			if ((href.match("requesterId")) && !(anchors[i].innerHTML.match("Contact the Requester of this HIT")) && !(href.match("signature")) || ((href.match("requesterId") && (window.location.toString().match("statusdetail"))))) {
				requesterAnchors.push(anchors[i]);
			}
        }
    }
    return requesterAnchors;
}

function getRequesterList() {
	var anchors = document.getElementsByTagName("a");
	for (var i = 0; i < anchors.length; i++) {
		var href = anchors[i].getAttribute('href');
		if (anchors[i].innerHTML.match("Contact the Requester of this HIT")) {
			// just in case Amazon switches page, want to die nicely.
			try {
				requesterIds.push(href.split("requesterId=")[1].split("&")[0]);
			} catch(err) {
			}
		}
		var title= anchors[i].getAttribute('title');
		if (title==null) title="";
		if ((window.location.toString().match("statusdetail")) && (title=="Contact this Requester")) {
			// just in case Amazon switches page, want to die nicely.
			try {
				requesterIds.push(href.split("requesterId=")[1].split("&")[0]);
			} catch(err) {
			}
		}	
	}
}

function getCurrentHIT() {
	var curRequesterId=getRequesterId();
	if (curRequesterId!=null) {
		requesterIds.push(curRequesterId);
	}
}

function getLocationData(str) {
	var location = window.location.toString();
	var splitArr = location.split(str+"="); 
	if (splitArr.length == 1) return "";
	return splitArr[1].split("&")[0];
}

function getRequesterId() {	
	var requesterId=getLocationData('requesterId');
	if (requesterId!=null && requesterId!="") return requesterId;
	var forms = document.getElementsByTagName("FORM");
	for (var i=0; i<forms.length; i++) {
		var splitArr=forms[i].innerHTML.split('requesterId" value="');
		if (splitArr.length > 1) return splitArr[1].split('"')[0];
	}
	var location = window.location.toString();
	if ((location.match("preview")) || (location.match("previewandaccept")) || (location.match("accept")) || (location.match("return"))) {	
		var splitArr = document.referrer.split("requesterId="); 
		if (splitArr.length == 1) return null;
		return splitArr[1].split("&")[0].replace("#","");		
	}
	return null;
}

var requesterIds=new Array();
var useOldData=1;
var useNewData=1;

continueLoading()
function continueLoading() {
	getRequesterList();
	getCurrentHIT();
	
	if (useOldData==1) {
		var requesterAnchors = getRequesterAnchors();
		for (var k = 0; k < Math.min(requesterAnchors.length,requesterIds.length); k++) {
			parseAndInsert(requesterAnchors[k],k);
		}
	}
	
}