Mob Wars Invite Mobsters

By TheDruidsKeeper Last update May 8, 2009 — Installed 4,113 times.

There are 10 previous versions of this script.

// ==UserScript==
// @name           Mob Wars Invite Mobsters
// @namespace      MobWarsInviteMobsters
// @include        http://apps.facebook.com/mobwars/mob/
// @include        http://apps.facebook.com/mobwars/fight/
// ==/UserScript==

if (document.location == "http://apps.facebook.com/mobwars/mob/"){
	try{
		var div = document.getElementById("app8743457343_selected_list").parentNode.parentNode;
		div.innerHTML = "";
		for(var item in unsafeWindow.a8743457343_friendNames){
			if (eval(GM_getValue("TDK_AddMeNot", '[]')).toString().indexOf(item) != -1) continue;
			var checkbox = document.createElement("input");
			var span = document.createElement("span");
			var link = document.createElement("a");
			span.addEventListener("click", remove, true);
			span.innerHTML = unsafeWindow.a8743457343_friendNames[item] + ' <a>[remove]</a><input type="hidden" value="' + item + '"/><br/>';
			checkbox.value = item;
			checkbox.type = "checkbox";
			checkbox.name = "tdkInvites";
			div.appendChild(checkbox);
			div.appendChild(span);
		}
		var button = document.createElement("input");
		button.value = "Send Mob Wars Invitation";
		button.className = "inputbutton request_form_submit";
		button.type = "button";
		button.id = "tdkSend";
		button.addEventListener("click", sendInvites, true);
		div.appendChild(button);

		var buttonAll = document.createElement("input");
		buttonAll.value = "Check All";
		buttonAll.className = "inputbutton";
		buttonAll.type = "button";
		buttonAll.addEventListener("click", checkAll, true);
		div.appendChild(buttonAll);
	} catch(e){GM_log("Error in mob page main: " + e.message);}
}	else if (document.location == "http://apps.facebook.com/mobwars/fight/"){
	try {
		for (var i in document.getElementsByName("target_id")){
			var input = document.getElementsByName("target_id")[i];
			var cell = input.parentNode.parentNode.parentNode.firstChild.nextSibling;
			var mobLevel = parseInt(cell.innerHTML.match(/, Level ([0-9]+)/)[1]);
			var maxMobSize = (mobLevel < 50) ? 500 : ((mobLevel - 50) * 2) + 500;
			var currentMobSize = parseInt(input.parentNode.parentNode.parentNode.childNodes[3].innerHTML);
			if (maxMobSize > currentMobSize){
				var span = document.createElement("span");
				span.innerHTML = ' <a>[Add Friend]</a><input type="hidden" id="' + input.value + '" value="' + input.value + '"/>';
				span.addEventListener("click", addFriend, true);
				cell.appendChild(span);
			}
		}
		var div = document.createElement("div");
		div.id = "tdkAddMeDiv";
		div.style.display = "none";
		div.innerHTML = '<iframe name="tdkAddMeFrame" width="100%" height="300px" />';
		document.body.appendChild(div);
	} catch(e){GM_log("Error in fight page main: " + e.message);}
}


var requestsPending = new Array();
function sendInvites(){
	try{
		var checkboxes = document.getElementsByName("tdkInvites");
		var button = document.getElementById("tdkSend");
		for (var i in checkboxes){
			if (checkboxes[i].checked){
				requestsPending.push("http://apps.facebook.com/mobwars/mob/do.php?join_id=" + checkboxes[i].value);
			}
		}
		button.value = "Sending: " + requestsPending.length + " requests left.";
		sendNextRequest();
	} catch(e){GM_log("Error in sendInvites: " + e.message);}
}

