/* *****************************************************************
 * function fixIEActivation(idContainer)
 * Forfatter: Jens Gyldenkærne Clausen - nospam@gyros.dk
 * Version: 1.1, 20. april 2006
 * URI: http://gyros.dk/usenet/js/activateIE.js
 *
 * Funktionerne i dette script må frit anvendes og kopieres, men jeg
 * vil bede om at man beholder denne kommentar. Jeg vil også sætte 
 * pris på en mail hvis scriptet anvendes til andet end privat brug.
 * 
 * Funktionen er beregnet til at aktivere flash-elementer i IE.
 * Efter en opdatering til IE i 2006, skal brugere nu "aktivere"
 * aktivt indhold som fx flash, quicktime og java. 
 * (se evt. http://support.microsoft.com/kb/912945/).
 * Funktionen virker ved at genopfriske innerHTML, enten for hele body-elementet, eller for 
 * en udvalgt del af siden (det element der har id=idContainer)
 * Funktionen kan kaldes via onload-hændelsen på body.
 * Eksempler: 
 * - <body onload="fixIEActivation(null)"> (opfrisk hele siden)
 * - <body onload="fixIEActivation('banner')"> (opfrisk id=banner)
 * 
 * Testet i Firefox 1.5, Opera 8.5, IE 6.0 - alle under Windows XP.
 * TestURI: http://gyros.dk/usenet/html/aktivering.shtml
 * Testede objekttyper: 
 * - flash (satay og normal) O.K.
 * - quicktime, java og WMA (windows media player) kan desværre ikke
 * aktiveres med scriptet (bl.a. på grund af at IE's DOM ikke altid
 * håndterer <param>-elementer korrekt).
 ***************************************************************** */
 
function fixIEActivation(idContainer){
	// obj er en reference til det objekt der skal genopfriskes
	// data bruges til at gemme innerHTML-værdien fra obj.
	var obj, data;

	// Aktiveringen er kun nødvendig i IE6 og nyere - nedenstående 
	// tjek filtrerer visse ældre browsere og andre end IE fra.
	// Hvis man bruger Flash Satay eller lignende til at lave valid 
	// flash-kode, vil kaldet til removeDataFromObj betyde at flash-
	// objektet ikke længere vises i non-IE-browsere. Benytter man 
	// den traditionelle måde at inkludere flash-kode på, er der 
	// ingen problemer.
	if(document.getElementById && document.getElementsByTagName && document.all && !window.opera){
		// Hent objekt via id
		obj = document.getElementById(idContainer);
		// Hvis vi ikke har fanget et objekt, ...
		if(!obj){
//			alert("Henter body");
			// ... henter vi body via TagName
			obj = document.getElementsByTagName('BODY')[0];
		}
		if(obj){
			// Eventuelle data-parametre til object skal fjernes. Når et object-element
			// har en data-parameter, bliver tilhørende param-elementer ikke medtaget
			// i .innerHTML - og da det er disse elementer IE benytter, går det galt hvis
			// man ikke fjerner data-parameteren. Det er primært sider der benytter 
			// "Flash Satay"-metoden til at lave valid flash-kode, der er berørt af
			// dette problem.
			removeDataFromObj(obj);
	
			// Så er vi klar til at genopfriske - frem og tilbage er nok.
			data = obj.innerHTML;
			obj.innerHTML = data;
			removeDataFromObj(obj);
		}
	}
}

function removeDataFromObj(container){
	var objArr = container.getElementsByTagName('object');
	//	alert("Fundet " + objArr.length + " object-elementer");
	for (var i=0;i<objArr.length;i++){
		//	visParam(objArr[i]);
			if(objArr[i].getAttribute("type") == "application/x-shockwave-flash") {
				objArr[i].removeAttribute("data",true);	
			}
	}

}

function visParam(container){
	var paramArr = container.getElementsByTagName('param');
	var strout = "Parametre for " + container.id + ": \n";
	for (var i=0;i<paramArr.length;i++){
			strout += i + ": " + paramArr[i].name + " = " + paramArr[i].value + "\n";
	}
//	alert(strout);
	
}