Greasemungo No Kiss My Ass Calls

By kenmooda Last update Apr 24, 2008 — Installed 428 times.
// ==UserScript==
// @name           Greasemungo No Kiss My Ass Calls
// @namespace      kenmooda@gmail.com
// @description    Popmundo: Remove the option to make a "kiss my ass call" (2008-04-24)
// @include        http://www*.popmundo.com/Common/Interact.asp?*action=PhoneInteract*
// @include        http://www*.popmundo.com/Common/Interact.asp
// ==/UserScript==
////////////////////////////////////////////////////////////////////////////////
//
//    Greasemungo No Kiss My Ass Calls
//    Copyright (C) 2008  Tommi Rautava
//
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    (at your option) any later version.
//
//    This program is distributed in the hope that it will be useful,
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//    GNU General Public License for more details.
//
//    You should have received a copy of the GNU General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
//
////////////////////////////////////////////////////////////////////////////////

const DUMMY_OPTION_CLASS_NAME = "greasemungoDummyOption";
const SHOW_HIDDEN_OPTIONS_BUTTON_NAME = "greasemungoShowHiddenOptions";
const SHOW_HIDDEN_OPTIONS_BUTTON_TEXT = "Show hidden options";

LoopForms();


function LoopForms() {
	var selectNodes = document.getElementsByName("InteractionTypeID");

	for (var i = 0; i < selectNodes.length; i++) {
		var selectNode = selectNodes.item(i);
	
		GM_log("form("+ i +") = "+ selectNode.name);
		
		LoopOptions(selectNode);
	}
}


function LoopOptions(selectNode) {
	optionNodes = selectNode.getElementsByTagName("option");
		
	var hiddenOptions = 0;
	lastVisible = optionNodes.length - 1;
	
	for (var j = 0; j < optionNodes.length; j++) {
		var optionNode = optionNodes.item(j);

		GM_log("option("+ j +") = "+ optionNode.text +"("+ optionNode.value +")");

		switch (parseInt(optionNode.value)) {
			//case 25: // Lover call
			//case 26: // Prank call
			case 46: // Kiss my ass call
				GM_log("hide option "+ j);
				optionNode.style.display = "none";
				optionNode.selected = false;
				hiddenOptions++;
				break;
			default:
				lastVisible = Math.min(j, lastVisible);
		}
	}
	
	if (hiddenOptions) {
		if (hiddenOptions == optionNodes.length) {
			selectNode.form.elements.namedItem("submit").disabled = true;
			AddEmptyItem(selectNode);
		}
		else {
			GM_log("select option "+ lastVisible);
			selectNode.selectedIndex = lastVisible;
		}
		
		AddShowHiddenOptionsButton(selectNode);	
	}
}


function AddEmptyItem(selectNode) {
	var opt1 = document.createElement('option');
	opt1.value = '';
	opt1.appendChild(document.createTextNode('------------'));
	opt1.className = DUMMY_OPTION_CLASS_NAME;
	
	selectNode.appendChild(opt1);
	selectNode.selectedIndex = selectNode.length - 1;
}


function AddShowHiddenOptionsButton(selectNode) {
	var button1 = document.createElement('input');
	button1.type = "button";
	button1.name = SHOW_HIDDEN_OPTIONS_BUTTON_NAME;
	button1.value = SHOW_HIDDEN_OPTIONS_BUTTON_TEXT;
	button1.addEventListener('click', ShowHiddenInteractionOptionsButtonClicked, true);

	var pn = selectNode.parentNode;
	pn.appendChild(document.createElement('br'));
	pn.appendChild(button1);
}


function ShowHiddenInteractionOptionsButtonClicked(aEvent) {
	var buttonNodes = document.getElementsByName(SHOW_HIDDEN_OPTIONS_BUTTON_NAME);
	
	for (var i = 0; i < buttonNodes.length; i++) {
		buttonNodes.item(i).disabled = true;
	}

	var selectNodes = document.getElementsByName("InteractionTypeID");

	for (var j = 0; j < selectNodes.length; j++) {
		var selectNode = selectNodes.item(j);
	
		var optionNodes = document.getElementsByTagName("option");
	
		for (var k = 0; k < optionNodes.length; k++) {
			var optionNode = optionNodes.item(k);
			
			if (optionNode.className == DUMMY_OPTION_CLASS_NAME) {
				optionNode.style.display = "none";
			}
			else {
				optionNode.style.display = "block";
			}
		}
	
		selectNode.selectedIndex = 0;		
		selectNode.form.elements.namedItem("submit").disabled = false;
	}
}

// EOF