function sendNextRequest(){
	try{
		var button = document.getElementById("tdkSend");
		if (requestsPending.length > 0){
			var url = requestsPending.pop();
			GM_xmlhttpRequest({
				method: 'GET',
				url: url,
				headers: {
					'User-agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)',
					'Accept': 'application/atom+xml,application/xml,text/xml',
				},
				onload: function(responseDetails) {
					if(responseDetails.responseText.indexOf("Are You Human?") > -1){
						//captcha(url);
					} else {
						button.value = "Sending: " + requestsPending.length + " requests left.";
						if (requestsPending.length <= 0)
							window.location.reload();
						else
							sendNextRequest();
					}
				},
				onerror: function(responseDetails) {
					button.value = "Sending: " + requestsPending.length + " requests left. Error.";
					if (requestsPending.length <= 0)
						window.location.reload();
				}
			});
		} else window.location.reload();
	} catch(e){GM_log("Error in sendNextRequest: " + e.message);}
}

function checkAll(){
	try{
		var checkboxes = document.getElementsByName("tdkInvites");
		for (var i in checkboxes)
			checkboxes[i].checked = true;
	} catch(e){GM_log("Error in checkAll: " + e.message);}
}

function remove(){
	try{
		if (confirm("Are you sure?")){
			var checkboxes = document.getElementsByName("tdkInvites");
			var list = eval(GM_getValue("TDK_AddMeNot", '[]'));
			list.push(this.childNodes[2].value);
			GM_setValue("TDK_AddMeNot", uneval(list));
			for (var i in checkboxes){
				if (checkboxes[i].value == this.childNodes[2].value){
					checkboxes[i].parentNode.removeChild(checkboxes[i]);
					break;
				}
			}
			this.innerHTML = "";
		}
	} catch(e){GM_log("Error in remove: " + e.message);}
}

function captcha(url){
	try{
		closeCaptcha();
		var div = document.createElement("div");
		div.style.position = "absolute";
		div.style.height = "100%";
		div.style.width = "100%";
		div.id = "TDK_CaptchaDiv";
		div.innerHTML = pageHTML;
		var frame = document.createElement("iframe");
		frame.style.height = "100%";
		frame.style.width = "100%";
		frame.src = url;
		div.appendChild(frame);
		var button = document.createElement("input");
		button.type = "button";
		button.value = "close";
		button.addEventListener("click", closeCaptcha, true);
		div.appendChild(button);
	} catch(e){GM_log("Error in captcha: " + e.message);}
}

function closeCaptcha(){
	try{
		if (document.getElementById("TDK_CaptchaDiv") != null)
			document.body.removeChild(document.getElementById("TDK_CaptchaDiv"));
	} catch(e){GM_log("Error in closeCaptcha: " + e.message);}
}

var addingID;
var isBusy = false;
function addFriend(){
	try{
		if (isBusy){
			alert("Page is loading, please wait.");
			return;
		}
		if (this.childNodes[2] != null){
			isBusy = true;
			addingID = this.childNodes[2].value;
			this.childNodes[1].innerHTML = "[Adding Friend]";
			document.getElementsByName("tdkAddMeFrame")[0].src = "http://www.facebook.com/addfriend.php?id=" + addingID;
			document.getElementsByName("tdkAddMeFrame")[0].addEventListener("load", addFriendSubmit, true);
		} else setFriendAdded();
	} catch(e){GM_log("Error in addFriend: " + e.message);}
}

function addFriendSubmit(){
	try{
		if (document.getElementsByName("tdkAddMeFrame")[0].contentDocument.body.innerHTML.indexOf("as a friend") > -1){
			document.getElementsByName("tdkAddMeFrame")[0].contentDocument.getElementById("message").value = "Mobwars";
			document.getElementsByName("tdkAddMeFrame")[0].contentDocument.forms[1].submit();
			document.getElementsByName("tdkAddMeFrame")[0].addEventListener("load", setFriendAdded, true);
		} else setFriendAdded();
	} catch(e){GM_log("Error in addFriendSubmit: " + e.message);}
}

function setFriendAdded(){
	try{
		isBusy = false;
		document.getElementById(addingID).parentNode.innerHTML = " [Friend added]";
	} catch(e){GM_log("Error in setFriendAdded: " + e.message);}
}