the source is over 100KB, syntax highlighting in the browser is too slow
// mondo_caboodle.user.js
//
// Copyright 2005-2007, Michael Devore
// This file is licensed under the terms of the Artistic License.
// See http://www.opensource.org/licenses/artistic-license.php for the license itself.
//
// This is a Greasemonkey script.
// See http://greasemonkey.mozdev.org/ for more information on Greasemonkey.
//
// ==UserScript==
// @name Mondo Caboodle
// @namespace http://www.devoresoftware.com/gm/mcab
// @description Personalize the Metafilter experience even more
// @include http://*.metafilter.com/*
// @include http://www.devoresoftware.com/*
// ==/UserScript==
//
// Work begun, December 2005 (as Mondo Meta)
// Version 1.0, released early February 2007
// Version 2.0, released early mid-June 2007, includes Mondo Meta 2.01, Mondo Image 1.3
//
// Mondo Caboodle variables
var mondoCaboodleVersion = "Version 2.0, Mondo Caboodle";
var imagesText = "Images";
// ***********************************************
// Mondo Meta variables
// ***********************************************
var expandedLinksFlag = 0;
var boxUp = 0;
var mondo_meta_control = null;
var mondo_meta_highlight_control = null;
var mondo_meta_delete_control = null;
var mondo_meta_tag_control = null;
var mondo_meta_style_control = null;
var mondo_meta_manage_control = null;
var freeRules = new Array();
var aDeleteInfo = new Array();
var aHighlightInfo = new Array();
var aTagInfo = new Array();
var aStyleInfo = new Array();
var storedRuleCount = 0;
var currentRuleNumber = 0;
var currentRuleType = 0;
var deactivateDeleteFlag = false;
var deactivateHighlightFlag = false;
var deactivateTagFlag = false;
var deactivateStyleFlag = false;
var flagMultiple = 1;
var flagHighlight = flagMultiple << 1;
var flagDelete = flagHighlight << 1;
var flagTag = flagDelete << 1;
var flagStyle = flagTag << 1;
var originalMenuHeight = "50px";
var originalSiblingHeight = "50px";
var expandTextChoice = [ "Expand Links", "Compact Links"];
var deleteFilterText = "Delete-Filter";
var tagText = "Tag";
var highlightText = "Highlight";
var styleText = "Style";
var manageText = "Manage";
//var separatorText = "------------";
var compactText = "compact";
var defaultText = "default";
var expandText = "expand";
var usedRuleHeader = "Used:mm1.0:";
var freeRuleHeader = "Free:mm1.0:";
var deleteHeader = "Delete:";
var highlightHeader = "Highlight:";
var tagHeader = "Tag:";
var styleHeader = "Style:";
var systemHeader = "System:mm1.0:";
var systemStatusText = "System Status";
var optionText = "Option";
var contentText = "Content";
var footerText = "Footer";
var contentFooterText = contentText + "+" + footerText;
var customText = "Custom";
var unchangedText = "Unchanged";
var buttonText = "button";
var spanText = "SPAN";
var removeText = "Remove";
var invisibleText = "Make Invisible";
var fg_bgText = "Foreground = Background";
var mmHighlightAttribText = "mmModifiedHighlight";
var mmDeleteAttribText = "mmModifiedDelete";
var mmTagClassText = "mmTagClass";
var mmStyledPostAttribText = "mmStyledPost";
var whiteText = "white";
var darkBlueText = "darkblue";
var textNodeText = "#text";
var trueText = "true";
var falseText = "false";
var clickText = "click";
var noneText = "none";
var hiddenText = "hidden";
var visibleText = "visible";
var xText = "x";
// ***********************************************
// Mondo Image variables
// ***********************************************
var aDefaultSites = [ "*.flickr.com", "*.imageshack.us", "*.photobucket.com" ];
var aDefaultExtensions = [ ".png", ".jpg", ".gif", ".jpeg" ];
var defaultLimitMaxWidth = "550px";
var defaultLimitMaxHeight = "550px";
var miBottomPos = "5px";
var miLeftPos = "280px";
var miFontSize = "12px";
var miFontWeight = "bold";
var miColor = "darkblue";
var miOpacity = ".85";
var miBackgroundColor = "#FFCFCF";
var lightgrayColor = "lightgray";
var whiteColor = "white";
var restrictedImage = "data:image/jpeg,%FF%D8%FF%E0%00%10JFIF%00%01%01%01%01%2C%01%2C%00%00%FF%DB%00C%00%08%06%06%07%06%05%08%07%07%07%09%09%08%0A%0C%14%0D%0C%0B%0B%0C%19%12%13%0F%14%1D%1A%1F%1E%1D%1A%1C%1C%20%24.'%20%22%2C%23%1C%1C(7)%2C01444%1F'9%3D82%3C.342%FF%DB%00C%01%09%09%09%0C%0B%0C%18%0D%0D%182!%1C!22222222222222222222222222222222222222222222222222%FF%C0%00%11%08%00I%00%C5%03%01%22%00%02%11%01%03%11%01%FF%C4%00%1F%00%00%01%05%01%01%01%01%01%01%00%00%00%00%00%00%00%00%01%02%03%04%05%06%07%08%09%0A%0B%FF%C4%00%B5%10%00%02%01%03%03%02%04%03%05%05%04%04%00%00%01%7D%01%02%03%00%04%11%05%12!1A%06%13Qa%07%22q%142%81%91%A1%08%23B%B1%C1%15R%D1%F0%243br%82%09%0A%16%17%18%19%1A%25%26'()*456789%3ACDEFGHIJSTUVWXYZcdefghijstuvwxyz%83%84%85%86%87%88%89%8A%92%93%94%95%96%97%98%99%9A%A2%A3%A4%A5%A6%A7%A8%A9%AA%B2%B3%B4%B5%B6%B7%B8%B9%BA%C2%C3%C4%C5%C6%C7%C8%C9%CA%D2%D3%D4%D5%D6%D7%D8%D9%DA%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FF%C4%00%1F%01%00%03%01%01%01%01%01%01%01%01%01%00%00%00%00%00%00%01%02%03%04%05%06%07%08%09%0A%0B%FF%C4%00%B5%11%00%02%01%02%04%04%03%04%07%05%04%04%00%01%02w%00%01%02%03%11%04%05!1%06%12AQ%07aq%13%222%81%08%14B%91%A1%B1%C1%09%233R%F0%15br%D1%0A%16%244%E1%25%F1%17%18%19%1A%26'()*56789%3ACDEFGHIJSTUVWXYZcdefghijstuvwxyz%82%83%84%85%86%87%88%89%8A%92%93%94%95%96%97%98%99%9A%A2%A3%A4%A5%A6%A7%A8%A9%AA%B2%B3%B4%B5%B6%B7%B8%B9%BA%C2%C3%C4%C5%C6%C7%C8%C9%CA%D2%D3%D4%D5%D6%D7%D8%D9%DA%E2%E3%E4%E5%E6%E7%E8%E9%EA%F2%F3%F4%F5%F6%F7%F8%F9%FA%FF%DA%00%0C%03%01%00%02%11%03%11%00%3F%00%F5%DA(%AC%AF%0Ek%91x%8BC%B7%D4%A3%85%ED%DAE%06H%1C%82%D1%B6%01%C1%F6%20%86%07%8C%AB)%C0%CDcgk%9E%A9%ABEc%E9%3E%22%B6%D5%60%D4%EEv%FD%9E%D6%C6%E1%A2%F3%A5p%16D%08%AF%E6%E7%A0B%1B%20%E7%05p%7B%E0_%87Q%B1%B8%B3%8E%F2%1B%CBy-d%60%892J%A5%19%8Bm%0008%24%B7%1F%5E(i%A0%2C%D1U%ACu%1B%1DN%135%85%E5%BD%DCJ%DB%0B%C1*%C8%A1%B0%0E2%0F%5EG%E7T%ED%BCAc%7F%A9%DB%DA%D8%5C%5B%DEE%2C3Hg%82uuF%8D%A2%1Bx%CF'%CD%07%AF%18%F7%A2%CC%0DZ*%B5%B6%A3c%7B4%F0%DA%DE%5B%CF-%BBl%9D%22%95Y%A2l%91%86%00%F0x%3D%7D%0DCu%AAEg%A9%C3k6%C4%89%EDg%B9y%DD%C2%ACk%13F%0Es%DB%F7%99%CEx%DB%EF%C1g%B0%17%E8%AA%07%5C%D2%15.%9C%EA%96!m%18%25%C97%09%88X%9C%00%FC%FC%A7%20%8E%7B%D4%D2%EA60X%0B%F9o-%E3%B2*%AE.%1EU%11%95lm%3B%B3%8C%1C%8Cz%E6%8B0%2C%D1U%A2%D4lg%B07%F1%5E%5B%C9d%15%9C%DC%24%AAc%0A%B9%DCwg%18%189%F4%C5%16z%8D%8E%A0%9B%EC%AF-%EEWh%7C%C3*%B8%DAI%00%F0zeX%7DT%FAR%B3%02%CD%15Z%C7Q%B1%D4%E13X%5E%5B%DD%C4%AD%B0%BC%12%AC%8A%1B%00%E3%20%F5%E4~tO%A8%D8%DA%CC%90%DC%5E%5B%C5%2B%B2%22%A4%92%AA%B33%92%10%00O%24%EDlz%ED%3E%94Y%81f%8A%AC%9A%8D%8C%97%F2XGyn%F7%B1.%F9-%D6U2%22%F1%C9%5C%E4%0EG%E6)%9F%DA%FAo%F6%97%F6o%F6%85%A7%DB%FF%00%E7%D7%CE_7%A6%EF%B9%9C%F4%E7%A7Ni%D9%81r%8A%C7%B0%F1V%89%A9%5BK%3C%1A%9D%A0H%A4%927%DD%3Aq%B0%BF%CD%C1%E8V6p%7B%A8%CF%AD_%B3%BC%8A%F4J%F0%CBo%2CJ%CA%11%E0%98I%95(%AC%09%C0%E0%9D%D9%03%9C%82%A7%3C%E0%0D5%B8%16h%AC%7B%AF%15h%96%DAj%EA%1F%DAv%92%DA%9B%84%B6%F3b%9D%19C%B1%03%19%CE8%07q%EE%14%13W%1FW%D3b%FB'%99%A8Z'%DB1%F6%5D%D3(%F3%F3%8Cl%E7%E6%FB%C3%A7%A8%F5%A3%95%81r%8A%AD%7D%A8%D8%E9%90%89%AF%EF-%ED%22f%D8%1EyV5-%82q%92z%F0%7F*f%99%7F%FD%A3h%F3%F9~%5E%DB%89%E0%DB%BB9%F2%E5h%F3%F8%ED%CE%3Bf%8B%3B%5C%0B%94QE%20%0A(%A2%80%0A%F3%FB%08%AE%ED%FC%3F%A0Gb%5E5%D6t%DBkY%5D%1Fk%24%81%13.%98%23%12y%1Ey%DCs%FE%A61%D8%2Bz%05f%DDk%D66w%2Fn%E2%EEY%13%1B%C5%B5%9C%D3%84%24g%0CcV%00%E0%83%83%CE%08%3D%08%AB%8Bkd3%9D%F2b%B4%D4.%D8F%91i%96z%D4op%AA%A0G%14Kc%18BTq%B5d%F2%CFL.%D0%DC%05%C8f%AB%F6mP%DF%DCA%E5%5Di7W%1A%5Ce%97%0D%0C%F2%8B%A0%24%3E%8F%F2%18%94%B7%20%ED%DB%9C%A9%03%ABmV%C9%7C%AD%B3y%BEu%BB%DDE%E4%A9%93%CC%89v%E5%97h%3B%BE%FA%E0%0ENx%CD%5C%A7%CFml%07%23%ADC%2C%FA%CE%AC%91%C6%F2%AF%D9t%D6%9A4R%C5%E1%173%19Wh%E5%81%8C8*3%B8q%83%9CUmV%EE%DBY%D6eo%0F%DCEs~%DA%1D%F4Iqj%E3%EF%EE%87%CBQ(%E3%20%92q%9C%AE%E0N7%02%7B%15%BA%85%EFe%B3W%CC%F1F%92%BA%60%F0%AEX)%CFNJ7%E5%F4%A7%CD4V%F0%C94%D2%24qF%A5%DD%DD%80UP2I'%A0%14)%DB%A0%1C%EA%DDi%F7%FA%A6%8B%1E%8A%F17%D8%A4qq%1C%03i%B6%83%C9u%F2%DDx)%F3%F9_%BB89L%E3%E48%A7%E3o%F9z%FF%00%B1%7BS%FF%00%DA%15%D8%D1IJ%CD00g%B4%B6O%17%E8%91%A5%BCJ%96%DA%7D%DF%90%A1%00%11a%AD%D4m%1F%C3%F2%928%ECH%AC4%BC%5B8m%5D%EEll%40%BE%D4%DDoo%C1hc%7F%B58%D8%17z%0F1%836%1B9%0A%AE%00%C36%3By%A5X!%92W%0EU%14%B1%08%85%D8%803%C2%80I%3E%C0d%D3%E8R%03%82%B0%91%1A%5B%9B%C6%BD%96%F7N%83%5CY%AEn%A7U%01%A3%16H%12F%0A%AA%A5%04%866%0C%06%00U%7C%E0n%A2%FEHuk%FD~%5D%11%A2%9CIo%A74%D2%C5%11%95%26U%9E_3%85%C7%9C%3C%B5*UI%DC%14%A7Q%8A%ED%2F%AD%1A%F2%10%89wqk%22%B6%E4%96%06%01%81%C1%1D%18%15a%82x%60G~%A0%10%CB%0D9%2C%BC%C7i%E5%B9%B9%97%1Em%CC%FBw%B8%19%DA%3EP%14%01%93%80%00%19%24%F5bMs%AD%C0%C3%D1f%97P%F1%01%BE%5DZ%C7Q%89-Z%19%25%D3%AD%8ADX%BA%95%0E%FEk%EEa%87!%40%F9C%B18%DC7%5D%B7%86%26%F1%CE%A31%8D%0C%A9%A6%DA%A2%B9Q%B9T%CBpH%07%D0%ED%5C%FD%07%A5l%09T%CC%D1%00%FB%95C%12P%85%C1%24%0C60O%07%20%1C%8E3%D4e%F5%0E%40y%FE%96%2F%9E%CFH%D2%E7%D5lN%A1m42Og%0D%93%7D%AE'V%06Vw3p%1B%2F%BAB%B8q!%C6%EF1C_%FBl67%FF%00%D9%D6%F7%FA%7D%E26%A1%B8%E9r%C0E%DA%B4%93%EFg%E5%FA%231%94%1F%2F%EE(9%FE%3A%ECh%AAs%B8%1C-%9C%D67%B3iVfKy%E5%B7%F1%1D%EB%CB%0E%E5f%89%B3x%C8Y%7B%1E%01%19%F4%C8%AB%97P%CB%3C%5E%25H%E3yW%FBZ%D9%A6%8D%14%B1xDV%A6U%DA9%60c%0E%0A%8C%EE%1C%60%E7%15%D7QK%9F%5B%81%CAk%9A%B6%8Dw%A5%3D%F5%A5%DD%A4%A9%15%E5%87%9Fw%1B%02%81V%E9%08%06A%F2%FC%B9c%8C%FC%A1%B2q%B8f%9D%D5%D3%C7%AAj%AF%26%AB%A4%C5k%A8%F9f%D5.%EC%DA%E4%DEA%E4%A8%DB%11YW%CC%1B%8C%9F%BBPN_8%FD%E0%CFh%25S3D%03%EEU%0CIB%17%04%900%D8%C1%3C%1C%80r8%CFQ%96%5D%DDCce%3D%E5%CB%EC%82%08%DAY%1F%04%EDU%19'%03%93%C0%A1J%DAX%0Ej%CET%D0%EFm%A6%D7o%3C%A4%1A%5D%B5%BCWW%D2*%E6U.f%05%B7%15Wo%DD%127%1D%DBx-%B0%91g%C22%DAC%A0E%1CA-%E2%92%FA%F1-%E1d%F2%8E%3E%D1)%0A%10%80A%0A%0F%CB%8C%80%0F%1CV%FAJ%B2%3C%8A%03%83%1Bmm%C8%40'%00%F0H%E4r9%19%19%C8%EA%0D%3E%93%95%D0%05%14QR%20%A2%8A(%00%AC%7F%0A%7F%C8%A9%A5%EE%FF%00%5D%F6u%FBF~%F7%9D%8F%DE%EF%EF%BF~%ED%D9%E7vs%CEkb%B2%EFtK%0B%9B%87%B8sw%1C%D2%7D%E1k%7B-%BF%98%C0u!%1DC6%00%19%3C%E0%01%9C%01%86%9A%B5%98%9BI%5D%9C%FF%00%89%E6%8A%DC%DCM%A7H%91%98%F4%5DY%D5%ED%D8%0D%B2%87%84%B1%05z0%7C%E7%BEs%DE%B6nc%3A%AF%88.4%E9%E6%B8%8E%D6%DA%D6%19%D5m%A7xY%DEG%95IfB%18%80%23%18%19%03%E69%07%E5%DB4%BAF%9F~%82%16%B4Ak%1D%B4%B6AQ%8A%0F)%F6%87%40%A3%A2%FC%8B%C8%C1%1Bx%E3%AC%97%96v%1A%ABE%E6%B3%EE%40%7C%B9m%EEZ'%C1%EA%A1%A3%60%D8%3BrGC%B4%7Fw%8A%E7VFq%AFM%DB%5D%F6%F3%F4%F2%F39%FDCR%9BE%D7u%26D%96%E6D%D2%ED%1AK%99%10%15%8A5%92%E3%7C%D2m%DA%0E%01%DD%B1p%CD%D1%40%19%2B%7F%C4%F6K%1F%805%9Bw%9E%E2%5D%B63%B9%95%E5!%DD%82%B3d%91%8E%09%FE%11%85%C7%CB%8D%BCV%C5%BD%8D%9D%AD%C3Io%0CqI%E4G%06%D4%E0%2Ch%5Bb%85%E8%00%DC%D8%C0%FET%D3%A5Y%1D%26M%2F%C9%FF%00B%927%89%A1%DCp%11%B3%95%1C%E5F%09%00%0C%000%06%00%14s%2B%A6j%9A%7B%19%22%C9.5ytf%B8%BE%5B%2B%3BX%A7%40%97%B3%09%1D%E4yA%2F%26%ED%E4%01%1F%03v%3Ec%90p%BBmi%AD6%AF%E1%FB%88n.eI%0C%976%86%E2%12%12L%24%AF%10p%40%C0%7C(9%00%0C%F4%00qR%CB%A1YKoo%03%0B%C3%E4%96%092%DE%CA%26P%DC%90e%DF%BC%A9%20q%928%5E8%18%B9m%E4G%1A%DB%5B%A2F%90%A8U%8D%00%0A%8A%09P%00%1C%01%F2%F4%ED%8ANH%978%A9(%B7%AB8%CDOY%BE%D4%B4%3B%E2%93%BD%AD%C6%99%A6%DC%CDt%D6%EE%C8%1A%E0%09%A0%1B%0Erc%0D%14%CD%CE%0EDG%AE%40%D2%D6.n.%7CA%26%9D%F6-N%EA%D6%0BX%A7%DB%A7%5C%AD%BBow%91r%ECdF%20%08%F8%00%E3%96%C8%3F.6.4%EB9%12%EE%D9%ED%B7E%A9%96%17_%BC%23~c%08%7B%E7%95P%3E%5Ct%CD-%DD%85%96%AC%23iL%BB%E3%07d%90N%F0%C8%14%F5%1B%90%86%DAv%83%8C%E0%ED%07%9C%0A%AEx%89U%83%97-%F5%FF%00%86zw%DF%A1%CB%8DsS%B30%C9%23n%BA%BB%B7%9A%DD%23%99%D5%D5%25%8E%E9!%85%9CF%DBA%3Ex%F3v%FF%00s%00%0D%B8%AB%9Am%DD%CBkvZ%24%D7%12%B1%D3%BE%D1%E6K%BC%96%9Fb%C2%22%DEO%DE%CCw*%CD%C0%FD%E2%E4p9%E8%1A%CA%C4%0BQ%E5G%1A%D8%1F2%05S%B5b%F9%19%06%00%E3%1BY%86%3A~T%E6%86%DA%DE%EAk%ED%A0O%24K%1B1lnT%DE%CA98%E3%7B%9F%C7%9E%94%9C%D7a%BA%91I%B6%F69%DF%10%5D%DC%C3%FF%00%09W%95q%2C~F%86%92%C5%B5%C8%F2%DF%FD'%E6_C%F2%AF%23%9F%94zS%E6%D2%CAx%82%CFO%FE%D2%D4%CC%17V%B3%CFs%9B%C7%0D%2B%C6%F1%05%20%83%FB%B1%FB%C6%24E%B0%1E%066%8CV%BD%E5%96%9Bs%15%EC%97%08%AE%B7v%ABo%3F%EF%08%DF%17%CF%B4u%18%FB%EF%C8%C7%5E%BC%0A%B4m%A0%96%F2%2B%C2%87%CF%89%1E%24s%91%85b%A5%86%3D%CA%2F%3E%DCu%A3%9Dt%05R%12%7C%A9%EAr%B1%DEM%3E%9Fmd%ED%A8%5D%1F%B4%5E%A7%D9%ED%25%09%3C%91C9%8DI%99%9D%08%0A%0A%03%F3obT%92F%FC%B2%C6%E7PV%3A%3D%CC%8F%0A%C9%AB%7D%8C%F9wo3%C7%17%D9%04%E4%2C%CE%03%92X%1F%98%F2%03%10%A4aH%E8%A5%D0t%E9bX%FC%B9c%DB%24%92%2B%C1q%24N%0C%8C%5D%C6%F4%60%D8f9%2B%9Cd%0E8%18%AD%3E%83%0D%AE%99%3D%B6%97gn%DE%7C%C2i%E3%9Ei%17%CD%7D%A0o%F3F%E6I%01Tm%F8%24%95%CF%0Cw%0A%E6E%98%D7%D3%DD%E8W%9A%AC6W7%D3%A7%93%A7%AC1I7%9A%F1%99%AE%24%8D%F6%19%0F%2Cz%82%E4%8C%E0%1F%94%00%2F%E8%D2%5D%5B%EB%2Bf%2C%F5%0B%5B9m%E4%94%A6%A3x%93%B9%91Y%001%9F5%DF%18c%BB%3F(!1%82N%E9%B4_%0F%C5l%2F%A7%BA%86%16%92%F9%16%09%E1%135%CA%B2%26%F1%87%92A%BAF%3B%D8%12%C0aB%AE%3E%5C%9D%1B%0D%3A%D3O%DEmD%B24%A7k%CB4%EF3%E1s%80%5D%D8%B6%01%CE%06p%0B%1E94%A5%25%B1%3C%C8%C2%F1%05%DD%CC%3F%F0%95yW%12%C7%E4hi%2C%5B%5C%8F-%FF%00%D2~e%F4%3F*%F29%F9G%A5S%F1%2C%0F%A6%D9jV%A9ww2%5Dhw%F3Nn'i7%C8%820%AC%01%F9S%FDc%F0%81W%9E%9C%0CuW%1Ae%95%E8%BC3%C0%5B%ED%96%FF%00e%9F%2C%CB%BE1%BF%E5%EB%C7%DF~G%3C%F5%E9K%7D%A5Yj%3B%BE%D7%0F%99%BA%DE%5BS%F3%11%98%A4%DB%BDx%3D%F6%AF%3DF8%A1M%2B%0D4%F5G%3B%A8%DC%5D%B4%3A%DCq%DE%DCB%CB%ADYA%1C%91%BF%CD%120%B4%C8%5C%E4c%E7n%08%20%EE9%07%26%99%7Fus%A1M%A9%DAXIw*%08%EC%0Ck%24%E6y%15%E7%B8x%9C%A3J%C7%9D%A1p%18%ED%04d%8ENzW%D2%AC%A4%F3%F7%C3%9F%3E%E2%3B%A9%3Ec%F3K%1E%CD%8D%D7%8Cyi%C7N9%EAi%EF%A7%DAK5%C4%B2%C0%925%CC%2B%04%C1%FEex%D4%B1%0AT%F1%8F%9D%FBs%9EhS_%D7%C8f%1E%8D%25%D5%BE%B2%B6b%CFP%B5%B3%96%DEIJj7%89%3B%99%15%90%03%19%F3%5D%F1%86%3B%B3%F2%82%13%18%24%EE%E9j%9D%86%97k%A6%F9%86%DCJ%CF%267%C9%3C%EF3%903%81%B9%C9l%0C%9C%0C%E0%12OsVa%89%60%868%90%B9TP%A0%BB%97b%00%C7%2CI%24%FB%93%93S'v%03%E8%A2%8A%91%100%FBL%40%10%CA%8C2%19X%1E08%3DA%EA%7DG%1FJ%AD%3C%B3-%D10.%F2%F8C%D0aG%19%07%9E%8C%C7%3C%1Fp%3A%99%9C%07S*d%1C%90%7C%B1%9D%E0%E3%BF%07%A69%07%03%F0%A8diV%DB%CCYa%16%E3%86%12G%F2%14%C0%1F(%07'%9C%E0w%CF%D2%A5%9E%26.M%C5%B4%DD%D6%B7M_N%BA%D9%24%AE%D3%BD%FF%00!b%93%ED%8F4m%10)%9D%8C%C4%02T%82N9%18%20q%EB%83%EA%0Ein%20%F3%A4r%AC%CE%D9%D9%B7qP%87%0A%D9%CE%0F%3C%03%E9%F8%F5%8A%CEcp%C2%06e%05P2%AE%DETt%E0%A9%18%E3%D3%D4%11%C1%C0M%C6%7B%C8%D1%A2u%DD%9C%86%25%86%07'%B8%2B%9D%D8%C1%1F%DD%E3%B5.%87*%AD%1A%B8x%F3%7B%DC%CE%DA%FA%BD%1E%E9Z%FF%00j%F7%BE%DBZ%C3%C7%24k%B5%5D%8BHr%CC%178l%F0~%9C%8E%A7%A2%E3%9Ei%EE%0B%85%8D%D9%C4%81GG*%1C%90x%C8%FAg%81%FA%12)X%C9%1C%A8%AA%A1c%04*%AA%B0%01%BDr%08%E3%03%24c%D2%A9%AF%9F%24%F22%F9%C5%94%EDd%90%82%B9%5D%A7%20%60%0C%9E%DD3%D7%2BM%9Du%EAF%8B%E5Qn%FA%5BV%B4%ED%7D%F5%FF%00%3DV%F6%A5_%9E1%E5%90%D2%1C%BB(%2C%17%8Cu%04%60%F3%8C%FA%7B%0E%1B%2F%98%262%B3%AA%95Q%84%CE%E5%07%91%9E%99%C9%C9%03%18%CE%3A%F3D%C9%13%DC%E2m%C0%90%A1X%26%01%19%FB%A5%BB%E4%F6%3Cr%3B%D4%0A%9Bd%F3%CA%B4%40J%EC2%0E%09%2B%C1%DA%07%3F%A1%CF%1C%9E%A9%93%5En2i%7F7%7D%AD%A5%DD%BF%F0%2B%5D%5E%EF%5E%D6%96hn%03%2F%CE%F1%B6%D3%F7N9%03%8E%3E%A0%F3%EA%7D%0E*y%B2D%7C%BD%AA%F3D%C1%23%DC7%B9%DCO9%CF%1F(%CFo%C0b%A6%24%BA%B4%8C%25%90*%E4%98%81R%FC%F4%EA%08%DB%F3%7C%BE%E3%BD8D%A9%B1U6%04%8C%E2D%8F%2C%08%C08%CE%7B%0F%7C%8F%A7%26%E4%D5%F6%95%AD%2B%FC%D6%ED7%D3%A6%8FT%EFd%D7f%98%DD%CC%D6%F1%A2%B3%15p%0A%9D%8C%EA%E0%93%90%C4%E4%80F%3A%F4%F55%5E%2B%C9f%9D%BF%D0%C2%23%01%E6%E17%EE%1D%8Er20%0Fc%D3%BEj%EC08%80%24%DB%1D%D4%EEB%D9%7C%1C%7B%F3%C1%CE%3D%B1Y%B1%B0i%1E8%B6%A3%95%C2%CB%23%96%DEH%C0%3B%F3%F7%BA%F0%01%E8%C0%1EM%0C%E6%C5%FBjN%95%DD%93%E9%DE%CBn%B6%EB%B3WN%DA%B2%F3I%25%DA%A3%DB%5D%08%A3rv%B6%C0%D9%C7%B1%C1%07%AF%AF%DD%EDLB%C6V%BB%25%DA6P%AE%A8%AD%9D%C1%F00%3A%F1%CEx%19%F4%E7%14%D8%E5E%B6%9F%CD%FD%EB%96Ve%0F%BB9%C0_%BA%07%07%03%8C%1E%3E%B8%A7%EE%96%24%91%9C%C3%14%9B%15%DEO%979%CF%DD%23%3C%8E%08%04%91%D7%EAh5%F6%8A%A3U%24%DBvo%AE%8D%5D-%1B%B4v%92%B5%F5%D5J%5E%EE%B2%3CP%A4%ABs'%C8%E0%03%BANB%0C%9C%8C%E7%FD%A2%3A%E3%A7%A5!%96q%F7%A2%25%9D%89H%F7%80T%00z%91%DB%20w%FE%2C%7Dd%2C%7C%9793%AE%1422%F2%07%19%C8%C7%A1%CE1%9F%CCU4v%8E%E5%93z%89%97%18G%95%D8%1C%9E%E7'%B7%A8%EE%A7%BE)%B3z%F3T%A4%94%3D%D4%FB%5B%5E%F7%D1%A6%DAN%CA%EB%CD%3B%2BMp1%C4bh%9C%ABI%98%E3%DCA%E0%E3%3D9%23%90%3A%9E%FC%F2%F3q%B3%E4P%8D%3B%91%9D%9C%8EN%D2N9%E3%1C%93%8E%9D%BBV%F2%14%A9%F3!%11%BC%E7%CBWE%20%829R%06x%18%03%8E0G%3E%C3K%B4%BD%B4%F0%AA%C7%B4%C6%1A3%922N%40%CFN0B%8C%9E%9C%1E%CA%E7%3A%C4N%12%94%DF%BB%7D%16%FA%3E%97%D2%C9%B5%AD%F6%BB%B6%B6d%CD8%12%0F9%FE%60J%06U%20)%C1%E8%08%3F1%FCx%FF%00%7B%05%90%DE%C92%09%B7%AA%06F%0A%AC%3E%5D%D8%C89%C7%60%1B%3C%F6%ECx%A9e0%B2lc%14J2%AF%93%81%B4q%8E%A0%F4n%3A%81%9F%A5%3A%11%22%A2%15UE*B%C2%13h%CEr%09%3D%86%3D%87_%5E(%D4%D9*%CE%AD%94%FD%DD%F4%BD%FAZ%FA%A7%A7%9E%AFUgm%23_%3EL%CD%E7%5B%AC~_%FA%D49%C3%00G%B0%DA%09'%9C%FF%00%84%EF5%BC%11%A4%926%C0%17%E5g%078%E3%8C%9Es%ED%D4%E2%A9%5C%24%CF%1A%CA%F32%90%BC%E2%1C%A8%C8%C9%047%1D%F1%9C%0C%0C%82je*%F0!%92%17%9E%17!%97z%86*%BBA%F7%CF~%BC%F5%EAq%92%E2%A5%88%9C%1C%A0%96%BB%DEZ%ADz%D9%3B%A5%D3%D6%DA%BBif9KL%F1%12%84%A7'i9%00%F4%C8%FC%FB%F6%1E%BCKUm%F6%B1R'.TmV%0EHu%1D%C8%E8O%3C%91%DF%F2%ABUH%F5%B0%B3%94%E1v%FF%00%E1%BA%7D%DD%FA%EF%B3%0A(%A2%99%D0S*-%E1T(%BEX%60%AD%F2%E0%15%DB%82O%5E%3E%B8%E9%D7%D6TFy%0B6%ED%8D%F3ma%91%9E1%8C%F21%8C%E3%1DMOE%2B%1C%B1%C2%A8%BB_%DD%E8%BF%E0%F6%F2!6%B1%B4%09%0B%B4%8C%AAA%C9s%92Grh%9A%20a%C2%90%81%14%95%DA%B9*GB%00%FCx%EF%D2%A6%A2%8B%1A%3C5.V%94V%D6%F9-%BC%F4)%C2%EFu%F3%98%1A%2C%A0R%5C%90G%3C%808%ED%DF%E9%E9%C4%F1%C2%81%B7l%C1Rv%06%03%E4%18%C7%CB%E8%0E%3FZ%96%8A%2CE%2C2%8AN%A3%E6%97%7B%25%AF%7D%3F%AF%C0)%8D%1A%B2%14%60J%93%92%09%3C%F3%9F%CB%DB%F0%A7%D1L%E8qR%D1%A2%16%85%F6%95I%5B%96%C9%24%F2%BC%93%C7%F2%C1%E3%1F%91U%B7U%2Cw9%2C%A1%09-%CE%018%E7%AF~%B5-%14%ACd%B0%F4%F9%94%AD%B7%F5%FA%90%98%9AT%9E9X%ECpT%60%01%80Go%FE%BF%7C%F6%C5F%D6%F3%C9%92nY%0E%EF%E0%03%A6%E2G_l%0F%E7%9A%B5E%16%26XZr%F8%AF%F7%BF%CE%F7%D2%EE%DEL%80C%22%CA%F2%2B%A6%E7%E0%E5I%E0%7D%D1%F7%BBd%FD%7D%A9%E1%19%1C%EC%DA%15%8E%E2NI%CEy%FD8%F6%C0%EB%DAJ(%B1Q%C3%D3%8F%C3%A7_%BF%7F%BF%AF%DF%B9T%C6w4EVD%91G%9A%03%E0%F3%90N%3D%3F%1E%83%8E%95%26%04m%BF%CAb2%D9%24%EE%2B%F4%1C%F0q%D0%7Bq%E95%14X%98%E1%94uO%D3E%A6%B7%ED%7F%C7%AB%D8%A2R%EE%E1B%CF%1A%AA2%95eW%C1%04%80%09%3D%7F%DA%C7%5E%A3%D3%22T%B5%3C%3C%8E%A6Q%FF%00-%11%02%92q%80O%5C%91%93%ED%CFJ%B3E%163%86%06%9A%7C%D3nO%BB%7F%E5e%FEZ%DBvG%14B5%E3%A9%E4%E38%CEI%24%0C%F1%C95%1BI%2C%2B%92%8A%22H%8B3%17'%0C1%C6q%9Cu%E7%9F%F1%B1E%166%95%1FqF%9B%E5%B6%C6t%B6%92%C9%E5%B2%90dX%F2VL%AA%EF'%EFax%CF%DE%E8x%E2%AC%F9b!%BC%23b%05*%8A%A3%24%AE%07%1Dy%E4%7Bt%FC%ECQE%8C!%80%A5M%B9Gwo%C3o%D2%FEi%15%ED%A1*%81%9D%02%9C%E5c%CE%E1%1F%18%E0%FF%00%87%1E%9E%F6(%A2%99%D3F%94iAB%3F%D7%F5%E5%A7m%02%8A(%A0%D0%FF%D9";
var mondo_image_control = null;
var mondo_image_paramBox = null;
var limitSites = true;
var allowedSites = new Array();
allowedSites = aDefaultSites.slice(0);
var allowedExtensions = new Array();
allowedExtensions = aDefaultExtensions.slice(0);
var limitUsers = false;
var allowedUsers = new Array();
var limitText = false;
var allowedText = new Array();
var masterSwitchSet = false;
var aSearchSites = new Array();
var aSearchExtensions = new Array();
var aSearchUsers = new Array();
var aSearchText = new Array();
var aSearchBadSites = new Array();
var aSearchBadUsers = new Array();
var limitMaxWidth = defaultLimitMaxWidth;
var limitMaxHeight = defaultLimitMaxHeight;
var excludeSites = false;
var notAllowedSites = new Array();
var excludeUsers = false;
var notAllowedUsers = new Array();
var flagRestricted = false;
// ***********************************************
// Mondo Meta code
// ***********************************************
function switchSidebar(onSwitch)
{
var xpath = "//div[@id='page']/div[@id='ajaxcontentarea']/div[@id='menu']/div[@class='sidebar']";
var menu_div = document.evaluate(
xpath,
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
if (menu_div)
{
var menu_node = menu_div.snapshotItem(0);
// try to affect subscription buttons following
var sibling = null;
if (menu_node)
{
sibling = menu_node.nextSibling;
}
if (sibling)
{
if (sibling.nodeName === textNodeText)
{
sibling = sibling.nextSibling;
}
if (sibling && sibling.nodeName != "DIV")
{
sibling = null;
}
}
if (menu_node)
{
menu_node.style.visibility = onSwitch ? visibleText : hiddenText;
if (sibling)
{
sibling.style.visibility = onSwitch ? visibleText : hiddenText;
}
if (onSwitch)
{
menu_node.style.height = originalMenuHeight;
if (sibling)
{
sibling.style.height = originalSiblingHeight;
}
}
else
{
originalMenuHeight = menu_node.style.height;
menu_node.style.height = "1px";
if (sibling)
{
originalSiblingHeight = sibling.style.height;
sibling.style.height = "1px";
}
}
}
}
}
function isPostFooter(node)
{
if (!node)
{
return 0;
}
var currentNode = node;
while (currentNode)
{
if (currentNode.nodeName === spanText && currentNode.getAttribute('class') === 'smallcopy')
{
return 1;
}
currentNode = currentNode.parentNode;
}
return 0;
}
function escapePattern(toEscape)
{
var needsEscaping = "\\^.*?$|([{}])";
var afterEscape = "";
var pos = 0;
while (pos < toEscape.length)
{
var c = toEscape.charAt(pos++);
if (needsEscaping.indexOf(c) >= 0)
{
afterEscape += "\\" + c;
}
else
{
afterEscape += c;
}
}
return afterEscape;
}
// get free configuration value slot
function getFreeSlot()
{
if (freeRules.length)
{
var slotID = freeRules.pop();
}
else
{
var slotID = "Rule" + (++storedRuleCount);
}
return slotID;
}
// store information to free configuration value slot
function storeInfoToSlot(infoString)
{
var gmKey = getFreeSlot();
var gmValue = usedRuleHeader + infoString;
GM_setValue(gmKey, gmValue);
return gmKey;
}
// show a slot as free
function freeSlot(ruleID)
{
GM_setValue(ruleID, freeRuleHeader);
freeRules.push(ruleID);
}
function expandLinks()
{
var xpath = "//div[@class='copy' or @class='comments' or @class='comments best']//a";
var link_anchors = document.evaluate(
xpath,
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null
);
switchSidebar(expandedLinksFlag);
for (var i = 0; i < link_anchors.snapshotLength; i++)
{
var candidate = link_anchors.snapshotItem(i);
var href_value;
if ((href_value = candidate.getAttribute('href')) && !isPostFooter(candidate))
{
if (!expandedLinksFlag)
{
var expansion = " [" + href_value + "] ";
candidate.appendChild(document.createTextNode(expansion));
}
else if (candidate.lastChild)
{
candidate.removeChild(candidate.lastChild);
}
}
}
expandedLinksFlag ^= 1;
}
function saveDeleteItem(deleteInfo)
{
var infoString = deleteHeader;
for (var i = 0; i < 9; i++)
{
infoString += String(deleteInfo[i]).length + ":" + deleteInfo[i];
}
var gmKey = storeInfoToSlot(infoString);
return gmKey;
}
function saveDelete(event)
{
event.stopPropagation();
// userDelText, userLocated, userHow, userWhole, userCase, userLinks, userRegExp, userDuration
mondo_meta_delete_control.style.display = noneText;
var elem = document.getElementById("mondo_meta_delete_text");
var userDelText = elem.value;
elem = document.getElementById("mondo_meta_delete_located");
var userLocated = elem.value;
elem = document.getElementById("mondo_meta_delete_how");
var userHow = elem.value;
var checkNode = document.getElementById("mondo_meta_delete_wholeword");
var userWhole = checkNode.checked;
checkNode = document.getElementById("mondo_meta_delete_matchcase");
var userCase = checkNode.checked;
checkNode = document.getElementById("mondo_meta_delete_matchlinks");
var userLinks = checkNode.checked;
checkNode = document.getElementById("mondo_meta_delete_regexp");
var userRegExp = checkNode.checked;
elem = document.getElementById("mondo_meta_delete_duration");
var userDuration = elem.value;
var rightNow = new Date();
aDeleteInfo.push([
userDelText,
userLocated,
userHow,
userWhole,
userCase,
userLinks,
userRegExp,
userDuration,
rightNow.getTime()]);
nodeBreaker(flagDelete, aDeleteInfo.length - 1);
var gmKey = saveDeleteItem(aDeleteInfo[aDeleteInfo.length - 1]);
aDeleteInfo[aDeleteInfo.length - 1][9] = gmKey;
boxUp = 0;
}
function cancelDelete(event)
{
event.stopPropagation();
boxUp = 0;
mondo_meta_delete_control.style.display = noneText;
}
function saveTagItem(tagInfo)
{
var infoString = tagHeader;
for (var i = 0; i < tagInfo.length; i++)
{
infoString += String(tagInfo[i]).length + ":" + tagInfo[i];
}
var gmKey = storeInfoToSlot(infoString);
return gmKey;
}
function saveTag(event)
{
event.stopPropagation();
// userTagText, userLocated, userTagTags, userWhole, userCase, userRegExp,
mondo_meta_tag_control.style.display = noneText;
var elem = document.getElementById("mondo_meta_tag_text");
var userTagText = elem.value;
elem = document.getElementById("mondo_meta_tag_located");
var userLocated = elem.value;
elem = document.getElementById("mondo_meta_tag_tags");
var userTagTags = elem.value;
var checkNode = document.getElementById("mondo_meta_tag_wholeword");
var userWhole = checkNode.checked;
checkNode = document.getElementById("mondo_meta_tag_matchcase");
var userCase = checkNode.checked;
checkNode = document.getElementById("mondo_meta_tag_regexp");
var userRegExp = checkNode.checked;
var rightNow = new Date();
aTagInfo.push([
userTagText,
userLocated,
userTagTags,
userWhole,
userCase,
userRegExp,
rightNow.getTime()]);
nodeBreaker(flagTag, aTagInfo.length - 1);
var gmKey = saveTagItem(aTagInfo[aTagInfo.length - 1]);
aTagInfo[aTagInfo.length - 1][aTagInfo[aTagInfo.length - 1].length] = gmKey;
boxUp = 0;
}
function cancelTag(event)
{
event.stopPropagation();
boxUp = 0;
mondo_meta_tag_control.style.display = noneText;
}
function saveStyleItem(styleInfo)
{
var infoString = styleHeader;
for (var i = 0; i < styleInfo.length; i++)
{
infoString += String(styleInfo[i]).length + ":" + styleInfo[i];
}
var gmKey = storeInfoToSlot(infoString);
return gmKey;
}
function saveStyle(event)
{
event.stopPropagation();
// userStyleText, userLocated, userStyleStyles, userWhole, userCase, userRegExp,
mondo_meta_style_control.style.display = noneText;
var elem = document.getElementById("mondo_meta_style_text");
var userStyleText = elem.value;
elem = document.getElementById("mondo_meta_style_located");
var userLocated = elem.value;
elem = document.getElementById("mondo_meta_style_styles");
var userStyleStyles = elem.value;
var checkNode = document.getElementById("mondo_meta_style_wholeword");
var userWhole = checkNode.checked;
checkNode = document.getElementById("mondo_meta_style_matchcase");
var userCase = checkNode.checked;
checkNode = document.getElementById("mondo_meta_style_regexp");
var userRegExp = checkNode.checked;
var rightNow = new Date();
aStyleInfo.push([
userStyleText,
userLocated,
userStyleStyles,
userWhole,
userCase,
userRegExp,
false,
rightNow.getTime()]);
nodeBreaker(flagStyle, aStyleInfo.length - 1);
var gmKey = saveStyleItem(aStyleInfo[aStyleInfo.length - 1]);
aStyleInfo[aStyleInfo.length - 1][aStyleInfo[aStyleInfo.length - 1].length] = gmKey;
boxUp = 0;
}
function cancelStyle(event)
{
event.stopPropagation();
boxUp = 0;
mondo_meta_style_control.style.display = noneText;
}
function saveHighlightItem(highlightInfo)
{
var infoString = highlightHeader;
for (var i = 0; i < 11; i++)
{
infoString += String(highlightInfo[i]).length + ":" + highlightInfo[i];
}
var gmKey = storeInfoToSlot(infoString);
return gmKey;
}
function d2h(decNum)
{
var hexDigits="0123456789ABCDEF";
var hexNum = hexDigits.substr(decNum & 15, 1);
decNum >>= 4;
hexNum = hexDigits.substr(decNum & 15, 1) + hexNum;
return hexNum;
}
function processRGBvalue(rgbString)
{
var result;
if (result = rgbString.match(/[ ;.,-]*(\d{1,3})[ ;.,-]+(\d{1,3})[ ;.,-]+(\d{1,3})/))
{
// 3 sets of digits, change to #xxxxxx hexadecimal
var ret = "#";
ret += d2h(result[1]);
ret += d2h(result[2]);
ret += d2h(result[3]);
return ret;
}
else if (result = rgbString.match(/\s*(#([0-9a-fA-F]{6}))/))
{
// already #xxxxxx hexadecimal, use it
return result[1];
}
return "";
}
function deleteTransform(
candidate,
doAllFlag,
doValue,
spanFooterStore,
boldFooterStore,
anchorStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore)
{
if (deactivateDeleteFlag)
{
return;
}
if (candidate.getAttribute(mmDeleteAttribText))
{
// entire message already processed for deleting
return;
}
if (doAllFlag)
{
var start = 0;
var end = aDeleteInfo.length;
}
else
{
var start = doValue;
var end = start + 1;
}
// peek at the delete conditions to see if we need to check all three types of targets
// set up only search targets that are needed
var searchTargetAll = "";
var searchTargetContent = "";
var searchTargetFooter = "";
var useAll, useContent, useFooter;
for (var loop = start; loop < end; loop++)
{
var requestContent = (aDeleteInfo[loop][1].indexOf(contentText) >= 0 ? true: false);
var requestFooter = (aDeleteInfo[loop][1].indexOf(footerText) >= 0 ? true: false);
if (requestContent && requestFooter)
{
useAll = true;
}
else if (requestContent)
{
useContent = true;
}
else if (requestFooter)
{
useFooter = true;
}
}
var textValStore = new Array();
if (useAll)
{
// no destructive popping of array
for (var aLoop = 0; aLoop < textAllNodeStore.length; aLoop++)
{
var aNode = textAllNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetAll = textValStore.join('');
textValStore.length = 0;
}
if (useContent)
{
for (var aLoop = 0; aLoop < textContentNodeStore.length; aLoop++)
{
var aNode = textContentNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetContent = textValStore.join('');
textValStore.length = 0;
}
if (useFooter)
{
for (var aLoop = 0; aLoop < textFooterNodeStore.length; aLoop++)
{
var aNode = textFooterNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetFooter = textValStore.join('');
}
var hrefValueStore = new Array();
for (var aLoop = 0; aLoop < anchorStore.length; aLoop++)
{
var aNode = anchorStore[aLoop];
hrefValueStore.push(aNode.getAttribute('href'));
}
var hrefText = hrefValueStore.join(" ");
for (var loop = start; loop < end; loop++)
{
// set test conditions
// userHiText, userLocated, userArea, userFg, userBg, userFrgb, userBrgb,
// userWhole, userCase, userRegExp
if (!aDeleteInfo[loop][0])
{
continue;
}
if (aDeleteInfo[loop][6] === false)
{
requestText = escapePattern(aDeleteInfo[loop][0]);
if (aDeleteInfo[loop][3] === true)
{
// wrap pattern in \b for whole word
requestText = "\\b" + requestText + "\\b";
}
}
else
{
// direct RegExp specified
requestText = aDeleteInfo[loop][0];
}
if (aDeleteInfo[loop][4] === false)
{
var requestPattern = new RegExp(requestText, "i"); // ignore case
}
else
{
var requestPattern = new RegExp(requestText);
}
// restrict searches for this rule to appropriate content/footer location
var restrictSearchTargetAll = "";
var restrictSearchTargetContent = "";
var restrictSearchTargetFooter = "";
if (aDeleteInfo[loop][1] === contentText)
{
restrictSearchTargetContent = searchTargetContent;
}
else if (aDeleteInfo[loop][1] === footerText)
{
restrictSearchTargetFooter = searchTargetFooter;
}
else
{
restrictSearchTargetAll = searchTargetAll;
}
var requestLinks = aDeleteInfo[loop][5];
if (requestLinks)
{
if (restrictSearchTargetAll.length)
{
restrictSearchTargetAll = searchTargetAll + " " + hrefText;
}
if (restrictSearchTargetContent.length)
{
restrictSearchTargetContent = searchTargetContent + " " + hrefText;
}
}
// search as appropriate
if ((restrictSearchTargetAll.length && requestPattern.test(restrictSearchTargetAll)) ||
(restrictSearchTargetContent.length && requestPattern.test(restrictSearchTargetContent)) ||
(restrictSearchTargetFooter.length && requestPattern.test(restrictSearchTargetFooter)))
{
// delete filter this post
var requestHow = aDeleteInfo[loop][2];
candidate.setAttribute(mmDeleteAttribText, "on");
switch (requestHow)
{
case invisibleText:
candidate.style.visibility = hiddenText;
break;
case fg_bgText:
var backgroundColor = null;
if (candidate.style)
{
backgroundColor = document.defaultView.getComputedStyle(candidate, null).getPropertyValue("background-color");
}
var aNode = candidate;
while (aNode && (!backgroundColor || backgroundColor === "transparent"))
{
aNode = aNode.parentNode;
if (aNode && aNode.style)
{
backgroundColor = document.defaultView.getComputedStyle(aNode, null).getPropertyValue("background-color");
}
}
if (!backgroundColor || backgroundColor === "transparent")
{
// hard-code and hope
var newColor = "#006699";
}
else
{
var newColor = backgroundColor;
}
candidate.style.color = newColor;
// no destructive popping of anchorStore array
for (var aLoop = 0; aLoop < anchorStore.length; aLoop++)
{
var aNode = anchorStore[aLoop];
aNode.style.color = newColor;
}
for (var aLoop = 0; aLoop < spanFooterStore.length; aLoop++)
{
var aNode = spanFooterStore[aLoop];
aNode.style.color = newColor;
}
for (var aLoop = 0; aLoop < boldFooterStore.length; aLoop++)
{
var aNode = boldFooterStore[aLoop];
aNode.style.color = newColor;
}
break;
default: // remove
candidate.style.display = noneText;
var followNode = candidate.nextSibling;
// remove following BR if present
while (followNode)
{
if (followNode.nodeName === "BR")
{
var removeNode = followNode;
followNode = followNode.nextSibling;
var parentNode = removeNode.parentNode;
parentNode.removeChild(removeNode);
}
else if (followNode.nodeName != textNodeText)
{
break;
}
else
{
followNode = followNode.nextSibling;
}
}
break;
}
}
}
}
function tagTransform(
candidate,
doAllFlag,
doValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore)
{
if (deactivateTagFlag)
{
return;
}
if (candidate.getAttribute(mmDeleteAttribText))
{
return;
}
if (doAllFlag)
{
var start = 0;
var end = aTagInfo.length;
}
else
{
var start = doValue;
var end = start + 1;
}
var tInfo = {
tagText : 0,
locatedIn : 1,
tagTags : 2,
wholeWord : 3,
caseSensitive : 4,
useRegExp : 5
};
var searchTargetAll = "";
var searchTargetContent = "";
var searchTargetFooter = "";
var useAll, useContent, useFooter;
for (var loop = start; loop < end; loop++)
{
var requestLocContent = (aTagInfo[loop][tInfo.locatedIn].indexOf(contentText) >= 0 ? true: false);
var requestLocFooter = (aTagInfo[loop][tInfo.locatedIn].indexOf(footerText) >= 0 ? true: false);
if (requestLocContent && requestLocFooter)
{
useAll = true;
}
else if (requestLocContent)
{
useContent = true;
}
else if (requestLocFooter)
{
useFooter = true;
}
}
var textValStore = new Array();
if (useAll)
{
for (var aLoop = 0; aLoop < textAllNodeStore.length; aLoop++)
{
var aNode = textAllNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetAll = textValStore.join('');
textValStore.length = 0;
}
if (useContent)
{
for (var aLoop = 0; aLoop < textContentNodeStore.length; aLoop++)
{
var aNode = textContentNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetContent = textValStore.join('');
textValStore.length = 0;
}
if (useFooter)
{
for (var aLoop = 0; aLoop < textFooterNodeStore.length; aLoop++)
{
var aNode = textFooterNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetFooter = textValStore.join('');
}
for (var loop = start; loop < end; loop++)
{
if (!aTagInfo[loop][tInfo.tagText])
{
continue;
}
var restrictSearchTargetAll = "";
var restrictSearchTargetContent = "";
var restrictSearchTargetFooter = "";
if (aTagInfo[loop][tInfo.locatedIn] === contentText)
{
restrictSearchTargetContent = searchTargetContent;
}
else if (aTagInfo[loop][tInfo.locatedIn] === footerText)
{
restrictSearchTargetFooter = searchTargetFooter;
}
else
{
restrictSearchTargetAll = searchTargetAll;
}
if (aTagInfo[loop][tInfo.useRegExp] == false)
{
var requestText = escapePattern(aTagInfo[loop][0]);
if (aTagInfo[loop][tInfo.wholeWord] == true)
{
requestText = "\\b" + requestText + "\\b";
}
}
else
{
var requestText = aTagInfo[loop][0];
}
if (aTagInfo[loop][tInfo.caseSensitive] == false)
{
var requestPattern = new RegExp(requestText, "i");
}
else
{
var requestPattern = new RegExp(requestText);
}
if ((restrictSearchTargetAll.length && requestPattern.test(restrictSearchTargetAll)) ||
(restrictSearchTargetContent.length && requestPattern.test(restrictSearchTargetContent)) ||
(restrictSearchTargetFooter.length && requestPattern.test(restrictSearchTargetFooter)))
{
// tag this post
if (textFooterNodeStore.length)
{
var leadingNode = textFooterNodeStore[0];
// look for 'posted by'
var testNode = spanFooterStore[0];
while (testNode)
{
var childNode = testNode.firstChild;
var bFound = false;
while (childNode)
{
if (childNode.nodeName === textNodeText && childNode.nodeValue.search('posted by') >= 0)
{
leadingNode = childNode;
bFound = true;
break;
}
childNode = childNode.nextSibling;
}
if (bFound)
{
break;
}
testNode = testNode.nextSibling;
}
var newSpanNode = document.createElement(spanText);
newSpanNode.className = mmTagClassText;
var backgroundColor = document.defaultView.getComputedStyle(document.body, null).getPropertyValue("background-color");
if (!backgroundColor || backgroundColor === "transparent")
{
var newColor = "#000000";
}
else
{
var newColor = backgroundColor;
}
var foregroundColor = document.defaultView.getComputedStyle(document.body, null).getPropertyValue("color");
if (!foregroundColor || foregroundColor === "transparent")
{
var newBackColor = "#FFFFFF";
}
else
{
var newBackColor = foregroundColor;
}
newSpanNode.style.backgroundColor = newBackColor;
newSpanNode.style.color = newColor;
var tNode = document.createTextNode("\u00a0"+aTagInfo[loop][tInfo.tagTags]+"\u00a0");
newSpanNode.appendChild(tNode);
leadingNode.parentNode.insertBefore(newSpanNode,leadingNode);
tNode = document.createTextNode("\u00a0");
var spacerSpanNode = document.createElement(spanText);
spacerSpanNode.style.backgroundColor = newColor;
spacerSpanNode.style.color = newBackColor;
spacerSpanNode.appendChild(tNode);
newSpanNode.parentNode.insertBefore(spacerSpanNode,newSpanNode.nextSibling);
}
}
}
}
function highlightTransform(
candidate,
doAllFlag,
doValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore)
{
if (deactivateHighlightFlag)
{
return;
}
if (candidate.getAttribute(mmDeleteAttribText))
{
// entire message already processed for deleting
return;
}
if (candidate.getAttribute(mmHighlightAttribText))
{
// entire message already processed for highlighting
return;
}
if (doAllFlag)
{
var start = 0;
var end = aHighlightInfo.length;
}
else
{
var start = doValue;
var end = start + 1;
}
// peek at the highlight conditions to see if we need to check all three types of targets
// set up only search targets that are needed
var searchTargetAll = "";
var searchTargetContent = "";
var searchTargetFooter = "";
var useAll, useContent, useFooter;
for (var loop = start; loop < end; loop++)
{
var requestLocContent = (aHighlightInfo[loop][1].indexOf(contentText) >= 0 ? true: false);
var requestLocFooter = (aHighlightInfo[loop][1].indexOf(footerText) >= 0 ? true: false);
if (requestLocContent && requestLocFooter)
{
useAll = true;
}
else if (requestLocContent)
{
useContent = true;
}
else if (requestLocFooter)
{
useFooter = true;
}
}
var textValStore = new Array();
if (useAll)
{
// no destructive popping of array
for (var aLoop = 0; aLoop < textAllNodeStore.length; aLoop++)
{
var aNode = textAllNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetAll = textValStore.join('');
textValStore.length = 0;
}
if (useContent)
{
for (var aLoop = 0; aLoop < textContentNodeStore.length; aLoop++)
{
var aNode = textContentNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetContent = textValStore.join('');
textValStore.length = 0;
}
if (useFooter)
{
for (var aLoop = 0; aLoop < textFooterNodeStore.length; aLoop++)
{
var aNode = textFooterNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetFooter = textValStore.join('');
}
for (var loop = start; loop < end; loop++)
{
// set test conditions
if (!aHighlightInfo[loop][0])
{
continue;
}
// restrict searches for this rule to appropriate content/footer location
var restrictSearchTargetAll = "";
var restrictSearchTargetContent = "";
var restrictSearchTargetFooter = "";
if (aHighlightInfo[loop][1] === contentText)
{
restrictSearchTargetContent = searchTargetContent;
}
else if (aHighlightInfo[loop][1] === footerText)
{
restrictSearchTargetFooter = searchTargetFooter;
}
else
{
restrictSearchTargetAll = searchTargetAll;
}
if (aHighlightInfo[loop][9] == false)
{
var requestText = escapePattern(aHighlightInfo[loop][0]);
if (aHighlightInfo[loop][7] == true)
{
// wrap pattern in \b for whole word
requestText = "\\b" + requestText + "\\b";
}
}
else
{
// direct RegExp specified
var requestText = aHighlightInfo[loop][0];
}
if (aHighlightInfo[loop][8] == false)
{
var requestPattern = new RegExp(requestText, "i"); // ignore case
}
else
{
var requestPattern = new RegExp(requestText);
}
// search as appropriate
if ((restrictSearchTargetAll.length && requestPattern.test(restrictSearchTargetAll)) ||
(restrictSearchTargetContent.length && requestPattern.test(restrictSearchTargetContent)) ||
(restrictSearchTargetFooter.length && requestPattern.test(restrictSearchTargetFooter)))
{
// highlight this post
var requestHiEntire = (aHighlightInfo[loop][2].indexOf("Entire") >= 0 ? true: false);
var requestHiFooter = (aHighlightInfo[loop][2].indexOf(footerText) >= 0 ? true: false);
var requestForeground = null;
if (aHighlightInfo[loop][3].indexOf(customText) >= 0)
{
// get rgb color, if valid
var result = processRGBvalue(aHighlightInfo[loop][5]);
if (result.length)
{
requestForeground = result;
}
}
else if (aHighlightInfo[loop][3].indexOf(unchangedText) < 0)
{
requestForeground = aHighlightInfo[loop][3];
}
var requestBackground = null;
if (aHighlightInfo[loop][4].indexOf(customText) >= 0)
{
var result = processRGBvalue(aHighlightInfo[loop][6]);
if (result.length)
{
requestBackground = result;
}
}
else if (aHighlightInfo[loop][4].indexOf(unchangedText) < 0)
{
requestBackground = aHighlightInfo[loop][4];
}
if (requestHiEntire)
{
candidate.setAttribute(mmHighlightAttribText, "on");
if (requestForeground)
{
candidate.style.color = requestForeground;
}
if (requestBackground)
{
candidate.style.backgroundColor = requestBackground;
}
}
else if (requestHiFooter && spanFooterStore)
{
for (var aLoop = 0; aLoop < spanFooterStore.length; aLoop++)
{
var aNode = spanFooterStore[aLoop];
if (aNode.getAttribute(mmHighlightAttribText))
{
// message already processed for highlighting
continue;
}
aNode.setAttribute(mmHighlightAttribText, "on");
if (requestForeground)
{
aNode.style.color = requestForeground;
}
if (requestBackground)
{
aNode.style.backgroundColor = requestBackground;
}
}
}
}
}
}
function styleTransform(
candidate,
doAllFlag,
doValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore)
{
if (deactivateStyleFlag)
{
return;
}
if (candidate.getAttribute(mmDeleteAttribText))
{
return;
}
if (doAllFlag)
{
var start = 0;
var end = aStyleInfo.length;
}
else
{
var start = doValue;
var end = start + 1;
}
var sInfo = {
styleText : 0,
locatedIn : 1,
styleStyles : 2,
wholeWord : 3,
caseSensitive : 4,
useRegExp : 5,
styleUsed : 6,
ruleDate : 7,
ruleID : 8
};
var searchTargetAll = "";
var searchTargetContent = "";
var searchTargetFooter = "";
var useAll, useContent, useFooter;
for (var loop = start; loop < end; loop++)
{
var requestLocContent = (aStyleInfo[loop][sInfo.locatedIn].indexOf(contentText) >= 0 ? true: false);
var requestLocFooter = (aStyleInfo[loop][sInfo.locatedIn].indexOf(footerText) >= 0 ? true: false);
if (requestLocContent && requestLocFooter)
{
useAll = true;
}
else if (requestLocContent)
{
useContent = true;
}
else if (requestLocFooter)
{
useFooter = true;
}
}
var textValStore = new Array();
if (useAll)
{
for (var aLoop = 0; aLoop < textAllNodeStore.length; aLoop++)
{
var aNode = textAllNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetAll = textValStore.join('');
textValStore.length = 0;
}
if (useContent)
{
for (var aLoop = 0; aLoop < textContentNodeStore.length; aLoop++)
{
var aNode = textContentNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetContent = textValStore.join('');
textValStore.length = 0;
}
if (useFooter)
{
for (var aLoop = 0; aLoop < textFooterNodeStore.length; aLoop++)
{
var aNode = textFooterNodeStore[aLoop];
if (aNode.nodeValue)
{
textValStore.push(aNode.nodeValue);
}
}
searchTargetFooter = textValStore.join('');
}
for (var loop = start; loop < end; loop++)
{
if (!aStyleInfo[loop][sInfo.styleText])
{
continue;
}
var restrictSearchTargetAll = "";
var restrictSearchTargetContent = "";
var restrictSearchTargetFooter = "";
if (aStyleInfo[loop][sInfo.locatedIn] === contentText)
{
restrictSearchTargetContent = searchTargetContent;
}
else if (aStyleInfo[loop][sInfo.locatedIn] === footerText)
{
restrictSearchTargetFooter = searchTargetFooter;
}
else
{
restrictSearchTargetAll = searchTargetAll;
}
if (aStyleInfo[loop][sInfo.useRegExp] == false)
{
var requestText = escapePattern(aStyleInfo[loop][0]);
if (aStyleInfo[loop][sInfo.wholeWord] == true)
{
requestText = "\\b" + requestText + "\\b";
}
}
else
{
var requestText = aStyleInfo[loop][0];
}
if (aStyleInfo[loop][sInfo.caseSensitive] == false)
{
var requestPattern = new RegExp(requestText, "i");
}
else
{
var requestPattern = new RegExp(requestText);
}
if ((restrictSearchTargetAll.length && requestPattern.test(restrictSearchTargetAll)) ||
(restrictSearchTargetContent.length && requestPattern.test(restrictSearchTargetContent)) ||
(restrictSearchTargetFooter.length && requestPattern.test(restrictSearchTargetFooter)))
{
// style this post
if (!aStyleInfo[loop][sInfo.styleUsed])
{
// first time style is used, add it
var userStyle = document.createElement("style");
userStyle.setAttribute('type', 'text/css');
var modStyle = aStyleInfo[loop][sInfo.styleStyles];
modStyle = modStyle.replace(/\b(mmStyledPost)\b/,"$1"+aStyleInfo[loop][sInfo.ruleID]);
userStyle.innerHTML = modStyle;
document.getElementsByTagName('head')[0].appendChild(userStyle);
aStyleInfo[loop][sInfo.styleUsed] = true;
}
candidate.setAttribute(mmStyledPostAttribText + aStyleInfo[loop][sInfo.ruleID], "on");
}
}
}
function nodeBreaker(flags, singleValue)
{
var xpath = "//div[@class='copy' or @class='comments' or @class='comments best']";
var divNodes = document.evaluate(
xpath,
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
var countTo = divNodes.snapshotLength;
var spanFooterStore = new Array();
var boldFooterStore = new Array();
var anchorStore = new Array();
var textAllNodeStore = new Array();
var textFooterNodeStore = new Array();
var textContentNodeStore = new Array();
var parentNodeStore = new Array();
var footerStatusStore = new Array();
for (var i = 0; i < countTo; i++)
{
var candidate = divNodes.snapshotItem(i);
if (!candidate)
{
break;
}
spanFooterStore.length = 0;
boldFooterStore.length = 0;
anchorStore.length = 0;
textAllNodeStore.length = 0;
textFooterNodeStore.length = 0;
textContentNodeStore.length = 0;
parentNodeStore.length = 0;
footerStatusStore.length = 0;
footerStatus = 0;
currentNode = candidate;
var looking = true;
while (looking)
{
// track multiple SPAN's since "more inside" is also smallcopy (and therefore a footer for now)
if (currentNode.nodeName === spanText &&
currentNode.getAttribute('class') === "smallcopy")
{
footerStatus = true;
spanFooterStore.push(currentNode);
// track footer bolds for FG = BG delete filter, since they need explicit color setting
var cNode = currentNode.firstChild;
while (cNode)
{
if (cNode.nodeName === "B")
{
boldFooterStore.push(cNode);
}
cNode = cNode.nextSibling;
}
}
else if (currentNode.nodeName === "A")
{
anchorStore.push(currentNode);
}
else if (currentNode.nodeName === textNodeText && currentNode.nodeValue)
{
textAllNodeStore.push(currentNode);
if (footerStatus)
{
textFooterNodeStore.push(currentNode);
}
else
{
textContentNodeStore.push(currentNode);
}
}
if (currentNode.childNodes.length)
{
// child exists, save state info for this node level
parentNodeStore.push(currentNode);
footerStatusStore.push(footerStatus);
currentNode = currentNode.firstChild;
}
else // next sibling
{
while (1)
{
if (currentNode == candidate || !currentNode)
{
// done
looking = false;
break;
}
if (currentNode = currentNode.nextSibling)
{
// valid node assignment
break;
}
currentNode = parentNodeStore.pop();
footerStatus = footerStatusStore.pop();
}
}
}
if (flags & flagMultiple)
{
deleteTransform(
candidate,
true,
0,
spanFooterStore,
boldFooterStore,
anchorStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
tagTransform(
candidate,
true,
0,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
highlightTransform(
candidate,
true,
0,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
styleTransform(
candidate,
true,
0,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
}
else if (flags & flagHighlight)
{
highlightTransform(
candidate,
false,
singleValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
}
else if (flags & flagDelete)
{
deleteTransform(
candidate,
false,
singleValue,
spanFooterStore,
boldFooterStore,
anchorStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
}
else if (flags & flagTag)
{
tagTransform(
candidate,
false,
singleValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
}
else if (flags && flagStyle)
{
styleTransform(
candidate,
false,
singleValue,
spanFooterStore,
textAllNodeStore,
textContentNodeStore,
textFooterNodeStore);
}
}
}
function saveHighlight(event)
{
event.stopPropagation();
mondo_meta_highlight_control.style.display = noneText;
var elem = document.getElementById("mondo_meta_highlight_text");
var userHiText = elem.value;
elem = document.getElementById("mondo_meta_highlight_located");
var userLocated = elem.value;
elem = document.getElementById("mondo_meta_highlight_area");
var userArea = elem.value;
elem = document.getElementById("mondo_meta_highlight_fgcolor");
var userfgColor = elem.value;
elem = document.getElementById("mondo_meta_highlight_bgcolor");
var userbgColor = elem.value;
elem = document.getElementById("mondo_meta_highlight_fgRGB");
var userfgRGB = elem.value;
elem = document.getElementById("mondo_meta_highlight_bgRGB");
var userbgRGB = elem.value;
var checkNode = document.getElementById("mondo_meta_highlight_wholeword");
var userWhole = checkNode.checked;
checkNode = document.getElementById("mondo_meta_highlight_matchcase");
var userCase = checkNode.checked;
checkNode = document.getElementById("mondo_meta_highlight_regexp");
var userRegExp = checkNode.checked;
var rightNow = new Date();
aHighlightInfo.push([
userHiText,
userLocated, userArea,
userfgColor, userbgColor,
userfgRGB, userbgRGB,
userWhole, userCase, userRegExp,
rightNow.getTime()]);
nodeBreaker(flagHighlight, aHighlightInfo.length - 1);
var gmKey = saveHighlightItem(aHighlightInfo[aHighlightInfo.length - 1]);
aHighlightInfo[aHighlightInfo.length - 1][11] = gmKey;
boxUp = 0;
}
function cancelHighlight(event)
{
event.stopPropagation();
boxUp = 0;
mondo_meta_highlight_control.style.display = noneText;
}
function changeFgHighlight(event)
{
event.stopPropagation();
var sNode = document.getElementById( "mondo_meta_highlight_fgcolor");
var iNode = document.getElementById( "mondo_meta_highlight_fgRGB");
if (sNode.value === customText)
{
iNode.disabled = false;
iNode.style.backgroundColor = whiteText;
iNode.focus();
}
else
{
iNode.disabled = true;
iNode.style.backgroundColor = "gray";
}
}
function changeBgHighlight(event)
{
event.stopPropagation();
var sNode = document.getElementById( "mondo_meta_highlight_bgcolor");
var iNode = document.getElementById( "mondo_meta_highlight_bgRGB");
if (sNode.value === customText)
{
iNode.disabled = false;
iNode.style.backgroundColor = whiteText;
iNode.focus();
}
else
{
iNode.disabled = true;
iNode.style.backgroundColor = "gray";
}
}
// whichType == 1 for delete, 2 for tag, 3 for highlight, 4 for style
function showRuleInfo(ruleNumber, whichType)
{
var rNode = document.getElementById( "mondo_meta_rulehead");
var tNode = rNode.firstChild;
if (!ruleNumber)
{
tNode.nodeValue = "Saved Rule 0 of 0";
var aNode = document.getElementById( "mondo_meta_ruletext");
aNode.style.visibility = hiddenText;
aNode = document.getElementById( "mondo_meta_mantext");
aNode.style.visibility = hiddenText;
}
else
{
switch (whichType)
{
case 1:
var trueRuleNumber = ruleNumber;
break;
case 2:
var trueRuleNumber = aDeleteInfo.length + ruleNumber;
break;
case 3:
var trueRuleNumber = aTagInfo.length + aDeleteInfo.length + ruleNumber;
break;
case 4:
var trueRuleNumber = aHighlightInfo.length + aTagInfo.length + aDeleteInfo.length + ruleNumber;
break;
}
var ruleHead = "Saved Rule " + trueRuleNumber + " of " + (aDeleteInfo.length + aHighlightInfo.length + aTagInfo.length + aStyleInfo.length);
tNode.nodeValue = ruleHead;
var aNode = document.getElementById( "mondo_meta_mantext");
tNode = aNode.firstChild;
switch (whichType)
{
case 1:
tNode.nodeValue = "Delete Text:";
break;
case 2:
tNode.nodeValue = "Tag Text:";
break;
case 3:
tNode.nodeValue = "Highlight Text:";
break;
case 4:
tNode.nodeValue = "Style Text:";
break;
}
aNode.style.fontWeight = "bold";
aNode.style.visibility = visibleText;
aNode = document.getElementById( "mondo_meta_ruletext");
switch (whichType)
{
case 1:
aNode.value = aDeleteInfo[ruleNumber - 1][0];
break;
case 2:
aNode.value = aTagInfo[ruleNumber - 1][0];
break;
case 3:
aNode.value = aHighlightInfo[ruleNumber - 1][0];
break;
case 4:
aNode.value = aStyleInfo[ruleNumber - 1][0];
break;
}
aNode.style.visibility = visibleText;
}
currentRuleNumber = ruleNumber;
currentRuleType = whichType;
}
// currentRuleType == 1 for delete, 2 for tag, 3 for highlight, 4 for style
function prevManage(event)
{
event.stopPropagation();
if (!currentRuleNumber || !currentRuleType)
{
return;
}
if (currentRuleNumber > 1)
{
showRuleInfo(currentRuleNumber - 1, currentRuleType);
return;
}
if (currentRuleType == 1) // delete
{
if (aStyleInfo.length)
{
showRuleInfo(aStyleInfo.length, 4);
}
else if (aHighlightInfo.length)
{
showRuleInfo(aHighlightInfo.length, 3);
}
else if (aTagInfo.length)
{
showRuleInfo(aTagInfo.length, 2);
}
else
{
showRuleInfo(aDeleteInfo.length, 1);
}
}
else if (currentRuleType == 2) // tag
{
if (aDeleteInfo.length)
{
showRuleInfo(aDeleteInfo.length, 1);
}
else if (aStyleInfo.length)
{
showRuleInfo(aStyleInfo.length, 4);
}
else if (aHighlightInfo.length)
{
showRuleInfo(aHighlightInfo.length, 3);
}
else
{
showRuleInfo(aTagInfo.length, 2);
}
}
else if (currentRuleType == 3) // highlight
{
if (aTagInfo.length)
{
showRuleInfo(aTagInfo.length, 2);
}
else if (aDeleteInfo.length)
{
showRuleInfo(aDeleteInfo.length, 1);
}
else if (aStyleInfo.length)
{
showRuleInfo(aStyleInfo.length, 4);
}
else
{
showRuleInfo(aHighlightInfo.length, 3);
}
}
else if (currentRuleType == 4) // style
{
if (aHighlightInfo.length)
{
showRuleInfo(aHighlightInfo.length, 3);
}
else if (aTagInfo.length)
{
showRuleInfo(aTagInfo.length, 2);
}
else if (aDeleteInfo.length)
{
showRuleInfo(aDeleteInfo.length, 1);
}
else
{
showRuleInfo(aStyleInfo.length, 4);
}
}
}
// currentRuleType == 1 for delete, 2 for tag, 3 for highlight, 4 for style
function nextManage(event)
{
event.stopPropagation();
if (!currentRuleNumber || !currentRuleType)
{
return;
}
if (currentRuleType == 1) // delete
{
if (currentRuleNumber < aDeleteInfo.length)
{
showRuleInfo(currentRuleNumber + 1, 1);
}
else
{
if (aTagInfo.length)
{
showRuleInfo(1, 2);
}
else if (aHighlightInfo.length)
{
showRuleInfo(1, 3);
}
else if (aStyleInfo.length)
{
showRuleInfo(1, 4);
}
else
{
showRuleInfo(1, 1);
}
}
}
else if (currentRuleType == 2) // tag
{
if (currentRuleNumber < aTagInfo.length)
{
showRuleInfo(currentRuleNumber + 1, 2);
}
else
{
if (aHighlightInfo.length)
{
showRuleInfo(1, 3);
}
else if (aStyleInfo.length)
{
showRuleInfo(1, 4);
}
else if (aDeleteInfo.length)
{
showRuleInfo(1, 1);
}
else
{
showRuleInfo(1, 2);
}
}
}
else if (currentRuleType == 3) // highlight
{
if (currentRuleNumber < aHighlightInfo.length)
{
showRuleInfo(currentRuleNumber + 1, 3);
}
else
{
if (aStyleInfo.length)
{
showRuleInfo(1, 4);
}
else if (aDeleteInfo.length)
{
showRuleInfo(1, 1);
}
else if (aTagInfo.length)
{
showRuleInfo(1, 2);
}
else
{
showRuleInfo(1, 3);
}
}
}
else if (currentRuleType == 4) // style
{
if (currentRuleNumber < aStyleInfo.length)
{
showRuleInfo(currentRuleNumber + 1, 4);
}
else
{
if (aDeleteInfo.length)
{
showRuleInfo(1, 1);
}
else if (aTagInfo.length)
{
showRuleInfo(1, 2);
}
else if (aHighlightInfo.length)
{
showRuleInfo(1, 3);
}
else
{
showRuleInfo(1, 4);
}
}
}
}
function deleteManage(event)
{
event.stopPropagation();
if (!currentRuleNumber || !currentRuleType)
{
return;
}
if (currentRuleType == 1)
{
freeSlot(aDeleteInfo[currentRuleNumber - 1][9]); // rule ID
aDeleteInfo.splice(currentRuleNumber - 1, 1);
}
else if (currentRuleType == 2)
{
freeSlot(aTagInfo[currentRuleNumber - 1][7]);
aTagInfo.splice(currentRuleNumber - 1, 1);
}
else if (currentRuleType == 3)
{
freeSlot(aHighlightInfo[currentRuleNumber - 1][11]);
aHighlightInfo.splice(currentRuleNumber - 1, 1);
}
else if (currentRuleType == 4)
{
freeSlot(aStyleInfo[currentRuleNumber - 1][8]);
aStyleInfo.splice(currentRuleNumber - 1, 1);
}
if (currentRuleNumber > 1)
{
currentRuleNumber--;
}
if (!aDeleteInfo.length && !aTagInfo.length && !aHighlightInfo.length && !aStyleInfo.length)
{
showRuleInfo(0, 0);
return;
}
while (1)
{
if (currentRuleType == 1 && !aDeleteInfo.length)
{
currentRuleNumber = 1;
currentRuleType++;
}
else if (currentRuleType == 2 && !aTagInfo.length)
{
currentRuleNumber = 1;
currentRuleType++;
}
else if (currentRuleType == 3 && !aHighlightInfo.length)
{
currentRuleNumber = 1;
currentRuleType++;
}
else if (currentRuleType == 4 && !aStyleInfo.length)
{
currentRuleNumber = 1;
currentRuleType = 1;
}
else
{
break;
}
}
showRuleInfo(currentRuleNumber, currentRuleType);
}
function saveManageStatus()
{
var gmKey = systemStatusText;
// NB: system values are in order: delete,highlight,tag,style
var infoString = String(deactivateDeleteFlag).length + ":" + deactivateDeleteFlag;
infoString += String(deactivateHighlightFlag).length + ":" + deactivateHighlightFlag;
infoString += String(deactivateTagFlag).length + ":" + deactivateTagFlag;
infoString += String(deactivateStyleFlag).length + ":" + deactivateStyleFlag;
var gmValue = systemHeader + infoString;
GM_setValue(gmKey, gmValue);
}
function closeManage(event)
{
event.stopPropagation();
var checkNode = document.getElementById("mondo_meta_manage_deactdel");
deactivateDeleteFlag = checkNode.checked;
checkNode = document.getElementById("mondo_meta_manage_deacthi");
deactivateHighlightFlag = checkNode.checked;
checkNode = document.getElementById("mondo_meta_manage_deacttag");
deactivateTagFlag = checkNode.checked;
checkNode = document.getElementById("mondo_meta_manage_deactsty");
deactivateStyleFlag = checkNode.checked;
saveManageStatus();
boxUp = 0;
showRuleInfo(0, 0);
mondo_meta_manage_control.style.display = noneText;
}
function processManage()
{
mondo_meta_manage_control.style.display = "";
var checkNode = document.getElementById("mondo_meta_manage_deactdel");
checkNode.checked = deactivateDeleteFlag;
checkNode = document.getElementById("mondo_meta_manage_deacthi");
checkNode.checked = deactivateHighlightFlag;
checkNode = document.getElementById("mondo_meta_manage_deacttag");
checkNode.checked = deactivateTagFlag;
checkNode = document.getElementById("mondo_meta_manage_deactsty");
checkNode.checked = deactivateStyleFlag;
if (aDeleteInfo.length)
{
showRuleInfo(1, 1);
}
else if (aTagInfo.length)
{
showRuleInfo(1, 2);
}
else if (aHighlightInfo.length)
{
showRuleInfo(1, 3);
}
else if (aStyleInfo.length)
{
showRuleInfo(1, 4);
}
else
{
showRuleInfo(0, 0);
}
}
function do_a_mondo(event)
{
event.stopPropagation();
var which = event.target.selectedIndex;
var choice = event.target.options[which].value;
if (choice === expandText || choice === compactText)
{
expandLinks();
// don't count on the selection, count on the display status
if (expandedLinksFlag)
{
event.target.options[which].text = expandTextChoice[1];
event.target.options[which].value = compactText;
}
else
{
event.target.options[which].text = expandTextChoice[0];
event.target.options[which].value = expandText;
}
}
else if (choice === deleteFilterText && !boxUp)
{
boxUp = 1;
mondo_meta_delete_control.style.display = "";
var elem = document.getElementById("mondo_meta_delete_text");
elem.focus();
}
else if (choice === highlightText && !boxUp)
{
boxUp = 1;
mondo_meta_highlight_control.style.display = "";
var elem = document.getElementById("mondo_meta_highlight_text");
elem.focus();
}
else if (choice === tagText && !boxUp)
{
boxUp = 1;
mondo_meta_tag_control.style.display = "";
var elem = document.getElementById("mondo_meta_tag_text");
elem.focus();
}
else if (choice === styleText && !boxUp)
{
boxUp = 1;
mondo_meta_style_control.style.display = "";
var elem = document.getElementById("mondo_meta_style_text");
elem.focus();
}
else if (choice === manageText & !boxUp)
{
boxUp = 1;
processManage();
}
// mondo image specific
else if (choice === imagesText & !boxUp)
{
boxUp = 1;
showParamBox();
}
event.target.selectedIndex = 0;
}
function processRule(rule, ruleID)
{
if (rule.substr(0, 4).toUpperCase() != "USED")
{
freeRules.push(ruleID);
}
else
{
var bBad = false;
var pos = usedRuleHeader.length;
if (rule.substr(pos, deleteHeader.length) === deleteHeader)
{
pos += deleteHeader.length;
// DelText, Located, How, Whole, Case, Links, RegExp, Duration, Date
var storeDelText, storeLocated, storeHow;
var storeWhole, storeCase, storeLinks, storeRegExp;
var storeDuration, storeDate;
for (var j = 0; !bBad && j < 9; j++)
{
var len = parseInt(rule.substr(pos));
if (isNaN(len))
{
bBad = true;
break;
}
pos = rule.indexOf(":", pos);
if (pos == -1)
{
bBad = true;
break;
}
pos++;
var result = rule.substr(pos, len);
pos += len;
switch (j)
{
case 0:
storeDelText = result;
break;
case 1:
storeLocated = result;
break;
case 2:
storeHow = result;
break;
case 3:
storeWhole = (result === trueText ? true : false);
break;
case 4:
storeCase = (result === trueText ? true : false);
break;
case 5:
storeLinks = (result === trueText ? true : false);
break;
case 6:
storeRegExp = (result === trueText ? true : false);
break;
case 7:
storeDuration = result;
break;
case 8:
storeDate = result;
break;
}
}
if (!bBad)
{
var rightNow = new Date();
if (storeDate + parseInt(storeDuration) <= rightNow.getTime())
{
freeSlot(ruleID);
}
else
{
aDeleteInfo.push([
storeDelText,
storeLocated,
storeHow,
storeWhole,
storeCase,
storeLinks,
storeRegExp,
storeDuration,
storeDate,
ruleID]);
}
}
}
else if (rule.substr(pos, highlightHeader.length) === highlightHeader)
{
pos += highlightHeader.length;
// HiText, Located, Area,
// fgColor, userbgColor, userfgRGB, userbgRGB,
// Whole, Case, RegExp, Date
var storeHiText, storeLocated, storeArea;
var storefgColor, storebgColor, storefgRGB, storebgRGB;
var storeWhole, storeCase, storeRegExp, storeDate
for (var j = 0; !bBad && j < 11; j++)
{
var len = parseInt(rule.substr(pos));
if (isNaN(len))
{
bBad = true;
break;
}
pos = rule.indexOf(":", pos);
if (pos == -1)
{
bBad = true;
break;
}
pos++;
var result = rule.substr(pos, len);
pos += len;
switch (j)
{
case 0:
storeHiText = result;
break;
case 1:
storeLocated = result;
break;
case 2:
storeArea = result;
break;
case 3:
storefgColor = result;
break;
case 4:
storebgColor = result;
break;
case 5:
storefgRGB = result;
break;
case 6:
storebgRGB = result;
break;
case 7:
storeWhole = (result === trueText ? true : false);
break;
case 8:
storeCase = (result === trueText ? true : false);
break;
case 9:
storeRegExp = (result === trueText ? true : false);
break;
case 10:
storeDate = result;
break;
}
}
if (!bBad)
{
aHighlightInfo.push([
storeHiText,
storeLocated,
storeArea,
storefgColor,
storebgColor,
storefgRGB,
storebgRGB,
storeWhole,
storeCase,
storeRegExp,
storeDate,
ruleID]);
}
}
else if (rule.substr(pos, tagHeader.length) === tagHeader)
{
// userTagText, userLocated, userTagTags, userWhole, userCase, userRegExp,
pos += tagHeader.length;
var storeTagText, storeLocated, storeTagTags;
var storeWhole, storeCase, storeRegExp, storeDate
for (var j = 0; !bBad && j < 7; j++)
{
var len = parseInt(rule.substr(pos));
if (isNaN(len))
{
bBad = true;
break;
}
pos = rule.indexOf(":", pos);
if (pos == -1)
{
bBad = true;
break;
}
pos++;
var result = rule.substr(pos, len);
pos += len;
switch (j)
{
case 0:
storeTagText = result;
break;
case 1:
storeLocated = result;
break;
case 2:
storeTagTags = result;
break;
case 3:
storeWhole = (result === trueText ? true : false);
break;
case 4:
storeCase = (result === trueText ? true : false);
break;
case 5:
storeRegExp = (result === trueText ? true : false);
break;
case 6:
storeDate = result;
break;
}
}
if (!bBad)
{
aTagInfo.push([
storeTagText,
storeLocated,
storeTagTags,
storeWhole,
storeCase,
storeRegExp,
storeDate,
ruleID]);
}
}
else if (rule.substr(pos, styleHeader.length) === styleHeader)
{
// userStyleText, userLocated, userStyleStyles, userWhole, userCase, userRegExp,
pos += styleHeader.length;
var storeStyleText, storeLocated, storeStyleStyles;
var storeWhole, storeCase, storeRegExp, storeDate
for (var j = 0; !bBad && j < 7; j++)
{
var len = parseInt(rule.substr(pos));
if (isNaN(len))
{
bBad = true;
break;
}
pos = rule.indexOf(":", pos);
if (pos == -1)
{
bBad = true;
break;
}
pos++;
var result = rule.substr(pos, len);
pos += len;
switch (j)
{
case 0:
storeStyleText = result;
break;
case 1:
storeLocated = result;
break;
case 2:
storeStyleStyles = result;
break;
case 3:
storeWhole = (result === trueText ? true : false);
break;
case 4:
storeCase = (result === trueText ? true : false);
break;
case 5:
storeRegExp = (result === trueText ? true : false);
break;
case 6:
storeDate = result;
break;
}
}
if (!bBad)
{
aStyleInfo.push([
storeStyleText,
storeLocated,
storeStyleStyles,
storeWhole,
storeCase,
storeRegExp,
false,
storeDate,
ruleID]);
}
}
if (bBad)
{
// couldn't parse it, kill the rule
freeSlot(ruleID);
}
}
}
function processSystemStatus()
{
var settingsExist = ((statusValues = GM_getValue(systemStatusText, "x")) != "x");
if (!settingsExist)
{
return;
}
// system values are in order: delete,highlight,tag,style
if (statusValues.substr(0, systemHeader.length) === systemHeader)
{
var pos = systemHeader.length;
for (var j = 0; j < 4; j++)
{
var len = parseInt(statusValues.substr(pos));
if (isNaN(len))
{
break;
}
pos = statusValues.indexOf(":", pos);
if (pos == -1)
{
break;
}
pos++;
var result = statusValues.substr(pos, len);
pos += len;
switch (j)
{
case 0:
deactivateDeleteFlag = (result === trueText ? true : false);
break;
case 1:
deactivateHighlightFlag = (result === trueText ? true : false);
break;
case 2:
deactivateTagFlag = (result === trueText ? true : false);
break;
case 3:
deactivateStyleFlag = (result === trueText ? true : false);
break;
default:
}
}
}
}
// load existing filter/highlight info settings and process them
function loadPermanentInfo()
{
processSystemStatus();
var count = 0;
var rule;
var ruleID;
freeRules.length = aDeleteInfo.length = aHighlightInfo.length = 0;
aTagInfo.length = aStyleInfo.length = 0;
while ((rule = GM_getValue(ruleID = ("Rule"+(++count)), "x")) != "x")
{
processRule(rule, ruleID);
storedRuleCount++; // increments even on invalid rule
}
nodeBreaker(flagMultiple, 0);
}
function init()
{
mondo_meta_control = document.getElementById( "mondo_meta_control")
if (mondo_meta_control)
{
return;
}
GM_setValue("Version", mondoCaboodleVersion);
loadPermanentInfo();
mondo_meta_control = document.createElement("select");
mondo_meta_control.style.position = "fixed";
mondo_meta_control.style.bottom = "5px";
mondo_meta_control.style.left = "5px";
mondo_meta_control.style.fontSize = "12px";
mondo_meta_control.style.color = darkBlueText;
mondo_meta_control.style.backgroundColor = whiteText;
var opt_count = 0;
var optmmo = document.createElement(optionText);
optmmo.text = "Mondo Caboodle Options";
optmmo.value = defaultText;
optmmo.defaultselected = true;
optmmo.selected = true;
optmmo.style.color = darkBlueText;
optmmo.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optmmo;
var optel = document.createElement(optionText);
optel.text = expandTextChoice[0];
optel.value = expandText;
optel.style.color = darkBlueText;
optel.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optel;
/*
var optsep = document.createElement(optionText);
optsep.text = separatorText;
optsep.value = separatorText;
optsep.style.color = darkBlueText;
optsep.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optsep;
*/
var optfd = document.createElement(optionText);
optfd.text = deleteFilterText;
optfd.value = deleteFilterText;
optfd.style.color = darkBlueText;
optfd.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optfd;
var opthi = document.createElement(optionText);
opthi.text = highlightText;
opthi.value = highlightText;
opthi.style.color = darkBlueText;
opthi.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = opthi;
var optsty = document.createElement(optionText);
optsty.text = styleText;
optsty.value = styleText;
optsty.style.color = darkBlueText;
optsty.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optsty;
var opttag = document.createElement(optionText);
opttag.text = tagText;
opttag.value = tagText;
opttag.style.color = darkBlueText;
opttag.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = opttag;
/*
var optsep = document.createElement(optionText);
optsep.text = separatorText;
optsep.value = separatorText;
optsep.style.color = darkBlueText;
optsep.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optsep;
*/
var optman = document.createElement(optionText);
optman.text = manageText;
optman.value = manageText;
optman.style.color = darkBlueText;
optman.style.backgroundColor = whiteText;
mondo_meta_control.options[opt_count++] = optman;
// mondo image addition
var optimg = document.createElement(optionText);
optimg.text = imagesText;
optimg.value = imagesText;
optimg.style.color = "darkblue";
optimg.style.backgroundColor = "white";
mondo_meta_control.options[opt_count++] = optimg;
mondo_meta_control.length = opt_count;
mondo_meta_control.addEventListener('change', do_a_mondo, false);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_control);
var addHeader =
'td.mondo_meta_basicstyle INPUT,td.mondo_meta_basicstyle SELECT,td.mondo_meta_basicstyle DIV,td.mondo_meta_basicstyle SPAN' +
'{ font: 12px Verdana, Arial, Helvetica, sans-serif; }' +
'td.mondo_meta_basicstyle INPUT,td.mondo_meta_basicstyle SELECT' +
'{ background-color: white }' +
'td.mondo_meta_basicstyle SPAN { color: darkblue }' +
'.mondo_meta_title { font-weight: bold !important; font-size: 18px !important; padding-bottom: 8px; margin-left: 140px; }' +
'.mondo_meta_minititle { font-weight: bold !important; font-size: 14px !important; padding-bottom: 8px; margin-left: 20px; }' +
'.mondo_meta_label { font-weight: bold; text-align: right; float: left; width: 140px; }' +
'.mondo_meta_userinput { float: left; width: 230px; }' +
'.mondo_meta_checks { font-weight: bold; float: left;}' +
'.mondo_meta_rgb { width: 90px; }' +
'.mondo_meta_duration { width: 40px; }' +
'.mondo_meta_smallindent, .mondo_meta_mantext { margin-left: 20px; }' +
'.mondo_meta_manage { width: 320px; float: left; }' +
'.mondo_meta_mantext { text-align: right; float: left; }' +
'button.mondo_meta { width: 60px; position: absolute; bottom: 10px; }' +
'button.mondo_meta2 { width: 70px; position: absolute; bottom: 10px; }';
var test_style = document.createElement("style");
test_style.setAttribute('type', 'text/css');
test_style.innerHTML = addHeader;
document.getElementsByTagName('head')[0].appendChild(test_style);
mondo_meta_highlight_control = document.createElement("td");
mondo_meta_highlight_control.className = "mondo_meta_basicstyle";
mondo_meta_highlight_control.style.lineHeight = "26px";
mondo_meta_highlight_control.style.color = darkBlueText;
mondo_meta_highlight_control.style.position = "fixed";
mondo_meta_highlight_control.style.bottom = "40px";
mondo_meta_highlight_control.style.left = "5px";
mondo_meta_highlight_control.style.backgroundColor = "#FFCFCF";
mondo_meta_highlight_control.style.borderColor = "black";
mondo_meta_highlight_control.style.borderWidth = "1px";
mondo_meta_highlight_control.style.borderStyle = "solid";
mondo_meta_highlight_control.style.opacity = ".94";
mondo_meta_highlight_control.style.display = noneText;
var highlightHtml =
'<div class="mondo_meta_title">Mondo Meta Highlight</div>' +
'<div>' +
'<span class="mondo_meta_label">Highlight text: </span>' +
'<input id="mondo_meta_highlight_text" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_highlight_wholeword" type="checkbox">Whole word only</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Located in: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_highlight_located"><option>'+contentText+'</option><option>'+footerText+'</option><option>'+contentFooterText+'</option></select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_highlight_matchcase" type="checkbox">Match case</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Area highlighted: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_highlight_area">' +
'<option>Footer only</option>' +
'<option>Entire post</option>' +
'</select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_highlight_regexp" type="checkbox">Regular expression</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Foreground color: </span>' +
'<span style="float: left">' +
'<select id="mondo_meta_highlight_fgcolor">' +
'<option>aqua</option>' +
'<option>black</option>' +
'<option selected>blue</option>' +
'<option>cyan</option>' +
'<option>gray</option>' +
'<option>green</option>' +
'<option>lime</option>' +
'<option>magenta</option>' +
'<option>maroon</option>' +
'<option>navy</option>' +
'<option>olive</option>' +
'<option>purple</option>' +
'<option>red</option>' +
'<option>teal</option>' +
'<option>white</option>' +
'<option>yellow</option>' +
'<option>Unchanged</option>' +
'<option>Custom</option>' +
'</select>' +
' <b>RGB:</b>' +
'<input id="mondo_meta_highlight_fgRGB" class="mondo_meta_rgb" disabled type="text" style="background-color: gray;">' +
'</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Background color: </span>' +
'<span style="float: left">' +
'<select id="mondo_meta_highlight_bgcolor">' +
'<option>aqua</option>' +
'<option>black</option>' +
'<option>blue</option>' +
'<option>cyan</option>' +
'<option>gray</option>' +
'<option>green</option>' +
'<option>lime</option>' +
'<option>magenta</option>' +
'<option>maroon</option>' +
'<option>navy</option>' +
'<option>olive</option>' +
'<option>purple</option>' +
'<option>red</option>' +
'<option>teal</option>' +
'<option>white</option>' +
'<option selected>yellow</option>' +
'<option>Unchanged</option>' +
'<option>Custom</option>' +
'</select>' +
' <b>RGB:</b>' +
'<input id="mondo_meta_highlight_bgRGB" class="mondo_meta_rgb" disabled type="text" style="background-color: gray;">' +
'</span>' +
'</div><br><br><br>';
mondo_meta_highlight_control.innerHTML = highlightHtml;
var saveNode = document.createElement(buttonText);
saveNode.setAttribute("class", "mondo_meta");
saveNode.style.marginLeft = "140px";
saveNode.appendChild(document.createTextNode("Save"));
var cancelNode = document.createElement(buttonText);
cancelNode.setAttribute("class", "mondo_meta");
cancelNode.style.marginLeft = "220px";
cancelNode.appendChild(document.createTextNode("Cancel"));
mondo_meta_highlight_control.appendChild(saveNode);
mondo_meta_highlight_control.appendChild(cancelNode);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_highlight_control);
var sNode = document.getElementById( "mondo_meta_highlight_fgcolor");
sNode.addEventListener('change', changeFgHighlight, true);
sNode = document.getElementById( "mondo_meta_highlight_bgcolor");
sNode.addEventListener('change', changeBgHighlight, true);
saveNode.addEventListener(clickText, saveHighlight, true);
cancelNode.addEventListener(clickText, cancelHighlight, true);
mondo_meta_delete_control = document.createElement("td");
mondo_meta_delete_control.className = "mondo_meta_basicstyle";
mondo_meta_delete_control.style.lineHeight = "26px";
mondo_meta_delete_control.style.color = darkBlueText;
mondo_meta_delete_control.style.position = "fixed";
mondo_meta_delete_control.style.bottom = "40px";
mondo_meta_delete_control.style.left = "5px";
mondo_meta_delete_control.style.backgroundColor = "#FFCFCF";
mondo_meta_delete_control.style.borderColor = "black";
mondo_meta_delete_control.style.borderWidth = "1px";
mondo_meta_delete_control.style.borderStyle = "solid";
mondo_meta_delete_control.style.opacity = ".94";
mondo_meta_delete_control.style.display = noneText;
var deleteHtml =
'<div class="mondo_meta_title">Mondo Meta Delete-Filter</div>' +
'<div>' +
'<span class="mondo_meta_label">Delete if text: </span>' +
'<input id="mondo_meta_delete_text" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_delete_wholeword" type="checkbox">Whole word only</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Located in: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_delete_located"><option>'+contentText+'</option><option>'+footerText+'</option><option>'+contentFooterText+'</option></select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_delete_matchcase" type="checkbox">Match case</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">How: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_delete_how">' +
'<option>'+removeText+'</option>' +
'<option>'+invisibleText+'</option>' +
'<option>'+fg_bgText+'</option>' +
'</select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_delete_matchlinks" type="checkbox">Match links</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Duration: </span>' +
'<span class="mondo_meta_userinput">' +
'<input id="mondo_meta_delete_duration" class="mondo_meta_duration" type="text" value="90">' +
' <b>day(s)</b>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_delete_regexp" type="checkbox">Regular expression</span>' +
'</div><br><br><br>';
mondo_meta_delete_control.innerHTML = deleteHtml;
var saveNode = document.createElement(buttonText);
saveNode.setAttribute("class", "mondo_meta");
saveNode.style.marginLeft = "140px";
saveNode.appendChild(document.createTextNode("Save"));
var cancelNode = document.createElement(buttonText);
cancelNode.setAttribute("class", "mondo_meta");
cancelNode.style.marginLeft = "220px";
cancelNode.appendChild(document.createTextNode("Cancel"));
mondo_meta_delete_control.appendChild(saveNode);
mondo_meta_delete_control.appendChild(cancelNode);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_delete_control);
saveNode.addEventListener(clickText, saveDelete, true);
cancelNode.addEventListener(clickText, cancelDelete, true);
mondo_meta_tag_control = document.createElement("td");
mondo_meta_tag_control.className = "mondo_meta_basicstyle";
mondo_meta_tag_control.style.lineHeight = "26px";
mondo_meta_tag_control.style.color = darkBlueText;
mondo_meta_tag_control.style.position = "fixed";
mondo_meta_tag_control.style.bottom = "40px";
mondo_meta_tag_control.style.left = "5px";
mondo_meta_tag_control.style.backgroundColor = "#FFCFCF";
mondo_meta_tag_control.style.borderColor = "black";
mondo_meta_tag_control.style.borderWidth = "1px";
mondo_meta_tag_control.style.borderStyle = "solid";
mondo_meta_tag_control.style.opacity = ".94";
mondo_meta_tag_control.style.display = noneText;
var tagHtml =
'<div class="mondo_meta_title">Mondo Meta Tag</div>' +
'<div>' +
'<span class="mondo_meta_label">Tag text: </span>' +
'<input id="mondo_meta_tag_text" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_tag_wholeword" type="checkbox">Whole word only</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Located in: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_tag_located"><option>'+contentText+'</option><option>'+footerText+'</option><option>'+contentFooterText+'</option></select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_tag_matchcase" type="checkbox">Match case</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Use Tags: </span>' +
'<input id="mondo_meta_tag_tags" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_tag_regexp" type="checkbox">Regular expression</span>' +
'</div><br><br><br>';
mondo_meta_tag_control.innerHTML = tagHtml;
var saveNode = document.createElement(buttonText);
saveNode.setAttribute("class", "mondo_meta");
saveNode.style.marginLeft = "140px";
saveNode.appendChild(document.createTextNode("Save"));
var cancelNode = document.createElement(buttonText);
cancelNode.setAttribute("class", "mondo_meta");
cancelNode.style.marginLeft = "220px";
cancelNode.appendChild(document.createTextNode("Cancel"));
mondo_meta_tag_control.appendChild(saveNode);
mondo_meta_tag_control.appendChild(cancelNode);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_tag_control);
saveNode.addEventListener(clickText, saveTag, true);
cancelNode.addEventListener(clickText, cancelTag, true);
mondo_meta_style_control = document.createElement("td");
mondo_meta_style_control.className = "mondo_meta_basicstyle";
mondo_meta_style_control.style.lineHeight = "26px";
mondo_meta_style_control.style.color = darkBlueText;
mondo_meta_style_control.style.position = "fixed";
mondo_meta_style_control.style.bottom = "40px";
mondo_meta_style_control.style.left = "5px";
mondo_meta_style_control.style.backgroundColor = "#FFCFCF";
mondo_meta_style_control.style.borderColor = "black";
mondo_meta_style_control.style.borderWidth = "1px";
mondo_meta_style_control.style.borderStyle = "solid";
mondo_meta_style_control.style.opacity = ".94";
mondo_meta_style_control.style.display = noneText;
var styleHtml =
'<div class="mondo_meta_title">Mondo Meta Style</div>' +
'<div>' +
'<span class="mondo_meta_label">Style text: </span>' +
'<input id="mondo_meta_style_text" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_style_wholeword" type="checkbox">Whole word only</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Located in: </span>' +
'<span class="mondo_meta_userinput">' +
'<select id="mondo_meta_style_located"><option>'+contentText+'</option><option>'+footerText+'</option><option>'+contentFooterText+'</option></select>' +
'</span>' +
'<span class="mondo_meta_checks"><input id="mondo_meta_style_matchcase" type="checkbox">Match case</span>' +
'</div><br><div>' +
'<span class="mondo_meta_label">Use Style: </span>' +
'<input id="mondo_meta_style_styles" class="mondo_meta_userinput" type="text">' +
'<span class="mondo_meta_checks"><input id="mondo_meta_style_regexp" type="checkbox">Regular expression</span>' +
'</div><br><br><br>';
mondo_meta_style_control.innerHTML = styleHtml;
var saveNode = document.createElement(buttonText);
saveNode.setAttribute("class", "mondo_meta");
saveNode.style.marginLeft = "140px";
saveNode.appendChild(document.createTextNode("Save"));
var cancelNode = document.createElement(buttonText);
cancelNode.setAttribute("class", "mondo_meta");
cancelNode.style.marginLeft = "220px";
cancelNode.appendChild(document.createTextNode("Cancel"));
mondo_meta_style_control.appendChild(saveNode);
mondo_meta_style_control.appendChild(cancelNode);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_style_control);
saveNode.addEventListener(clickText, saveStyle, true);
cancelNode.addEventListener(clickText, cancelStyle, true);
mondo_meta_manage_control = document.createElement("td");
mondo_meta_manage_control.className = "mondo_meta_basicstyle";
mondo_meta_manage_control.style.lineHeight = "24px";
mondo_meta_manage_control.style.color = darkBlueText;
mondo_meta_manage_control.style.position = "fixed";
mondo_meta_manage_control.style.bottom = "40px";
mondo_meta_manage_control.style.left = "5px";
mondo_meta_manage_control.style.backgroundColor = "#FFCFCF";
mondo_meta_manage_control.style.borderColor = "black";
mondo_meta_manage_control.style.borderWidth = "1px";
mondo_meta_manage_control.style.borderStyle = "solid";
mondo_meta_manage_control.style.opacity = ".94";
mondo_meta_manage_control.style.display = noneText;
var manageHtml =
'<div class="mondo_meta_title">Manage Mondo Meta</div>' +
'<div id="mondo_meta_rulehead" class="mondo_meta_minititle">Saved Rule</div>' +
'<div><span class="mondo_meta_manage">' +
' </span>' +
'<input id="mondo_meta_manage_deactdel" type="checkbox">' +
'<span>Deactivate All Filters</span></div>' +
'<div><span class="mondo_meta_manage">' +
' </span>' +
'<input id="mondo_meta_manage_deacttag" type="checkbox">' +
'<span>Deactivate All Tags</span></div>' +
'<div><span class="mondo_meta_manage">' +
'<span id="mondo_meta_mantext" class="mondo_meta_mantext">Highlight Text:</span></span>' +
'<input id="mondo_meta_manage_deacthi" type="checkbox">' +
'<span>Deactivate All Highlights</span></div>' +
'<div><span class="mondo_meta_manage">' +
'<input id="mondo_meta_ruletext" class="mondo_meta_userinput mondo_meta_smallindent" type="text"></span>' +
'<input id="mondo_meta_manage_deactsty" type="checkbox">' +
'<span>Deactivate All Styles</span></div><br>' +
'<span class="mondo_meta_smallindent"><b>Web pages must be refreshed to show changes.</b></span><br><br><br>';
mondo_meta_manage_control.innerHTML = manageHtml;
var prevNode = document.createElement(buttonText);
prevNode.setAttribute("class", "mondo_meta2");
prevNode.style.marginLeft = "20px";
prevNode.appendChild(document.createTextNode("Previous"));
mondo_meta_manage_control.appendChild(prevNode);
var nextNode = document.createElement(buttonText);
nextNode.setAttribute("class", "mondo_meta2");
nextNode.style.marginLeft = "100px";
nextNode.appendChild(document.createTextNode("Next"));
mondo_meta_manage_control.appendChild(nextNode);
var deleteNode = document.createElement(buttonText);
deleteNode.setAttribute("class", "mondo_meta2");
deleteNode.style.marginLeft = "220px";
deleteNode.appendChild(document.createTextNode("Delete"));
mondo_meta_manage_control.appendChild(deleteNode);
var closeNode = document.createElement(buttonText);
closeNode.setAttribute("class", "mondo_meta2");
closeNode.style.marginLeft = "400px";
closeNode.appendChild(document.createTextNode("Close"));
mondo_meta_manage_control.appendChild(closeNode);
document.getElementsByTagName('body')[0].appendChild(mondo_meta_manage_control);
prevNode.addEventListener(clickText, prevManage, true);
nextNode.addEventListener(clickText, nextManage, true);
deleteNode.addEventListener(clickText, deleteManage, true);
closeNode.addEventListener(clickText, closeManage, true);
}
// ***********************************************
// Mondo Image code
// ***********************************************
// save custom image settings
function saveInfoToStore()
{
GM_setValue("allowedExtensions", allowedExtensions.join(","));
GM_setValue("limitSites", limitSites ? trueText : falseText);
GM_setValue("allowedSites", allowedSites.join(","));
GM_setValue("limitUsers", limitUsers ? trueText : falseText);
GM_setValue("allowedUsers", allowedUsers.join(","));
GM_setValue("limitText", limitText ? trueText : falseText);
GM_setValue("allowedText", allowedText.join(","));
GM_setValue("masterSwitchSet", masterSwitchSet ? trueText : falseText);
GM_setValue("limitMaxWidth", limitMaxWidth);
GM_setValue("limitMaxHeight", limitMaxHeight);
GM_setValue("excludeSites", excludeSites ? trueText : falseText);
GM_setValue("notAllowedSites", notAllowedSites.join(","));
GM_setValue("excludeUsers", excludeUsers ? trueText : falseText);
GM_setValue("notAllowedUsers", notAllowedUsers.join(","));
GM_setValue("flagRestricted", flagRestricted ? trueText : falseText);
}
// load existing image settings and process them
function loadStoredInfo()
{
var miParam = GM_getValue("limitSites", xText);
if (miParam != xText)
{
limitSites = (miParam === trueText ? true : false);
}
miParam = GM_getValue("allowedSites", xText);
if (miParam != xText)
{
allowedSites = miParam.split(",");
}
miParam = GM_getValue("allowedExtensions", xText);
if (miParam != xText)
{
allowedExtensions = miParam.split(",");
}
miParam = GM_getValue("limitUsers", xText);
if (miParam != xText)
{
limitUsers = (miParam === trueText ? true : false);
}
miParam = GM_getValue("allowedUsers", xText);
if (miParam != xText)
{
allowedUsers = miParam.split(",");
}
miParam = GM_getValue("limitText", xText);
if (miParam != xText)
{
limitText = (miParam === trueText ? true : false);
}
miParam = GM_getValue("allowedText", xText);
if (miParam != xText)
{
allowedText = miParam.split(",");
}
miParam = GM_getValue("masterSwitchSet", xText);
if (miParam != xText)
{
masterSwitchSet = (miParam === trueText ? true : false);
}
miParam = GM_getValue("limitMaxWidth", xText);
if (miParam != xText)
{
limitMaxWidth = miParam;
}
miParam = GM_getValue("limitMaxHeight", xText);
if (miParam != xText)
{
limitMaxHeight = miParam;
}
var miParam = GM_getValue("excludeSites", xText);
if (miParam != xText)
{
excludeSites = (miParam === trueText ? true : false);
}
miParam = GM_getValue("notAllowedSites", xText);
if (miParam != xText)
{
notAllowedSites = miParam.split(",");
}
var miParam = GM_getValue("excludeUsers", xText);
if (miParam != xText)
{
excludeUsers = (miParam === trueText ? true : false);
}
miParam = GM_getValue("notAllowedUsers", xText);
if (miParam != xText)
{
notAllowedUsers = miParam.split(",");
}
miParam = GM_getValue("flagRestricted", xText);
if (miParam != xText)
{
flagRestricted = (miParam === trueText ? true : false);
}
}
function showActiveStates()
{
var sNode = document.getElementById("mondo_image_extensionlist");
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
var checkNode = document.getElementById("mondo_image_sitefilter");
sNode = document.getElementById("mondo_image_sitelist");
checkNode.style.backgroundColor = (checkNode.disabled ? lightgrayColor : whiteColor);
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
checkNode = document.getElementById("mondo_image_userfilter");
sNode = document.getElementById("mondo_image_userlist");
checkNode.style.backgroundColor = (checkNode.disabled ? lightgrayColor : whiteColor);
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
checkNode = document.getElementById("mondo_image_textfilter");
sNode = document.getElementById("mondo_image_textlist");
checkNode.style.backgroundColor = (checkNode.disabled ? lightgrayColor : whiteColor);
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
checkNode = document.getElementById("mondo_image_stopsitefilter");
sNode = document.getElementById("mondo_image_stopsitelist");
checkNode.style.backgroundColor = (checkNode.disabled ? lightgrayColor : whiteColor);
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
checkNode = document.getElementById("mondo_image_stopuserfilter");
sNode = document.getElementById("mondo_image_stopuserlist");
checkNode.style.backgroundColor = (checkNode.disabled ? lightgrayColor : whiteColor);
sNode.style.backgroundColor = (sNode.disabled ? lightgrayColor : whiteColor);
}
// input field enabled or disabled according to controlling checkbox
function setInputStatusByCheckBox(checkBox, inputBox)
{
var checkNode = document.getElementById(checkBox);
var sNode = document.getElementById(inputBox);
if (checkNode.checked == true)
{
sNode.disabled = false;
}
else
{
sNode.disabled = true;
}
}
function setSiteListStatus(event)
{
if (event != null)
{
event.stopPropagation();
}
setInputStatusByCheckBox("mondo_image_sitefilter", "mondo_image_sitelist");
showActiveStates();
}
function setUserListStatus(event)
{
if (event != null)
{
event.stopPropagation();
}
setInputStatusByCheckBox("mondo_image_userfilter", "mondo_image_userlist");
showActiveStates();
}
function setTextListStatus(event)
{
if (event != null)
{
event.stopPropagation();
}
setInputStatusByCheckBox("mondo_image_textfilter", "mondo_image_textlist");
showActiveStates();
}
function setStopSiteListStatus(event)
{
if (event != null)
{
event.stopPropagation();
}
setInputStatusByCheckBox("mondo_image_stopsitefilter", "mondo_image_stopsitelist");
showActiveStates();
}
function setStopUserListStatus(event)
{
if (event != null)
{
event.stopPropagation();
}
setInputStatusByCheckBox("mondo_image_stopuserfilter", "mondo_image_stopuserlist");
showActiveStates();
}
function disableEverything()
{
var sNode = document.getElementById("mondo_image_extensionlist");
sNode.disabled = true;
var checkNode = document.getElementById("mondo_image_sitefilter");
checkNode.disabled = true;
sNode = document.getElementById("mondo_image_sitelist");
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_userfilter");
checkNode.disabled = true;
sNode = document.getElementById("mondo_image_userlist");
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_textfilter");
checkNode.disabled = true;
sNode = document.getElementById("mondo_image_textlist");
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_stopsitefilter");
checkNode.disabled = true;
sNode = document.getElementById("mondo_image_stopsitelist");
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_stopuserfilter");
checkNode.disabled = true;
sNode = document.getElementById("mondo_image_stopuserlist");
sNode.disabled = true;
showActiveStates();
}
function enableControls()
{
var sNode = document.getElementById("mondo_image_extensionlist");
sNode.disabled = false;
var checkNode = document.getElementById("mondo_image_sitefilter");
checkNode.disabled = false;
checkNode = document.getElementById("mondo_image_userfilter");
checkNode.disabled = false;
checkNode = document.getElementById("mondo_image_textfilter");
checkNode.disabled = false;
checkNode = document.getElementById("mondo_image_stopsitefilter");
checkNode.disabled = false;
checkNode = document.getElementById("mondo_image_stopuserfilter");
checkNode.disabled = false;
setInputStatusByCheckBox("mondo_image_sitefilter", "mondo_image_sitelist");
setInputStatusByCheckBox("mondo_image_userfilter", "mondo_image_userlist");
setInputStatusByCheckBox("mondo_image_textfilter", "mondo_image_textlist");
setInputStatusByCheckBox("mondo_image_stopsitefilter", "mondo_image_stopsitelist");
setInputStatusByCheckBox("mondo_image_stopuserfilter", "mondo_image_stopuserlist");
showActiveStates();
}
function updateMasterSwitch(event)
{
if (event != null)
{
event.stopPropagation();
}
var checkNode = document.getElementById("mondo_image_masterswitch");
if (checkNode.checked == true)
{
// always force restricted image placeholder reset
checkNode = document.getElementById("mondo_image_flagRestricted");
checkNode.checked = false;
disableEverything();
}
else
{
enableControls();
}
}
function massageInput(sInput)
{
if (!sInput.length)
{
return [ "" ];
}
sInput = sInput.replace(/;/g, ","); // semicolons to commas
while (sInput.match(/(,,)|(,\s+)|(\s+,)/) ||
sInput.match(/(^\s+)|(\s+$)|(^,)|(,$)/))
{
sInput = sInput.replace(/(,,)|(,\s+)|(\s+,)/g, ",");
sInput = sInput.replace(/(^\s+)|(\s+$)|(^,)|(,$)/g, "");
}
if (!sInput.length)
{
return [ "" ];
}
var aHold = sInput.split(",");
return aHold;
}
function resetToDefaults(event)
{
if (event != null)
{
event.stopPropagation();
}
// force master switch reset
var checkNode = document.getElementById("mondo_image_masterswitch");
checkNode.checked = false;
// force restricted image placeholder reset
var checkNode = document.getElementById("mondo_image_flagRestricted");
checkNode.checked = false;
var sNode = document.getElementById("mondo_image_extensionlist");
sNode.value = aDefaultExtensions.join(",");
sNode.disabled = false;
checkNode = document.getElementById("mondo_image_sitefilter");
checkNode.disabled = false;
checkNode.checked = true;
sNode = document.getElementById("mondo_image_sitelist");
sNode.value = aDefaultSites.join(",");
sNode.disabled = false;
checkNode = document.getElementById("mondo_image_userfilter");
checkNode.disabled = false;
checkNode.checked = false;
sNode = document.getElementById("mondo_image_userlist");
sNode.value = "";
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_textfilter");
checkNode.disabled = false;
checkNode.checked = false;
sNode = document.getElementById("mondo_image_textlist");
sNode.value = "";
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_stopsitefilter");
checkNode.disabled = false;
checkNode.checked = false;
sNode = document.getElementById("mondo_image_stopsitelist");
sNode.value = "";
sNode.disabled = true;
checkNode = document.getElementById("mondo_image_stopuserfilter");
checkNode.disabled = false;
checkNode.checked = false;
sNode = document.getElementById("mondo_image_stopuserlist");
sNode.value = "";
sNode.disabled = true;
sNode = document.getElementById("mondo_image_maxHeight");
sNode.value = defaultLimitMaxHeight;
sNode = document.getElementById("mondo_image_maxWidth");
sNode.value = defaultLimitMaxWidth;
showActiveStates();
}
function gatherInfo()
{
var sNode = document.getElementById("mondo_image_extensionlist");
allowedExtensions = massageInput(sNode.value);
var checkNode = document.getElementById("mondo_image_sitefilter");
limitSites = checkNode.checked;
sNode = document.getElementById("mondo_image_sitelist");
allowedSites = massageInput(sNode.value);
checkNode = document.getElementById("mondo_image_userfilter");
limitUsers = checkNode.checked;
sNode = document.getElementById("mondo_image_userlist");
allowedUsers = massageInput(sNode.value);
checkNode = document.getElementById("mondo_image_textfilter");
limitText = checkNode.checked;
sNode = document.getElementById("mondo_image_textlist");
allowedText = massageInput(sNode.value);
checkNode = document.getElementById("mondo_image_masterswitch");
masterSwitchSet = checkNode.checked;
sNode = document.getElementById("mondo_image_maxHeight");
limitMaxHeight = sNode.value;
sNode = document.getElementById("mondo_image_maxWidth");
limitMaxWidth = sNode.value;
checkNode = document.getElementById("mondo_image_stopsitefilter");
excludeSites = checkNode.checked;
sNode = document.getElementById("mondo_image_stopsitelist");
notAllowedSites = massageInput(sNode.value);
checkNode = document.getElementById("mondo_image_stopuserfilter");
excludeUsers = checkNode.checked;
sNode = document.getElementById("mondo_image_stopuserlist");
notAllowedUsers = massageInput(sNode.value);
checkNode = document.getElementById("mondo_image_flagRestricted");
flagRestricted = checkNode.checked;
}
function saveUserParams(event)
{
if (event != null)
{
event.stopPropagation();
}
gatherInfo();
saveInfoToStore();
boxUp = 0;
// mondo_image_paramBox.style.width = "0px";
// mondo_image_paramBox.style.height = "0px";
// mondo_image_paramBox.style.visibility = "hidden";
mondo_image_paramBox = mondo_image_paramBox.parentNode.removeChild(mondo_image_paramBox);
}
function cancelParamBox(event)
{
if (event != null)
{
event.stopPropagation();
}
showCurrentParams(); // reset to entry status
boxUp = 0;
// mondo_image_paramBox.style.width = "0px";
// mondo_image_paramBox.style.height = "0px";
// mondo_image_paramBox.style.visibility = "hidden";
mondo_image_paramBox = mondo_image_paramBox.parentNode.removeChild(mondo_image_paramBox);
}
function showCurrentParams()
{
var sNode = document.getElementById("mondo_image_extensionlist");
sNode.value = allowedExtensions.join(",");
var checkNode = document.getElementById("mondo_image_sitefilter");
checkNode.checked = limitSites;
sNode = document.getElementById("mondo_image_sitelist");
sNode.value = allowedSites.join(",");
checkNode = document.getElementById("mondo_image_userfilter");
checkNode.checked = limitUsers;
sNode = document.getElementById("mondo_image_userlist");
sNode.value = allowedUsers.join(",");
checkNode = document.getElementById("mondo_image_textfilter");
checkNode.checked = limitText;
sNode = document.getElementById("mondo_image_textlist");
sNode.value = allowedText.join(",");
sNode = document.getElementById("mondo_image_maxHeight");
sNode.value = limitMaxHeight;
sNode = document.getElementById("mondo_image_maxWidth");
sNode.value = limitMaxWidth;
checkNode = document.getElementById("mondo_image_stopsitefilter");
checkNode.checked = excludeSites;
sNode = document.getElementById("mondo_image_stopsitelist");
sNode.value = notAllowedSites.join(",");
checkNode = document.getElementById("mondo_image_stopuserfilter");
checkNode.checked = excludeUsers;
sNode = document.getElementById("mondo_image_stopuserlist");
sNode.value = notAllowedUsers.join(",");
checkNode = document.getElementById("mondo_image_flagRestricted");
checkNode.checked = flagRestricted;
checkNode = document.getElementById("mondo_image_masterswitch");
checkNode.checked = masterSwitchSet;
if (masterSwitchSet)
{
disableEverything();
}
else
{
enableControls();
}
}
function simpleAdvancedSwitch(event)
{
if (event != null)
{
event.stopPropagation();
}
var simpleNode = document.getElementById("mondo_image_simple");
var advancedNode = document.getElementById("mondo_image_advanced");
var buttonNode = document.getElementById("simpleAdvancedButton");
var cNode = buttonNode.firstChild;
if (cNode.nodeValue === "Advanced")
{
cNode.nodeValue = "Simple";
simpleNode.style.width = "0px;"
simpleNode.style.height = "0px;"
simpleNode.style.visibility = "hidden";
advancedNode.style.width = "auto";
advancedNode.style.height = "auto";
advancedNode.style.visibility = "visible";
}
else
{
cNode.nodeValue = "Advanced";
advancedNode.style.width = "0px;"
advancedNode.style.height = "0px;"
advancedNode.style.visibility = "hidden";
simpleNode.style.width = "auto";
simpleNode.style.height = "auto";
simpleNode.style.visibility = "visible";
}
}
function buildParamBox()
{
var addHeader =
'td.mondo_image_basicstyle { margin-left: 120px; }' +
'td.mondo_image_basicstyle INPUT,td.mondo_image_basicstyle DIV,td.mondo_image_basicstyle SPAN' +
'{ font: 12px Verdana, Arial, Helvetica, sans-serif; }' +
'td.mondo_image_basicstyle INPUT' +
'{ background-color: white }' +
'td.mondo_image_basicstyle SPAN { color: darkblue }' +
'.mondo_image_title { font-weight: bold !important; font-size: 18px !important; padding-bottom: 8px; margin-left: 30px; }' +
'.mondo_image_userinput { margin-left: 30px; margin-right: 16px; width: 400px; }' +
'.mondo_image_limitinput { width: 70px; }' +
'.mondo_image_checks { margin-left: 5px; }' +
'.mondo_image_checktext { line-height: 24px !important; }' +
'button.mondo_image { width: 80px; position: absolute; bottom: 10px; }';
var test_style = document.createElement("style");
test_style.setAttribute('type', 'text/css');
test_style.innerHTML = addHeader;
document.getElementsByTagName('head')[0].appendChild(test_style);
mondo_image_paramBox = document.createElement("td");
mondo_image_paramBox.className = "mondo_image_basicstyle";
mondo_image_paramBox.style.lineHeight = "26px";
mondo_image_paramBox.style.color = "darkblue";
mondo_image_paramBox.style.position = "fixed";
mondo_image_paramBox.style.bottom = "40px";
mondo_image_paramBox.style.left = "5px";
mondo_image_paramBox.style.backgroundColor = "#FFCFCF";
mondo_image_paramBox.style.borderColor = "black";
mondo_image_paramBox.style.borderWidth = "1px";
mondo_image_paramBox.style.borderStyle = "solid";
mondo_image_paramBox.style.opacity = ".94";
var paramBoxHtml =
'<div class="mondo_image_title">Mondo Image</div>' +
'<div id="mondo_image_simple">' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"></span>Only expand images with these extensions:</div>' +
'<div><input id="mondo_image_extensionlist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_sitefilter" type="checkbox"></span>Only expand images from these sites:</div>' +
'<div><input id="mondo_image_sitelist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_userfilter" type="checkbox"></span>Only expand images in messages from these users:</div>' +
'<div><input id="mondo_image_userlist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_textfilter" type="checkbox"></span>Only expand images in messages containing this text:  </div>' +
'<div><input id="mondo_image_textlist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_masterswitch" type="checkbox"></span>Turn off image expansion - <b>Master Override</b></div>' +
'</div>' +
'<div id ="mondo_image_advanced" style="visibility: hidden; width:0px; height:0px;">' +
'<div><span class="mondo_image_userinput">Maximum image size Height: ' +
'<input id="mondo_image_maxHeight" class="mondo_image_limitinput" type="text">' +
' Width: <input id="mondo_image_maxWidth" class="mondo_image_limitinput" type="text"></span></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_stopsitefilter" type="checkbox"></span>Never expand images from these sites:</div>' +
'<div><input id="mondo_image_stopsitelist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_stopuserfilter" type="checkbox"></span>Never expand images from these users:</div>' +
'<div><input id="mondo_image_stopuserlist" class="mondo_image_userinput" type="text"></div>' +
'<br>' +
'<div class="mondo_image_checktext"><span class="mondo_image_checks"><input id="mondo_image_flagRestricted" type="checkbox"></span>Show restricted images placeholder with inline image link.</b></div>' +
'</div>' +
'</div>' +
'<br><br>';
mondo_image_paramBox.innerHTML = paramBoxHtml;
var resetNode = document.createElement(buttonText);
resetNode.setAttribute("class", "mondo_image");
resetNode.style.marginLeft = "30px";
resetNode.appendChild(document.createTextNode("Reset"));
var simpleAdvancedNode = document.createElement(buttonText);
simpleAdvancedNode.setAttribute("class", "mondo_image");
simpleAdvancedNode.setAttribute("id", "simpleAdvancedButton");
simpleAdvancedNode.style.marginLeft = "