/*	Disable sIFR GreaseMonkey script for sIFR 2.0
	Copyright 2005 Mark Wubben

	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

// ==UserScript==
// @name          Disable sIFR
// @namespace     http://novemberborn.net/sifr/greasemonkey
// @description	  Removes sIFR headlines from the page and disables sIFR.
// @include       *
// ==/UserScript==

if(typeof sIFR == "function" && sIFR.bIsDisabled != true){
	sIFR.bIsDisabled = true;
	(function(){
		var removeDecoyClasses = function(){
			function removeClass(node, sClass){
				if(node && node.className != null){
					node.className = node.className.replace(/\bsIFR-hasFlash\b/, "");
				};
			};
			
			return function(){
				removeClass(document.documentElement);
				removeClass(document.getElementsByTagName("body")[0]);
			};
		}();
		
		var rollback = function(){
			function rollback(){
				removeDecoyClasses();
				
				doRollback("embed");
				doRollback("object");
			};
		
			function doRollback(sTagName){
				var node, nodeParent, nodeAlternate, nodeAlternateChild, nodeAlternateNextChild;
				var i = document.getElementsByTagName(sTagName).length - 1;
		
				while(i >= 0){
					node = document.getElementsByTagName(sTagName)[i];
					nodeParent = node.parentNode;
			
					if((node.className != null && node.className.match(/\bsIFR-flash\b/)) || node.getAttribute("sifr") == "true"){
						nodeAlternate = node.nextSibling;
				
						while(nodeAlternate != null && nodeAlternate.className != "sIFR-alternate"){
							nodeAlternate = nodeAlternate.nextSibling;
						};
				
						if(nodeAlternate != null){
							nodeAlternateChild = nodeAlternate.firstChild;
							while(nodeAlternateChild != null){
								nodeAlternateNextChild = nodeAlternateChild.nextSibling;
								nodeParent.appendChild(nodeAlternate.removeChild(nodeAlternateChild));
								nodeAlternateChild = nodeAlternateNextChild;
							};
							nodeParent.removeChild(nodeAlternate);
						};
				
						nodeParent.removeChild(node);

						if(sIFR.UA.bIsKHTML || sIFR.UA.bIsIE){
							nodeParent.innerHTML += "";
						};
						
						nodeParent.className = nodeParent.className.replace(/\bsIFR\-replaced\b/, "");
					};
				
					i--;
				};
			};
		
			return rollback;
		}();
		
		rollback();
		
		window.addEventListener("load", rollback, false);
	})();
};
