/*	sIFR v2.0 Add-ons SOURCE
	Copyright 2005 Mark Wubben

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

if(typeof sIFR == "function"){
	sIFR.preferenceManager = {
		storage : {
			sCookieId : "sifr",
				
			set : function(bValue){
				var date = new Date();
				date.setFullYear(date.getFullYear() + 3);
				document.cookie = [this.sCookieId, "=", bValue, ";expires=", date.toGMTString(), ";path=/"].join("");
			},
		
			get : function(){
				var value =  document.cookie.match(new RegExp(";?" + this.sCookieId + "=([^;]+);?"));
				if(value != null && value[1] == "false"){
					return false;
				} else {
					return true;
				};
			},
			
			reset : function(){
				var date = new Date();
				date.setFullYear(date.getFullYear() - 1);
				document.cookie = this.sCookieId + "=true;expires=" + date.toGMTString();
			}
		},
		
		disable : function(){
			this.storage.set(false);
		},
		
		enable : function(){
			this.storage.set(true);
		},
		
		test : function(){
			return this.storage.get();
		}
	};
	
	if(sIFR.preferenceManager.test() == false){
		sIFR.bIsDisabled = true;
		if(document.documentElement && document.documentElement.className != null){
			document.documentElement.className = document.documentElement.className.replace(/\bsIFR\-hasFlash\b/, "");
		};
	};
	
	sIFR.rollback = function(){
		function rollback(){
			if(document.documentElement && document.documentElement.className != null){
				document.documentElement.className = document.documentElement.className.replace(/\bsIFR\-hasFlash\b/, "");
			};
			
			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.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;
	}();
};
